rsshub 1.0.0-master.fdf137b → 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 (695) hide show
  1. package/lib/config.js +145 -117
  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/protected_router.js +1 -1
  7. package/lib/radar-rules.js +22 -419
  8. package/lib/router.js +118 -202
  9. package/lib/routes/afdian/dynamic.js +2 -1
  10. package/lib/routes/dsndsht23/index.js +2 -1
  11. package/lib/routes/ehentai/ehapi.js +16 -6
  12. package/lib/routes/ehentai/favorites.js +14 -7
  13. package/lib/routes/ehentai/search.js +14 -5
  14. package/lib/routes/ehentai/tag.js +14 -5
  15. package/lib/routes/fdroid/apprelease.js +1 -1
  16. package/lib/routes/gov/fmprc/utils.js +6 -10
  17. package/lib/routes/gov/suzhou/doc.js +2 -2
  18. package/lib/routes/gov/suzhou/news.js +28 -23
  19. package/lib/routes/gov/suzhou/utils.js +1 -1
  20. package/lib/routes/hentaimama/videos.js +1 -1
  21. package/lib/routes/instagram/index.js +3 -2
  22. package/lib/routes/instagram/utils.js +4 -3
  23. package/lib/routes/jike/user.js +5 -3
  24. package/lib/routes/lizhi/user.js +1 -1
  25. package/lib/routes/manxiaosi/book.js +1 -1
  26. package/lib/routes/missevan/drama.js +1 -1
  27. package/lib/routes/missevan/latest.js +1 -1
  28. package/lib/routes/mofish/index.js +21 -9
  29. package/lib/routes/mofish/templates/description.art +4 -0
  30. package/lib/routes/ncm/djradio.js +58 -44
  31. package/lib/routes/ncm/templates/djradio-content.art +11 -0
  32. package/lib/routes/nhentai/util.js +2 -2
  33. package/lib/routes/novel/biquge.js +24 -23
  34. package/lib/routes/novel/biqugeinfo.js +26 -26
  35. package/lib/routes/or/index.js +1 -1
  36. package/lib/routes/prestige-av/series.js +3 -6
  37. package/lib/routes/radio/radio.js +1 -1
  38. package/lib/routes/sina/rollnews.js +8 -3
  39. package/lib/routes/tencent/wechat/tgchannel.js +93 -29
  40. package/lib/routes/touhougarakuta/index.js +4 -2
  41. package/lib/routes/touhougarakuta/json2html.js +22 -10
  42. package/lib/routes/universities/bwu/news.js +1 -1
  43. package/lib/routes/universities/bwu/utils.js +14 -17
  44. package/lib/routes/universities/hitwh/today.js +6 -6
  45. package/lib/routes/weibo/timeline.js +87 -122
  46. package/lib/routes/weibo/user.js +20 -3
  47. package/lib/routes/weibo/utils.js +147 -9
  48. package/lib/routes/ximalaya/album.js +2 -2
  49. package/lib/routes/yyets/todayfilelist.js +0 -1
  50. package/lib/routes/zhihu/activities.js +1 -0
  51. package/lib/routes/zhihu/daily.js +1 -0
  52. package/lib/routes/zhihu/daily_section.js +1 -0
  53. package/lib/routes/zhihu/hot.js +3 -2
  54. package/lib/utils/puppeteer.js +1 -1
  55. package/lib/v2/12306/index.js +108 -0
  56. package/lib/v2/12306/maintainer.js +4 -0
  57. package/lib/v2/12306/radar.js +28 -0
  58. package/lib/v2/12306/router.js +4 -0
  59. package/lib/v2/12306/templates/train.art +31 -0
  60. package/lib/{routes → v2}/12306/zxdt.js +0 -0
  61. package/lib/v2/35photo/actual.js +7 -0
  62. package/lib/v2/35photo/author.js +9 -0
  63. package/lib/v2/35photo/genre.js +9 -0
  64. package/lib/v2/35photo/interesting.js +7 -0
  65. package/lib/v2/35photo/maintainer.js +8 -0
  66. package/lib/v2/35photo/map.js +7 -0
  67. package/lib/v2/35photo/new.js +7 -0
  68. package/lib/v2/35photo/radar.js +43 -0
  69. package/lib/v2/35photo/router.js +8 -0
  70. package/lib/v2/35photo/utils.js +42 -0
  71. package/lib/v2/36kr/maintainer.js +7 -0
  72. package/lib/{routes → v2}/36kr/motif.js +2 -1
  73. package/lib/v2/36kr/news.js +56 -0
  74. package/lib/{routes → v2}/36kr/newsflashes.js +2 -1
  75. package/lib/v2/36kr/radar.js +37 -0
  76. package/lib/v2/36kr/router.js +7 -0
  77. package/lib/{routes → v2}/36kr/search/article.js +3 -2
  78. package/lib/{routes → v2}/36kr/user.js +2 -1
  79. package/lib/v2/50forum/maintainer.js +3 -0
  80. package/lib/v2/50forum/radar.js +13 -0
  81. package/lib/v2/50forum/router.js +3 -0
  82. package/lib/v2/50forum/zhuanjia.js +51 -0
  83. package/lib/v2/52hrtt/index.js +57 -0
  84. package/lib/v2/52hrtt/maintainer.js +4 -0
  85. package/lib/v2/52hrtt/radar.js +19 -0
  86. package/lib/v2/52hrtt/router.js +4 -0
  87. package/lib/v2/52hrtt/symposium.js +57 -0
  88. package/lib/v2/8kcos/article.js +24 -0
  89. package/lib/v2/8kcos/cat.js +22 -0
  90. package/lib/{routes → v2}/8kcos/const.js +0 -0
  91. package/lib/v2/8kcos/latest.js +23 -0
  92. package/lib/v2/8kcos/maintainer.js +5 -0
  93. package/lib/v2/8kcos/radar.js +25 -0
  94. package/lib/v2/8kcos/router.js +5 -0
  95. package/lib/v2/8kcos/tag.js +23 -0
  96. package/lib/{routes → v2}/95mm/category.js +5 -3
  97. package/lib/v2/95mm/maintainer.js +5 -0
  98. package/lib/v2/95mm/radar.js +25 -0
  99. package/lib/v2/95mm/router.js +5 -0
  100. package/lib/v2/95mm/tab.js +9 -0
  101. package/lib/v2/95mm/tag.js +9 -0
  102. package/lib/v2/95mm/templates/description.art +3 -0
  103. package/lib/v2/95mm/utils.js +59 -0
  104. package/lib/v2/abskoop/index.js +52 -0
  105. package/lib/v2/abskoop/maintainer.js +3 -0
  106. package/lib/v2/abskoop/radar.js +13 -0
  107. package/lib/v2/abskoop/router.js +3 -0
  108. package/lib/v2/abskoop/templates/description.art +3 -0
  109. package/lib/v2/ajmide/index.js +1 -1
  110. package/lib/v2/app-center/templates/description.art +1 -1
  111. package/lib/v2/apple/exchange_repair.js +40 -0
  112. package/lib/v2/apple/maintainer.js +3 -0
  113. package/lib/v2/apple/radar.js +13 -0
  114. package/lib/v2/apple/router.js +3 -0
  115. package/lib/{routes/apple → v2}/appstore/gofans.js +3 -3
  116. package/lib/{routes/apple → v2}/appstore/in-app-purchase.js +0 -0
  117. package/lib/v2/appstore/maintainer.js +7 -0
  118. package/lib/{routes/apple → v2}/appstore/price.js +0 -0
  119. package/lib/v2/appstore/radar.js +41 -0
  120. package/lib/v2/appstore/router.js +7 -0
  121. package/lib/{routes/apple → v2}/appstore/update.js +0 -0
  122. package/lib/{routes/apple → v2}/appstore/xianmian.js +3 -2
  123. package/lib/v2/audiobar/latest.js +53 -0
  124. package/lib/v2/audiobar/maintainer.js +3 -0
  125. package/lib/v2/audiobar/radar.js +13 -0
  126. package/lib/v2/audiobar/router.js +3 -0
  127. package/lib/v2/bandcamp/maintainer.js +2 -0
  128. package/lib/v2/bandcamp/radar.js +12 -0
  129. package/lib/v2/bandcamp/router.js +2 -0
  130. package/lib/{routes → v2}/bandcamp/tag.js +0 -0
  131. package/lib/v2/bandcamp/templates/weekly.art +1 -0
  132. package/lib/v2/bandcamp/weekly.js +29 -0
  133. package/lib/v2/bbcnewslabs/maintainer.js +3 -0
  134. package/lib/v2/bbcnewslabs/news.js +32 -0
  135. package/lib/v2/bbcnewslabs/radar.js +13 -0
  136. package/lib/v2/bbcnewslabs/router.js +3 -0
  137. package/lib/v2/bigquant/collections.js +35 -0
  138. package/lib/v2/bigquant/maintainer.js +3 -0
  139. package/lib/v2/bigquant/radar.js +13 -0
  140. package/lib/v2/bigquant/router.js +3 -0
  141. package/lib/{routes → v2}/bilibili/app.js +0 -0
  142. package/lib/{routes → v2}/bilibili/article.js +1 -0
  143. package/lib/{routes → v2}/bilibili/audio.js +0 -0
  144. package/lib/{routes → v2}/bilibili/bangumi.js +0 -0
  145. package/lib/{routes → v2}/bilibili/blackboard.js +0 -0
  146. package/lib/{routes → v2}/bilibili/cache.js +17 -0
  147. package/lib/{routes → v2}/bilibili/coin.js +0 -0
  148. package/lib/{routes → v2}/bilibili/danmaku.js +0 -0
  149. package/lib/{routes → v2}/bilibili/dynamic.js +1 -0
  150. package/lib/{routes → v2}/bilibili/fav.js +0 -0
  151. package/lib/{routes → v2}/bilibili/followers.js +0 -0
  152. package/lib/{routes → v2}/bilibili/followings.js +0 -0
  153. package/lib/{routes → v2}/bilibili/followings_article.js +0 -0
  154. package/lib/{routes → v2}/bilibili/followings_dynamic.js +0 -0
  155. package/lib/{routes → v2}/bilibili/followings_video.js +0 -0
  156. package/lib/{routes → v2}/bilibili/linkNews.js +0 -0
  157. package/lib/{routes → v2}/bilibili/liveArea.js +0 -0
  158. package/lib/{routes → v2}/bilibili/liveRoom.js +0 -0
  159. package/lib/{routes → v2}/bilibili/liveSearch.js +0 -0
  160. package/lib/{routes → v2}/bilibili/mallIP.js +0 -0
  161. package/lib/{routes → v2}/bilibili/mallNew.js +0 -0
  162. package/lib/{routes → v2}/bilibili/manga_followings.js +0 -0
  163. package/lib/{routes → v2}/bilibili/manga_update.js +0 -0
  164. package/lib/v2/bilibili/online.js +25 -0
  165. package/lib/{routes → v2}/bilibili/page.js +0 -0
  166. package/lib/{routes → v2}/bilibili/partion-ranking.js +0 -0
  167. package/lib/{routes → v2}/bilibili/partion.js +0 -0
  168. package/lib/v2/bilibili/radar.js +105 -0
  169. package/lib/{routes → v2}/bilibili/ranking.js +0 -0
  170. package/lib/{routes → v2}/bilibili/readlist.js +0 -0
  171. package/lib/{routes → v2}/bilibili/reply.js +0 -0
  172. package/lib/v2/bilibili/router.js +39 -0
  173. package/lib/{routes → v2}/bilibili/topic.js +0 -0
  174. package/lib/{routes → v2}/bilibili/userChannel.js +0 -0
  175. package/lib/{routes → v2}/bilibili/userFav.js +0 -0
  176. package/lib/{routes → v2}/bilibili/user_bangumi.js +0 -0
  177. package/lib/{routes → v2}/bilibili/utils.js +0 -0
  178. package/lib/{routes → v2}/bilibili/video.js +3 -1
  179. package/lib/{routes → v2}/bilibili/vsearch.js +0 -0
  180. package/lib/{routes → v2}/bilibili/weekly_recommend.js +0 -0
  181. package/lib/v2/bitbucket/commits.js +40 -0
  182. package/lib/v2/bitbucket/maintainer.js +4 -0
  183. package/lib/v2/bitbucket/radar.js +19 -0
  184. package/lib/v2/bitbucket/router.js +4 -0
  185. package/lib/v2/bitbucket/tags.js +40 -0
  186. package/lib/v2/bitmovin/blog.js +33 -0
  187. package/lib/v2/bitmovin/maintainer.js +3 -0
  188. package/lib/v2/bitmovin/radar.js +13 -0
  189. package/lib/v2/bitmovin/router.js +3 -0
  190. package/lib/{routes/universities → v2}/bjfu/grs.js +0 -0
  191. package/lib/v2/bjfu/it/index.js +49 -0
  192. package/lib/v2/bjfu/it/utils.js +64 -0
  193. package/lib/{routes/universities → v2}/bjfu/jwc/index.js +0 -0
  194. package/lib/{routes/universities → v2}/bjfu/jwc/utils.js +10 -9
  195. package/lib/{routes/universities → v2}/bjfu/kjc.js +0 -0
  196. package/lib/v2/bjfu/maintainer.js +7 -0
  197. package/lib/{routes/universities → v2}/bjfu/news/index.js +0 -0
  198. package/lib/{routes/universities → v2}/bjfu/news/utils.js +10 -9
  199. package/lib/v2/bjfu/radar.js +45 -0
  200. package/lib/v2/bjfu/router.js +7 -0
  201. package/lib/v2/cdi/index.js +61 -0
  202. package/lib/v2/cdi/maintainer.js +3 -0
  203. package/lib/v2/cdi/radar.js +13 -0
  204. package/lib/v2/cdi/router.js +3 -0
  205. package/lib/{routes → v2}/chaping/banner.js +2 -1
  206. package/lib/v2/chaping/maintainer.js +5 -0
  207. package/lib/{routes → v2}/chaping/news.js +3 -2
  208. package/lib/v2/chaping/newsflash.js +23 -0
  209. package/lib/v2/chaping/radar.js +31 -0
  210. package/lib/v2/chaping/router.js +5 -0
  211. package/lib/v2/ciidbnu/index.js +58 -0
  212. package/lib/v2/ciidbnu/maintainer.js +3 -0
  213. package/lib/v2/ciidbnu/radar.js +13 -0
  214. package/lib/v2/ciidbnu/router.js +3 -0
  215. package/lib/v2/dahecube/index.js +66 -0
  216. package/lib/v2/dahecube/maintainer.js +3 -0
  217. package/lib/v2/dahecube/radar.js +23 -0
  218. package/lib/v2/dahecube/router.js +3 -0
  219. package/lib/v2/dahecube/utils.js +47 -0
  220. package/lib/v2/dayanzai/index.js +58 -0
  221. package/lib/v2/dayanzai/maintainer.js +3 -0
  222. package/lib/v2/dayanzai/radar.js +13 -0
  223. package/lib/v2/dayanzai/router.js +3 -0
  224. package/lib/v2/dhu/jiaowu/news.js +37 -0
  225. package/lib/v2/dhu/maintainer.js +4 -0
  226. package/lib/v2/dhu/radar.js +17 -0
  227. package/lib/v2/dhu/router.js +4 -0
  228. package/lib/v2/dhu/xxgk/news.js +32 -0
  229. package/lib/v2/disinfo/maintainer.js +3 -0
  230. package/lib/v2/disinfo/publications.js +56 -0
  231. package/lib/v2/disinfo/radar.js +13 -0
  232. package/lib/v2/disinfo/router.js +3 -0
  233. package/lib/v2/disinformationindex/blog.js +49 -0
  234. package/lib/v2/disinformationindex/maintainer.js +4 -0
  235. package/lib/v2/disinformationindex/radar.js +19 -0
  236. package/lib/v2/disinformationindex/research.js +45 -0
  237. package/lib/v2/disinformationindex/router.js +4 -0
  238. package/lib/v2/disinformationindex/templates/description.art +7 -0
  239. package/lib/v2/dockerhub/utils.js +1 -1
  240. package/lib/v2/douban/people/wish.js +2 -1
  241. package/lib/{routes → v2}/dtcj/datahero.js +3 -2
  242. package/lib/v2/dtcj/datainsight.js +53 -0
  243. package/lib/v2/dtcj/maintainer.js +4 -0
  244. package/lib/v2/dtcj/radar.js +25 -0
  245. package/lib/v2/dtcj/router.js +4 -0
  246. package/lib/v2/eastday/24.js +90 -0
  247. package/lib/v2/eastday/maintainer.js +2 -0
  248. package/lib/v2/eastday/radar.js +16 -0
  249. package/lib/v2/eastday/router.js +2 -0
  250. package/lib/{routes → v2}/eastday/sh.js +6 -11
  251. package/lib/v2/eastmoney/radar.js +13 -0
  252. package/lib/v2/eastmoney/router.js +3 -0
  253. package/lib/v2/eastmoney/ttjj/user.js +65 -0
  254. package/lib/v2/ems/apple.js +42 -0
  255. package/lib/v2/ems/maintainer.js +4 -0
  256. package/lib/{routes → v2}/ems/news.js +0 -0
  257. package/lib/v2/ems/radar.js +19 -0
  258. package/lib/v2/ems/router.js +4 -0
  259. package/lib/v2/ems/templates/apple.art +6 -0
  260. package/lib/v2/eprice/rss.js +4 -2
  261. package/lib/{routes → v2}/ff14/ff14_global.js +10 -4
  262. package/lib/{routes → v2}/ff14/ff14_zh.js +11 -4
  263. package/lib/v2/ff14/maintainer.js +4 -0
  264. package/lib/v2/ff14/router.js +7 -0
  265. package/lib/v2/ff14/templates/description.art +4 -0
  266. package/lib/{routes → v2}/flyert/creditcard.js +0 -0
  267. package/lib/v2/flyert/maintainer.js +4 -0
  268. package/lib/v2/flyert/preferential.js +48 -0
  269. package/lib/v2/flyert/radar.js +19 -0
  270. package/lib/v2/flyert/router.js +4 -0
  271. package/lib/{routes → v2}/flyert/utils.js +2 -1
  272. package/lib/v2/foresightnews/index.js +88 -0
  273. package/lib/v2/foresightnews/maintainer.js +6 -0
  274. package/lib/v2/foresightnews/radar.js +31 -0
  275. package/lib/v2/foresightnews/router.js +3 -0
  276. package/lib/v2/gcores/category.js +126 -0
  277. package/lib/v2/gcores/maintainer.js +4 -0
  278. package/lib/v2/gcores/radar.js +19 -0
  279. package/lib/v2/gcores/router.js +4 -0
  280. package/lib/v2/gcores/tag.js +126 -0
  281. package/lib/v2/github/comments.js +95 -37
  282. package/lib/v2/github/follower.js +1 -1
  283. package/lib/v2/github/maintainer.js +1 -1
  284. package/lib/v2/github/pulls.js +7 -3
  285. package/lib/v2/github/radar.js +1 -1
  286. package/lib/v2/github/router.js +3 -2
  287. package/lib/v2/github/star.js +1 -1
  288. package/lib/v2/github/starred_repos.js +1 -1
  289. package/lib/v2/gitpod/blog.js +52 -0
  290. package/lib/v2/gitpod/changelog.js +35 -0
  291. package/lib/v2/gitpod/maintainer.js +4 -0
  292. package/lib/v2/gitpod/radar.js +19 -0
  293. package/lib/v2/gitpod/router.js +4 -0
  294. package/lib/v2/gitpod/templates/description.art +2 -0
  295. package/lib/v2/gitpod/utils.js +3 -0
  296. package/lib/v2/gocn/maintainer.js +3 -0
  297. package/lib/v2/gocn/radar.js +13 -0
  298. package/lib/v2/gocn/router.js +3 -0
  299. package/lib/v2/gocn/topics.js +28 -0
  300. package/lib/v2/google/maintainer.js +1 -0
  301. package/lib/v2/google/router.js +1 -0
  302. package/lib/v2/google/sitesRecentChanges.js +52 -0
  303. package/lib/v2/gov/beijing/kw/index.js +1 -1
  304. package/lib/v2/gov/huizhou/zwgk/index.js +58 -0
  305. package/lib/v2/gov/maintainer.js +12 -0
  306. package/lib/v2/gov/mee/ywdt.js +80 -0
  307. package/lib/v2/gov/miit/wjfb.js +61 -0
  308. package/lib/{routes → v2}/gov/miit/wjgs.js +0 -0
  309. package/lib/v2/gov/miit/yjzj.js +59 -0
  310. package/lib/{routes → v2}/gov/miit/zcjd.js +0 -0
  311. package/lib/{routes → v2}/gov/miit/zcwj.js +0 -0
  312. package/lib/{routes → v2/gov}/pbc/goutongjiaoliu.js +5 -4
  313. package/lib/v2/gov/pbc/gzlw.js +27 -0
  314. package/lib/{routes → v2/gov}/pbc/tradeAnnouncement.js +5 -4
  315. package/lib/v2/gov/pbc/utils.js +20 -0
  316. package/lib/v2/gov/pbc/zcyj.js +29 -0
  317. package/lib/v2/gov/radar.js +103 -0
  318. package/lib/v2/gov/router.js +12 -0
  319. package/lib/v2/gov/sichuan/deyang/govpulicinfo.js +115 -0
  320. package/lib/v2/gov/sichuan/deyang/templates/govPublicInfo.art +41 -0
  321. package/lib/{routes → v2}/guancha/headline.js +11 -8
  322. package/lib/{routes → v2}/guancha/index.js +55 -28
  323. package/lib/v2/guancha/maintainer.js +7 -0
  324. package/lib/{routes → v2}/guancha/member.js +30 -15
  325. package/lib/{routes → v2}/guancha/personalpage.js +0 -0
  326. package/lib/v2/guancha/radar.js +49 -0
  327. package/lib/v2/guancha/router.js +7 -0
  328. package/lib/{routes → v2}/guancha/topic.js +14 -13
  329. package/lib/v2/hdu/cs/index.js +57 -0
  330. package/lib/v2/hdu/maintainer.js +3 -0
  331. package/lib/v2/hdu/radar.js +13 -0
  332. package/lib/v2/hdu/router.js +4 -0
  333. package/lib/v2/hellobtc/information.js +51 -0
  334. package/lib/v2/hellobtc/kepu.js +64 -0
  335. package/lib/v2/hellobtc/maintainer.js +6 -0
  336. package/lib/v2/hellobtc/news.js +29 -0
  337. package/lib/v2/hellobtc/radar.js +85 -0
  338. package/lib/v2/hellobtc/router.js +6 -0
  339. package/lib/v2/hellobtc/topic.js +43 -0
  340. package/lib/v2/hellogithub/article.js +47 -0
  341. package/lib/v2/hellogithub/maintainer.js +5 -0
  342. package/lib/v2/hellogithub/month.js +42 -0
  343. package/lib/v2/hellogithub/radar.js +25 -0
  344. package/lib/v2/hellogithub/ranking.js +39 -0
  345. package/lib/v2/hellogithub/router.js +5 -0
  346. package/lib/v2/hizu/index.js +76 -0
  347. package/lib/v2/hizu/maintainer.js +3 -0
  348. package/lib/v2/hizu/radar.js +13 -0
  349. package/lib/v2/hizu/router.js +3 -0
  350. package/lib/v2/ielts/index.js +58 -0
  351. package/lib/v2/ielts/maintainer.js +3 -0
  352. package/lib/v2/ielts/radar.js +13 -0
  353. package/lib/v2/ielts/router.js +3 -0
  354. package/lib/v2/informs/templates/content.art +1 -1
  355. package/lib/v2/iresearch/maintainer.js +3 -0
  356. package/lib/v2/iresearch/radar.js +13 -0
  357. package/lib/v2/iresearch/report.js +60 -0
  358. package/lib/v2/iresearch/router.js +3 -0
  359. package/lib/v2/iresearch/templates/report.art +5 -0
  360. package/lib/{routes → v2}/ithome/index.js +4 -0
  361. package/lib/v2/ithome/maintainer.js +3 -0
  362. package/lib/v2/ithome/radar.js +97 -1
  363. package/lib/{routes → v2}/ithome/ranking.js +0 -0
  364. package/lib/v2/ithome/router.js +3 -0
  365. package/lib/v2/ithome/tag.js +48 -0
  366. package/lib/v2/ixigua/maintainer.js +3 -0
  367. package/lib/v2/ixigua/radar.js +13 -0
  368. package/lib/v2/ixigua/router.js +3 -0
  369. package/lib/v2/ixigua/templates/userVideo.art +5 -0
  370. package/lib/v2/ixigua/userVideo.js +40 -0
  371. package/lib/v2/javbus/index.js +153 -0
  372. package/lib/v2/javbus/maintainer.js +18 -0
  373. package/lib/v2/javbus/radar.js +113 -0
  374. package/lib/v2/javbus/router.js +3 -0
  375. package/lib/v2/javbus/templates/description.art +18 -0
  376. package/lib/v2/javdb/utils.js +1 -1
  377. package/lib/v2/javlibrary/bestrated.js +9 -0
  378. package/lib/v2/javlibrary/bestreviews.js +9 -0
  379. package/lib/v2/javlibrary/genre.js +10 -0
  380. package/lib/v2/javlibrary/maintainer.js +11 -0
  381. package/lib/v2/javlibrary/mostwanted.js +9 -0
  382. package/lib/v2/javlibrary/newentries.js +8 -0
  383. package/lib/v2/javlibrary/newrelease.js +9 -0
  384. package/lib/v2/javlibrary/radar.js +79 -0
  385. package/lib/v2/javlibrary/router.js +19 -0
  386. package/lib/v2/javlibrary/star.js +10 -0
  387. package/lib/v2/javlibrary/templates/description.art +17 -0
  388. package/lib/v2/javlibrary/update.js +8 -0
  389. package/lib/v2/javlibrary/user.js +10 -0
  390. package/lib/v2/javlibrary/utils.js +98 -0
  391. package/lib/v2/kbs/maintainer.js +4 -0
  392. package/lib/v2/kbs/news.js +67 -0
  393. package/lib/v2/kbs/radar.js +19 -0
  394. package/lib/v2/kbs/router.js +4 -0
  395. package/lib/{routes → v2}/kbs/today.js +1 -1
  396. package/lib/v2/liulinblog/itnews.js +23 -0
  397. package/lib/v2/liulinblog/kuaixun.js +17 -0
  398. package/lib/v2/liulinblog/maintainer.js +4 -0
  399. package/lib/v2/liulinblog/radar.js +33 -0
  400. package/lib/v2/liulinblog/router.js +4 -0
  401. package/lib/v2/liulinblog/utils.js +39 -0
  402. package/lib/v2/lkong/forum.js +54 -0
  403. package/lib/v2/lkong/maintainer.js +4 -0
  404. package/lib/v2/lkong/query.js +82 -0
  405. package/lib/v2/lkong/radar.js +19 -0
  406. package/lib/v2/lkong/router.js +4 -0
  407. package/lib/v2/lkong/templates/content.art +18 -0
  408. package/lib/v2/lkong/templates/quote.art +23 -0
  409. package/lib/v2/lkong/thread.js +57 -0
  410. package/lib/v2/lofter/maintainer.js +4 -0
  411. package/lib/v2/lofter/radar.js +17 -0
  412. package/lib/v2/lofter/router.js +4 -0
  413. package/lib/{routes → v2}/lofter/tag.js +4 -4
  414. package/lib/v2/lofter/user.js +52 -0
  415. package/lib/v2/lvv2/maintainer.js +4 -0
  416. package/lib/v2/lvv2/news.js +75 -0
  417. package/lib/v2/lvv2/radar.js +79 -0
  418. package/lib/v2/lvv2/router.js +4 -0
  419. package/lib/v2/lvv2/templates/outlink.art +1 -0
  420. package/lib/v2/lvv2/top.js +77 -0
  421. package/lib/v2/nbd/article.js +50 -0
  422. package/lib/{routes → v2}/nbd/index.js +8 -5
  423. package/lib/v2/nbd/maintainer.js +4 -0
  424. package/lib/v2/nbd/radar.js +19 -0
  425. package/lib/v2/nbd/router.js +4 -0
  426. package/lib/v2/nikkei-cn/index.js +10 -5
  427. package/lib/v2/njnu/ceai/ceai.js +44 -0
  428. package/lib/v2/njnu/ceai/utils.js +55 -0
  429. package/lib/v2/njnu/jwc/jwc.js +43 -0
  430. package/lib/v2/njnu/jwc/utils.js +59 -0
  431. package/lib/v2/njnu/maintainer.js +4 -0
  432. package/lib/v2/njnu/radar.js +21 -0
  433. package/lib/v2/njnu/router.js +4 -0
  434. package/lib/v2/njupt/jwc.js +90 -0
  435. package/lib/v2/njupt/maintainer.js +3 -0
  436. package/lib/v2/njupt/radar.js +20 -0
  437. package/lib/v2/njupt/router.js +3 -0
  438. package/lib/v2/nltimes/maintainer.js +3 -0
  439. package/lib/v2/nltimes/news.js +89 -0
  440. package/lib/v2/nltimes/radar.js +19 -0
  441. package/lib/v2/nltimes/router.js +3 -0
  442. package/lib/v2/nogizaka46/blog.js +29 -0
  443. package/lib/v2/nogizaka46/maintainer.js +4 -0
  444. package/lib/v2/nogizaka46/news.js +33 -0
  445. package/lib/v2/nogizaka46/radar.js +21 -0
  446. package/lib/v2/nogizaka46/router.js +4 -0
  447. package/lib/{routes → v2}/nowcoder/discuss.js +17 -22
  448. package/lib/v2/nowcoder/experience.js +48 -0
  449. package/lib/{routes → v2}/nowcoder/jobcenter.js +0 -0
  450. package/lib/v2/nowcoder/maintainer.js +7 -0
  451. package/lib/v2/nowcoder/radar.js +40 -0
  452. package/lib/{routes → v2}/nowcoder/recommend.js +1 -1
  453. package/lib/v2/nowcoder/router.js +7 -0
  454. package/lib/{routes → v2}/nowcoder/schedule.js +4 -3
  455. package/lib/v2/ntdtv/channel.js +44 -0
  456. package/lib/v2/ntdtv/maintainer.js +3 -0
  457. package/lib/v2/ntdtv/radar.js +13 -0
  458. package/lib/v2/ntdtv/router.js +3 -0
  459. package/lib/v2/odaily/post.js +10 -8
  460. package/lib/v2/odaily/utils.js +1 -1
  461. package/lib/v2/oilchem/index.js +67 -0
  462. package/lib/v2/oilchem/maintainer.js +3 -0
  463. package/lib/v2/oilchem/radar.js +11 -0
  464. package/lib/v2/oilchem/router.js +3 -0
  465. package/lib/v2/oilchem/routes.js +671 -0
  466. package/lib/v2/orcid/index.js +54 -0
  467. package/lib/v2/orcid/maintainer.js +3 -0
  468. package/lib/v2/orcid/radar.js +13 -0
  469. package/lib/v2/orcid/router.js +3 -0
  470. package/lib/v2/orcid/templates/description.art +3 -0
  471. package/lib/v2/oup/index.js +53 -0
  472. package/lib/v2/oup/maintainer.js +3 -0
  473. package/lib/v2/oup/radar.js +13 -0
  474. package/lib/v2/oup/router.js +3 -0
  475. package/lib/v2/oup/templates/article.art +6 -0
  476. package/lib/v2/panewslab/column.js +60 -0
  477. package/lib/v2/panewslab/index.js +56 -0
  478. package/lib/v2/panewslab/maintainer.js +6 -0
  479. package/lib/v2/panewslab/newsflash.js +35 -0
  480. package/lib/v2/panewslab/radar.js +31 -0
  481. package/lib/v2/panewslab/router.js +6 -0
  482. package/lib/v2/panewslab/topic.js +55 -0
  483. package/lib/v2/picuki/maintainer.js +3 -0
  484. package/lib/v2/picuki/profile.js +167 -0
  485. package/lib/v2/picuki/radar.js +13 -0
  486. package/lib/v2/picuki/router.js +3 -0
  487. package/lib/v2/picuki/templates/post.art +7 -0
  488. package/lib/v2/polkaworld/home.js +24 -0
  489. package/lib/v2/polkaworld/maintainer.js +3 -0
  490. package/lib/v2/polkaworld/radar.js +13 -0
  491. package/lib/v2/polkaworld/router.js +3 -0
  492. package/lib/v2/qq88/index.js +60 -0
  493. package/lib/v2/qq88/maintainer.js +3 -0
  494. package/lib/v2/qq88/radar.js +13 -0
  495. package/lib/v2/qq88/router.js +3 -0
  496. package/lib/v2/readhub/index.js +106 -0
  497. package/lib/v2/readhub/maintainer.js +3 -0
  498. package/lib/v2/readhub/radar.js +13 -0
  499. package/lib/v2/readhub/router.js +6 -0
  500. package/lib/{routes → v2}/rfa/index.js +11 -6
  501. package/lib/v2/rfa/maintainer.js +3 -0
  502. package/lib/v2/rfa/radar.js +13 -0
  503. package/lib/v2/rfa/router.js +3 -0
  504. package/lib/v2/rsshub/maintainer.js +4 -0
  505. package/lib/v2/rsshub/radar.js +19 -0
  506. package/lib/v2/rsshub/router.js +6 -0
  507. package/lib/{routes → v2}/rsshub/routes.js +5 -4
  508. package/lib/{routes → v2}/rsshub/sponsors.js +0 -0
  509. package/lib/v2/segmentfault/channel.js +46 -0
  510. package/lib/v2/segmentfault/maintainer.js +4 -0
  511. package/lib/v2/segmentfault/radar.js +19 -0
  512. package/lib/v2/segmentfault/router.js +4 -0
  513. package/lib/v2/segmentfault/user.js +43 -0
  514. package/lib/v2/shmeea/maintainer.js +1 -0
  515. package/lib/v2/shmeea/radar.js +6 -0
  516. package/lib/v2/shmeea/router.js +2 -1
  517. package/lib/v2/shmeea/self-study.js +61 -0
  518. package/lib/v2/sicau/dky.js +53 -0
  519. package/lib/v2/sicau/maintainer.js +2 -0
  520. package/lib/v2/sicau/radar.js +14 -0
  521. package/lib/v2/sicau/router.js +2 -0
  522. package/lib/v2/sicau/yan.js +53 -0
  523. package/lib/v2/sohu/maintainer.js +3 -0
  524. package/lib/{routes → v2}/sohu/mp.js +9 -8
  525. package/lib/v2/sohu/radar.js +13 -0
  526. package/lib/v2/sohu/router.js +3 -0
  527. package/lib/v2/soundofhope/channel.js +42 -0
  528. package/lib/v2/soundofhope/maintainer.js +3 -0
  529. package/lib/v2/soundofhope/radar.js +13 -0
  530. package/lib/v2/soundofhope/router.js +3 -0
  531. package/lib/v2/sputniknews/index.js +93 -0
  532. package/lib/v2/sputniknews/maintainer.js +3 -0
  533. package/lib/v2/sputniknews/radar.js +13 -0
  534. package/lib/v2/sputniknews/router.js +3 -0
  535. package/lib/v2/stcn/index.js +71 -0
  536. package/lib/v2/stcn/maintainer.js +6 -0
  537. package/lib/v2/stcn/radar.js +31 -0
  538. package/lib/v2/stcn/router.js +3 -0
  539. package/lib/v2/swpu/bgw.js +58 -0
  540. package/lib/v2/swpu/dean.js +59 -0
  541. package/lib/v2/swpu/dxy.js +61 -0
  542. package/lib/v2/swpu/maintainer.js +6 -0
  543. package/lib/v2/swpu/radar.js +31 -0
  544. package/lib/v2/swpu/router.js +6 -0
  545. package/lib/v2/swpu/scs.js +58 -0
  546. package/lib/v2/swpu/utils.js +22 -0
  547. package/lib/{routes/universities/sysu/sdcs.js → v2/sysu/cse.js} +3 -3
  548. package/lib/v2/sysu/maintainer.js +3 -0
  549. package/lib/v2/sysu/radar.js +13 -0
  550. package/lib/v2/sysu/router.js +3 -0
  551. package/lib/v2/telegram/channel.js +448 -110
  552. package/lib/v2/telegram/maintainer.js +1 -1
  553. package/lib/v2/telegram/router.js +1 -1
  554. package/lib/v2/telegram/templates/video.art +7 -0
  555. package/lib/v2/tencent/maintainer.js +3 -0
  556. package/lib/v2/tencent/qq/sdk/changelog.js +56 -0
  557. package/lib/v2/tencent/radar.js +56 -0
  558. package/lib/v2/tencent/router.js +3 -0
  559. package/lib/v2/test/index.js +1 -0
  560. package/lib/v2/tisi/index.js +38 -0
  561. package/lib/v2/tisi/maintainer.js +3 -0
  562. package/lib/v2/tisi/radar.js +17 -0
  563. package/lib/v2/tisi/router.js +3 -0
  564. package/lib/v2/tokeninsight/blog.js +52 -0
  565. package/lib/v2/tokeninsight/bulletin.js +44 -0
  566. package/lib/v2/tokeninsight/maintainer.js +5 -0
  567. package/lib/v2/tokeninsight/radar.js +25 -0
  568. package/lib/v2/tokeninsight/report.js +52 -0
  569. package/lib/v2/tokeninsight/router.js +5 -0
  570. package/lib/v2/txrjy/fornumtopic.js +72 -0
  571. package/lib/v2/txrjy/maintainer.js +3 -0
  572. package/lib/v2/txrjy/radar.js +17 -0
  573. package/lib/v2/txrjy/router.js +3 -0
  574. package/lib/v2/txrjy/templates/fornumtopic.art +6 -0
  575. package/lib/v2/verfghbw/maintainer.js +3 -0
  576. package/lib/{routes → v2}/verfghbw/press.js +13 -5
  577. package/lib/v2/verfghbw/radar.js +13 -0
  578. package/lib/v2/verfghbw/router.js +3 -0
  579. package/lib/v2/vimeo/category.js +64 -0
  580. package/lib/v2/vimeo/channel.js +72 -0
  581. package/lib/v2/vimeo/radar.js +33 -0
  582. package/lib/v2/vimeo/router.js +5 -0
  583. package/lib/v2/vimeo/templates/description.art +4 -0
  584. package/lib/v2/vimeo/usr-videos.js +76 -0
  585. package/lib/v2/wallhaven/index.js +55 -0
  586. package/lib/v2/wallhaven/maintainer.js +4 -0
  587. package/lib/v2/wallhaven/radar.js +53 -0
  588. package/lib/v2/wallhaven/router.js +4 -0
  589. package/lib/v2/wallstreetcn/live.js +19 -7
  590. package/lib/v2/wallstreetcn/router.js +1 -1
  591. package/lib/v2/wfu/jwc.js +54 -0
  592. package/lib/v2/wfu/maintainer.js +4 -0
  593. package/lib/v2/wfu/news.js +96 -0
  594. package/lib/v2/wfu/radar.js +21 -0
  595. package/lib/v2/wfu/router.js +4 -0
  596. package/lib/v2/whitehouse/briefing-room.js +50 -0
  597. package/lib/v2/whitehouse/maintainer.js +4 -0
  598. package/lib/v2/whitehouse/ostp.js +50 -0
  599. package/lib/v2/whitehouse/radar.js +19 -0
  600. package/lib/v2/whitehouse/router.js +4 -0
  601. package/lib/v2/who/maintainer.js +5 -0
  602. package/lib/v2/who/news-room.js +76 -0
  603. package/lib/{routes → v2}/who/news.js +1 -1
  604. package/lib/v2/who/radar.js +25 -0
  605. package/lib/v2/who/router.js +5 -0
  606. package/lib/{routes → v2}/who/speeches.js +0 -0
  607. package/lib/v2/wikinews/index.js +43 -0
  608. package/lib/v2/wikinews/maintainer.js +3 -0
  609. package/lib/v2/wikinews/radar.js +13 -0
  610. package/lib/v2/wikinews/router.js +4 -0
  611. package/lib/v2/wp-china/maintainer.js +3 -0
  612. package/lib/v2/wp-china/news.js +57 -0
  613. package/lib/v2/wp-china/radar.js +13 -0
  614. package/lib/v2/wp-china/router.js +3 -0
  615. package/lib/{routes → v2}/wsj/index.js +6 -4
  616. package/lib/v2/wsj/maintainer.js +3 -0
  617. package/lib/v2/wsj/radar.js +21 -0
  618. package/lib/v2/wsj/router.js +3 -0
  619. package/lib/v2/wyzxwk/article.js +65 -0
  620. package/lib/v2/wyzxwk/maintainer.js +3 -0
  621. package/lib/v2/wyzxwk/radar.js +13 -0
  622. package/lib/v2/wyzxwk/router.js +3 -0
  623. package/lib/v2/xiaoyuzhou/maintainer.js +4 -0
  624. package/lib/{routes → v2}/xiaoyuzhou/pickup.js +2 -2
  625. package/lib/v2/xiaoyuzhou/podcast.js +36 -0
  626. package/lib/v2/xiaoyuzhou/radar.js +19 -0
  627. package/lib/v2/xiaoyuzhou/router.js +4 -0
  628. package/lib/v2/xmanhua/index.js +74 -0
  629. package/lib/v2/xmanhua/radar.js +13 -0
  630. package/lib/v2/xmanhua/router.js +3 -0
  631. package/lib/v2/youzhiyouxing/maintainer.js +3 -0
  632. package/lib/v2/youzhiyouxing/materials.js +46 -0
  633. package/lib/v2/youzhiyouxing/radar.js +73 -0
  634. package/lib/v2/youzhiyouxing/router.js +3 -0
  635. package/lib/{routes → v2}/zhibo8/forum.js +8 -16
  636. package/lib/v2/zhibo8/maintainer.js +5 -0
  637. package/lib/v2/zhibo8/more.js +82 -0
  638. package/lib/{routes → v2}/zhibo8/post.js +1 -1
  639. package/lib/v2/zhibo8/radar.js +27 -0
  640. package/lib/v2/zhibo8/router.js +5 -0
  641. package/lib/v2/zhubai/index.js +29 -0
  642. package/lib/v2/zhubai/maintainer.js +3 -0
  643. package/lib/v2/zhubai/radar.js +12 -0
  644. package/lib/v2/zhubai/router.js +3 -0
  645. package/lib/views/error.art +4 -4
  646. package/lib/views/rss.art +5 -4
  647. package/package.json +42 -39
  648. package/lib/routes/36kr/news.js +0 -94
  649. package/lib/routes/8kcos/article.js +0 -17
  650. package/lib/routes/8kcos/cat.js +0 -28
  651. package/lib/routes/8kcos/latest.js +0 -27
  652. package/lib/routes/95mm/tab.js +0 -9
  653. package/lib/routes/95mm/tag.js +0 -7
  654. package/lib/routes/95mm/utils.js +0 -51
  655. package/lib/routes/apple/exchange_repair.js +0 -47
  656. package/lib/routes/eastmoney/user.js +0 -30
  657. package/lib/routes/flyert/preferential.js +0 -33
  658. package/lib/routes/gcores/category.js +0 -127
  659. package/lib/routes/gov/mee/gs.js +0 -54
  660. package/lib/routes/iresearch/report.js +0 -63
  661. package/lib/routes/ixigua/userVideo.js +0 -35
  662. package/lib/routes/javbus/genre.js +0 -7
  663. package/lib/routes/javbus/home.js +0 -3
  664. package/lib/routes/javbus/series.js +0 -7
  665. package/lib/routes/javbus/star.js +0 -7
  666. package/lib/routes/javbus/uncensored/genre.js +0 -6
  667. package/lib/routes/javbus/uncensored/home.js +0 -3
  668. package/lib/routes/javbus/uncensored/series.js +0 -7
  669. package/lib/routes/javbus/uncensored/star.js +0 -7
  670. package/lib/routes/javbus/util.js +0 -211
  671. package/lib/routes/javbus/western/genre.js +0 -7
  672. package/lib/routes/javbus/western/home.js +0 -3
  673. package/lib/routes/javbus/western/series.js +0 -7
  674. package/lib/routes/javbus/western/star.js +0 -7
  675. package/lib/routes/javlibrary/bestreviews.js +0 -11
  676. package/lib/routes/javlibrary/stars.js +0 -9
  677. package/lib/routes/javlibrary/users.js +0 -22
  678. package/lib/routes/javlibrary/utils.js +0 -68
  679. package/lib/routes/javlibrary/videos.js +0 -9
  680. package/lib/routes/lkong/forum.js +0 -75
  681. package/lib/routes/lkong/thread.js +0 -56
  682. package/lib/routes/lofter/posts.js +0 -54
  683. package/lib/routes/nbd/article.js +0 -60
  684. package/lib/routes/nogizaka46/news.js +0 -35
  685. package/lib/routes/picuki/profile.js +0 -90
  686. package/lib/routes/readhub/category.js +0 -102
  687. package/lib/routes/segmentfault/channel.js +0 -90
  688. package/lib/routes/segmentfault/user.js +0 -90
  689. package/lib/routes/stcn/data.js +0 -84
  690. package/lib/routes/stcn/kuaixun.js +0 -91
  691. package/lib/routes/stcn/news.js +0 -85
  692. package/lib/routes/universities/njupt/jwc.js +0 -84
  693. package/lib/routes/who/news-room.js +0 -56
  694. package/lib/routes/youzhiyouxing/materials.js +0 -29
  695. package/lib/routes/zhibo8/more.js +0 -45
@@ -0,0 +1,20 @@
1
+ const got = require('@/utils/got');
2
+ const cheerio = require('cheerio');
3
+
4
+ const processItems = async (list, ctx) =>
5
+ await Promise.all(
6
+ list.map((item) =>
7
+ ctx.cache.tryGet(item.link, async () => {
8
+ const detailResponse = await got.post(item.link);
9
+ const content = cheerio.load(detailResponse.data);
10
+
11
+ item.description = content('div.xxy_text').html();
12
+
13
+ return item;
14
+ })
15
+ )
16
+ );
17
+
18
+ module.exports = {
19
+ processItems,
20
+ };
@@ -0,0 +1,29 @@
1
+ const { processItems } = require('./utils');
2
+ const got = require('@/utils/got');
3
+ const cheerio = require('cheerio');
4
+ const { parseDate } = require('@/utils/parse-date');
5
+ const timezone = require('@/utils/timezone');
6
+
7
+ const host = 'http://www.pbc.gov.cn';
8
+
9
+ module.exports = async (ctx) => {
10
+ const url = `${host}/redianzhuanti/118742/4122386/4122510/index.html`;
11
+
12
+ const response = await got.post(url);
13
+ const $ = cheerio.load(response.data);
14
+ const list = $('li.clearfix')
15
+ .map((_index, item) => ({
16
+ title: $(item).find('a').text(),
17
+ link: new URL($(item).find('a').attr('href'), host).href,
18
+ pubDate: timezone(parseDate($(item).find('span.fr').text(), 'YYYY-MM-DD'), +8),
19
+ }))
20
+ .get();
21
+
22
+ const items = await processItems(list, ctx);
23
+
24
+ ctx.state.data = {
25
+ title: '中国人民银行 政策研究',
26
+ link: url,
27
+ item: items,
28
+ };
29
+ };
@@ -330,4 +330,107 @@ module.exports = {
330
330
  },
331
331
  ],
332
332
  },
333
+ 'huizhou.gov.cn': {
334
+ _name: '惠州市人民政府',
335
+ www: [
336
+ {
337
+ title: '政务公开 - 政务要闻',
338
+ docs: 'https://docs.rsshub.app/government.html#guang-yan-an-dong-sheng-xing-xian-ren-min-zheng-zheng-fu-hui-zhou-shi-fu-ren-min-zheng-zheng-fu-zheng-zheng-wu-gong-kai',
339
+ source: ['/zwgk/hzsz/:category'],
340
+ target: (params) => {
341
+ if (params.category === 'zwyw') {
342
+ return '/gov/huizhou/zwgk/zwyw';
343
+ }
344
+ },
345
+ },
346
+ {
347
+ title: '政务公开 - 机关动态',
348
+ docs: 'https://docs.rsshub.app/government.html#guang-yan-an-dong-sheng-xing-xian-ren-min-zheng-zheng-fu-hui-zhou-shi-fu-ren-min-zheng-zheng-fu-zheng-zheng-wu-gong-kai',
349
+ source: ['/zwgk/hzsz/:category'],
350
+ target: (params) => {
351
+ if (params.category === 'jgdt') {
352
+ return '/gov/huizhou/zwgk/jgdt';
353
+ }
354
+ },
355
+ },
356
+ {
357
+ title: '政务公开 - 县区要闻',
358
+ docs: 'https://docs.rsshub.app/government.html#guang-yan-an-dong-sheng-xing-xian-ren-min-zheng-zheng-fu-hui-zhou-shi-fu-ren-min-zheng-zheng-fu-zheng-zheng-wu-gong-kai',
359
+ source: ['/zwgk/hzsz/:category'],
360
+ target: (params) => {
361
+ if (params.category === 'xqyw') {
362
+ return '/gov/huizhou/zwgk/xqyw';
363
+ }
364
+ },
365
+ },
366
+ ],
367
+ },
368
+ 'deyang.gov.cn': {
369
+ _name: '德阳市人民政府',
370
+ '.': [
371
+ {
372
+ title: '德阳市政府公开信息',
373
+ docs: 'https://docs.rsshub.app/government.html#de-yang-shi-fu-ren-min-zheng-zheng-fu',
374
+ source: ['/*'],
375
+ target: '/sichuan/deyang/govpulicinfo/:countyName/:institutionName?',
376
+ },
377
+ ],
378
+ },
379
+ 'miit.gov.cn': {
380
+ _name: '工业和信息化部',
381
+ '.': [
382
+ {
383
+ title: '部门 文件发布',
384
+ docs: 'https://docs.rsshub.app/government.html#zhong-guo-gong-ye-he-xin-xi-hua-bu',
385
+ source: ['/jgsj/:ministry/wjfb/index.html'],
386
+ target: '/miit/wjfb/:ministry',
387
+ },
388
+ {
389
+ title: '征集意见',
390
+ docs: 'https://docs.rsshub.app/government.html#zhong-guo-gong-ye-he-xin-xi-hua-bu',
391
+ source: ['/gzcy/yjzj/index.html'],
392
+ target: '/miit/yjzj',
393
+ },
394
+ ],
395
+ },
396
+ 'mee.gov.cn': {
397
+ _name: '生态环境部',
398
+ www: [
399
+ {
400
+ title: '要闻动态',
401
+ docs: 'https://docs.rsshub.app/government.html#zhong-hua-ren-min-gong-he-guo-sheng-tai-huan-jing-bu',
402
+ source: ['/ywdt/:category'],
403
+ target: '/gov/mee/ywdt/:category',
404
+ },
405
+ ],
406
+ },
407
+ 'pbc.gov.cn': {
408
+ _name: '中国人民银行',
409
+ '.': [
410
+ {
411
+ title: '沟通交流',
412
+ docs: 'https://docs.rsshub.app/finance.html#zhong-guo-ren-min-yin-xing',
413
+ source: ['/goutongjiaoliu/113456/113469/index.html'],
414
+ target: '/gov/pbc/goutongjiaoliu',
415
+ },
416
+ {
417
+ title: '货币政策司公开市场交易公告',
418
+ docs: 'https://docs.rsshub.app/finance.html#zhong-guo-ren-min-yin-xing',
419
+ source: ['/zhengcehuobisi/125207/125213/125431/125475/index.html'],
420
+ target: '/gov/pbc/zhengcehuobisi',
421
+ },
422
+ {
423
+ title: '政策研究',
424
+ docs: 'https://docs.rsshub.app/finance.html#zhong-guo-ren-min-yin-xing',
425
+ source: ['/redianzhuanti/118742/4122386/4122510/index.html'],
426
+ target: '/gov/pbc/zcyj',
427
+ },
428
+ {
429
+ title: '工作论文',
430
+ docs: 'https://docs.rsshub.app/finance.html#zhong-guo-ren-min-yin-xing',
431
+ source: ['/redianzhuanti/118742/4122386/4122692/index.html'],
432
+ target: '/gov/pbc/gzlw',
433
+ },
434
+ ],
435
+ },
333
436
  };
@@ -6,4 +6,16 @@ module.exports = function (router) {
6
6
  router.get('/shanghai/wsjkw/yqtb', require('./shanghai/wsjkw/yqtb'));
7
7
  router.get('/guangdong/tqyb/tfxtq', require('./guangdong/tqyb/tfxtq'));
8
8
  router.get('/guangdong/tqyb/sncsyjxh', require('./guangdong/tqyb/sncsyjxh'));
9
+ router.get('/huizhou/zwgk/:category?', require('./huizhou/zwgk/index'));
10
+ router.get('/sichuan/deyang/govpulicinfo/:countyName/:institutionName?', require('./sichuan/deyang/govpulicinfo'));
11
+ router.get('/miit/wjfb/:ministry', require('./miit/wjfb'));
12
+ router.get('/miit/yjzj', require('./miit/yjzj'));
13
+ router.get('/miit/zcwj', require('./miit/zcwj'));
14
+ router.get('/miit/wjgs', require('./miit/wjgs'));
15
+ router.get('/miit/zcjd', require('./miit/zcjd'));
16
+ router.get('/mee/ywdt/:category?', require('./mee/ywdt'));
17
+ router.get('/pbc/goutongjiaoliu', require('./pbc/goutongjiaoliu'));
18
+ router.get('/pbc/tradeAnnouncement', require('./pbc/tradeAnnouncement'));
19
+ router.get('/pbc/gzlw', require('./pbc/gzlw'));
20
+ router.get('/pbc/zcyj', require('./pbc/zcyj'));
9
21
  };
@@ -0,0 +1,115 @@
1
+ const got = require('@/utils/got');
2
+ const cheerio = require('cheerio');
3
+ const { parseDate } = require('@/utils/parse-date');
4
+ const { art } = require('@/utils/render');
5
+ const path = require('path');
6
+
7
+ const rootUrl = 'http://xxgk.deyang.gov.cn/xxgkml2020';
8
+
9
+ // 地区名称对照表
10
+ const nameDict = {
11
+ 德阳市: 'dys',
12
+ 绵竹市: 'mzs',
13
+ 什邡市: 'sfs',
14
+ 旌阳区: 'jyq',
15
+ 罗江区: 'ljx',
16
+ 广汉市: 'ghs',
17
+ 中江县: 'zjx',
18
+ 高新区: 'gxq',
19
+ };
20
+
21
+ const getInstitutionId = async (ctx, county) => {
22
+ const url = `${rootUrl}/ptlj.jsp?regionName=${county}`;
23
+
24
+ return await ctx.cache.tryGet(`${county}InstitutionId`, async () => {
25
+ const response = await got.get(url);
26
+ const $ = cheerio.load(response.data);
27
+ const dataList = $('#details_content > div > div > div > div:nth-child(4) > ul > li > a');
28
+ const _tmp = {};
29
+ for (let i = 0; i < dataList.length; i++) {
30
+ _tmp[$(dataList[i]).html()] = parseInt($(dataList[i]).attr('href').split('deptId=')[1]);
31
+ }
32
+ return _tmp;
33
+ });
34
+ };
35
+
36
+ const getInfoUrlList = async (county, institutionId) => {
37
+ const url = `${rootUrl}/gklist_iframe.jsp?deptId=${institutionId}&regionName=${county}&pageSize=15`;
38
+ const response = await got.get(url);
39
+ const $ = cheerio.load(response.data);
40
+ const pageNum = parseInt($('#list_content > div > span:nth-child(3)').html().match(/\d*/g)[1]);
41
+ const pageUrlList = [];
42
+
43
+ // 此处建议限制最大pageNum,最大5页,单页15条
44
+ for (let i = 1; i <= Math.min(pageNum, 5); i++) {
45
+ pageUrlList.push(`${rootUrl}/gklist_iframe.jsp?deptId=${institutionId}&regionName=${county}&pageSize=15$pageIndex=${i}`);
46
+ }
47
+ const _tmpList = await Promise.all(
48
+ pageUrlList.map(async (url) => {
49
+ const response = await got.get(url);
50
+ const $ = cheerio.load(response.data);
51
+ const InfoList = $('#list_content > ul > li > a');
52
+ return InfoList.map((item) => `${rootUrl}/${$(InfoList[item]).attr('href')}`);
53
+ })
54
+ );
55
+ let infoUrlList = [];
56
+ for (let i = 0; i < _tmpList.length; i++) {
57
+ infoUrlList = infoUrlList.concat(_tmpList[i].toArray());
58
+ }
59
+ return infoUrlList;
60
+ };
61
+
62
+ const getInfoContent = async (ctx, url) => {
63
+ const infoId = url.split('id=')[1].split('&type')[0];
64
+ return await ctx.cache.tryGet(`govPublicInfo${infoId}`, async () => {
65
+ const response = await got.get(url);
66
+ const $ = cheerio.load(response.data);
67
+ const fileNodes = $('#symbol > div:nth-child(3) > div > a');
68
+ const fileList = [];
69
+ for (let i = 0; i < fileNodes.length; i++) {
70
+ fileList.push({
71
+ name: $(fileNodes[i]).text(),
72
+ url: `${rootUrl}/${$(fileNodes[i]).attr('href')}`,
73
+ });
74
+ }
75
+ const rawDate = $('#symbol > div:nth-child(1) > div:nth-child(3)').text().split('\n')[1].trim();
76
+ return {
77
+ title: $('#headline').text(),
78
+ id: infoId,
79
+ infoNum: $('#symbol > div:nth-child(1) > div:nth-child(2) > span').text().split('\n')[1].trim(),
80
+ pubDate: parseDate(rawDate),
81
+ date: rawDate,
82
+ keyWord: $('#symbol > div:nth-child(2) > div:nth-child(1)').text().slice(8),
83
+ source: $('#symbol > div:nth-child(2) > div:nth-child(3)').text().slice(5),
84
+ content: $('#details_content > div.content').html(),
85
+ file: fileList,
86
+ link: url,
87
+ };
88
+ });
89
+ };
90
+
91
+ module.exports = async (ctx) => {
92
+ const countyName = ctx.params.countyName;
93
+ const county = nameDict[countyName];
94
+ const institutionName = ctx.params.institutionName || '';
95
+ let institutionId = 0;
96
+ if (institutionName) {
97
+ const institutionDict = await getInstitutionId(ctx, county);
98
+ institutionId = institutionDict[institutionName];
99
+ }
100
+
101
+ const infoUrlList = await getInfoUrlList(county, institutionId);
102
+ const items = await Promise.all(infoUrlList.map(async (item) => await getInfoContent(ctx, item)));
103
+
104
+ ctx.state.data = {
105
+ title: `政府公开信息 - ${countyName} ${institutionName}`,
106
+ link: `${rootUrl}/gklist_iframe.jsp?deptId=${institutionId}&regionName=${county}`,
107
+ item: items.map((item) => ({
108
+ title: item.title,
109
+ description: art(path.resolve(__dirname, './templates/govPublicInfo.art'), { item }),
110
+ link: item.link,
111
+ guid: item.id,
112
+ pubDate: item.pubDate,
113
+ })),
114
+ };
115
+ };
@@ -0,0 +1,41 @@
1
+ <table border="1" cellpadding="2" cellspacing="0" align="center">
2
+ <tbody>
3
+ <tr>
4
+ <td>索引号</td>
5
+ <td>{{item.id}}</td>
6
+ </tr>
7
+ <tr>
8
+ <td>文号</td>
9
+ <td>{{item.infoNum}}</td>
10
+ </tr>
11
+ <tr>
12
+ <td>发文日期</td>
13
+ <td>{{item.date}}</td>
14
+ </tr>
15
+ <tr>
16
+ <td>关键词</td>
17
+ <td>{{item.keyWord}}</td>
18
+ </tr>
19
+ <tr>
20
+ <td>信息来源</td>
21
+ <td>{{item.source}}</td>
22
+ </tr>
23
+ {{if item.file.length}}
24
+ <tr>
25
+ <td>附件</td>
26
+ <td>
27
+ {{each item.file}}
28
+ <a href="{{$value.url}}">{{$value.name}}</a><br>
29
+ {{/each}}
30
+ </td>
31
+ </tr>
32
+ {{/if}}
33
+ </tbody>
34
+ </table>
35
+
36
+ <div>
37
+ {{@ item.content}}
38
+ </div>
39
+
40
+
41
+
@@ -1,9 +1,12 @@
1
1
  const got = require('@/utils/got');
2
2
  const cheerio = require('cheerio');
3
+ const timezone = require('@/utils/timezone');
4
+ const { parseDate } = require('@/utils/parse-date');
3
5
 
4
6
  module.exports = async (ctx) => {
5
7
  const rootUrl = 'https://www.guancha.cn';
6
8
  const currentUrl = `${rootUrl}/GuanChaZheTouTiao/list_1.shtml`;
9
+
7
10
  const response = await got({
8
11
  method: 'get',
9
12
  url: currentUrl,
@@ -11,20 +14,20 @@ module.exports = async (ctx) => {
11
14
 
12
15
  const $ = cheerio.load(response.data);
13
16
 
14
- const list = $('.headline-list li .content-headline h3 a')
15
- .map((_, item) => {
17
+ let items = $('.headline-list li .content-headline h3 a')
18
+ .toArray()
19
+ .map((item) => {
16
20
  item = $(item);
17
21
  return {
18
22
  title: item.text(),
19
- link: `${rootUrl}${item.attr('href')}`,
20
23
  description: item.parent().next().html(),
21
- pubDate: new Date(item.parents('div').eq(0).find('span').text()).toUTCString(),
24
+ link: `${rootUrl}${item.attr('href').replace(/\.shtml$/, '_s.shtml')}`,
25
+ pubDate: timezone(parseDate(item.parents('div').first().find('span').text()), +8),
22
26
  };
23
- })
24
- .get();
27
+ });
25
28
 
26
- const items = await Promise.all(
27
- list.map((item) =>
29
+ items = await Promise.all(
30
+ items.map((item) =>
28
31
  ctx.cache.tryGet(item.link, async () => {
29
32
  const detailResponse = await got({
30
33
  method: 'get',
@@ -1,21 +1,42 @@
1
1
  const got = require('@/utils/got');
2
2
  const cheerio = require('cheerio');
3
- const date = require('@/utils/date');
3
+ const timezone = require('@/utils/timezone');
4
+ const { parseDate } = require('@/utils/parse-date');
5
+ const { parseRelativeDate } = require('@/utils/parse-date');
4
6
 
5
7
  const config = {
6
- review: { title: '评论 & 研究', query: '.module-news-main' },
7
- story: { title: '要闻', query: '.img-List' },
8
- fengwen: { title: '风闻', query: '.fengwen-list' },
9
- redian: { title: '热点' },
10
- gundong: { title: '滚动' },
11
- all: { title: '全部' },
12
- home: { title: '首页' },
13
- others: { title: '热点 & 滚动' },
8
+ review: {
9
+ title: '评论 & 研究',
10
+ query: '.module-news-main',
11
+ },
12
+ story: {
13
+ title: '要闻',
14
+ query: '.img-List',
15
+ },
16
+ fengwen: {
17
+ title: '风闻',
18
+ query: '.fengwen-list',
19
+ },
20
+ redian: {
21
+ title: '热点',
22
+ },
23
+ gundong: {
24
+ title: '滚动',
25
+ },
26
+ all: {
27
+ title: '全部',
28
+ },
29
+ home: {
30
+ title: '首页',
31
+ },
32
+ others: {
33
+ title: '热点 & 滚动',
34
+ },
14
35
  };
15
36
 
16
37
  module.exports = async (ctx) => {
17
38
  const total = 10;
18
- const caty = ctx.params.caty || 'all';
39
+ const category = ctx.params.category ?? 'all';
19
40
  const rootUrl = 'https://www.guancha.cn';
20
41
 
21
42
  let newsList = [],
@@ -24,7 +45,7 @@ module.exports = async (ctx) => {
24
45
 
25
46
  // 'review', 'story' and 'fengwen' come from homepage.
26
47
 
27
- if (caty === 'review' || caty === 'story' || caty === 'fengwen' || caty === 'all' || caty === 'home') {
48
+ if (category === 'review' || category === 'story' || category === 'fengwen' || category === 'all' || category === 'home') {
28
49
  const response = await got({
29
50
  method: 'get',
30
51
  url: rootUrl,
@@ -35,54 +56,59 @@ module.exports = async (ctx) => {
35
56
  const fetchPost = (slice) =>
36
57
  slice
37
58
  .find('h4.module-title a')
59
+ .toArray()
38
60
 
39
61
  // Filter some blank links which lead to no contents but 'https://user.guancha.cn'.
40
62
 
41
- .filter((_, item) => $(item).attr('href') !== 'https://user.guancha.cn')
42
- .map((_, item) => {
63
+ .filter((item) => $(item).attr('href') !== 'https://user.guancha.cn')
64
+ .map((item) => {
43
65
  item = $(item);
66
+
44
67
  const link = item.attr('href');
68
+
45
69
  return {
46
70
  title: item.text(),
47
- link: (link.indexOf('http') === 0 ? '' : rootUrl) + link,
71
+ link: `${link.indexOf('http') === 0 ? '' : rootUrl}${link.replace(/\.shtml/, '_s.shtml')}`,
48
72
  };
49
- })
50
- .get();
73
+ });
51
74
 
52
- if (caty === 'all' || caty === 'home') {
75
+ if (category === 'all' || category === 'home') {
53
76
  newsList = fetchPost($(config.review.query))
54
77
  .slice(0, total / 3)
55
78
  .concat(fetchPost($(config.story.query)).slice(0, total / 3), fetchPost($(config.fengwen.query)).slice(0, total / 3));
56
79
  } else {
57
- newsList = fetchPost($(config[caty].query)).slice(0, total);
80
+ newsList = fetchPost($(config[category].query)).slice(0, total);
58
81
  }
59
82
  }
60
83
 
61
84
  // 'redian' and 'gundong' come from api.
62
85
 
63
- if (caty === 'redian' || caty === 'all' || caty === 'others') {
86
+ if (category === 'redian' || category === 'all' || category === 'others') {
64
87
  const response = await got({
65
88
  method: 'get',
66
89
  url: `${rootUrl}/api/redian.htm`,
67
90
  });
91
+
68
92
  redianList = response.data.items
69
93
  .map((item) => ({
70
94
  title: item.TITLE,
71
- link: `${rootUrl}${item.HTTP_URL}`,
95
+ link: `${rootUrl}${item.HTTP_URL.replace(/\.shtml/, '_s.shtml')}`,
72
96
  }))
73
- .slice(0, caty === 'all' ? total / 3 : total);
97
+ .slice(0, category === 'all' ? total / 3 : total);
74
98
  }
75
- if (caty === 'gundong' || caty === 'all' || caty === 'others') {
99
+
100
+ if (category === 'gundong' || category === 'all' || category === 'others') {
76
101
  const response = await got({
77
102
  method: 'get',
78
103
  url: `${rootUrl}/api/gundong.htm`,
79
104
  });
105
+
80
106
  gundongList = response.data.items
81
107
  .map((item) => ({
82
108
  title: item.TITLE,
83
- link: `${rootUrl}${item.HTTP_URL}`,
109
+ link: `${rootUrl}${item.HTTP_URL.replace(/\.shtml/, '_s.shtml')}`,
84
110
  }))
85
- .slice(0, caty === 'all' ? total / 3 : total);
111
+ .slice(0, category === 'all' ? total / 3 : total);
86
112
  }
87
113
 
88
114
  const items = await Promise.all(
@@ -98,8 +124,9 @@ module.exports = async (ctx) => {
98
124
  // => https://user.guancha.cn/main/content?id=399176
99
125
 
100
126
  const jumpMatch = detailResponse.data.match(/user.guancha.cn\/main\/content\?id=(.*)";/);
127
+
101
128
  if (jumpMatch !== null) {
102
- item.link = `https://user.guancha.cn/main/content?id=${jumpMatch[1]}`;
129
+ item.link = `https://user.guancha.cn/main/content?id=${jumpMatch[1]}&page=0`;
103
130
  detailResponse = await got({
104
131
  method: 'get',
105
132
  url: item.link,
@@ -112,9 +139,9 @@ module.exports = async (ctx) => {
112
139
  if (dateMatch === null) {
113
140
  // PubDates of posts in 'fengwen' are in an informal format.
114
141
 
115
- item.pubDate = date(content('.time1').text(), 8);
142
+ item.pubDate = parseRelativeDate(content('.time1').text());
116
143
  } else {
117
- item.pubDate = new Date(dateMatch[1]).toUTCString();
144
+ item.pubDate = timezone(parseDate(dateMatch[1]), +8);
118
145
  }
119
146
 
120
147
  item.description = content('.all-txt').html() || content('.article-txt-content').html();
@@ -125,7 +152,7 @@ module.exports = async (ctx) => {
125
152
  );
126
153
 
127
154
  ctx.state.data = {
128
- title: `观察者网 - ${config[caty].title}`,
155
+ title: `观察者网 - ${config[category].title}`,
129
156
  link: rootUrl,
130
157
  item: items,
131
158
  };
@@ -0,0 +1,7 @@
1
+ module.exports = {
2
+ '/:category?': ['nczitzk', 'Jeason0228'],
3
+ '/headline': ['nczitzk'],
4
+ '/member/:category?': ['nczitzk'],
5
+ '/personalpage/:uid': ['Jeason0228'],
6
+ '/topic/:id/:order?': ['occupy5', 'nczitzk'],
7
+ };
@@ -1,6 +1,8 @@
1
1
  const got = require('@/utils/got');
2
+ const timezone = require('@/utils/timezone');
3
+ const { parseDate } = require('@/utils/parse-date');
2
4
 
3
- const title = {
5
+ const titles = {
4
6
  recommend: '精选',
5
7
  books: '观书堂',
6
8
  courses: '在线课',
@@ -8,10 +10,11 @@ const title = {
8
10
  };
9
11
 
10
12
  module.exports = async (ctx) => {
11
- const caty = ctx.params.caty || 'recommend';
13
+ const category = ctx.params.category ?? 'recommend';
12
14
 
13
15
  const rootUrl = 'https://member.guancha.cn';
14
16
  const apiUrl = `${rootUrl}/zaixianke/home`;
17
+
15
18
  const response = await got({
16
19
  method: 'get',
17
20
  url: apiUrl,
@@ -19,11 +22,11 @@ module.exports = async (ctx) => {
19
22
 
20
23
  let items;
21
24
 
22
- switch (caty) {
25
+ switch (category) {
23
26
  case 'books':
24
27
  items = response.data.data.books.map((item) => ({
25
28
  title: item.title,
26
- link: `${rootUrl}/guanshutang/summary.html?id=${item.id}`,
29
+ link: `${rootUrl}/guanshutang/summary.html?id=${item.id}&page=0`,
27
30
  description: `<img src="${item.cover}"><p>[${item.audio_time}] ${item.desc_short}</p>`,
28
31
  pubDate: new Date(parseInt(item.cover.split('/').pop().substr(0, 10)) * 1000).toUTCString(),
29
32
  }));
@@ -51,20 +54,32 @@ module.exports = async (ctx) => {
51
54
  break;
52
55
 
53
56
  default:
54
- items = response.data.data[caty].map((item) => ({
55
- title: item.title,
56
- link: item.jump_url,
57
- author: item.author_name,
58
- description: `<img src="${item.big_pic}"><p>${item.summary}</p>`,
59
- enclosure_url: item.media_url,
60
- enclosure_length: item.media_size,
61
- enclosure_type: 'audio/mpeg',
62
- pubDate: new Date(item.created_at * 1000).toUTCString(),
63
- }));
57
+ items = response.data.data[category].map((item) => {
58
+ let timeArray = item.media_time && item.media_time.trim().split(/\D+/, 3);
59
+ timeArray = timeArray && timeArray.filter((item) => item !== '');
60
+ let itunes_duration;
61
+ if (timeArray) {
62
+ itunes_duration = 0;
63
+ itunes_duration += timeArray.length >= 1 ? parseInt(timeArray.slice(-1)) : 0;
64
+ itunes_duration += timeArray.length >= 2 ? parseInt(timeArray.slice(-2)) * 60 : 0;
65
+ itunes_duration += timeArray.length >= 3 ? parseInt(timeArray.slice(-3)) * 60 * 60 : 0;
66
+ }
67
+ return {
68
+ title: item.title,
69
+ link: item.jump_url,
70
+ author: item.author_name,
71
+ description: `<img src="${item.big_pic}"><p>${item.summary}</p>`,
72
+ enclosure_url: item.media_url,
73
+ enclosure_length: item.media_size,
74
+ itunes_duration,
75
+ enclosure_type: 'audio/mpeg',
76
+ pubDate: isNaN(+item.created_at) ? timezone(parseDate(item.created_at), +8) : parseDate(item.created_at * 1000),
77
+ };
78
+ });
64
79
  }
65
80
 
66
81
  ctx.state.data = {
67
- title: `观学院 - ${title[caty]}`,
82
+ title: `观学院 - ${titles[category]}`,
68
83
  link: `${rootUrl}/index.html`,
69
84
  item: items,
70
85
  };
File without changes