rsshub 1.0.0-master.fb68956 → 1.0.0-master.fbabfc2
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 +1 -0
- package/lib/middleware/parameter.js +8 -1
- package/lib/middleware/template.js +29 -11
- package/lib/router.js +39 -39
- package/lib/routes/bandisoft/index.js +4 -0
- package/lib/routes/biobio/others.js +5 -0
- package/lib/routes/blogs/hedwig.js +4 -0
- package/lib/routes/blogs/wordpress.js +5 -0
- package/lib/routes/booth-pm/shop.js +4 -1
- package/lib/routes/craigslist/search.js +5 -0
- package/lib/routes/engadget/home.js +4 -0
- package/lib/routes/fanbox/main.js +4 -1
- package/lib/routes/fashionnetwork/headline.js +4 -0
- package/lib/routes/fashionnetwork/news.js +5 -0
- package/lib/routes/gitlab/common.js +5 -0
- package/lib/routes/gitlab/explore.js +5 -0
- package/lib/routes/gitlab/release.js +5 -0
- package/lib/routes/gitlab/tag.js +5 -0
- package/lib/routes/hexo/fluid.js +4 -0
- package/lib/routes/hexo/next.js +4 -0
- package/lib/routes/hexo/yilia.js +4 -0
- package/lib/routes/mastodon/account_id.js +4 -0
- package/lib/routes/mastodon/timeline_local.js +4 -0
- package/lib/routes/mastodon/timeline_remote.js +4 -0
- package/lib/routes/mastodon/utils.js +3 -0
- package/lib/routes/pornhub/category_url.js +4 -0
- package/lib/routes/pornhub/model.js +4 -0
- package/lib/routes/pornhub/pornstar.js +4 -0
- package/lib/routes/pornhub/users.js +4 -0
- package/lib/routes/touhougarakuta/index.js +3 -0
- package/lib/routes/weforum/report.js +10 -6
- package/lib/routes/ziroom/room.js +5 -0
- package/lib/utils/render.js +46 -0
- package/lib/utils/valid-host.js +16 -0
- package/lib/v2/18comic/album.js +2 -1
- package/lib/v2/18comic/blogs.js +2 -1
- package/lib/v2/18comic/radar.js +39 -29
- package/lib/v2/18comic/utils.js +6 -10
- package/lib/v2/19lou/index.js +4 -0
- package/lib/v2/91porn/author.js +2 -0
- package/lib/v2/91porn/index.js +2 -0
- package/lib/v2/91porn/utils.js +12 -0
- package/lib/v2/baai/comments.js +35 -0
- package/lib/v2/baai/events.js +35 -0
- package/lib/v2/baai/hub.js +60 -0
- package/lib/v2/baai/maintainer.js +5 -0
- package/lib/v2/baai/radar.js +31 -0
- package/lib/v2/baai/router.js +7 -0
- package/lib/v2/baai/utils.js +33 -0
- package/lib/v2/baidu/maintainer.js +1 -0
- package/lib/v2/baidu/radar.js +8 -0
- package/lib/v2/baidu/router.js +1 -0
- package/lib/v2/baidu/templates/top.art +9 -0
- package/lib/v2/baidu/top.js +34 -0
- package/lib/v2/bendibao/news.js +4 -0
- package/lib/v2/bioone/featured.js +10 -8
- package/lib/v2/bioone/journal.js +11 -8
- package/lib/v2/biquge/index.js +21 -0
- package/lib/v2/bitmovin/blog.js +15 -21
- package/lib/v2/bjp/apod.js +43 -0
- package/lib/v2/bjp/maintainer.js +3 -0
- package/lib/v2/bjp/radar.js +13 -0
- package/lib/v2/bjp/router.js +3 -0
- package/lib/v2/bjsk/index.js +52 -0
- package/lib/v2/bjsk/maintainer.js +3 -0
- package/lib/v2/bjsk/radar.js +13 -0
- package/lib/v2/bjsk/router.js +3 -0
- package/lib/v2/bjwxdxh/index.js +52 -0
- package/lib/v2/bjwxdxh/maintainer.js +3 -0
- package/lib/v2/bjwxdxh/radar.js +13 -0
- package/lib/v2/bjwxdxh/router.js +3 -0
- package/lib/v2/blockbeats/index.js +28 -35
- package/lib/v2/blockbeats/maintainer.js +1 -1
- package/lib/v2/blockbeats/radar.js +3 -3
- package/lib/v2/bloomberg/authors.js +52 -0
- package/lib/v2/bloomberg/index.js +1 -10
- package/lib/v2/bloomberg/maintainer.js +1 -0
- package/lib/v2/bloomberg/radar.js +9 -3
- package/lib/v2/bloomberg/router.js +1 -0
- package/lib/v2/bloomberg/utils.js +14 -2
- package/lib/v2/btzj/index.js +6 -1
- package/lib/v2/byteclicks/index.js +22 -0
- package/lib/v2/byteclicks/maintainer.js +4 -0
- package/lib/v2/byteclicks/radar.js +19 -0
- package/lib/v2/byteclicks/router.js +4 -0
- package/lib/v2/byteclicks/tag.js +30 -0
- package/lib/v2/byteclicks/utils.js +13 -0
- package/lib/v2/caixin/article.js +27 -0
- package/lib/v2/caixin/blog.js +58 -0
- package/lib/v2/caixin/category.js +56 -0
- package/lib/{routes → v2}/caixin/database.js +14 -14
- package/lib/v2/caixin/k.js +40 -0
- package/lib/v2/caixin/latest.js +50 -0
- package/lib/v2/caixin/maintainer.js +8 -0
- package/lib/v2/caixin/radar.js +43 -0
- package/lib/v2/caixin/router.js +8 -0
- package/lib/v2/caixin/templates/article.art +38 -0
- package/lib/v2/caixin/utils.js +52 -0
- package/lib/v2/cast/index.js +74 -0
- package/lib/v2/cast/maintainer.js +3 -0
- package/lib/v2/cast/radar.js +13 -0
- package/lib/v2/cast/router.js +3 -0
- package/lib/v2/chaincatcher/home.js +50 -0
- package/lib/v2/chaincatcher/maintainer.js +4 -0
- package/lib/v2/chaincatcher/news.js +40 -0
- package/lib/v2/chaincatcher/radar.js +19 -0
- package/lib/v2/chaincatcher/router.js +4 -0
- package/lib/v2/chaincatcher/templates/home.art +4 -0
- package/lib/v2/clickme/index.js +56 -0
- package/lib/v2/clickme/maintainer.js +3 -0
- package/lib/v2/clickme/radar.js +21 -0
- package/lib/v2/clickme/router.js +3 -0
- package/lib/v2/cnbc/rss.js +1 -1
- package/lib/v2/cnjxol/index.js +3 -0
- package/lib/v2/coindesk/index.js +36 -0
- package/lib/v2/coindesk/maintainer.js +3 -0
- package/lib/v2/coindesk/radar.js +13 -0
- package/lib/v2/coindesk/router.js +3 -0
- package/lib/v2/coolapk/utils.js +3 -2
- package/lib/v2/copymanga/comic.js +110 -0
- package/lib/v2/copymanga/maintainer.js +3 -0
- package/lib/v2/copymanga/radar.js +19 -0
- package/lib/v2/copymanga/router.js +3 -0
- package/lib/v2/copymanga/templates/comic.art +4 -0
- package/lib/v2/crac/index.js +46 -0
- package/lib/v2/crac/maintainer.js +3 -0
- package/lib/v2/crac/radar.js +13 -0
- package/lib/v2/crac/router.js +3 -0
- package/lib/v2/cw/author.js +18 -0
- package/lib/v2/cw/maintainer.js +1 -0
- package/lib/v2/cw/master.js +6 -19
- package/lib/v2/cw/radar.js +6 -0
- package/lib/v2/cw/router.js +1 -0
- package/lib/v2/cw/sub.js +6 -19
- package/lib/v2/cw/today.js +6 -15
- package/lib/v2/cw/utils.js +78 -20
- package/lib/{routes → v2}/dlsite/campaign.js +22 -24
- package/lib/v2/dlsite/maintainer.js +4 -0
- package/lib/{routes → v2}/dlsite/new.js +27 -28
- package/lib/v2/dlsite/radar.js +15 -0
- package/lib/v2/dlsite/router.js +4 -0
- package/lib/v2/dmzj/maintainer.js +3 -0
- package/lib/v2/dmzj/news.js +26 -0
- package/lib/v2/dmzj/radar.js +67 -0
- package/lib/v2/dmzj/router.js +3 -0
- package/lib/v2/douban/other/weekly_best.js +11 -4
- package/lib/v2/douban/templates/weekly_best.art +10 -0
- package/lib/v2/dut/index.js +4 -0
- package/lib/v2/eagle/blog.js +6 -2
- package/lib/v2/economist/espresso.js +55 -25
- package/lib/v2/economist/global-business-review.js +86 -0
- package/lib/v2/economist/maintainer.js +1 -0
- package/lib/v2/economist/radar.js +11 -0
- package/lib/v2/economist/router.js +1 -0
- package/lib/v2/ehentai/ehapi.js +10 -5
- package/lib/v2/ehentai/favorites.js +2 -2
- package/lib/v2/ehentai/search.js +2 -2
- package/lib/v2/ehentai/tag.js +1 -1
- package/lib/v2/eleduck/jobs.js +38 -0
- package/lib/v2/eleduck/maintainer.js +4 -0
- package/lib/v2/eleduck/posts.js +41 -0
- package/lib/v2/eleduck/radar.js +25 -0
- package/lib/v2/eleduck/router.js +4 -0
- package/lib/v2/eprice/rss.js +8 -16
- package/lib/v2/eprice/templates/image.art +4 -1
- package/lib/v2/famitsu/category.js +62 -0
- package/lib/v2/famitsu/maintainer.js +3 -0
- package/lib/v2/famitsu/radar.js +13 -0
- package/lib/v2/famitsu/router.js +3 -0
- package/lib/v2/ff14/ff14_global.js +5 -0
- package/lib/v2/fjksbm/index.js +53 -0
- package/lib/v2/fjksbm/maintainer.js +3 -0
- package/lib/v2/fjksbm/radar.js +13 -0
- package/lib/v2/fjksbm/router.js +3 -0
- package/lib/v2/gamme/category.js +4 -0
- package/lib/v2/gamme/tag.js +4 -0
- package/lib/v2/gelonghui/hot-article.js +33 -0
- package/lib/v2/gelonghui/live.js +31 -0
- package/lib/v2/gelonghui/radar.js +12 -0
- package/lib/v2/gelonghui/router.js +2 -0
- package/lib/v2/gelonghui/templates/live.art +7 -0
- package/lib/v2/gelonghui/utils.js +6 -0
- package/lib/v2/github/maintainer.js +1 -0
- package/lib/v2/github/radar.js +35 -29
- package/lib/v2/github/router.js +1 -0
- package/lib/v2/github/wiki.js +32 -0
- package/lib/v2/google/maintainer.js +1 -0
- package/lib/v2/google/news.js +48 -66
- package/lib/v2/google/router.js +1 -0
- package/lib/v2/google/templates/news.art +5 -0
- package/lib/v2/gov/maintainer.js +1 -0
- package/lib/v2/gov/radar.js +11 -0
- package/lib/v2/gov/router.js +1 -0
- package/lib/v2/gov/wuhan/whyw.js +44 -0
- package/lib/v2/gq/maintainer.js +3 -0
- package/lib/v2/gq/radar.js +13 -0
- package/lib/v2/gq/router.js +3 -0
- package/lib/v2/gq/templates/embed-article.art +1 -0
- package/lib/v2/gq/templates/embed-product.art +4 -0
- package/lib/v2/gq/templates/img.art +6 -0
- package/lib/v2/gq/templates/tw.art +3 -0
- package/lib/v2/gq/templates/videoObject.art +6 -0
- package/lib/v2/gq/templates/youtube.art +3 -0
- package/lib/v2/gq/tw/index.js +165 -0
- package/lib/v2/guandian/index.js +37 -0
- package/lib/v2/guandian/maintainer.js +3 -0
- package/lib/v2/guandian/radar.js +13 -0
- package/lib/v2/guandian/router.js +3 -0
- package/lib/v2/gumroad/index.js +4 -0
- package/lib/v2/hackmd/maintainer.js +3 -0
- package/lib/v2/hackmd/profile.js +24 -0
- package/lib/v2/hackmd/radar.js +13 -0
- package/lib/v2/hackmd/router.js +3 -0
- package/lib/v2/hellogithub/maintainer.js +1 -1
- package/lib/v2/hellogithub/volume.js +13 -12
- package/lib/v2/hljucm/maintainer.js +3 -0
- package/lib/v2/hljucm/radar.js +13 -0
- package/lib/v2/hljucm/router.js +3 -0
- package/lib/v2/hljucm/yjsy.js +56 -0
- package/lib/v2/hotukdeals/hottest.js +25 -0
- package/lib/v2/hotukdeals/maintainer.js +1 -0
- package/lib/v2/hotukdeals/radar.js +6 -0
- package/lib/v2/hotukdeals/router.js +1 -0
- package/lib/v2/huanqiu/index.js +5 -0
- package/lib/v2/huxiu/article.js +14 -11
- package/lib/v2/huxiu/author.js +11 -20
- package/lib/v2/huxiu/briefColumn.js +28 -38
- package/lib/v2/huxiu/collection.js +20 -15
- package/lib/v2/huxiu/moment.js +1 -2
- package/lib/v2/huxiu/search.js +19 -7
- package/lib/v2/huxiu/tag.js +17 -10
- package/lib/v2/huxiu/templates/brief.art +22 -0
- package/lib/v2/huxiu/templates/img.art +3 -0
- package/lib/v2/huxiu/templates/video.art +7 -0
- package/lib/v2/huxiu/utils.js +137 -52
- package/lib/v2/iiilab/index.js +24 -0
- package/lib/v2/iiilab/maintainer.js +3 -0
- package/lib/v2/iiilab/radar.js +13 -0
- package/lib/v2/iiilab/router.js +3 -0
- package/lib/v2/ikea/cn/family_offers.js +70 -0
- package/lib/v2/ikea/cn/low_price.js +22 -0
- package/lib/v2/ikea/cn/new.js +39 -0
- package/lib/v2/ikea/cn/utils.js +42 -0
- package/lib/v2/ikea/gb/new.js +54 -0
- package/lib/v2/ikea/gb/offer.js +69 -0
- package/lib/v2/ikea/maintainer.js +7 -0
- package/lib/v2/ikea/radar.js +42 -0
- package/lib/v2/ikea/router.js +7 -0
- package/lib/v2/ikea/templates/cn/product.art +14 -0
- package/lib/v2/ikea/templates/new.art +7 -0
- package/lib/v2/ikea/templates/offer.art +3 -0
- package/lib/v2/inewsweek/index.js +53 -0
- package/lib/v2/inewsweek/maintainer.js +3 -0
- package/lib/v2/inewsweek/radar.js +13 -0
- package/lib/v2/inewsweek/router.js +3 -0
- package/lib/v2/iqiyi/album.js +62 -0
- package/lib/v2/iqiyi/maintainer.js +4 -0
- package/lib/v2/iqiyi/radar.js +24 -0
- package/lib/v2/iqiyi/router.js +4 -0
- package/lib/v2/iqiyi/templates/album.art +1 -0
- package/lib/{routes → v2}/iqiyi/video.js +0 -0
- package/lib/v2/itch/devlog.js +4 -0
- package/lib/v2/iwara/index.js +1 -0
- package/lib/v2/javbus/index.js +12 -2
- package/lib/v2/javdb/utils.js +6 -0
- package/lib/v2/jike/maintainer.js +1 -1
- package/lib/v2/jike/router.js +1 -1
- package/lib/v2/jike/topic.js +1 -1
- package/lib/v2/jike/user.js +22 -12
- package/lib/v2/jike/utils.js +4 -2
- package/lib/v2/ke/maintainer.js +3 -0
- package/lib/v2/ke/radar.js +13 -0
- package/lib/v2/ke/results.js +36 -0
- package/lib/v2/ke/router.js +3 -0
- package/lib/v2/kimlaw/maintainer.js +3 -0
- package/lib/v2/kimlaw/radar.js +13 -0
- package/lib/v2/kimlaw/router.js +3 -0
- package/lib/v2/kimlaw/thesis.js +44 -0
- package/lib/v2/layoffs/index.js +104 -0
- package/lib/v2/layoffs/maintainer.js +3 -0
- package/lib/v2/layoffs/radar.js +13 -0
- package/lib/v2/layoffs/router.js +3 -0
- package/lib/v2/learnblockchain/maintainer.js +3 -0
- package/lib/v2/learnblockchain/posts.js +43 -0
- package/lib/v2/learnblockchain/radar.js +19 -0
- package/lib/v2/learnblockchain/router.js +3 -0
- package/lib/v2/linkedin/cn/index.js +13 -0
- package/lib/v2/linkedin/cn/renderer.js +179 -0
- package/lib/v2/linkedin/cn/utils.js +122 -0
- package/lib/v2/linkedin/jobs.js +44 -0
- package/lib/v2/linkedin/maintainer.js +4 -0
- package/lib/v2/linkedin/models.js +15 -0
- package/lib/v2/linkedin/radar.js +36 -0
- package/lib/v2/linkedin/router.js +4 -0
- package/lib/v2/linkedin/templates/cn/posting.art +25 -0
- package/lib/v2/linkedin/utils.js +121 -0
- package/lib/v2/lofter/user.js +6 -2
- package/lib/v2/mclaren/index.js +95 -0
- package/lib/v2/mclaren/maintainer.js +3 -0
- package/lib/v2/mclaren/radar.js +26 -0
- package/lib/v2/mclaren/router.js +3 -0
- package/lib/v2/mclaren/templates/desc.art +6 -0
- package/lib/v2/minecraft/maintainer.js +3 -0
- package/lib/v2/minecraft/radar.js +13 -0
- package/lib/v2/minecraft/router.js +3 -0
- package/lib/{routes → v2}/minecraft/version.js +1 -1
- package/lib/v2/mingpao/index.js +28 -33
- package/lib/v2/mingpao/templates/description.art +1 -1
- package/lib/v2/mingpao/templates/fancybox.art +6 -2
- package/lib/v2/mirror/index.js +4 -1
- package/lib/v2/mixcloud/index.js +130 -0
- package/lib/v2/mixcloud/maintainer.js +3 -0
- package/lib/v2/mixcloud/queries.js +1520 -0
- package/lib/v2/mixcloud/radar.js +37 -0
- package/lib/v2/mixcloud/router.js +3 -0
- package/lib/v2/myfigurecollection/activity.js +5 -0
- package/lib/v2/myfigurecollection/index.js +4 -0
- package/lib/v2/mysql/release.js +9 -2
- package/lib/v2/nikkei-cn/index.js +4 -0
- package/lib/v2/people/index.js +4 -0
- package/lib/v2/pixiv/novels.js +32 -23
- package/lib/v2/pku/ss/admission.js +4 -42
- package/lib/v2/pku/ss/common.js +37 -0
- package/lib/v2/pku/ss/notice.js +4 -42
- package/lib/v2/pku/ss/pg_admin.js +4 -42
- package/lib/v2/qoo-app/apps/card.js +38 -0
- package/lib/v2/qoo-app/apps/comment.js +43 -0
- package/lib/v2/qoo-app/apps/note.js +47 -0
- package/lib/v2/qoo-app/apps/post.js +51 -0
- package/lib/v2/qoo-app/maintainer.js +11 -0
- package/lib/v2/qoo-app/news.js +41 -0
- package/lib/v2/qoo-app/notes/note.js +43 -0
- package/lib/v2/qoo-app/notes/topic.js +20 -0
- package/lib/v2/qoo-app/notes/user.js +20 -0
- package/lib/v2/qoo-app/radar.js +73 -0
- package/lib/v2/qoo-app/router.js +11 -0
- package/lib/v2/qoo-app/templates/comment.art +3 -0
- package/lib/v2/qoo-app/templates/note.art +5 -0
- package/lib/v2/qoo-app/user/appComment.js +41 -0
- package/lib/v2/qoo-app/utils.js +57 -0
- package/lib/v2/ruancan/category.js +8 -0
- package/lib/v2/ruancan/index.js +3 -55
- package/lib/v2/ruancan/maintainer.js +3 -3
- package/lib/v2/ruancan/radar.js +12 -6
- package/lib/v2/ruancan/router.js +4 -1
- package/lib/v2/ruancan/search.js +8 -0
- package/lib/v2/ruancan/user.js +8 -0
- package/lib/v2/ruancan/utils.js +66 -0
- package/lib/v2/scitation/journal.js +4 -0
- package/lib/v2/scitation/section.js +4 -0
- package/lib/v2/shiep/index.js +91 -0
- package/lib/v2/shiep/maintainer.js +3 -0
- package/lib/v2/shiep/radar.js +181 -0
- package/lib/v2/shiep/router.js +3 -0
- package/lib/v2/shiep/templates/description.art +1 -0
- package/lib/v2/shoppingdesign/maintainer.js +3 -0
- package/lib/v2/shoppingdesign/posts.js +43 -0
- package/lib/v2/shoppingdesign/radar.js +13 -0
- package/lib/v2/shoppingdesign/router.js +3 -0
- package/lib/v2/skysports/maintainer.js +3 -0
- package/lib/{routes → v2}/skysports/news.js +10 -8
- package/lib/v2/skysports/radar.js +13 -0
- package/lib/v2/skysports/router.js +3 -0
- package/lib/v2/smzdm/haowen_fenlei.js +12 -6
- package/lib/v2/solidot/main.js +5 -0
- package/lib/v2/telegram/channel.js +24 -4
- package/lib/v2/test/index.js +46 -0
- package/lib/v2/thepaper/channel.js +11 -5
- package/lib/v2/thepaper/list.js +11 -5
- package/lib/v2/thepaper/utils.js +2 -3
- package/lib/v2/twitter/utils.js +28 -0
- package/lib/v2/typora/changelog-dev.js +31 -0
- package/lib/v2/typora/changelog.js +40 -0
- package/lib/v2/typora/maintainer.js +4 -0
- package/lib/v2/typora/radar.js +21 -0
- package/lib/v2/typora/router.js +4 -0
- package/lib/v2/uptimerobot/maintainer.js +3 -0
- package/lib/v2/uptimerobot/radar.js +13 -0
- package/lib/v2/uptimerobot/router.js +3 -0
- package/lib/v2/uptimerobot/rss.js +126 -0
- package/lib/v2/uptimerobot/templates/rss.art +20 -0
- package/lib/v2/vocus/maintainer.js +4 -0
- package/lib/v2/vocus/publication.js +42 -0
- package/lib/v2/vocus/radar.js +19 -0
- package/lib/v2/vocus/router.js +4 -0
- package/lib/v2/vocus/user.js +43 -0
- package/lib/v2/vocus/utils.js +51 -0
- package/lib/v2/wechat/maintainer.js +0 -1
- package/lib/v2/wechat/radar.js +0 -11
- package/lib/v2/wechat/router.js +0 -1
- package/lib/v2/wnacg/index.js +110 -0
- package/lib/v2/wnacg/maintainer.js +5 -0
- package/lib/v2/wnacg/radar.js +25 -0
- package/lib/v2/wnacg/router.js +5 -0
- package/lib/v2/wnacg/templates/manga.art +9 -0
- package/lib/v2/woshipm/bookmarks.js +34 -0
- package/lib/v2/woshipm/latest.js +27 -0
- package/lib/v2/woshipm/maintainer.js +7 -0
- package/lib/v2/woshipm/popular.js +33 -0
- package/lib/v2/woshipm/radar.js +39 -0
- package/lib/v2/woshipm/router.js +7 -0
- package/lib/{routes → v2}/woshipm/user_article.js +9 -15
- package/lib/v2/woshipm/utils.js +21 -0
- package/lib/v2/woshipm/wen.js +36 -0
- package/lib/v2/x6d/index.js +59 -0
- package/lib/v2/x6d/maintainer.js +3 -0
- package/lib/v2/x6d/radar.js +13 -0
- package/lib/v2/x6d/router.js +3 -0
- package/lib/v2/xaufe/jiaowu.js +72 -0
- package/lib/v2/xaufe/maintainer.js +3 -0
- package/lib/v2/xaufe/radar.js +11 -0
- package/lib/v2/xaufe/router.js +3 -0
- package/lib/v2/xiaomiyoupin/crowdfunding.js +43 -0
- package/lib/v2/xiaomiyoupin/latest.js +15 -0
- package/lib/v2/xiaomiyoupin/maintainer.js +4 -0
- package/lib/v2/xiaomiyoupin/radar.js +19 -0
- package/lib/v2/xiaomiyoupin/router.js +4 -0
- package/lib/v2/xiaomiyoupin/templates/goods.art +27 -0
- package/lib/v2/xiaomiyoupin/utils.js +21 -0
- package/lib/v2/xunhupay/index.js +24 -0
- package/lib/v2/xunhupay/maintainer.js +3 -0
- package/lib/v2/xunhupay/radar.js +13 -0
- package/lib/v2/xunhupay/router.js +3 -0
- package/lib/v2/yahoo/maintainer.js +3 -0
- package/lib/{routes/yahoo-news → v2/yahoo/news}/index.js +10 -8
- package/lib/v2/yahoo/radar.js +13 -0
- package/lib/v2/yahoo/router.js +3 -0
- package/lib/v2/youtube/user.js +15 -3
- package/lib/v2/yxrb/home.js +61 -0
- package/lib/v2/yxrb/maintainer.js +3 -0
- package/lib/v2/yxrb/radar.js +13 -0
- package/lib/v2/yxrb/router.js +3 -0
- package/lib/v2/zaozao/article.js +36 -0
- package/lib/v2/zaozao/maintainer.js +3 -0
- package/lib/v2/zaozao/radar.js +13 -0
- package/lib/v2/zaozao/router.js +3 -0
- package/lib/v2/zcmu/jwc/index.js +41 -0
- package/lib/v2/zcmu/maintainer.js +4 -0
- package/lib/v2/zcmu/radar.js +87 -0
- package/lib/v2/zcmu/router.js +4 -0
- package/lib/v2/zcmu/yxy/index.js +42 -0
- package/lib/v2/zcool/user.js +4 -0
- package/lib/v2/zhiy/letter.js +34 -0
- package/lib/v2/zhiy/maintainer.js +4 -0
- package/lib/v2/zhiy/post.js +69 -0
- package/lib/v2/zhiy/radar.js +19 -0
- package/lib/v2/zhiy/router.js +4 -0
- package/lib/v2/zhiy/templates/post.art +12 -0
- package/lib/v2/zhiy/utils.js +13 -0
- package/lib/v2/zhubai/index.js +4 -0
- package/package.json +20 -20
- package/lib/routes/baidu/topwords.js +0 -38
- package/lib/routes/bjp/apod.js +0 -48
- package/lib/routes/caixin/article.js +0 -46
- package/lib/routes/caixin/blog.js +0 -58
- package/lib/routes/caixin/category.js +0 -44
- package/lib/routes/caixin/latest.js +0 -75
- package/lib/routes/caixin/yxnews.js +0 -30
- package/lib/routes/clickme/index.js +0 -76
- package/lib/routes/copymanga/comic.js +0 -74
- package/lib/routes/eleduck/jobs.js +0 -38
- package/lib/routes/gq/tw/index.js +0 -66
- package/lib/routes/ikea/uk/new.js +0 -20
- package/lib/routes/ikea/uk/offer.js +0 -64
- package/lib/routes/iqiyi/dongman.js +0 -42
- package/lib/routes/mi/youpin/crowdfunding.js +0 -39
- package/lib/routes/mi/youpin/new.js +0 -26
- package/lib/routes/ssmh/category.js +0 -50
- package/lib/routes/ssmh/index.js +0 -32
- package/lib/routes/typora/changelog-dev.js +0 -35
- package/lib/routes/typora/changelog.js +0 -60
- package/lib/routes/universities/shiep/index.js +0 -95
- package/lib/routes/vocus/publication.js +0 -19
- package/lib/routes/vocus/utils.js +0 -29
- package/lib/routes/woshipm/bookmarks.js +0 -45
- package/lib/routes/woshipm/latest.js +0 -45
- package/lib/routes/woshipm/popular.js +0 -38
- package/lib/routes/woshipm/wen.js +0 -39
- package/lib/routes/x6d/index.js +0 -64
- package/lib/v2/eprice/templates/description.art +0 -1
- package/lib/v2/wechat/wemp.js +0 -58
package/lib/config.js
CHANGED
|
@@ -97,6 +97,7 @@ const calculateValue = () => {
|
|
|
97
97
|
feature: {
|
|
98
98
|
allow_user_hotlink_template: envs.ALLOW_USER_HOTLINK_TEMPLATE === 'true',
|
|
99
99
|
filter_regex_engine: envs.FILTER_REGEX_ENGINE || 're2',
|
|
100
|
+
allow_user_supply_unsafe_domain: envs.ALLOW_USER_SUPPLY_UNSAFE_DOMAIN === 'true',
|
|
100
101
|
},
|
|
101
102
|
suffix: envs.SUFFIX,
|
|
102
103
|
titleLengthLimit: parseInt(envs.TITLE_LENGTH_LIMIT) || 150,
|
|
@@ -139,6 +139,13 @@ module.exports = async (ctx, next) => {
|
|
|
139
139
|
});
|
|
140
140
|
|
|
141
141
|
item.description = $('body').html() + '' + (config.suffix || '');
|
|
142
|
+
|
|
143
|
+
if (item._extra?.links && $('.rsshub-quote').length) {
|
|
144
|
+
item._extra?.links?.map((e) => {
|
|
145
|
+
e.content_html = $.html($('.rsshub-quote'));
|
|
146
|
+
return e;
|
|
147
|
+
});
|
|
148
|
+
}
|
|
142
149
|
}
|
|
143
150
|
return item;
|
|
144
151
|
};
|
|
@@ -266,7 +273,7 @@ module.exports = async (ctx, next) => {
|
|
|
266
273
|
});
|
|
267
274
|
|
|
268
275
|
item.author = author || (parsed_result ? parsed_result.author : '');
|
|
269
|
-
item.description = parsed_result ? entities.decodeXML(parsed_result.content) : description;
|
|
276
|
+
item.description = parsed_result && parsed_result.content.length > 40 ? entities.decodeXML(parsed_result.content) : description;
|
|
270
277
|
});
|
|
271
278
|
await Promise.all(tasks);
|
|
272
279
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
const art = require('
|
|
1
|
+
const { art, json } = require('@/utils/render');
|
|
2
2
|
const path = require('path');
|
|
3
3
|
const config = require('@/config').value;
|
|
4
|
-
const typeRegex = /\.(atom|rss|debug\.json)$/;
|
|
4
|
+
const typeRegex = /\.(atom|rss|debug\.json|json)$/;
|
|
5
5
|
const { collapseWhitespace, convertDateToISO8601 } = require('@/utils/common-utils');
|
|
6
6
|
|
|
7
7
|
module.exports = async (ctx, next) => {
|
|
@@ -14,21 +14,25 @@ module.exports = async (ctx, next) => {
|
|
|
14
14
|
|
|
15
15
|
await next();
|
|
16
16
|
|
|
17
|
-
|
|
17
|
+
const outputType = ctx.state.type[1] || 'rss';
|
|
18
|
+
|
|
19
|
+
if (outputType === 'debug.json' && config.debugInfo) {
|
|
18
20
|
ctx.set({
|
|
19
21
|
'Content-Type': 'application/json; charset=UTF-8',
|
|
20
22
|
});
|
|
21
23
|
if (ctx.state.json) {
|
|
22
24
|
ctx.body = JSON.stringify(ctx.state.json, null, 4);
|
|
23
25
|
} else {
|
|
24
|
-
ctx.body = JSON.stringify({ message: 'plugin does not set json' });
|
|
26
|
+
ctx.body = JSON.stringify({ message: 'plugin does not set debug json' });
|
|
25
27
|
}
|
|
26
28
|
}
|
|
29
|
+
if (outputType === 'json') {
|
|
30
|
+
ctx.set({ 'Content-Type': 'application/feed+json; charset=UTF-8' });
|
|
31
|
+
}
|
|
27
32
|
|
|
28
33
|
if (!ctx.body) {
|
|
29
34
|
let template;
|
|
30
35
|
|
|
31
|
-
const outputType = ctx.state.type[1];
|
|
32
36
|
switch (outputType) {
|
|
33
37
|
case 'atom':
|
|
34
38
|
template = path.resolve(__dirname, '../views/atom.art');
|
|
@@ -60,7 +64,16 @@ module.exports = async (ctx, next) => {
|
|
|
60
64
|
}
|
|
61
65
|
}
|
|
62
66
|
|
|
63
|
-
item.author
|
|
67
|
+
if (typeof item.author === 'string') {
|
|
68
|
+
item.author = collapseWhitespace(item.author);
|
|
69
|
+
} else if (typeof item.author === 'object' && item.author !== null) {
|
|
70
|
+
for (const a of item.author) {
|
|
71
|
+
a.name = collapseWhitespace(a.name);
|
|
72
|
+
}
|
|
73
|
+
if (outputType !== 'json') {
|
|
74
|
+
item.author = item.author.map((a) => a.name).join(', ');
|
|
75
|
+
}
|
|
76
|
+
}
|
|
64
77
|
|
|
65
78
|
if (item.itunes_duration && ((typeof item.itunes_duration === 'string' && item.itunes_duration.indexOf(':') === -1) || (typeof item.itunes_duration === 'number' && !isNaN(item.itunes_duration)))) {
|
|
66
79
|
item.itunes_duration = +item.itunes_duration;
|
|
@@ -68,7 +81,7 @@ module.exports = async (ctx, next) => {
|
|
|
68
81
|
Math.floor(item.itunes_duration / 3600) + ':' + (Math.floor((item.itunes_duration % 3600) / 60) / 100).toFixed(2).slice(-2) + ':' + (((item.itunes_duration % 3600) % 60) / 100).toFixed(2).slice(-2);
|
|
69
82
|
}
|
|
70
83
|
|
|
71
|
-
if (outputType
|
|
84
|
+
if (outputType !== 'rss') {
|
|
72
85
|
item.pubDate = convertDateToISO8601(item.pubDate);
|
|
73
86
|
item.updated = convertDateToISO8601(item.updated);
|
|
74
87
|
}
|
|
@@ -86,10 +99,15 @@ module.exports = async (ctx, next) => {
|
|
|
86
99
|
};
|
|
87
100
|
if (config.isPackage) {
|
|
88
101
|
ctx.body = data;
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
102
|
+
return;
|
|
103
|
+
}
|
|
104
|
+
if (!template) {
|
|
105
|
+
return;
|
|
106
|
+
}
|
|
107
|
+
if (outputType !== 'json') {
|
|
108
|
+
ctx.body = art(template, data);
|
|
109
|
+
return;
|
|
93
110
|
}
|
|
111
|
+
ctx.body = json(data);
|
|
94
112
|
}
|
|
95
113
|
};
|
package/lib/router.js
CHANGED
|
@@ -176,8 +176,8 @@ router.get('/geektime/news', lazyloadRouteHandler('./routes/geektime/news'));
|
|
|
176
176
|
router.get('/qdaily/:type/:id', lazyloadRouteHandler('./routes/qdaily/index'));
|
|
177
177
|
|
|
178
178
|
// 爱奇艺
|
|
179
|
-
router.get('/iqiyi/dongman/:id', lazyloadRouteHandler('./routes/iqiyi/dongman'));
|
|
180
|
-
router.get('/iqiyi/user/video/:uid', lazyloadRouteHandler('./routes/iqiyi/video'));
|
|
179
|
+
// router.get('/iqiyi/dongman/:id', lazyloadRouteHandler('./routes/iqiyi/dongman'));
|
|
180
|
+
// router.get('/iqiyi/user/video/:uid', lazyloadRouteHandler('./routes/iqiyi/video'));
|
|
181
181
|
|
|
182
182
|
// 南方周末
|
|
183
183
|
router.get('/infzm/:id', lazyloadRouteHandler('./routes/infzm/news'));
|
|
@@ -288,11 +288,11 @@ router.get('/mihoyo/bh2/:type', lazyloadRouteHandler('./routes/mihoyo/bh2'));
|
|
|
288
288
|
// router.get('/cctv-special/:id?', lazyloadRouteHandler('./routes/cctv/special'));
|
|
289
289
|
|
|
290
290
|
// 财新博客
|
|
291
|
-
router.get('/caixin/blog/:column', lazyloadRouteHandler('./routes/caixin/blog'));
|
|
292
|
-
router.get('/caixin/article', lazyloadRouteHandler('./routes/caixin/article'));
|
|
293
|
-
router.get('/caixin/database', lazyloadRouteHandler('./routes/caixin/database'));
|
|
294
|
-
router.get('/caixin/yxnews', lazyloadRouteHandler('./routes/caixin/yxnews'));
|
|
295
|
-
router.get('/caixin/:column/:category', lazyloadRouteHandler('./routes/caixin/category'));
|
|
291
|
+
// router.get('/caixin/blog/:column', lazyloadRouteHandler('./routes/caixin/blog'));
|
|
292
|
+
// router.get('/caixin/article', lazyloadRouteHandler('./routes/caixin/article'));
|
|
293
|
+
// router.get('/caixin/database', lazyloadRouteHandler('./routes/caixin/database'));
|
|
294
|
+
// router.get('/caixin/yxnews', lazyloadRouteHandler('./routes/caixin/yxnews'));
|
|
295
|
+
// router.get('/caixin/:column/:category', lazyloadRouteHandler('./routes/caixin/category'));
|
|
296
296
|
|
|
297
297
|
// 草榴社区
|
|
298
298
|
router.get('/t66y/post/:tid', lazyloadRouteHandler('./routes/t66y/post'));
|
|
@@ -330,8 +330,8 @@ router.get('/cpython/:pre?', lazyloadRouteHandler('./routes/cpython'));
|
|
|
330
330
|
// 小米
|
|
331
331
|
router.get('/mi/golden', lazyloadRouteHandler('./routes/mi/golden'));
|
|
332
332
|
router.get('/mi/crowdfunding', lazyloadRouteHandler('./routes/mi/crowdfunding'));
|
|
333
|
-
router.get('/mi/youpin/crowdfunding', lazyloadRouteHandler('./routes/mi/youpin/crowdfunding'));
|
|
334
|
-
router.get('/mi/youpin/new/:sort?', lazyloadRouteHandler('./routes/mi/youpin/new'));
|
|
333
|
+
// router.get('/mi/youpin/crowdfunding', lazyloadRouteHandler('./routes/mi/youpin/crowdfunding'));
|
|
334
|
+
// router.get('/mi/youpin/new/:sort?', lazyloadRouteHandler('./routes/mi/youpin/new'));
|
|
335
335
|
router.get('/miui/:device/:type?/:region?', lazyloadRouteHandler('./routes/mi/miui/index'));
|
|
336
336
|
router.get('/mi/bbs/board/:boardId', lazyloadRouteHandler('./routes/mi/board'));
|
|
337
337
|
|
|
@@ -950,7 +950,7 @@ router.get('/geekpark/breakingnews', lazyloadRouteHandler('./routes/geekpark/bre
|
|
|
950
950
|
|
|
951
951
|
// 百度
|
|
952
952
|
router.get('/baidu/doodles', lazyloadRouteHandler('./routes/baidu/doodles'));
|
|
953
|
-
router.get('/baidu/topwords/:boardId?', lazyloadRouteHandler('./routes/baidu/topwords'));
|
|
953
|
+
// router.get('/baidu/topwords/:boardId?', lazyloadRouteHandler('./routes/baidu/topwords'));
|
|
954
954
|
router.get('/baidu/daily', lazyloadRouteHandler('./routes/baidu/daily'));
|
|
955
955
|
|
|
956
956
|
// 搜狗
|
|
@@ -1001,10 +1001,10 @@ router.get('/tencentvideo/playlist/:id', lazyloadRouteHandler('./routes/tencent/
|
|
|
1001
1001
|
// router.get('/twmanhuagui/comic/:id/:chapterCnt?', lazyloadRouteHandler('./routes/twmanhuagui/comic'));
|
|
1002
1002
|
|
|
1003
1003
|
// 拷贝漫画
|
|
1004
|
-
router.get('/copymanga/comic/:id/:chapterCnt?', lazyloadRouteHandler('./routes/copymanga/comic'));
|
|
1004
|
+
// router.get('/copymanga/comic/:id/:chapterCnt?', lazyloadRouteHandler('./routes/copymanga/comic'));
|
|
1005
1005
|
|
|
1006
1006
|
// 拷贝漫画
|
|
1007
|
-
router.get('/copymanga/comic/:id', lazyloadRouteHandler('./routes/copymanga/comic'));
|
|
1007
|
+
// router.get('/copymanga/comic/:id', lazyloadRouteHandler('./routes/copymanga/comic'));
|
|
1008
1008
|
|
|
1009
1009
|
// 動漫狂
|
|
1010
1010
|
router.get('/cartoonmad/comic/:id', lazyloadRouteHandler('./routes/cartoonmad/comic'));
|
|
@@ -1023,8 +1023,8 @@ router.get('/tits-guru/category/:type', lazyloadRouteHandler('./routes/titsguru/
|
|
|
1023
1023
|
router.get('/tits-guru/model/:name', lazyloadRouteHandler('./routes/titsguru/model'));
|
|
1024
1024
|
|
|
1025
1025
|
// typora
|
|
1026
|
-
router.get('/typora/changelog', lazyloadRouteHandler('./routes/typora/changelog'));
|
|
1027
|
-
router.get('/typora/changelog-dev/:os?', lazyloadRouteHandler('./routes/typora/changelog-dev'));
|
|
1026
|
+
// router.get('/typora/changelog', lazyloadRouteHandler('./routes/typora/changelog'));
|
|
1027
|
+
// router.get('/typora/changelog-dev/:os?', lazyloadRouteHandler('./routes/typora/changelog-dev'));
|
|
1028
1028
|
|
|
1029
1029
|
// TSSstatus
|
|
1030
1030
|
router.get('/tssstatus/:board/:build', lazyloadRouteHandler('./routes/tssstatus'));
|
|
@@ -1286,11 +1286,11 @@ router.get('/meipai/user/:uid', lazyloadRouteHandler('./routes/meipai/user'));
|
|
|
1286
1286
|
router.get('/duozhi', lazyloadRouteHandler('./routes/duozhi'));
|
|
1287
1287
|
|
|
1288
1288
|
// 人人都是产品经理
|
|
1289
|
-
router.get('/woshipm/popular', lazyloadRouteHandler('./routes/woshipm/popular'));
|
|
1290
|
-
router.get('/woshipm/wen', lazyloadRouteHandler('./routes/woshipm/wen'));
|
|
1291
|
-
router.get('/woshipm/bookmarks/:id', lazyloadRouteHandler('./routes/woshipm/bookmarks'));
|
|
1292
|
-
router.get('/woshipm/user_article/:id', lazyloadRouteHandler('./routes/woshipm/user_article'));
|
|
1293
|
-
router.get('/woshipm/latest', lazyloadRouteHandler('./routes/woshipm/latest'));
|
|
1289
|
+
// router.get('/woshipm/popular', lazyloadRouteHandler('./routes/woshipm/popular'));
|
|
1290
|
+
// router.get('/woshipm/wen', lazyloadRouteHandler('./routes/woshipm/wen'));
|
|
1291
|
+
// router.get('/woshipm/bookmarks/:id', lazyloadRouteHandler('./routes/woshipm/bookmarks'));
|
|
1292
|
+
// router.get('/woshipm/user_article/:id', lazyloadRouteHandler('./routes/woshipm/user_article'));
|
|
1293
|
+
// router.get('/woshipm/latest', lazyloadRouteHandler('./routes/woshipm/latest'));
|
|
1294
1294
|
|
|
1295
1295
|
// 高清电台
|
|
1296
1296
|
router.get('/gaoqing/latest', lazyloadRouteHandler('./routes/gaoqing/latest'));
|
|
@@ -1352,7 +1352,7 @@ router.get('/ui-cn/user/:id', lazyloadRouteHandler('./routes/ui-cn/user'));
|
|
|
1352
1352
|
// router.get('/dcard/:section/:type?', lazyloadRouteHandler('./routes/dcard/section'));
|
|
1353
1353
|
|
|
1354
1354
|
// 北京天文馆每日一图
|
|
1355
|
-
router.get('/bjp/apod', lazyloadRouteHandler('./routes/bjp/apod'));
|
|
1355
|
+
// router.get('/bjp/apod', lazyloadRouteHandler('./routes/bjp/apod'));
|
|
1356
1356
|
|
|
1357
1357
|
// 洛谷
|
|
1358
1358
|
// router.get('/luogu/daily/:id?', lazyloadRouteHandler('./routes/luogu/daily'));
|
|
@@ -1505,8 +1505,8 @@ router.get('/bupt/news', lazyloadRouteHandler('./routes/universities/bupt/news')
|
|
|
1505
1505
|
router.get('/bupt/funbox', lazyloadRouteHandler('./routes/universities/bupt/funbox'));
|
|
1506
1506
|
|
|
1507
1507
|
// VOCUS 方格子
|
|
1508
|
-
router.get('/vocus/publication/:id', lazyloadRouteHandler('./routes/vocus/publication'));
|
|
1509
|
-
router.get('/vocus/user/:id', lazyloadRouteHandler('./routes/vocus/user'));
|
|
1508
|
+
// router.get('/vocus/publication/:id', lazyloadRouteHandler('./routes/vocus/publication'));
|
|
1509
|
+
// router.get('/vocus/user/:id', lazyloadRouteHandler('./routes/vocus/user'));
|
|
1510
1510
|
|
|
1511
1511
|
// 一亩三分地 1point3acres
|
|
1512
1512
|
router.get('/1point3acres/blog/:category?', lazyloadRouteHandler('./routes/1point3acres/blog'));
|
|
@@ -2033,7 +2033,7 @@ router.get('/network360/jobs', lazyloadRouteHandler('./routes/network360/jobs'))
|
|
|
2033
2033
|
router.get('/zhilian/:city/:keyword', lazyloadRouteHandler('./routes/zhilian/index'));
|
|
2034
2034
|
|
|
2035
2035
|
// 电鸭社区
|
|
2036
|
-
router.get('/eleduck/jobs', lazyloadRouteHandler('./routes/eleduck/jobs'));
|
|
2036
|
+
// router.get('/eleduck/jobs', lazyloadRouteHandler('./routes/eleduck/jobs'));
|
|
2037
2037
|
|
|
2038
2038
|
// 北华航天工业学院 - 新闻
|
|
2039
2039
|
router.get('/nciae/news', lazyloadRouteHandler('./routes/universities/nciae/news'));
|
|
@@ -2187,8 +2187,8 @@ router.get('/cell/cover', lazyloadRouteHandler('./routes/cell/cover'));
|
|
|
2187
2187
|
// router.get('/sciencemag/early/science', lazyloadRouteHandler('./routes/sciencemag/early'));
|
|
2188
2188
|
|
|
2189
2189
|
// dlsite
|
|
2190
|
-
router.get('/dlsite/new/:type', lazyloadRouteHandler('./routes/dlsite/new'));
|
|
2191
|
-
router.get('/dlsite/campaign/:type/:free?', lazyloadRouteHandler('./routes/dlsite/campaign'));
|
|
2190
|
+
// router.get('/dlsite/new/:type', lazyloadRouteHandler('./routes/dlsite/new'));
|
|
2191
|
+
// router.get('/dlsite/campaign/:type/:free?', lazyloadRouteHandler('./routes/dlsite/campaign'));
|
|
2192
2192
|
|
|
2193
2193
|
// mcbbs
|
|
2194
2194
|
router.get('/mcbbs/forum/:type', lazyloadRouteHandler('./routes/mcbbs/forum'));
|
|
@@ -2223,7 +2223,7 @@ router.get('/gov/cnca/hydt', lazyloadRouteHandler('./routes/gov/cnca/hydt'));
|
|
|
2223
2223
|
router.get('/gov/cnca/zxtz', lazyloadRouteHandler('./routes/gov/cnca/zxtz'));
|
|
2224
2224
|
|
|
2225
2225
|
// clickme
|
|
2226
|
-
router.get('/clickme/:site/:grouping/:name', lazyloadRouteHandler('./routes/clickme'));
|
|
2226
|
+
// router.get('/clickme/:site/:grouping/:name', lazyloadRouteHandler('./routes/clickme'));
|
|
2227
2227
|
|
|
2228
2228
|
// 文汇报
|
|
2229
2229
|
router.get('/whb/:category', lazyloadRouteHandler('./routes/whb/zhuzhan'));
|
|
@@ -2280,8 +2280,8 @@ router.get('/centbrowser/history', lazyloadRouteHandler('./routes/centbrowser/hi
|
|
|
2280
2280
|
router.get('/755/user/:username', lazyloadRouteHandler('./routes/755/user'));
|
|
2281
2281
|
|
|
2282
2282
|
// IKEA
|
|
2283
|
-
router.get('/ikea/uk/new', lazyloadRouteHandler('./routes/ikea/uk/new'));
|
|
2284
|
-
router.get('/ikea/uk/offer', lazyloadRouteHandler('./routes/ikea/uk/offer'));
|
|
2283
|
+
// router.get('/ikea/uk/new', lazyloadRouteHandler('./routes/ikea/uk/new'));
|
|
2284
|
+
// router.get('/ikea/uk/offer', lazyloadRouteHandler('./routes/ikea/uk/offer'));
|
|
2285
2285
|
|
|
2286
2286
|
// Mastodon
|
|
2287
2287
|
router.get('/mastodon/timeline/:site/:only_media?', lazyloadRouteHandler('./routes/mastodon/timeline_local'));
|
|
@@ -2315,7 +2315,7 @@ router.get('/chrome/webstore/extensions/:id', lazyloadRouteHandler('./routes/chr
|
|
|
2315
2315
|
router.get('/rthk-news/:lang/:category', lazyloadRouteHandler('./routes/rthk-news/index'));
|
|
2316
2316
|
|
|
2317
2317
|
// yahoo
|
|
2318
|
-
router.get('/yahoo-news/:region/:category?', lazyloadRouteHandler('./routes/yahoo-news/index'));
|
|
2318
|
+
// router.get('/yahoo-news/:region/:category?', lazyloadRouteHandler('./routes/yahoo-news/index'));
|
|
2319
2319
|
|
|
2320
2320
|
// Yahoo!テレビ
|
|
2321
2321
|
router.get('/yahoo-jp-tv/:query', lazyloadRouteHandler('./routes/yahoo-jp-tv/index'));
|
|
@@ -2382,7 +2382,7 @@ router.get('/ifnews/:cid', lazyloadRouteHandler('./routes/ifnews/column'));
|
|
|
2382
2382
|
router.get('/scala/blog/:part?', lazyloadRouteHandler('./routes/scala-blog/scala-blog'));
|
|
2383
2383
|
|
|
2384
2384
|
// Minecraft Java版游戏更新
|
|
2385
|
-
router.get('/minecraft/version', lazyloadRouteHandler('./routes/minecraft/version'));
|
|
2385
|
+
// router.get('/minecraft/version', lazyloadRouteHandler('./routes/minecraft/version'));
|
|
2386
2386
|
|
|
2387
2387
|
// 微信更新日志
|
|
2388
2388
|
router.get('/weixin/miniprogram/release', lazyloadRouteHandler('./routes/tencent/wechat/miniprogram/framework')); // 基础库更新日志
|
|
@@ -2455,7 +2455,7 @@ router.get('/cowlevel/element/:id', lazyloadRouteHandler('./routes/cowlevel/elem
|
|
|
2455
2455
|
// router.get('/2048/bbs/:fid', lazyloadRouteHandler('./routes/2048/bbs'));
|
|
2456
2456
|
|
|
2457
2457
|
// Google News
|
|
2458
|
-
router.get('/google/news/:category/:locale', lazyloadRouteHandler('./routes/google/news'));
|
|
2458
|
+
// router.get('/google/news/:category/:locale', lazyloadRouteHandler('./routes/google/news'));
|
|
2459
2459
|
|
|
2460
2460
|
// 虛詞
|
|
2461
2461
|
router.get('/p-articles/section/:section', lazyloadRouteHandler('./routes/p-articles/section'));
|
|
@@ -2603,8 +2603,8 @@ router.get('/weexcn/news/:typeid', lazyloadRouteHandler('./routes/weexcn/index')
|
|
|
2603
2603
|
// router.get('/eastmoney/ttjj/user/:uid', lazyloadRouteHandler('./routes/eastmoney/ttjj/user'));
|
|
2604
2604
|
|
|
2605
2605
|
// 紳士漫畫
|
|
2606
|
-
router.get('/ssmh', lazyloadRouteHandler('./routes/ssmh'));
|
|
2607
|
-
router.get('/ssmh/category/:cid', lazyloadRouteHandler('./routes/ssmh/category'));
|
|
2606
|
+
// router.get('/ssmh', lazyloadRouteHandler('./routes/ssmh'));
|
|
2607
|
+
// router.get('/ssmh/category/:cid', lazyloadRouteHandler('./routes/ssmh/category'));
|
|
2608
2608
|
|
|
2609
2609
|
// 华南师范大学研究生学院
|
|
2610
2610
|
router.get('/scnuyjs', lazyloadRouteHandler('./routes/universities/scnu/scnuyjs'));
|
|
@@ -3095,8 +3095,8 @@ router.get('/3k8/latest', lazyloadRouteHandler('./routes/3k8/latest'));
|
|
|
3095
3095
|
// JustRun
|
|
3096
3096
|
router.get('/justrun', lazyloadRouteHandler('./routes/justrun/index'));
|
|
3097
3097
|
|
|
3098
|
-
// 上海电力大学
|
|
3099
|
-
router.get('/shiep/:type', lazyloadRouteHandler('./routes/universities/shiep/index'));
|
|
3098
|
+
// 上海电力大学 migrated to v2
|
|
3099
|
+
// router.get('/shiep/:type/:id?', lazyloadRouteHandler('./routes/universities/shiep/index'));
|
|
3100
3100
|
|
|
3101
3101
|
// 福建新闻
|
|
3102
3102
|
router.get('/fjnews/:city/:limit', lazyloadRouteHandler('./routes/fjnews/fznews'));
|
|
@@ -3113,7 +3113,7 @@ router.get('/kongfz/shop/:id/:cat?', lazyloadRouteHandler('./routes/kongfz/shop'
|
|
|
3113
3113
|
router.get('/xmind/mindmap/:lang?', lazyloadRouteHandler('./routes/xmind/mindmap'));
|
|
3114
3114
|
|
|
3115
3115
|
// 小刀娱乐网
|
|
3116
|
-
router.get('/x6d/:id?', lazyloadRouteHandler('./routes/x6d/index'));
|
|
3116
|
+
// router.get('/x6d/:id?', lazyloadRouteHandler('./routes/x6d/index'));
|
|
3117
3117
|
|
|
3118
3118
|
// 思维导图社区
|
|
3119
3119
|
router.get('/edrawsoft/mindmap/:classId?/:order?/:sort?/:lang?/:price?/:search?', lazyloadRouteHandler('./routes/edrawsoft/mindmap'));
|
|
@@ -3179,7 +3179,7 @@ router.get('/1x/:category?', lazyloadRouteHandler('./routes/1x/index'));
|
|
|
3179
3179
|
router.get('/jx3/:caty?', lazyloadRouteHandler('./routes/jx3/news'));
|
|
3180
3180
|
|
|
3181
3181
|
// GQ
|
|
3182
|
-
router.get('/gq/tw/:caty?/:subcaty?', lazyloadRouteHandler('./routes/gq/tw/index'));
|
|
3182
|
+
// router.get('/gq/tw/:caty?/:subcaty?', lazyloadRouteHandler('./routes/gq/tw/index'));
|
|
3183
3183
|
|
|
3184
3184
|
// 泉州市跨境电子商务协会
|
|
3185
3185
|
router.get('/qzcea/:caty?', lazyloadRouteHandler('./routes/qzcea/index'));
|
|
@@ -3633,7 +3633,7 @@ router.get('/cppcc/:slug?', lazyloadRouteHandler('./routes/gov/cppcc/index'));
|
|
|
3633
3633
|
router.get('/nace/blog/:sort?', lazyloadRouteHandler('./routes/nace/blog'));
|
|
3634
3634
|
|
|
3635
3635
|
// Caixin Latest
|
|
3636
|
-
router.get('/caixin/latest', lazyloadRouteHandler('./routes/caixin/latest'));
|
|
3636
|
+
// router.get('/caixin/latest', lazyloadRouteHandler('./routes/caixin/latest'));
|
|
3637
3637
|
|
|
3638
3638
|
// Semiconductor Industry Association
|
|
3639
3639
|
router.get('/semiconductors/latest-news', lazyloadRouteHandler('./routes/semiconductors/latest-news'));
|
|
@@ -3957,7 +3957,7 @@ router.get('/partnershiponai/resources', lazyloadRouteHandler('./routes/partners
|
|
|
3957
3957
|
router.get('/commonapp/blog', lazyloadRouteHandler('./routes/commonapp/blog'));
|
|
3958
3958
|
|
|
3959
3959
|
// Sky Sports
|
|
3960
|
-
router.get('/skysports/news/:team', lazyloadRouteHandler('./routes/skysports/news'));
|
|
3960
|
+
// router.get('/skysports/news/:team', lazyloadRouteHandler('./routes/skysports/news'));
|
|
3961
3961
|
|
|
3962
3962
|
// Europa Press
|
|
3963
3963
|
router.get('/europapress/:category?', lazyloadRouteHandler('./routes/europapress'));
|
|
@@ -1,9 +1,13 @@
|
|
|
1
1
|
const got = require('@/utils/got');
|
|
2
2
|
const cheerio = require('cheerio');
|
|
3
|
+
const { isValidHost } = require('@/utils/valid-host');
|
|
3
4
|
|
|
4
5
|
module.exports = async (ctx) => {
|
|
5
6
|
const lang = ctx.params.lang || 'en';
|
|
6
7
|
const id = ctx.params.id || 'bandizip';
|
|
8
|
+
if (!isValidHost(lang)) {
|
|
9
|
+
throw Error('Invalid language code');
|
|
10
|
+
}
|
|
7
11
|
|
|
8
12
|
const rootUrl = `https://${lang}.bandisoft.com`;
|
|
9
13
|
const currentUrl = `${rootUrl}/${id}/history/`;
|
|
@@ -1,7 +1,12 @@
|
|
|
1
1
|
const cheerio = require('cheerio');
|
|
2
2
|
const got = require('@/utils/got');
|
|
3
|
+
const { isValidHost } = require('@/utils/valid-host');
|
|
3
4
|
|
|
4
5
|
module.exports = async (ctx) => {
|
|
6
|
+
if (!isValidHost(ctx.params.column)) {
|
|
7
|
+
throw Error('Invalid column');
|
|
8
|
+
}
|
|
9
|
+
|
|
5
10
|
const url = `http://${ctx.params.column}.bio1000.com/${ctx.params.id}`;
|
|
6
11
|
const res = await got.get(url);
|
|
7
12
|
const $ = cheerio.load(res.data);
|
|
@@ -4,9 +4,13 @@ const md = require('markdown-it')({
|
|
|
4
4
|
html: true,
|
|
5
5
|
});
|
|
6
6
|
const dayjs = require('dayjs');
|
|
7
|
+
const { isValidHost } = require('@/utils/valid-host');
|
|
7
8
|
|
|
8
9
|
module.exports = async (ctx) => {
|
|
9
10
|
const type = ctx.params.type;
|
|
11
|
+
if (!isValidHost(type)) {
|
|
12
|
+
throw Error('Invalid type');
|
|
13
|
+
}
|
|
10
14
|
|
|
11
15
|
const url = `https://${type}.hedwig.pub`;
|
|
12
16
|
const res = await got({
|
|
@@ -1,7 +1,12 @@
|
|
|
1
1
|
const parser = require('@/utils/rss-parser');
|
|
2
2
|
const config = require('@/config').value;
|
|
3
|
+
const allowDomain = ['lawrence.code.blog'];
|
|
3
4
|
|
|
4
5
|
module.exports = async (ctx) => {
|
|
6
|
+
if (!config.feature.allow_user_supply_unsafe_domain && !allowDomain.includes(ctx.params.domain)) {
|
|
7
|
+
ctx.throw(403, `This RSS is disabled unless 'ALLOW_USER_SUPPLY_UNSAFE_DOMAIN' is set to 'true'.`);
|
|
8
|
+
}
|
|
9
|
+
|
|
5
10
|
const scheme = ctx.params.https || 'https';
|
|
6
11
|
const cdn = config.wordpress.cdnUrl;
|
|
7
12
|
|
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
const got = require('@/utils/got');
|
|
2
2
|
const cheerio = require('cheerio');
|
|
3
|
-
|
|
3
|
+
const { isValidHost } = require('@/utils/valid-host');
|
|
4
4
|
const maxPages = 5;
|
|
5
5
|
|
|
6
6
|
module.exports = async (ctx) => {
|
|
7
7
|
const { subdomain } = ctx.params;
|
|
8
|
+
if (!isValidHost(subdomain)) {
|
|
9
|
+
throw Error('Invalid subdomain');
|
|
10
|
+
}
|
|
8
11
|
const shopUrl = `https://${subdomain}.booth.pm`;
|
|
9
12
|
|
|
10
13
|
let shopName;
|
|
@@ -1,7 +1,12 @@
|
|
|
1
1
|
const got = require('@/utils/got');
|
|
2
2
|
const cheerio = require('cheerio');
|
|
3
|
+
const { isValidHost } = require('@/utils/valid-host');
|
|
3
4
|
|
|
4
5
|
module.exports = async (ctx) => {
|
|
6
|
+
if (!isValidHost(ctx.params.location)) {
|
|
7
|
+
throw Error('Invalid location');
|
|
8
|
+
}
|
|
9
|
+
|
|
5
10
|
const queryParams = ctx.request.querystring;
|
|
6
11
|
const queryUrl = `https://${ctx.params.location}.craigslist.org/search/${ctx.params.type}?${queryParams}`;
|
|
7
12
|
const { data } = await got.get(queryUrl);
|
|
@@ -1,9 +1,13 @@
|
|
|
1
1
|
const got = require('@/utils/got');
|
|
2
2
|
const cheerio = require('cheerio');
|
|
3
3
|
const parser = require('@/utils/rss-parser');
|
|
4
|
+
const allowLang = ['chinese', 'cn', 'us', 'japanese', 'www'];
|
|
4
5
|
|
|
5
6
|
module.exports = async (ctx) => {
|
|
6
7
|
const lang = ctx.params.lang === 'us' ? 'www' : ctx.params.lang || 'cn';
|
|
8
|
+
if (!allowLang.includes(lang)) {
|
|
9
|
+
throw Error('Invalid lang');
|
|
10
|
+
}
|
|
7
11
|
const rssUrl = `https://${lang}.engadget.com/rss.xml`;
|
|
8
12
|
const feed = await parser.parseURL(rssUrl);
|
|
9
13
|
|
|
@@ -4,12 +4,15 @@
|
|
|
4
4
|
// user?: fanbox domain name
|
|
5
5
|
|
|
6
6
|
const got = require('@/utils/got');
|
|
7
|
-
|
|
7
|
+
const { isValidHost } = require('@/utils/valid-host');
|
|
8
8
|
const conv_item = require('./conv');
|
|
9
9
|
const get_header = require('./header');
|
|
10
10
|
|
|
11
11
|
module.exports = async (ctx) => {
|
|
12
12
|
const user = ctx.params.user || 'official'; // if no user specified, just go to official page
|
|
13
|
+
if (!isValidHost(user)) {
|
|
14
|
+
throw Error('Invalid user');
|
|
15
|
+
}
|
|
13
16
|
const box_url = `https://${user}.fanbox.cc`;
|
|
14
17
|
|
|
15
18
|
// get user info
|
|
@@ -1,8 +1,12 @@
|
|
|
1
1
|
const got = require('@/utils/got');
|
|
2
2
|
const cheerio = require('cheerio');
|
|
3
|
+
const { isValidHost } = require('@/utils/valid-host');
|
|
3
4
|
|
|
4
5
|
module.exports = async (ctx) => {
|
|
5
6
|
const country = ctx.params.country || 'ww';
|
|
7
|
+
if (!isValidHost(country)) {
|
|
8
|
+
throw Error('Invalid country');
|
|
9
|
+
}
|
|
6
10
|
|
|
7
11
|
const rootUrl = `https://${country}.fashionnetwork.com`;
|
|
8
12
|
const response = await got({
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
const got = require('@/utils/got');
|
|
2
2
|
const cheerio = require('cheerio');
|
|
3
|
+
const { isValidHost } = require('@/utils/valid-host');
|
|
3
4
|
|
|
4
5
|
module.exports = async (ctx) => {
|
|
5
6
|
const country = ctx.params.country || 'ww';
|
|
@@ -12,6 +13,10 @@ module.exports = async (ctx) => {
|
|
|
12
13
|
const sectorsUrl = sectors ? 'sectors%5B%5D=' + sectors.split(',').join('§ors%5B%5D=') : '';
|
|
13
14
|
const categoriesUrl = categories ? 'categs%5B%5D=' + categories.split(',').join('&categs%5B%5D=') : '';
|
|
14
15
|
|
|
16
|
+
if (!isValidHost(country)) {
|
|
17
|
+
throw Error('Invalid country');
|
|
18
|
+
}
|
|
19
|
+
|
|
15
20
|
const rootUrl = `https://${country}.fashionnetwork.com`;
|
|
16
21
|
const currentUrl = `${rootUrl}/news/s.jsonp?${sectorsUrl}&${categoriesUrl}`;
|
|
17
22
|
const response = await got({
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
const got = require('@/utils/got');
|
|
2
2
|
const cheerio = require('cheerio');
|
|
3
|
+
const config = require('@/config').value;
|
|
4
|
+
const { allowHost } = require('./common');
|
|
3
5
|
|
|
4
6
|
module.exports = async (ctx) => {
|
|
5
7
|
let { type, host } = ctx.params;
|
|
@@ -10,6 +12,9 @@ module.exports = async (ctx) => {
|
|
|
10
12
|
starred: 'Most stars',
|
|
11
13
|
all: 'All',
|
|
12
14
|
};
|
|
15
|
+
if (!config.feature.allow_user_supply_unsafe_domain && !allowHost.includes(new URL(`https://${host}/`).hostname)) {
|
|
16
|
+
ctx.throw(403, `This RSS is disabled unless 'ALLOW_USER_SUPPLY_UNSAFE_DOMAIN' is set to 'true'.`);
|
|
17
|
+
}
|
|
13
18
|
|
|
14
19
|
const res = await got({
|
|
15
20
|
method: 'get',
|
|
@@ -1,8 +1,13 @@
|
|
|
1
1
|
const got = require('@/utils/got');
|
|
2
2
|
const { parseDate } = require('@/utils/parse-date');
|
|
3
|
+
const config = require('@/config').value;
|
|
4
|
+
const { allowHost } = require('./common');
|
|
3
5
|
|
|
4
6
|
module.exports = async (ctx) => {
|
|
5
7
|
const { namespace, project, host } = ctx.params;
|
|
8
|
+
if (!config.feature.allow_user_supply_unsafe_domain && !allowHost.includes(host)) {
|
|
9
|
+
ctx.throw(403, `This RSS is disabled unless 'ALLOW_USER_SUPPLY_UNSAFE_DOMAIN' is set to 'true'.`);
|
|
10
|
+
}
|
|
6
11
|
|
|
7
12
|
const host_ = host ? host : 'gitlab.com';
|
|
8
13
|
const namespace_ = encodeURIComponent(namespace);
|
package/lib/routes/gitlab/tag.js
CHANGED
|
@@ -1,8 +1,13 @@
|
|
|
1
1
|
const got = require('@/utils/got');
|
|
2
2
|
const { parseDate } = require('@/utils/parse-date');
|
|
3
|
+
const config = require('@/config').value;
|
|
4
|
+
const { allowHost } = require('./common');
|
|
3
5
|
|
|
4
6
|
module.exports = async (ctx) => {
|
|
5
7
|
const { namespace, project, host } = ctx.params;
|
|
8
|
+
if (!config.feature.allow_user_supply_unsafe_domain && !allowHost.includes(host)) {
|
|
9
|
+
ctx.throw(403, `This RSS is disabled unless 'ALLOW_USER_SUPPLY_UNSAFE_DOMAIN' is set to 'true'.`);
|
|
10
|
+
}
|
|
6
11
|
|
|
7
12
|
const host_ = host ? host : 'gitlab.com';
|
|
8
13
|
const namespace_ = encodeURIComponent(namespace);
|
package/lib/routes/hexo/fluid.js
CHANGED
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
const cheerio = require('cheerio');
|
|
2
2
|
const got = require('@/utils/got');
|
|
3
|
+
const config = require('@/config').value;
|
|
3
4
|
|
|
4
5
|
module.exports = async (ctx) => {
|
|
6
|
+
if (!config.feature.allow_user_supply_unsafe_domain) {
|
|
7
|
+
ctx.throw(403, `This RSS is disabled unless 'ALLOW_USER_SUPPLY_UNSAFE_DOMAIN' is set to 'true'.`);
|
|
8
|
+
}
|
|
5
9
|
const url = `http://${ctx.params.url}`;
|
|
6
10
|
const res = await got.get(`${url}/archives/`);
|
|
7
11
|
const $ = cheerio.load(res.data);
|
package/lib/routes/hexo/next.js
CHANGED
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
const cheerio = require('cheerio');
|
|
2
2
|
const got = require('@/utils/got');
|
|
3
|
+
const config = require('@/config').value;
|
|
3
4
|
|
|
4
5
|
module.exports = async (ctx) => {
|
|
6
|
+
if (!config.feature.allow_user_supply_unsafe_domain) {
|
|
7
|
+
ctx.throw(403, `This RSS is disabled unless 'ALLOW_USER_SUPPLY_UNSAFE_DOMAIN' is set to 'true'.`);
|
|
8
|
+
}
|
|
5
9
|
const url = `http://${ctx.params.url}`;
|
|
6
10
|
const res = await got.get(`${url}/archives/`);
|
|
7
11
|
const $ = cheerio.load(res.data);
|
package/lib/routes/hexo/yilia.js
CHANGED
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
const cheerio = require('cheerio');
|
|
2
2
|
const got = require('@/utils/got');
|
|
3
|
+
const config = require('@/config').value;
|
|
3
4
|
|
|
4
5
|
module.exports = async (ctx) => {
|
|
6
|
+
if (!config.feature.allow_user_supply_unsafe_domain) {
|
|
7
|
+
ctx.throw(403, `This RSS is disabled unless 'ALLOW_USER_SUPPLY_UNSAFE_DOMAIN' is set to 'true'.`);
|
|
8
|
+
}
|
|
5
9
|
const url = `http://${ctx.params.url}`;
|
|
6
10
|
const res = await got.get(url);
|
|
7
11
|
const $ = cheerio.load(res.data);
|
|
@@ -1,9 +1,13 @@
|
|
|
1
1
|
const utils = require('./utils');
|
|
2
|
+
const config = require('@/config').value;
|
|
2
3
|
|
|
3
4
|
module.exports = async (ctx) => {
|
|
4
5
|
const site = ctx.params.site;
|
|
5
6
|
const account_id = ctx.params.account_id;
|
|
6
7
|
const only_media = ctx.params.only_media ? 'true' : 'false';
|
|
8
|
+
if (!config.feature.allow_user_supply_unsafe_domain && !utils.allowSiteList.includes(site)) {
|
|
9
|
+
ctx.throw(403, `This RSS is disabled unless 'ALLOW_USER_SUPPLY_UNSAFE_DOMAIN' is set to 'true'.`);
|
|
10
|
+
}
|
|
7
11
|
|
|
8
12
|
const { account_data, data } = await utils.getAccountStatuses(site, account_id, only_media);
|
|
9
13
|
|
|
@@ -1,9 +1,13 @@
|
|
|
1
1
|
const got = require('@/utils/got');
|
|
2
2
|
const utils = require('./utils');
|
|
3
|
+
const config = require('@/config').value;
|
|
3
4
|
|
|
4
5
|
module.exports = async (ctx) => {
|
|
5
6
|
const site = ctx.params.site;
|
|
6
7
|
const only_media = ctx.params.only_media ? 'true' : 'false';
|
|
8
|
+
if (!config.feature.allow_user_supply_unsafe_domain && !utils.allowSiteList.includes(site)) {
|
|
9
|
+
ctx.throw(403, `This RSS is disabled unless 'ALLOW_USER_SUPPLY_UNSAFE_DOMAIN' is set to 'true'.`);
|
|
10
|
+
}
|
|
7
11
|
|
|
8
12
|
const url = `http://${site}/api/v1/timelines/public?local=true&only_media=${only_media}`;
|
|
9
13
|
|