rsshub 1.0.0-master.efcdccc → 1.0.0-master.efe64eb

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.
Files changed (1405) hide show
  1. package/README.md +2 -1
  2. package/lib/api_router.js +3 -5
  3. package/lib/app.js +10 -3
  4. package/lib/config.js +9 -0
  5. package/lib/core_router.js +17 -0
  6. package/lib/errors/RequestInProgress.js +3 -0
  7. package/lib/errors/index.js +3 -0
  8. package/lib/maintainer.js +27 -0
  9. package/lib/middleware/access-control.js +4 -4
  10. package/lib/middleware/cache/index.js +129 -0
  11. package/lib/middleware/cache/memory.js +42 -0
  12. package/lib/middleware/cache/redis.js +48 -0
  13. package/lib/middleware/header.js +1 -1
  14. package/lib/middleware/load-on-demand.js +36 -0
  15. package/lib/middleware/onerror.js +13 -70
  16. package/lib/middleware/parameter.js +28 -2
  17. package/lib/middleware/template.js +12 -6
  18. package/lib/radar-rules.js +3127 -0
  19. package/lib/radar.js +22 -0
  20. package/lib/router.js +2078 -1943
  21. package/lib/routes/10000link/news.js +1 -1
  22. package/lib/routes/12306/zxdt.js +3 -3
  23. package/lib/routes/141jav/141jav.js +1 -1
  24. package/lib/routes/141ppv/141ppv.js +1 -1
  25. package/lib/routes/199it/index.js +15 -17
  26. package/lib/routes/199it/utils.js +10 -11
  27. package/lib/routes/1point3acres/blog.js +15 -16
  28. package/lib/routes/1point3acres/offer.js +8 -8
  29. package/lib/routes/1point3acres/post.js +2 -2
  30. package/lib/routes/1x/index.js +49 -16
  31. package/lib/routes/2048/bbs.js +1 -1
  32. package/lib/routes/21caijing/channel.js +3 -3
  33. package/lib/routes/36kr/motif.js +9 -10
  34. package/lib/routes/36kr/news.js +7 -8
  35. package/lib/routes/36kr/search/article.js +3 -3
  36. package/lib/routes/36kr/user.js +8 -9
  37. package/lib/routes/3dm/game.js +1 -1
  38. package/lib/routes/3dm/news_center.js +4 -4
  39. package/lib/routes/3k8/latest.js +16 -17
  40. package/lib/routes/3ycy/home.js +4 -4
  41. package/lib/routes/51voa/channel.js +2 -2
  42. package/lib/routes/60s-science/transcript.js +1 -1
  43. package/lib/routes/6park/index.js +17 -18
  44. package/lib/routes/8btc/author.js +1 -1
  45. package/lib/routes/8kcos/cat.js +1 -1
  46. package/lib/routes/8kcos/latest.js +1 -1
  47. package/lib/routes/91ddcc/stage.js +10 -11
  48. package/lib/routes/91ddcc/user.js +2 -2
  49. package/lib/routes/93/index.js +13 -14
  50. package/lib/routes/95mm/utils.js +16 -17
  51. package/lib/routes/abc/documentId.js +7272 -0
  52. package/lib/routes/abc/id.js +7272 -0
  53. package/lib/routes/abc/index.js +51 -63
  54. package/lib/routes/acfun/video.js +1 -1
  55. package/lib/routes/acwifi/index.js +1 -1
  56. package/lib/routes/adnmb/index.js +1 -1
  57. package/lib/routes/adquan/index.js +8 -9
  58. package/lib/routes/aeon/category.js +1 -1
  59. package/lib/routes/aflcio/blog.js +11 -12
  60. package/lib/routes/agefans/detail.js +3 -3
  61. package/lib/routes/agefans/update.js +11 -12
  62. package/lib/routes/aisixiang/column.js +2 -2
  63. package/lib/routes/aisixiang/ranking.js +2 -2
  64. package/lib/routes/aisixiang/thinktank.js +2 -2
  65. package/lib/routes/aiyanxishe/home.js +1 -1
  66. package/lib/routes/algocasts/all.js +12 -14
  67. package/lib/routes/aliyun/database_month.js +3 -3
  68. package/lib/routes/aliyun/developer/group.js +1 -1
  69. package/lib/routes/aliyun/notice.js +3 -3
  70. package/lib/routes/aliyun-kernel/index.js +2 -2
  71. package/lib/routes/aljazeera/news.js +9 -10
  72. package/lib/routes/allnow/column.js +3 -45
  73. package/lib/routes/allnow/index.js +2 -45
  74. package/lib/routes/allnow/tag.js +3 -44
  75. package/lib/routes/allnow/user.js +3 -44
  76. package/lib/routes/allnow/utils.js +67 -0
  77. package/lib/routes/alter-cn/news.js +7 -8
  78. package/lib/routes/amazfitwatchfaces/utils.js +11 -12
  79. package/lib/routes/amazon/ku.js +13 -14
  80. package/lib/routes/amd/graphicsdrivers.js +1 -1
  81. package/lib/routes/andyt/index.js +1 -1
  82. package/lib/routes/anigamer/new_anime.js +12 -13
  83. package/lib/routes/animen/news.js +4 -4
  84. package/lib/routes/anitama/channel.js +2 -2
  85. package/lib/routes/aom/journal.js +15 -16
  86. package/lib/routes/aozora/newbook.js +3 -3
  87. package/lib/routes/apnews/topics.js +4 -4
  88. package/lib/routes/apple/appstore/price.js +1 -1
  89. package/lib/routes/apple/appstore/update.js +1 -1
  90. package/lib/routes/apple/exchange_repair.js +1 -1
  91. package/lib/routes/asahi/area.js +16 -17
  92. package/lib/routes/asahi/index.js +27 -15
  93. package/lib/routes/asiantolick/index.js +64 -0
  94. package/lib/routes/asml/press-releases.js +12 -13
  95. package/lib/routes/atfd/index.js +1 -1
  96. package/lib/routes/av01/actor.js +2 -2
  97. package/lib/routes/av01/tag.js +2 -2
  98. package/lib/routes/avgle/videos.js +3 -3
  99. package/lib/routes/axis-studios/work.js +3 -3
  100. package/lib/routes/babehub/utils.js +25 -26
  101. package/lib/routes/babykingdom/index.js +1 -1
  102. package/lib/routes/bahamut/creation.js +1 -1
  103. package/lib/routes/bahamut/utils.js +3 -3
  104. package/lib/routes/baidu/daily.js +1 -1
  105. package/lib/routes/bandcamp/tag.js +14 -15
  106. package/lib/routes/bangumi/calendar/today.js +1 -1
  107. package/lib/routes/bangumi/group/topic.js +2 -2
  108. package/lib/routes/bangumi/subject/comments.js +1 -1
  109. package/lib/routes/bangumi/subject/ep.js +1 -1
  110. package/lib/routes/bangumi/user/blog.js +7 -8
  111. package/lib/routes/banyuetan/byt.js +14 -15
  112. package/lib/routes/banyuetan/index.js +3 -3
  113. package/lib/routes/bbc/index.js +27 -28
  114. package/lib/routes/behance/index.js +4 -4
  115. package/lib/routes/bell-labs/events-news.js +12 -13
  116. package/lib/routes/bendibao/news.js +16 -17
  117. package/lib/routes/benedictevans/recent.js +1 -1
  118. package/lib/routes/bibgame/category.js +15 -16
  119. package/lib/routes/bihu/activaties.js +4 -4
  120. package/lib/routes/bilibili/audio.js +6 -6
  121. package/lib/routes/bilibili/blackboard.js +7 -6
  122. package/lib/routes/bilibili/danmaku.js +2 -2
  123. package/lib/routes/bilibili/dynamic.js +11 -7
  124. package/lib/routes/bilibili/followings_article.js +2 -2
  125. package/lib/routes/bilibili/followings_dynamic.js +13 -8
  126. package/lib/routes/bilibili/followings_video.js +10 -13
  127. package/lib/routes/bilibili/liveArea.js +1 -1
  128. package/lib/routes/bilibili/manga_followings.js +2 -2
  129. package/lib/routes/bilibili/manga_update.js +2 -2
  130. package/lib/routes/bilibili/page.js +1 -1
  131. package/lib/routes/bilibili/partion-ranking.js +1 -1
  132. package/lib/routes/bilibili/partion.js +1 -1
  133. package/lib/routes/bilibili/reply.js +1 -1
  134. package/lib/routes/bilibili/topic.js +1 -1
  135. package/lib/routes/bilibili/userChannel.js +40 -12
  136. package/lib/routes/bilibili/vsearch.js +10 -10
  137. package/lib/routes/bilibili/weekly_recommend.js +6 -1
  138. package/lib/routes/bioon/latest.js +13 -14
  139. package/lib/routes/bioone/featured.js +14 -15
  140. package/lib/routes/bjnews/epaper.js +3 -3
  141. package/lib/routes/bjp/apod.js +1 -1
  142. package/lib/routes/blizzard/news.js +14 -15
  143. package/lib/routes/blogs/hedwig.js +2 -2
  144. package/lib/routes/blogs/jianning.js +2 -2
  145. package/lib/routes/blogs/wangyin.js +3 -3
  146. package/lib/routes/blogs/wordpress.js +2 -2
  147. package/lib/routes/blow-studio/work.js +5 -5
  148. package/lib/routes/blur-studio/index.js +5 -5
  149. package/lib/routes/boc/whpj.js +1 -1
  150. package/lib/routes/bookscomtw/newbooks.js +2 -2
  151. package/lib/routes/boston/index.js +43 -44
  152. package/lib/routes/caixin/article.js +1 -1
  153. package/lib/routes/caixin/blog.js +1 -1
  154. package/lib/routes/caixin/category.js +2 -2
  155. package/lib/routes/caixin/database.js +48 -0
  156. package/lib/routes/caixin/latest.js +9 -5
  157. package/lib/routes/caixin/yxnews.js +1 -1
  158. package/lib/routes/cartoonmad/comic.js +2 -2
  159. package/lib/routes/caus/index.js +10 -11
  160. package/lib/routes/cbc/topics.js +7 -8
  161. package/lib/routes/cbndata/information.js +52 -0
  162. package/lib/routes/ccdi/scdc.js +1 -1
  163. package/lib/routes/ccf/news.js +15 -16
  164. package/lib/routes/ccg/index.js +12 -13
  165. package/lib/routes/ccreports/index.js +1 -1
  166. package/lib/routes/cctv/jx.js +10 -11
  167. package/lib/routes/cctv/lm.js +78 -0
  168. package/lib/routes/cctv/special.js +59 -60
  169. package/lib/routes/cctv/utils/mzzlbg.js +3 -3
  170. package/lib/routes/cctv/utils/news.js +1 -1
  171. package/lib/routes/cctv/utils/xinwen1j1.js +4 -5
  172. package/lib/routes/cctv/xwlb.js +1 -1
  173. package/lib/routes/cell/cell/index.js +5 -7
  174. package/lib/routes/cell/cover.js +6 -6
  175. package/lib/routes/cfan/news.js +1 -1
  176. package/lib/routes/cgtn/most.js +10 -11
  177. package/lib/routes/cgtn/opinions.js +13 -14
  178. package/lib/routes/cgtn/pick.js +10 -11
  179. package/lib/routes/cgtn/top.js +10 -11
  180. package/lib/routes/changba/user.js +3 -3
  181. package/lib/routes/changku/index.js +3 -3
  182. package/lib/routes/chaoli/index.js +14 -15
  183. package/lib/routes/chaping/banner.js +12 -13
  184. package/lib/routes/chaping/news.js +12 -13
  185. package/lib/routes/checkee/index.js +3 -3
  186. package/lib/routes/chicagotribune/index.js +46 -47
  187. package/lib/routes/chiculture/topic.js +25 -26
  188. package/lib/routes/chinadialogue/column.js +2 -2
  189. package/lib/routes/chinadialogue/topics.js +2 -2
  190. package/lib/routes/chinafile/index.js +36 -37
  191. package/lib/routes/chinalaborwatch/reports.js +12 -13
  192. package/lib/routes/chiphell/forum.js +1 -1
  193. package/lib/routes/chsi/zszcgd.js +12 -13
  194. package/lib/routes/chuapp/index.js +9 -10
  195. package/lib/routes/chuiniu/column.js +1 -1
  196. package/lib/routes/citavi/index.js +13 -14
  197. package/lib/routes/cktest/policy.js +17 -18
  198. package/lib/routes/clb/commentary.js +11 -12
  199. package/lib/routes/clickme/index.js +1 -1
  200. package/lib/routes/cls/depth.js +11 -12
  201. package/lib/routes/cmes/news.js +14 -15
  202. package/lib/routes/cna/index.js +13 -14
  203. package/lib/routes/cninfo/announcement.js +2 -2
  204. package/lib/routes/cnu/discovery.js +1 -1
  205. package/lib/routes/cnu/selected.js +1 -1
  206. package/lib/routes/comicskingdom/index.js +24 -25
  207. package/lib/routes/commonapp/blog.js +42 -0
  208. package/lib/routes/cool18/index.js +17 -18
  209. package/lib/routes/coolapk/dyh.js +2 -2
  210. package/lib/routes/coolapk/hot.js +2 -2
  211. package/lib/routes/coolapk/huati.js +1 -1
  212. package/lib/routes/coolapk/toutiao.js +1 -1
  213. package/lib/routes/coolapk/tuwen.js +3 -3
  214. package/lib/routes/coolapk/userDynamic.js +1 -1
  215. package/lib/routes/coolapk/utils.js +4 -4
  216. package/lib/routes/copymanga/comic.js +67 -0
  217. package/lib/routes/coronavirus/sg-moh.js +1 -1
  218. package/lib/routes/coronavirus/yahoo-japan.js +77 -0
  219. package/lib/routes/cpta/notice.js +9 -10
  220. package/lib/routes/creaders/headline.js +9 -10
  221. package/lib/routes/cria/news.js +18 -19
  222. package/lib/routes/cs/news.js +11 -12
  223. package/lib/routes/csc/notice.js +1 -1
  224. package/lib/routes/csrc/auditstatus.js +2 -2
  225. package/lib/routes/ctei/news.js +50 -0
  226. package/lib/routes/ctfhub/search.js +6 -8
  227. package/lib/routes/ctfhub/upcoming.js +1 -1
  228. package/lib/routes/curseforge/files.js +23 -39
  229. package/lib/routes/cyzone/author.js +1 -1
  230. package/lib/routes/cyzone/label.js +1 -1
  231. package/lib/routes/d1bz/novel.js +1 -1
  232. package/lib/routes/d2/daily.js +1 -1
  233. package/lib/routes/daodu/index.js +15 -16
  234. package/lib/routes/dapenti/utils.js +7 -2
  235. package/lib/routes/darwinawards/articles.js +3 -3
  236. package/lib/routes/dayone/blog.js +14 -15
  237. package/lib/routes/dbaplus/activity.js +35 -0
  238. package/lib/routes/dbaplus/tab.js +15 -16
  239. package/lib/routes/dbmv/index.js +2 -2
  240. package/lib/routes/dcinside/board.js +1 -1
  241. package/lib/routes/ddrk/list.js +1 -1
  242. package/lib/routes/dedao/index.js +12 -13
  243. package/lib/routes/dedao/list.js +11 -12
  244. package/lib/routes/deeplearningai/thebatch.js +7 -8
  245. package/lib/routes/deepmind/blog.js +12 -13
  246. package/lib/routes/dekudeals/index.js +3 -3
  247. package/lib/routes/deloitte/industries.js +7 -8
  248. package/lib/routes/dengekionline/new.js +9 -9
  249. package/lib/routes/dgjyw/index.js +7 -8
  250. package/lib/routes/dgtle/index.js +2 -2
  251. package/lib/routes/dianping/user.js +5 -11
  252. package/lib/routes/digic-pictures/index.js +4 -4
  253. package/lib/routes/digitaling/article.js +3 -3
  254. package/lib/routes/digitaling/index.js +2 -2
  255. package/lib/routes/digitaling/project.js +2 -2
  256. package/lib/routes/dilbert/strip.js +1 -1
  257. package/lib/routes/discuss/index.js +71 -0
  258. package/lib/routes/discuz/discuz.js +2 -2
  259. package/lib/routes/dlsite/campaign.js +8 -8
  260. package/lib/routes/dlsite/new.js +10 -10
  261. package/lib/routes/dockone/weekly.js +1 -1
  262. package/lib/routes/donews/index.js +2 -2
  263. package/lib/routes/douban/channel/subject.js +2 -2
  264. package/lib/routes/douban/channel/topic.js +3 -3
  265. package/lib/routes/douban/commercialpress/latest.js +1 -1
  266. package/lib/routes/douban/doulist.js +6 -6
  267. package/lib/routes/douban/explore.js +1 -1
  268. package/lib/routes/douban/explore_column.js +4 -4
  269. package/lib/routes/douban/group.js +2 -2
  270. package/lib/routes/douban/people/status.js +12 -3
  271. package/lib/routes/douban/people/wish.js +2 -2
  272. package/lib/routes/douban/replied.js +37 -38
  273. package/lib/routes/douban/replies.js +20 -21
  274. package/lib/routes/douban/topic.js +6 -6
  275. package/lib/routes/douyu/room.js +1 -1
  276. package/lib/routes/dribbble/utils.js +5 -5
  277. package/lib/routes/dsb/area.js +11 -12
  278. package/lib/routes/dsndsht23/index.js +18 -11
  279. package/lib/routes/dtcj/datahero.js +12 -13
  280. package/lib/routes/duozhi/index.js +3 -3
  281. package/lib/routes/duozhuayu/search.js +2 -6
  282. package/lib/routes/dw/index.js +11 -12
  283. package/lib/routes/dx2025/index.js +14 -15
  284. package/lib/routes/dxy/vaccine.js +34 -26
  285. package/lib/routes/dykszx/news.js +57 -0
  286. package/lib/routes/earthquake/index.js +13 -16
  287. package/lib/routes/ebb/index.js +1 -1
  288. package/lib/routes/eeo/index.js +13 -14
  289. package/lib/routes/ehentai/ehapi.js +134 -0
  290. package/lib/routes/ehentai/favorites.js +19 -0
  291. package/lib/routes/ehentai/search.js +20 -0
  292. package/lib/routes/ehentai/tag.js +13 -0
  293. package/lib/routes/elife/index.js +1 -1
  294. package/lib/routes/elitebabes/utils.js +39 -40
  295. package/lib/routes/emi-nitta/home.js +7 -8
  296. package/lib/routes/enclavebooks/collection.js +1 -1
  297. package/lib/routes/enclavebooks/user.js +1 -1
  298. package/lib/routes/erbingapp/news.js +38 -29
  299. package/lib/routes/esquirehk/tag.js +24 -25
  300. package/lib/routes/etoland/board.js +3 -3
  301. package/lib/routes/europapress/index.js +52 -0
  302. package/lib/routes/{eventernote → everything/eventernote}/actors.js +0 -0
  303. package/lib/routes/ezone/index.js +15 -16
  304. package/lib/routes/facebook/page.js +1 -1
  305. package/lib/routes/fanbox/conv.js +1 -1
  306. package/lib/routes/fanbox/header.js +1 -1
  307. package/lib/routes/fanbox/main.js +1 -1
  308. package/lib/routes/fanfou/favorites.js +13 -16
  309. package/lib/routes/fanfou/home_timeline.js +13 -16
  310. package/lib/routes/fanfou/public_timeline.js +14 -16
  311. package/lib/routes/fanfou/trends.js +6 -11
  312. package/lib/routes/fanfou/user_timeline.js +13 -16
  313. package/lib/routes/fanfou/utils.js +5 -5
  314. package/lib/routes/fantia/user.js +10 -11
  315. package/lib/routes/fashionnetwork/news.js +70 -0
  316. package/lib/routes/feixuew/index.js +13 -14
  317. package/lib/routes/ff14/ff14_zh.js +3 -5
  318. package/lib/routes/fgo/news.js +7 -8
  319. package/lib/routes/finviz/news.js +1 -1
  320. package/lib/routes/fir/update.js +1 -1
  321. package/lib/routes/firefox/addons.js +1 -1
  322. package/lib/routes/fitchratings/site.js +2 -2
  323. package/lib/routes/fjnews/fznews.js +1 -1
  324. package/lib/routes/flyertea/utils.js +3 -3
  325. package/lib/routes/fnal/news.js +50 -0
  326. package/lib/routes/fontstory/tw.js +48 -0
  327. package/lib/routes/fulinian/index.js +13 -14
  328. package/lib/routes/furaffinity/browse.js +1 -1
  329. package/lib/routes/furaffinity/favorites.js +1 -1
  330. package/lib/routes/furaffinity/gallery.js +1 -1
  331. package/lib/routes/furaffinity/home.js +1 -1
  332. package/lib/routes/furaffinity/scraps.js +1 -1
  333. package/lib/routes/furaffinity/search.js +1 -1
  334. package/lib/routes/furaffinity/status.js +1 -1
  335. package/lib/routes/furaffinity/user.js +1 -1
  336. package/lib/routes/futunn/highlights.js +3 -3
  337. package/lib/routes/fx678/kx.js +2 -2
  338. package/lib/routes/fzdm/manhua.js +11 -20
  339. package/lib/routes/galgame/hhgal.js +4 -4
  340. package/lib/routes/game4399/forum.js +4 -4
  341. package/lib/routes/gamegrape/index.js +11 -12
  342. package/lib/routes/gamer/gnn_index.js +47 -34
  343. package/lib/routes/gamer/hot.js +14 -15
  344. package/lib/routes/gameres/utils.js +20 -21
  345. package/lib/routes/gamersky/ent.js +4 -4
  346. package/lib/routes/gaoqing/utils.js +3 -3
  347. package/lib/routes/gcores/category.js +1 -1
  348. package/lib/routes/geektime/column.js +4 -4
  349. package/lib/routes/geektime/news.js +4 -4
  350. package/lib/routes/gelonghui/keyword.js +7 -8
  351. package/lib/routes/gelonghui/subject.js +7 -8
  352. package/lib/routes/gelonghui/user.js +7 -8
  353. package/lib/routes/gf-cn/news.js +10 -11
  354. package/lib/routes/girlimg/album.js +1 -1
  355. package/lib/routes/gitea/blog.js +2 -2
  356. package/lib/routes/github/contributors.js +6 -8
  357. package/lib/routes/github/file.js +10 -13
  358. package/lib/routes/github/issue.js +2 -2
  359. package/lib/routes/github/search.js +1 -1
  360. package/lib/routes/github/starred_repos.js +2 -2
  361. package/lib/routes/github/topic.js +1 -1
  362. package/lib/routes/github/trending.js +1 -1
  363. package/lib/routes/gitlab/explore.js +6 -4
  364. package/lib/routes/gitlab/release.js +30 -0
  365. package/lib/routes/gitlab/tag.js +30 -0
  366. package/lib/routes/go.jp/mofa/main.js +3 -3
  367. package/lib/routes/gocomics/index.js +7 -7
  368. package/lib/routes/google/album.js +1 -1
  369. package/lib/routes/google/citations.js +1 -1
  370. package/lib/routes/google/news.js +2 -2
  371. package/lib/routes/google/sites.js +3 -3
  372. package/lib/routes/gov/beijing/eea.js +12 -6
  373. package/lib/routes/gov/beijing/mhc.js +7 -8
  374. package/lib/routes/gov/caict/bps.js +8 -9
  375. package/lib/routes/gov/caict/caictgd.js +8 -9
  376. package/lib/routes/gov/caict/qwsj.js +1 -1
  377. package/lib/routes/gov/chinatax/latest.js +9 -10
  378. package/lib/routes/gov/chongqing/ljxq/dwgk.js +10 -11
  379. package/lib/routes/gov/chongqing/ljxq/zwgk.js +10 -11
  380. package/lib/routes/gov/cnca/hydt.js +1 -1
  381. package/lib/routes/gov/cnca/jgdt.js +1 -1
  382. package/lib/routes/gov/cnca/zxtz.js +2 -2
  383. package/lib/routes/gov/cppcc/index.js +11 -12
  384. package/lib/routes/gov/customs/list.js +3 -3
  385. package/lib/routes/gov/fmprc/utils.js +3 -3
  386. package/lib/routes/gov/guangdong/edu.js +8 -9
  387. package/lib/routes/gov/guangdong/eea.js +10 -11
  388. package/lib/routes/gov/harbin/kjj.js +11 -12
  389. package/lib/routes/gov/hubei/hbsia.js +101 -0
  390. package/lib/routes/gov/hunan/notice.js +3 -3
  391. package/lib/routes/gov/jiangsu/eea.js +1 -1
  392. package/lib/routes/gov/miit/wjgs.js +1 -1
  393. package/lib/routes/gov/miit/zcjd.js +1 -1
  394. package/lib/routes/gov/miit/zcwj.js +1 -1
  395. package/lib/routes/gov/moa/moa.js +3 -3
  396. package/lib/routes/gov/moa/sjzxfb.js +3 -3
  397. package/lib/routes/gov/mohrss/sbjm.js +17 -18
  398. package/lib/routes/gov/mohurd/policy.js +8 -9
  399. package/lib/routes/gov/ndrc/xwdt.js +11 -12
  400. package/lib/routes/gov/news/index.js +2 -2
  401. package/lib/routes/gov/ngd/index.js +15 -16
  402. package/lib/routes/gov/nppa/channels.js +2 -2
  403. package/lib/routes/gov/nppa/contents.js +3 -3
  404. package/lib/routes/gov/province/jiangsu/getContent.js +1 -2
  405. package/lib/routes/gov/sapprft/7026.js +3 -3
  406. package/lib/routes/gov/shanghai/sthj.js +2 -2
  407. package/lib/routes/gov/shanxi/rst.js +4 -4
  408. package/lib/routes/gov/shenzhen/xxgk/zfxxgj.js +8 -9
  409. package/lib/routes/gov/shuju/index.js +13 -14
  410. package/lib/routes/gov/statecouncil/briefing.js +2 -2
  411. package/lib/routes/gov/suzhou/doc.js +1 -1
  412. package/lib/routes/gov/suzhou/news.js +7 -7
  413. package/lib/routes/gov/taiwan/mnd.js +25 -26
  414. package/lib/routes/gov/veterans/china.js +6 -6
  415. package/lib/routes/gov/veterans/hebei.js +6 -6
  416. package/lib/routes/gov/wuhan/kjj.js +63 -0
  417. package/lib/routes/gov/wuhan/wehdz.js +63 -0
  418. package/lib/routes/gov/xinwen/tujie.js +11 -12
  419. package/lib/routes/gq/tw/index.js +22 -23
  420. package/lib/routes/gracg/user.js +2 -2
  421. package/lib/routes/greasyfork/scripts.js +2 -2
  422. package/lib/routes/growincity/news.js +13 -14
  423. package/lib/routes/grubstreet/utils.js +6 -6
  424. package/lib/routes/guancha/headline.js +10 -11
  425. package/lib/routes/guancha/index.js +28 -29
  426. package/lib/routes/guancha/personalpage.js +2 -2
  427. package/lib/routes/guancha/topic.js +14 -15
  428. package/lib/routes/guanggoo/index.js +7 -8
  429. package/lib/routes/guat/news.js +1 -1
  430. package/lib/routes/guet/news.js +5 -5
  431. package/lib/routes/guiltfree/onsale.js +13 -14
  432. package/lib/routes/guokr/scientific.js +13 -14
  433. package/lib/routes/gvm/index.js +7 -8
  434. package/lib/routes/gwern/category.js +2 -2
  435. package/lib/routes/hackernews/story.js +1 -1
  436. package/lib/routes/hackerone/hacktivity.js +1 -1
  437. package/lib/routes/hackerone/search.js +1 -1
  438. package/lib/routes/haimaoba/comics.js +17 -18
  439. package/lib/routes/haohaozhu/discover.js +1 -1
  440. package/lib/routes/haohaozhu/whole-house.js +2 -2
  441. package/lib/routes/hdx/explore.js +1 -1
  442. package/lib/routes/hentai-cosplays/utils.js +4 -4
  443. package/lib/routes/hinatazaka46/blog.js +1 -1
  444. package/lib/routes/hk01/zone.js +3 -3
  445. package/lib/routes/hkcnews/news.js +12 -13
  446. package/lib/routes/hkepc/index.js +5 -5
  447. package/lib/routes/hket/index.js +129 -0
  448. package/lib/routes/hkgolden/index.js +110 -0
  449. package/lib/routes/hko/weather.js +1 -1
  450. package/lib/routes/hpoi/index.js +1 -1
  451. package/lib/routes/hpoi/user.js +2 -2
  452. package/lib/routes/huawei/xinsheng/index.js +14 -15
  453. package/lib/routes/hugo/releases.js +2 -2
  454. package/lib/routes/hupu/all.js +16 -17
  455. package/lib/routes/hupu/bbs.js +5 -5
  456. package/lib/routes/hupu/dept.js +16 -17
  457. package/lib/routes/huxiu/collection.js +2 -2
  458. package/lib/routes/huya/live.js +2 -2
  459. package/lib/routes/icable/category.js +20 -23
  460. package/lib/routes/iea/index.js +13 -14
  461. package/lib/routes/ieee/author.js +2 -2
  462. package/lib/routes/ifanr/index.js +1 -1
  463. package/lib/routes/ifeng/feng.js +1 -1
  464. package/lib/routes/iie/blog.js +10 -11
  465. package/lib/routes/im2maker/index.js +1 -1
  466. package/lib/routes/imaijia/category.js +5 -5
  467. package/lib/routes/imuseum/index.js +1 -1
  468. package/lib/routes/index.js +5 -14
  469. package/lib/routes/indienova/article.js +2 -2
  470. package/lib/routes/infoq/topic.js +1 -1
  471. package/lib/routes/infoq/utils.js +2 -2
  472. package/lib/routes/infzm/news.js +3 -1
  473. package/lib/routes/initium/full.js +9 -11
  474. package/lib/routes/instagram/index.js +29 -31
  475. package/lib/routes/instagram/utils.js +7 -3
  476. package/lib/routes/instapaper/person.js +1 -1
  477. package/lib/routes/interesting-sky/recent-interesting.js +10 -11
  478. package/lib/routes/iplay/home.js +1 -1
  479. package/lib/routes/iplay/utils.js +3 -3
  480. package/lib/routes/ipsw/index.js +3 -3
  481. package/lib/routes/iqiyi/dongman.js +1 -1
  482. package/lib/routes/iqiyi/video.js +1 -1
  483. package/lib/routes/ithome/index.js +15 -16
  484. package/lib/routes/ithome/ranking.js +18 -19
  485. package/lib/routes/itslide/new.js +2 -2
  486. package/lib/routes/iyiou/index.js +4 -4
  487. package/lib/routes/iyouport/index.js +11 -12
  488. package/lib/routes/jandan/article.js +4 -4
  489. package/lib/routes/jandan/pic.js +44 -60
  490. package/lib/routes/japanpost/track.js +11 -6
  491. package/lib/routes/japanpost/utils.js +11 -8
  492. package/lib/routes/javbus/util.js +1 -1
  493. package/lib/routes/javdb/actors.js +5 -4
  494. package/lib/routes/javdb/index.js +32 -0
  495. package/lib/routes/javdb/makers.js +5 -4
  496. package/lib/routes/javdb/rankings.js +3 -3
  497. package/lib/routes/javdb/search.js +5 -5
  498. package/lib/routes/javdb/series.js +5 -4
  499. package/lib/routes/javdb/tags.js +4 -4
  500. package/lib/routes/javdb/utils.js +42 -32
  501. package/lib/routes/javlibrary/bestreviews.js +1 -1
  502. package/lib/routes/javlibrary/users.js +1 -1
  503. package/lib/routes/javlibrary/utils.js +1 -1
  504. package/lib/routes/jdlingyu/index.js +3 -3
  505. package/lib/routes/jianshu/utils.js +3 -3
  506. package/lib/routes/jiazhen108/index.js +11 -12
  507. package/lib/routes/jike/common.js +1 -1
  508. package/lib/routes/jike/user.js +1 -1
  509. package/lib/routes/jingdong/zhongchou.js +3 -3
  510. package/lib/routes/jinritoutiao/keyword.js +5 -7
  511. package/lib/routes/jisilu/reply.js +11 -12
  512. package/lib/routes/jisilu/topic.js +11 -12
  513. package/lib/routes/jpmorganchase/research.js +2 -2
  514. package/lib/routes/juejin/column.js +31 -0
  515. package/lib/routes/juejin/trending.js +2 -2
  516. package/lib/routes/juejin/utils.js +21 -28
  517. package/lib/routes/juesheng/index.js +3 -3
  518. package/lib/routes/justrun/index.js +11 -12
  519. package/lib/routes/jx3/news.js +13 -14
  520. package/lib/routes/kaggle/competitions.js +3 -3
  521. package/lib/routes/kaggle/discussion.js +2 -2
  522. package/lib/routes/kaiyan/index.js +3 -3
  523. package/lib/routes/kaopunews/index.js +28 -0
  524. package/lib/routes/kaoyan/kaoyan.js +1 -1
  525. package/lib/routes/kchuhai/index.js +1 -1
  526. package/lib/routes/kenshin/index.js +16 -17
  527. package/lib/routes/keyakizaka46/blog.js +1 -1
  528. package/lib/routes/kingarthur/index.js +19 -20
  529. package/lib/routes/kongfz/people.js +1 -1
  530. package/lib/routes/kongfz/shop.js +19 -20
  531. package/lib/routes/kpmg/insights.js +15 -16
  532. package/lib/routes/kuaibao/index.js +10 -11
  533. package/lib/routes/kuaidi100/utils.js +5 -5
  534. package/lib/routes/langlive/room.js +1 -1
  535. package/lib/routes/latepost/index.js +15 -16
  536. package/lib/routes/latexstudio/home.js +8 -9
  537. package/lib/routes/learnku/topic.js +2 -2
  538. package/lib/routes/leetcode/check-cn.js +3 -3
  539. package/lib/routes/leetcode/check-us.js +2 -2
  540. package/lib/routes/leetcode/utils.js +47 -49
  541. package/lib/routes/letterboxd/utils.js +11 -12
  542. package/lib/routes/liequtv/room.js +1 -1
  543. package/lib/routes/lifetimes/index.js +17 -18
  544. package/lib/routes/liquipedia/dota2_matches.js +1 -1
  545. package/lib/routes/liyuan-forums/threads.js +2 -2
  546. package/lib/routes/lizhi/user.js +9 -10
  547. package/lib/routes/lkong/forum.js +1 -1
  548. package/lib/routes/lofter/posts.js +2 -2
  549. package/lib/routes/lofter/tag.js +41 -37
  550. package/lib/routes/ltaaa/index.js +26 -27
  551. package/lib/routes/luogu/contest.js +2 -2
  552. package/lib/routes/luogu/daily.js +19 -20
  553. package/lib/routes/lwn/alerts.js +4 -4
  554. package/lib/routes/macau-bolsas/index.js +1 -1
  555. package/lib/routes/macwk/soft.js +32 -0
  556. package/lib/routes/mafengwo/note.js +1 -1
  557. package/lib/routes/mafengwo/ziyouxing.js +8 -9
  558. package/lib/routes/magireco/announcements.js +1 -1
  559. package/lib/routes/magireco/event_banner.js +1 -1
  560. package/lib/routes/mail/imap.js +1 -1
  561. package/lib/routes/makeuseof/index.js +18 -19
  562. package/lib/routes/maoyan/hot.js +9 -11
  563. package/lib/routes/maoyan/upcoming.js +6 -8
  564. package/lib/routes/marginnote/tag.js +11 -12
  565. package/lib/routes/mastodon/account_id.js +2 -2
  566. package/lib/routes/mastodon/acct.js +2 -2
  567. package/lib/routes/mastodon/utils.js +5 -5
  568. package/lib/routes/matataki/site/posts/favorite.js +2 -2
  569. package/lib/routes/matataki/utils/matataki-utils.js +7 -7
  570. package/lib/routes/mathpix/blog.js +17 -18
  571. package/lib/routes/matters/author.js +3 -0
  572. package/lib/routes/matters/latest.js +3 -2
  573. package/lib/routes/matters/tags.js +48 -42
  574. package/lib/routes/mcbbs/forum.js +8 -8
  575. package/lib/routes/mcbbs/post.js +10 -10
  576. package/lib/routes/mcdonalds/news.js +3 -3
  577. package/lib/routes/mediadigest/category.js +26 -27
  578. package/lib/routes/medsci/recommend.js +13 -14
  579. package/lib/routes/meihua/article.js +10 -11
  580. package/lib/routes/meihua/shots.js +10 -11
  581. package/lib/routes/meipai/user.js +1 -1
  582. package/lib/routes/meipai/utils.js +19 -21
  583. package/lib/routes/mercari/index.js +17 -18
  584. package/lib/routes/method-studios/index.js +4 -4
  585. package/lib/routes/mhgui/comic.js +53 -0
  586. package/lib/routes/mi/board.js +1 -1
  587. package/lib/routes/mi/golden.js +2 -2
  588. package/lib/routes/micmicidol/article.js +28 -0
  589. package/lib/routes/micmicidol/latest.js +3 -0
  590. package/lib/routes/micmicidol/parse.js +22 -0
  591. package/lib/routes/micmicidol/search.js +7 -0
  592. package/lib/routes/microsoft-store/updates.js +1 -3
  593. package/lib/routes/mihoyo/bh2.js +2 -2
  594. package/lib/routes/mihoyo/bh3.js +7 -8
  595. package/lib/routes/mind42/utils.js +12 -13
  596. package/lib/routes/minecraft/version.js +2 -2
  597. package/lib/routes/mingjian/index.js +12 -13
  598. package/lib/routes/miniflux/get_entries.js +5 -5
  599. package/lib/routes/miniflux/get_feeds.js +2 -2
  600. package/lib/routes/missevan/drama.js +20 -21
  601. package/lib/routes/mitbbs/index.js +14 -15
  602. package/lib/routes/mlog-club/projects.js +1 -1
  603. package/lib/routes/mlog-club/topics.js +1 -1
  604. package/lib/routes/mobilism/release.js +7 -8
  605. package/lib/routes/modian/zhongchou.js +21 -22
  606. package/lib/routes/mofcom/article.js +1 -1
  607. package/lib/routes/mofish/index.js +2 -2
  608. package/lib/routes/monotype/article.js +8 -9
  609. package/lib/routes/moxingfans/index.js +2 -2
  610. package/lib/routes/moxingnet/index.js +4 -6
  611. package/lib/routes/mp4ba/index.js +3 -3
  612. package/lib/routes/mp4er/index.js +30 -24
  613. package/lib/routes/mpaypass/main.js +2 -2
  614. package/lib/routes/mpaypass/news.js +2 -2
  615. package/lib/routes/muchong/index.js +13 -14
  616. package/lib/routes/muchong/journal.js +13 -14
  617. package/lib/routes/mzitu/home.js +1 -1
  618. package/lib/routes/mzitu/tag.js +1 -1
  619. package/lib/routes/mzitu/tags.js +1 -1
  620. package/lib/routes/mzitu/util.js +2 -2
  621. package/lib/routes/nace/blog.js +12 -13
  622. package/lib/routes/nasa/apod-cn.js +29 -30
  623. package/lib/routes/natgeo/natgeo.js +2 -2
  624. package/lib/routes/nature/highlight.js +1 -1
  625. package/lib/routes/nature/news-and-comment.js +25 -27
  626. package/lib/routes/nature/news.js +1 -1
  627. package/lib/routes/nature/research.js +1 -1
  628. package/lib/routes/nautilus/topics.js +1 -1
  629. package/lib/routes/nbd/article.js +4 -4
  630. package/lib/routes/nbd/index.js +13 -14
  631. package/lib/routes/ncm/djradio.js +1 -1
  632. package/lib/routes/ncm/playlist.js +1 -1
  633. package/lib/routes/ncm/userplaylist.js +1 -1
  634. package/lib/routes/neea/index.js +7 -7
  635. package/lib/routes/netease/ds.js +1 -1
  636. package/lib/routes/netease/dy.js +2 -2
  637. package/lib/routes/netease/dy2.js +27 -42
  638. package/lib/routes/netease/news/rank.js +22 -23
  639. package/lib/routes/netease/news/special.js +1 -1
  640. package/lib/routes/netease/open/latest.js +1 -1
  641. package/lib/routes/netflix/newsroom.js +82 -0
  642. package/lib/routes/newrank/douyin.js +9 -11
  643. package/lib/routes/newrank/utils.js +7 -7
  644. package/lib/routes/newrank/wechat.js +7 -9
  645. package/lib/routes/news/whxw.js +26 -19
  646. package/lib/routes/newsmth/account.js +1 -1
  647. package/lib/routes/newsmth/section.js +11 -12
  648. package/lib/routes/newzmz/index.js +27 -29
  649. package/lib/routes/nfmovies/index.js +1 -1
  650. package/lib/routes/nga/forum.js +1 -1
  651. package/lib/routes/nhentai/util.js +4 -4
  652. package/lib/routes/niaogebiji/index.js +4 -4
  653. package/lib/routes/nikkei/index.js +2 -2
  654. package/lib/routes/nikkei/news.js +1 -1
  655. package/lib/routes/nintendo/utils.js +29 -33
  656. package/lib/routes/noi/index.js +4 -4
  657. package/lib/routes/noi/province-news.js +4 -4
  658. package/lib/routes/noi/rg-news.js +4 -4
  659. package/lib/routes/noi/winners-list.js +4 -4
  660. package/lib/routes/northhouse/index.js +11 -12
  661. package/lib/routes/nosec/index.js +2 -2
  662. package/lib/routes/nosetime/comment.js +3 -3
  663. package/lib/routes/nosetime/home.js +1 -1
  664. package/lib/routes/notefolio/index.js +20 -21
  665. package/lib/routes/novel/axdzs.js +1 -1
  666. package/lib/routes/novel/biquge.js +1 -1
  667. package/lib/routes/novel/biqugeinfo.js +1 -1
  668. package/lib/routes/novel/booksky.js +1 -1
  669. package/lib/routes/novel/dcrsw.js +1 -1
  670. package/lib/routes/novel/ptwxz.js +44 -15
  671. package/lib/routes/novel/shuquge.js +1 -1
  672. package/lib/routes/novel/wenxuemi.js +3 -3
  673. package/lib/routes/novel/zhaishuyuan.js +30 -37
  674. package/lib/routes/now/rank.js +31 -0
  675. package/lib/routes/nowcoder/discuss.js +3 -3
  676. package/lib/routes/nowcoder/jobcenter.js +10 -11
  677. package/lib/routes/npc/index.js +1 -1
  678. package/lib/routes/nsfc/news.js +1 -1
  679. package/lib/routes/nvidia/webdriverupdate.js +2 -2
  680. package/lib/routes/nytimes/daily_briefing_chinese.js +26 -16
  681. package/lib/routes/odaily/activity.js +47 -0
  682. package/lib/routes/ofweek/news.js +11 -12
  683. package/lib/routes/one/index.js +1 -1
  684. package/lib/routes/onejav/one.js +1 -1
  685. package/lib/routes/onenotegem/release.js +15 -16
  686. package/lib/routes/openai/blog.js +13 -14
  687. package/lib/routes/or/index.js +13 -14
  688. package/lib/routes/ornl/news.js +11 -12
  689. package/lib/routes/oschina/news.js +1 -1
  690. package/lib/routes/oschina/topic.js +1 -1
  691. package/lib/routes/oschina/u.js +1 -1
  692. package/lib/routes/oschina/user.js +1 -1
  693. package/lib/routes/outagereport/service.js +2 -2
  694. package/lib/routes/p-articles/contributors.js +1 -1
  695. package/lib/routes/p-articles/section.js +1 -1
  696. package/lib/routes/p-articles/utils.js +3 -3
  697. package/lib/routes/paidai/bbs.js +3 -3
  698. package/lib/routes/paidai/index.js +3 -3
  699. package/lib/routes/paidai/news.js +3 -3
  700. package/lib/routes/paidai/utils.js +2 -2
  701. package/lib/routes/parcel/hermesuk.js +1 -1
  702. package/lib/routes/partnershiponai/resources.js +49 -0
  703. package/lib/routes/pbc/goutongjiaoliu.js +14 -15
  704. package/lib/routes/pbc/tradeAnnouncement.js +14 -15
  705. package/lib/routes/pcr/news-cn.js +2 -2
  706. package/lib/routes/pcr/news-tw.js +1 -1
  707. package/lib/routes/pediy/topic.js +3 -3
  708. package/lib/routes/people/cpc/24h.js +14 -15
  709. package/lib/routes/people/env.js +4 -4
  710. package/lib/routes/people/opinion.js +4 -4
  711. package/lib/routes/people/xjpjh.js +4 -4
  712. package/lib/routes/pgyer/app.js +9 -9
  713. package/lib/routes/phoronix/index.js +59 -61
  714. package/lib/routes/pianyuan/app.js +3 -3
  715. package/lib/routes/piaohua/hot.js +8 -9
  716. package/lib/routes/piapro/public.js +1 -1
  717. package/lib/routes/piapro/user.js +1 -1
  718. package/lib/routes/pixiv/api/getBookmarks.js +3 -3
  719. package/lib/routes/pixiv/api/getIllustFollows.js +2 -2
  720. package/lib/routes/pixiv/api/getIllusts.js +3 -3
  721. package/lib/routes/pixiv/api/getRanking.js +3 -3
  722. package/lib/routes/pixiv/api/getUserDetail.js +3 -3
  723. package/lib/routes/pixiv/api/searchIllust.js +2 -2
  724. package/lib/routes/pixiv/api/searchPopularIllust.js +2 -2
  725. package/lib/routes/pixiv/bookmarks.js +6 -11
  726. package/lib/routes/pixiv/illustfollow.js +8 -10
  727. package/lib/routes/pixiv/ranking.js +6 -11
  728. package/lib/routes/pixiv/search.js +6 -11
  729. package/lib/routes/pixiv/token.js +22 -32
  730. package/lib/routes/pixiv/user.js +5 -11
  731. package/lib/routes/pixiv/utils.js +17 -0
  732. package/lib/routes/pjsk/news.js +49 -0
  733. package/lib/routes/pmcaff/feed.js +6 -6
  734. package/lib/routes/pmcaff/list.js +2 -2
  735. package/lib/routes/pmcaff/user.js +6 -6
  736. package/lib/routes/pnas/index.js +1 -1
  737. package/lib/routes/polar/blog.js +12 -13
  738. package/lib/routes/popiask/tapechat_questions.js +2 -2
  739. package/lib/routes/popyard/index.js +51 -53
  740. package/lib/routes/pornhub/category_url.js +1 -1
  741. package/lib/routes/pornhub/model.js +1 -1
  742. package/lib/routes/pornhub/pornstar.js +1 -1
  743. package/lib/routes/pornhub/users.js +1 -1
  744. package/lib/routes/potplayer/update.js +42 -0
  745. package/lib/routes/processon/popular.js +13 -14
  746. package/lib/routes/project-zero-issues/index.js +2 -2
  747. package/lib/routes/proletar/index.js +14 -15
  748. package/lib/routes/ps/product.js +3 -3
  749. package/lib/routes/ps/ps4updates.js +3 -3
  750. package/lib/routes/psnine/game.js +1 -1
  751. package/lib/routes/psnine/index.js +1 -1
  752. package/lib/routes/psnine/news.js +13 -14
  753. package/lib/routes/psnine/node.js +13 -14
  754. package/lib/routes/psnine/shuzhe.js +1 -1
  755. package/lib/routes/psnine/trade.js +1 -1
  756. package/lib/routes/pubmed/trending.js +19 -20
  757. package/lib/routes/qidian/forum.js +1 -1
  758. package/lib/routes/qidian/free-next.js +2 -2
  759. package/lib/routes/qidian/free.js +2 -2
  760. package/lib/routes/qingting/channel.js +7 -8
  761. package/lib/routes/qlwb/city.js +8 -9
  762. package/lib/routes/qlwb/news.js +8 -9
  763. package/lib/routes/qnap/release-notes.js +13 -14
  764. package/lib/routes/qstheory/index.js +13 -14
  765. package/lib/routes/qtfyfl/category.js +3 -3
  766. package/lib/routes/quantamagazine/archive.js +3 -5
  767. package/lib/routes/questmobile/report.js +122 -0
  768. package/lib/routes/qutoutiao/category.js +2 -2
  769. package/lib/routes/qzcea/index.js +12 -13
  770. package/lib/routes/radio/radio.js +2 -2
  771. package/lib/routes/readhub/category.js +1 -1
  772. package/lib/routes/remote-work/index.js +8 -9
  773. package/lib/routes/researchgate/publications.js +60 -0
  774. package/lib/routes/reuters/channel.js +1 -1
  775. package/lib/routes/reuters/theWire.js +3 -3
  776. package/lib/routes/rf/article.js +8 -9
  777. package/lib/routes/rfa/index.js +10 -11
  778. package/lib/routes/right/forum.js +67 -0
  779. package/lib/routes/rmlt/idea.js +54 -0
  780. package/lib/routes/{szse/rule.js → rss3/blog.js} +12 -11
  781. package/lib/routes/ruby-china/utils.js +2 -2
  782. package/lib/routes/s-hentai/index.js +64 -0
  783. package/lib/routes/sakurazaka46/blog.js +1 -1
  784. package/lib/routes/samsungmembers/latest.js +8 -9
  785. package/lib/routes/saraba1st/thread.js +13 -16
  786. package/lib/routes/sbs/chinese.js +70 -0
  787. package/lib/routes/scboy/thread.js +12 -15
  788. package/lib/routes/sciencemag/cover.js +1 -3
  789. package/lib/routes/sciencemag/current.js +2 -2
  790. package/lib/routes/sciencemag/early.js +4 -8
  791. package/lib/routes/sciencenet/blog.js +15 -16
  792. package/lib/routes/scmp/index.js +78 -79
  793. package/lib/routes/security/pulses.js +2 -2
  794. package/lib/routes/segmentfault/channel.js +4 -4
  795. package/lib/routes/segmentfault/user.js +4 -4
  796. package/lib/routes/semiconductors/latest-news.js +11 -12
  797. package/lib/routes/sexinsex/index.js +5 -5
  798. package/lib/routes/shinybbs/index.js +18 -19
  799. package/lib/routes/shinybbs/latest.js +16 -17
  800. package/lib/routes/showroom/room.js +3 -3
  801. package/lib/routes/shuhui/comics.js +4 -4
  802. package/lib/routes/simonsfoundation/articles.js +1 -1
  803. package/lib/routes/sina/chuangshiji.js +3 -3
  804. package/lib/routes/sina/discovery.js +3 -3
  805. package/lib/routes/sina/finance.js +2 -2
  806. package/lib/routes/sina/rollnews.js +2 -2
  807. package/lib/routes/sina/sports.js +14 -15
  808. package/lib/routes/siren/index.js +1 -1
  809. package/lib/routes/sixthtone/news.js +1 -1
  810. package/lib/routes/sketch/updates.js +3 -3
  811. package/lib/routes/skysports/news.js +53 -0
  812. package/lib/routes/smzdm/article.js +3 -3
  813. package/lib/routes/smzdm/baoliao.js +3 -3
  814. package/lib/routes/smzdm/haowen.js +3 -3
  815. package/lib/routes/smzdm/haowen_fenlei.js +3 -3
  816. package/lib/routes/smzdm/keyword.js +1 -1
  817. package/lib/routes/sobooks/utils.js +15 -16
  818. package/lib/routes/socialbeta/home.js +9 -10
  819. package/lib/routes/solidot/_article.js +5 -5
  820. package/lib/routes/soomal/topics.js +6 -6
  821. package/lib/routes/soul/hot.js +16 -8
  822. package/lib/routes/soul/index.js +3 -3
  823. package/lib/routes/soundcloud/utils.js +3 -3
  824. package/lib/routes/sse/sserules.js +12 -13
  825. package/lib/routes/ssmh/category.js +2 -2
  826. package/lib/routes/ssmh/index.js +2 -2
  827. package/lib/routes/sspai/activity.js +4 -4
  828. package/lib/routes/sspai/author.js +3 -3
  829. package/lib/routes/sspai/column.js +6 -6
  830. package/lib/routes/sspai/matrix.js +3 -3
  831. package/lib/routes/sspai/series.js +10 -11
  832. package/lib/routes/sspai/shortcutsGallery.js +1 -1
  833. package/lib/routes/sspai/tag.js +5 -5
  834. package/lib/routes/sspai/topic.js +4 -4
  835. package/lib/routes/sspai/topics.js +3 -3
  836. package/lib/routes/ssydt/article.js +58 -0
  837. package/lib/routes/stcn/data.js +21 -22
  838. package/lib/routes/stcn/kuaixun.js +21 -22
  839. package/lib/routes/stcn/news.js +18 -19
  840. package/lib/routes/stork/keyword.js +3 -3
  841. package/lib/routes/swjtu/tl/news.js +1 -1
  842. package/lib/routes/sznews/press.js +12 -13
  843. package/lib/routes/sznews/ranking.js +19 -20
  844. package/lib/routes/szse/inquire.js +1 -1
  845. package/lib/routes/szse/notice.js +3 -3
  846. package/lib/routes/szse/projectdynamic.js +103 -0
  847. package/lib/routes/t66y/index.js +2 -2
  848. package/lib/routes/t66y/post.js +2 -2
  849. package/lib/routes/tahui/rptlist.js +11 -12
  850. package/lib/routes/tam/forecast.js +14 -15
  851. package/lib/routes/tanchinese/index.js +53 -0
  852. package/lib/routes/taobao/zhongchou.js +1 -1
  853. package/lib/routes/taptap/changelog.js +1 -1
  854. package/lib/routes/taptap/review.js +1 -1
  855. package/lib/routes/taptap/topic.js +1 -1
  856. package/lib/routes/technologyreview/index.js +21 -22
  857. package/lib/routes/technologyreview/topic.js +16 -17
  858. package/lib/routes/telecompaper/news.js +13 -20
  859. package/lib/routes/telecompaper/search.js +10 -11
  860. package/lib/routes/telegram/blog.js +2 -2
  861. package/lib/routes/telegram/channel.js +1 -1
  862. package/lib/routes/tencent/bigdata/index.js +13 -14
  863. package/lib/routes/tencent/bugly/changelog.js +3 -3
  864. package/lib/routes/tencent/egame/room.js +4 -4
  865. package/lib/routes/tencent/factcheck/index.js +13 -4
  866. package/lib/routes/tencent/gameinstitute/community.js +4 -4
  867. package/lib/routes/tencent/guyu/channel.js +5 -5
  868. package/lib/routes/tencent/news/author.js +3 -3
  869. package/lib/routes/tencent/pvp/newsindex.js +1 -1
  870. package/lib/routes/tencent/qcloud/mlvb/changelog.js +1 -1
  871. package/lib/routes/tencent/video/playlist.js +2 -2
  872. package/lib/routes/tencent/wechat/csm.js +1 -1
  873. package/lib/routes/tencent/wechat/ershcimi.js +10 -11
  874. package/lib/routes/tencent/wechat/feeds.js +1 -1
  875. package/lib/routes/tencent/wechat/miniprogram/devtools.js +4 -4
  876. package/lib/routes/tencent/wechat/miniprogram/framework.js +4 -4
  877. package/lib/routes/tencent/wechat/miniprogram/plugins.js +1 -1
  878. package/lib/routes/tencent/wechat/miniprogram/wxcloud.js +6 -6
  879. package/lib/routes/tencent/wechat/mp.js +13 -6
  880. package/lib/routes/tencent/wechat/msgalbum.js +4 -4
  881. package/lib/routes/tencent/wechat/uread.js +2 -2
  882. package/lib/routes/tencent/wechat/wechat-open/community/announce.js +1 -1
  883. package/lib/routes/tencent/wechat/wechat-open/community/question.js +1 -1
  884. package/lib/routes/tencent/wechat/wxnmh.js +15 -16
  885. package/lib/routes/the-economist/download.js +1 -1
  886. package/lib/routes/thebrain/blog.js +14 -15
  887. package/lib/routes/thepaper/839studio/category.js +1 -1
  888. package/lib/routes/thepaper/utils.js +1 -1
  889. package/lib/routes/thrillist/index.js +22 -23
  890. package/lib/routes/tianyancha/hot.js +12 -13
  891. package/lib/routes/tieba/post.js +7 -7
  892. package/lib/routes/tieba/user.js +25 -20
  893. package/lib/routes/tingshuitz/dalian.js +2 -2
  894. package/lib/routes/tingshuitz/hangzhou.js +1 -1
  895. package/lib/routes/tingshuitz/wuhan.js +1 -1
  896. package/lib/routes/tingshuitz/xiaoshan.js +1 -1
  897. package/lib/routes/topbook/overview.js +13 -14
  898. package/lib/routes/topbook/today.js +11 -12
  899. package/lib/routes/tophub/index.js +2 -2
  900. package/lib/routes/trakt/collection.js +1 -1
  901. package/lib/routes/tuicool/mags.js +3 -3
  902. package/lib/routes/twitter/developer-api/search.js +22 -0
  903. package/lib/routes/twitter/developer-api/user.js +29 -0
  904. package/lib/routes/twitter/keyword.js +5 -19
  905. package/lib/routes/twitter/media.js +7 -0
  906. package/lib/routes/twitter/user.js +4 -47
  907. package/lib/routes/twitter/utils.js +48 -25
  908. package/lib/routes/twitter/web-api/media.js +20 -0
  909. package/lib/routes/twitter/web-api/search.js +16 -0
  910. package/lib/routes/twitter/web-api/twitter-api.js +123 -0
  911. package/lib/routes/twitter/web-api/twitter-got.js +87 -0
  912. package/lib/routes/twitter/web-api/user.js +32 -0
  913. package/lib/routes/twmanhuagui/comic.js +53 -0
  914. package/lib/routes/twreporter/fetch_article.js +1 -1
  915. package/lib/routes/typora/changelog.js +4 -4
  916. package/lib/routes/udn/global.js +2 -2
  917. package/lib/routes/ui-cn/article.js +3 -3
  918. package/lib/routes/uisdc/hangye.js +14 -15
  919. package/lib/routes/uisdc/talk.js +19 -20
  920. package/lib/routes/uisdc/topic.js +13 -14
  921. package/lib/routes/uisdc/zt.js +19 -20
  922. package/lib/routes/uniqlo/stylingbook.js +1 -1
  923. package/lib/routes/unit-image/films.js +3 -3
  924. package/lib/routes/universities/ahau/cs_news/utils.js +3 -3
  925. package/lib/routes/universities/ahau/jwc/utils.js +3 -3
  926. package/lib/routes/universities/ahau/main/utils.js +3 -3
  927. package/lib/routes/universities/ahmu/news.js +2 -2
  928. package/lib/routes/universities/ahut/cstzgg.js +1 -1
  929. package/lib/routes/universities/ahut/jwc.js +1 -1
  930. package/lib/routes/universities/ahut/news.js +1 -1
  931. package/lib/routes/universities/bit/bityjs.js +1 -1
  932. package/lib/routes/universities/bit/cs/utils.js +3 -4
  933. package/lib/routes/universities/bit/jwc/utils.js +3 -4
  934. package/lib/routes/universities/bjfu/grs.js +3 -3
  935. package/lib/routes/universities/bjfu/jwc/utils.js +3 -4
  936. package/lib/routes/universities/bjfu/kjc.js +3 -3
  937. package/lib/routes/universities/bjfu/news/utils.js +3 -4
  938. package/lib/routes/universities/bjtu/gs/index.js +3 -3
  939. package/lib/routes/universities/buaa/utils.js +3 -3
  940. package/lib/routes/universities/bupt/grs.js +3 -3
  941. package/lib/routes/universities/bupt/utils.js +4 -4
  942. package/lib/routes/universities/bupt/yz.js +3 -3
  943. package/lib/routes/universities/bwu/utils.js +7 -7
  944. package/lib/routes/universities/cas/cg/index.js +11 -12
  945. package/lib/routes/universities/cas/iee/kydt.js +11 -12
  946. package/lib/routes/universities/cas/mesalab/kb.js +2 -2
  947. package/lib/routes/universities/cauele/cauele.js +1 -1
  948. package/lib/routes/universities/cauyjs/cauyjs.js +1 -1
  949. package/lib/routes/universities/ccnu/career.js +1 -1
  950. package/lib/routes/universities/ccnu/ccnucs.js +1 -1
  951. package/lib/routes/universities/ccnu/ccnuwu.js +1 -1
  952. package/lib/routes/universities/ccnu/ccnuyjs.js +1 -1
  953. package/lib/routes/universities/cpu/home.js +2 -2
  954. package/lib/routes/universities/cpu/jwc.js +2 -2
  955. package/lib/routes/universities/cpu/yjsy.js +2 -2
  956. package/lib/routes/universities/cqu/jwc/announcement.js +23 -25
  957. package/lib/routes/universities/cqu/net/info.js +4 -4
  958. package/lib/routes/universities/cqu/news/tz.js +5 -5
  959. package/lib/routes/universities/cqu/news/utils.js +4 -4
  960. package/lib/routes/universities/cqu/sci/info.js +4 -4
  961. package/lib/routes/universities/cqu/youth/info.js +4 -4
  962. package/lib/routes/universities/cqust/jw.js +1 -1
  963. package/lib/routes/universities/cqust/lib.js +1 -1
  964. package/lib/routes/universities/cqwu/news.js +2 -2
  965. package/lib/routes/universities/csu/job.js +1 -1
  966. package/lib/routes/universities/cucyjs/cucyjs.js +1 -1
  967. package/lib/routes/universities/cug/gcxy/index.js +3 -3
  968. package/lib/routes/universities/cug/undergraduate.js +3 -3
  969. package/lib/routes/universities/dlmu/grs/zsgz.js +8 -9
  970. package/lib/routes/universities/dlu/jiaowu/news.js +2 -2
  971. package/lib/routes/universities/dpu/jiaowu/news.js +1 -1
  972. package/lib/routes/universities/dpu/wlfw/news.js +1 -1
  973. package/lib/routes/universities/dut/index.js +5 -5
  974. package/lib/routes/universities/ecnuyjs/ecnuyjs.js +1 -1
  975. package/lib/routes/universities/ecustyjs/ecustyjs.js +1 -1
  976. package/lib/routes/universities/fzu/news.js +17 -18
  977. package/lib/routes/universities/gdou/jwc/utils.js +3 -4
  978. package/lib/routes/universities/gdut/news.js +5 -5
  979. package/lib/routes/universities/gzmtu/jwc/index.js +1 -1
  980. package/lib/routes/universities/gzmtu/jwc/utils.js +3 -3
  981. package/lib/routes/universities/gzmtu/tsg/index.js +1 -1
  982. package/lib/routes/universities/gzmtu/tsg/utils.js +3 -3
  983. package/lib/routes/universities/gzyjs/gzyjs.js +1 -1
  984. package/lib/routes/universities/harvard/health/blog.js +51 -0
  985. package/lib/routes/universities/hbut/cs.js +2 -2
  986. package/lib/routes/universities/hbut/news.js +2 -2
  987. package/lib/routes/universities/henu/news.js +1 -1
  988. package/lib/routes/universities/heu/job.js +1 -1
  989. package/lib/routes/universities/heu/news.js +1 -1
  990. package/lib/routes/universities/heu/uae.js +1 -1
  991. package/lib/routes/universities/heu/ugs/news.js +1 -1
  992. package/lib/routes/universities/heu/yjsy.js +1 -1
  993. package/lib/routes/universities/hit/today.js +7 -7
  994. package/lib/routes/universities/hitsz/article.js +13 -14
  995. package/lib/routes/universities/hitwh/today.js +19 -20
  996. package/lib/routes/universities/hnust/art/index.js +2 -2
  997. package/lib/routes/universities/hnust/chem/index.js +2 -2
  998. package/lib/routes/universities/hnust/computer/index.js +2 -2
  999. package/lib/routes/universities/hnust/graduate/index.js +2 -2
  1000. package/lib/routes/universities/hnust/jwc/index.js +2 -2
  1001. package/lib/routes/universities/hubu/news.js +1 -1
  1002. package/lib/routes/universities/hust/aia/news.js +1 -1
  1003. package/lib/routes/universities/hust/aia/notice.js +1 -1
  1004. package/lib/routes/universities/hustyjs/hustyjs.js +1 -1
  1005. package/lib/routes/universities/jlbtc/index.js +13 -14
  1006. package/lib/routes/universities/jlbtc/jwc.js +13 -14
  1007. package/lib/routes/universities/jlbtc/kyc.js +13 -14
  1008. package/lib/routes/universities/jnu/yw/index.js +4 -4
  1009. package/lib/routes/universities/ju/jwc.js +1 -1
  1010. package/lib/routes/universities/lit/jwc.js +1 -1
  1011. package/lib/routes/universities/lit/tw.js +1 -1
  1012. package/lib/routes/universities/lit/xwzx.js +1 -1
  1013. package/lib/routes/universities/lntu/jwnews.js +2 -2
  1014. package/lib/routes/universities/lyu/news/utils.js +3 -4
  1015. package/lib/routes/universities/mit/csail/news.js +16 -17
  1016. package/lib/routes/universities/mit/graduateadmissions.js +4 -4
  1017. package/lib/routes/universities/nchu/jwc.js +1 -1
  1018. package/lib/routes/universities/nciae/news.js +3 -3
  1019. package/lib/routes/universities/nciae/tzgg.js +3 -3
  1020. package/lib/routes/universities/nciae/xsxx.js +3 -3
  1021. package/lib/routes/universities/neu/news.js +2 -2
  1022. package/lib/routes/universities/njfu/jwc.js +23 -13
  1023. package/lib/routes/universities/nku/jwc/index.js +1 -1
  1024. package/lib/routes/universities/nuaa/cs/index.js +3 -3
  1025. package/lib/routes/universities/nuc/index.js +2 -2
  1026. package/lib/routes/universities/nudt/yjszs.js +14 -15
  1027. package/lib/routes/universities/nuist/bulletin.js +1 -1
  1028. package/lib/routes/universities/nuist/cas.js +2 -2
  1029. package/lib/routes/universities/nuist/jwc.js +2 -2
  1030. package/lib/routes/universities/nuist/library/lib.js +1 -1
  1031. package/lib/routes/universities/nuist/scs.js +2 -2
  1032. package/lib/routes/universities/nuist/sese.js +2 -2
  1033. package/lib/routes/universities/nuist/xgc.js +2 -2
  1034. package/lib/routes/universities/nuist/yjs.js +2 -2
  1035. package/lib/routes/universities/nwafu/54youth.js +28 -0
  1036. package/lib/routes/universities/nwafu/cie.js +28 -0
  1037. package/lib/routes/universities/nwafu/gs.js +28 -0
  1038. package/lib/routes/universities/nwafu/jcc.js +28 -0
  1039. package/lib/routes/universities/nwafu/jiaowu.js +28 -0
  1040. package/lib/routes/universities/nwafu/lib.js +28 -0
  1041. package/lib/routes/universities/nwafu/news.js +28 -0
  1042. package/lib/routes/universities/nwafu/nic.js +28 -0
  1043. package/lib/routes/universities/nwafu/yjshy.js +28 -0
  1044. package/lib/routes/universities/outele/outele.js +1 -1
  1045. package/lib/routes/universities/outyjs/outyjs.js +1 -1
  1046. package/lib/routes/universities/pku/bbs/hot.js +21 -22
  1047. package/lib/routes/universities/pku/pkuyjs.js +1 -1
  1048. package/lib/routes/universities/scauyjs/scauyjs.js +1 -1
  1049. package/lib/routes/universities/scnu/scnucs.js +1 -1
  1050. package/lib/routes/universities/scnu/scnuyjs.js +1 -1
  1051. package/lib/routes/universities/sctu/jwc/index.js +1 -1
  1052. package/lib/routes/universities/scu/jwc.js +6 -6
  1053. package/lib/routes/universities/scu/xg.js +5 -5
  1054. package/lib/routes/universities/scut/jwc/news.js +1 -1
  1055. package/lib/routes/universities/scut/jwc/notice.js +1 -1
  1056. package/lib/routes/universities/scut/jwc/school.js +121 -0
  1057. package/lib/routes/universities/scut/scutyjs.js +1 -1
  1058. package/lib/routes/universities/scut/seie/news_center.js +57 -0
  1059. package/lib/routes/universities/scvtc/xygg.js +10 -11
  1060. package/lib/routes/universities/seu/cse/index.js +2 -2
  1061. package/lib/routes/universities/shanghaitech/activity.js +10 -11
  1062. package/lib/routes/universities/shmtu/jwc.js +12 -9
  1063. package/lib/routes/universities/shmtu/www.js +4 -4
  1064. package/lib/routes/universities/shou/www.js +3 -3
  1065. package/lib/routes/universities/shu/index.js +5 -7
  1066. package/lib/routes/universities/shu/jwc.js +5 -7
  1067. package/lib/routes/universities/sjtu/gs/tzgg.js +1 -1
  1068. package/lib/routes/universities/sjtu/jwc.js +1 -1
  1069. package/lib/routes/universities/sjtu/tongqu/activity.js +1 -1
  1070. package/lib/routes/universities/slu/utils.js +2 -2
  1071. package/lib/routes/universities/sustech/newshub-zh.js +1 -1
  1072. package/lib/routes/universities/sustyjs/sustyjs.js +1 -1
  1073. package/lib/routes/universities/swufe/seie/index.js +2 -2
  1074. package/lib/routes/universities/swust/cs.js +1 -1
  1075. package/lib/routes/universities/swust/helper.js +1 -1
  1076. package/lib/routes/universities/swust/jwc_news.js +3 -3
  1077. package/lib/routes/universities/swust/jwc_notice.js +3 -3
  1078. package/lib/routes/universities/szu/yz/index.js +2 -2
  1079. package/lib/routes/universities/szu/yz/utils.js +4 -4
  1080. package/lib/routes/universities/szuyjs/szuyjs.js +1 -1
  1081. package/lib/routes/universities/thu/career.js +35 -18
  1082. package/lib/routes/universities/thu/index.js +1 -1
  1083. package/lib/routes/universities/tju/sse/_article.js +2 -2
  1084. package/lib/routes/universities/tjuyjs/tjuyjs.js +1 -1
  1085. package/lib/routes/universities/tynu/tynu.js +1 -1
  1086. package/lib/routes/universities/uestc/auto.js +7 -7
  1087. package/lib/routes/universities/uestc/cs.js +7 -7
  1088. package/lib/routes/universities/uestc/gr.js +3 -3
  1089. package/lib/routes/universities/upc/jsj.js +2 -2
  1090. package/lib/routes/universities/upc/main.js +2 -2
  1091. package/lib/routes/universities/upcyjs/upcyjs.js +1 -1
  1092. package/lib/routes/universities/usst/jwc.js +3 -3
  1093. package/lib/routes/universities/ustc/job.js +73 -74
  1094. package/lib/routes/universities/ustc/jwc/index.js +3 -3
  1095. package/lib/routes/universities/utdallas/isso.js +4 -9
  1096. package/lib/routes/universities/whu/news.js +1 -1
  1097. package/lib/routes/universities/wsyu/news.js +1 -1
  1098. package/lib/routes/universities/wtu/index.js +3 -3
  1099. package/lib/routes/universities/wzu/news.js +25 -0
  1100. package/lib/routes/universities/xjtu/dean.js +3 -3
  1101. package/lib/routes/universities/xjtu/ee.js +44 -0
  1102. package/lib/routes/universities/xjtu/gs/tzgg.js +7 -8
  1103. package/lib/routes/universities/xjtu/international.js +2 -2
  1104. package/lib/routes/universities/xjtu/job.js +50 -0
  1105. package/lib/routes/universities/xmu/aero.js +63 -0
  1106. package/lib/routes/universities/xynu/zkb/index.js +1 -1
  1107. package/lib/routes/universities/ynnu/edu/base64.js +351 -0
  1108. package/lib/routes/universities/ynnu/edu/news.js +109 -0
  1109. package/lib/routes/universities/ynu/grs/qttz.js +1 -1
  1110. package/lib/routes/universities/ynu/grs/zytz.js +1 -1
  1111. package/lib/routes/universities/ynu/home/main.js +1 -1
  1112. package/lib/routes/universities/ynu/jwc/zytz.js +1 -1
  1113. package/lib/routes/universities/ynu/utils.js +6 -6
  1114. package/lib/routes/universities/yzu/home.js +3 -3
  1115. package/lib/routes/universities/yzu/yjszs.js +3 -3
  1116. package/lib/routes/universities/zjgsu/tzgg/utils.js +3 -3
  1117. package/lib/routes/universities/zju/career/index.js +2 -2
  1118. package/lib/routes/universities/zju/cst/index.js +2 -2
  1119. package/lib/routes/universities/zju/grs/index.js +2 -2
  1120. package/lib/routes/universities/zju/list.js +3 -3
  1121. package/lib/routes/universities/zju/physics/index.js +2 -2
  1122. package/lib/routes/universities/zjut/design.js +4 -4
  1123. package/lib/routes/universities/zjut/index.js +4 -4
  1124. package/lib/routes/universities/zkyai/zkyai.js +1 -1
  1125. package/lib/routes/universities/zkyyjs/zkyyjs.js +1 -1
  1126. package/lib/routes/universities/zzuli/campus/index.js +1 -1
  1127. package/lib/routes/universities/zzuli/yjsc/index.js +1 -1
  1128. package/lib/routes/us/supremecourt/argument_audio.js +20 -21
  1129. package/lib/routes/us/treasury/press-releases.js +13 -14
  1130. package/lib/routes/us/ustr/press-releases.js +13 -14
  1131. package/lib/routes/uwants/index.js +70 -0
  1132. package/lib/routes/vgn/index.js +1 -1
  1133. package/lib/routes/voa/day-photos.js +20 -21
  1134. package/lib/routes/voa/index.js +9 -10
  1135. package/lib/routes/vocus/user.js +1 -1
  1136. package/lib/routes/vocus/utils.js +3 -3
  1137. package/lib/routes/vol/lastupdate.js +4 -2
  1138. package/lib/routes/vuevideo/user.js +3 -3
  1139. package/lib/routes/vulture/utils.js +11 -11
  1140. package/lib/routes/wanwansub/index.js +16 -17
  1141. package/lib/routes/weatheralarm/index.js +2 -2
  1142. package/lib/routes/webtoons/naver.js +1 -1
  1143. package/lib/routes/weexcn/index.js +6 -6
  1144. package/lib/routes/weforum/report.js +11 -12
  1145. package/lib/routes/wegene/column.js +1 -1
  1146. package/lib/routes/wegene/newest.js +1 -1
  1147. package/lib/routes/weibo/keyword.js +2 -2
  1148. package/lib/routes/weibo/super_index.js +1 -1
  1149. package/lib/routes/weibo/timeline.js +14 -14
  1150. package/lib/routes/weibo/user.js +20 -30
  1151. package/lib/routes/weibo/utils.js +4 -6
  1152. package/lib/routes/weidian/goods.js +1 -1
  1153. package/lib/routes/wenxuecity/bbs.js +2 -2
  1154. package/lib/routes/wenxuecity/blog.js +3 -3
  1155. package/lib/routes/wenxuecity/hot.js +2 -2
  1156. package/lib/routes/wenxuecity/news.js +17 -18
  1157. package/lib/routes/westore/new.js +1 -1
  1158. package/lib/routes/whalegogo/home.js +2 -2
  1159. package/lib/routes/whalegogo/portal.js +2 -2
  1160. package/lib/routes/whb/zhuzhan.js +2 -2
  1161. package/lib/routes/who/news-room.js +2 -2
  1162. package/lib/routes/who/news.js +43 -0
  1163. package/lib/routes/who/speeches.js +45 -0
  1164. package/lib/routes/wineyun/index.js +2 -2
  1165. package/lib/routes/worldhappiness/archive.js +49 -0
  1166. package/lib/routes/worldhappiness/blog.js +47 -0
  1167. package/lib/routes/woshipm/bookmarks.js +3 -3
  1168. package/lib/routes/woshipm/latest.js +4 -4
  1169. package/lib/routes/woshipm/popular.js +4 -4
  1170. package/lib/routes/woshipm/user_article.js +27 -39
  1171. package/lib/routes/woshipm/wen.js +3 -3
  1172. package/lib/routes/wsj/index.js +78 -79
  1173. package/lib/routes/wukong/user.js +3 -3
  1174. package/lib/routes/x-mol/news.js +8 -8
  1175. package/lib/routes/x-mol/paper.js +8 -8
  1176. package/lib/routes/x410/news.js +46 -0
  1177. package/lib/routes/x6d/index.js +11 -12
  1178. package/lib/routes/xiaoheihe/user.js +38 -27
  1179. package/lib/routes/xiaohongshu/board.js +5 -5
  1180. package/lib/routes/xiaohongshu/user.js +6 -6
  1181. package/lib/routes/xiaoyuzhou/pickup.js +23 -26
  1182. package/lib/routes/xici/index.js +1 -1
  1183. package/lib/routes/ximalaya/album.js +32 -34
  1184. package/lib/routes/xinwenlianbo/index.js +1 -1
  1185. package/lib/routes/xposed/module.js +2 -2
  1186. package/lib/routes/xuangubao/subject.js +1 -1
  1187. package/lib/routes/xueqiu/snb.js +1 -1
  1188. package/lib/routes/xueqiu/stock_comments.js +61 -0
  1189. package/lib/routes/xueqiu/stock_info.js +3 -3
  1190. package/lib/routes/xueqiu/user.js +3 -3
  1191. package/lib/routes/yahoo-author/index.js +22 -23
  1192. package/lib/routes/yande.re/post_popular_recent.js +1 -1
  1193. package/lib/routes/yicas/blog.js +13 -14
  1194. package/lib/routes/yinxiang/card.js +18 -19
  1195. package/lib/routes/yinxiang/category.js +19 -20
  1196. package/lib/routes/yinxiang/note.js +14 -15
  1197. package/lib/routes/yinxiang/personal.js +19 -20
  1198. package/lib/routes/yinxiang/tag.js +19 -20
  1199. package/lib/routes/yomiuri/news.js +84 -11
  1200. package/lib/routes/youdao/latest.js +20 -21
  1201. package/lib/routes/youdao/xueba.js +21 -22
  1202. package/lib/routes/youtube/utils.js +32 -37
  1203. package/lib/routes/youzan/goods.js +1 -1
  1204. package/lib/routes/yuanliao/index.js +10 -11
  1205. package/lib/routes/yuque/doc.js +1 -1
  1206. package/lib/routes/yuzu-emu/entry.js +52 -0
  1207. package/lib/routes/yxdown/news.js +54 -0
  1208. package/lib/routes/yxdown/recommend.js +15 -14
  1209. package/lib/routes/yxdzqb/index.js +1 -1
  1210. package/lib/routes/yystv/category.js +3 -3
  1211. package/lib/routes/yystv/docs.js +1 -1
  1212. package/lib/routes/zaker/focusread.js +3 -3
  1213. package/lib/routes/zaker/source.js +3 -3
  1214. package/lib/routes/zaobao/util.js +7 -7
  1215. package/lib/routes/zcfy/hot.js +3 -3
  1216. package/lib/routes/zcfy/index.js +2 -2
  1217. package/lib/routes/zcool/discover.js +140 -0
  1218. package/lib/routes/zcool/locations.js +6829 -0
  1219. package/lib/routes/zcool/top.js +4 -4
  1220. package/lib/routes/zcool/user.js +1 -1
  1221. package/lib/routes/zfrontier/board_postlist.js +1 -1
  1222. package/lib/routes/zfrontier/postlist.js +1 -1
  1223. package/lib/routes/zhanqi/room.js +1 -1
  1224. package/lib/routes/zhibo8/forum.js +1 -1
  1225. package/lib/routes/zhibo8/more.js +10 -11
  1226. package/lib/routes/zhibo8/post.js +2 -2
  1227. package/lib/routes/zhihu/activities.js +2 -2
  1228. package/lib/routes/zhihu/answers.js +5 -5
  1229. package/lib/routes/zhihu/collection.js +5 -5
  1230. package/lib/routes/zhihu/daily.js +2 -2
  1231. package/lib/routes/zhihu/daily_section.js +2 -2
  1232. package/lib/routes/zhihu/posts.js +3 -3
  1233. package/lib/routes/zhihu/utils.js +1 -1
  1234. package/lib/routes/zhihu/weekly.js +2 -2
  1235. package/lib/routes/zhilian/index.js +2 -2
  1236. package/lib/routes/zhishifenzi/depth.js +2 -2
  1237. package/lib/routes/zhishifenzi/innovation.js +2 -2
  1238. package/lib/routes/zhishifenzi/news.js +11 -12
  1239. package/lib/routes/zhuixinfan/list.js +5 -5
  1240. package/lib/routes/zhutix/latest.js +7 -8
  1241. package/lib/routes/zimuku/index.js +1 -1
  1242. package/lib/routes/zimuxia/index.js +19 -20
  1243. package/lib/routes/zimuxia/portfolio.js +3 -3
  1244. package/lib/routes/ziroom/room.js +1 -1
  1245. package/lib/routes/zsnews/index.js +13 -14
  1246. package/lib/routes/zyshow/index.js +42 -0
  1247. package/lib/routes/zzz/index.js +43 -36
  1248. package/lib/utils/dateParser.js +1 -1
  1249. package/lib/utils/got.js +1 -1
  1250. package/lib/utils/logger.js +1 -1
  1251. package/lib/utils/puppeteer.js +1 -1
  1252. package/lib/utils/render.js +7 -0
  1253. package/lib/utils/request-wrapper.js +9 -3
  1254. package/lib/utils/torrent.js +2 -2
  1255. package/lib/v2/2047/index.js +55 -0
  1256. package/lib/v2/2047/maintainer.js +3 -0
  1257. package/lib/v2/2047/radar.js +13 -0
  1258. package/lib/v2/2047/router.js +3 -0
  1259. package/lib/v2/8world/index.js +57 -0
  1260. package/lib/v2/8world/maintainer.js +3 -0
  1261. package/lib/v2/8world/radar.js +13 -0
  1262. package/lib/v2/8world/router.js +3 -0
  1263. package/lib/v2/aamacau/index.js +56 -0
  1264. package/lib/v2/aamacau/maintainer.js +3 -0
  1265. package/lib/v2/aamacau/radar.js +13 -0
  1266. package/lib/v2/aamacau/router.js +3 -0
  1267. package/lib/v2/biodiscover/index.js +44 -0
  1268. package/lib/v2/biodiscover/maintainer.js +3 -0
  1269. package/lib/v2/biodiscover/radar.js +13 -0
  1270. package/lib/v2/biodiscover/router.js +3 -0
  1271. package/lib/v2/ccac/maintainer.js +3 -0
  1272. package/lib/v2/ccac/news.js +47 -0
  1273. package/lib/v2/ccac/radar.js +13 -0
  1274. package/lib/v2/ccac/router.js +3 -0
  1275. package/lib/v2/ccac/utils.js +32 -0
  1276. package/lib/v2/cebbank/all.js +48 -0
  1277. package/lib/v2/cebbank/history.js +49 -0
  1278. package/lib/v2/cebbank/maintainer.js +4 -0
  1279. package/lib/v2/cebbank/radar.js +19 -0
  1280. package/lib/v2/cebbank/router.js +4 -0
  1281. package/lib/v2/cebbank/templates/allDes.art +2 -0
  1282. package/lib/v2/cebbank/templates/historyDes.art +3 -0
  1283. package/lib/v2/cebbank/utils.js +70 -0
  1284. package/lib/{routes → v2}/epicgames/index.js +0 -0
  1285. package/lib/v2/epicgames/maintainer.js +3 -0
  1286. package/lib/v2/epicgames/router.js +3 -0
  1287. package/lib/{routes → v2}/epicgames/supportedList.js +0 -0
  1288. package/lib/v2/eprice/maintainer.js +3 -0
  1289. package/lib/v2/eprice/radar.js +24 -0
  1290. package/lib/v2/eprice/router.js +3 -0
  1291. package/lib/v2/eprice/rss.js +95 -0
  1292. package/lib/v2/eprice/templates/description.art +1 -0
  1293. package/lib/v2/fisher-spb/maintainer.js +3 -0
  1294. package/lib/v2/fisher-spb/news.js +49 -0
  1295. package/lib/v2/fisher-spb/radar.js +13 -0
  1296. package/lib/v2/fisher-spb/router.js +3 -0
  1297. package/lib/v2/fisher-spb/templates/image.art +1 -0
  1298. package/lib/v2/fisher-spb/templates/video.art +1 -0
  1299. package/lib/v2/focustaiwan/index.js +72 -0
  1300. package/lib/v2/focustaiwan/maintainer.js +3 -0
  1301. package/lib/v2/focustaiwan/radar.js +13 -0
  1302. package/lib/v2/focustaiwan/router.js +3 -0
  1303. package/lib/v2/focustaiwan/templates/article.art +1 -0
  1304. package/lib/{routes → v2}/furstar/archive.js +0 -0
  1305. package/lib/{routes → v2}/furstar/artists.js +0 -0
  1306. package/lib/{routes → v2}/furstar/index.js +4 -0
  1307. package/lib/v2/furstar/maintainer.js +5 -0
  1308. package/lib/v2/furstar/radar.js +25 -0
  1309. package/lib/v2/furstar/router.js +5 -0
  1310. package/lib/v2/furstar/templates/author.art +8 -0
  1311. package/lib/v2/furstar/templates/description.art +5 -0
  1312. package/lib/{routes → v2}/furstar/utils.js +12 -11
  1313. package/lib/v2/hotchina/index.js +55 -0
  1314. package/lib/v2/hotchina/maintainer.js +5 -0
  1315. package/lib/v2/hotchina/radar.js +25 -0
  1316. package/lib/v2/hotchina/router.js +3 -0
  1317. package/lib/v2/hotukdeals/index.js +34 -0
  1318. package/lib/v2/hotukdeals/maintainer.js +3 -0
  1319. package/lib/v2/hotukdeals/radar.js +31 -0
  1320. package/lib/v2/hotukdeals/router.js +3 -0
  1321. package/lib/v2/icac/maintainer.js +3 -0
  1322. package/lib/v2/icac/news.js +46 -0
  1323. package/lib/v2/icac/radar.js +13 -0
  1324. package/lib/v2/icac/router.js +3 -0
  1325. package/lib/v2/icac/utils.js +17 -0
  1326. package/lib/v2/independent/maintainer.js +3 -0
  1327. package/lib/v2/independent/ps5-stock-uk.js +27 -0
  1328. package/lib/v2/independent/radar.js +13 -0
  1329. package/lib/v2/independent/router.js +3 -0
  1330. package/lib/v2/ithome/maintainer.js +3 -0
  1331. package/lib/v2/ithome/radar.js +13 -0
  1332. package/lib/v2/ithome/router.js +3 -0
  1333. package/lib/v2/ithome/zt.js +54 -0
  1334. package/lib/v2/jump/discount.js +120 -0
  1335. package/lib/v2/jump/maintainer.js +3 -0
  1336. package/lib/v2/jump/radar.js +13 -0
  1337. package/lib/v2/jump/router.js +3 -0
  1338. package/lib/v2/jump/templates/discount.art +111 -0
  1339. package/lib/v2/lfsyd/home.js +42 -0
  1340. package/lib/v2/lfsyd/maintainer.js +7 -0
  1341. package/lib/v2/lfsyd/old_home.js +29 -0
  1342. package/lib/v2/lfsyd/radar.js +39 -0
  1343. package/lib/v2/lfsyd/router.js +6 -0
  1344. package/lib/{routes → v2}/lfsyd/tag.js +7 -7
  1345. package/lib/v2/lfsyd/templates/card.art +1 -0
  1346. package/lib/{routes → v2}/lfsyd/user.js +7 -7
  1347. package/lib/v2/lfsyd/utils.js +93 -0
  1348. package/lib/v2/literotica/category.js +55 -0
  1349. package/lib/v2/literotica/maintainer.js +4 -0
  1350. package/lib/v2/literotica/new.js +59 -0
  1351. package/lib/v2/literotica/radar.js +19 -0
  1352. package/lib/v2/literotica/router.js +4 -0
  1353. package/lib/v2/ngocn2/index.js +56 -0
  1354. package/lib/v2/ngocn2/maintainer.js +3 -0
  1355. package/lib/v2/ngocn2/radar.js +13 -0
  1356. package/lib/v2/ngocn2/router.js +3 -0
  1357. package/lib/v2/people/liuyan.js +54 -0
  1358. package/lib/v2/people/maintainer.js +3 -0
  1359. package/lib/v2/people/radar.js +13 -0
  1360. package/lib/v2/people/router.js +3 -0
  1361. package/lib/v2/qq/live.js +36 -0
  1362. package/lib/v2/qq/maintainer.js +3 -0
  1363. package/lib/v2/qq/radar.js +13 -0
  1364. package/lib/v2/qq/router.js +3 -0
  1365. package/lib/v2/ruancan/index.js +54 -0
  1366. package/lib/v2/ruancan/maintainer.js +6 -0
  1367. package/lib/v2/ruancan/radar.js +25 -0
  1368. package/lib/v2/ruancan/router.js +3 -0
  1369. package/lib/v2/secnews/index.js +27 -0
  1370. package/lib/v2/secnews/maintainer.js +3 -0
  1371. package/lib/v2/secnews/radar.js +13 -0
  1372. package/lib/v2/secnews/router.js +3 -0
  1373. package/lib/v2/szse/maintainer.js +3 -0
  1374. package/lib/v2/szse/radar.js +13 -0
  1375. package/lib/v2/szse/router.js +3 -0
  1376. package/lib/v2/szse/rule.js +51 -0
  1377. package/lib/{routes → v2}/test/index.js +0 -0
  1378. package/lib/v2/test/maintainer.js +3 -0
  1379. package/lib/v2/test/router.js +3 -0
  1380. package/lib/v2/timednews/maintainer.js +3 -0
  1381. package/lib/v2/timednews/news.js +106 -0
  1382. package/lib/v2/timednews/radar.js +57 -0
  1383. package/lib/v2/timednews/router.js +3 -0
  1384. package/lib/v2/trow/maintainer.js +3 -0
  1385. package/lib/v2/trow/portal.js +36 -0
  1386. package/lib/v2/trow/radar.js +13 -0
  1387. package/lib/v2/trow/router.js +3 -0
  1388. package/lib/v2/wangqiutiyu/anchor.js +42 -0
  1389. package/lib/v2/wangqiutiyu/maintainer.js +3 -0
  1390. package/lib/v2/wangqiutiyu/radar.js +13 -0
  1391. package/lib/v2/wangqiutiyu/router.js +3 -0
  1392. package/lib/v2router.js +17 -0
  1393. package/lib/views/error.art +9 -0
  1394. package/package.json +14 -4
  1395. package/lib/middleware/cache.js +0 -180
  1396. package/lib/routes/epicgames/router.js +0 -9
  1397. package/lib/routes/javdb/home.js +0 -32
  1398. package/lib/routes/kaopunews/all.js +0 -30
  1399. package/lib/routes/lfsyd/index.js +0 -50
  1400. package/lib/routes/lfsyd/utils.js +0 -75
  1401. package/lib/routes/matters/topics.js +0 -52
  1402. package/lib/routes/toutiao/today.js +0 -32
  1403. package/lib/routes/toutiao/user.js +0 -38
  1404. package/lib/routes/zcool/discovery.js +0 -48
  1405. package/lib/routes/zcool/recommend.js +0 -64
package/README.md CHANGED
@@ -32,7 +32,7 @@ RSSHub 是一个开源、简单易用、易于扩展的 RSS 生成器,可以
32
32
  ### Special Sponsors
33
33
 
34
34
  <div>
35
- <a href="https://rss3.io/" target="_blank"><img height="60px" src="https://i.imgur.com/v7TF0jp.jpg"></a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="https://sa.net/" target="_blank"><img height="60px" src="https://i.imgur.com/3rM8nWI.png"></a>
35
+ <a href="https://rss3.io/" target="_blank"><img height="60px" src="https://i.imgur.com/v7TF0jp.jpg"></a>
36
36
  </div>
37
37
 
38
38
  ### Sponsors
@@ -85,6 +85,7 @@ You can support RSSHub via donations.
85
85
 
86
86
  Recurring donors will be rewarded via express issue response, or even have your name displayed on our GitHub page and website.
87
87
 
88
+ - Become a Sponser on [GitHub](https://github.com/sponsors/DIYgod)
88
89
  - Become a Sponser on [Patreon](https://www.patreon.com/DIYgod)
89
90
  - Become a Sponser on [爱发电](https://afdian.net/@diygod)
90
91
  - Contact us directly: i@diygod.me
package/lib/api_router.js CHANGED
@@ -1,15 +1,13 @@
1
1
  const Router = require('@koa/router');
2
2
  const router = new Router();
3
- const routes = require('./router');
3
+ const maintainer = require('./maintainer');
4
4
 
5
5
  router.get('/routes/:name?', (ctx) => {
6
- const allRoutes = Array.from(routes.stack);
7
- allRoutes.shift();
8
6
  const result = {};
9
7
  let counter = 0;
10
8
 
11
- allRoutes.forEach((i) => {
12
- const path = i.path;
9
+ Object.keys(maintainer).forEach((i) => {
10
+ const path = i;
13
11
  const top = path.split('/')[1];
14
12
 
15
13
  if (!ctx.params.name || top === ctx.params.name) {
package/lib/app.js CHANGED
@@ -16,8 +16,10 @@ const favicon = require('koa-favicon');
16
16
  const debug = require('./middleware/debug');
17
17
  const accessControl = require('./middleware/access-control');
18
18
  const antiHotlink = require('./middleware/anti-hotlink');
19
+ const loadOnDemand = require('./middleware/load-on-demand');
19
20
 
20
21
  const router = require('./router');
22
+ const core_router = require('./core_router');
21
23
  const protected_router = require('./protected_router');
22
24
  const mount = require('koa-mount');
23
25
 
@@ -70,16 +72,21 @@ app.use(antiHotlink);
70
72
  // 3 filter content
71
73
  app.use(parameter);
72
74
 
75
+ // No Cache routes
76
+ app.use(mount('/', core_router.routes())).use(core_router.allowedMethods());
77
+ // API router
78
+ app.use(mount('/api', api_router.routes())).use(api_router.allowedMethods());
79
+
73
80
  // 2 cache
74
81
  app.use(cache(app));
75
82
 
83
+ // 1 load on demand
84
+ app.use(loadOnDemand(app));
85
+
76
86
  // router
77
87
  app.use(mount('/', router.routes())).use(router.allowedMethods());
78
88
 
79
89
  // routes the require authentication
80
90
  app.use(mount('/protected', protected_router.routes())).use(protected_router.allowedMethods());
81
91
 
82
- // API router
83
- app.use(mount('/api', api_router.routes())).use(api_router.allowedMethods());
84
-
85
92
  module.exports = app;
package/lib/config.js CHANGED
@@ -33,6 +33,7 @@ const calculateValue = () => {
33
33
  },
34
34
  cache: {
35
35
  type: typeof envs.CACHE_TYPE === 'undefined' ? 'memory' : envs.CACHE_TYPE, // 缓存类型,支持 'memory' 和 'redis',设为空可以禁止缓存
36
+ requestTimeout: parseInt(envs.CACHE_REQUEST_TIMEOUT) || 60,
36
37
  routeExpire: parseInt(envs.CACHE_EXPIRE) || 5 * 60, // 路由缓存时间,单位为秒
37
38
  contentExpire: parseInt(envs.CACHE_CONTENT_EXPIRE) || 1 * 60 * 60, // 不变内容缓存时间,单位为秒
38
39
  },
@@ -54,6 +55,7 @@ const calculateValue = () => {
54
55
  bypassCdn: envs.PIXIV_BYPASS_CDN !== '0' && envs.PIXIV_BYPASS_CDN !== 'false',
55
56
  bypassCdnHostname: envs.PIXIV_BYPASS_HOSTNAME || 'public-api.secure.pixiv.net',
56
57
  bypassCdnDoh: envs.PIXIV_BYPASS_DOH || 'https://1.1.1.1/dns-query',
58
+ imgProxy: envs.PIXIV_IMG_PROXY || 'https://i.pixiv.cat',
57
59
  },
58
60
  fanbox: {
59
61
  session: envs.FANBOX_SESSION_ID,
@@ -65,6 +67,8 @@ const calculateValue = () => {
65
67
  consumer_key: envs.TWITTER_CONSUMER_KEY,
66
68
  consumer_secret: envs.TWITTER_CONSUMER_SECRET,
67
69
  tokens: twitter_tokens,
70
+ authorization: envs.TWITTER_WEBAPI_AUTHORIZAION || 'Bearer AAAAAAAAAAAAAAAAAAAAANRILgAAAAAAnNwIzUejRCOuH5E6I8xnZz4puTs%3D1Zv7ttfk8LF81IUq16cHjhLTvJu4FA33AGWWjCpTnA',
71
+ // 此处硬编码参考自https://github.com/mikf/gallery-dl/blob/master/gallery_dl/extractor/twitter.py#L550
68
72
  },
69
73
  youtube: {
70
74
  key: envs.YOUTUBE_KEY,
@@ -193,6 +197,11 @@ const calculateValue = () => {
193
197
  wordpress: {
194
198
  cdnUrl: envs.WORDPRESS_CDN,
195
199
  },
200
+ ehentai: {
201
+ ipb_member_id: envs.EH_IPB_MEMBER_ID,
202
+ ipb_pass_hash: envs.EH_IPB_PASS_HASH,
203
+ sk: envs.EH_SK,
204
+ },
196
205
  };
197
206
  };
198
207
  calculateValue();
@@ -0,0 +1,17 @@
1
+ const Router = require('@koa/router');
2
+ const config = require('@/config').value;
3
+ const router = new Router();
4
+
5
+ // Load Core Route
6
+ router.get('/', require('./routes/index'));
7
+
8
+ router.get('/robots.txt', (ctx) => {
9
+ if (config.disallowRobot) {
10
+ ctx.set('Content-Type', 'text/plain');
11
+ ctx.body = 'User-agent: *\nDisallow: /';
12
+ } else {
13
+ ctx.throw(404, 'Not Found');
14
+ }
15
+ });
16
+
17
+ module.exports = router;
@@ -0,0 +1,3 @@
1
+ class RequestInProgressError extends Error {}
2
+
3
+ module.exports = RequestInProgressError;
@@ -0,0 +1,3 @@
1
+ module.exports = {
2
+ RequestInProgressError: require('./RequestInProgress'),
3
+ };
@@ -0,0 +1,27 @@
1
+ const dirname = __dirname + '/v2';
2
+
3
+ // 遍历整个 routes 文件夹,收集模块 maintainer.js
4
+ const maintainerPath = require('require-all')({
5
+ dirname,
6
+ filter: /maintainer\.js$/,
7
+ });
8
+
9
+ const maintainers = {};
10
+
11
+ // 将收集到的自定义模块进行合并
12
+ for (const dir in maintainerPath) {
13
+ const routes = maintainerPath[dir]['maintainer.js']; // Do not merge other file
14
+ for (const key in routes) {
15
+ maintainers['/' + dir + key] = routes[key];
16
+ }
17
+ }
18
+
19
+ // 兼容旧版路由
20
+ const router = require('./router');
21
+ router.stack.forEach((e) => {
22
+ if (!maintainers[e.path]) {
23
+ maintainers[e.path] = [];
24
+ }
25
+ });
26
+
27
+ module.exports = maintainers;
@@ -29,24 +29,24 @@ module.exports = async (ctx, next) => {
29
29
  await next();
30
30
  } else {
31
31
  if (!isControlled || allowLocalhost) {
32
- return await grant();
32
+ return grant();
33
33
  }
34
34
 
35
35
  if (config.accessKey) {
36
36
  if (config.accessKey === accessKey || accessCode === md5(requestPath + config.accessKey)) {
37
- return await grant();
37
+ return grant();
38
38
  }
39
39
  }
40
40
 
41
41
  if (config.whitelist) {
42
42
  if (config.whitelist.find((white) => ip.includes(white) || requestPath.includes(white) || requestUA.includes(white))) {
43
- return await grant();
43
+ return grant();
44
44
  }
45
45
  }
46
46
 
47
47
  if (config.blacklist) {
48
48
  if (!config.blacklist.find((black) => ip.includes(black) || requestPath.includes(black) || requestUA.includes(black))) {
49
- return await grant();
49
+ return grant();
50
50
  }
51
51
  }
52
52
 
@@ -0,0 +1,129 @@
1
+ const md5 = require('@/utils/md5');
2
+ const config = require('@/config').value;
3
+ const logger = require('@/utils/logger');
4
+ const { RequestInProgressError } = require('@/errors');
5
+
6
+ const globalCache = {
7
+ get: () => null,
8
+ set: () => null,
9
+ };
10
+
11
+ let cacheModule = {
12
+ get: () => null,
13
+ set: () => null,
14
+ status: { available: false },
15
+ clients: {},
16
+ };
17
+
18
+ if (config.cache.type === 'redis') {
19
+ cacheModule = require('./redis');
20
+ const { redisClient } = cacheModule.clients;
21
+ globalCache.get = async (key) => {
22
+ if (key && cacheModule.status.available) {
23
+ const value = await redisClient.get(key);
24
+ return value;
25
+ }
26
+ };
27
+ globalCache.set = cacheModule.set;
28
+ } else if (config.cache.type === 'memory') {
29
+ cacheModule = require('./memory');
30
+ const { pageCache } = cacheModule.clients;
31
+ globalCache.get = (key) => {
32
+ if (key && cacheModule.status.available) {
33
+ return pageCache.get(key);
34
+ }
35
+ };
36
+ globalCache.set = (key, value, maxAge) => {
37
+ if (!value || value === 'undefined') {
38
+ value = '';
39
+ }
40
+ if (typeof value === 'object') {
41
+ value = JSON.stringify(value);
42
+ }
43
+ if (key) {
44
+ return pageCache.set(key, value, maxAge * 1000);
45
+ }
46
+ };
47
+ } else {
48
+ logger.error('Cache not available, concurrent requests are not limited. This could lead to bad behavior.');
49
+ }
50
+
51
+ // only give cache string, as the `!` condition tricky
52
+ // md5 is used to shrink key size
53
+ // plz, write these tips in comments!
54
+ module.exports = function (app) {
55
+ const { get, set, status } = cacheModule;
56
+ app.context.cache = {
57
+ ...cacheModule,
58
+ tryGet: async (key, getValueFunc, maxAge = config.cache.contentExpire) => {
59
+ let v = await get(key);
60
+ if (!v) {
61
+ v = await getValueFunc();
62
+ set(key, v, maxAge);
63
+ } else {
64
+ let parsed;
65
+ try {
66
+ parsed = JSON.parse(v);
67
+ } catch (e) {
68
+ parsed = null;
69
+ }
70
+ if (parsed) {
71
+ v = parsed;
72
+ }
73
+ }
74
+
75
+ return v;
76
+ },
77
+ globalCache,
78
+ };
79
+
80
+ return async (ctx, next) => {
81
+ const key = 'koa-redis-cache:' + md5(ctx.request.path);
82
+ const controlKey = 'path-requested:' + md5(ctx.request.path);
83
+
84
+ if (!status.available) {
85
+ return next();
86
+ }
87
+
88
+ const isRequesting = await globalCache.get(controlKey);
89
+
90
+ if (isRequesting === '1') {
91
+ throw new RequestInProgressError('This path is currently fetching, please come back later!');
92
+ }
93
+
94
+ try {
95
+ const value = await globalCache.get(key);
96
+
97
+ if (value) {
98
+ ctx.response.status = 200;
99
+ if (config.cache.type === 'redis') {
100
+ ctx.response.set({
101
+ 'X-Koa-Redis-Cache': 'true',
102
+ });
103
+ } else if (config.cache.type === 'memory') {
104
+ ctx.response.set({
105
+ 'X-Koa-Memory-Cache': 'true',
106
+ });
107
+ }
108
+ ctx.state.data = JSON.parse(value);
109
+ return;
110
+ }
111
+ } catch (e) {
112
+ //
113
+ }
114
+
115
+ // Doesn't hit the cache? We need to let others know!
116
+ await globalCache.set(controlKey, '1', config.cache.requestTimeout);
117
+ await next();
118
+
119
+ if (ctx.response.get('Cache-Control') !== 'no-cache' && ctx.state && ctx.state.data) {
120
+ ctx.state.data.lastBuildDate = new Date().toUTCString();
121
+ const body = JSON.stringify(ctx.state.data);
122
+ await globalCache.set(key, body, config.cache.routeExpire);
123
+ }
124
+
125
+ // We need to let it go, even no cache set.
126
+ // Wait to set cache so the next request could be handled correctly
127
+ await globalCache.set(controlKey, '0', config.cache.requestTimeout);
128
+ };
129
+ };
@@ -0,0 +1,42 @@
1
+ const Lru = require('lru-cache');
2
+ const config = require('@/config').value;
3
+
4
+ const status = { available: false };
5
+
6
+ const pageCache = new Lru({
7
+ maxAge: config.cache.routeExpire * 1000,
8
+ max: Infinity,
9
+ });
10
+
11
+ const routeCache = new Lru({
12
+ maxAge: config.cache.routeExpire * 1000,
13
+ max: Infinity,
14
+ updateAgeOnGet: true,
15
+ });
16
+
17
+ status.available = true;
18
+
19
+ module.exports = {
20
+ get: (key, refresh = true) => {
21
+ if (key && status.available) {
22
+ let value = (refresh ? routeCache : pageCache).get(key);
23
+ if (value) {
24
+ value = value + '';
25
+ }
26
+ return value;
27
+ }
28
+ },
29
+ set: (key, value, maxAge = config.cache.contentExpire, refresh = true) => {
30
+ if (!value || value === 'undefined') {
31
+ value = '';
32
+ }
33
+ if (typeof value === 'object') {
34
+ value = JSON.stringify(value);
35
+ }
36
+ if (key && status.available) {
37
+ return (refresh ? routeCache : pageCache).set(key, value, maxAge * 1000);
38
+ }
39
+ },
40
+ clients: { pageCache, routeCache },
41
+ status,
42
+ };
@@ -0,0 +1,48 @@
1
+ const config = require('@/config').value;
2
+ const Redis = require('ioredis');
3
+ const logger = require('@/utils/logger');
4
+
5
+ const redisClient = new Redis(config.redis.url);
6
+
7
+ const status = { available: false };
8
+
9
+ redisClient.on('error', (error) => {
10
+ status.available = false;
11
+ logger.error('Redis error: ', error);
12
+ });
13
+ redisClient.on('end', () => {
14
+ status.available = false;
15
+ });
16
+ redisClient.on('connect', () => {
17
+ status.available = true;
18
+ logger.info('Redis connected.');
19
+ });
20
+
21
+ module.exports = {
22
+ get: async (key, refresh = true) => {
23
+ if (key && status.available) {
24
+ let value = await redisClient.get(key);
25
+ if (value && refresh) {
26
+ redisClient.expire(key, config.cache.contentExpire);
27
+ value = value + '';
28
+ }
29
+ return value;
30
+ }
31
+ },
32
+ set: (key, value, maxAge = config.cache.contentExpire) => {
33
+ if (!status.available) {
34
+ return;
35
+ }
36
+ if (!value || value === 'undefined') {
37
+ value = '';
38
+ }
39
+ if (typeof value === 'object') {
40
+ value = JSON.stringify(value);
41
+ }
42
+ if (key) {
43
+ return redisClient.set(key, value, 'EX', maxAge); // setMode: https://redis.io/commands/set
44
+ }
45
+ },
46
+ clients: { redisClient },
47
+ status,
48
+ };
@@ -15,7 +15,7 @@ module.exports = async (ctx, next) => {
15
15
  logger.info(`${ctx.url}, user IP: ${ctx.ips[0] || ctx.ip}`);
16
16
  ctx.set(headers);
17
17
  ctx.set({
18
- 'Access-Control-Allow-Origin': `${config.allowOrigin || ctx.host}`,
18
+ 'Access-Control-Allow-Origin': config.allowOrigin || ctx.host,
19
19
  });
20
20
 
21
21
  await next();
@@ -0,0 +1,36 @@
1
+ const mount = require('koa-mount');
2
+ const Router = require('@koa/router');
3
+ const routes = require('../v2router');
4
+ const loadedRoutes = new Set();
5
+
6
+ module.exports = function (app) {
7
+ return async function (ctx, next) {
8
+ const p = ctx.request.path.split('/').filter(Boolean);
9
+ let modName = null;
10
+ let mounted = false;
11
+
12
+ if (p.length > 0) {
13
+ modName = p[0];
14
+ if (!loadedRoutes.has(modName)) {
15
+ const mod = routes[modName];
16
+ // Mount module
17
+ if (mod) {
18
+ mounted = true;
19
+ loadedRoutes.add(modName);
20
+ const router = new Router();
21
+ mod(router);
22
+ app.use(mount(`/${modName}`, router.routes())).use(router.allowedMethods());
23
+ }
24
+ } else {
25
+ mounted = true;
26
+ }
27
+ }
28
+
29
+ await next();
30
+
31
+ // We should only add it when koa router matched
32
+ if (mounted && ctx._matchedRoute) {
33
+ ctx._matchedRoute = `/${modName}${ctx._matchedRoute}`;
34
+ }
35
+ };
36
+ };
@@ -1,10 +1,14 @@
1
1
  const logger = require('@/utils/logger');
2
2
  const config = require('@/config').value;
3
- const Sentry = require('@sentry/node');
4
3
  const art = require('art-template');
5
4
  const path = require('path');
6
5
 
6
+ const { RequestInProgressError } = require('@/errors');
7
+
8
+ let Sentry;
9
+
7
10
  if (config.sentry.dsn) {
11
+ Sentry = Sentry || require('@sentry/node');
8
12
  Sentry.init({
9
13
  dsn: config.sentry.dsn,
10
14
  });
@@ -31,77 +35,10 @@ module.exports = async (ctx, next) => {
31
35
  let message = err;
32
36
  if (err.name && (err.name === 'HTTPError' || err.name === 'RequestError')) {
33
37
  message = `${err.message}: target website might be blocking our access, you can <a href="https://docs.rsshub.app/install/">host your own RSSHub instance</a> for a better usability.`;
34
-
35
- const templateZh = `<!--
36
- 请确保已阅读 [文档](https://docs.rsshub.app) 内相关部分,并按照模版提供信息,否则 issue 将被立即关闭。
37
-
38
- 由于部分源网站反爬缘故,演示地址一些 rss 会返回 status code 403,该问题不是 RSSHub 所致,请勿提交 issue。
39
- -->
40
-
41
- - 完整路由地址,包含所有必选与可选参数
42
- \`${ctx.path}\`
43
- - 预期是什么
44
-
45
- - 实际发生了什么
46
-
47
- - 部署相关信息
48
-
49
- <!--
50
- 如果是演示地址(rsshub.app)有此问题请删除此部分。
51
-
52
- 请确保您部署的是[主线 master 分支](https://github.com/DIYgod/RSSHub/tree/master)最新版 RSSHub。
53
- -->
54
-
55
- | Env | Value |
56
- | ------------------ | ------------- |
57
- | OS | |
58
- | Node version |${process.version} |
59
- | if Docker, version | |
60
-
61
- - 额外信息(日志、报错等)
62
- \`\`\`
63
- ${err.message}
64
- \`\`\` `;
65
-
66
- const templateEn = `<!--
67
- Please ensure you have read [documentation](https://docs.rsshub.app/en), and provide all the information required by this template, otherwise the issue will be closed immediately.
68
-
69
- Due to the anti-crawling policy implemented by certain websites, some RSS routes provided by the demo will return status code 403. This is not an issue caused by RSSHub and please do not report it.
70
- -->
71
-
72
- - The involved route, with all required and optional parameters
73
- \`${ctx.path}\`
74
- - What is expected
75
-
76
- - What is actually happening
77
-
78
- - Self-deployment information
79
-
80
- <!--
81
- Delete this section if you are using [RSSHub demo](https://rsshub.app).
82
-
83
- Please ensure you have deployed the [master branch](https://github.com/DIYgod/RSSHub/tree/master) of RSSHub.
84
- -->
85
-
86
- | Env | Value |
87
- | ------------------ | ------------- |
88
- | OS | |
89
- | Node version |${process.version} |
90
- | if Docker, version | |
91
-
92
- - Additional info (logs errors etc)
93
- \`\`\`
94
- ${err.message}
95
- \`\`\` `;
96
-
97
- message += `<br><br>如果您认为 RSSHub 导致了该错误,<a href="https://github.com/DIYgod/RSSHub/issues/new?template=bug_report_zh.md&title=[BUG]&body=${encodeURI(templateZh)}" target="_blank">请在 GitHub 报告</a>。`;
98
-
99
- message += `<br><br>If you believe this is an error caused by RSSHub, please <a href="https://github.com/DIYgod/RSSHub/issues/new?template=bug_report_en.md&title=[BUG]&body=${encodeURI(
100
- templateEn
101
- )}" target="_blank">report me on GitHub</a>.`;
102
38
  } else if (err instanceof Error) {
103
39
  message = process.env.NODE_ENV === 'production' ? err.message : err.stack;
104
40
  }
41
+
105
42
  logger.error(`Error in ${ctx.request.path}: ${message}`);
106
43
 
107
44
  if (config.isPackage) {
@@ -114,7 +51,11 @@ Please ensure you have deployed the [master branch](https://github.com/DIYgod/RS
114
51
  ctx.set({
115
52
  'Content-Type': 'text/html; charset=UTF-8',
116
53
  });
117
- if (ctx.status === 403) {
54
+
55
+ if (err instanceof RequestInProgressError) {
56
+ ctx.status = 503;
57
+ message = err.message;
58
+ } else if (ctx.status === 403) {
118
59
  message = err.message;
119
60
  } else {
120
61
  ctx.status = 404;
@@ -125,6 +66,8 @@ Please ensure you have deployed the [master branch](https://github.com/DIYgod/RS
125
66
  ctx.body = art(path.resolve(__dirname, '../views/error.art'), {
126
67
  requestPath,
127
68
  message,
69
+ errorPath: ctx.path,
70
+ nodeVersion: process.version,
128
71
  });
129
72
  }
130
73
 
@@ -1,10 +1,11 @@
1
1
  const entities = require('entities');
2
- const mercury_parser = require('@postlight/mercury-parser');
3
2
  const cheerio = require('cheerio');
4
3
  const { simplecc } = require('simplecc-wasm');
5
4
  const got = require('@/utils/got');
6
5
  const config = require('@/config').value;
7
6
 
7
+ let mercury_parser;
8
+
8
9
  module.exports = async (ctx, next) => {
9
10
  await next();
10
11
 
@@ -30,7 +31,7 @@ module.exports = async (ctx, next) => {
30
31
  // sort items
31
32
  ctx.state.data.item = ctx.state.data.item.sort((a, b) => +new Date(b.pubDate || 0) - +new Date(a.pubDate || 0));
32
33
 
33
- const handleItem = async (item) => {
34
+ const handleItem = (item) => {
34
35
  item.title && (item.title = entities.decodeXML(item.title + ''));
35
36
 
36
37
  // handle pubDate
@@ -204,6 +205,8 @@ module.exports = async (ctx, next) => {
204
205
  const parsed_result = await ctx.cache.tryGet(`mercury-cache-${link}`, async () => {
205
206
  // if parser failed, return default description and not report error
206
207
  try {
208
+ mercury_parser = mercury_parser || require('@postlight/mercury-parser');
209
+
207
210
  const res = await got(link);
208
211
  const $ = cheerio.load(res.data);
209
212
  const result = await mercury_parser.parse(link, {
@@ -236,6 +239,29 @@ module.exports = async (ctx, next) => {
236
239
  item.description = simplecc(item.description, ctx.query.opencc);
237
240
  });
238
241
  }
242
+
243
+ // brief
244
+ if (ctx.query.brief) {
245
+ const num = /[1-9]\d{2,}/;
246
+ if (num.test(ctx.query.brief)) {
247
+ ctx.query.brief = parseInt(ctx.query.brief);
248
+ ctx.state.data.item.forEach((item) => {
249
+ let text;
250
+ if (item.description) {
251
+ text = item.description.replace(/<\/?[^>]+(>|$)/g, '');
252
+ }
253
+ if (text && text.length) {
254
+ if (text.length > ctx.query.brief) {
255
+ item.description = `<p>${text.substring(0, ctx.query.brief)}…</p>`;
256
+ } else {
257
+ item.description = `<p>${text}</p>`;
258
+ }
259
+ }
260
+ });
261
+ } else {
262
+ throw Error(`Invalid parameter <code>brief=${ctx.query.brief}</code>. Please check the doc https://docs.rsshub.app/parameter.html#shu-chu-jian-xun`);
263
+ }
264
+ }
239
265
  }
240
266
  }
241
267
  };
@@ -1,14 +1,9 @@
1
1
  const art = require('art-template');
2
2
  const path = require('path');
3
3
  const config = require('@/config').value;
4
- const typeRegex = /\.(atom|rss)$/;
5
- const unsupportedRegex = /\.json$/;
4
+ const typeRegex = /\.(atom|rss|debug\.json)$/;
6
5
 
7
6
  module.exports = async (ctx, next) => {
8
- if (ctx.request.path.match(unsupportedRegex)) {
9
- throw Error('<b>JSON output had been removed, see: <a href="https://github.com/DIYgod/RSSHub/issues/1114">https://github.com/DIYgod/RSSHub/issues/1114</a></b>');
10
- }
11
-
12
7
  if (ctx.headers['user-agent'] && ctx.headers['user-agent'].includes('Reeder')) {
13
8
  ctx.request.path = ctx.request.path.replace(/.com$/, '');
14
9
  }
@@ -18,6 +13,17 @@ module.exports = async (ctx, next) => {
18
13
 
19
14
  await next();
20
15
 
16
+ if (ctx.state.type[1] === 'debug.json' && config.debugInfo) {
17
+ ctx.set({
18
+ 'Content-Type': 'application/json; charset=UTF-8',
19
+ });
20
+ if (ctx.state.json) {
21
+ ctx.body = JSON.stringify(ctx.state.json, null, 4);
22
+ } else {
23
+ ctx.body = JSON.stringify({ message: 'plugin does not set json' });
24
+ }
25
+ }
26
+
21
27
  if (!ctx.body) {
22
28
  let template;
23
29