rsshub 1.0.0-master.fdb1381 → 1.0.0-master.fdb4325
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/api/index.ts +2 -7
- package/lib/config.ts +14 -1
- package/lib/registry.ts +41 -5
- package/lib/router.js +0 -12
- package/lib/routes/005/index.ts +3 -3
- package/lib/routes/0818tuan/index.ts +2 -2
- package/lib/routes/10jqka/realtimenews.ts +2 -2
- package/lib/routes/12306/zxdt.ts +15 -33
- package/lib/routes/12371/zxfb.ts +2 -2
- package/lib/routes/163/exclusive.ts +17 -17
- package/lib/routes/163/news/rank.ts +4 -4
- package/lib/routes/163/news/special.ts +2 -2
- package/lib/routes/163/renjian.ts +2 -2
- package/lib/routes/163/utils.ts +2 -2
- package/lib/routes/18comic/blogs.ts +3 -3
- package/lib/routes/18comic/index.ts +11 -11
- package/lib/routes/199it/index.ts +334 -0
- package/lib/routes/199it/templates/description.art +20 -0
- package/lib/routes/19lou/index.ts +11 -11
- package/lib/routes/1point3acres/blog.ts +2 -2
- package/lib/routes/1point3acres/category.ts +6 -6
- package/lib/routes/1point3acres/section.ts +16 -16
- package/lib/routes/1point3acres/thread.ts +6 -6
- package/lib/routes/2023game/index.ts +3 -3
- package/lib/routes/2048/index.ts +65 -55
- package/lib/routes/21caijing/channel.ts +1 -1
- package/lib/routes/36kr/hot-list.ts +2 -2
- package/lib/routes/36kr/index.ts +2 -2
- package/lib/routes/3dmgame/news-center.ts +2 -2
- package/lib/routes/3kns/index.ts +15 -15
- package/lib/routes/423down/index.ts +18 -18
- package/lib/routes/4khd/article.ts +28 -0
- package/lib/routes/4khd/category.ts +48 -0
- package/lib/routes/4khd/const.ts +4 -0
- package/lib/routes/4khd/latest.ts +41 -0
- package/lib/routes/4khd/namespace.ts +8 -0
- package/lib/routes/4khd/types.ts +12 -0
- package/lib/routes/4kup/article.ts +29 -0
- package/lib/routes/4kup/category.ts +47 -0
- package/lib/routes/4kup/const.ts +4 -0
- package/lib/routes/4kup/latest.ts +41 -0
- package/lib/routes/4kup/namespace.ts +8 -0
- package/lib/routes/4kup/popular.ts +81 -0
- package/lib/routes/4kup/tag.ts +47 -0
- package/lib/routes/4kup/types.ts +12 -0
- package/lib/routes/56kog/class.ts +5 -5
- package/lib/routes/56kog/top.ts +2 -2
- package/lib/routes/5music/index.ts +87 -0
- package/lib/routes/5music/namespace.ts +9 -0
- package/lib/routes/6park/index.ts +10 -5
- package/lib/routes/6park/news.ts +11 -2
- package/lib/routes/78dm/index.ts +65 -65
- package/lib/routes/7mmtv/index.ts +12 -12
- package/lib/routes/8264/list.ts +37 -37
- package/lib/routes/91porn/index.ts +2 -2
- package/lib/routes/95mm/category.ts +2 -2
- package/lib/routes/95mm/tab.ts +1 -1
- package/lib/routes/a9vg/index.ts +11 -11
- package/lib/routes/aamacau/index.ts +2 -2
- package/lib/routes/academia/topics.ts +10 -20
- package/lib/routes/accessbriefing/index.ts +19 -19
- package/lib/routes/acfun/article.ts +8 -8
- package/lib/routes/adquan/index.ts +146 -0
- package/lib/routes/adquan/namespace.ts +9 -0
- package/lib/routes/adquan/templates/description.art +7 -0
- package/lib/routes/afdian/explore.ts +6 -6
- package/lib/routes/agirls/z-index.ts +2 -2
- package/lib/routes/agora0/index.ts +2 -2
- package/lib/routes/agri/index.ts +52 -52
- package/lib/routes/aibase/discover.ts +74 -74
- package/lib/routes/aibase/topic.ts +24 -24
- package/lib/routes/aiea/index.ts +4 -4
- package/lib/routes/aijishu/index.ts +4 -4
- package/lib/routes/aip/journal-pupp.ts +1 -1
- package/lib/routes/aisixiang/thinktank.ts +1 -1
- package/lib/routes/aisixiang/toplist.ts +2 -2
- package/lib/routes/aliresearch/information.ts +1 -1
- package/lib/routes/alistapart/topic.ts +40 -40
- package/lib/routes/aliyun/notice.ts +6 -6
- package/lib/routes/alternativeto/utils.ts +1 -1
- package/lib/routes/anquanke/category.ts +2 -2
- package/lib/routes/anthropic/news.ts +28 -13
- package/lib/routes/apkpure/versions.ts +1 -1
- package/lib/routes/apnews/mobile-api.ts +93 -0
- package/lib/routes/apnews/utils.ts +2 -2
- package/lib/routes/apple/podcast.ts +2 -1
- package/lib/routes/appleinsider/index.ts +2 -2
- package/lib/routes/appstore/price.ts +0 -1
- package/lib/routes/aqara/post.ts +1 -1
- package/lib/routes/aqicn/aqi.ts +1 -0
- package/lib/routes/arcteryx/new-arrivals.ts +6 -6
- package/lib/routes/arcteryx/outlet.ts +6 -6
- package/lib/routes/asiafruitchina/categories.ts +685 -0
- package/lib/routes/asiafruitchina/namespace.ts +9 -0
- package/lib/routes/asiafruitchina/news.ts +184 -0
- package/lib/routes/asiafruitchina/templates/description.art +17 -0
- package/lib/routes/asianfanfics/namespace.ts +7 -0
- package/lib/routes/asianfanfics/tag.ts +91 -0
- package/lib/routes/asianfanfics/text-search.ts +70 -0
- package/lib/routes/asus/bios.ts +1 -3
- package/lib/routes/atcoder/contest.ts +12 -12
- package/lib/routes/auto-stats/index.ts +2 -2
- package/lib/routes/baidu/tieba/search.ts +5 -5
- package/lib/routes/baidu/top.ts +2 -2
- package/lib/routes/baobua/article.ts +51 -0
- package/lib/routes/baobua/category.ts +60 -0
- package/lib/routes/baobua/const.ts +4 -0
- package/lib/routes/baobua/latest.ts +57 -0
- package/lib/routes/baobua/namespace.ts +8 -0
- package/lib/routes/baobua/search.ts +60 -0
- package/lib/routes/bdys/index.ts +41 -41
- package/lib/routes/beijingprice/index.ts +8 -8
- package/lib/routes/bendibao/news.ts +5 -5
- package/lib/routes/bilibili/cache.ts +4 -4
- package/lib/routes/bilibili/danmaku.ts +1 -1
- package/lib/routes/bilibili/live-room.ts +14 -12
- package/lib/routes/bilibili/mall-new.ts +2 -2
- package/lib/routes/bilibili/manga-update.ts +37 -4
- package/lib/routes/bilibili/partion.ts +57 -57
- package/lib/routes/bilibili/user-collection.ts +2 -1
- package/lib/routes/bilibili/vsearch.ts +3 -3
- package/lib/routes/bilibili/wasm-exec.ts +649 -0
- package/lib/routes/bjfu/it/index.ts +2 -2
- package/lib/routes/bjfu/jwc/index.ts +2 -2
- package/lib/routes/bjfu/news/index.ts +2 -2
- package/lib/routes/bjsk/keti.ts +2 -2
- package/lib/routes/bjtu/gs.ts +18 -18
- package/lib/routes/bjwxdxh/index.ts +2 -2
- package/lib/routes/bjx/fd.ts +1 -1
- package/lib/routes/bjx/types.ts +3 -3
- package/lib/routes/blizzard/news.ts +34 -34
- package/lib/routes/blockworks/index.ts +128 -0
- package/lib/routes/blockworks/namespace.ts +7 -0
- package/lib/routes/bloomberg/index.ts +14 -14
- package/lib/routes/bnu/bs.ts +2 -2
- package/lib/routes/bnu/fe.ts +1 -0
- package/lib/routes/bnu/jwb.ts +1 -0
- package/lib/routes/bnu/mba.ts +20 -20
- package/lib/routes/boc/whpj.ts +2 -2
- package/lib/routes/bookfere/category.ts +2 -2
- package/lib/routes/bossdesign/index.ts +2 -2
- package/lib/routes/bse/index.ts +14 -14
- package/lib/routes/bsky/feeds.ts +72 -0
- package/lib/routes/bsky/utils.ts +34 -1
- package/lib/routes/btzj/index.ts +12 -12
- package/lib/routes/buaa/news/index.ts +2 -2
- package/lib/routes/buct/cist.ts +58 -0
- package/lib/routes/buct/gr.ts +93 -0
- package/lib/routes/buct/jwc.ts +64 -0
- package/lib/routes/buct/namespace.ts +7 -0
- package/lib/routes/bullionvault/gold-news.ts +231 -0
- package/lib/routes/bullionvault/namespace.ts +9 -0
- package/lib/routes/byau/xinwen/index.ts +2 -2
- package/lib/routes/cahkms/index.ts +5 -5
- package/lib/routes/caixin/category.ts +9 -9
- package/lib/routes/camchina/index.ts +2 -2
- package/lib/routes/cankaoxiaoxi/index.ts +20 -20
- package/lib/routes/cas/cg/index.ts +2 -2
- package/lib/routes/casssp/news.ts +2 -2
- package/lib/routes/cast/index.ts +9 -9
- package/lib/routes/catti/news.ts +2 -2
- package/lib/routes/caus/index.ts +2 -2
- package/lib/routes/cbpanet/index.ts +34 -34
- package/lib/routes/ccac/news.ts +3 -3
- package/lib/routes/cccmc/index.ts +21 -21
- package/lib/routes/ccf/ccfcv/index.ts +2 -2
- package/lib/routes/ccf/news.ts +2 -2
- package/lib/routes/ccfa/index.ts +18 -18
- package/lib/routes/cctv/category.ts +2 -2
- package/lib/routes/cctv/lm.ts +5 -5
- package/lib/routes/cde/index.ts +9 -9
- package/lib/routes/cde/xxgk.ts +2 -2
- package/lib/routes/cde/zdyz.ts +2 -2
- package/lib/routes/cdi/index.ts +2 -2
- package/lib/routes/cdu/cdrw.ts +80 -0
- package/lib/routes/cdu/tzggcdunews.ts +80 -0
- package/lib/routes/cebbank/history.ts +3 -3
- package/lib/routes/cfachina/analygarden.ts +2 -2
- package/lib/routes/chaping/news.ts +9 -9
- package/lib/routes/cherrytimes/market.ts +35 -0
- package/lib/routes/cherrytimes/namespace.ts +6 -0
- package/lib/routes/chiculture/topic.ts +2 -2
- package/lib/routes/chikubi/navigation.ts +2 -2
- package/lib/routes/china/finance/finance.ts +2 -2
- package/lib/routes/china/news/highlights/news.ts +3 -3
- package/lib/routes/chinacdc/index.ts +1 -1
- package/lib/routes/chinadegrees/province.ts +33 -33
- package/lib/routes/chinaisa/index.ts +134 -134
- package/lib/routes/chinamoney/notice.ts +17 -17
- package/lib/routes/chinania/index.ts +31 -31
- package/lib/routes/chinathinktanks/viewpoint.ts +46 -46
- package/lib/routes/chinaventure/index.ts +2 -2
- package/lib/routes/chsi/kyzx.ts +6 -6
- package/lib/routes/chuapp/chuapp.ts +147 -0
- package/lib/routes/chuapp/namespace.ts +7 -0
- package/lib/routes/cib/whpj.ts +2 -2
- package/lib/routes/ciidbnu/index.ts +2 -2
- package/lib/routes/cisia/index.ts +31 -31
- package/lib/routes/cjlu/yjsy/index.ts +2 -2
- package/lib/routes/cls/depth.ts +2 -2
- package/lib/routes/cls/telegraph.ts +2 -2
- package/lib/routes/cma/channel.ts +20 -20
- package/lib/routes/cmu/andypavlo/blog.ts +55 -0
- package/lib/routes/cmu/namespace.ts +7 -0
- package/lib/routes/cna/index.ts +2 -2
- package/lib/routes/cnbeta/category.ts +2 -2
- package/lib/routes/cnblogs/common.ts +0 -1
- package/lib/routes/cncf/index.ts +2 -2
- package/lib/routes/cneb/yjxw.ts +2 -2
- package/lib/routes/cngal/weekly.ts +1 -2
- package/lib/routes/cngold/index.ts +22 -22
- package/lib/routes/cntv/column.ts +3 -3
- package/lib/routes/coindesk/{index.ts → consensus-magazine.ts} +17 -21
- package/lib/routes/coindesk/namespace.ts +2 -1
- package/lib/routes/coindesk/news.ts +47 -0
- package/lib/routes/coindesk/utils.ts +26 -0
- package/lib/routes/cointelegraph/index.ts +106 -0
- package/lib/routes/cointelegraph/namespace.ts +7 -0
- package/lib/routes/colamanga/manga.ts +1 -1
- package/lib/routes/collabo-cafe/category.ts +37 -0
- package/lib/routes/collabo-cafe/index.ts +35 -0
- package/lib/routes/collabo-cafe/namespace.ts +9 -0
- package/lib/routes/collabo-cafe/parser.ts +29 -0
- package/lib/routes/collabo-cafe/tag.ts +37 -0
- package/lib/routes/consumer/index.ts +6 -6
- package/lib/routes/consumer/shopping-guide.ts +2 -2
- package/lib/routes/coolapk/hot.ts +5 -5
- package/lib/routes/coolapk/toutiao.ts +2 -2
- package/lib/routes/coolapk/tuwen.ts +2 -2
- package/lib/routes/coomer/index.ts +157 -0
- package/lib/routes/coomer/templates/source.art +24 -0
- package/lib/routes/copymanga/comic.ts +3 -3
- package/lib/routes/cosplaytele/article.ts +13 -0
- package/lib/routes/cosplaytele/category.ts +47 -0
- package/lib/routes/cosplaytele/const.ts +4 -0
- package/lib/routes/cosplaytele/latest.ts +41 -0
- package/lib/routes/cosplaytele/namespace.ts +8 -0
- package/lib/routes/cosplaytele/popular.ts +75 -0
- package/lib/routes/cosplaytele/tag.ts +47 -0
- package/lib/routes/cosplaytele/types.ts +12 -0
- package/lib/routes/counter-strike/news.ts +3 -3
- package/lib/routes/cpcaauto/index.ts +23 -23
- package/lib/routes/cpcey/index.ts +2 -2
- package/lib/routes/cpta/handler.ts +2 -2
- package/lib/routes/cqwu/index.ts +2 -2
- package/lib/routes/crac/index.ts +2 -2
- package/lib/routes/cryptoslate/index.ts +98 -0
- package/lib/routes/cryptoslate/namespace.ts +7 -0
- package/lib/routes/cs/index.ts +30 -30
- package/lib/routes/cs/video.ts +1 -1
- package/lib/routes/cste/index.ts +2 -2
- package/lib/routes/csu/cse.ts +2 -2
- package/lib/routes/csu/mail.ts +2 -2
- package/lib/routes/cts/news.ts +2 -2
- package/lib/routes/cuilingmag/index.ts +8 -9
- package/lib/routes/cupl/jwc.ts +69 -0
- package/lib/routes/cupl/namespace.ts +20 -0
- package/lib/routes/cursor/changelog.ts +94 -51
- package/lib/routes/cw/master.ts +14 -14
- package/lib/routes/cw/utils.ts +2 -0
- package/lib/routes/cyzone/index.ts +8 -8
- package/lib/routes/dahecube/index.ts +2 -2
- package/lib/routes/dangdang/notice.ts +4 -4
- package/lib/routes/dataguidance/index.ts +2 -2
- package/lib/routes/dayanzai/index.ts +2 -2
- package/lib/routes/dcfever/news.ts +2 -2
- package/lib/routes/dcfever/reviews.ts +2 -2
- package/lib/routes/dcfever/trading.ts +3 -3
- package/lib/routes/dealstreetasia/home.ts +1 -1
- package/lib/routes/decrypt/index.ts +115 -0
- package/lib/routes/decrypt/namespace.ts +7 -0
- package/lib/routes/dedao/index.ts +5 -5
- package/lib/routes/dedao/user.ts +2 -2
- package/lib/routes/deeplearning/the-batch.ts +24 -24
- package/lib/routes/deepseek/news.ts +2 -2
- package/lib/routes/dehenglaw/index.ts +3 -3
- package/lib/routes/dewu/declaration.ts +5 -5
- package/lib/routes/dhu/jiaowu/news.ts +2 -2
- package/lib/routes/dhu/yjs/news.ts +2 -2
- package/lib/routes/dhu/yjs/zs.ts +2 -2
- package/lib/routes/diandong/news.ts +3 -3
- package/lib/routes/diariofruticola/filtro.ts +129 -0
- package/lib/routes/diariofruticola/namespace.ts +9 -0
- package/lib/routes/discuz/discuz.ts +7 -9
- package/lib/routes/dlsite/new.ts +2 -2
- package/lib/routes/dmzj/news.ts +2 -2
- package/lib/routes/dn/news.ts +12 -12
- package/lib/routes/docschina/weekly.ts +2 -2
- package/lib/routes/dongqiudi/special.ts +2 -2
- package/lib/routes/dongqiudi/top-news.ts +2 -2
- package/lib/routes/douban/book/latest.ts +2 -2
- package/lib/routes/douban/book/rank.ts +2 -2
- package/lib/routes/douban/channel/subject.ts +2 -2
- package/lib/routes/douban/channel/topic.ts +2 -2
- package/lib/routes/douban/other/jobs.ts +2 -2
- package/lib/routes/douban/other/latest-music.ts +2 -2
- package/lib/routes/douban/other/list.ts +24 -24
- package/lib/routes/douban/other/recommended.ts +3 -3
- package/lib/routes/douban/other/weekly-best.ts +2 -2
- package/lib/routes/douban/people/status.ts +15 -15
- package/lib/routes/douban/people/wish.ts +3 -3
- package/lib/routes/douyin/live.ts +1 -1
- package/lib/routes/douyin/types.ts +1 -5
- package/lib/routes/douyin/user.ts +1 -1
- package/lib/routes/douyu/group.ts +2 -2
- package/lib/routes/dtcj/datahero.ts +2 -2
- package/lib/routes/dtcj/datainsight.ts +2 -2
- package/lib/routes/dx2025/index.ts +17 -17
- package/lib/routes/dytt/index.ts +299 -56
- package/lib/routes/dytt/namespace.ts +1 -1
- package/lib/routes/e-hentai/index.ts +1 -1
- package/lib/routes/eagle/changelog.ts +3 -3
- package/lib/routes/earthquake/ceic.ts +8 -8
- package/lib/routes/eastday/24.ts +5 -5
- package/lib/routes/eastmoney/report/index.ts +2 -2
- package/lib/routes/ecust/jwc/notice.ts +2 -2
- package/lib/routes/ehentai/favorites.ts +7 -2
- package/lib/routes/ehentai/search.ts +2 -2
- package/lib/routes/ehentai/tag.ts +2 -2
- package/lib/routes/ekantipur/issue.ts +3 -3
- package/lib/routes/eleduck/posts.ts +17 -17
- package/lib/routes/epicgames/index.ts +2 -2
- package/lib/routes/eprice/rss.ts +3 -3
- package/lib/routes/espn/news.ts +1 -1
- package/lib/routes/famitsu/category.ts +2 -2
- package/lib/routes/fanbox/types.ts +0 -4
- package/lib/routes/fangchan/list.ts +224 -0
- package/lib/routes/fangchan/namespace.ts +9 -0
- package/lib/routes/fangchan/templates/description.art +7 -0
- package/lib/routes/fantia/search.ts +36 -36
- package/lib/routes/farcaster/namespace.ts +7 -0
- package/lib/routes/farcaster/user.ts +46 -0
- package/lib/routes/fashionnetwork/index.ts +10 -10
- package/lib/routes/feng/forum.ts +2 -2
- package/lib/routes/ff14/ff14-global.ts +5 -5
- package/lib/routes/ff14/ff14-zh.ts +2 -2
- package/lib/routes/finology/category.ts +17 -17
- package/lib/routes/finology/tag.ts +30 -30
- package/lib/routes/finviz/news.ts +2 -2
- package/lib/routes/fjksbm/index.ts +2 -2
- package/lib/routes/flyert/creditcard.ts +20 -20
- package/lib/routes/focustaiwan/index.ts +5 -5
- package/lib/routes/follow/profile.ts +1 -1
- package/lib/routes/followin/index.ts +6 -6
- package/lib/routes/followin/news.ts +1 -1
- package/lib/routes/foreignaffairs/namespace.ts +7 -0
- package/lib/routes/foreignaffairs/rss.ts +55 -0
- package/lib/routes/foresightnews/util.ts +1 -1
- package/lib/routes/forklog/index.ts +72 -0
- package/lib/routes/forklog/namespace.ts +7 -0
- package/lib/routes/fortnite/news.ts +4 -4
- package/lib/routes/fortunechina/index.ts +2 -2
- package/lib/routes/fx-markets/channel.ts +2 -2
- package/lib/routes/fxiaoke/crm.ts +2 -2
- package/lib/routes/gameapps/index.ts +1 -1
- package/lib/routes/gamekee/namespace.ts +6 -0
- package/lib/routes/gamekee/news.ts +64 -0
- package/lib/routes/gamer520/index.ts +3 -3
- package/lib/routes/gamersecret/index.ts +14 -14
- package/lib/routes/gcores/articles.ts +53 -0
- package/lib/routes/gcores/categories.ts +129 -0
- package/lib/routes/gcores/collections.ts +129 -0
- package/lib/routes/gcores/namespace.ts +1 -0
- package/lib/routes/gcores/news.ts +53 -0
- package/lib/routes/gcores/parser.ts +284 -0
- package/lib/routes/gcores/program-previews.ts +50 -0
- package/lib/routes/gcores/tags.ts +129 -0
- package/lib/routes/gcores/templates/description.art +67 -0
- package/lib/routes/gcores/topics.ts +63 -0
- package/lib/routes/gcores/util.ts +176 -0
- package/lib/routes/gcores/videos.ts +52 -0
- package/lib/routes/gdsrx/index.ts +8 -8
- package/lib/routes/geekpark/index.ts +10 -10
- package/lib/routes/gelbooru/namespace.ts +7 -0
- package/lib/routes/gelbooru/post.ts +113 -0
- package/lib/routes/gelbooru/templates/description.art +19 -0
- package/lib/routes/gelbooru/utils.ts +43 -0
- package/lib/routes/gelonghui/home.ts +2 -2
- package/lib/routes/gf-cn/news.ts +2 -2
- package/lib/routes/gitcode/namespace.ts +7 -0
- package/lib/routes/gitcode/repos/commits.ts +67 -0
- package/lib/routes/github/search.ts +5 -5
- package/lib/routes/github/topic.ts +4 -4
- package/lib/routes/google/fonts.ts +2 -2
- package/lib/routes/gov/ah/kjt.ts +18 -18
- package/lib/routes/gov/beijing/bphc/index.ts +1 -1
- package/lib/routes/gov/caac/cjwt.ts +1 -1
- package/lib/routes/gov/cbirc/index.ts +54 -53
- package/lib/routes/gov/ccdi/index.ts +1 -1
- package/lib/routes/gov/chongqing/gzw.ts +2 -2
- package/lib/routes/gov/csrc/csrc.ts +101 -101
- package/lib/routes/gov/customs/list.ts +1 -1
- package/lib/routes/gov/forestry/gjlckjdjt.ts +7 -7
- package/lib/routes/gov/general/general.ts +1 -1
- package/lib/routes/gov/hangzhou/namespace.ts +9 -0
- package/lib/routes/gov/hangzhou/templates/jbxx.art +173 -0
- package/lib/routes/gov/hangzhou/zjzwfw.ts +89 -0
- package/lib/routes/gov/hangzhou/zwfw.ts +112 -0
- package/lib/routes/gov/hebei/czt.ts +2 -2
- package/lib/routes/gov/lswz/index.ts +32 -32
- package/lib/routes/gov/maonan/maonan.ts +2 -2
- package/lib/routes/gov/mem/sgcc.ts +2 -2
- package/lib/routes/gov/mfa/wjdt.ts +10 -10
- package/lib/routes/gov/moa/gjs.ts +210 -0
- package/lib/routes/gov/moa/zdscxx.ts +2 -2
- package/lib/routes/gov/moe/moe.ts +2 -2
- package/lib/routes/gov/mof/bond.ts +3 -3
- package/lib/routes/gov/mof/gss.ts +82 -0
- package/lib/routes/gov/moj/aac/news.ts +2 -2
- package/lib/routes/gov/npc/index.ts +2 -2
- package/lib/routes/gov/nrta/dsj.ts +2 -2
- package/lib/routes/gov/nrta/news.ts +2 -2
- package/lib/routes/gov/pbc/goutongjiaoliu.ts +1 -1
- package/lib/routes/gov/pbc/namespace.ts +28 -28
- package/lib/routes/gov/pbc/trade-announcement.ts +1 -1
- package/lib/routes/gov/samr/xgzlyhd.ts +91 -91
- package/lib/routes/gov/sh/fgw/index.ts +3 -3
- package/lib/routes/gov/shaanxi/kjt.ts +2 -2
- package/lib/routes/gov/shenzhen/hrss/szksy/index.ts +2 -2
- package/lib/routes/gov/shenzhen/xxgk/zfxxgj.ts +2 -2
- package/lib/routes/gov/shenzhen/zjj/index.ts +2 -2
- package/lib/routes/gov/shenzhen/zzb/index.ts +2 -2
- package/lib/routes/gov/sichuan/deyang/govpublicinfo.ts +2 -2
- package/lib/routes/gov/sichuan/deyang/mztoday.ts +2 -2
- package/lib/routes/gov/stats/index.ts +4 -8
- package/lib/routes/gov/suzhou/news.ts +15 -15
- package/lib/routes/gov/taiyuan/rsj.ts +2 -2
- package/lib/routes/gov/tianjin/tjftz.ts +53 -0
- package/lib/routes/gov/tianjin/tjrcgzw.ts +51 -0
- package/lib/routes/gov/xuzhou/hrss.ts +2 -2
- package/lib/routes/gov/zhejiang/gwy.ts +22 -22
- package/lib/routes/gov/zhengce/govall.ts +9 -9
- package/lib/routes/grainoil/category.ts +207 -0
- package/lib/routes/grainoil/namespace.ts +9 -0
- package/lib/routes/grist/topic.ts +43 -43
- package/lib/routes/guancha/index.ts +2 -2
- package/lib/routes/guancha/member.ts +2 -2
- package/lib/routes/guokr/channel.ts +2 -2
- package/lib/routes/gzdaily/app.ts +7 -7
- package/lib/routes/hacking8/index.ts +2 -2
- package/lib/routes/hafu/news.ts +2 -2
- package/lib/routes/hafu/utils.ts +3 -3
- package/lib/routes/hakkatv/type.ts +2 -2
- package/lib/routes/hanime1/namespace.ts +7 -0
- package/lib/routes/hanime1/previews.ts +89 -0
- package/lib/routes/hbr/topic.ts +2 -2
- package/lib/routes/hellobtc/kepu.ts +2 -2
- package/lib/routes/hellogithub/article.ts +2 -2
- package/lib/routes/hellogithub/index.ts +2 -2
- package/lib/routes/hellogithub/report.ts +3 -3
- package/lib/routes/hfut/hf/notice.ts +2 -2
- package/lib/routes/hfut/xc/notice.ts +2 -2
- package/lib/routes/hinatazaka46/blog.ts +35 -35
- package/lib/routes/hitcon/zeroday.ts +3 -3
- package/lib/routes/hitsz/article.ts +2 -2
- package/lib/routes/hizu/index.ts +25 -25
- package/lib/routes/hkej/index.ts +2 -2
- package/lib/routes/hkepc/index.ts +2 -2
- package/lib/routes/hket/index.ts +3 -3
- package/lib/routes/hkushop/namespace.ts +9 -0
- package/lib/routes/hkushop/vinyl-or-picture-lp.ts +87 -0
- package/lib/routes/hljucm/yjsy.ts +2 -2
- package/lib/routes/hnrb/index.ts +11 -11
- package/lib/routes/hongkong/dh.ts +3 -3
- package/lib/routes/hostmonit/cloudflareyes.ts +3 -3
- package/lib/routes/hottoys/index.ts +2 -2
- package/lib/routes/hoyolab/news.ts +21 -21
- package/lib/routes/hrbeu/cec/list.ts +82 -0
- package/lib/routes/hrbeu/job/calendar.ts +2 -2
- package/lib/routes/hrbeu/job/list.ts +2 -2
- package/lib/routes/hrbeu/uae/news.ts +2 -2
- package/lib/routes/hrbeu/ugs/news.ts +21 -21
- package/lib/routes/hrbeu/yjsy/list.ts +2 -2
- package/lib/routes/hrbust/cs.ts +100 -0
- package/lib/routes/hrbust/gzc.ts +97 -0
- package/lib/routes/hrbust/jwzx.ts +8 -8
- package/lib/routes/hrbust/lib.ts +97 -0
- package/lib/routes/hrbust/news.ts +9 -10
- package/lib/routes/hrbust/nic.ts +5 -8
- package/lib/routes/huanqiu/index.ts +2 -2
- package/lib/routes/hubu/index.ts +3 -3
- package/lib/routes/hubu/zhxy.ts +19 -19
- package/lib/routes/hunau/gfxy/index.ts +2 -2
- package/lib/routes/hunau/ied.ts +3 -3
- package/lib/routes/hunau/jwc.ts +2 -2
- package/lib/routes/hunau/xky/index.ts +2 -2
- package/lib/routes/hupu/index.ts +2 -2
- package/lib/routes/hust/aia/notice.ts +2 -2
- package/lib/routes/hust/gs.ts +31 -31
- package/lib/routes/hust/mse.ts +66 -66
- package/lib/routes/huxiu/channel.ts +8 -8
- package/lib/routes/huxiu/member.ts +2 -2
- package/lib/routes/huxiu/util.ts +11 -9
- package/lib/routes/hypergryph/arknights/announce.ts +7 -7
- package/lib/routes/hypergryph/arknights/news.ts +3 -3
- package/lib/routes/ianspriggs/index.ts +2 -2
- package/lib/routes/icbc/whpj.ts +2 -2
- package/lib/routes/idaily/index.ts +3 -3
- package/lib/routes/iehou/index.ts +3 -3
- package/lib/routes/ielts/index.ts +1 -1
- package/lib/routes/ifanr/category.ts +7 -2
- package/lib/routes/ifanr/digest.ts +1 -1
- package/lib/routes/ifanr/index.ts +1 -1
- package/lib/routes/ifeng/feng.ts +2 -2
- package/lib/routes/imdb/chart.ts +2 -2
- package/lib/routes/indienova/column.ts +20 -20
- package/lib/routes/inewsweek/index.ts +3 -3
- package/lib/routes/infzm/index.ts +3 -3
- package/lib/routes/instructables/projects.ts +22 -17
- package/lib/routes/investor/index.ts +16 -16
- package/lib/routes/iplaysoft/category.ts +49 -0
- package/lib/routes/iplaysoft/index.ts +48 -41
- package/lib/routes/iplaysoft/namespace.ts +1 -0
- package/lib/routes/iplaysoft/tag.ts +49 -0
- package/lib/routes/iplaysoft/utils.ts +34 -0
- package/lib/routes/iqiyi/video.ts +1 -1
- package/lib/routes/iresearch/weekly.ts +1 -1
- package/lib/routes/ithome/index.ts +2 -2
- package/lib/routes/ithome/ranking.ts +2 -2
- package/lib/routes/ithome/tw/feeds.ts +2 -2
- package/lib/routes/japanpost/utils.ts +2 -2
- package/lib/routes/javdb/actors.ts +2 -2
- package/lib/routes/javdb/index.ts +9 -9
- package/lib/routes/javdb/makers.ts +2 -2
- package/lib/routes/javdb/rankings.ts +6 -6
- package/lib/routes/javdb/search.ts +6 -6
- package/lib/routes/javdb/series.ts +2 -2
- package/lib/routes/javdb/tags.ts +3 -3
- package/lib/routes/javdb/videocodes.ts +2 -2
- package/lib/routes/javlibrary/bestrated.ts +2 -2
- package/lib/routes/javlibrary/bestreviews.ts +2 -2
- package/lib/routes/javlibrary/genre.ts +2 -2
- package/lib/routes/javlibrary/maker.ts +2 -2
- package/lib/routes/javlibrary/mostwanted.ts +2 -2
- package/lib/routes/javlibrary/newrelease.ts +2 -2
- package/lib/routes/javlibrary/star.ts +2 -2
- package/lib/routes/javlibrary/user.ts +2 -2
- package/lib/routes/jin10/category.ts +223 -0
- package/lib/routes/jinritemai/docs.ts +6 -6
- package/lib/routes/jinse/catalogue.ts +5 -5
- package/lib/routes/jinse/lives.ts +2 -2
- package/lib/routes/jinse/timeline.ts +3 -3
- package/lib/routes/joins/chinese.ts +15 -15
- package/lib/routes/jornada/index.ts +13 -13
- package/lib/routes/joshwcomeau/latest.ts +59 -0
- package/lib/routes/joshwcomeau/namespace.ts +8 -0
- package/lib/routes/joshwcomeau/popular.ts +38 -0
- package/lib/routes/joshwcomeau/utils.ts +61 -0
- package/lib/routes/jsu/jwc.ts +2 -2
- package/lib/routes/juejin/collections.ts +1 -1
- package/lib/routes/juejin/dynamic.ts +11 -1
- package/lib/routes/juejin/pins.ts +2 -2
- package/lib/routes/juejin/trending.ts +17 -17
- package/lib/routes/jump/discount.ts +14 -14
- package/lib/routes/kamen-rider-official/news.ts +31 -31
- package/lib/routes/kanxue/topic.ts +21 -21
- package/lib/routes/kaopu/news.ts +2 -2
- package/lib/routes/kbs/news.ts +2 -2
- package/lib/routes/kbs/today.ts +2 -2
- package/lib/routes/kcna/news.ts +13 -13
- package/lib/routes/kemono/index.ts +6 -5
- package/lib/routes/komiic/comic.ts +88 -0
- package/lib/routes/komiic/namespace.ts +7 -0
- package/lib/routes/konachan/post.ts +2 -2
- package/lib/routes/kpopping/kpics.ts +218 -0
- package/lib/routes/kpopping/namespace.ts +9 -0
- package/lib/routes/kpopping/news.ts +197 -0
- package/lib/routes/kpopping/templates/description.art +17 -0
- package/lib/routes/kurogames/namespace.ts +1 -1
- package/lib/routes/kurogames/wutheringwaves/constants.ts +34 -0
- package/lib/routes/kurogames/wutheringwaves/news.ts +60 -33
- package/lib/routes/kurogames/wutheringwaves/utils.ts +79 -0
- package/lib/routes/landiannews/category.ts +48 -0
- package/lib/routes/landiannews/index.ts +44 -0
- package/lib/routes/landiannews/namespace.ts +9 -0
- package/lib/routes/landiannews/tag.ts +48 -0
- package/lib/routes/landiannews/utils.ts +34 -0
- package/lib/routes/latepost/index.ts +3 -3
- package/lib/routes/leagueoflegends/namespace.ts +8 -0
- package/lib/routes/leagueoflegends/patch-notes.ts +76 -0
- package/lib/routes/learnblockchain/posts.ts +17 -17
- package/lib/routes/lens/namespace.ts +7 -0
- package/lib/routes/lens/profile.ts +80 -0
- package/lib/routes/likeshop/index.ts +43 -0
- package/lib/routes/likeshop/namespace.ts +7 -0
- package/lib/routes/line/today.ts +3 -3
- package/lib/routes/linkedin/cn/index.ts +7 -7
- package/lib/routes/linkedin/jobs.ts +14 -14
- package/lib/routes/linkedin/posts.ts +64 -0
- package/lib/routes/linkedin/utils.ts +75 -1
- package/lib/routes/lofter/tag.ts +2 -2
- package/lib/routes/logclub/report.ts +2 -2
- package/lib/routes/loltw/news.ts +2 -2
- package/lib/routes/loongarch/post.ts +1 -0
- package/lib/routes/lovelive-anime/news.ts +5 -5
- package/lib/routes/lovelive-anime/topics.ts +5 -5
- package/lib/routes/lrepacks/index.ts +11 -11
- package/lib/routes/lsnu/jiaowc/tzgg.ts +2 -2
- package/lib/routes/ltaaa/article.ts +180 -0
- package/lib/routes/ltaaa/namespace.ts +9 -0
- package/lib/routes/ltaaa/templates/description.art +7 -0
- package/lib/routes/lvv2/news.ts +5 -5
- package/lib/routes/lvv2/top.ts +5 -5
- package/lib/routes/malaysiakini/index.ts +8 -8
- package/lib/routes/mashiro/index.ts +62 -0
- package/lib/routes/mashiro/namespace.ts +11 -0
- package/lib/routes/mastodon/timeline-local.ts +1 -1
- package/lib/routes/mastodon/timeline-remote.ts +1 -1
- package/lib/routes/matters/latest.ts +2 -2
- package/lib/routes/mckinsey/cn/index.ts +19 -19
- package/lib/routes/medsci/index.ts +27 -27
- package/lib/routes/meishichina/index.ts +189 -189
- package/lib/routes/meituan/tech.ts +31 -37
- package/lib/routes/melonbooks/namespace.ts +9 -0
- package/lib/routes/melonbooks/parser.ts +39 -0
- package/lib/routes/melonbooks/search.ts +44 -0
- package/lib/routes/mercari/keyword.ts +67 -0
- package/lib/routes/mercari/namespace.ts +9 -0
- package/lib/routes/mercari/templates/item.art +46 -0
- package/lib/routes/mercari/templates/shopItem.art +46 -0
- package/lib/routes/mercari/types.ts +278 -0
- package/lib/routes/mercari/util.ts +308 -0
- package/lib/routes/meteor/index.ts +1 -1
- package/lib/routes/mihoyo/bbs/img-ranking.ts +20 -20
- package/lib/routes/mihoyo/bbs/official.ts +6 -6
- package/lib/routes/mihoyo/sr/news.ts +3 -3
- package/lib/routes/mihoyo/ys/news.ts +3 -3
- package/lib/routes/mindmeister/example.ts +27 -27
- package/lib/routes/misskey/home-timeline.ts +99 -0
- package/lib/routes/misskey/user-timeline.ts +11 -9
- package/lib/routes/misskey/utils.ts +6 -6
- package/lib/routes/mittrchina/index.ts +5 -5
- package/lib/routes/miui/firmware/index.ts +6 -6
- package/lib/routes/mixcloud/index.ts +2 -2
- package/lib/routes/modian/zhongchou.ts +18 -18
- package/lib/routes/mrm/index.ts +2 -2
- package/lib/routes/mwm/index.ts +2 -2
- package/lib/routes/mycard520/namespace.ts +9 -0
- package/lib/routes/mycard520/news.ts +252 -0
- package/lib/routes/mydrivers/rank.ts +2 -2
- package/lib/routes/myfigurecollection/activity.ts +19 -19
- package/lib/routes/myfigurecollection/index.ts +2 -2
- package/lib/routes/mygopen/index.ts +1 -1
- package/lib/routes/mysql/release.ts +1 -1
- package/lib/routes/nature/research.ts +10 -10
- package/lib/routes/nautiljon/manga-releases.ts +72 -0
- package/lib/routes/nautiljon/namespace.ts +7 -0
- package/lib/routes/nbd/index.ts +2 -2
- package/lib/routes/ncc-cma/cmdp.ts +27 -27
- package/lib/routes/ncepu/master/masterinfo.ts +2 -2
- package/lib/routes/neea/jlpt.ts +91 -53
- package/lib/routes/neea/namespace.ts +1 -1
- package/lib/routes/neu/bmie.ts +16 -16
- package/lib/routes/neu/news.ts +16 -16
- package/lib/routes/newsmarket/index.ts +5 -5
- package/lib/routes/nextapple/realtime.ts +5 -5
- package/lib/routes/ngocn2/index.ts +2 -2
- package/lib/routes/nhentai/util.ts +7 -2
- package/lib/routes/nhk/news.ts +2 -2
- package/lib/routes/nikkei/news.ts +2 -2
- package/lib/routes/nippon/index.ts +2 -2
- package/lib/routes/njnu/ceai/ceai.ts +2 -2
- package/lib/routes/njnu/jwc/jwc.ts +2 -2
- package/lib/routes/nju/exchangesys.ts +2 -2
- package/lib/routes/nju/jw.ts +2 -2
- package/lib/routes/nju/rczp.ts +2 -2
- package/lib/routes/nju/scit.ts +2 -2
- package/lib/routes/nju/zbb.ts +2 -2
- package/lib/routes/njupt/jwc.ts +2 -2
- package/lib/routes/njust/cwc.ts +2 -2
- package/lib/routes/njust/dgxg.ts +2 -2
- package/lib/routes/njust/eo.ts +6 -6
- package/lib/routes/njust/eoe.ts +2 -2
- package/lib/routes/njust/gs.ts +2 -2
- package/lib/routes/njust/jwc.ts +2 -2
- package/lib/routes/njust/utils.ts +1 -1
- package/lib/routes/nlc/read.ts +3 -3
- package/lib/routes/nltimes/news.ts +2 -2
- package/lib/routes/nodejs/blog.ts +12 -12
- package/lib/routes/nogizaka46/blog.ts +42 -42
- package/lib/routes/nosec/index.ts +8 -8
- package/lib/routes/notefolio/search.ts +14 -14
- package/lib/routes/now/news.ts +9 -9
- package/lib/routes/nowcoder/discuss.ts +2 -2
- package/lib/routes/nowcoder/jobcenter.ts +6 -6
- package/lib/routes/nua/dc.ts +7 -7
- package/lib/routes/nua/gra.ts +4 -4
- package/lib/routes/nua/index.ts +3 -3
- package/lib/routes/nua/lib.ts +5 -5
- package/lib/routes/nua/sxw.ts +6 -6
- package/lib/routes/nuaa/college/cs.ts +2 -2
- package/lib/routes/nuaa/jwc/jwc.ts +2 -2
- package/lib/routes/nuaa/yjsy/yjsy.ts +2 -2
- package/lib/routes/nudt/yjszs.ts +2 -2
- package/lib/routes/nuist/bulletin.ts +5 -5
- package/lib/routes/nuist/cas.ts +2 -2
- package/lib/routes/nuist/jwc.ts +2 -2
- package/lib/routes/nuist/scs.ts +2 -2
- package/lib/routes/nuist/sese.ts +2 -2
- package/lib/routes/nwafu/all.ts +3 -3
- package/lib/routes/nwnu/namespace.ts +7 -0
- package/lib/routes/nwnu/routes/college/csse.ts +133 -0
- package/lib/routes/nwnu/routes/department/academic-affairs.ts +115 -0
- package/lib/routes/nwnu/routes/department/postgraduate.ts +139 -0
- package/lib/routes/nwnu/routes/lib/embed-resource.ts +14 -0
- package/lib/routes/nytimes/index.ts +1 -1
- package/lib/routes/oceanengine/arithmetic-index.ts +1 -1
- package/lib/routes/odaily/post.ts +2 -2
- package/lib/routes/oilchem/index.ts +1 -1
- package/lib/routes/okx/index.ts +125 -0
- package/lib/routes/okx/namespace.ts +7 -0
- package/lib/routes/oncc/money18.ts +3 -3
- package/lib/routes/oo-software/changelog.ts +5 -5
- package/lib/routes/openai/blog.ts +2 -2
- package/lib/routes/openrice/chart.ts +6 -6
- package/lib/routes/openrice/offers.ts +3 -3
- package/lib/routes/openrice/promos.ts +3 -3
- package/lib/routes/openrice/voting.ts +6 -6
- package/lib/routes/oreno3d/main.ts +2 -2
- package/lib/routes/oschina/column.ts +1 -1
- package/lib/routes/oschina/news.ts +2 -2
- package/lib/routes/ouc/it-tx.ts +2 -2
- package/lib/routes/ouc/it.ts +2 -2
- package/lib/routes/panewslab/profundity.ts +1 -1
- package/lib/routes/papers/category.ts +1222 -0
- package/lib/routes/papers/query.ts +4 -4
- package/lib/routes/papers/templates/description.art +9 -6
- package/lib/routes/parliament/section77.ts +3 -3
- package/lib/routes/parliament.uk/commonslibrary.ts +1 -1
- package/lib/routes/parliament.uk/lordslibrary.ts +1 -1
- package/lib/routes/parliament.uk/petitions.ts +1 -1
- package/lib/routes/patagonia/new-arrivals.ts +2 -2
- package/lib/routes/patreon/feed.ts +2 -2
- package/lib/routes/patreon/templates/description.art +2 -0
- package/lib/routes/patreon/types.ts +8 -12
- package/lib/routes/people/index.ts +2 -2
- package/lib/routes/people/liuyan.ts +2 -2
- package/lib/routes/peopo/topic.ts +18 -18
- package/lib/routes/picnob/user.ts +153 -106
- package/lib/routes/pincong/utils.ts +1 -1
- package/lib/routes/pingwest/tag.ts +3 -3
- package/lib/routes/pingwest/user.ts +3 -3
- package/lib/routes/pinterest/user.ts +9 -0
- package/lib/routes/pixiv/api/get-ranking.ts +1 -1
- package/lib/routes/pixiv/novel-api/content/utils.ts +1 -0
- package/lib/routes/pku/scc/recruit.ts +2 -2
- package/lib/routes/playno1/av.ts +3 -3
- package/lib/routes/playno1/st.ts +2 -2
- package/lib/routes/plurk/top.ts +5 -5
- package/lib/routes/pnas/index.ts +1 -1
- package/lib/routes/priconne-redive/news.ts +3 -3
- package/lib/routes/producthunt/templates/description.art +19 -0
- package/lib/routes/producthunt/today.ts +49 -22
- package/lib/routes/psnine/game.ts +42 -0
- package/lib/routes/psnine/index.ts +58 -0
- package/lib/routes/psnine/namespace.ts +8 -0
- package/lib/routes/psnine/node.ts +80 -0
- package/lib/routes/psnine/shuzhe.ts +43 -0
- package/lib/routes/psnine/trade.ts +58 -0
- package/lib/routes/publico/ciencias.ts +55 -0
- package/lib/routes/publico/culturas.ts +55 -0
- package/lib/routes/publico/economia.ts +55 -0
- package/lib/routes/publico/internacional.ts +55 -0
- package/lib/routes/publico/items-processor.ts +20 -0
- package/lib/routes/publico/mujer.ts +55 -0
- package/lib/routes/publico/namespace.ts +6 -0
- package/lib/routes/publico/opinion.ts +55 -0
- package/lib/routes/publico/politica.ts +56 -0
- package/lib/routes/publico/public.ts +48 -0
- package/lib/routes/publico/sociedad.ts +55 -0
- package/lib/routes/publico/tremending.ts +48 -0
- package/lib/routes/qianzhan/column.ts +2 -2
- package/lib/routes/qianzhan/rank.ts +2 -2
- package/lib/routes/qiche365/recall.ts +2 -2
- package/lib/routes/qm120/news.ts +8 -8
- package/lib/routes/qoo-app/apps/comment.ts +2 -2
- package/lib/routes/qoo-app/news.ts +2 -2
- package/lib/routes/qq/ac/rank.ts +2 -2
- package/lib/routes/qq/cfhd/index.ts +7 -7
- package/lib/routes/qq88/index.ts +2 -2
- package/lib/routes/qqorw/index.ts +2 -2
- package/lib/routes/questmobile/report.ts +75 -75
- package/lib/routes/quicker/qa.ts +12 -12
- package/lib/routes/quicker/share.ts +5 -5
- package/lib/routes/quicker/user.ts +2 -2
- package/lib/routes/radio-canada/latest.ts +2 -2
- package/lib/routes/raspberrypi/magazine.ts +174 -0
- package/lib/routes/raspberrypi/namespace.ts +9 -0
- package/lib/routes/raspberrypi/templates/description.art +21 -0
- package/lib/routes/readhub/daily.ts +2 -2
- package/lib/routes/readhub/index.ts +2 -2
- package/lib/routes/reuters/common.ts +17 -2
- package/lib/routes/rodong/news.ts +2 -2
- package/lib/routes/rsc/journal.ts +3 -3
- package/lib/routes/rsshub/transform/html.ts +7 -7
- package/lib/routes/rsshub/transform/json.ts +10 -10
- package/lib/routes/ruankao/news.ts +1 -1
- package/lib/routes/sakurazaka46/blog.ts +36 -36
- package/lib/routes/sara/index.ts +2 -2
- package/lib/routes/sass/gs/index.ts +2 -2
- package/lib/routes/science/blogs.ts +2 -2
- package/lib/routes/science/current.ts +7 -7
- package/lib/routes/sciencedirect/current-issue.ts +93 -0
- package/lib/routes/sciencenet/blog.ts +9 -9
- package/lib/routes/sctv/programme.ts +47 -47
- package/lib/routes/scut/gzic/notice.ts +2 -2
- package/lib/routes/scut/jwc/notice.ts +2 -2
- package/lib/routes/scut/jwc/school.ts +2 -2
- package/lib/routes/scut/smae/notice.ts +2 -2
- package/lib/routes/sdu/cmse.ts +2 -2
- package/lib/routes/sdu/epe.ts +2 -2
- package/lib/routes/sdu/gjsw.ts +2 -2
- package/lib/routes/sdu/mech.ts +2 -2
- package/lib/routes/sdu/qd/xszxqd.ts +2 -2
- package/lib/routes/sdu/qd/xyb.ts +2 -2
- package/lib/routes/sdu/sc.ts +2 -2
- package/lib/routes/sdu/wh/jwc.ts +2 -2
- package/lib/routes/sdu/wh/news.ts +2 -2
- package/lib/routes/sdu/ygb.ts +2 -2
- package/lib/routes/sdust/yjsy/zhaosheng.ts +6 -6
- package/lib/routes/seekingalpha/index.ts +3 -3
- package/lib/routes/sehuatang/index.ts +7 -7
- package/lib/routes/sensortower/blog.ts +2 -2
- package/lib/routes/setn/index.ts +7 -7
- package/lib/routes/seu/cse/index.ts +2 -2
- package/lib/routes/seu/yzb/index.ts +2 -2
- package/lib/routes/shiep/index.ts +16 -16
- package/lib/routes/shisu/news.ts +2 -2
- package/lib/routes/shopify/apps/[handle].reviews.ts +1 -1
- package/lib/routes/shopify/apps/search.ts +6 -3
- package/lib/routes/shu/global.ts +2 -2
- package/lib/routes/shu/gs.ts +2 -2
- package/lib/routes/shu/index.ts +2 -2
- package/lib/routes/shu/jwb.ts +2 -2
- package/lib/routes/shu/xykd.ts +2 -2
- package/lib/routes/sicau/dky.ts +2 -2
- package/lib/routes/sicau/yan.ts +2 -2
- package/lib/routes/sicau/zsjy.ts +2 -2
- package/lib/routes/simpleinfo/index.ts +8 -8
- package/lib/routes/sina/discovery.ts +2 -2
- package/lib/routes/sina/finance/china.ts +2 -2
- package/lib/routes/sina/finance/stock/usstock.ts +2 -2
- package/lib/routes/sina/rollnews.ts +2 -2
- package/lib/routes/sjtu/gs.ts +8 -8
- package/lib/routes/sjtu/jwc.ts +2 -2
- package/lib/routes/sjtu/tongqu/activity.ts +2 -2
- package/lib/routes/sjtu/yzb/zkxx.ts +2 -2
- package/lib/routes/sketis/isabelle-dev/blog/index.ts +1 -1
- package/lib/routes/slowmist/slowmist.ts +2 -2
- package/lib/routes/smashingmagazine/category.ts +34 -34
- package/lib/routes/smzdm/haowen-fenlei.ts +2 -2
- package/lib/routes/sobooks/index.ts +9 -9
- package/lib/routes/sobooks/tag.ts +7 -7
- package/lib/routes/sohu/mp.ts +3 -2
- package/lib/routes/spankbang/new-videos.ts +1 -1
- package/lib/routes/spotify/playlist.ts +3 -0
- package/lib/routes/spotify/show.ts +1 -1
- package/lib/routes/sputniknews/index.ts +38 -38
- package/lib/routes/sqmc/www.ts +2 -2
- package/lib/routes/sse/sselawsrules.ts +27 -27
- package/lib/routes/startuplatte/index.ts +2 -2
- package/lib/routes/stcn/index.ts +241 -136
- package/lib/routes/stcn/kx.ts +144 -0
- package/lib/routes/stcn/rank.ts +249 -0
- package/lib/routes/steam/search.ts +1 -2
- package/lib/routes/storm/index.ts +2 -2
- package/lib/routes/swjtu/namespace.ts +1 -1
- package/lib/routes/swjtu/scai.ts +117 -0
- package/lib/routes/swjtu/{scai/bks.ts → sports.ts} +16 -15
- package/lib/routes/swjtu/xg.ts +3 -3
- package/lib/routes/swpu/bgw.ts +2 -2
- package/lib/routes/swpu/cjxy.ts +2 -2
- package/lib/routes/swpu/dean.ts +2 -2
- package/lib/routes/swpu/dxy.ts +2 -2
- package/lib/routes/swpu/is.ts +2 -2
- package/lib/routes/swpu/scs.ts +2 -2
- package/lib/routes/sysu/ygafz.ts +6 -6
- package/lib/routes/szse/disclosure/listed-notice.ts +111 -0
- package/lib/routes/szse/inquire.ts +5 -5
- package/lib/routes/szse/projectdynamic.ts +21 -21
- package/lib/routes/szse/rule.ts +70 -70
- package/lib/routes/szse/templates/inquire.art +1 -1
- package/lib/routes/szu/yz/index.ts +2 -2
- package/lib/routes/t66y/index.ts +12 -12
- package/lib/routes/tangshufang/index.ts +8 -8
- package/lib/routes/taobao/zhongchou.ts +2 -2
- package/lib/routes/taoguba/index.ts +2 -2
- package/lib/routes/taptap/changelog-intl.ts +3 -3
- package/lib/routes/tass/news.ts +2 -2
- package/lib/routes/telecompaper/news.ts +3 -3
- package/lib/routes/telecompaper/search.ts +6 -6
- package/lib/routes/telegram/channel.ts +2 -2
- package/lib/routes/telegram/stickerpack.ts +19 -10
- package/lib/routes/telegram/tglib/client.ts +18 -18
- package/lib/routes/tencent/news/author.ts +40 -37
- package/lib/routes/tencent/pvp/newsindex.ts +2 -2
- package/lib/routes/tesla/cx.ts +47 -47
- package/lib/routes/test/index.ts +1 -1
- package/lib/routes/tgbus/list.ts +2 -2
- package/lib/routes/the/index.ts +13 -13
- package/lib/routes/theatlantic/news.ts +2 -2
- package/lib/routes/theblock/index.ts +142 -0
- package/lib/routes/theblock/namespace.ts +7 -0
- package/lib/routes/theblockbeats/index.ts +5 -5
- package/lib/routes/thecover/channel.ts +2 -2
- package/lib/routes/theinitium/app.ts +82 -53
- package/lib/routes/theinitium/channel.ts +3 -3
- package/lib/routes/themoviedb/sheet.ts +6 -6
- package/lib/routes/thepaper/channel.ts +14 -14
- package/lib/routes/thepaper/list.ts +98 -98
- package/lib/routes/thepetcity/index.ts +6 -6
- package/lib/routes/theverge/index.ts +86 -75
- package/lib/routes/theverge/templates/header.art +19 -0
- package/lib/routes/thoughtco/index.ts +293 -293
- package/lib/routes/threads/index.ts +73 -54
- package/lib/routes/threads/utils.ts +60 -78
- package/lib/routes/tiktok/user.ts +1 -1
- package/lib/routes/timednews/news.ts +3 -3
- package/lib/routes/tingshuitz/changsha.ts +4 -4
- package/lib/routes/tju/cic/index.ts +2 -2
- package/lib/routes/tju/news/index.ts +2 -2
- package/lib/routes/tju/oaa/index.ts +2 -2
- package/lib/routes/tju/yzb/index.ts +2 -2
- package/lib/routes/tmtpost/column.ts +298 -0
- package/lib/routes/tmtpost/new.ts +42 -0
- package/lib/routes/tmtpost/templates/description.art +7 -0
- package/lib/routes/tmtpost/util.ts +207 -0
- package/lib/routes/tokeninsight/report.ts +3 -3
- package/lib/routes/tongji/sse/notice.ts +2 -2
- package/lib/routes/topys/index.ts +1 -1
- package/lib/routes/toranoana/namespace.ts +7 -0
- package/lib/routes/toranoana/news.ts +110 -0
- package/lib/routes/toutiao/a-bogus.ts +15 -15
- package/lib/routes/transformer-circuits/index.ts +124 -0
- package/lib/routes/transformer-circuits/namespace.ts +7 -0
- package/lib/routes/transformer-circuits/templates/article.art +62 -0
- package/lib/routes/tsinghua/lib/zydt.ts +3 -3
- package/lib/routes/tvb/news.ts +6 -6
- package/lib/routes/tvtropes/featured.ts +2 -2
- package/lib/routes/twitter/api/developer-api/user.ts +2 -2
- package/lib/routes/twitter/namespace.ts +1 -1
- package/lib/routes/twitter/user.ts +3 -4
- package/lib/routes/twitter/utils.ts +13 -13
- package/lib/routes/txks/news.ts +1 -1
- package/lib/routes/txrjy/fornumtopic.ts +2 -2
- package/lib/routes/ucas/index.ts +2 -2
- package/lib/routes/uchicago/current.ts +3 -3
- package/lib/routes/udn/breaking-news.ts +2 -2
- package/lib/routes/udn/global/index.ts +2 -2
- package/lib/routes/udn/global/tag.ts +1 -1
- package/lib/routes/uestc/cqe.ts +2 -2
- package/lib/routes/uestc/gr.ts +3 -3
- package/lib/routes/uestc/jwc.ts +3 -3
- package/lib/routes/uestc/news.ts +2 -2
- package/lib/routes/uestc/sise.ts +2 -2
- package/lib/routes/ulapia/index.ts +2 -2
- package/lib/routes/unipd/ilbolive/news.ts +104 -0
- package/lib/routes/unipd/namespace.ts +7 -0
- package/lib/routes/upc/jsj.ts +2 -2
- package/lib/routes/upc/jwc.ts +2 -2
- package/lib/routes/upc/main.ts +2 -2
- package/lib/routes/uptimerobot/rss.ts +2 -2
- package/lib/routes/uraaka-joshi/uraaka-joshi-user.ts +2 -2
- package/lib/routes/uraaka-joshi/uraaka-joshi.ts +42 -46
- package/lib/routes/usepanda/index.ts +2 -2
- package/lib/routes/ustb/tj/news.ts +2 -2
- package/lib/routes/ustb/yjsy/news.ts +2 -2
- package/lib/routes/ustc/eeis.ts +2 -2
- package/lib/routes/ustc/gs.ts +2 -2
- package/lib/routes/ustc/index.ts +2 -2
- package/lib/routes/ustc/job.ts +2 -2
- package/lib/routes/ustc/jwc.ts +2 -2
- package/lib/routes/ustc/math.ts +2 -2
- package/lib/routes/ustc/scms.ts +2 -2
- package/lib/routes/ustc/sist.ts +2 -2
- package/lib/routes/usts/jwch.ts +2 -2
- package/lib/routes/utgd/category.ts +2 -2
- package/lib/routes/utgd/topic.ts +1 -1
- package/lib/routes/utgd/utils.ts +1 -1
- package/lib/routes/uw/gix/news.ts +2 -2
- package/lib/routes/vcb-s/category.ts +2 -2
- package/lib/routes/vom/featured.ts +2 -2
- package/lib/routes/wainao/namespace.ts +8 -0
- package/lib/routes/wainao/templates/description.art +9 -0
- package/lib/routes/wainao/topics.ts +214 -0
- package/lib/routes/wainao/wainao-reads.ts +49 -0
- package/lib/routes/wallstreetcn/live.ts +2 -2
- package/lib/routes/wallstreetcn/news.ts +12 -12
- package/lib/routes/wechat/tgchannel.ts +4 -4
- package/lib/routes/weibo/friends.ts +1 -1
- package/lib/routes/weibo/group.ts +1 -1
- package/lib/routes/weibo/namespace.ts +1 -0
- package/lib/routes/weibo/timeline.ts +3 -1
- package/lib/routes/weibo/user-bookmarks.ts +1 -1
- package/lib/routes/weibo/user.ts +11 -3
- package/lib/routes/weibo/utils.ts +11 -3
- package/lib/routes/wfu/news.ts +4 -4
- package/lib/routes/whitehouse/news.ts +2 -2
- package/lib/routes/who/news-room.ts +6 -6
- package/lib/routes/who/news.ts +3 -3
- package/lib/routes/who/speeches.ts +3 -3
- package/lib/routes/whu/cs.ts +2 -2
- package/lib/routes/whu/gs/index.ts +2 -2
- package/lib/routes/whu/swrh.ts +3 -3
- package/lib/routes/wmpvp/index.ts +2 -2
- package/lib/routes/wohnnet/index.ts +129 -0
- package/lib/routes/wohnnet/namespace.ts +8 -0
- package/lib/routes/wordpress/util.ts +1 -1
- package/lib/routes/woshipm/popular.ts +2 -2
- package/lib/routes/wsj/news.ts +6 -6
- package/lib/routes/wsyu/news.ts +2 -2
- package/lib/routes/wtu/index.ts +2 -2
- package/lib/routes/wtu/job.ts +2 -2
- package/lib/routes/wyzxwk/article.ts +21 -21
- package/lib/routes/x6d/index.ts +17 -17
- package/lib/routes/xaufe/jiaowu.ts +2 -2
- package/lib/routes/xaut/index.ts +2 -2
- package/lib/routes/xaut/jwc.ts +3 -3
- package/lib/routes/xaut/rsc.ts +3 -3
- package/lib/routes/xiaoheihe/discount.ts +2 -2
- package/lib/routes/xiaoheihe/util.ts +1 -1
- package/lib/routes/xiaohongshu/util.ts +2 -2
- package/lib/routes/xiaoyuzhou/pickup.ts +1 -1
- package/lib/routes/xiaoyuzhou/podcast.ts +27 -27
- package/lib/routes/xidian/jwc.ts +2 -2
- package/lib/routes/xinpianchang/rank.ts +7 -7
- package/lib/routes/xjtu/2yuan/news.ts +11 -11
- package/lib/routes/xjtu/job.ts +3 -3
- package/lib/routes/xjtu/std.ts +2 -2
- package/lib/routes/xjtu/yz.ts +74 -0
- package/lib/routes/xjtu/zs.ts +170 -0
- package/lib/routes/xkb/index.ts +8 -8
- package/lib/routes/xmnn/epaper.ts +2 -2
- package/lib/routes/xsijishe/rank.ts +49 -17
- package/lib/routes/xsijishe/utils.ts +25 -0
- package/lib/routes/xueqiu/stock-info.ts +2 -2
- package/lib/routes/xueqiu/timeline.ts +3 -3
- package/lib/routes/xueqiu/user.ts +2 -2
- package/lib/routes/yande/post.ts +2 -2
- package/lib/routes/ycwb/index.ts +6 -6
- package/lib/routes/yicai/dt.ts +39 -39
- package/lib/routes/yicai/news.ts +26 -26
- package/lib/routes/yicai/video.ts +36 -36
- package/lib/routes/ymgal/article.ts +2 -2
- package/lib/routes/yomiuri/news.ts +18 -18
- package/lib/routes/youmemark/index.ts +88 -0
- package/lib/routes/youmemark/namespace.ts +7 -0
- package/lib/routes/youtube/channel.ts +40 -16
- package/lib/routes/youtube/charts.ts +30 -30
- package/lib/routes/youtube/community.ts +1 -1
- package/lib/routes/youtube/user.ts +38 -9
- package/lib/routes/youtube/utils.ts +17 -0
- package/lib/routes/youzhiyouxing/materials.ts +2 -2
- package/lib/routes/yuque/book.ts +2 -2
- package/lib/routes/yuque/utils.ts +1 -0
- package/lib/routes/yxdown/news.ts +2 -2
- package/lib/routes/yxdzqb/index.ts +2 -2
- package/lib/routes/yxrb/home.ts +2 -2
- package/lib/routes/yyets/article.ts +2 -2
- package/lib/routes/yystv/category.ts +49 -51
- package/lib/routes/yystv/docs.ts +7 -9
- package/lib/routes/yystv/fetcher.ts +10 -0
- package/lib/routes/zaobao/realtime.ts +2 -2
- package/lib/routes/zaobao/util.ts +12 -3
- package/lib/routes/zaobao/znews.ts +2 -2
- package/lib/routes/zaozao/article.ts +2 -2
- package/lib/routes/zcmu/jwc/index.ts +2 -2
- package/lib/routes/zcmu/yxy/index.ts +2 -2
- package/lib/routes/zcool/discover.ts +51 -51
- package/lib/routes/zhihu/answers.ts +26 -54
- package/lib/routes/zhihu/timeline.ts +1 -2
- package/lib/routes/zhihu/utils.ts +5 -5
- package/lib/routes/zhihu/zhuanlan.ts +1 -2
- package/lib/routes/zhitongcaijing/index.ts +15 -15
- package/lib/routes/zhonglun/index.ts +3 -3
- package/lib/routes/zimuxia/index.ts +2 -2
- package/lib/routes/zjol/paper.ts +2 -2
- package/lib/routes/zju/career/index.ts +2 -2
- package/lib/routes/zju/cst/custom.ts +2 -2
- package/lib/routes/zju/cst/index.ts +2 -2
- package/lib/routes/zju/grs/index.ts +2 -2
- package/lib/routes/zju/physics/index.ts +2 -2
- package/lib/routes/zsxq/group.ts +2 -2
- package/lib/routes/zsxq/utils.ts +1 -1
- package/lib/routes/zyw/hot.ts +2 -2
- package/lib/utils/otel/metric.ts +3 -3
- package/lib/utils/otel/trace.ts +16 -16
- package/lib/utils/puppeteer-utils.test.ts +2 -2
- package/lib/utils/puppeteer.test.ts +2 -2
- package/lib/utils/puppeteer.ts +2 -2
- package/lib/utils/timezone.ts +1 -1
- package/package.json +70 -69
- package/lib/routes/apnews/api.ts +0 -77
- package/lib/routes/coomer/artist.ts +0 -33
- package/lib/routes/coomer/posts.ts +0 -32
- package/lib/routes/coomer/utils.ts +0 -57
- package/lib/routes/gcores/category.ts +0 -171
- package/lib/routes/gcores/collection.ts +0 -161
- package/lib/routes/gcores/tag.ts +0 -158
- package/lib/routes/papers/index.ts +0 -136
- package/lib/routes/producthunt/templates/descImg.art +0 -5
- package/lib/routes-deprecated/chuapp/index.js +0 -54
- package/lib/routes-deprecated/ltaaa/index.js +0 -69
- package/lib/routes-deprecated/psnine/game.js +0 -32
- package/lib/routes-deprecated/psnine/index.js +0 -33
- package/lib/routes-deprecated/psnine/news.js +0 -53
- package/lib/routes-deprecated/psnine/node.js +0 -54
- package/lib/routes-deprecated/psnine/shuzhe.js +0 -33
- package/lib/routes-deprecated/psnine/trade.js +0 -39
|
@@ -0,0 +1,218 @@
|
|
|
1
|
+
import { type Data, type DataItem, type Route, ViewType } from '@/types';
|
|
2
|
+
|
|
3
|
+
import { art } from '@/utils/render';
|
|
4
|
+
import cache from '@/utils/cache';
|
|
5
|
+
import { getCurrentPath } from '@/utils/helpers';
|
|
6
|
+
import ofetch from '@/utils/ofetch';
|
|
7
|
+
import { parseDate } from '@/utils/parse-date';
|
|
8
|
+
|
|
9
|
+
import { type CheerioAPI, type Cheerio, type Element, load } from 'cheerio';
|
|
10
|
+
import { type Context } from 'hono';
|
|
11
|
+
import path from 'node:path';
|
|
12
|
+
|
|
13
|
+
const __dirname = getCurrentPath(import.meta.url);
|
|
14
|
+
|
|
15
|
+
export const handler = async (ctx: Context): Promise<Data> => {
|
|
16
|
+
const { filter } = ctx.req.param();
|
|
17
|
+
const limit: number = Number.parseInt(ctx.req.query('limit') ?? '30', 10);
|
|
18
|
+
|
|
19
|
+
const baseUrl: string = 'https://kpopping.com';
|
|
20
|
+
const targetUrl: string = new URL(`kpics${filter ? `/${filter}` : ''}`, baseUrl).href;
|
|
21
|
+
|
|
22
|
+
const response = await ofetch(targetUrl);
|
|
23
|
+
const $: CheerioAPI = load(response);
|
|
24
|
+
const language = $('html').attr('lang') ?? 'en';
|
|
25
|
+
|
|
26
|
+
let items: DataItem[] = [];
|
|
27
|
+
|
|
28
|
+
items = $('div.pics div.matrix div.cell')
|
|
29
|
+
.slice(0, limit)
|
|
30
|
+
.toArray()
|
|
31
|
+
.map((el): Element => {
|
|
32
|
+
const $el: Cheerio<Element> = $(el);
|
|
33
|
+
|
|
34
|
+
const title: string = $el.find('figcaption section').text();
|
|
35
|
+
const description: string = art(path.join(__dirname, 'templates/description.art'), {
|
|
36
|
+
images: $el.find('a.picture img').attr('src')
|
|
37
|
+
? [
|
|
38
|
+
{
|
|
39
|
+
src: $el.find('a.picture img').attr('src'),
|
|
40
|
+
alt: title,
|
|
41
|
+
},
|
|
42
|
+
]
|
|
43
|
+
: undefined,
|
|
44
|
+
});
|
|
45
|
+
const linkUrl: string | undefined = $el.find('a').first().attr('href');
|
|
46
|
+
const authors: DataItem['author'] = $el.find('figcaption section a').contents().last().text();
|
|
47
|
+
const image: string | undefined = $el.find('a.picture img').attr('src');
|
|
48
|
+
|
|
49
|
+
const processedItem: DataItem = {
|
|
50
|
+
title,
|
|
51
|
+
description,
|
|
52
|
+
link: linkUrl ? new URL(linkUrl, baseUrl).href : undefined,
|
|
53
|
+
author: authors,
|
|
54
|
+
content: {
|
|
55
|
+
html: description,
|
|
56
|
+
text: description,
|
|
57
|
+
},
|
|
58
|
+
image,
|
|
59
|
+
banner: image,
|
|
60
|
+
language,
|
|
61
|
+
};
|
|
62
|
+
|
|
63
|
+
return processedItem;
|
|
64
|
+
});
|
|
65
|
+
|
|
66
|
+
items = (
|
|
67
|
+
await Promise.all(
|
|
68
|
+
items.map((item) => {
|
|
69
|
+
if (!item.link) {
|
|
70
|
+
return item;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
return cache.tryGet(item.link, async (): Promise<DataItem> => {
|
|
74
|
+
const detailResponse = await ofetch(item.link);
|
|
75
|
+
const $$: CheerioAPI = load(detailResponse);
|
|
76
|
+
|
|
77
|
+
const title: string = $$('h1').contents().first().text();
|
|
78
|
+
const description: string = art(path.join(__dirname, 'templates/description.art'), {
|
|
79
|
+
description: $$('div.pics').first().html(),
|
|
80
|
+
});
|
|
81
|
+
const pubDateStr: string | undefined = $$('meta[property="article:published_time"]').attr('content');
|
|
82
|
+
const categoryEls: Element[] = $$('div.buttons a').toArray();
|
|
83
|
+
const categories: string[] = [...new Set(categoryEls.map((el) => $$(el).text()).filter(Boolean))];
|
|
84
|
+
const authorEls: Element[] = $$('div.content-snippet aside:not(.like)').toArray();
|
|
85
|
+
const authors: DataItem['author'] = authorEls.map((authorEl) => {
|
|
86
|
+
const $$authorEl: Cheerio<Element> = $$(authorEl);
|
|
87
|
+
const $$authorAEl: Cheerio<Element> = $$authorEl.find('a').last();
|
|
88
|
+
|
|
89
|
+
return {
|
|
90
|
+
name: $$authorAEl.text(),
|
|
91
|
+
url: new URL($$authorAEl.attr('href') as string, baseUrl).href,
|
|
92
|
+
avatar: $$authorEl.find('img').attr('src'),
|
|
93
|
+
};
|
|
94
|
+
});
|
|
95
|
+
const image: string | undefined = $$('meta[name="twitter:image"]').attr('content');
|
|
96
|
+
const upDatedStr: string | undefined = $$('meta[property="article:modified_time"]').attr('content');
|
|
97
|
+
|
|
98
|
+
let processedItem: DataItem = {
|
|
99
|
+
title,
|
|
100
|
+
description,
|
|
101
|
+
pubDate: pubDateStr ? parseDate(pubDateStr) : item.pubDate,
|
|
102
|
+
category: categories,
|
|
103
|
+
author: authors,
|
|
104
|
+
content: {
|
|
105
|
+
html: description,
|
|
106
|
+
text: description,
|
|
107
|
+
},
|
|
108
|
+
image,
|
|
109
|
+
banner: image,
|
|
110
|
+
updated: upDatedStr ? parseDate(upDatedStr) : item.updated,
|
|
111
|
+
language,
|
|
112
|
+
};
|
|
113
|
+
|
|
114
|
+
const mediaEls: Element[] = $$('div.pics').first().find('img').toArray();
|
|
115
|
+
const medias: Record<string, Record<string, string>> = mediaEls.reduce((acc: Record<string, Record<string, string>>, mediaEl) => {
|
|
116
|
+
const $$mediaEl: Cheerio<Element> = $$(mediaEl);
|
|
117
|
+
const url: string | undefined = $$mediaEl.attr('src') ? new URL($$mediaEl.attr('src') as string, baseUrl).href : undefined;
|
|
118
|
+
|
|
119
|
+
if (!url) {
|
|
120
|
+
return acc;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
const medium: string = 'image';
|
|
124
|
+
const count: number = Object.values(acc).filter((m) => m.medium === medium).length + 1;
|
|
125
|
+
const key: string = `${medium}${count}`;
|
|
126
|
+
|
|
127
|
+
acc[key] = {
|
|
128
|
+
url,
|
|
129
|
+
medium,
|
|
130
|
+
title: $$mediaEl.attr('alt') || title,
|
|
131
|
+
description: $$mediaEl.attr('alt') || title,
|
|
132
|
+
thumbnail: url,
|
|
133
|
+
};
|
|
134
|
+
|
|
135
|
+
return acc;
|
|
136
|
+
}, {});
|
|
137
|
+
|
|
138
|
+
if (medias) {
|
|
139
|
+
processedItem = {
|
|
140
|
+
...processedItem,
|
|
141
|
+
media: medias,
|
|
142
|
+
};
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
return {
|
|
146
|
+
...item,
|
|
147
|
+
...processedItem,
|
|
148
|
+
};
|
|
149
|
+
});
|
|
150
|
+
})
|
|
151
|
+
)
|
|
152
|
+
).filter((_): _ is DataItem => true);
|
|
153
|
+
|
|
154
|
+
return {
|
|
155
|
+
title: $('title').text(),
|
|
156
|
+
description: $('meta[property="og:description"]').attr('content'),
|
|
157
|
+
link: targetUrl,
|
|
158
|
+
item: items,
|
|
159
|
+
allowEmpty: true,
|
|
160
|
+
image: $('meta[property="og:image"]').attr('content'),
|
|
161
|
+
author: $('meta[property="og:site_name"]').attr('content'),
|
|
162
|
+
language,
|
|
163
|
+
id: targetUrl,
|
|
164
|
+
};
|
|
165
|
+
};
|
|
166
|
+
|
|
167
|
+
export const route: Route = {
|
|
168
|
+
path: '/kpics/:filter{.+}?',
|
|
169
|
+
name: 'Pics',
|
|
170
|
+
url: 'kpopping.com',
|
|
171
|
+
maintainers: ['nczitzk'],
|
|
172
|
+
handler,
|
|
173
|
+
example: '/kpopping/kpics/gender-male/category-all/idol-any/group-any/order',
|
|
174
|
+
parameters: {
|
|
175
|
+
filter: 'Filter',
|
|
176
|
+
},
|
|
177
|
+
description: `:::tip
|
|
178
|
+
If you subscribe to [All male photo albums](https://kpopping.com/kpics/gender-male/category-all/idol-any/group-any/order),where the URL is \`https://kpopping.com/kpics/gender-male/category-all/idol-any/group-any/order\`, extract the part \`https://kpopping.com/kpics/\` to the end, which is \`gender-male/category-all/idol-any/group-any/order\`, and use it as the parameter to fill in. Therefore, the route will be [\`/kpopping/kpics/gender-male/category-all/idol-any/group-any/order\`](https://rsshub.app/kpopping/kpics/gender-male/category-all/idol-any/group-any/order).
|
|
179
|
+
:::
|
|
180
|
+
`,
|
|
181
|
+
categories: ['picture'],
|
|
182
|
+
features: {
|
|
183
|
+
requireConfig: false,
|
|
184
|
+
requirePuppeteer: false,
|
|
185
|
+
antiCrawler: false,
|
|
186
|
+
supportRadar: true,
|
|
187
|
+
supportBT: false,
|
|
188
|
+
supportPodcast: false,
|
|
189
|
+
supportScihub: false,
|
|
190
|
+
},
|
|
191
|
+
radar: [
|
|
192
|
+
{
|
|
193
|
+
source: ['kpopping.com/kpics/:filter'],
|
|
194
|
+
target: (params) => {
|
|
195
|
+
const filter: string = params.filter;
|
|
196
|
+
|
|
197
|
+
return `/kpopping/kpics${filter ? `/${filter}` : ''}`;
|
|
198
|
+
},
|
|
199
|
+
},
|
|
200
|
+
],
|
|
201
|
+
view: ViewType.Articles,
|
|
202
|
+
|
|
203
|
+
zh: {
|
|
204
|
+
path: '/kpics/:filter{.+}?',
|
|
205
|
+
name: 'Pics',
|
|
206
|
+
url: 'kpopping.com',
|
|
207
|
+
maintainers: ['nczitzk'],
|
|
208
|
+
handler,
|
|
209
|
+
example: '/kpopping/kpics/gender-male/category-all/idol-any/group-any/order',
|
|
210
|
+
parameters: {
|
|
211
|
+
filter: '筛选,可在对应分类页 URL 中找到',
|
|
212
|
+
},
|
|
213
|
+
description: `:::tip
|
|
214
|
+
若订阅 [All male photo albums](https://kpopping.com/kpics/gender-male/category-all/idol-any/group-any/order),网址为 \`https://kpopping.com/kpics/gender-male/category-all/idol-any/group-any/order\`,请截取 \`https://kpopping.com/kpics/\` 到末尾的部分 \`gender-male/category-all/idol-any/group-any/order\` 作为 \`filter\` 参数填入,此时目标路由为 [\`/kpopping/kpics/gender-male/category-all/idol-any/group-any/order\`](https://rsshub.app/kpopping/kpics/gender-male/category-all/idol-any/group-any/order)。
|
|
215
|
+
:::
|
|
216
|
+
`,
|
|
217
|
+
},
|
|
218
|
+
};
|
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
import { type Data, type DataItem, type Route, ViewType } from '@/types';
|
|
2
|
+
|
|
3
|
+
import { art } from '@/utils/render';
|
|
4
|
+
import cache from '@/utils/cache';
|
|
5
|
+
import { getCurrentPath } from '@/utils/helpers';
|
|
6
|
+
import ofetch from '@/utils/ofetch';
|
|
7
|
+
import { parseDate } from '@/utils/parse-date';
|
|
8
|
+
import timezone from '@/utils/timezone';
|
|
9
|
+
|
|
10
|
+
import { type CheerioAPI, type Cheerio, type Element, load } from 'cheerio';
|
|
11
|
+
import { type Context } from 'hono';
|
|
12
|
+
import path from 'node:path';
|
|
13
|
+
|
|
14
|
+
const __dirname = getCurrentPath(import.meta.url);
|
|
15
|
+
|
|
16
|
+
export const handler = async (ctx: Context): Promise<Data> => {
|
|
17
|
+
const { filter } = ctx.req.param();
|
|
18
|
+
const limit: number = Number.parseInt(ctx.req.query('limit') ?? '2', 10);
|
|
19
|
+
|
|
20
|
+
const baseUrl: string = 'https://kpopping.com';
|
|
21
|
+
const targetUrl: string = new URL(`news${filter ? `/${filter}` : ''}`, baseUrl).href;
|
|
22
|
+
|
|
23
|
+
const response = await ofetch(targetUrl);
|
|
24
|
+
const $: CheerioAPI = load(response);
|
|
25
|
+
const language = $('html').attr('lang') ?? 'en';
|
|
26
|
+
|
|
27
|
+
let items: DataItem[] = [];
|
|
28
|
+
|
|
29
|
+
items = $('section.news-list-item')
|
|
30
|
+
.slice(0, limit)
|
|
31
|
+
.toArray()
|
|
32
|
+
.map((el): Element => {
|
|
33
|
+
const $el: Cheerio<Element> = $(el);
|
|
34
|
+
const $aEl: Cheerio<Element> = $el.find('h4.title-wr a').last();
|
|
35
|
+
|
|
36
|
+
const title: string = $aEl.text();
|
|
37
|
+
const pubDateStr: string | undefined = $el.find('time.datetime-wr').attr('datetime');
|
|
38
|
+
const linkUrl: string | undefined = $aEl.attr('href');
|
|
39
|
+
const categoryEls: Element[] = [$el.find('h4.title-wr a').first()];
|
|
40
|
+
const categories: string[] = [...new Set(categoryEls.map((el) => $(el).text()).filter(Boolean))];
|
|
41
|
+
const authorEls: Element[] = $el.find('aside.author-wr').toArray();
|
|
42
|
+
const authors: DataItem['author'] = authorEls.map((authorEl) => {
|
|
43
|
+
const $authorEl: Cheerio<Element> = $(authorEl);
|
|
44
|
+
const $authorAEl: Cheerio<Element> = $authorEl.find('a').last();
|
|
45
|
+
|
|
46
|
+
return {
|
|
47
|
+
name: $authorAEl.text(),
|
|
48
|
+
url: new URL($authorAEl.attr('href') as string, baseUrl).href,
|
|
49
|
+
avatar: new URL($el.find('aside.author-wr a img').attr('src') as string, baseUrl).href,
|
|
50
|
+
};
|
|
51
|
+
});
|
|
52
|
+
const upDatedStr: string | undefined = pubDateStr;
|
|
53
|
+
|
|
54
|
+
const processedItem: DataItem = {
|
|
55
|
+
title,
|
|
56
|
+
pubDate: pubDateStr ? timezone(parseDate(pubDateStr, 'MMM D, YYYY h:mma'), +8) : undefined,
|
|
57
|
+
link: linkUrl ? new URL(linkUrl, baseUrl).href : undefined,
|
|
58
|
+
category: categories,
|
|
59
|
+
author: authors,
|
|
60
|
+
doi: $el.find('meta[name="citation_doi"]').attr('content'),
|
|
61
|
+
updated: upDatedStr ? timezone(parseDate(upDatedStr, 'MMM D, YYYY h:mma'), +8) : undefined,
|
|
62
|
+
language,
|
|
63
|
+
};
|
|
64
|
+
|
|
65
|
+
return processedItem;
|
|
66
|
+
});
|
|
67
|
+
|
|
68
|
+
items = (
|
|
69
|
+
await Promise.all(
|
|
70
|
+
items.map((item) => {
|
|
71
|
+
if (!item.link) {
|
|
72
|
+
return item;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
return cache.tryGet(item.link, async (): Promise<DataItem> => {
|
|
76
|
+
const detailResponse = await ofetch(item.link);
|
|
77
|
+
const $$: CheerioAPI = load(detailResponse);
|
|
78
|
+
|
|
79
|
+
const title: string = $$('h1').contents().first().text();
|
|
80
|
+
const description: string = art(path.join(__dirname, 'templates/description.art'), {
|
|
81
|
+
images: $$('figure.opening img').attr('src')
|
|
82
|
+
? [
|
|
83
|
+
{
|
|
84
|
+
src: new URL($$('figure.opening img').attr('src') as string, baseUrl).href,
|
|
85
|
+
alt: title,
|
|
86
|
+
},
|
|
87
|
+
]
|
|
88
|
+
: undefined,
|
|
89
|
+
description: $$('div#article-content').html(),
|
|
90
|
+
});
|
|
91
|
+
const pubDateStr: string | undefined = $$('meta[property="article:published_time"]').attr('content');
|
|
92
|
+
const categoryEls: Element[] = $$('aside.info a, div.supplements a.item').toArray();
|
|
93
|
+
const categories: string[] = [...new Set(categoryEls.map((el) => $$(el).text()?.trim()).filter(Boolean))];
|
|
94
|
+
const authorEls: Element[] = $$('div.content-snippet aside:not(.like)').toArray();
|
|
95
|
+
const authors: DataItem['author'] = authorEls.map((authorEl) => {
|
|
96
|
+
const $$authorEl: Cheerio<Element> = $$(authorEl);
|
|
97
|
+
const $$authorAEl: Cheerio<Element> = $$authorEl.find('a').last();
|
|
98
|
+
|
|
99
|
+
return {
|
|
100
|
+
name: $$authorAEl.text(),
|
|
101
|
+
url: new URL($$authorAEl.attr('href') as string, baseUrl).href,
|
|
102
|
+
avatar: $$authorEl.find('img').attr('src'),
|
|
103
|
+
};
|
|
104
|
+
});
|
|
105
|
+
const image: string | undefined = $$('meta[property="og:image"]').attr('content');
|
|
106
|
+
const upDatedStr: string | undefined = $$('meta[property="article:modified_time"]').attr('content');
|
|
107
|
+
|
|
108
|
+
const processedItem: DataItem = {
|
|
109
|
+
title,
|
|
110
|
+
description,
|
|
111
|
+
pubDate: pubDateStr ? parseDate(pubDateStr) : item.pubDate,
|
|
112
|
+
category: categories,
|
|
113
|
+
author: authors,
|
|
114
|
+
content: {
|
|
115
|
+
html: description,
|
|
116
|
+
text: description,
|
|
117
|
+
},
|
|
118
|
+
image,
|
|
119
|
+
banner: image,
|
|
120
|
+
updated: upDatedStr ? parseDate(upDatedStr) : item.updated,
|
|
121
|
+
language,
|
|
122
|
+
};
|
|
123
|
+
|
|
124
|
+
return {
|
|
125
|
+
...item,
|
|
126
|
+
...processedItem,
|
|
127
|
+
};
|
|
128
|
+
});
|
|
129
|
+
})
|
|
130
|
+
)
|
|
131
|
+
).filter((_): _ is DataItem => true);
|
|
132
|
+
|
|
133
|
+
return {
|
|
134
|
+
title: $('title').text(),
|
|
135
|
+
description: $('meta[property="og:description"]').attr('content'),
|
|
136
|
+
link: targetUrl,
|
|
137
|
+
item: items,
|
|
138
|
+
allowEmpty: true,
|
|
139
|
+
image: $('meta[property="og:image"]').attr('content'),
|
|
140
|
+
author: $('meta[property="og:site_name"]').attr('content'),
|
|
141
|
+
language,
|
|
142
|
+
id: targetUrl,
|
|
143
|
+
};
|
|
144
|
+
};
|
|
145
|
+
|
|
146
|
+
export const route: Route = {
|
|
147
|
+
path: '/news/:filter{.+}?',
|
|
148
|
+
name: 'News',
|
|
149
|
+
url: 'kpopping.com',
|
|
150
|
+
maintainers: ['nczitzk'],
|
|
151
|
+
handler,
|
|
152
|
+
example: '/kpopping/news/gender-all/category-all/idol-any/group-any/order',
|
|
153
|
+
parameters: {
|
|
154
|
+
filter: 'Filter',
|
|
155
|
+
},
|
|
156
|
+
description: `:::tip
|
|
157
|
+
If you subscribe to [All male articles](https://kpopping.com/news/gender-male/category-all/idol-any/group-any/order),where the URL is \`https://kpopping.com/news/gender-male/category-all/idol-any/group-any/order\`, extract the part \`https://kpopping.com/news\` to the end, which is \`gender-male/category-all/idol-any/group-any/order\`, and use it as the parameter to fill in. Therefore, the route will be [\`/kpopping/news/gender-male/category-all/idol-any/group-any/order\`](https://rsshub.app/kpopping/news/gender-male/category-all/idol-any/group-any/order).
|
|
158
|
+
:::
|
|
159
|
+
`,
|
|
160
|
+
categories: ['new-media'],
|
|
161
|
+
features: {
|
|
162
|
+
requireConfig: false,
|
|
163
|
+
requirePuppeteer: false,
|
|
164
|
+
antiCrawler: false,
|
|
165
|
+
supportRadar: true,
|
|
166
|
+
supportBT: false,
|
|
167
|
+
supportPodcast: false,
|
|
168
|
+
supportScihub: false,
|
|
169
|
+
},
|
|
170
|
+
radar: [
|
|
171
|
+
{
|
|
172
|
+
source: ['kpopping.com/news/:filter'],
|
|
173
|
+
target: (params) => {
|
|
174
|
+
const filter: string = params.filter;
|
|
175
|
+
|
|
176
|
+
return `/kpopping/news${filter ? `/${filter}` : ''}`;
|
|
177
|
+
},
|
|
178
|
+
},
|
|
179
|
+
],
|
|
180
|
+
view: ViewType.Articles,
|
|
181
|
+
|
|
182
|
+
zh: {
|
|
183
|
+
path: '/news/:filter{.+}?',
|
|
184
|
+
name: 'News',
|
|
185
|
+
url: 'kpopping.com',
|
|
186
|
+
maintainers: ['nczitzk'],
|
|
187
|
+
handler,
|
|
188
|
+
example: '/kpopping/news/gender-all/category-all/idol-any/group-any/order',
|
|
189
|
+
parameters: {
|
|
190
|
+
filter: '筛选,可在对应分类页 URL 中找到',
|
|
191
|
+
},
|
|
192
|
+
description: `:::tip
|
|
193
|
+
若订阅 [All male articles](https://kpopping.com/news/gender-male/category-all/idol-any/group-any/order),网址为 \`https://kpopping.com/news/gender-male/category-all/idol-any/group-any/order\`,请截取 \`https://kpopping.com/news/\` 到末尾的部分 \`gender-male/category-all/idol-any/group-any/order\` 作为 \`filter\` 参数填入,此时目标路由为 [\`/kpopping/news/gender-male/category-all/idol-any/group-any/order\`](https://rsshub.app/kpopping/news/gender-male/category-all/idol-any/group-any/order)。
|
|
194
|
+
:::
|
|
195
|
+
`,
|
|
196
|
+
},
|
|
197
|
+
};
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
{{ if images }}
|
|
2
|
+
{{ each images image }}
|
|
3
|
+
{{ if image?.src }}
|
|
4
|
+
<figure>
|
|
5
|
+
<img
|
|
6
|
+
{{ if image.alt }}
|
|
7
|
+
alt="{{ image.alt }}"
|
|
8
|
+
{{ /if }}
|
|
9
|
+
src="{{ image.src }}">
|
|
10
|
+
</figure>
|
|
11
|
+
{{ /if }}
|
|
12
|
+
{{ /each }}
|
|
13
|
+
{{ /if }}
|
|
14
|
+
|
|
15
|
+
{{ if description }}
|
|
16
|
+
{{@ description }}
|
|
17
|
+
{{ /if }}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/** The language. */
|
|
2
|
+
export enum Language {
|
|
3
|
+
English = 'en',
|
|
4
|
+
Japanese = 'jp',
|
|
5
|
+
Korean = 'kr',
|
|
6
|
+
/** Legacy code to ensure old results don't change. */
|
|
7
|
+
Chinese = 'zh',
|
|
8
|
+
ChineseTaiwan = 'zh-tw',
|
|
9
|
+
Spanish = 'es',
|
|
10
|
+
French = 'fr',
|
|
11
|
+
German = 'de',
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
/** Route parameters. */
|
|
15
|
+
export enum Parameter {
|
|
16
|
+
Limit = 'limit',
|
|
17
|
+
Language = 'language',
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
/** The languages supported by the API. */
|
|
21
|
+
export const SUPPORTED_LANGUAGES = Object.values(Language);
|
|
22
|
+
|
|
23
|
+
export interface Article {
|
|
24
|
+
articleContent: string;
|
|
25
|
+
articleDesc: string;
|
|
26
|
+
articleId: number;
|
|
27
|
+
articleTitle: string;
|
|
28
|
+
articleType: number;
|
|
29
|
+
createTime: string;
|
|
30
|
+
sortingMark: number;
|
|
31
|
+
startTime: string;
|
|
32
|
+
suggestCover: string;
|
|
33
|
+
top: number;
|
|
34
|
+
}
|
|
@@ -4,56 +4,83 @@ import { parseDate } from '@/utils/parse-date';
|
|
|
4
4
|
import timezone from '@/utils/timezone';
|
|
5
5
|
import * as cheerio from 'cheerio';
|
|
6
6
|
import ofetch from '@/utils/ofetch';
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
articleContent: string;
|
|
10
|
-
articleDesc: string;
|
|
11
|
-
articleId: number;
|
|
12
|
-
articleTitle: string;
|
|
13
|
-
articleType: number;
|
|
14
|
-
createTime: string;
|
|
15
|
-
sortingMark: number;
|
|
16
|
-
startTime: string;
|
|
17
|
-
suggestCover: string;
|
|
18
|
-
top: number;
|
|
19
|
-
}
|
|
7
|
+
import { Article, Language, Parameter, SUPPORTED_LANGUAGES } from './constants';
|
|
8
|
+
import { fetchArticles, getArticleContentLink, getArticleLink, getHandlerLanguage, isValidLanguage, parseInteger } from './utils';
|
|
20
9
|
|
|
21
10
|
export const route: Route = {
|
|
22
|
-
path:
|
|
11
|
+
path: `/wutheringwaves/news/:${Parameter.Language}?`,
|
|
23
12
|
categories: ['game'],
|
|
24
13
|
example: '/kurogames/wutheringwaves/news',
|
|
14
|
+
parameters: {
|
|
15
|
+
[Parameter.Language]: 'The language to use for the content. Default: `zh`.',
|
|
16
|
+
},
|
|
25
17
|
name: '鸣潮 — 游戏公告、新闻与活动',
|
|
26
18
|
radar: [
|
|
27
19
|
{
|
|
28
20
|
source: ['mc.kurogames.com/m/main/news', 'mc.kurogames.com/main'],
|
|
29
21
|
},
|
|
22
|
+
{
|
|
23
|
+
title: 'Wuthering Waves — Game announcements, news and events',
|
|
24
|
+
source: ['wutheringwaves.kurogames.com/en/main/news', 'wutheringwaves.kurogames.com/en/main'],
|
|
25
|
+
},
|
|
30
26
|
],
|
|
31
|
-
maintainers: ['enpitsulin'],
|
|
32
|
-
description:
|
|
33
|
-
|
|
34
|
-
|
|
27
|
+
maintainers: ['goestav', 'enpitsulin'],
|
|
28
|
+
description: `
|
|
29
|
+
Language codes for the \`${Parameter.Language}\` parameter:
|
|
30
|
+
|
|
31
|
+
| Language | Code |
|
|
32
|
+
|----------|--------------|
|
|
33
|
+
| English | en |
|
|
34
|
+
| 日本語 | jp |
|
|
35
|
+
| 한국어 | kr |
|
|
36
|
+
| 简体中文 | zh (default) |
|
|
37
|
+
| 繁體中文 | zh-tw |
|
|
38
|
+
| Español | es |
|
|
39
|
+
| Français | fr |
|
|
40
|
+
| Deutsch | de |
|
|
41
|
+
`,
|
|
42
|
+
async handler(ctx) {
|
|
43
|
+
const limitParam = ctx.req.query(Parameter.Limit);
|
|
44
|
+
const languageParam = ctx.req.param(Parameter.Language);
|
|
45
|
+
|
|
46
|
+
const limit = parseInteger(limitParam, 30);
|
|
47
|
+
const language = languageParam || Language.Chinese;
|
|
48
|
+
|
|
49
|
+
if (!isValidLanguage(language)) {
|
|
50
|
+
throw new TypeError(`Language parameter is not valid. Please use one of the following: ${SUPPORTED_LANGUAGES.join(', ')}`);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
const articles = await fetchArticles(language);
|
|
54
|
+
const filteredArticles = articles.filter((a) => a.articleType !== 0).slice(0, limit);
|
|
55
|
+
|
|
35
56
|
const item = await Promise.all(
|
|
36
|
-
|
|
37
|
-
const contentUrl =
|
|
38
|
-
const item = {
|
|
39
|
-
title:
|
|
40
|
-
pubDate: timezone(parseDate(
|
|
41
|
-
link:
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
const
|
|
46
|
-
|
|
47
|
-
|
|
57
|
+
filteredArticles.map((article) => {
|
|
58
|
+
const contentUrl = getArticleContentLink(language, article.articleId);
|
|
59
|
+
const item: DataItem = {
|
|
60
|
+
title: article.articleTitle,
|
|
61
|
+
pubDate: timezone(parseDate(article.createTime), +8),
|
|
62
|
+
link: getArticleLink(language, article.articleId),
|
|
63
|
+
};
|
|
64
|
+
|
|
65
|
+
return cache.tryGet(`wutheringwaves:${language}:${article.articleId}`, async () => {
|
|
66
|
+
const { articleContent } = await ofetch<Article>(contentUrl, { query: { t: Date.now() } });
|
|
67
|
+
const $ = cheerio.load(articleContent);
|
|
68
|
+
|
|
69
|
+
item.description = $.html() ?? article.articleDesc ?? '';
|
|
70
|
+
|
|
48
71
|
return item;
|
|
49
72
|
}) as Promise<DataItem>;
|
|
50
73
|
})
|
|
51
74
|
);
|
|
75
|
+
|
|
76
|
+
const title = language === Language.Chinese ? '《鸣潮》— 游戏公告、新闻和活动' : 'Wuthering Waves - Announcements, News and Events';
|
|
77
|
+
const link = language === Language.Chinese ? 'https://mc.kurogames.com/main#news' : `https://wutheringwaves.kurogames.com/${language}/main/#news`;
|
|
78
|
+
|
|
52
79
|
return {
|
|
53
|
-
title
|
|
54
|
-
link
|
|
80
|
+
title,
|
|
81
|
+
link,
|
|
55
82
|
item,
|
|
56
|
-
language:
|
|
83
|
+
language: getHandlerLanguage(language),
|
|
57
84
|
};
|
|
58
85
|
},
|
|
59
86
|
};
|