rsshub 1.0.0-master.fe69819 → 1.0.0-master.fe775f5

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 (502) hide show
  1. package/lib/config.js +144 -121
  2. package/lib/middleware/cache/index.js +3 -3
  3. package/lib/middleware/cache/memory.js +5 -5
  4. package/lib/middleware/cache/redis.js +17 -2
  5. package/lib/middleware/template.js +4 -4
  6. package/lib/radar-rules.js +0 -162
  7. package/lib/router.js +90 -164
  8. package/lib/routes/afdian/dynamic.js +2 -1
  9. package/lib/routes/dsndsht23/index.js +2 -1
  10. package/lib/routes/ehentai/ehapi.js +16 -6
  11. package/lib/routes/ehentai/favorites.js +14 -7
  12. package/lib/routes/ehentai/search.js +14 -5
  13. package/lib/routes/ehentai/tag.js +14 -5
  14. package/lib/routes/fdroid/apprelease.js +1 -1
  15. package/lib/routes/gov/fmprc/utils.js +6 -10
  16. package/lib/routes/hentaimama/videos.js +1 -1
  17. package/lib/routes/lizhi/user.js +1 -1
  18. package/lib/routes/manxiaosi/book.js +1 -1
  19. package/lib/routes/missevan/drama.js +1 -1
  20. package/lib/routes/missevan/latest.js +1 -1
  21. package/lib/routes/mofish/index.js +21 -9
  22. package/lib/routes/mofish/templates/description.art +4 -0
  23. package/lib/routes/ncm/djradio.js +3 -4
  24. package/lib/routes/nhentai/util.js +2 -2
  25. package/lib/routes/novel/biquge.js +24 -23
  26. package/lib/routes/novel/biqugeinfo.js +26 -26
  27. package/lib/routes/or/index.js +1 -1
  28. package/lib/routes/prestige-av/series.js +3 -6
  29. package/lib/routes/radio/radio.js +1 -1
  30. package/lib/routes/sina/rollnews.js +8 -3
  31. package/lib/routes/tencent/wechat/tgchannel.js +91 -30
  32. package/lib/routes/touhougarakuta/index.js +4 -2
  33. package/lib/routes/touhougarakuta/json2html.js +22 -10
  34. package/lib/routes/universities/hitwh/today.js +6 -6
  35. package/lib/routes/weibo/timeline.js +18 -1
  36. package/lib/routes/weibo/user.js +19 -3
  37. package/lib/routes/weibo/utils.js +113 -5
  38. package/lib/routes/ximalaya/album.js +2 -2
  39. package/lib/routes/yyets/todayfilelist.js +0 -1
  40. package/lib/routes/zhihu/activities.js +1 -0
  41. package/lib/routes/zhihu/daily.js +1 -0
  42. package/lib/routes/zhihu/daily_section.js +1 -0
  43. package/lib/routes/zhihu/hot.js +3 -2
  44. package/lib/utils/puppeteer.js +1 -1
  45. package/lib/v2/35photo/actual.js +7 -0
  46. package/lib/v2/35photo/author.js +9 -0
  47. package/lib/v2/35photo/genre.js +9 -0
  48. package/lib/v2/35photo/interesting.js +7 -0
  49. package/lib/v2/35photo/maintainer.js +8 -0
  50. package/lib/v2/35photo/map.js +7 -0
  51. package/lib/v2/35photo/new.js +7 -0
  52. package/lib/v2/35photo/radar.js +43 -0
  53. package/lib/v2/35photo/router.js +8 -0
  54. package/lib/v2/35photo/utils.js +42 -0
  55. package/lib/v2/36kr/maintainer.js +7 -0
  56. package/lib/{routes → v2}/36kr/motif.js +2 -1
  57. package/lib/v2/36kr/news.js +56 -0
  58. package/lib/{routes → v2}/36kr/newsflashes.js +2 -1
  59. package/lib/v2/36kr/radar.js +37 -0
  60. package/lib/v2/36kr/router.js +7 -0
  61. package/lib/{routes → v2}/36kr/search/article.js +3 -2
  62. package/lib/{routes → v2}/36kr/user.js +2 -1
  63. package/lib/v2/52hrtt/index.js +57 -0
  64. package/lib/v2/52hrtt/maintainer.js +4 -0
  65. package/lib/v2/52hrtt/radar.js +19 -0
  66. package/lib/v2/52hrtt/router.js +4 -0
  67. package/lib/v2/52hrtt/symposium.js +57 -0
  68. package/lib/v2/8kcos/article.js +24 -0
  69. package/lib/v2/8kcos/cat.js +22 -0
  70. package/lib/{routes → v2}/8kcos/const.js +0 -0
  71. package/lib/v2/8kcos/latest.js +23 -0
  72. package/lib/v2/8kcos/maintainer.js +5 -0
  73. package/lib/v2/8kcos/radar.js +25 -0
  74. package/lib/v2/8kcos/router.js +5 -0
  75. package/lib/v2/8kcos/tag.js +23 -0
  76. package/lib/{routes → v2}/95mm/category.js +5 -3
  77. package/lib/v2/95mm/maintainer.js +5 -0
  78. package/lib/v2/95mm/radar.js +25 -0
  79. package/lib/v2/95mm/router.js +5 -0
  80. package/lib/v2/95mm/tab.js +9 -0
  81. package/lib/v2/95mm/tag.js +9 -0
  82. package/lib/v2/95mm/templates/description.art +3 -0
  83. package/lib/v2/95mm/utils.js +59 -0
  84. package/lib/v2/abskoop/index.js +52 -0
  85. package/lib/v2/abskoop/maintainer.js +3 -0
  86. package/lib/v2/abskoop/radar.js +13 -0
  87. package/lib/v2/abskoop/router.js +3 -0
  88. package/lib/v2/abskoop/templates/description.art +3 -0
  89. package/lib/v2/ajmide/index.js +1 -1
  90. package/lib/v2/app-center/templates/description.art +1 -1
  91. package/lib/v2/apple/exchange_repair.js +40 -0
  92. package/lib/v2/apple/maintainer.js +3 -0
  93. package/lib/v2/apple/radar.js +13 -0
  94. package/lib/v2/apple/router.js +3 -0
  95. package/lib/{routes/apple → v2}/appstore/gofans.js +3 -3
  96. package/lib/{routes/apple → v2}/appstore/in-app-purchase.js +0 -0
  97. package/lib/v2/appstore/maintainer.js +7 -0
  98. package/lib/{routes/apple → v2}/appstore/price.js +0 -0
  99. package/lib/v2/appstore/radar.js +41 -0
  100. package/lib/v2/appstore/router.js +7 -0
  101. package/lib/{routes/apple → v2}/appstore/update.js +0 -0
  102. package/lib/{routes/apple → v2}/appstore/xianmian.js +3 -2
  103. package/lib/v2/bbcnewslabs/maintainer.js +3 -0
  104. package/lib/v2/bbcnewslabs/news.js +32 -0
  105. package/lib/v2/bbcnewslabs/radar.js +13 -0
  106. package/lib/v2/bbcnewslabs/router.js +3 -0
  107. package/lib/v2/bigquant/collections.js +35 -0
  108. package/lib/v2/bigquant/maintainer.js +3 -0
  109. package/lib/v2/bigquant/radar.js +13 -0
  110. package/lib/v2/bigquant/router.js +3 -0
  111. package/lib/{routes → v2}/bilibili/app.js +0 -0
  112. package/lib/{routes → v2}/bilibili/article.js +1 -0
  113. package/lib/{routes → v2}/bilibili/audio.js +0 -0
  114. package/lib/{routes → v2}/bilibili/bangumi.js +0 -0
  115. package/lib/{routes → v2}/bilibili/blackboard.js +0 -0
  116. package/lib/{routes → v2}/bilibili/cache.js +17 -0
  117. package/lib/{routes → v2}/bilibili/coin.js +0 -0
  118. package/lib/{routes → v2}/bilibili/danmaku.js +0 -0
  119. package/lib/{routes → v2}/bilibili/dynamic.js +1 -0
  120. package/lib/{routes → v2}/bilibili/fav.js +0 -0
  121. package/lib/{routes → v2}/bilibili/followers.js +0 -0
  122. package/lib/{routes → v2}/bilibili/followings.js +0 -0
  123. package/lib/{routes → v2}/bilibili/followings_article.js +0 -0
  124. package/lib/{routes → v2}/bilibili/followings_dynamic.js +0 -0
  125. package/lib/{routes → v2}/bilibili/followings_video.js +0 -0
  126. package/lib/{routes → v2}/bilibili/linkNews.js +0 -0
  127. package/lib/{routes → v2}/bilibili/liveArea.js +0 -0
  128. package/lib/{routes → v2}/bilibili/liveRoom.js +0 -0
  129. package/lib/{routes → v2}/bilibili/liveSearch.js +0 -0
  130. package/lib/{routes → v2}/bilibili/mallIP.js +0 -0
  131. package/lib/{routes → v2}/bilibili/mallNew.js +0 -0
  132. package/lib/{routes → v2}/bilibili/manga_followings.js +0 -0
  133. package/lib/{routes → v2}/bilibili/manga_update.js +0 -0
  134. package/lib/v2/bilibili/online.js +25 -0
  135. package/lib/{routes → v2}/bilibili/page.js +0 -0
  136. package/lib/{routes → v2}/bilibili/partion-ranking.js +0 -0
  137. package/lib/{routes → v2}/bilibili/partion.js +0 -0
  138. package/lib/v2/bilibili/radar.js +6 -0
  139. package/lib/{routes → v2}/bilibili/ranking.js +0 -0
  140. package/lib/{routes → v2}/bilibili/readlist.js +0 -0
  141. package/lib/{routes → v2}/bilibili/reply.js +0 -0
  142. package/lib/v2/bilibili/router.js +39 -0
  143. package/lib/{routes → v2}/bilibili/topic.js +0 -0
  144. package/lib/{routes → v2}/bilibili/userChannel.js +0 -0
  145. package/lib/{routes → v2}/bilibili/userFav.js +0 -0
  146. package/lib/{routes → v2}/bilibili/user_bangumi.js +0 -0
  147. package/lib/{routes → v2}/bilibili/utils.js +0 -0
  148. package/lib/{routes → v2}/bilibili/video.js +3 -1
  149. package/lib/{routes → v2}/bilibili/vsearch.js +0 -0
  150. package/lib/{routes → v2}/bilibili/weekly_recommend.js +0 -0
  151. package/lib/v2/bitbucket/commits.js +40 -0
  152. package/lib/v2/bitbucket/maintainer.js +4 -0
  153. package/lib/v2/bitbucket/radar.js +19 -0
  154. package/lib/v2/bitbucket/router.js +4 -0
  155. package/lib/v2/bitbucket/tags.js +40 -0
  156. package/lib/v2/bitmovin/blog.js +33 -0
  157. package/lib/v2/bitmovin/maintainer.js +3 -0
  158. package/lib/v2/bitmovin/radar.js +13 -0
  159. package/lib/v2/bitmovin/router.js +3 -0
  160. package/lib/{routes/universities → v2}/bjfu/grs.js +0 -0
  161. package/lib/v2/bjfu/it/index.js +49 -0
  162. package/lib/v2/bjfu/it/utils.js +64 -0
  163. package/lib/{routes/universities → v2}/bjfu/jwc/index.js +0 -0
  164. package/lib/{routes/universities → v2}/bjfu/jwc/utils.js +10 -9
  165. package/lib/{routes/universities → v2}/bjfu/kjc.js +0 -0
  166. package/lib/v2/bjfu/maintainer.js +7 -0
  167. package/lib/{routes/universities → v2}/bjfu/news/index.js +0 -0
  168. package/lib/{routes/universities → v2}/bjfu/news/utils.js +10 -9
  169. package/lib/v2/bjfu/radar.js +45 -0
  170. package/lib/v2/bjfu/router.js +7 -0
  171. package/lib/{routes → v2}/chaping/banner.js +2 -1
  172. package/lib/v2/chaping/maintainer.js +5 -0
  173. package/lib/{routes → v2}/chaping/news.js +3 -2
  174. package/lib/v2/chaping/newsflash.js +23 -0
  175. package/lib/v2/chaping/radar.js +31 -0
  176. package/lib/v2/chaping/router.js +5 -0
  177. package/lib/v2/dahecube/index.js +66 -0
  178. package/lib/v2/dahecube/maintainer.js +3 -0
  179. package/lib/v2/dahecube/radar.js +23 -0
  180. package/lib/v2/dahecube/router.js +3 -0
  181. package/lib/v2/dahecube/utils.js +47 -0
  182. package/lib/v2/dayanzai/index.js +58 -0
  183. package/lib/v2/dayanzai/maintainer.js +3 -0
  184. package/lib/v2/dayanzai/radar.js +13 -0
  185. package/lib/v2/dayanzai/router.js +3 -0
  186. package/lib/v2/dhu/jiaowu/news.js +37 -0
  187. package/lib/v2/dhu/maintainer.js +4 -0
  188. package/lib/v2/dhu/radar.js +17 -0
  189. package/lib/v2/dhu/router.js +4 -0
  190. package/lib/v2/dhu/xxgk/news.js +32 -0
  191. package/lib/v2/douban/people/wish.js +2 -1
  192. package/lib/{routes → v2}/dtcj/datahero.js +3 -2
  193. package/lib/v2/dtcj/datainsight.js +53 -0
  194. package/lib/v2/dtcj/maintainer.js +4 -0
  195. package/lib/v2/dtcj/radar.js +25 -0
  196. package/lib/v2/dtcj/router.js +4 -0
  197. package/lib/v2/eastday/24.js +90 -0
  198. package/lib/v2/eastday/maintainer.js +2 -0
  199. package/lib/v2/eastday/radar.js +16 -0
  200. package/lib/v2/eastday/router.js +2 -0
  201. package/lib/{routes → v2}/eastday/sh.js +6 -11
  202. package/lib/v2/eastmoney/radar.js +13 -0
  203. package/lib/v2/eastmoney/router.js +3 -0
  204. package/lib/v2/eastmoney/ttjj/user.js +65 -0
  205. package/lib/v2/ems/apple.js +42 -0
  206. package/lib/v2/ems/maintainer.js +4 -0
  207. package/lib/{routes → v2}/ems/news.js +0 -0
  208. package/lib/v2/ems/radar.js +19 -0
  209. package/lib/v2/ems/router.js +4 -0
  210. package/lib/v2/ems/templates/apple.art +6 -0
  211. package/lib/v2/eprice/rss.js +4 -2
  212. package/lib/v2/ff14/ff14_global.js +1 -1
  213. package/lib/{routes → v2}/flyert/creditcard.js +0 -0
  214. package/lib/v2/flyert/maintainer.js +4 -0
  215. package/lib/v2/flyert/preferential.js +48 -0
  216. package/lib/v2/flyert/radar.js +19 -0
  217. package/lib/v2/flyert/router.js +4 -0
  218. package/lib/{routes → v2}/flyert/utils.js +2 -1
  219. package/lib/v2/foresightnews/index.js +88 -0
  220. package/lib/v2/foresightnews/maintainer.js +6 -0
  221. package/lib/v2/foresightnews/radar.js +31 -0
  222. package/lib/v2/foresightnews/router.js +3 -0
  223. package/lib/v2/gcores/category.js +126 -0
  224. package/lib/v2/gcores/maintainer.js +4 -0
  225. package/lib/v2/gcores/radar.js +19 -0
  226. package/lib/v2/gcores/router.js +4 -0
  227. package/lib/v2/gcores/tag.js +126 -0
  228. package/lib/v2/github/comments.js +95 -37
  229. package/lib/v2/github/follower.js +1 -1
  230. package/lib/v2/github/maintainer.js +1 -1
  231. package/lib/v2/github/pulls.js +7 -3
  232. package/lib/v2/github/radar.js +1 -1
  233. package/lib/v2/github/router.js +3 -2
  234. package/lib/v2/github/star.js +1 -1
  235. package/lib/v2/github/starred_repos.js +1 -1
  236. package/lib/v2/gitpod/blog.js +52 -0
  237. package/lib/v2/gitpod/changelog.js +35 -0
  238. package/lib/v2/gitpod/maintainer.js +4 -0
  239. package/lib/v2/gitpod/radar.js +19 -0
  240. package/lib/v2/gitpod/router.js +4 -0
  241. package/lib/v2/gitpod/templates/description.art +2 -0
  242. package/lib/v2/gitpod/utils.js +3 -0
  243. package/lib/v2/google/maintainer.js +1 -0
  244. package/lib/v2/google/router.js +1 -0
  245. package/lib/v2/google/sitesRecentChanges.js +52 -0
  246. package/lib/v2/gov/maintainer.js +10 -0
  247. package/lib/v2/gov/mee/ywdt.js +80 -0
  248. package/lib/v2/gov/miit/wjfb.js +61 -0
  249. package/lib/{routes → v2}/gov/miit/wjgs.js +0 -0
  250. package/lib/v2/gov/miit/yjzj.js +59 -0
  251. package/lib/{routes → v2}/gov/miit/zcjd.js +0 -0
  252. package/lib/{routes → v2}/gov/miit/zcwj.js +0 -0
  253. package/lib/{routes → v2/gov}/pbc/goutongjiaoliu.js +5 -4
  254. package/lib/v2/gov/pbc/gzlw.js +27 -0
  255. package/lib/{routes → v2/gov}/pbc/tradeAnnouncement.js +5 -4
  256. package/lib/v2/gov/pbc/utils.js +20 -0
  257. package/lib/v2/gov/pbc/zcyj.js +29 -0
  258. package/lib/v2/gov/radar.js +57 -0
  259. package/lib/v2/gov/router.js +10 -0
  260. package/lib/{routes → v2}/guancha/headline.js +11 -8
  261. package/lib/{routes → v2}/guancha/index.js +55 -28
  262. package/lib/v2/guancha/maintainer.js +7 -0
  263. package/lib/{routes → v2}/guancha/member.js +30 -15
  264. package/lib/{routes → v2}/guancha/personalpage.js +0 -0
  265. package/lib/v2/guancha/radar.js +49 -0
  266. package/lib/v2/guancha/router.js +7 -0
  267. package/lib/{routes → v2}/guancha/topic.js +14 -13
  268. package/lib/v2/hdu/cs/index.js +57 -0
  269. package/lib/v2/hdu/maintainer.js +3 -0
  270. package/lib/v2/hdu/radar.js +13 -0
  271. package/lib/v2/hdu/router.js +4 -0
  272. package/lib/v2/hellobtc/information.js +51 -0
  273. package/lib/v2/hellobtc/kepu.js +64 -0
  274. package/lib/v2/hellobtc/maintainer.js +6 -0
  275. package/lib/v2/hellobtc/news.js +29 -0
  276. package/lib/v2/hellobtc/radar.js +85 -0
  277. package/lib/v2/hellobtc/router.js +6 -0
  278. package/lib/v2/hellobtc/topic.js +43 -0
  279. package/lib/v2/hellogithub/article.js +47 -0
  280. package/lib/v2/hellogithub/maintainer.js +5 -0
  281. package/lib/v2/hellogithub/month.js +42 -0
  282. package/lib/v2/hellogithub/radar.js +25 -0
  283. package/lib/v2/hellogithub/ranking.js +39 -0
  284. package/lib/v2/hellogithub/router.js +5 -0
  285. package/lib/v2/ielts/index.js +58 -0
  286. package/lib/v2/ielts/maintainer.js +3 -0
  287. package/lib/v2/ielts/radar.js +13 -0
  288. package/lib/v2/ielts/router.js +3 -0
  289. package/lib/v2/ithome/index.js +1 -0
  290. package/lib/v2/ixigua/maintainer.js +3 -0
  291. package/lib/v2/ixigua/radar.js +13 -0
  292. package/lib/v2/ixigua/router.js +3 -0
  293. package/lib/v2/ixigua/templates/userVideo.art +5 -0
  294. package/lib/v2/ixigua/userVideo.js +40 -0
  295. package/lib/v2/javbus/index.js +153 -0
  296. package/lib/v2/javbus/maintainer.js +18 -0
  297. package/lib/v2/javbus/radar.js +113 -0
  298. package/lib/v2/javbus/router.js +3 -0
  299. package/lib/v2/javbus/templates/description.art +18 -0
  300. package/lib/v2/javlibrary/utils.js +1 -1
  301. package/lib/v2/kbs/maintainer.js +4 -0
  302. package/lib/v2/kbs/news.js +67 -0
  303. package/lib/v2/kbs/radar.js +19 -0
  304. package/lib/v2/kbs/router.js +4 -0
  305. package/lib/{routes → v2}/kbs/today.js +1 -1
  306. package/lib/v2/liulinblog/itnews.js +23 -0
  307. package/lib/v2/liulinblog/kuaixun.js +17 -0
  308. package/lib/v2/liulinblog/maintainer.js +4 -0
  309. package/lib/v2/liulinblog/radar.js +33 -0
  310. package/lib/v2/liulinblog/router.js +4 -0
  311. package/lib/v2/liulinblog/utils.js +39 -0
  312. package/lib/v2/lofter/maintainer.js +4 -0
  313. package/lib/v2/lofter/radar.js +17 -0
  314. package/lib/v2/lofter/router.js +4 -0
  315. package/lib/{routes → v2}/lofter/tag.js +4 -4
  316. package/lib/v2/lofter/user.js +52 -0
  317. package/lib/v2/lvv2/maintainer.js +4 -0
  318. package/lib/v2/lvv2/news.js +75 -0
  319. package/lib/v2/lvv2/radar.js +79 -0
  320. package/lib/v2/lvv2/router.js +4 -0
  321. package/lib/v2/lvv2/templates/outlink.art +1 -0
  322. package/lib/v2/lvv2/top.js +77 -0
  323. package/lib/v2/nbd/article.js +50 -0
  324. package/lib/{routes → v2}/nbd/index.js +8 -5
  325. package/lib/v2/nbd/maintainer.js +4 -0
  326. package/lib/v2/nbd/radar.js +19 -0
  327. package/lib/v2/nbd/router.js +4 -0
  328. package/lib/v2/nikkei-cn/index.js +10 -5
  329. package/lib/v2/njnu/ceai/ceai.js +44 -0
  330. package/lib/v2/njnu/ceai/utils.js +55 -0
  331. package/lib/v2/njnu/jwc/jwc.js +43 -0
  332. package/lib/v2/njnu/jwc/utils.js +59 -0
  333. package/lib/v2/njnu/maintainer.js +4 -0
  334. package/lib/v2/njnu/radar.js +21 -0
  335. package/lib/v2/njnu/router.js +4 -0
  336. package/lib/v2/njupt/jwc.js +90 -0
  337. package/lib/v2/njupt/maintainer.js +3 -0
  338. package/lib/v2/njupt/radar.js +20 -0
  339. package/lib/v2/njupt/router.js +3 -0
  340. package/lib/v2/nltimes/maintainer.js +3 -0
  341. package/lib/v2/nltimes/news.js +89 -0
  342. package/lib/v2/nltimes/radar.js +19 -0
  343. package/lib/v2/nltimes/router.js +3 -0
  344. package/lib/{routes → v2}/nowcoder/discuss.js +17 -22
  345. package/lib/v2/nowcoder/experience.js +48 -0
  346. package/lib/{routes → v2}/nowcoder/jobcenter.js +0 -0
  347. package/lib/v2/nowcoder/maintainer.js +7 -0
  348. package/lib/v2/nowcoder/radar.js +40 -0
  349. package/lib/{routes → v2}/nowcoder/recommend.js +1 -1
  350. package/lib/v2/nowcoder/router.js +7 -0
  351. package/lib/{routes → v2}/nowcoder/schedule.js +4 -3
  352. package/lib/v2/ntdtv/channel.js +44 -0
  353. package/lib/v2/ntdtv/maintainer.js +3 -0
  354. package/lib/v2/ntdtv/radar.js +13 -0
  355. package/lib/v2/ntdtv/router.js +3 -0
  356. package/lib/v2/odaily/post.js +10 -8
  357. package/lib/v2/oilchem/index.js +67 -0
  358. package/lib/v2/oilchem/maintainer.js +3 -0
  359. package/lib/v2/oilchem/radar.js +11 -0
  360. package/lib/v2/oilchem/router.js +3 -0
  361. package/lib/v2/oilchem/routes.js +671 -0
  362. package/lib/v2/picuki/maintainer.js +3 -0
  363. package/lib/v2/picuki/profile.js +167 -0
  364. package/lib/v2/picuki/radar.js +13 -0
  365. package/lib/v2/picuki/router.js +3 -0
  366. package/lib/v2/picuki/templates/post.art +7 -0
  367. package/lib/v2/qq88/index.js +60 -0
  368. package/lib/v2/qq88/maintainer.js +3 -0
  369. package/lib/v2/qq88/radar.js +13 -0
  370. package/lib/v2/qq88/router.js +3 -0
  371. package/lib/v2/readhub/index.js +106 -0
  372. package/lib/v2/readhub/maintainer.js +3 -0
  373. package/lib/v2/readhub/radar.js +13 -0
  374. package/lib/v2/readhub/router.js +6 -0
  375. package/lib/{routes → v2}/rfa/index.js +11 -6
  376. package/lib/v2/rfa/maintainer.js +3 -0
  377. package/lib/v2/rfa/radar.js +13 -0
  378. package/lib/v2/rfa/router.js +3 -0
  379. package/lib/v2/segmentfault/channel.js +46 -0
  380. package/lib/v2/segmentfault/maintainer.js +4 -0
  381. package/lib/v2/segmentfault/radar.js +19 -0
  382. package/lib/v2/segmentfault/router.js +4 -0
  383. package/lib/v2/segmentfault/user.js +43 -0
  384. package/lib/v2/shmeea/maintainer.js +1 -0
  385. package/lib/v2/shmeea/radar.js +6 -0
  386. package/lib/v2/shmeea/router.js +2 -1
  387. package/lib/v2/shmeea/self-study.js +61 -0
  388. package/lib/v2/sohu/maintainer.js +3 -0
  389. package/lib/{routes → v2}/sohu/mp.js +9 -8
  390. package/lib/v2/sohu/radar.js +13 -0
  391. package/lib/v2/sohu/router.js +3 -0
  392. package/lib/v2/soundofhope/channel.js +42 -0
  393. package/lib/v2/soundofhope/maintainer.js +3 -0
  394. package/lib/v2/soundofhope/radar.js +13 -0
  395. package/lib/v2/soundofhope/router.js +3 -0
  396. package/lib/v2/sputniknews/index.js +93 -0
  397. package/lib/v2/sputniknews/maintainer.js +3 -0
  398. package/lib/v2/sputniknews/radar.js +13 -0
  399. package/lib/v2/sputniknews/router.js +3 -0
  400. package/lib/{routes/universities/sysu/sdcs.js → v2/sysu/cse.js} +3 -3
  401. package/lib/v2/sysu/maintainer.js +3 -0
  402. package/lib/v2/sysu/radar.js +13 -0
  403. package/lib/v2/sysu/router.js +3 -0
  404. package/lib/v2/telegram/channel.js +446 -112
  405. package/lib/v2/telegram/maintainer.js +1 -1
  406. package/lib/v2/telegram/router.js +1 -1
  407. package/lib/v2/telegram/templates/video.art +3 -1
  408. package/lib/v2/tencent/maintainer.js +3 -0
  409. package/lib/v2/tencent/qq/sdk/changelog.js +56 -0
  410. package/lib/v2/tencent/radar.js +56 -0
  411. package/lib/v2/tencent/router.js +3 -0
  412. package/lib/v2/test/index.js +1 -0
  413. package/lib/v2/tokeninsight/blog.js +52 -0
  414. package/lib/v2/tokeninsight/bulletin.js +44 -0
  415. package/lib/v2/tokeninsight/maintainer.js +5 -0
  416. package/lib/v2/tokeninsight/radar.js +25 -0
  417. package/lib/v2/tokeninsight/report.js +52 -0
  418. package/lib/v2/tokeninsight/router.js +5 -0
  419. package/lib/v2/txrjy/fornumtopic.js +72 -0
  420. package/lib/v2/txrjy/maintainer.js +3 -0
  421. package/lib/v2/txrjy/radar.js +17 -0
  422. package/lib/v2/txrjy/router.js +3 -0
  423. package/lib/v2/txrjy/templates/fornumtopic.art +6 -0
  424. package/lib/v2/wallstreetcn/live.js +18 -15
  425. package/lib/v2/wallstreetcn/router.js +1 -1
  426. package/lib/v2/wfu/jwc.js +54 -0
  427. package/lib/v2/wfu/maintainer.js +4 -0
  428. package/lib/v2/wfu/news.js +96 -0
  429. package/lib/v2/wfu/radar.js +21 -0
  430. package/lib/v2/wfu/router.js +4 -0
  431. package/lib/v2/whitehouse/maintainer.js +1 -0
  432. package/lib/v2/whitehouse/ostp.js +50 -0
  433. package/lib/v2/whitehouse/radar.js +6 -0
  434. package/lib/v2/whitehouse/router.js +1 -0
  435. package/lib/v2/who/maintainer.js +5 -0
  436. package/lib/v2/who/news-room.js +76 -0
  437. package/lib/{routes → v2}/who/news.js +1 -1
  438. package/lib/v2/who/radar.js +25 -0
  439. package/lib/v2/who/router.js +5 -0
  440. package/lib/{routes → v2}/who/speeches.js +0 -0
  441. package/lib/v2/wikinews/index.js +43 -0
  442. package/lib/v2/wikinews/maintainer.js +3 -0
  443. package/lib/v2/wikinews/radar.js +13 -0
  444. package/lib/v2/wikinews/router.js +4 -0
  445. package/lib/v2/wp-china/maintainer.js +3 -0
  446. package/lib/v2/wp-china/news.js +57 -0
  447. package/lib/v2/wp-china/radar.js +13 -0
  448. package/lib/v2/wp-china/router.js +3 -0
  449. package/lib/{routes → v2}/wsj/index.js +6 -4
  450. package/lib/v2/wsj/maintainer.js +3 -0
  451. package/lib/v2/wsj/radar.js +21 -0
  452. package/lib/v2/wsj/router.js +3 -0
  453. package/lib/v2/xiaoyuzhou/maintainer.js +1 -1
  454. package/lib/v2/xiaoyuzhou/pickup.js +2 -2
  455. package/lib/v2/xiaoyuzhou/podcast.js +2 -2
  456. package/lib/v2/xmanhua/index.js +74 -0
  457. package/lib/v2/xmanhua/radar.js +13 -0
  458. package/lib/v2/xmanhua/router.js +3 -0
  459. package/lib/{routes → v2}/zhibo8/forum.js +8 -16
  460. package/lib/v2/zhibo8/maintainer.js +5 -0
  461. package/lib/v2/zhibo8/more.js +82 -0
  462. package/lib/{routes → v2}/zhibo8/post.js +1 -1
  463. package/lib/v2/zhibo8/radar.js +27 -0
  464. package/lib/v2/zhibo8/router.js +5 -0
  465. package/lib/views/error.art +4 -4
  466. package/lib/views/rss.art +5 -4
  467. package/package.json +17 -16
  468. package/lib/routes/36kr/news.js +0 -94
  469. package/lib/routes/8kcos/article.js +0 -17
  470. package/lib/routes/8kcos/cat.js +0 -28
  471. package/lib/routes/8kcos/latest.js +0 -27
  472. package/lib/routes/95mm/tab.js +0 -9
  473. package/lib/routes/95mm/tag.js +0 -7
  474. package/lib/routes/95mm/utils.js +0 -51
  475. package/lib/routes/apple/exchange_repair.js +0 -47
  476. package/lib/routes/eastmoney/user.js +0 -30
  477. package/lib/routes/flyert/preferential.js +0 -33
  478. package/lib/routes/gcores/category.js +0 -127
  479. package/lib/routes/gov/mee/gs.js +0 -54
  480. package/lib/routes/ixigua/userVideo.js +0 -35
  481. package/lib/routes/javbus/genre.js +0 -7
  482. package/lib/routes/javbus/home.js +0 -3
  483. package/lib/routes/javbus/series.js +0 -7
  484. package/lib/routes/javbus/star.js +0 -7
  485. package/lib/routes/javbus/uncensored/genre.js +0 -6
  486. package/lib/routes/javbus/uncensored/home.js +0 -3
  487. package/lib/routes/javbus/uncensored/series.js +0 -7
  488. package/lib/routes/javbus/uncensored/star.js +0 -7
  489. package/lib/routes/javbus/util.js +0 -211
  490. package/lib/routes/javbus/western/genre.js +0 -7
  491. package/lib/routes/javbus/western/home.js +0 -3
  492. package/lib/routes/javbus/western/series.js +0 -7
  493. package/lib/routes/javbus/western/star.js +0 -7
  494. package/lib/routes/lofter/posts.js +0 -54
  495. package/lib/routes/nbd/article.js +0 -60
  496. package/lib/routes/picuki/profile.js +0 -90
  497. package/lib/routes/readhub/category.js +0 -102
  498. package/lib/routes/segmentfault/channel.js +0 -90
  499. package/lib/routes/segmentfault/user.js +0 -90
  500. package/lib/routes/universities/njupt/jwc.js +0 -84
  501. package/lib/routes/who/news-room.js +0 -56
  502. package/lib/routes/zhibo8/more.js +0 -45
package/lib/config.js CHANGED
@@ -25,83 +25,38 @@ const calculateValue = () => {
25
25
  }
26
26
 
27
27
  value = {
28
+ // app config
29
+ disallowRobot: envs.DISALLOW_ROBOT !== '0' && envs.DISALLOW_ROBOT !== 'false',
30
+ enableCluster: envs.ENABLE_CLUSTER,
28
31
  isPackage: envs.IS_PACKAGE,
29
- noLogfiles: envs.NO_LOGFILES,
32
+ nodeName: envs.NODE_NAME,
33
+ puppeteerWSEndpoint: envs.PUPPETEER_WS_ENDPOINT,
34
+ // network
30
35
  connect: {
31
36
  port: envs.PORT || 1200, // 监听端口
32
37
  socket: envs.SOCKET || null, // 监听 Unix Socket, null 为禁用
33
38
  },
39
+ listenInaddrAny: envs.LISTEN_INADDR_ANY || 1, // 是否允许公网连接,取值 0 1
40
+ requestRetry: parseInt(envs.REQUEST_RETRY) || 2, // 请求失败重试次数
41
+ requestTimeout: parseInt(envs.REQUEST_TIMEOUT) || 30000, // Milliseconds to wait for the server to end the response before aborting the request
42
+ ua: envs.UA || 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36',
43
+ // cors request
44
+ allowOrigin: envs.ALLOW_ORIGIN,
45
+ // cache
34
46
  cache: {
35
47
  type: typeof envs.CACHE_TYPE === 'undefined' ? 'memory' : envs.CACHE_TYPE, // 缓存类型,支持 'memory' 和 'redis',设为空可以禁止缓存
36
48
  requestTimeout: parseInt(envs.CACHE_REQUEST_TIMEOUT) || 60,
37
49
  routeExpire: parseInt(envs.CACHE_EXPIRE) || 5 * 60, // 路由缓存时间,单位为秒
38
50
  contentExpire: parseInt(envs.CACHE_CONTENT_EXPIRE) || 1 * 60 * 60, // 不变内容缓存时间,单位为秒
39
51
  },
40
- ua: envs.UA || 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36',
41
- listenInaddrAny: envs.LISTEN_INADDR_ANY || 1, // 是否允许公网连接,取值 0 1
42
- requestRetry: parseInt(envs.REQUEST_RETRY) || 2, // 请求失败重试次数
43
- requestTimeout: parseInt(envs.REQUEST_TIMEOUT) || 30000, // Milliseconds to wait for the server to end the response before aborting the request
44
- // 是否显示 Debug 信息,取值 'true' 'false' 'some_string' ,取值为 'true' 时永久显示,取值为 'false' 时永远隐藏,取值为 'some_string' 时请求带上 '?debug=some_string' 显示
45
- debugInfo: envs.DEBUG_INFO || 'true',
46
- disallowRobot: envs.DISALLOW_ROBOT !== '0' && envs.DISALLOW_ROBOT !== 'false',
47
- titleLengthLimit: parseInt(envs.TITLE_LENGTH_LIMIT) || 150,
52
+ memory: {
53
+ max: parseInt(envs.MEMORY_MAX) || Math.pow(2, 8), // The maximum number of items that remain in the cache. This must be a positive finite intger.
54
+ // https://github.com/isaacs/node-lru-cache#options
55
+ },
48
56
  redis: {
49
57
  url: envs.REDIS_URL || 'redis://localhost:6379/',
50
58
  },
51
- nodeName: envs.NODE_NAME,
52
- suffix: envs.SUFFIX,
53
- pixiv: {
54
- refreshToken: envs.PIXIV_REFRESHTOKEN,
55
- bypassCdn: envs.PIXIV_BYPASS_CDN !== '0' && envs.PIXIV_BYPASS_CDN !== 'false',
56
- bypassCdnHostname: envs.PIXIV_BYPASS_HOSTNAME || 'public-api.secure.pixiv.net',
57
- bypassCdnDoh: envs.PIXIV_BYPASS_DOH || 'https://1.1.1.1/dns-query',
58
- imgProxy: envs.PIXIV_IMG_PROXY || 'https://i.pixiv.cat',
59
- },
60
- fanbox: {
61
- session: envs.FANBOX_SESSION_ID,
62
- },
63
- disqus: {
64
- api_key: envs.DISQUS_API_KEY,
65
- },
66
- spotify: {
67
- clientId: envs.SPOTIFY_CLIENT_ID,
68
- clientSecret: envs.SPOTIFY_CLIENT_SECRET,
69
- refreshToken: envs.SPOTIFY_REFRESHTOKEN,
70
- },
71
- twitter: {
72
- consumer_key: envs.TWITTER_CONSUMER_KEY,
73
- consumer_secret: envs.TWITTER_CONSUMER_SECRET,
74
- tokens: twitter_tokens,
75
- authorization: envs.TWITTER_WEBAPI_AUTHORIZAION || 'Bearer AAAAAAAAAAAAAAAAAAAAANRILgAAAAAAnNwIzUejRCOuH5E6I8xnZz4puTs%3D1Zv7ttfk8LF81IUq16cHjhLTvJu4FA33AGWWjCpTnA',
76
- // 此处硬编码参考自https://github.com/mikf/gallery-dl/blob/master/gallery_dl/extractor/twitter.py#L550
77
- },
78
- youtube: {
79
- key: envs.YOUTUBE_KEY,
80
- },
81
- telegram: {
82
- token: envs.TELEGRAM_TOKEN,
83
- },
84
- github: {
85
- access_token: envs.GITHUB_ACCESS_TOKEN,
86
- },
87
- authentication: {
88
- name: envs.HTTP_BASIC_AUTH_NAME || 'usernam3',
89
- pass: envs.HTTP_BASIC_AUTH_PASS || 'passw0rd',
90
- },
91
- bilibili: {
92
- cookies: bilibili_cookies,
93
- },
94
- yuque: {
95
- token: envs.YUQUE_TOKEN,
96
- },
97
- zhihu: {
98
- cookies: envs.ZHIHU_COOKIES,
99
- },
100
- ncm: {
101
- cookies: envs.NCM_COOKIES || '',
102
- },
103
- puppeteerWSEndpoint: envs.PUPPETEER_WS_ENDPOINT,
104
- loggerLevel: envs.LOGGER_LEVEL || 'info',
59
+ // proxy
105
60
  proxyUri: envs.PROXY_URI,
106
61
  proxy: {
107
62
  protocol: envs.PROXY_PROTOCOL,
@@ -110,26 +65,74 @@ const calculateValue = () => {
110
65
  auth: envs.PROXY_AUTH,
111
66
  url_regex: envs.PROXY_URL_REGEX || '.*',
112
67
  },
113
- allowOrigin: envs.ALLOW_ORIGIN,
68
+ // auth
69
+ authentication: {
70
+ name: envs.HTTP_BASIC_AUTH_NAME || 'usernam3',
71
+ pass: envs.HTTP_BASIC_AUTH_PASS || 'passw0rd',
72
+ },
73
+ // access control
114
74
  blacklist: envs.BLACKLIST && envs.BLACKLIST.split(','),
115
75
  whitelist: envs.WHITELIST && envs.WHITELIST.split(','),
116
76
  allowLocalhost: envs.ALLOW_LOCALHOST,
117
77
  accessKey: envs.ACCESS_KEY,
118
- enableCluster: envs.ENABLE_CLUSTER,
119
- email: {
120
- config: email_config,
121
- },
78
+ // logging
79
+ // 是否显示 Debug 信息,取值 'true' 'false' 'some_string' ,取值为 'true' 时永久显示,取值为 'false' 时永远隐藏,取值为 'some_string' 时请求带上 '?debug=some_string' 显示
80
+ debugInfo: envs.DEBUG_INFO || 'true',
81
+ loggerLevel: envs.LOGGER_LEVEL || 'info',
82
+ noLogfiles: envs.NO_LOGFILES,
122
83
  sentry: {
123
84
  dsn: envs.SENTRY,
124
85
  routeTimeout: parseInt(envs.SENTRY_ROUTE_TIMEOUT) || 30000,
125
86
  },
87
+ // feed config
88
+ hotlink: {
89
+ template: envs.HOTLINK_TEMPLATE,
90
+ },
91
+ suffix: envs.SUFFIX,
92
+ titleLengthLimit: parseInt(envs.TITLE_LENGTH_LIMIT) || 150,
93
+
94
+ // Route-specific Configurations
95
+ bilibili: {
96
+ cookies: bilibili_cookies,
97
+ },
98
+ bitbucket: {
99
+ username: envs.BITBUCKET_USERNAME,
100
+ password: envs.BITBUCKET_PASSWORD,
101
+ },
102
+ btbyr: {
103
+ host: envs.BTBYR_HOST,
104
+ cookies: envs.BTBYR_COOKIE,
105
+ },
106
+ bupt: {
107
+ portal_cookie: envs.BUPT_PORTAL_COOKIE,
108
+ },
126
109
  chuiniu: {
127
110
  member: envs.CHUINIU_MEMBER,
128
111
  },
129
- weibo: {
130
- app_key: envs.WEIBO_APP_KEY,
131
- app_secret: envs.WEIBO_APP_SECRET,
132
- redirect_url: envs.WEIBO_REDIRECT_URL,
112
+ dida365: {
113
+ username: envs.DIDA365_USERNAME,
114
+ password: envs.DIDA365_PASSWORD,
115
+ },
116
+ discuz: {
117
+ cookies: discuz_cookies,
118
+ },
119
+ disqus: {
120
+ api_key: envs.DISQUS_API_KEY,
121
+ },
122
+ douban: {
123
+ cookie: envs.DOUBAN_COOKIE,
124
+ },
125
+ ehentai: {
126
+ ipb_member_id: envs.EH_IPB_MEMBER_ID,
127
+ ipb_pass_hash: envs.EH_IPB_PASS_HASH,
128
+ sk: envs.EH_SK,
129
+ igneous: envs.EH_IGNEOUS,
130
+ },
131
+ email: {
132
+ config: email_config,
133
+ },
134
+ fanbox: {
135
+ session: envs.FANBOX_SESSION_ID,
133
136
  },
134
137
  fanfou: {
135
138
  consumer_key: envs.FANFOU_CONSUMER_KEY,
@@ -137,27 +140,17 @@ const calculateValue = () => {
137
140
  username: envs.FANFOU_USERNAME,
138
141
  password: envs.FANFOU_PASSWORD,
139
142
  },
140
- lastfm: {
141
- api_key: envs.LASTFM_API_KEY,
142
- },
143
- pkubbs: {
144
- cookie: envs.PKUBBS_COOKIE,
145
- },
146
- bupt: {
147
- portal_cookie: envs.BUPT_PORTAL_COOKIE,
148
- },
149
- nhentai: {
150
- username: envs.NHENTAI_USERNAME,
151
- password: envs.NHENTAI_PASSWORD,
143
+ game4399: {
144
+ cookie: envs.GAME_4399,
152
145
  },
153
- discuz: {
154
- cookies: discuz_cookies,
146
+ github: {
147
+ access_token: envs.GITHUB_ACCESS_TOKEN,
155
148
  },
156
- scihub: {
157
- host: envs.SCIHUB_HOST || 'https://sci-hub.se/',
149
+ google: {
150
+ fontsApiKey: envs.GOOGLE_FONTS_API_KEY,
158
151
  },
159
- hotlink: {
160
- template: envs.HOTLINK_TEMPLATE,
152
+ infzm: {
153
+ cookie: envs.INFZM_COOKIE,
161
154
  },
162
155
  initium: {
163
156
  username: envs.INITIUM_USERNAME,
@@ -165,64 +158,94 @@ const calculateValue = () => {
165
158
  bearertoken: envs.INITIUM_BEARER_TOKEN,
166
159
  iap_receipt: envs.INITIUM_IAP_RECEIPT,
167
160
  },
168
- btbyr: {
169
- host: envs.BTBYR_HOST,
170
- cookies: envs.BTBYR_COOKIE,
161
+ instagram: {
162
+ username: envs.IG_USERNAME,
163
+ password: envs.IG_PASSWORD,
164
+ proxy: envs.IG_PROXY,
165
+ },
166
+ lastfm: {
167
+ api_key: envs.LASTFM_API_KEY,
171
168
  },
172
169
  mastodon: {
173
170
  apiHost: envs.MASTODON_API_HOST,
174
171
  accessToken: envs.MASTODON_API_ACCESS_TOKEN,
175
172
  acctDomain: envs.MASTODON_API_ACCT_DOMAIN,
176
173
  },
177
- xiaoyuzhou: {
178
- device_id: envs.XIAOYUZHOU_ID,
179
- refresh_token: envs.XIAOYUZHOU_TOKEN,
180
- },
181
174
  miniflux: {
182
175
  instance: envs.MINIFLUX_INSTANCE || 'https://reader.miniflux.app',
183
176
  token: envs.MINIFLUX_TOKEN || '',
184
177
  },
185
- nga: {
186
- uid: envs.NGA_PASSPORT_UID,
187
- cid: envs.NGA_PASSPORT_CID,
178
+ ncm: {
179
+ cookies: envs.NCM_COOKIES || '',
188
180
  },
189
181
  newrank: {
190
182
  cookie: envs.NEWRANK_COOKIE,
191
183
  },
192
- ximalaya: {
193
- token: envs.XIMALAYA_TOKEN,
184
+ nga: {
185
+ uid: envs.NGA_PASSPORT_UID,
186
+ cid: envs.NGA_PASSPORT_CID,
194
187
  },
195
- game4399: {
196
- cookie: envs.GAME_4399,
188
+ nhentai: {
189
+ username: envs.NHENTAI_USERNAME,
190
+ password: envs.NHENTAI_PASSWORD,
197
191
  },
198
- dida365: {
199
- username: envs.DIDA365_USERNAME,
200
- password: envs.DIDA365_PASSWORD,
192
+ pixiv: {
193
+ refreshToken: envs.PIXIV_REFRESHTOKEN,
194
+ bypassCdn: envs.PIXIV_BYPASS_CDN !== '0' && envs.PIXIV_BYPASS_CDN !== 'false',
195
+ bypassCdnHostname: envs.PIXIV_BYPASS_HOSTNAME || 'public-api.secure.pixiv.net',
196
+ bypassCdnDoh: envs.PIXIV_BYPASS_DOH || 'https://1.1.1.1/dns-query',
197
+ imgProxy: envs.PIXIV_IMG_PROXY || 'https://i.pixiv.cat',
198
+ },
199
+ pkubbs: {
200
+ cookie: envs.PKUBBS_COOKIE,
201
201
  },
202
202
  scboy: {
203
203
  token: envs.SCBOY_BBS_TOKEN,
204
204
  },
205
- wordpress: {
206
- cdnUrl: envs.WORDPRESS_CDN,
205
+ scihub: {
206
+ host: envs.SCIHUB_HOST || 'https://sci-hub.se/',
207
207
  },
208
- ehentai: {
209
- ipb_member_id: envs.EH_IPB_MEMBER_ID,
210
- ipb_pass_hash: envs.EH_IPB_PASS_HASH,
211
- sk: envs.EH_SK,
208
+ spotify: {
209
+ clientId: envs.SPOTIFY_CLIENT_ID,
210
+ clientSecret: envs.SPOTIFY_CLIENT_SECRET,
211
+ refreshToken: envs.SPOTIFY_REFRESHTOKEN,
212
212
  },
213
- infzm: {
214
- cookie: envs.INFZM_COOKIE,
213
+ telegram: {
214
+ token: envs.TELEGRAM_TOKEN,
215
+ },
216
+ twitter: {
217
+ consumer_key: envs.TWITTER_CONSUMER_KEY,
218
+ consumer_secret: envs.TWITTER_CONSUMER_SECRET,
219
+ tokens: twitter_tokens,
220
+ authorization: envs.TWITTER_WEBAPI_AUTHORIZAION || 'Bearer AAAAAAAAAAAAAAAAAAAAANRILgAAAAAAnNwIzUejRCOuH5E6I8xnZz4puTs%3D1Zv7ttfk8LF81IUq16cHjhLTvJu4FA33AGWWjCpTnA',
221
+ // 此处硬编码参考自https://github.com/mikf/gallery-dl/blob/master/gallery_dl/extractor/twitter.py#L550
222
+ },
223
+ weibo: {
224
+ app_key: envs.WEIBO_APP_KEY,
225
+ app_secret: envs.WEIBO_APP_SECRET,
226
+ redirect_url: envs.WEIBO_REDIRECT_URL,
215
227
  },
216
228
  wenku8: {
217
229
  cookie: envs.WENKU8_COOKIE,
218
230
  },
219
- google: {
220
- fontsApiKey: envs.GOOGLE_FONTS_API_KEY,
231
+ wordpress: {
232
+ cdnUrl: envs.WORDPRESS_CDN,
221
233
  },
222
- instagram: {
223
- username: envs.IG_USERNAME,
224
- password: envs.IG_PASSWORD,
225
- proxy: envs.IG_PROXY,
234
+ xiaoyuzhou: {
235
+ device_id: envs.XIAOYUZHOU_ID,
236
+ refresh_token: envs.XIAOYUZHOU_TOKEN,
237
+ },
238
+ ximalaya: {
239
+ token: envs.XIMALAYA_TOKEN,
240
+ },
241
+ youtube: {
242
+ key: envs.YOUTUBE_KEY,
243
+ },
244
+ yuque: {
245
+ token: envs.YUQUE_TOKEN,
246
+ },
247
+ zhihu: {
248
+ cookies: envs.ZHIHU_COOKIES,
226
249
  },
227
250
  };
228
251
  };
@@ -41,7 +41,7 @@ if (config.cache.type === 'redis') {
41
41
  value = JSON.stringify(value);
42
42
  }
43
43
  if (key) {
44
- return pageCache.set(key, value, maxAge * 1000);
44
+ return pageCache.set(key, value, { ttl: maxAge * 1000 });
45
45
  }
46
46
  };
47
47
  } else {
@@ -55,8 +55,8 @@ module.exports = function (app) {
55
55
  const { get, set, status } = cacheModule;
56
56
  app.context.cache = {
57
57
  ...cacheModule,
58
- tryGet: async (key, getValueFunc, maxAge = config.cache.contentExpire) => {
59
- let v = await get(key);
58
+ tryGet: async (key, getValueFunc, maxAge = config.cache.contentExpire, refresh = true) => {
59
+ let v = await get(key, refresh);
60
60
  if (!v) {
61
61
  v = await getValueFunc();
62
62
  set(key, v, maxAge);
@@ -4,13 +4,13 @@ const config = require('@/config').value;
4
4
  const status = { available: false };
5
5
 
6
6
  const pageCache = new Lru({
7
- maxAge: config.cache.routeExpire * 1000,
8
- max: Infinity,
7
+ ttl: config.cache.routeExpire * 1000,
8
+ max: config.memory.max,
9
9
  });
10
10
 
11
11
  const routeCache = new Lru({
12
- maxAge: config.cache.routeExpire * 1000,
13
- max: Infinity,
12
+ ttl: config.cache.routeExpire * 1000,
13
+ max: config.memory.max,
14
14
  updateAgeOnGet: true,
15
15
  });
16
16
 
@@ -34,7 +34,7 @@ module.exports = {
34
34
  value = JSON.stringify(value);
35
35
  }
36
36
  if (key && status.available) {
37
- return (refresh ? routeCache : pageCache).set(key, value, maxAge * 1000);
37
+ return (refresh ? routeCache : pageCache).set(key, value, { ttl: maxAge * 1000 });
38
38
  }
39
39
  },
40
40
  clients: { pageCache, routeCache },
@@ -18,12 +18,26 @@ redisClient.on('connect', () => {
18
18
  logger.info('Redis connected.');
19
19
  });
20
20
 
21
+ const getCacheTtlKey = (key) => {
22
+ if (key.startsWith('cacheTtl:')) {
23
+ throw Error('"cacheTtl:" prefix is reserved for the internal usage, please change your cache key'); // blocking any attempt to get/set the cacheTtl
24
+ }
25
+ return `cacheTtl:${key}`;
26
+ };
27
+
21
28
  module.exports = {
22
29
  get: async (key, refresh = true) => {
23
30
  if (key && status.available) {
24
- let value = await redisClient.get(key);
31
+ const cacheTtlKey = getCacheTtlKey(key);
32
+ let [value, cacheTtl] = await redisClient.mget(key, cacheTtlKey);
25
33
  if (value && refresh) {
26
- redisClient.expire(key, config.cache.contentExpire);
34
+ if (!cacheTtl) {
35
+ cacheTtl = config.cache.contentExpire;
36
+ redisClient.set(cacheTtlKey, cacheTtl, 'EX', cacheTtl);
37
+ } else {
38
+ redisClient.expire(cacheTtlKey, cacheTtl);
39
+ }
40
+ redisClient.expire(key, cacheTtl);
27
41
  value = value + '';
28
42
  }
29
43
  return value;
@@ -40,6 +54,7 @@ module.exports = {
40
54
  value = JSON.stringify(value);
41
55
  }
42
56
  if (key) {
57
+ redisClient.set(getCacheTtlKey(key), maxAge, 'EX', maxAge);
43
58
  return redisClient.set(key, value, 'EX', maxAge); // setMode: https://redis.io/commands/set
44
59
  }
45
60
  },
@@ -54,10 +54,10 @@ module.exports = async (ctx, next) => {
54
54
  }
55
55
  }
56
56
 
57
- if (item.enclosure_length) {
58
- const itunes_duration =
59
- Math.floor(item.enclosure_length / 3600) + ':' + (Math.floor((item.enclosure_length % 3600) / 60) / 100).toFixed(2).slice(-2) + ':' + (((item.enclosure_length % 3600) % 60) / 100).toFixed(2).slice(-2);
60
- item.itunes_duration = itunes_duration;
57
+ if (item.itunes_duration && ((typeof item.itunes_duration === 'string' && item.itunes_duration.indexOf(':') === -1) || (typeof item.itunes_duration === 'number' && !isNaN(item.itunes_duration)))) {
58
+ item.itunes_duration = +item.itunes_duration;
59
+ item.itunes_duration =
60
+ Math.floor(item.itunes_duration / 3600) + ':' + (Math.floor((item.itunes_duration % 3600) / 60) / 100).toFixed(2).slice(-2) + ':' + (((item.itunes_duration % 3600) % 60) / 100).toFixed(2).slice(-2);
61
61
  }
62
62
  });
63
63
  }
@@ -1658,134 +1658,6 @@ module.exports = {
1658
1658
  },
1659
1659
  ],
1660
1660
  },
1661
- 'qq.com': {
1662
- _name: '腾讯',
1663
- 'mp.weixin': [
1664
- {
1665
- title: '微信公众号栏目',
1666
- docs: 'https://docs.rsshub.app/new-media.html#gong-zhong-hao-lan-mu-fei-tui-song-li-shi-xiao-xi',
1667
- source: '/mp/homepage',
1668
- target: (params, url) => `/wechat/mp/homepage/${new URL(url).searchParams.get('__biz')}/${new URL(url).searchParams.get('hid')}/${new URL(url).searchParams.get('cid') ? new URL(url).searchParams.get('cid') : ''}`,
1669
- },
1670
- {
1671
- title: '微信公众号话题',
1672
- docs: 'https://docs.rsshub.app/new-media.html#wei-xin-gong-zhong-hao-wen-zhang-hua-ti-tag',
1673
- source: '/mp/appmsgalbum',
1674
- target: (params, url) => `/wechat/mp/msgalbum/${new URL(url).searchParams.get('__biz')}/${new URL(url).searchParams.get('album_id')}`,
1675
- },
1676
- ],
1677
- egame: [
1678
- {
1679
- title: '企鹅电竞直播间',
1680
- docs: 'https://docs.rsshub.app/live.html#qi-e-dian-jing-zhi-bo-jian-kai-bo',
1681
- source: '/:id',
1682
- target: (params) => {
1683
- if (params.id.match(/^\d+$/)) {
1684
- return '/egameqq/room/:id';
1685
- }
1686
- },
1687
- },
1688
- ],
1689
- v: [
1690
- {
1691
- title: '视频 - 播放列表',
1692
- docs: 'https://docs.rsshub.app/multimedia.html#teng-xun-shi-pin',
1693
- source: '/x/cover/:id',
1694
- target: (params) => {
1695
- const id = params.id.match('(.*).html')[1];
1696
- return id ? `/tencentvideo/playlist/${id}` : '';
1697
- },
1698
- },
1699
- {
1700
- title: '视频 - 播放列表',
1701
- docs: 'https://docs.rsshub.app/multimedia.html#teng-xun-shi-pin',
1702
- source: '/x/cover/:id/:detail',
1703
- target: '/tencentvideo/playlist/:id',
1704
- },
1705
- ],
1706
- },
1707
- 'javbus.com': {
1708
- _name: 'JavBus',
1709
- www: [
1710
- {
1711
- title: '首页',
1712
- docs: 'https://docs.rsshub.app/multimedia.html#javbus',
1713
- source: '/',
1714
- target: '/javbus/home',
1715
- },
1716
- {
1717
- title: '分类',
1718
- docs: 'https://docs.rsshub.app/multimedia.html#javbus',
1719
- source: '/genre/:gid',
1720
- target: '/javbus/genre/:gid',
1721
- },
1722
- {
1723
- title: '演员',
1724
- docs: 'https://docs.rsshub.app/multimedia.html#javbus',
1725
- source: '/star/:sid',
1726
- target: '/javbus/star/:sid',
1727
- },
1728
- {
1729
- title: '系列',
1730
- docs: 'https://docs.rsshub.app/multimedia.html#javbus',
1731
- source: '/series/:seriesid',
1732
- target: '/javbus/series/:seriesid',
1733
- },
1734
- {
1735
- title: '首页 / 步兵',
1736
- docs: 'https://docs.rsshub.app/multimedia.html#javbus',
1737
- source: '/uncensored',
1738
- target: '/javbus/uncensored/home',
1739
- },
1740
- {
1741
- title: '分类 / 步兵',
1742
- docs: 'https://docs.rsshub.app/multimedia.html#javbus',
1743
- source: '/uncensored/genre/:gid',
1744
- target: '/javbus/uncensored/genre/:gid',
1745
- },
1746
- {
1747
- title: '演员 / 步兵',
1748
- docs: 'https://docs.rsshub.app/multimedia.html#javbus',
1749
- source: '/uncensored/star/:sid',
1750
- target: '/javbus/uncensored/star/:sid',
1751
- },
1752
- {
1753
- title: '系列 / 步兵',
1754
- docs: 'https://docs.rsshub.app/multimedia.html#javbus',
1755
- source: '/uncensored/series/:seriesid',
1756
- target: '/javbus/uncensored/series/:seriesid',
1757
- },
1758
- ],
1759
- },
1760
- 'javbus.one': {
1761
- _name: 'JavBus',
1762
- www: [
1763
- {
1764
- title: '首页 / 欧陆风云',
1765
- docs: 'https://docs.rsshub.app/multimedia.html#javbus',
1766
- source: '/',
1767
- target: '/javbus/western/home',
1768
- },
1769
- {
1770
- title: '分类 / 欧陆风云',
1771
- docs: 'https://docs.rsshub.app/multimedia.html#javbus',
1772
- source: '/genre/:gid',
1773
- target: '/javbus/western/genre/:gid',
1774
- },
1775
- {
1776
- title: '演员 / 欧陆风云',
1777
- docs: 'https://docs.rsshub.app/multimedia.html#javbus',
1778
- source: '/star/:sid',
1779
- target: '/javbus/western/star/:sid',
1780
- },
1781
- {
1782
- title: '系列 / 欧陆风云',
1783
- docs: 'https://docs.rsshub.app/multimedia.html#javbus',
1784
- source: '/series/:seriesid',
1785
- target: '/javbus/western/series/:seriesid',
1786
- },
1787
- ],
1788
- },
1789
1661
  'onejav.com': {
1790
1662
  _name: 'OneJAV BT',
1791
1663
  '.': [
@@ -1977,18 +1849,6 @@ module.exports = {
1977
1849
  },
1978
1850
  ],
1979
1851
  },
1980
- 'lofter.com': {
1981
- _name: 'Lofter',
1982
- www: [
1983
- {
1984
- title: '话题 (标签)',
1985
- docs: 'https://docs.rsshub.app/social-media.html#lofter',
1986
- source: ['/tag/:name', '/tag/:name/:type'],
1987
- target: (params) => `/lofter/tag/${params.name}/${params.type || ''}`,
1988
- },
1989
- ],
1990
- },
1991
-
1992
1852
  'yuque.com': {
1993
1853
  _name: '语雀',
1994
1854
  www: [
@@ -2095,17 +1955,6 @@ module.exports = {
2095
1955
  },
2096
1956
  ],
2097
1957
  },
2098
- 'ems.com.cn': {
2099
- _name: '中国邮政速递物流',
2100
- www: [
2101
- {
2102
- title: '新闻',
2103
- docs: 'https://docs.rsshub.app/other.html#zhong-guo-you-zheng-su-di-wu-liu',
2104
- source: '/aboutus/xin_wen_yu_shi_jian.html',
2105
- target: '/ems/news',
2106
- },
2107
- ],
2108
- },
2109
1958
  'popiapp.cn': {
2110
1959
  _name: 'Popi 提问箱',
2111
1960
  www: [
@@ -2169,17 +2018,6 @@ module.exports = {
2169
2018
  },
2170
2019
  ],
2171
2020
  },
2172
- 'picuki.com': {
2173
- _name: 'Picuki',
2174
- www: [
2175
- {
2176
- title: '用户',
2177
- docs: 'https://docs.rsshub.app/social-media.html#picuki-yong-hu',
2178
- source: '/profile/:id',
2179
- target: '/picuki/profile/:id',
2180
- },
2181
- ],
2182
- },
2183
2021
  'jjmhw.cc': {
2184
2022
  _name: '漫小肆',
2185
2023
  www: [