Reyshawn / FanpieFilmFeed

🎬A fully complete FanpieFilm podcast rss feed with detailed shownotes.
MIT License
22 stars 2 forks source link

更新RSS Feed标题/链接/配图/音频链接/持续时长/节目描述 #3

Open Maecenas opened 4 years ago

Maecenas commented 4 years ago

更新RSS馈送标题/链接/配图/音频链接/持续时长/节目描述

Reyshawn commented 4 years ago

你好,感谢你的支持哈!你是直接把 rss 文件修改校对了吗?因为我每次的流程是,我本地是有一个对应的 json 文件,这个文件暂时没有开源出来,然后每次更新,都是把新一集的内容抓取下来,增加到已有的 json 文件中,然后再将这份 json 文件渲染成 rss feed。 如果你是已经把现有的 rss feed 校对后,但如果下次更新,还是通过 json 文件渲染出 rss feed,那样你这次的校对结果就丢失了。

我想一下办法,希望保留你的校对结果,同时不影响后续的更新。

最后,再次非常感谢!

Maecenas commented 4 years ago

你好,我本地把这个项目跑起来了,也修改了一下抓取页内音频,可以生成马后炮、耳旁风的Feed。顺便记一下项目的工作流程,可能的话写在项目的README/文档里会更好:

  1. 生成output.json

const output_json: Array<FanpieFilmItem>;

interface FanpieFilmItem {
    title: string;
    episode: string;
    film: string;
    hosts?: Array<string>;
    link: string;
    shownotes: {
        shownotes_original: string;
        film_list_range?: Array<number>;
        film_list_original?: string;
        film_list?: Array<{
            name: string;
            time: string;
        }>;
        film_outline?: string;
        film_scoring?: string;
    };
    url: string;
    duration?: string;
    pub_date: string;
}
  1. output.json生成RSS

这样会遇到一个问题:两步的结果都不太完美,有一些edge case比较难处理。如1. 在遇到EP076/EP068等会漏掉片单后的附加信息;2. 舍弃了原本的DOM结构,解析字符串总会有断句之类的问题。我目前的思路是:校对最终呈现的RSS,中间可能会为提高效率对项目做些改动。

然而这样也遇到了你提到的,在后续更新时如何保存校对结果的问题。我现在有两个思路:

  1. 把现在的文本作为helper.rss
  2. 使用latest.json生成RSS,再把生成的xml并入现在的文件(channel.append(item)

谢谢你的分享和维护!