人在无聊的时候可以做出很多奇葩的事情来,比如现在我做的这件事。链接已和谐

很多年以前的时候,wow的英雄榜还支持rss发布,当时我便折腾过一个小玩意,用来呈现我的英雄榜。后来wow把这个rss地址和谐了,之后改成了网页发布,于是就不了了之了。調用魔獸世界英雄榜RSS

然而今天我随手又把这个玩意给折腾了出来,现在差不多可以看着玩了。

我最近一定是太闲了……

简要说一下这次的做法。和当年的直接代理不同,这次的东西更像一个爬虫,直接抓取目标网页,然后清洗出关键词组合成新json,最后ajax扔到页面上。后端加上了cors设置允许跨域调用,就这样了吧。一转眼都6年了……

app.get('/api/character', async (req, res) => {
    let result = []
    let imgReg = new RegExp("[a-zA-z]+://[^]*[.jpg|.gif|.png]")
    let textReg = new RegExp(/[\u4e00-\u9fa5,\u0030-\u0039,\uff0c,\u3002,\uff08,\uff09,\u0020]*/g)
    let web = await fetch(setting.feed).then(res => res.text())
    $ = cheerio.load(web)
    let ul = $('.activity-feed').find('li')
    ul.each(function () {
        let unit = $(this)
        let className = unit.prop('class')
        let imgUrl = ''
        try {
            imgUrl = (unit.find('span.icon-frame').css('background-image')).match(imgReg)
        }
        catch (e) {
            switch (className) {
                case 'bosskill ':
                    imgUrl = './images/bosskill.gif'
                break;
                case 'crit ':
                    imgUrl = './images/crit.gif'
                break;
                default:
                    imgUrl = './images/guild.gif'
                break;
            }
        }
        let obj = {
            'img': imgUrl,
            'text': unit.find('dd').text().match(textReg).join(''),
            'time': unit.find('dt').text()
        }
        result.push(obj)
    })
    let headers = {
        "Content-Type": "application/json; charset=utf-8",
        "Access-Control-Allow-Origin": setting.cors
    }
    res.header(headers)
    res.send(result)
})