rsshub 1.0.0-master.f7c0247 → 1.0.0-master.f7c4a93
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/config.js +11 -1
- package/lib/middleware/anti-hotlink.js +90 -22
- package/lib/middleware/cache/redis.js +7 -2
- package/lib/middleware/onerror.js +2 -1
- package/lib/middleware/parameter.js +76 -35
- package/lib/middleware/templates/iframe.art +14 -0
- package/lib/radar-rules.js +0 -163
- package/lib/router.js +79 -94
- package/lib/routes/agefans/update.js +1 -1
- package/lib/routes/index.js +1 -1
- package/lib/routes/novel/biqugeinfo.js +2 -2
- package/lib/routes/universities/uestc/sice.js +12 -33
- package/lib/routes/weibo/user.js +20 -28
- package/lib/utils/cf-email.js +36 -0
- package/lib/utils/parse-date.js +4 -2
- package/lib/utils/puppeteer.js +22 -0
- package/lib/utils/wechat-mp.js +1 -0
- package/lib/v2/19lou/index.js +74 -0
- package/lib/v2/19lou/maintainer.js +3 -0
- package/lib/v2/19lou/radar.js +29 -0
- package/lib/v2/19lou/router.js +3 -0
- package/lib/v2/7mmtv/index.js +86 -0
- package/lib/v2/7mmtv/maintainer.js +4 -0
- package/lib/v2/7mmtv/radar.js +19 -0
- package/lib/v2/7mmtv/router.js +3 -0
- package/lib/v2/7mmtv/templates/description.art +11 -0
- package/lib/v2/91porn/index.js +58 -0
- package/lib/v2/91porn/maintainer.js +3 -0
- package/lib/v2/91porn/radar.js +13 -0
- package/lib/v2/91porn/router.js +3 -0
- package/lib/v2/91porn/templates/index.art +1 -0
- package/lib/v2/9to5/maintainer.js +3 -0
- package/lib/v2/9to5/radar.js +35 -0
- package/lib/v2/9to5/router.js +3 -0
- package/lib/{routes → v2}/9to5/subsite.js +20 -17
- package/lib/{routes → v2}/9to5/utils.js +4 -1
- package/lib/{routes → v2}/aliyun/database_month.js +8 -13
- package/lib/{routes → v2}/aliyun/developer/group.js +6 -1
- package/lib/v2/aliyun/maintainer.js +5 -0
- package/lib/{routes → v2}/aliyun/notice.js +13 -21
- package/lib/v2/aliyun/radar.js +32 -0
- package/lib/v2/aliyun/router.js +5 -0
- package/lib/v2/apnews/maintainer.js +3 -0
- package/lib/v2/apnews/radar.js +13 -0
- package/lib/v2/apnews/router.js +3 -0
- package/lib/v2/apnews/templates/description.art +14 -0
- package/lib/v2/apnews/topics.js +44 -0
- package/lib/{routes → v2}/asiantolick/index.js +20 -17
- package/lib/v2/asiantolick/maintainer.js +6 -0
- package/lib/v2/asiantolick/radar.js +31 -0
- package/lib/v2/asiantolick/router.js +3 -0
- package/lib/v2/asiantolick/templates/description.art +3 -0
- package/lib/v2/behance/maintainer.js +3 -0
- package/lib/v2/behance/radar.js +26 -0
- package/lib/v2/behance/router.js +3 -0
- package/lib/v2/behance/user.js +67 -0
- package/lib/v2/caareviews/book.js +14 -0
- package/lib/v2/caareviews/essay.js +14 -0
- package/lib/v2/caareviews/exhibition.js +14 -0
- package/lib/v2/caareviews/maintainer.js +5 -0
- package/lib/v2/caareviews/radar.js +25 -0
- package/lib/v2/caareviews/router.js +5 -0
- package/lib/v2/caareviews/templates/utils.art +2 -0
- package/lib/v2/caareviews/utils.js +49 -0
- package/lib/v2/ccac/news.js +12 -3
- package/lib/v2/chinanews/index.js +4 -3
- package/lib/v2/cn-healthcare/index.js +31 -0
- package/lib/v2/cn-healthcare/maintainer.js +3 -0
- package/lib/v2/cn-healthcare/radar.js +13 -0
- package/lib/v2/cn-healthcare/router.js +3 -0
- package/lib/v2/cncf/index.js +43 -0
- package/lib/v2/cncf/maintainer.js +3 -0
- package/lib/v2/cncf/radar.js +31 -0
- package/lib/v2/cncf/reports.js +38 -0
- package/lib/v2/cncf/router.js +4 -0
- package/lib/v2/cnjxol/index.js +94 -0
- package/lib/v2/cnjxol/maintainer.js +4 -0
- package/lib/v2/cnjxol/radar.js +19 -0
- package/lib/v2/cnjxol/router.js +3 -0
- package/lib/v2/cnjxol/templates/description.art +2 -0
- package/lib/v2/cntheory/maintainer.js +3 -0
- package/lib/v2/cntheory/paper.js +93 -0
- package/lib/v2/cntheory/radar.js +13 -0
- package/lib/v2/cntheory/router.js +3 -0
- package/lib/v2/cntheory/templates/description.art +2 -0
- package/lib/v2/cscse/maintainer.js +3 -0
- package/lib/v2/cscse/radar.js +13 -0
- package/lib/v2/cscse/router.js +3 -0
- package/lib/v2/cscse/tzgg.js +54 -0
- package/lib/v2/diandong/ddh.js +51 -0
- package/lib/v2/diandong/maintainer.js +4 -0
- package/lib/v2/diandong/news.js +50 -0
- package/lib/v2/diandong/radar.js +19 -0
- package/lib/v2/diandong/router.js +4 -0
- package/lib/v2/domp4/detail.js +67 -0
- package/lib/v2/domp4/latest.js +31 -0
- package/lib/v2/domp4/maintainer.js +4 -0
- package/lib/v2/domp4/radar.js +25 -0
- package/lib/v2/domp4/router.js +4 -0
- package/lib/v2/domp4/utils.js +72 -0
- package/lib/v2/douyin/hashtag.js +133 -0
- package/lib/v2/douyin/radar.js +6 -0
- package/lib/v2/douyin/router.js +1 -0
- package/lib/v2/douyin/user.js +10 -1
- package/lib/{routes → v2}/earthquake/ceic.js +3 -1
- package/lib/{routes → v2}/earthquake/index.js +5 -3
- package/lib/v2/earthquake/maintainer.js +4 -0
- package/lib/v2/earthquake/radar.js +24 -0
- package/lib/v2/earthquake/router.js +4 -0
- package/lib/{routes/the-economist → v2/economist}/download.js +0 -0
- package/lib/v2/economist/espresso.js +50 -0
- package/lib/v2/economist/full.js +42 -0
- package/lib/v2/economist/gre-vocabulary.js +19 -0
- package/lib/v2/economist/maintainer.js +6 -0
- package/lib/v2/economist/radar.js +27 -0
- package/lib/v2/economist/router.js +6 -0
- package/lib/v2/elasticsearch-cn/index.js +57 -0
- package/lib/v2/elasticsearch-cn/maintainer.js +3 -0
- package/lib/v2/elasticsearch-cn/radar.js +13 -0
- package/lib/v2/elasticsearch-cn/router.js +3 -0
- package/lib/v2/elsevier/issue.js +62 -0
- package/lib/v2/elsevier/journal.js +72 -0
- package/lib/v2/elsevier/maintainer.js +2 -2
- package/lib/v2/elsevier/radar.js +5 -5
- package/lib/v2/elsevier/router.js +4 -2
- package/lib/v2/elsevier/templates/description.art +5 -5
- package/lib/v2/epicgames/index.js +45 -11
- package/lib/v2/feng/forum.js +42 -0
- package/lib/v2/feng/radar.js +13 -0
- package/lib/v2/feng/router.js +3 -0
- package/lib/v2/feng/templates/deleted.art +2 -0
- package/lib/v2/feng/templates/img.art +6 -0
- package/lib/v2/feng/utils.js +80 -0
- package/lib/v2/fx-markets/channel.js +56 -0
- package/lib/v2/fx-markets/maintainer.js +3 -0
- package/lib/v2/fx-markets/radar.js +31 -0
- package/lib/v2/fx-markets/router.js +3 -0
- package/lib/v2/gcores/category.js +5 -1
- package/lib/v2/gcores/tag.js +5 -1
- package/lib/v2/getitfree/index.js +54 -0
- package/lib/v2/getitfree/maintainer.js +3 -0
- package/lib/v2/getitfree/radar.js +13 -0
- package/lib/v2/getitfree/router.js +3 -0
- package/lib/v2/gitee/maintainer.js +6 -0
- package/lib/v2/gitee/radar.js +31 -0
- package/lib/v2/gitee/repos/commits.js +40 -0
- package/lib/v2/gitee/repos/events.js +66 -0
- package/lib/v2/gitee/repos/releases.js +33 -0
- package/lib/v2/gitee/router.js +6 -0
- package/lib/v2/gitee/users/events.js +84 -0
- package/lib/v2/gov/beijing/jw/tzgg.js +58 -0
- package/lib/v2/gov/customs/list.js +80 -0
- package/lib/v2/gov/customs/utils.js +21 -0
- package/lib/v2/gov/maintainer.js +4 -1
- package/lib/v2/gov/miit/wjgs.js +50 -41
- package/lib/v2/gov/miit/zcjd.js +50 -41
- package/lib/v2/gov/pbc/goutongjiaoliu.js +20 -15
- package/lib/v2/gov/pbc/tradeAnnouncement.js +18 -14
- package/lib/v2/gov/radar.js +45 -26
- package/lib/v2/gov/router.js +2 -0
- package/lib/v2/gumroad/index.js +35 -0
- package/lib/v2/gumroad/maintainer.js +3 -0
- package/lib/v2/gumroad/radar.js +17 -0
- package/lib/v2/gumroad/router.js +3 -0
- package/lib/v2/gumroad/templates/products.art +7 -0
- package/lib/v2/hackertalk/index.js +23 -0
- package/lib/v2/hackertalk/maintainer.js +3 -0
- package/lib/v2/hackertalk/radar.js +13 -0
- package/lib/v2/hackertalk/router.js +3 -0
- package/lib/v2/hashnode/blog.js +62 -0
- package/lib/v2/hashnode/maintainer.js +3 -0
- package/lib/v2/hashnode/radar.js +13 -0
- package/lib/v2/hashnode/router.js +3 -0
- package/lib/v2/hashnode/templates/description.art +2 -0
- package/lib/v2/heu/gx/list.js +2 -2
- package/lib/v2/heu/job/list.js +2 -2
- package/lib/v2/heu/uae/list.js +2 -2
- package/lib/v2/heu/yjsy/list.js +2 -2
- package/lib/v2/hk01/channel.js +40 -0
- package/lib/{routes → v2}/hk01/hot.js +2 -1
- package/lib/v2/hk01/issue.js +41 -0
- package/lib/v2/hk01/maintainer.js +7 -0
- package/lib/v2/hk01/radar.js +37 -0
- package/lib/v2/hk01/router.js +7 -0
- package/lib/{routes → v2}/hk01/tag.js +2 -1
- package/lib/{routes → v2}/hk01/zone.js +3 -2
- package/lib/v2/hotukdeals/index.js +1 -1
- package/lib/{routes → v2}/huxiu/article.js +1 -1
- package/lib/{routes → v2}/huxiu/author.js +18 -6
- package/lib/{routes → v2}/huxiu/collection.js +1 -2
- package/lib/v2/huxiu/maintainer.js +7 -0
- package/lib/v2/huxiu/radar.js +35 -0
- package/lib/v2/huxiu/router.js +7 -0
- package/lib/{routes → v2}/huxiu/search.js +0 -0
- package/lib/{routes → v2}/huxiu/tag.js +0 -0
- package/lib/{routes → v2}/huxiu/utils.js +3 -4
- package/lib/v2/ieee/journal.js +78 -0
- package/lib/v2/ieee/maintainer.js +2 -2
- package/lib/v2/ieee/radar.js +4 -4
- package/lib/v2/ieee/{latestdate.js → recent.js} +34 -42
- package/lib/v2/ieee/router.js +4 -2
- package/lib/v2/ieee/templates/description.art +5 -5
- package/lib/v2/ielts/index.js +32 -26
- package/lib/v2/itch/devlog.js +62 -0
- package/lib/v2/itch/index.js +56 -0
- package/lib/v2/itch/maintainer.js +5 -0
- package/lib/v2/itch/posts.js +41 -0
- package/lib/v2/itch/radar.js +28 -0
- package/lib/v2/itch/router.js +5 -0
- package/lib/v2/itch/templates/description.art +4 -0
- package/lib/v2/jike/utils.js +32 -1
- package/lib/{routes → v2}/juejin/books.js +2 -1
- package/lib/{routes → v2}/juejin/category.js +1 -1
- package/lib/{routes → v2}/juejin/collection.js +0 -0
- package/lib/{routes → v2}/juejin/column.js +0 -0
- package/lib/{routes → v2}/juejin/favorites.js +0 -0
- package/lib/v2/juejin/maintainer.js +13 -0
- package/lib/v2/juejin/news.js +25 -0
- package/lib/{routes → v2}/juejin/pins.js +3 -2
- package/lib/{routes → v2}/juejin/posts.js +0 -0
- package/lib/v2/juejin/radar.js +61 -0
- package/lib/v2/juejin/router.js +13 -0
- package/lib/{routes → v2}/juejin/shares.js +0 -0
- package/lib/{routes → v2}/juejin/tag.js +0 -0
- package/lib/{routes → v2}/juejin/trending.js +0 -0
- package/lib/{routes → v2}/juejin/utils.js +15 -7
- package/lib/v2/kcna/maintainer.js +3 -0
- package/lib/v2/kcna/news.js +81 -0
- package/lib/v2/kcna/radar.js +61 -0
- package/lib/v2/kcna/router.js +3 -0
- package/lib/v2/kcna/templates/news.art +9 -0
- package/lib/v2/kcna/utils.js +64 -0
- package/lib/v2/keep/maintainer.js +3 -0
- package/lib/v2/keep/radar.js +13 -0
- package/lib/v2/keep/router.js +3 -0
- package/lib/v2/keep/templates/user.art +16 -0
- package/lib/{routes → v2}/keep/user.js +14 -4
- package/lib/v2/laohu8/maintainer.js +3 -0
- package/lib/v2/laohu8/personal.js +32 -0
- package/lib/v2/laohu8/radar.js +13 -0
- package/lib/v2/laohu8/router.js +3 -0
- package/lib/v2/lever/index.js +28 -0
- package/lib/v2/lever/maintainer.js +3 -0
- package/lib/v2/lever/radar.js +13 -0
- package/lib/v2/lever/router.js +3 -0
- package/lib/v2/mdpi/journal.js +65 -0
- package/lib/v2/mdpi/maintainer.js +3 -0
- package/lib/v2/mdpi/radar.js +13 -0
- package/lib/v2/mdpi/router.js +3 -0
- package/lib/v2/mdpi/templates/description.art +12 -0
- package/lib/v2/mihoyo/bbs.js +1 -0
- package/lib/v2/mihoyo/radar.js +2 -2
- package/lib/v2/mirror/index.js +34 -0
- package/lib/v2/mirror/maintainer.js +3 -0
- package/lib/v2/mirror/radar.js +17 -0
- package/lib/v2/mirror/router.js +3 -0
- package/lib/v2/mobilism/forums.js +75 -0
- package/lib/v2/mobilism/maintainer.js +4 -0
- package/lib/v2/mobilism/portal.js +54 -0
- package/lib/v2/mobilism/radar.js +23 -0
- package/lib/v2/mobilism/router.js +4 -0
- package/lib/{routes → v2}/mp4er/index.js +1 -1
- package/lib/v2/mp4er/maintainer.js +3 -0
- package/lib/v2/mp4er/radar.js +13 -0
- package/lib/v2/mp4er/router.js +3 -0
- package/lib/v2/mysql/maintainer.js +3 -0
- package/lib/v2/mysql/radar.js +13 -0
- package/lib/v2/mysql/release.js +55 -0
- package/lib/v2/mysql/router.js +3 -0
- package/lib/v2/nbd/radar.js +2 -2
- package/lib/v2/ncwu/maintainer.js +3 -0
- package/lib/v2/ncwu/notice.js +27 -0
- package/lib/v2/ncwu/radar.js +13 -0
- package/lib/v2/ncwu/router.js +3 -0
- package/lib/v2/nhk/news.js +41 -0
- package/lib/{routes → v2}/nhk/news_web_easy.js +20 -20
- package/lib/v2/nhk/radar.js +19 -0
- package/lib/v2/nhk/router.js +4 -0
- package/lib/v2/nhk/templates/news.art +5 -0
- package/lib/v2/nju/rczp.js +34 -24
- package/lib/v2/njust/utils.js +4 -0
- package/lib/v2/nuaa/utils/pypasswaf.js +4 -5
- package/lib/v2/nytimes/daily_briefing_chinese.js +66 -41
- package/lib/v2/nytimes/index.js +3 -3
- package/lib/v2/nytimes/maintainer.js +1 -1
- package/lib/v2/nytimes/templates/image.art +4 -0
- package/lib/v2/nytimes/utils.js +7 -1
- package/lib/v2/oceanengine/arithmeticIndex.js +145 -0
- package/lib/v2/oceanengine/maintainer.js +3 -0
- package/lib/v2/oceanengine/radar.js +13 -0
- package/lib/v2/oceanengine/router.js +3 -0
- package/lib/v2/oceanengine/templates/content.art +14 -0
- package/lib/v2/openwrt/maintainer.js +3 -0
- package/lib/v2/openwrt/radar.js +13 -0
- package/lib/v2/openwrt/releases.js +25 -0
- package/lib/v2/openwrt/router.js +3 -0
- package/lib/v2/orcid/index.js +1 -1
- package/lib/v2/orcid/templates/description.art +2 -2
- package/lib/v2/panewslab/{column.js → author.js} +11 -23
- package/lib/v2/panewslab/index.js +24 -17
- package/lib/v2/panewslab/maintainer.js +3 -1
- package/lib/v2/panewslab/news.js +28 -0
- package/lib/v2/panewslab/radar.js +2 -2
- package/lib/v2/panewslab/router.js +4 -2
- package/lib/v2/panewslab/topic.js +7 -14
- package/lib/v2/pincong/hot.js +28 -0
- package/lib/{routes → v2}/pincong/index.js +6 -12
- package/lib/v2/pincong/maintainer.js +5 -0
- package/lib/v2/pincong/radar.js +35 -0
- package/lib/v2/pincong/router.js +5 -0
- package/lib/v2/pincong/topic.js +25 -0
- package/lib/v2/pincong/utils.js +22 -0
- package/lib/v2/pku/maintainer.js +1 -0
- package/lib/v2/pku/nsd.js +69 -0
- package/lib/v2/pku/radar.js +8 -0
- package/lib/v2/pku/router.js +1 -0
- package/lib/v2/playno1/av.js +41 -0
- package/lib/v2/playno1/maintainer.js +4 -0
- package/lib/v2/playno1/radar.js +21 -0
- package/lib/v2/playno1/router.js +4 -0
- package/lib/v2/playno1/st.js +36 -0
- package/lib/v2/playno1/utils.js +32 -0
- package/lib/v2/pmthinking/index.js +61 -0
- package/lib/v2/pmthinking/maintainer.js +3 -0
- package/lib/v2/pmthinking/radar.js +13 -0
- package/lib/v2/pmthinking/router.js +3 -0
- package/lib/v2/pmthinking/templates/description.art +4 -0
- package/lib/v2/prestige-av/maintainer.js +3 -0
- package/lib/v2/prestige-av/radar.js +18 -0
- package/lib/v2/prestige-av/router.js +3 -0
- package/lib/{routes → v2}/prestige-av/series.js +8 -5
- package/lib/v2/qipamaijia/index.js +26 -0
- package/lib/v2/qipamaijia/maintainer.js +3 -0
- package/lib/v2/qipamaijia/radar.js +13 -0
- package/lib/v2/qipamaijia/router.js +3 -0
- package/lib/v2/reuters/common.js +54 -0
- package/lib/v2/reuters/investigates.js +39 -0
- package/lib/v2/reuters/maintainer.js +6 -0
- package/lib/v2/reuters/migration_prompt.js +3 -0
- package/lib/v2/reuters/radar.js +19 -0
- package/lib/v2/reuters/router.js +6 -0
- package/lib/v2/sciencedirect/journal.js +8 -1
- package/lib/v2/{jasa/latest.js → scitation/journal.js} +24 -27
- package/lib/v2/scitation/maintainer.js +4 -0
- package/lib/v2/scitation/radar.js +19 -0
- package/lib/v2/scitation/router.js +4 -0
- package/lib/v2/scitation/section.js +90 -0
- package/lib/v2/scitation/templates/description.art +11 -0
- package/lib/v2/sis001/forum.js +62 -0
- package/lib/v2/sis001/maintainer.js +3 -0
- package/lib/v2/sis001/radar.js +13 -0
- package/lib/v2/sis001/router.js +3 -0
- package/lib/{routes → v2}/sobooks/date.js +1 -1
- package/lib/{routes → v2}/sobooks/index.js +1 -1
- package/lib/v2/sobooks/maintainer.js +5 -0
- package/lib/v2/sobooks/radar.js +25 -0
- package/lib/v2/sobooks/router.js +5 -0
- package/lib/{routes → v2}/sobooks/tag.js +1 -1
- package/lib/{routes → v2}/sobooks/utils.js +3 -2
- package/lib/v2/springer/journal.js +72 -0
- package/lib/v2/springer/maintainer.js +3 -0
- package/lib/v2/springer/radar.js +13 -0
- package/lib/v2/springer/router.js +3 -0
- package/lib/v2/springer/templates/description.art +12 -0
- package/lib/v2/sspai/maintainer.js +1 -0
- package/lib/v2/sspai/radar.js +6 -0
- package/lib/v2/sspai/router.js +1 -0
- package/lib/v2/sspai/seriesUpdate.js +36 -0
- package/lib/v2/supchina/index.js +67 -0
- package/lib/v2/supchina/maintainer.js +4 -0
- package/lib/v2/supchina/podcasts.js +66 -0
- package/lib/v2/supchina/radar.js +19 -0
- package/lib/v2/supchina/router.js +4 -0
- package/lib/v2/techflow520/index.js +34 -0
- package/lib/v2/techflow520/maintainer.js +4 -0
- package/lib/v2/techflow520/newsflash.js +32 -0
- package/lib/v2/techflow520/radar.js +19 -0
- package/lib/v2/techflow520/router.js +4 -0
- package/lib/v2/tencent/cloud/column.js +51 -0
- package/lib/v2/tencent/maintainer.js +1 -0
- package/lib/v2/tencent/radar.js +11 -0
- package/lib/v2/tencent/router.js +1 -0
- package/lib/v2/test/index.js +23 -2
- package/lib/v2/tiktok/maintainer.js +3 -0
- package/lib/v2/tiktok/radar.js +13 -0
- package/lib/v2/tiktok/router.js +3 -0
- package/lib/v2/tiktok/templates/user.art +3 -0
- package/lib/v2/tiktok/user.js +89 -0
- package/lib/v2/tingshuitz/dalian.js +29 -0
- package/lib/{routes → v2}/tingshuitz/dongguan.js +2 -1
- package/lib/{routes → v2}/tingshuitz/guangzhou.js +0 -0
- package/lib/{routes → v2}/tingshuitz/hangzhou.js +0 -0
- package/lib/v2/tingshuitz/maintainer.js +11 -0
- package/lib/{routes → v2}/tingshuitz/nanjing.js +9 -11
- package/lib/v2/tingshuitz/radar.js +68 -0
- package/lib/v2/tingshuitz/router.js +11 -0
- package/lib/v2/tingshuitz/wuhan.js +32 -0
- package/lib/{routes → v2}/tingshuitz/xian.js +1 -1
- package/lib/{routes → v2}/tingshuitz/xiaoshan.js +0 -0
- package/lib/{routes → v2}/tingshuitz/yangjiang.js +6 -8
- package/lib/v2/trending/allTrending.js +169 -0
- package/lib/v2/trending/maintainer.js +3 -0
- package/lib/v2/trending/radar.js +35 -0
- package/lib/v2/trending/router.js +3 -0
- package/lib/v2/trending/templates/content.art +24 -0
- package/lib/v2/uraaka-joshi/uraaka-joshi-user.js +7 -1
- package/lib/v2/uraaka-joshi/uraaka-joshi.js +8 -1
- package/lib/v2/usts/jwch.js +56 -0
- package/lib/v2/usts/maintainer.js +3 -0
- package/lib/v2/usts/radar.js +25 -0
- package/lib/v2/usts/router.js +3 -0
- package/lib/v2/wallpaperhub/index.js +28 -0
- package/lib/v2/wallpaperhub/maintainer.js +3 -0
- package/lib/v2/wallpaperhub/radar.js +13 -0
- package/lib/v2/wallpaperhub/router.js +3 -0
- package/lib/v2/wallpaperhub/templates/description.art +1 -0
- package/lib/{routes → v2}/xiaohongshu/board.js +8 -6
- package/lib/v2/xiaohongshu/maintainer.js +4 -0
- package/lib/v2/xiaohongshu/radar.js +25 -0
- package/lib/v2/xiaohongshu/router.js +4 -0
- package/lib/{routes → v2}/xiaohongshu/user.js +9 -11
- package/lib/v2/xiaohongshu/util.js +32 -0
- package/lib/v2/xiaozhuanlan/column.js +52 -0
- package/lib/v2/xiaozhuanlan/maintainer.js +3 -0
- package/lib/v2/xiaozhuanlan/radar.js +13 -0
- package/lib/v2/xiaozhuanlan/router.js +3 -0
- package/lib/v2/xidian/jwc.js +54 -0
- package/lib/v2/xidian/maintainer.js +3 -0
- package/lib/v2/xidian/radar.js +13 -0
- package/lib/v2/xidian/router.js +3 -0
- package/lib/{routes → v2}/youtube/channel.js +9 -5
- package/lib/v2/youtube/maintainer.js +6 -0
- package/lib/{routes → v2}/youtube/playlist.js +6 -10
- package/lib/v2/youtube/radar.js +31 -0
- package/lib/v2/youtube/router.js +6 -0
- package/lib/v2/youtube/subscriptions.js +56 -0
- package/lib/v2/youtube/templates/description.art +7 -0
- package/lib/{routes → v2}/youtube/user.js +4 -5
- package/lib/v2/youtube/utils.js +141 -0
- package/lib/v2/zhihu/activities.js +36 -0
- package/lib/v2/zyshow/index.js +46 -0
- package/lib/v2/zyshow/maintainer.js +3 -0
- package/lib/v2/zyshow/radar.js +17 -0
- package/lib/v2/zyshow/router.js +3 -0
- package/lib/v2/zyshow/templates/description.art +16 -0
- package/package.json +21 -20
- package/lib/routes/apnews/topics.js +0 -43
- package/lib/routes/behance/index.js +0 -58
- package/lib/routes/gov/customs/list.js +0 -77
- package/lib/routes/hk01/channel.js +0 -22
- package/lib/routes/hk01/issue.js +0 -22
- package/lib/routes/mirror/entries.js +0 -80
- package/lib/routes/mobilism/release.js +0 -42
- package/lib/routes/pincong/hot.js +0 -33
- package/lib/routes/pincong/topic.js +0 -32
- package/lib/routes/reuters/channel.js +0 -155
- package/lib/routes/reuters/theWire.js +0 -45
- package/lib/routes/reuters/utils.js +0 -72
- package/lib/routes/the-economist/full.js +0 -48
- package/lib/routes/the-economist/gre-vocabulary.js +0 -27
- package/lib/routes/tingshuitz/dalian.js +0 -34
- package/lib/routes/tingshuitz/wuhan.js +0 -34
- package/lib/routes/universities/ncwu/notice.js +0 -42
- package/lib/routes/universities/xidian/jwc.js +0 -70
- package/lib/routes/waijiedanao/article.js +0 -78
- package/lib/routes/wallpaperhub/index.js +0 -22
- package/lib/routes/xiaohongshu/util.js +0 -18
- package/lib/routes/youtube/utils.js +0 -90
- package/lib/routes/zyshow/index.js +0 -42
- package/lib/v2/elsevier/latest.js +0 -87
- package/lib/v2/elsevier/volume.js +0 -75
- package/lib/v2/ieee/latestvol.js +0 -87
- package/lib/v2/jasa/maintainer.js +0 -4
- package/lib/v2/jasa/radar.js +0 -19
- package/lib/v2/jasa/router.js +0 -4
- package/lib/v2/jasa/section.js +0 -95
- package/lib/v2/jasa/templates/description.art +0 -11
- package/lib/v2/panewslab/newsflash.js +0 -35
package/lib/router.js
CHANGED
|
@@ -68,17 +68,18 @@ router.get('/ncm/artist/:id', lazyloadRouteHandler('./routes/ncm/artist'));
|
|
|
68
68
|
router.get('/ncm/djradio/:id', lazyloadRouteHandler('./routes/ncm/djradio'));
|
|
69
69
|
router.get('/ncm/user/playrecords/:uid/:type?', lazyloadRouteHandler('./routes/ncm/userplayrecords'));
|
|
70
70
|
|
|
71
|
-
// 掘金
|
|
72
|
-
router.get('/juejin/category/:category', lazyloadRouteHandler('./routes/juejin/category'));
|
|
73
|
-
router.get('/juejin/tag/:tag', lazyloadRouteHandler('./routes/juejin/tag'));
|
|
74
|
-
router.get('/juejin/trending/:category/:type', lazyloadRouteHandler('./routes/juejin/trending'));
|
|
75
|
-
router.get('/juejin/books', lazyloadRouteHandler('./routes/juejin/books'));
|
|
76
|
-
router.get('/juejin/pins/:type?', lazyloadRouteHandler('./routes/juejin/pins'));
|
|
77
|
-
router.get('/juejin/posts/:id', lazyloadRouteHandler('./routes/juejin/posts'));
|
|
78
|
-
router.get('/juejin/
|
|
79
|
-
router.get('/juejin/
|
|
80
|
-
router.get('/juejin/
|
|
81
|
-
router.get('/juejin/
|
|
71
|
+
// 掘金 migrated to v2
|
|
72
|
+
// router.get('/juejin/category/:category', lazyloadRouteHandler('./routes/juejin/category'));
|
|
73
|
+
// router.get('/juejin/tag/:tag', lazyloadRouteHandler('./routes/juejin/tag'));
|
|
74
|
+
// router.get('/juejin/trending/:category/:type', lazyloadRouteHandler('./routes/juejin/trending'));
|
|
75
|
+
// router.get('/juejin/books', lazyloadRouteHandler('./routes/juejin/books'));
|
|
76
|
+
// router.get('/juejin/pins/:type?', lazyloadRouteHandler('./routes/juejin/pins'));
|
|
77
|
+
// router.get('/juejin/posts/:id', lazyloadRouteHandler('./routes/juejin/posts'));
|
|
78
|
+
// router.get('/juejin/news/:id', lazyloadRouteHandler('./routes/juejin/news'));
|
|
79
|
+
// router.get('/juejin/collections/:userId', lazyloadRouteHandler('./routes/juejin/favorites'));
|
|
80
|
+
// router.get('/juejin/collection/:collectionId', lazyloadRouteHandler('./routes/juejin/collection'));
|
|
81
|
+
// router.get('/juejin/shares/:userId', lazyloadRouteHandler('./routes/juejin/shares'));
|
|
82
|
+
// router.get('/juejin/column/:id', lazyloadRouteHandler('./routes/juejin/column'));
|
|
82
83
|
|
|
83
84
|
// 自如
|
|
84
85
|
router.get('/ziroom/room/:city/:iswhole/:room/:keyword', lazyloadRouteHandler('./routes/ziroom/room'));
|
|
@@ -159,10 +160,10 @@ router.get('/twitter/keyword/:keyword/:routeParams?/:limit?', lazyloadRouteHandl
|
|
|
159
160
|
router.get('/twitter/trends/:woeid?', lazyloadRouteHandler('./routes/twitter/trends'));
|
|
160
161
|
router.get('/twitter/media/:id/:routeParams?', lazyloadRouteHandler('./routes/twitter/media'));
|
|
161
162
|
|
|
162
|
-
// YouTube
|
|
163
|
-
router.get('/youtube/user/:username/:embed?', lazyloadRouteHandler('./routes/youtube/user'));
|
|
164
|
-
router.get('/youtube/channel/:id/:embed?', lazyloadRouteHandler('./routes/youtube/channel'));
|
|
165
|
-
router.get('/youtube/playlist/:id/:embed?', lazyloadRouteHandler('./routes/youtube/playlist'));
|
|
163
|
+
// YouTube migrated to v2
|
|
164
|
+
// router.get('/youtube/user/:username/:embed?', lazyloadRouteHandler('./routes/youtube/user'));
|
|
165
|
+
// router.get('/youtube/channel/:id/:embed?', lazyloadRouteHandler('./routes/youtube/channel'));
|
|
166
|
+
// router.get('/youtube/playlist/:id/:embed?', lazyloadRouteHandler('./routes/youtube/playlist'));
|
|
166
167
|
|
|
167
168
|
// 极客时间
|
|
168
169
|
router.get('/geektime/column/:cid', lazyloadRouteHandler('./routes/geektime/column'));
|
|
@@ -227,8 +228,8 @@ router.get('/pornhub/:language?/users/:username', lazyloadRouteHandler('./routes
|
|
|
227
228
|
router.get('/pornhub/:language?/model/:username/:sort?', lazyloadRouteHandler('./routes/pornhub/model'));
|
|
228
229
|
router.get('/pornhub/:language?/pornstar/:username/:sort?', lazyloadRouteHandler('./routes/pornhub/pornstar'));
|
|
229
230
|
|
|
230
|
-
// Prestige
|
|
231
|
-
router.get('/prestige-av/series/:mid/:sort?', lazyloadRouteHandler('./routes/prestige-av/series'));
|
|
231
|
+
// Prestige migrated to v2
|
|
232
|
+
// router.get('/prestige-av/series/:mid/:sort?', lazyloadRouteHandler('./routes/prestige-av/series'));
|
|
232
233
|
|
|
233
234
|
// yande.re
|
|
234
235
|
router.get('/yande.re/post/popular_recent', lazyloadRouteHandler('./routes/yande.re/post_popular_recent'));
|
|
@@ -263,16 +264,16 @@ router.get('/smzdm/baoliao/:uid', lazyloadRouteHandler('./routes/smzdm/baoliao')
|
|
|
263
264
|
router.get('/bjnews/:cat', lazyloadRouteHandler('./routes/bjnews/news'));
|
|
264
265
|
router.get('/bjnews/epaper/:cat', lazyloadRouteHandler('./routes/bjnews/epaper'));
|
|
265
266
|
|
|
266
|
-
// 停水通知
|
|
267
|
-
router.get('/tingshuitz/hangzhou', lazyloadRouteHandler('./routes/tingshuitz/hangzhou'));
|
|
268
|
-
router.get('/tingshuitz/xiaoshan', lazyloadRouteHandler('./routes/tingshuitz/xiaoshan'));
|
|
269
|
-
router.get('/tingshuitz/dalian', lazyloadRouteHandler('./routes/tingshuitz/dalian'));
|
|
270
|
-
router.get('/tingshuitz/guangzhou', lazyloadRouteHandler('./routes/tingshuitz/guangzhou'));
|
|
271
|
-
router.get('/tingshuitz/dongguan', lazyloadRouteHandler('./routes/tingshuitz/dongguan'));
|
|
272
|
-
router.get('/tingshuitz/xian', lazyloadRouteHandler('./routes/tingshuitz/xian'));
|
|
273
|
-
router.get('/tingshuitz/yangjiang', lazyloadRouteHandler('./routes/tingshuitz/yangjiang'));
|
|
274
|
-
router.get('/tingshuitz/nanjing', lazyloadRouteHandler('./routes/tingshuitz/nanjing'));
|
|
275
|
-
router.get('/tingshuitz/wuhan', lazyloadRouteHandler('./routes/tingshuitz/wuhan'));
|
|
267
|
+
// 停水通知 migrated to v2
|
|
268
|
+
// router.get('/tingshuitz/hangzhou', lazyloadRouteHandler('./routes/tingshuitz/hangzhou'));
|
|
269
|
+
// router.get('/tingshuitz/xiaoshan', lazyloadRouteHandler('./routes/tingshuitz/xiaoshan'));
|
|
270
|
+
// router.get('/tingshuitz/dalian', lazyloadRouteHandler('./routes/tingshuitz/dalian'));
|
|
271
|
+
// router.get('/tingshuitz/guangzhou', lazyloadRouteHandler('./routes/tingshuitz/guangzhou'));
|
|
272
|
+
// router.get('/tingshuitz/dongguan', lazyloadRouteHandler('./routes/tingshuitz/dongguan'));
|
|
273
|
+
// router.get('/tingshuitz/xian', lazyloadRouteHandler('./routes/tingshuitz/xian'));
|
|
274
|
+
// router.get('/tingshuitz/yangjiang', lazyloadRouteHandler('./routes/tingshuitz/yangjiang'));
|
|
275
|
+
// router.get('/tingshuitz/nanjing', lazyloadRouteHandler('./routes/tingshuitz/nanjing'));
|
|
276
|
+
// router.get('/tingshuitz/wuhan', lazyloadRouteHandler('./routes/tingshuitz/wuhan'));
|
|
276
277
|
|
|
277
278
|
// 米哈游
|
|
278
279
|
router.get('/mihoyo/bh3/:type', lazyloadRouteHandler('./routes/mihoyo/bh3'));
|
|
@@ -335,7 +336,7 @@ router.get('/miui/:device/:type?/:region?', lazyloadRouteHandler('./routes/mi/mi
|
|
|
335
336
|
router.get('/mi/bbs/board/:boardId', lazyloadRouteHandler('./routes/mi/board'));
|
|
336
337
|
|
|
337
338
|
// Keep
|
|
338
|
-
router.get('/keep/user/:id', lazyloadRouteHandler('./routes/keep/user'));
|
|
339
|
+
// router.get('/keep/user/:id', lazyloadRouteHandler('./routes/keep/user'));
|
|
339
340
|
|
|
340
341
|
// 起点
|
|
341
342
|
router.get('/qidian/chapter/:id', lazyloadRouteHandler('./routes/qidian/chapter'));
|
|
@@ -453,11 +454,10 @@ router.get('/hopper/:lowestOnly/:from/:to?', lazyloadRouteHandler('./routes/hopp
|
|
|
453
454
|
router.get('/mafengwo/note/:type', lazyloadRouteHandler('./routes/mafengwo/note'));
|
|
454
455
|
router.get('/mafengwo/ziyouxing/:code', lazyloadRouteHandler('./routes/mafengwo/ziyouxing'));
|
|
455
456
|
|
|
456
|
-
// 中国地震局震情速递(与地震台网同步更新)
|
|
457
|
-
router.get('/earthquake/:region?', lazyloadRouteHandler('./routes/earthquake'));
|
|
458
|
-
|
|
457
|
+
// 中国地震局震情速递(与地震台网同步更新)migrated to v2
|
|
458
|
+
// router.get('/earthquake/:region?', lazyloadRouteHandler('./routes/earthquake'));
|
|
459
459
|
// 中国地震台网
|
|
460
|
-
router.get('/earthquake/ceic/:type', lazyloadRouteHandler('./routes/earthquake/ceic'));
|
|
460
|
+
// router.get('/earthquake/ceic/:type', lazyloadRouteHandler('./routes/earthquake/ceic'));
|
|
461
461
|
|
|
462
462
|
// 小说
|
|
463
463
|
router.get('/novel/biquge/:id', lazyloadRouteHandler('./routes/novel/biquge'));
|
|
@@ -759,7 +759,7 @@ router.get('/upc/main/:type?', lazyloadRouteHandler('./routes/universities/upc/m
|
|
|
759
759
|
router.get('/upc/jsj/:type?', lazyloadRouteHandler('./routes/universities/upc/jsj'));
|
|
760
760
|
|
|
761
761
|
// 华北水利水电大学
|
|
762
|
-
router.get('/ncwu/notice', lazyloadRouteHandler('./routes/universities/ncwu/notice'));
|
|
762
|
+
// router.get('/ncwu/notice', lazyloadRouteHandler('./routes/universities/ncwu/notice'));
|
|
763
763
|
|
|
764
764
|
// 太原师范学院
|
|
765
765
|
router.get('/tynu', lazyloadRouteHandler('./routes/universities/tynu/tynu'));
|
|
@@ -867,8 +867,8 @@ router.get('/rs05/rs05', lazyloadRouteHandler('./routes/rs05/rs05'));
|
|
|
867
867
|
// 趣头条
|
|
868
868
|
router.get('/qutoutiao/category/:cid', lazyloadRouteHandler('./routes/qutoutiao/category'));
|
|
869
869
|
|
|
870
|
-
// NHK NEW WEB EASY
|
|
871
|
-
router.get('/nhk/news_web_easy', lazyloadRouteHandler('./routes/nhk/news_web_easy'));
|
|
870
|
+
// NHK NEW WEB EASY migrated to v2
|
|
871
|
+
// router.get('/nhk/news_web_easy', lazyloadRouteHandler('./routes/nhk/news_web_easy'));
|
|
872
872
|
|
|
873
873
|
// BBC
|
|
874
874
|
router.get('/bbc/:site?/:channel?', lazyloadRouteHandler('./routes/bbc/index'));
|
|
@@ -923,8 +923,8 @@ router.get('/dgtle/trade/search/:keyword', lazyloadRouteHandler('./routes/dgtle/
|
|
|
923
923
|
router.get('/chouti/top/:hour?', lazyloadRouteHandler('./routes/chouti/top'));
|
|
924
924
|
router.get('/chouti/:subject?', lazyloadRouteHandler('./routes/chouti'));
|
|
925
925
|
|
|
926
|
-
// 西安电子科技大学
|
|
927
|
-
router.get('/xidian/jwc/:category?', lazyloadRouteHandler('./routes/universities/xidian/jwc'));
|
|
926
|
+
// 西安电子科技大学 migrated to v2
|
|
927
|
+
// router.get('/xidian/jwc/:category?', lazyloadRouteHandler('./routes/universities/xidian/jwc'));
|
|
928
928
|
|
|
929
929
|
// Westore
|
|
930
930
|
router.get('/westore/new', lazyloadRouteHandler('./routes/westore/new'));
|
|
@@ -1043,7 +1043,7 @@ router.get('/gitea/blog', lazyloadRouteHandler('./routes/gitea/blog'));
|
|
|
1043
1043
|
router.get('/idownloadblog', lazyloadRouteHandler('./routes/idownloadblog/index'));
|
|
1044
1044
|
|
|
1045
1045
|
// 9to5
|
|
1046
|
-
router.get('/9to5/:subsite/:tag?', lazyloadRouteHandler('./routes/9to5/subsite'));
|
|
1046
|
+
// router.get('/9to5/:subsite/:tag?', lazyloadRouteHandler('./routes/9to5/subsite'));
|
|
1047
1047
|
|
|
1048
1048
|
// TesterHome
|
|
1049
1049
|
router.get('/testerhome/newest', lazyloadRouteHandler('./routes/testerhome/newest'));
|
|
@@ -1111,12 +1111,12 @@ router.get('/zimuku/:type?', lazyloadRouteHandler('./routes/zimuku/index'));
|
|
|
1111
1111
|
// SubHD.tv
|
|
1112
1112
|
// router.get('/subhd/newest', lazyloadRouteHandler('./routes/subhd/newest'));
|
|
1113
1113
|
|
|
1114
|
-
// 虎嗅
|
|
1115
|
-
router.get('/huxiu/tag/:id', lazyloadRouteHandler('./routes/huxiu/tag'));
|
|
1116
|
-
router.get('/huxiu/search/:keyword', lazyloadRouteHandler('./routes/huxiu/search'));
|
|
1117
|
-
router.get('/huxiu/author/:id', lazyloadRouteHandler('./routes/huxiu/author'));
|
|
1118
|
-
router.get('/huxiu/article', lazyloadRouteHandler('./routes/huxiu/article'));
|
|
1119
|
-
router.get('/huxiu/collection/:id', lazyloadRouteHandler('./routes/huxiu/collection'));
|
|
1114
|
+
// 虎嗅 migrated to v2
|
|
1115
|
+
// router.get('/huxiu/tag/:id', lazyloadRouteHandler('./routes/huxiu/tag'));
|
|
1116
|
+
// router.get('/huxiu/search/:keyword', lazyloadRouteHandler('./routes/huxiu/search'));
|
|
1117
|
+
// router.get('/huxiu/author/:id', lazyloadRouteHandler('./routes/huxiu/author'));
|
|
1118
|
+
// router.get('/huxiu/article', lazyloadRouteHandler('./routes/huxiu/article'));
|
|
1119
|
+
// router.get('/huxiu/collection/:id', lazyloadRouteHandler('./routes/huxiu/collection'));
|
|
1120
1120
|
|
|
1121
1121
|
// Steam
|
|
1122
1122
|
router.get('/steam/search/:params', lazyloadRouteHandler('./routes/steam/search'));
|
|
@@ -1200,10 +1200,10 @@ router.get('/gov/hunan/notice/:type', lazyloadRouteHandler('./routes/gov/hunan/n
|
|
|
1200
1200
|
// 中华人民共和国国家发展和改革委员会
|
|
1201
1201
|
router.get('/gov/ndrc/xwdt/:caty?', lazyloadRouteHandler('./routes/gov/ndrc/xwdt'));
|
|
1202
1202
|
|
|
1203
|
-
// 中华人民共和国-海关总署
|
|
1204
|
-
router.get('/gov/customs/list/:gchannel', lazyloadRouteHandler('./routes/gov/customs/list'));
|
|
1203
|
+
// 中华人民共和国-海关总署 migrated to v2
|
|
1204
|
+
// router.get('/gov/customs/list/:gchannel', lazyloadRouteHandler('./routes/gov/customs/list'));
|
|
1205
1205
|
|
|
1206
|
-
// 中华人民共和国教育部
|
|
1206
|
+
// 中华人民共和国教育部
|
|
1207
1207
|
// router.get('/gov/moe/:type', lazyloadRouteHandler('./routes/gov/moe/moe'));
|
|
1208
1208
|
|
|
1209
1209
|
// 中华人民共和国外交部
|
|
@@ -1566,10 +1566,10 @@ router.get('/saraba1st/thread/:tid', lazyloadRouteHandler('./routes/saraba1st/th
|
|
|
1566
1566
|
router.get('/gradcafe/result/:type', lazyloadRouteHandler('./routes/gradcafe/result'));
|
|
1567
1567
|
router.get('/gradcafe/result', lazyloadRouteHandler('./routes/gradcafe/result'));
|
|
1568
1568
|
|
|
1569
|
-
// The Economist
|
|
1570
|
-
router.get('/the-economist/download', lazyloadRouteHandler('./routes/the-economist/download'));
|
|
1571
|
-
router.get('/the-economist/gre-vocabulary', lazyloadRouteHandler('./routes/the-economist/gre-vocabulary'));
|
|
1572
|
-
router.get('/the-economist/:endpoint', lazyloadRouteHandler('./routes/the-economist/full'));
|
|
1569
|
+
// The Economist migrated to v2
|
|
1570
|
+
// router.get('/the-economist/download', lazyloadRouteHandler('./routes/the-economist/download'));
|
|
1571
|
+
// router.get('/the-economist/gre-vocabulary', lazyloadRouteHandler('./routes/the-economist/gre-vocabulary'));
|
|
1572
|
+
// router.get('/the-economist/:endpoint', lazyloadRouteHandler('./routes/the-economist/full'));
|
|
1573
1573
|
|
|
1574
1574
|
// 鼠绘漫画
|
|
1575
1575
|
router.get('/shuhui/comics/:id', lazyloadRouteHandler('./routes/shuhui/comics'));
|
|
@@ -1922,10 +1922,10 @@ router.get('/socialclub/events/:game?', lazyloadRouteHandler('./routes/socialclu
|
|
|
1922
1922
|
router.get('/ctfhub/upcoming/:limit?', lazyloadRouteHandler('./routes/ctfhub/upcoming'));
|
|
1923
1923
|
router.get('/ctfhub/search/:limit?/:form?/:class?/:title?', lazyloadRouteHandler('./routes/ctfhub/search'));
|
|
1924
1924
|
|
|
1925
|
-
// 阿里云
|
|
1926
|
-
router.get('/aliyun/database_month', lazyloadRouteHandler('./routes/aliyun/database_month'));
|
|
1927
|
-
router.get('/aliyun/notice/:type?', lazyloadRouteHandler('./routes/aliyun/notice'));
|
|
1928
|
-
router.get('/aliyun/developer/group/:type', lazyloadRouteHandler('./routes/aliyun/developer/group'));
|
|
1925
|
+
// 阿里云 migrated to v2
|
|
1926
|
+
// router.get('/aliyun/database_month', lazyloadRouteHandler('./routes/aliyun/database_month'));
|
|
1927
|
+
// router.get('/aliyun/notice/:type?', lazyloadRouteHandler('./routes/aliyun/notice'));
|
|
1928
|
+
// router.get('/aliyun/developer/group/:type', lazyloadRouteHandler('./routes/aliyun/developer/group'));
|
|
1929
1929
|
|
|
1930
1930
|
// 礼物说
|
|
1931
1931
|
router.get('/liwushuo/index', lazyloadRouteHandler('./routes/liwushuo/index.js'));
|
|
@@ -2085,9 +2085,6 @@ router.get('/cug/gcxy/:type?', lazyloadRouteHandler('./routes/universities/cug/g
|
|
|
2085
2085
|
// 海猫吧
|
|
2086
2086
|
router.get('/haimaoba/:id?', lazyloadRouteHandler('./routes/haimaoba/comics'));
|
|
2087
2087
|
|
|
2088
|
-
// 路透社
|
|
2089
|
-
router.get('/reuters/channel/:site/:channel', lazyloadRouteHandler('./routes/reuters/channel'));
|
|
2090
|
-
|
|
2091
2088
|
// 蒲公英
|
|
2092
2089
|
router.get('/pgyer/:app?', lazyloadRouteHandler('./routes/pgyer/app'));
|
|
2093
2090
|
|
|
@@ -2116,11 +2113,11 @@ router.get('/zhanqi/room/:id', lazyloadRouteHandler('./routes/zhanqi/room'));
|
|
|
2116
2113
|
// 酒云网
|
|
2117
2114
|
router.get('/wineyun/:category', lazyloadRouteHandler('./routes/wineyun'));
|
|
2118
2115
|
|
|
2119
|
-
// 小红书
|
|
2120
|
-
router.get('/xiaohongshu/user/:user_id/:category', lazyloadRouteHandler('./routes/xiaohongshu/user'));
|
|
2121
|
-
router.get('/xiaohongshu/board/:board_id', lazyloadRouteHandler('./routes/xiaohongshu/board'));
|
|
2116
|
+
// 小红书 migrated to v2
|
|
2117
|
+
// router.get('/xiaohongshu/user/:user_id/:category', lazyloadRouteHandler('./routes/xiaohongshu/user'));
|
|
2118
|
+
// router.get('/xiaohongshu/board/:board_id', lazyloadRouteHandler('./routes/xiaohongshu/board'));
|
|
2122
2119
|
|
|
2123
|
-
// 每经网
|
|
2120
|
+
// 每经网
|
|
2124
2121
|
// router.get('/nbd/daily', lazyloadRouteHandler('./routes/nbd/article'));
|
|
2125
2122
|
// router.get('/nbd/:id?', lazyloadRouteHandler('./routes/nbd/index'));
|
|
2126
2123
|
|
|
@@ -2204,11 +2201,11 @@ router.get('/mcbbs/post/:tid/:authorid?', lazyloadRouteHandler('./routes/mcbbs/p
|
|
|
2204
2201
|
router.get('/pocket/trending', lazyloadRouteHandler('./routes/pocket/trending'));
|
|
2205
2202
|
|
|
2206
2203
|
// HK01
|
|
2207
|
-
router.get('/hk01/zone/:id', lazyloadRouteHandler('./routes/hk01/zone'));
|
|
2208
|
-
router.get('/hk01/channel/:id', lazyloadRouteHandler('./routes/hk01/channel'));
|
|
2209
|
-
router.get('/hk01/issue/:id', lazyloadRouteHandler('./routes/hk01/issue'));
|
|
2210
|
-
router.get('/hk01/tag/:id', lazyloadRouteHandler('./routes/hk01/tag'));
|
|
2211
|
-
router.get('/hk01/hot', lazyloadRouteHandler('./routes/hk01/hot'));
|
|
2204
|
+
// router.get('/hk01/zone/:id', lazyloadRouteHandler('./routes/hk01/zone'));
|
|
2205
|
+
// router.get('/hk01/channel/:id', lazyloadRouteHandler('./routes/hk01/channel'));
|
|
2206
|
+
// router.get('/hk01/issue/:id', lazyloadRouteHandler('./routes/hk01/issue'));
|
|
2207
|
+
// router.get('/hk01/tag/:id', lazyloadRouteHandler('./routes/hk01/tag'));
|
|
2208
|
+
// router.get('/hk01/hot', lazyloadRouteHandler('./routes/hk01/hot'));
|
|
2212
2209
|
|
|
2213
2210
|
// 码农周刊
|
|
2214
2211
|
router.get('/manong-weekly', lazyloadRouteHandler('./routes/manong-weekly/issues'));
|
|
@@ -2367,7 +2364,7 @@ router.get('/xinquji/today/internal', lazyloadRouteHandler('./routes/xinquji/int
|
|
|
2367
2364
|
router.get('/gbcc/trust', lazyloadRouteHandler('./routes/gbcc/trust'));
|
|
2368
2365
|
|
|
2369
2366
|
// Associated Press
|
|
2370
|
-
router.get('/apnews/topics/:topic', lazyloadRouteHandler('./routes/apnews/topics'));
|
|
2367
|
+
// router.get('/apnews/topics/:topic', lazyloadRouteHandler('./routes/apnews/topics'));
|
|
2371
2368
|
|
|
2372
2369
|
// CBC
|
|
2373
2370
|
router.get('/cbc/topics/:topic?', lazyloadRouteHandler('./routes/cbc/topics'));
|
|
@@ -2862,9 +2859,6 @@ router.get('/law/dh', lazyloadRouteHandler('./routes/law/dh'));
|
|
|
2862
2859
|
// 金诚同达律师事务所文章
|
|
2863
2860
|
router.get('/law/jctd', lazyloadRouteHandler('./routes/law/jctd'));
|
|
2864
2861
|
|
|
2865
|
-
// Mobilism
|
|
2866
|
-
router.get('/mobilism/release', lazyloadRouteHandler('./routes/mobilism/release'));
|
|
2867
|
-
|
|
2868
2862
|
// 三星盖乐世社区
|
|
2869
2863
|
router.get('/samsungmembers/latest', lazyloadRouteHandler('./routes/samsungmembers/latest'));
|
|
2870
2864
|
|
|
@@ -2902,9 +2896,6 @@ router.get('/lizhi/user/:id', lazyloadRouteHandler('./routes/lizhi/user'));
|
|
|
2902
2896
|
// 富途牛牛
|
|
2903
2897
|
router.get('/futunn/highlights', lazyloadRouteHandler('./routes/futunn/highlights'));
|
|
2904
2898
|
|
|
2905
|
-
// 外接大脑
|
|
2906
|
-
router.get('/waijiedanao/article/:caty', lazyloadRouteHandler('./routes/waijiedanao/article'));
|
|
2907
|
-
|
|
2908
2899
|
// 即刻 migrated to v2
|
|
2909
2900
|
// router.get('/jike/topic/:id', lazyloadRouteHandler('./routes/jike/topic'));
|
|
2910
2901
|
// router.get('/jike/topic/text/:id', lazyloadRouteHandler('./routes/jike/topicText'));
|
|
@@ -2979,9 +2970,6 @@ router.get('/dsb/area/:area', lazyloadRouteHandler('./routes/dsb/area'));
|
|
|
2979
2970
|
// 靠谱新闻
|
|
2980
2971
|
router.get('/kaopunews/:language?', lazyloadRouteHandler('./routes/kaopunews'));
|
|
2981
2972
|
|
|
2982
|
-
// Reuters
|
|
2983
|
-
router.get('/reuters/theWire', lazyloadRouteHandler('./routes/reuters/theWire'));
|
|
2984
|
-
|
|
2985
2973
|
// 格隆汇
|
|
2986
2974
|
router.get('/gelonghui/user/:id', lazyloadRouteHandler('./routes/gelonghui/user'));
|
|
2987
2975
|
router.get('/gelonghui/subject/:id', lazyloadRouteHandler('./routes/gelonghui/subject'));
|
|
@@ -3025,9 +3013,6 @@ router.get('/touhougarakuta/:language/:type', lazyloadRouteHandler('./routes/tou
|
|
|
3025
3013
|
// 猎趣TV
|
|
3026
3014
|
router.get('/liequtv/room/:id', lazyloadRouteHandler('./routes/liequtv/room'));
|
|
3027
3015
|
|
|
3028
|
-
// Behance
|
|
3029
|
-
router.get('/behance/:user/:type?', lazyloadRouteHandler('./routes/behance/index'));
|
|
3030
|
-
|
|
3031
3016
|
// 北京物资学院
|
|
3032
3017
|
router.get('/bwu/news', lazyloadRouteHandler('./routes/universities/bwu/news'));
|
|
3033
3018
|
|
|
@@ -3086,8 +3071,8 @@ router.get('/kotaku/story/:type', lazyloadRouteHandler('./routes/kotaku/story'))
|
|
|
3086
3071
|
// 梅斯医学
|
|
3087
3072
|
router.get('/medsci/recommend', lazyloadRouteHandler('./routes/medsci/recommend'));
|
|
3088
3073
|
|
|
3089
|
-
// Wallpaperhub
|
|
3090
|
-
router.get('/wallpaperhub', lazyloadRouteHandler('./routes/wallpaperhub/index'));
|
|
3074
|
+
// Wallpaperhub migrated to v2
|
|
3075
|
+
// router.get('/wallpaperhub', lazyloadRouteHandler('./routes/wallpaperhub/index'));
|
|
3091
3076
|
|
|
3092
3077
|
// 悟空问答
|
|
3093
3078
|
router.get('/wukong/user/:id/:type?', lazyloadRouteHandler('./routes/wukong/user'));
|
|
@@ -3477,9 +3462,9 @@ router.get('/matataki/tags/:tagId/:tagName/posts/:ipfsFlag?', lazyloadRouteHandl
|
|
|
3477
3462
|
router.get('/matataki/users/:userId/favorites/:favoriteListId/posts/:ipfsFlag?', lazyloadRouteHandler('./routes/matataki/site/posts/favorite'));
|
|
3478
3463
|
|
|
3479
3464
|
// SoBooks
|
|
3480
|
-
router.get('/sobooks/tag/:id?', lazyloadRouteHandler('./routes/sobooks/tag'));
|
|
3481
|
-
router.get('/sobooks/date/:date?', lazyloadRouteHandler('./routes/sobooks/date'));
|
|
3482
|
-
router.get('/sobooks/:category?', lazyloadRouteHandler('./routes/sobooks/index'));
|
|
3465
|
+
// router.get('/sobooks/tag/:id?', lazyloadRouteHandler('./routes/sobooks/tag'));
|
|
3466
|
+
// router.get('/sobooks/date/:date?', lazyloadRouteHandler('./routes/sobooks/date'));
|
|
3467
|
+
// router.get('/sobooks/:category?', lazyloadRouteHandler('./routes/sobooks/index'));
|
|
3483
3468
|
|
|
3484
3469
|
// Zhimap 知识导图社区
|
|
3485
3470
|
router.get('/zhimap/:categoryUuid?/:recommend?', lazyloadRouteHandler('./routes/zhimap/index'));
|
|
@@ -3669,8 +3654,8 @@ router.get('/voa/:language/:channel?', lazyloadRouteHandler('./routes/voa/index'
|
|
|
3669
3654
|
router.get('/6park/:id?/:type?/:keyword?', lazyloadRouteHandler('./routes/6park/index'));
|
|
3670
3655
|
|
|
3671
3656
|
// 哔嘀影视
|
|
3672
|
-
router.get('/mp4er/:type?/:caty?/:area?/:year?/:order?', lazyloadRouteHandler('./routes/mp4er/index'));
|
|
3673
|
-
router.get('/bde4/:type?/:caty?/:area?/:year?/:order?', lazyloadRouteHandler('./routes/mp4er/index'));
|
|
3657
|
+
// router.get('/mp4er/:type?/:caty?/:area?/:year?/:order?', lazyloadRouteHandler('./routes/mp4er/index'));
|
|
3658
|
+
// router.get('/bde4/:type?/:caty?/:area?/:year?/:order?', lazyloadRouteHandler('./routes/mp4er/index'));
|
|
3674
3659
|
|
|
3675
3660
|
// 上海证券交易所
|
|
3676
3661
|
router.get('/sse/sserules/:slug?', lazyloadRouteHandler('./routes/sse/sserules'));
|
|
@@ -3693,10 +3678,10 @@ router.get('/mofish/:id', lazyloadRouteHandler('./routes/mofish/index'));
|
|
|
3693
3678
|
// Mcdonalds
|
|
3694
3679
|
router.get('/mcdonalds/:category', lazyloadRouteHandler('./routes/mcdonalds/news'));
|
|
3695
3680
|
|
|
3696
|
-
// Pincong 品葱
|
|
3697
|
-
router.get('/pincong/category/:category?/:sort?', lazyloadRouteHandler('./routes/pincong/index'));
|
|
3698
|
-
router.get('/pincong/hot/:category?', lazyloadRouteHandler('./routes/pincong/hot'));
|
|
3699
|
-
router.get('/pincong/topic/:topic', lazyloadRouteHandler('./routes/pincong/topic'));
|
|
3681
|
+
// Pincong 品葱 migrated to v2
|
|
3682
|
+
// router.get('/pincong/category/:category?/:sort?', lazyloadRouteHandler('./routes/pincong/index'));
|
|
3683
|
+
// router.get('/pincong/hot/:category?', lazyloadRouteHandler('./routes/pincong/hot'));
|
|
3684
|
+
// router.get('/pincong/topic/:topic', lazyloadRouteHandler('./routes/pincong/topic'));
|
|
3700
3685
|
|
|
3701
3686
|
// GoComics
|
|
3702
3687
|
router.get('/gocomics/:name', lazyloadRouteHandler('./routes/gocomics/index'));
|
|
@@ -3945,7 +3930,7 @@ router.get('/macau-bolsas/:lang?', lazyloadRouteHandler('./routes/macau-bolsas/i
|
|
|
3945
3930
|
router.get('/potplayer/update/:language?', lazyloadRouteHandler('./routes/potplayer/update'));
|
|
3946
3931
|
|
|
3947
3932
|
// 综艺秀
|
|
3948
|
-
router.get('/zyshow/:name', lazyloadRouteHandler('./routes/zyshow'));
|
|
3933
|
+
// router.get('/zyshow/:name', lazyloadRouteHandler('./routes/zyshow'));
|
|
3949
3934
|
|
|
3950
3935
|
// 加美财经
|
|
3951
3936
|
router.get('/caus/:category?', lazyloadRouteHandler('./routes/caus'));
|
|
@@ -4049,7 +4034,7 @@ router.get('/netflix/newsroom/:category?/:region?', lazyloadRouteHandler('./rout
|
|
|
4049
4034
|
router.get('/sbs/chinese/:category?/:id?/:dialect?/:language?', lazyloadRouteHandler('./routes/sbs/chinese'));
|
|
4050
4035
|
|
|
4051
4036
|
// Asian to lick
|
|
4052
|
-
router.get('/asiantolick/:category?/:keyword?', lazyloadRouteHandler('./routes/asiantolick'));
|
|
4037
|
+
// router.get('/asiantolick/:category?/:keyword?', lazyloadRouteHandler('./routes/asiantolick'));
|
|
4053
4038
|
|
|
4054
4039
|
// Research Gate
|
|
4055
4040
|
router.get('/researchgate/publications/:id', lazyloadRouteHandler('./routes/researchgate/publications'));
|
|
@@ -4080,7 +4065,7 @@ router.get('/secrss/author/:author?', lazyloadRouteHandler('./routes/secrss/auth
|
|
|
4080
4065
|
router.get('/fashionnetwork/headline/:country?', lazyloadRouteHandler('./routes/fashionnetwork/headline.js'));
|
|
4081
4066
|
|
|
4082
4067
|
// mirror.xyz
|
|
4083
|
-
router.get('/mirror/:id', lazyloadRouteHandler('./routes/mirror/entries'));
|
|
4068
|
+
// router.get('/mirror/:id', lazyloadRouteHandler('./routes/mirror/entries'));
|
|
4084
4069
|
|
|
4085
4070
|
// KBS migrated to v2
|
|
4086
4071
|
// router.get('/kbs/today/:language?', lazyloadRouteHandler('./routes/kbs/today'));
|
|
@@ -2,7 +2,7 @@ const got = require('@/utils/got');
|
|
|
2
2
|
const cheerio = require('cheerio');
|
|
3
3
|
|
|
4
4
|
module.exports = async (ctx) => {
|
|
5
|
-
const rootUrl = 'https://www.
|
|
5
|
+
const rootUrl = 'https://www.agemys.com';
|
|
6
6
|
const currentUrl = `${rootUrl}/update`;
|
|
7
7
|
const response = await got({
|
|
8
8
|
method: 'get',
|
package/lib/routes/index.js
CHANGED
|
@@ -7,7 +7,7 @@ let gitHash;
|
|
|
7
7
|
try {
|
|
8
8
|
gitHash = require('git-rev-sync').short();
|
|
9
9
|
} catch (e) {
|
|
10
|
-
gitHash = (process.env.HEROKU_SLUG_COMMIT && process.env.HEROKU_SLUG_COMMIT.slice(0, 7)) || (process.env.
|
|
10
|
+
gitHash = (process.env.HEROKU_SLUG_COMMIT && process.env.HEROKU_SLUG_COMMIT.slice(0, 7)) || (process.env.VERCEL_GIT_COMMIT_SHA && process.env.VERCEL_GIT_COMMIT_SHA.slice(0, 7)) || 'unknown';
|
|
11
11
|
}
|
|
12
12
|
|
|
13
13
|
module.exports = async (ctx) => {
|
|
@@ -35,7 +35,7 @@ module.exports = async (ctx) => {
|
|
|
35
35
|
|
|
36
36
|
const items = [];
|
|
37
37
|
for await (const item of asyncPool(3, chapter_item, (item) =>
|
|
38
|
-
ctx.cache.tryGet(item, async () => {
|
|
38
|
+
ctx.cache.tryGet(item.link.href, async () => {
|
|
39
39
|
const response = await got({
|
|
40
40
|
method: 'get',
|
|
41
41
|
url: item.link,
|
|
@@ -61,7 +61,7 @@ module.exports = async (ctx) => {
|
|
|
61
61
|
|
|
62
62
|
ctx.state.data = {
|
|
63
63
|
title: `笔趣阁 ${title}`,
|
|
64
|
-
link: pageUrl,
|
|
64
|
+
link: pageUrl.href,
|
|
65
65
|
image: cover_url,
|
|
66
66
|
description,
|
|
67
67
|
item: items,
|
|
@@ -1,40 +1,18 @@
|
|
|
1
1
|
const cheerio = require('cheerio');
|
|
2
|
+
const { parseDate } = require('@/utils/parse-date');
|
|
3
|
+
const dayjs = require('dayjs');
|
|
2
4
|
|
|
3
5
|
module.exports = async (ctx) => {
|
|
4
6
|
const baseIndexUrl = 'https://www.sice.uestc.edu.cn/index.htm';
|
|
5
7
|
const host = 'https://www.sice.uestc.edu.cn/';
|
|
6
|
-
const browser = await require('@/utils/puppeteer')();
|
|
8
|
+
const browser = await require('@/utils/puppeteer')({ stealth: true });
|
|
7
9
|
const page = await browser.newPage();
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
// 在每个新页面打开前执行以下脚本
|
|
12
|
-
const newProto = navigator.__proto__;
|
|
13
|
-
delete newProto.webdriver; // 删除navigator.webdriver字段
|
|
14
|
-
navigator.__proto__ = newProto;
|
|
15
|
-
window.chrome = {}; // 添加window.chrome字段,为增加真实性还需向内部填充一些值
|
|
16
|
-
window.chrome.app = { InstallState: 'hehe', RunningState: 'haha', getDetails: 'xixi', getIsInstalled: 'ohno' };
|
|
17
|
-
window.chrome.csi = function () {};
|
|
18
|
-
window.chrome.loadTimes = function () {};
|
|
19
|
-
window.chrome.runtime = function () {};
|
|
20
|
-
Object.defineProperty(navigator, 'userAgent', {
|
|
21
|
-
// userAgent在无头模式下有headless字样,所以需覆写
|
|
22
|
-
get: () => 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.113 Safari/537.36',
|
|
23
|
-
});
|
|
24
|
-
Object.defineProperty(navigator, 'plugins', {
|
|
25
|
-
// 伪装真实的插件信息
|
|
26
|
-
get: () => [{ description: 'Portable Document Format', filename: 'internal-pdf-viewer', length: 1, name: 'Chrome PDF Plugin' }],
|
|
27
|
-
});
|
|
28
|
-
Object.defineProperty(navigator, 'languages', {
|
|
29
|
-
// 添加语言
|
|
30
|
-
get: () => ['zh-CN', 'zh', 'en'],
|
|
31
|
-
});
|
|
32
|
-
const originalQuery = window.navigator.permissions.query; // notification伪装
|
|
33
|
-
window.navigator.permissions.query = (parameters) => (parameters.name === 'notifications' ? Promise.resolve({ state: Notification.permission }) : originalQuery(parameters));
|
|
10
|
+
await page.setRequestInterception(true);
|
|
11
|
+
page.on('request', (request) => {
|
|
12
|
+
request.resourceType() === 'document' || request.resourceType() === 'script' ? request.continue() : request.abort();
|
|
34
13
|
});
|
|
35
|
-
|
|
36
14
|
await page.goto(baseIndexUrl, {
|
|
37
|
-
waitUntil: '
|
|
15
|
+
waitUntil: 'networkidle2',
|
|
38
16
|
});
|
|
39
17
|
const content = await page.content();
|
|
40
18
|
await browser.close();
|
|
@@ -43,14 +21,15 @@ module.exports = async (ctx) => {
|
|
|
43
21
|
const out = $('.notice p')
|
|
44
22
|
.map((index, item) => {
|
|
45
23
|
item = $(item);
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
24
|
+
const now = dayjs();
|
|
25
|
+
let date = dayjs(now.year() + '-' + item.find('a.date').text());
|
|
26
|
+
if (now < date) {
|
|
27
|
+
date = dayjs(now.year() - 1 + '-' + item.find('a.date').text());
|
|
49
28
|
}
|
|
50
29
|
return {
|
|
51
30
|
title: item.find('a[href]').text(),
|
|
52
31
|
link: host + item.find('a[href]').attr('href'),
|
|
53
|
-
pubDate: date,
|
|
32
|
+
pubDate: parseDate(date),
|
|
54
33
|
};
|
|
55
34
|
})
|
|
56
35
|
.get();
|
package/lib/routes/weibo/user.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const querystring = require('
|
|
1
|
+
const querystring = require('query-string');
|
|
2
2
|
const got = require('@/utils/got');
|
|
3
3
|
const weiboUtils = require('./utils');
|
|
4
4
|
const config = require('@/config').value;
|
|
@@ -62,22 +62,14 @@ module.exports = async (ctx) => {
|
|
|
62
62
|
false
|
|
63
63
|
);
|
|
64
64
|
|
|
65
|
-
let
|
|
66
|
-
|
|
67
|
-
const resultItem = await Promise.all(
|
|
65
|
+
let resultItems = await Promise.all(
|
|
68
66
|
cards
|
|
69
|
-
.
|
|
67
|
+
.filter((item) => item.mblog)
|
|
70
68
|
.map(async (item) => {
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
if (!item.mblog) {
|
|
78
|
-
return; // drop
|
|
79
|
-
}
|
|
80
|
-
|
|
69
|
+
// TODO: unify cache key and let weiboUtils.getShowData() handle the cache? It seems safe to do so.
|
|
70
|
+
// Need more investigation, pending for now since the current version works fine.
|
|
71
|
+
// TODO: getShowData() on demand? The API seems to return most things we need since 2022/05/21.
|
|
72
|
+
// Need more investigation, pending for now since the current version works fine.
|
|
81
73
|
const key = 'weibo:user:' + item.mblog.bid;
|
|
82
74
|
const data = await ctx.cache.tryGet(key, () => weiboUtils.getShowData(uid, item.mblog.bid));
|
|
83
75
|
|
|
@@ -92,20 +84,10 @@ module.exports = async (ctx) => {
|
|
|
92
84
|
item.mblog.created_at = timezone(item.mblog.created_at, +8);
|
|
93
85
|
}
|
|
94
86
|
|
|
95
|
-
// drop too old pinned weibo, otherwise preserve it
|
|
96
|
-
if (!item.mblog.title || item.mblog.title.text !== '置顶') {
|
|
97
|
-
if (!earliestDate || (item.mblog.created_at && earliestDate > item.mblog.created_at)) {
|
|
98
|
-
earliestDate = item.mblog.created_at;
|
|
99
|
-
}
|
|
100
|
-
} else {
|
|
101
|
-
if (earliestDate && item.mblog.created_at && earliestDate > item.mblog.created_at) {
|
|
102
|
-
return;
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
|
|
106
87
|
// 转发的长微博处理
|
|
107
88
|
const retweet = item.mblog.retweeted_status;
|
|
108
89
|
if (retweet && retweet.isLongText) {
|
|
90
|
+
// TODO: unify cache key and ...
|
|
109
91
|
const retweetData = await ctx.cache.tryGet(`weibo:retweeted:${retweet.user.id}:${retweet.bid}`, () => weiboUtils.getShowData(retweet.user.id, retweet.bid));
|
|
110
92
|
if (retweetData !== undefined && retweetData.text) {
|
|
111
93
|
item.mblog.retweeted_status.text = retweetData.text;
|
|
@@ -149,15 +131,25 @@ module.exports = async (ctx) => {
|
|
|
149
131
|
link,
|
|
150
132
|
pubDate,
|
|
151
133
|
author: item.mblog.user.screen_name,
|
|
134
|
+
isPinned: item.profile_type_id?.startsWith('proweibotop'),
|
|
152
135
|
};
|
|
153
136
|
})
|
|
154
137
|
);
|
|
155
138
|
|
|
139
|
+
// remove pinned weibo if they are too old (older than all the rest weibo)
|
|
140
|
+
// the character of pinned weibo is `card.profile_type_id.startsWith('proweibotop')`
|
|
141
|
+
// there can be 1 or 2 (WHAT A FANTASTIC BRAIN THE PM HAS?) pinned weibo at the same time
|
|
142
|
+
const pinnedItems = resultItems.filter((item) => item.isPinned);
|
|
143
|
+
const ordinaryItems = resultItems.filter((item) => !item.isPinned);
|
|
144
|
+
if (pinnedItems.length > 0 && ordinaryItems.length > 0 && Math.max(...pinnedItems.map((i) => i.pubDate).filter(Boolean)) < Math.min(...ordinaryItems.map((i) => i.pubDate).filter(Boolean))) {
|
|
145
|
+
resultItems = ordinaryItems;
|
|
146
|
+
}
|
|
147
|
+
|
|
156
148
|
ctx.state.data = {
|
|
157
149
|
title: `${name}的微博`,
|
|
158
|
-
link: `
|
|
150
|
+
link: `https://weibo.com/${uid}/`,
|
|
159
151
|
description,
|
|
160
152
|
image: profileImageUrl,
|
|
161
|
-
item:
|
|
153
|
+
item: resultItems,
|
|
162
154
|
};
|
|
163
155
|
};
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The alogrithm is well-explained in https://andrewlock.net/simple-obfuscation-of-email-addresses-using-javascript/
|
|
3
|
+
*/
|
|
4
|
+
module.exports = {
|
|
5
|
+
// eslint-disable-next-line lines-around-comment
|
|
6
|
+
/**
|
|
7
|
+
* Returns decoded email address using CloudFlare's email address obfuscation.
|
|
8
|
+
* @param {String} encoded - encoded email, (`cfemail` attribute in `__cf_email__` tag)
|
|
9
|
+
* @returns decoded email address
|
|
10
|
+
*/
|
|
11
|
+
decodeCFEmail: (encoded) => {
|
|
12
|
+
const parseHex = (string, position) => parseInt(string.substr(position, 2), 16);
|
|
13
|
+
let decoded = '';
|
|
14
|
+
const key = parseHex(encoded, 0);
|
|
15
|
+
for (let position = 2; position < encoded.length; position += 2) {
|
|
16
|
+
const byte = parseHex(encoded, position) ^ key;
|
|
17
|
+
decoded += String.fromCharCode(byte);
|
|
18
|
+
}
|
|
19
|
+
return decoded;
|
|
20
|
+
},
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Returns CloudFlare protected email address.
|
|
24
|
+
* @param {String} email - email in plaintext
|
|
25
|
+
* @returns obfuscated email
|
|
26
|
+
*/
|
|
27
|
+
encodeCFEmail: (email) => {
|
|
28
|
+
const key = Math.floor(Math.random() * 256);
|
|
29
|
+
let encoded = ('0' + key.toString(16)).slice(-2);
|
|
30
|
+
for (let position = 0; position < email.length; position++) {
|
|
31
|
+
const byte = email.charCodeAt(position) ^ key;
|
|
32
|
+
encoded += ('0' + byte.toString(16)).slice(-2);
|
|
33
|
+
}
|
|
34
|
+
return encoded;
|
|
35
|
+
},
|
|
36
|
+
};
|