Back
Featured image of post 来点rss订阅

来点rss订阅

做点rsshub路由

<
>

为了减少我的摸鱼,开始思考下时间一般用在哪里,浏览网页应该占了大部分,那

打开各种网页时间==摸鱼时间

减少打开网页时间,估计你也想到了,就是rss嘛,不止作为信息聚合,还可以抑制我想打开网页的焦虑,在大学就曾听过了rss,不过缺少可定制rss源,最近发觉有rsshub,妙啊,于是开始做点路由。

简单的做路由有createfeed,不过限制偏多,文章数目也只有5,复杂的直接用rsshub做好了,虽然不太懂,但我从来不生产代码,只是代码搬运工,所以有以下代码

const got = require('@/utils/got');
const cheerio = require('cheerio');

module.exports = async (ctx) => {
    const response = await got({
        method: 'get',
        url: 'https://bgm.tv/timeline', //做订阅的链接
    });

    const data = response.data;

    const $ = cheerio.load(data);
    const list = $('.tml_item');   //重复的条目
   

    ctx.state.data = {
        title: '时间线',
        link: 'https://bgm.tv/timeline',
        item:
            list &&
            list
                .map((index, item) => {
                    item = $(item);
                    if(item.find('.info').text().indexOf("注册")==-1 && item.find('.info').text().indexOf("成为了") ==-1){
                        description= `${item.find('.info').html()}`;
                        title=item.find('.info').text();
                        link=$(item.find('.info a')[2]).attr('href');
                    }
                    return {
                        title: title,
                        description: description,
                        link: link
                    };
                })
                .get(),
    };
};

不过有时候需要链接内容,就需要多写一点代码

像这种一个个点开太麻烦了

像这种一个个点开太麻烦了

const got = require('@/utils/got');
const cheerio = require('cheerio');
const config = require('@/config').value;
const iconv = require('iconv-lite');
const baseurl = 'https://m.miaola.info/thread/96';

module.exports = async (ctx) => {
    const cookie = config.feiyue.cookie;
    const url = baseurl;
    const response = await got.get(url, {
        responseType: 'buffer',  //防止乱码
        
        headers: {
            Cookie: cookie,   //请求cookie
        },
    });

    const data = iconv.decode(response.data, 'gb2312');  //防止乱码

    const $ = cheerio.load(data);
    const query = $('.thread-link-item');
   
    const list = $(query)
        .slice(0, 10)
        .map((_, item) => {
            item = $(item);
            return {
                link: `https://m.miaola.info/${$(item.find('a')[0]).attr("href")}`,  //条目内链接
            };
        })
        .get();

    const items = await Promise.all(       //条目内容
            list.map(
                async (item) =>
                    await ctx.cache.tryGet(item.link, async () => {
                        const detailResponse = await got.get(item.link,{
                            responseType: 'buffer',
                            
                            headers: {
                                Cookie: cookie,
                            },
                        });
                        const data = iconv.decode(detailResponse.data, 'gb2312');
                        const content = cheerio.load(data);
                          content ('.floor_edit_mark').remove()
                          content ('.fieldset').remove()
                          content ('.read_fds').remove()
                         item.title = content('.thread-title').text().slice(0, 10);
                         item.description = content('.read-content').html();
                            
    
                        return item;
                    })
            )
    );     

    ctx.state.data = {
        title: '绯月图',
        link: url,
        item: items,
           
    };
};

虽然最后还是一堆乱码,不过把图片成功扒出来就行。

效果图

效果图

接着找rss阅读器,最好是feedly,不过上不了,还有innoreader有点卡不过将就。

然而减少摸鱼时间了吗,好像并没有反而发呆时间变多了。

Built with Hugo
Theme Stack designed by Jimmy