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,308 @@
|
|
|
1
|
+
import crypto from 'node:crypto';
|
|
2
|
+
import { Buffer } from 'node:buffer';
|
|
3
|
+
import ofetch from '@/utils/ofetch';
|
|
4
|
+
import { v4 as uuidv4 } from 'uuid';
|
|
5
|
+
import { SearchResponse, ItemDetail, ShopItemDetail } from './types';
|
|
6
|
+
import { parseDate } from '@/utils/parse-date';
|
|
7
|
+
import { art } from '@/utils/render';
|
|
8
|
+
import path from 'node:path';
|
|
9
|
+
import { DataItem } from '@/types';
|
|
10
|
+
|
|
11
|
+
import { getCurrentPath } from '@/utils/helpers';
|
|
12
|
+
const __dirname = getCurrentPath(import.meta.url);
|
|
13
|
+
const rootURL = 'https://api.mercari.jp/';
|
|
14
|
+
const rootProductURL = 'https://jp.mercari.com/item/';
|
|
15
|
+
const rootShopProductURL = 'https://jp.mercari.com/shops/product/';
|
|
16
|
+
const searchURL = `${rootURL}v2/entities:search`;
|
|
17
|
+
const itemInfoURL = `${rootURL}items/get`;
|
|
18
|
+
const shopItemInfoURL = `${rootURL}v1/marketplaces/shops/products/`;
|
|
19
|
+
|
|
20
|
+
const MercariStatus = {
|
|
21
|
+
default: '',
|
|
22
|
+
onsale: 'STATUS_ON_SALE',
|
|
23
|
+
soldout: 'STATUS_SOLD_OUT',
|
|
24
|
+
} as const;
|
|
25
|
+
|
|
26
|
+
const MercariSort = {
|
|
27
|
+
default: 'SORT_DEFAULT',
|
|
28
|
+
create_time: 'SORT_CREATED_TIME',
|
|
29
|
+
like: 'SORT_NUM_LIKES',
|
|
30
|
+
score: 'SORT_SCORE',
|
|
31
|
+
price: 'SORT_PRICE',
|
|
32
|
+
} as const;
|
|
33
|
+
|
|
34
|
+
const MercariOrder = {
|
|
35
|
+
desc: 'ORDER_DESC',
|
|
36
|
+
asc: 'ORDER_ASC',
|
|
37
|
+
} as const;
|
|
38
|
+
|
|
39
|
+
function bytesToBase64URL(b: Buffer): string {
|
|
40
|
+
return b.toString('base64').replaceAll('+', '-').replaceAll('/', '_').replaceAll('=', '');
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
function strToBase64URL(s: string): string {
|
|
44
|
+
return bytesToBase64URL(Buffer.from(s, 'utf-8'));
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
function publicKeyToJWK(publicKey: crypto.KeyObject): any {
|
|
48
|
+
const jwk = publicKey.export({ format: 'jwk' }) as { x: string; y: string };
|
|
49
|
+
return {
|
|
50
|
+
crv: 'P-256',
|
|
51
|
+
kty: 'EC',
|
|
52
|
+
x: jwk.x,
|
|
53
|
+
y: jwk.y,
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
function publicKeyToHeader(publicKey: crypto.KeyObject): any {
|
|
58
|
+
return {
|
|
59
|
+
typ: 'dpop+jwt',
|
|
60
|
+
alg: 'ES256',
|
|
61
|
+
jwk: publicKeyToJWK(publicKey),
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
function derDecode(der: Buffer): { r: Buffer; s: Buffer } {
|
|
66
|
+
let offset = 0;
|
|
67
|
+
|
|
68
|
+
if (der[offset++] !== 0x30) {
|
|
69
|
+
throw new Error('Invalid DER signature');
|
|
70
|
+
}
|
|
71
|
+
const lenInfo = readDerLength(der, offset);
|
|
72
|
+
offset += lenInfo.bytesRead;
|
|
73
|
+
|
|
74
|
+
if (der[offset++] !== 0x02) {
|
|
75
|
+
throw new Error('Expected INTEGER for R');
|
|
76
|
+
}
|
|
77
|
+
const rLen = readDerLength(der, offset);
|
|
78
|
+
offset += rLen.bytesRead;
|
|
79
|
+
const r = der.subarray(offset, offset + rLen.length);
|
|
80
|
+
offset += rLen.length;
|
|
81
|
+
|
|
82
|
+
if (der[offset++] !== 0x02) {
|
|
83
|
+
throw new Error('Expected INTEGER for S');
|
|
84
|
+
}
|
|
85
|
+
const sLen = readDerLength(der, offset);
|
|
86
|
+
offset += sLen.bytesRead;
|
|
87
|
+
const s = der.subarray(offset, offset + sLen.length);
|
|
88
|
+
offset += sLen.length;
|
|
89
|
+
|
|
90
|
+
if (offset !== der.length) {
|
|
91
|
+
throw new Error('Extra bytes in DER signature');
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
return {
|
|
95
|
+
r: fixBufferLength(r, 32),
|
|
96
|
+
s: fixBufferLength(s, 32),
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
function readDerLength(buf: Buffer, offset: number): { length: number; bytesRead: number } {
|
|
101
|
+
const byte = buf[offset];
|
|
102
|
+
if (byte < 0x80) {
|
|
103
|
+
return { length: byte, bytesRead: 1 };
|
|
104
|
+
}
|
|
105
|
+
const bytesCount = byte & 0x7F;
|
|
106
|
+
if (bytesCount > 4) {
|
|
107
|
+
throw new Error('DER length too long');
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
let length = 0;
|
|
111
|
+
for (let i = 0; i < bytesCount; i++) {
|
|
112
|
+
length = (length << 8) | buf[offset + 1 + i];
|
|
113
|
+
}
|
|
114
|
+
return { length, bytesRead: 1 + bytesCount };
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
function fixBufferLength(buffer: Buffer, length: number): Buffer {
|
|
118
|
+
if (buffer.length > length) {
|
|
119
|
+
const start = buffer.length - length;
|
|
120
|
+
return buffer.subarray(start);
|
|
121
|
+
}
|
|
122
|
+
if (buffer.length < length) {
|
|
123
|
+
return Buffer.concat([Uint8Array.from(Buffer.alloc(length - buffer.length)), Uint8Array.from(buffer)]);
|
|
124
|
+
}
|
|
125
|
+
return buffer;
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
function generateDPOP({ uuid, method, url }: { uuid: string; method: string; url: string }): string {
|
|
129
|
+
// Generate ECDSA key pair
|
|
130
|
+
const { privateKey, publicKey } = crypto.generateKeyPairSync('ec', {
|
|
131
|
+
namedCurve: 'prime256v1',
|
|
132
|
+
});
|
|
133
|
+
|
|
134
|
+
// Create JWT payload
|
|
135
|
+
const payload = {
|
|
136
|
+
iat: Math.floor(Date.now() / 1000),
|
|
137
|
+
jti: uuid,
|
|
138
|
+
htu: url,
|
|
139
|
+
htm: method.toUpperCase(),
|
|
140
|
+
};
|
|
141
|
+
|
|
142
|
+
// Create JWT header
|
|
143
|
+
const header = publicKeyToHeader(publicKey);
|
|
144
|
+
|
|
145
|
+
// Prepare signing input
|
|
146
|
+
const headerB64 = strToBase64URL(JSON.stringify(header));
|
|
147
|
+
const payloadB64 = strToBase64URL(JSON.stringify(payload));
|
|
148
|
+
const signingInput = `${headerB64}.${payloadB64}`;
|
|
149
|
+
|
|
150
|
+
// Sign the input
|
|
151
|
+
const sign = crypto.createSign('SHA256');
|
|
152
|
+
sign.update(signingInput);
|
|
153
|
+
const derSignature = sign.sign(privateKey);
|
|
154
|
+
|
|
155
|
+
// Process signature
|
|
156
|
+
const { r, s } = derDecode(derSignature);
|
|
157
|
+
const signature = bytesToBase64URL(Buffer.concat([Uint8Array.from(r), Uint8Array.from(s)]));
|
|
158
|
+
|
|
159
|
+
return `${signingInput}.${signature}`;
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
const fetchFromMercari = async <T>(url: string, data: any, method: 'POST' | 'GET' = 'POST'): Promise<T> => {
|
|
163
|
+
const DPOP = generateDPOP({
|
|
164
|
+
uuid: uuidv4(),
|
|
165
|
+
method,
|
|
166
|
+
url,
|
|
167
|
+
});
|
|
168
|
+
|
|
169
|
+
const headers = new Headers({
|
|
170
|
+
DPOP,
|
|
171
|
+
'X-Platform': 'web',
|
|
172
|
+
'Accept-Encoding': 'gzip, deflate',
|
|
173
|
+
'Content-Type': 'application/json; charset=utf-8',
|
|
174
|
+
});
|
|
175
|
+
|
|
176
|
+
const options = {
|
|
177
|
+
method,
|
|
178
|
+
headers,
|
|
179
|
+
body: method === 'POST' ? JSON.stringify(data) : undefined,
|
|
180
|
+
query: method === 'GET' ? data : undefined,
|
|
181
|
+
};
|
|
182
|
+
|
|
183
|
+
try {
|
|
184
|
+
return await ofetch<T>(url, options);
|
|
185
|
+
} catch (error) {
|
|
186
|
+
throw new Error(`API request failed: ${error}`);
|
|
187
|
+
}
|
|
188
|
+
};
|
|
189
|
+
|
|
190
|
+
const pageToPageToken = (page: number): string => {
|
|
191
|
+
if (page === 0) {
|
|
192
|
+
return '';
|
|
193
|
+
}
|
|
194
|
+
return `v1:${page}`;
|
|
195
|
+
};
|
|
196
|
+
|
|
197
|
+
const fetchSearchItems = async (sort: string, order: string, status: string, keyword: string): Promise<SearchResponse> => {
|
|
198
|
+
const data = {
|
|
199
|
+
userId: `MERCARI_BOT_${uuidv4()}`,
|
|
200
|
+
pageSize: 120,
|
|
201
|
+
pageToken: pageToPageToken(0),
|
|
202
|
+
searchSessionId: uuidv4(),
|
|
203
|
+
indexRouting: 'INDEX_ROUTING_UNSPECIFIED',
|
|
204
|
+
thumbnailTypes: [],
|
|
205
|
+
searchCondition: {
|
|
206
|
+
keyword,
|
|
207
|
+
excludeKeyword: '',
|
|
208
|
+
sort,
|
|
209
|
+
order,
|
|
210
|
+
status: [],
|
|
211
|
+
sizeId: [],
|
|
212
|
+
categoryId: [],
|
|
213
|
+
brandId: [],
|
|
214
|
+
sellerId: [],
|
|
215
|
+
priceMin: 0,
|
|
216
|
+
priceMax: 0,
|
|
217
|
+
itemConditionId: [],
|
|
218
|
+
shippingPayerId: [],
|
|
219
|
+
shippingFromArea: [],
|
|
220
|
+
shippingMethod: [],
|
|
221
|
+
colorId: [],
|
|
222
|
+
hasCoupon: false,
|
|
223
|
+
attributes: [],
|
|
224
|
+
itemTypes: [],
|
|
225
|
+
skuIds: [],
|
|
226
|
+
shopIds: [],
|
|
227
|
+
excludeShippingMethodIds: [],
|
|
228
|
+
},
|
|
229
|
+
serviceFrom: 'suruga',
|
|
230
|
+
withItemBrand: true,
|
|
231
|
+
withItemSize: false,
|
|
232
|
+
withItemPromotions: true,
|
|
233
|
+
withItemSizes: true,
|
|
234
|
+
withShopname: false,
|
|
235
|
+
useDynamicAttribute: true,
|
|
236
|
+
withSuggestedItems: true,
|
|
237
|
+
withOfferPricePromotion: true,
|
|
238
|
+
withProductSuggest: true,
|
|
239
|
+
withParentProducts: false,
|
|
240
|
+
withProductArticles: true,
|
|
241
|
+
withSearchConditionId: true,
|
|
242
|
+
withAuction: true,
|
|
243
|
+
};
|
|
244
|
+
|
|
245
|
+
return await fetchFromMercari<SearchResponse>(searchURL, data, 'POST');
|
|
246
|
+
};
|
|
247
|
+
|
|
248
|
+
const fetchItemDetail = (item_id: string, item_type: string, country_code?: string): Promise<ItemDetail | ShopItemDetail> => {
|
|
249
|
+
if (item_type === 'ITEM_TYPE_BEYOND') {
|
|
250
|
+
return fetchFromMercari<ShopItemDetail>(
|
|
251
|
+
shopItemInfoURL + item_id,
|
|
252
|
+
{
|
|
253
|
+
view: 'FULL',
|
|
254
|
+
imageType: 'JPEG',
|
|
255
|
+
},
|
|
256
|
+
'GET'
|
|
257
|
+
);
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
return fetchFromMercari<ItemDetail>(
|
|
261
|
+
itemInfoURL,
|
|
262
|
+
{
|
|
263
|
+
id: item_id,
|
|
264
|
+
country_code,
|
|
265
|
+
include_item_attributes: true,
|
|
266
|
+
include_product_page_component: true,
|
|
267
|
+
include_non_ui_item_attributes: true,
|
|
268
|
+
include_donation: true,
|
|
269
|
+
include_offer_like_coupon_display: true,
|
|
270
|
+
include_offer_coupon_display: true,
|
|
271
|
+
include_item_attributes_sections: true,
|
|
272
|
+
include_auction: false,
|
|
273
|
+
},
|
|
274
|
+
'GET'
|
|
275
|
+
);
|
|
276
|
+
};
|
|
277
|
+
|
|
278
|
+
const formatItemDetail = (detail: ItemDetail | ShopItemDetail): DataItem => {
|
|
279
|
+
if ((detail as ShopItemDetail).displayName) {
|
|
280
|
+
const shopItemDetail = detail as ShopItemDetail;
|
|
281
|
+
return {
|
|
282
|
+
title: shopItemDetail.displayName,
|
|
283
|
+
description: art(path.join(__dirname, 'templates/shopItem.art'), shopItemDetail),
|
|
284
|
+
pubDate: parseDate(shopItemDetail.createTime),
|
|
285
|
+
guid: shopItemDetail.name,
|
|
286
|
+
link: `${rootShopProductURL}${shopItemDetail.name}`,
|
|
287
|
+
image: shopItemDetail.thumbnail,
|
|
288
|
+
language: 'ja',
|
|
289
|
+
author: shopItemDetail.productDetail.shop.displayName,
|
|
290
|
+
updated: parseDate(shopItemDetail.updateTime),
|
|
291
|
+
};
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
const itemDetail = detail as ItemDetail;
|
|
295
|
+
return {
|
|
296
|
+
title: itemDetail.data.name,
|
|
297
|
+
description: art(path.join(__dirname, 'templates/item.art'), itemDetail),
|
|
298
|
+
pubDate: parseDate(itemDetail.data.created * 1000),
|
|
299
|
+
guid: itemDetail.data.id,
|
|
300
|
+
link: `${rootProductURL}${itemDetail.data.id}`,
|
|
301
|
+
image: itemDetail.data.thumbnails[0],
|
|
302
|
+
language: 'ja',
|
|
303
|
+
author: itemDetail.data.seller.name,
|
|
304
|
+
updated: parseDate(itemDetail.data.updated * 1000),
|
|
305
|
+
};
|
|
306
|
+
};
|
|
307
|
+
|
|
308
|
+
export { fetchSearchItems, fetchItemDetail, formatItemDetail, MercariSort, MercariOrder, MercariStatus };
|
|
@@ -58,7 +58,7 @@ async function handler(ctx) {
|
|
|
58
58
|
return {
|
|
59
59
|
title: `${board === 'all' ? '全部看板' : boardInfo.title} | Meteor 學生社群`,
|
|
60
60
|
description: board === 'all' ? null : boardInfo.feedDescription,
|
|
61
|
-
image: board === 'all' ? null : boardInfo.imgUrl === 'not_set' ? null : boardInfo.imgUrl,
|
|
61
|
+
image: board === 'all' ? null : (boardInfo.imgUrl === 'not_set' ? null : boardInfo.imgUrl),
|
|
62
62
|
link: `${board === 'all' ? `${baseUrl}/board/all` : boardInfo.link}/new`,
|
|
63
63
|
item: items,
|
|
64
64
|
};
|
|
@@ -62,43 +62,43 @@ export const route: Route = {
|
|
|
62
62
|
maintainers: ['CaoMeiYouRen'],
|
|
63
63
|
handler,
|
|
64
64
|
description: `| 键 | 含义 | 接受的值 | 默认值 |
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
65
|
+
| ----------- | ------------------------------------- | -------------------------------------------------------------------- | ------------ |
|
|
66
|
+
| forumType | 主榜类型(仅原神、大别野有 cos 主榜) | tongren/cos | tongren |
|
|
67
|
+
| cateType | 子榜类型(仅崩坏三、原神有子榜) | 崩坏三:illustration/comic/cos;原神:illustration/comic/qute/manual | illustration |
|
|
68
|
+
| rankingType | 排行榜类型(崩坏二没有日榜) | daily/weekly/monthly | daily |
|
|
69
|
+
| lastId | 当前页 id(用于分页) | 数字 | 1 |
|
|
70
70
|
|
|
71
71
|
游戏缩写
|
|
72
72
|
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
73
|
+
| 崩坏三 | 原神 | 崩坏二 | 未定事件簿 | 星穹铁道 | 大别野 | 绝区零 |
|
|
74
|
+
| ------ | ---- | ------ | ---------- | -------- | ------ | ------ |
|
|
75
|
+
| bh3 | ys | bh2 | wd | sr | dby | zzz |
|
|
76
76
|
|
|
77
77
|
主榜类型
|
|
78
78
|
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
79
|
+
| 同人榜 | COS 榜 |
|
|
80
|
+
| ------- | ------ |
|
|
81
|
+
| tongren | cos |
|
|
82
82
|
|
|
83
83
|
子榜类型
|
|
84
84
|
|
|
85
85
|
崩坏三 子榜
|
|
86
86
|
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
87
|
+
| 插画 | 漫画 | COS |
|
|
88
|
+
| ------------ | ----- | --- |
|
|
89
|
+
| illustration | comic | cos |
|
|
90
90
|
|
|
91
91
|
原神 子榜
|
|
92
92
|
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
93
|
+
| 插画 | 漫画 | Q 版 | 手工 |
|
|
94
|
+
| ------------ | ----- | ---- | ------ |
|
|
95
|
+
| illustration | comic | qute | manual |
|
|
96
96
|
|
|
97
97
|
排行榜类型
|
|
98
98
|
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
99
|
+
| 日榜 | 周榜 | 月榜 |
|
|
100
|
+
| ----- | ------ | ------- |
|
|
101
|
+
| daily | weekly | monthly |`,
|
|
102
102
|
};
|
|
103
103
|
|
|
104
104
|
async function handler(ctx) {
|
|
@@ -139,15 +139,15 @@ export const route: Route = {
|
|
|
139
139
|
handler,
|
|
140
140
|
description: `游戏 id
|
|
141
141
|
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
142
|
+
| 崩坏三 | 原神 | 崩坏二 | 未定事件簿 | 星穹铁道 | 绝区零 |
|
|
143
|
+
| ------ | ---- | ------ | ---------- | -------- | ------ |
|
|
144
|
+
| 1 | 2 | 3 | 4 | 6 | 8 |
|
|
145
145
|
|
|
146
146
|
公告类型
|
|
147
147
|
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
148
|
+
| 公告 | 活动 | 资讯 |
|
|
149
|
+
| ---- | ---- | ---- |
|
|
150
|
+
| 1 | 2 | 3 |`,
|
|
151
151
|
};
|
|
152
152
|
|
|
153
153
|
async function handler(ctx) {
|
|
@@ -68,9 +68,9 @@ export const route: Route = {
|
|
|
68
68
|
url: 'sr.mihoyo.com/news',
|
|
69
69
|
description: `#### 新闻 {#mi-ha-you-beng-huai-xing-qiong-tie-dao-xin-wen}
|
|
70
70
|
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
71
|
+
| 最新 | 新闻 | 公告 | 活动 |
|
|
72
|
+
| -------- | ---- | ------ | -------- |
|
|
73
|
+
| news-all | news | notice | activity |`,
|
|
74
74
|
};
|
|
75
75
|
|
|
76
76
|
async function handler(ctx) {
|
|
@@ -104,9 +104,9 @@ export const route: Route = {
|
|
|
104
104
|
handler,
|
|
105
105
|
description: `#### 新闻 {#mi-ha-you-yuan-shen-xin-wen}
|
|
106
106
|
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
107
|
+
| 最新 | 新闻 | 公告 | 活动 |
|
|
108
|
+
| ------ | ---- | ------ | -------- |
|
|
109
|
+
| latest | news | notice | activity |`,
|
|
110
110
|
};
|
|
111
111
|
|
|
112
112
|
async function handler(ctx) {
|
|
@@ -25,34 +25,34 @@ export const route: Route = {
|
|
|
25
25
|
maintainers: ['TonyRL'],
|
|
26
26
|
handler,
|
|
27
27
|
description: `| Categories | parameter |
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
28
|
+
| ------------- | ----------------- |
|
|
29
|
+
| Featured Map | mind-map-examples |
|
|
30
|
+
| Business | business |
|
|
31
|
+
| Design | design |
|
|
32
|
+
| Education | education |
|
|
33
|
+
| Entertainment | entertainment |
|
|
34
|
+
| Life | life |
|
|
35
|
+
| Marketing | marketing |
|
|
36
|
+
| Productivity | productivity |
|
|
37
|
+
| Summaries | summaries |
|
|
38
|
+
| Technology | technology |
|
|
39
|
+
| Other | other |
|
|
40
40
|
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
41
|
+
| Languages | parameter |
|
|
42
|
+
| ---------- | --------- |
|
|
43
|
+
| English | en |
|
|
44
|
+
| Deutsch | de |
|
|
45
|
+
| Français | fr |
|
|
46
|
+
| Español | es |
|
|
47
|
+
| Português | pt |
|
|
48
|
+
| Nederlands | nl |
|
|
49
|
+
| Dansk | da |
|
|
50
|
+
| Русский | ru |
|
|
51
|
+
| 日本語 | ja |
|
|
52
|
+
| Italiano | it |
|
|
53
|
+
| 简体中文 | zh |
|
|
54
|
+
| 한국어 | ko |
|
|
55
|
+
| Other | other |`,
|
|
56
56
|
};
|
|
57
57
|
|
|
58
58
|
async function handler(ctx) {
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import { config } from '@/config';
|
|
2
|
+
import ConfigNotFoundError from '@/errors/types/config-not-found';
|
|
3
|
+
import { Route, ViewType } from '@/types';
|
|
4
|
+
import got from '@/utils/got';
|
|
5
|
+
import { queryToBoolean } from '@/utils/readable-social';
|
|
6
|
+
import querystring from 'querystring';
|
|
7
|
+
import utils from './utils';
|
|
8
|
+
|
|
9
|
+
export const route: Route = {
|
|
10
|
+
path: '/timeline/home/:site/:routeParams?',
|
|
11
|
+
categories: ['social-media'],
|
|
12
|
+
view: ViewType.SocialMedia,
|
|
13
|
+
example: '/misskey/timeline/home/misskey.io',
|
|
14
|
+
parameters: {
|
|
15
|
+
site: 'instance address, domain only, without `http://` or `https://` protocol header',
|
|
16
|
+
routeParams: `
|
|
17
|
+
| Key | Description | Accepted Values | Default |
|
|
18
|
+
| -------------------- | --------------------------------------- | --------------- | ------- |
|
|
19
|
+
| limit | Number of notes to return | integer | 10 |
|
|
20
|
+
| withFiles | Only return notes containing files | 0/1/true/false | false |
|
|
21
|
+
| withRenotes | Include renotes in the timeline | 0/1/true/false | true |
|
|
22
|
+
| allowPartial | Allow partial results | 0/1/true/false | true |
|
|
23
|
+
| simplifyAuthor | Simplify author field in feed items | 0/1/true/false | true |
|
|
24
|
+
|
|
25
|
+
Note: If \`withFiles\` is set to true, renotes will not be included in the timeline regardless of the value of \`withRenotes\`.
|
|
26
|
+
|
|
27
|
+
Examples:
|
|
28
|
+
- /misskey/timeline/home/misskey.io/limit=20&withFiles=true
|
|
29
|
+
- /misskey/timeline/home/misskey.io/withRenotes=false
|
|
30
|
+
`,
|
|
31
|
+
},
|
|
32
|
+
features: {
|
|
33
|
+
requireConfig: [
|
|
34
|
+
{
|
|
35
|
+
name: 'MISSKEY_ACCESS_TOKEN',
|
|
36
|
+
optional: false,
|
|
37
|
+
description: `
|
|
38
|
+
Access token for Misskey API. Requires \`read:account\` access.
|
|
39
|
+
|
|
40
|
+
Visit the specified site's settings page to obtain an access token. E.g. https://misskey.io/settings/api
|
|
41
|
+
`,
|
|
42
|
+
},
|
|
43
|
+
],
|
|
44
|
+
requirePuppeteer: false,
|
|
45
|
+
antiCrawler: false,
|
|
46
|
+
supportBT: false,
|
|
47
|
+
supportPodcast: false,
|
|
48
|
+
supportScihub: false,
|
|
49
|
+
},
|
|
50
|
+
radar: [
|
|
51
|
+
{
|
|
52
|
+
source: ['misskey.io'],
|
|
53
|
+
},
|
|
54
|
+
],
|
|
55
|
+
name: 'Home Timeline',
|
|
56
|
+
maintainers: ['HanaokaYuzu'],
|
|
57
|
+
handler,
|
|
58
|
+
description: `::: warning
|
|
59
|
+
This route is only available for self-hosted instances.
|
|
60
|
+
:::`,
|
|
61
|
+
};
|
|
62
|
+
|
|
63
|
+
async function handler(ctx) {
|
|
64
|
+
const access_token = config.misskey.accessToken;
|
|
65
|
+
if (!access_token) {
|
|
66
|
+
throw new ConfigNotFoundError('Missing access token for Misskey API. Please set `MISSKEY_ACCESS_TOKEN` environment variable.');
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
const site = ctx.req.param('site');
|
|
70
|
+
if (!config.feature.allow_user_supply_unsafe_domain && !utils.allowSiteList.includes(site)) {
|
|
71
|
+
throw new ConfigNotFoundError(`This RSS is disabled unless 'ALLOW_USER_SUPPLY_UNSAFE_DOMAIN' is set to 'true'.`);
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
// docs on: https://misskey.io/api-doc#tag/notes/operation/notes___timeline
|
|
75
|
+
const url = `https://${site}/api/notes/timeline`;
|
|
76
|
+
const routeParams = querystring.parse(ctx.req.param('routeParams'));
|
|
77
|
+
const response = await got({
|
|
78
|
+
method: 'post',
|
|
79
|
+
url,
|
|
80
|
+
headers: {
|
|
81
|
+
Authorization: `Bearer ${access_token}`,
|
|
82
|
+
},
|
|
83
|
+
json: {
|
|
84
|
+
limit: Number(routeParams.limit ?? 10),
|
|
85
|
+
withFiles: queryToBoolean(routeParams.withFiles ?? false),
|
|
86
|
+
withRenotes: queryToBoolean(routeParams.withRenotes ?? true),
|
|
87
|
+
allowPartial: queryToBoolean(routeParams.allowPartial ?? true),
|
|
88
|
+
},
|
|
89
|
+
});
|
|
90
|
+
|
|
91
|
+
const list = response.data;
|
|
92
|
+
const simplifyAuthor = queryToBoolean(routeParams.simplifyAuthor ?? true);
|
|
93
|
+
|
|
94
|
+
return {
|
|
95
|
+
title: `Home Timeline on ${site}`,
|
|
96
|
+
link: `https://${site}`,
|
|
97
|
+
item: utils.parseNotes(list, site, simplifyAuthor),
|
|
98
|
+
};
|
|
99
|
+
}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { Route, ViewType, Data } from '@/types';
|
|
2
|
-
import utils from './utils';
|
|
3
1
|
import { config } from '@/config';
|
|
4
2
|
import ConfigNotFoundError from '@/errors/types/config-not-found';
|
|
5
3
|
import InvalidParameterError from '@/errors/types/invalid-parameter';
|
|
4
|
+
import { Data, Route, ViewType } from '@/types';
|
|
6
5
|
import { fallback, queryToBoolean } from '@/utils/readable-social';
|
|
7
6
|
import querystring from 'querystring';
|
|
7
|
+
import utils from './utils';
|
|
8
8
|
|
|
9
9
|
export const route: Route = {
|
|
10
10
|
path: '/users/notes/:username/:routeParams?',
|
|
@@ -14,10 +14,11 @@ export const route: Route = {
|
|
|
14
14
|
parameters: {
|
|
15
15
|
username: 'Misskey username in the format of username@instance.domain',
|
|
16
16
|
routeParams: `
|
|
17
|
-
| Key
|
|
18
|
-
|
|
|
19
|
-
| withRenotes
|
|
20
|
-
| mediaOnly
|
|
17
|
+
| Key | Description | Accepted Values | Default |
|
|
18
|
+
| ----------------- | --------------------------------------- | --------------- | ------- |
|
|
19
|
+
| withRenotes | Include renotes in the timeline | 0/1/true/false | false |
|
|
20
|
+
| mediaOnly | Only return posts containing media | 0/1/true/false | false |
|
|
21
|
+
| simplifyAuthor | Simplify author field in feed items | 0/1/true/false | false |
|
|
21
22
|
|
|
22
23
|
Note: \`withRenotes\` and \`mediaOnly\` are mutually exclusive and cannot both be set to true.
|
|
23
24
|
|
|
@@ -34,7 +35,7 @@ Examples:
|
|
|
34
35
|
supportScihub: false,
|
|
35
36
|
},
|
|
36
37
|
name: 'User timeline',
|
|
37
|
-
maintainers: ['siygle', 'SnowAgar25'],
|
|
38
|
+
maintainers: ['siygle', 'SnowAgar25', 'HanaokaYuzu'],
|
|
38
39
|
handler,
|
|
39
40
|
};
|
|
40
41
|
|
|
@@ -51,6 +52,7 @@ async function handler(ctx): Promise<Data> {
|
|
|
51
52
|
const routeParams = querystring.parse(ctx.req.param('routeParams'));
|
|
52
53
|
const withRenotes = fallback(undefined, queryToBoolean(routeParams.withRenotes), false);
|
|
53
54
|
const mediaOnly = fallback(undefined, queryToBoolean(routeParams.mediaOnly), false);
|
|
55
|
+
const simplifyAuthor = fallback(undefined, queryToBoolean(routeParams.simplifyAuthor), false);
|
|
54
56
|
|
|
55
57
|
// Check for conflicting parameters
|
|
56
58
|
if (withRenotes && mediaOnly) {
|
|
@@ -65,7 +67,7 @@ async function handler(ctx): Promise<Data> {
|
|
|
65
67
|
return {
|
|
66
68
|
title: `User timeline for ${username} on ${site}`,
|
|
67
69
|
link: `https://${site}/@${pureUsername}`,
|
|
68
|
-
image: avatarUrl
|
|
69
|
-
item: utils.parseNotes(accountData, site),
|
|
70
|
+
image: avatarUrl ?? '',
|
|
71
|
+
item: utils.parseNotes(accountData, site, simplifyAuthor),
|
|
70
72
|
};
|
|
71
73
|
}
|