rsshub 1.0.0-master.f7add90 → 1.0.0-master.f7bfacc

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 (474) hide show
  1. package/README.md +0 -8
  2. package/lib/app.js +2 -0
  3. package/lib/config.js +17 -1
  4. package/lib/middleware/cache/memory.js +2 -2
  5. package/lib/middleware/template.js +14 -1
  6. package/lib/radar-rules.js +0 -76
  7. package/lib/radar.js +22 -3
  8. package/lib/router.js +27 -30
  9. package/lib/routes/axis-studios/work.js +0 -0
  10. package/lib/routes/blow-studio/work.js +0 -0
  11. package/lib/routes/blur-studio/index.js +0 -0
  12. package/lib/routes/digic-pictures/index.js +0 -0
  13. package/lib/routes/gov/hunan/notice.js +1 -1
  14. package/lib/routes/method-studios/index.js +0 -0
  15. package/lib/routes/ps/product.js +0 -0
  16. package/lib/routes/unit-image/films.js +0 -0
  17. package/lib/static/logo.png +0 -0
  18. package/lib/utils/puppeteer.js +2 -2
  19. package/lib/utils/request-wrapper.js +2 -2
  20. package/lib/v2/141jav/index.js +71 -0
  21. package/lib/v2/141jav/maintainer.js +3 -0
  22. package/lib/v2/141jav/radar.js +40 -0
  23. package/lib/v2/141jav/router.js +3 -0
  24. package/lib/v2/141jav/templates/description.art +47 -0
  25. package/lib/v2/141ppv/index.js +71 -0
  26. package/lib/v2/141ppv/maintainer.js +3 -0
  27. package/lib/v2/141ppv/radar.js +40 -0
  28. package/lib/v2/141ppv/router.js +3 -0
  29. package/lib/v2/141ppv/templates/description.art +47 -0
  30. package/lib/v2/3dmgame/game.js +39 -0
  31. package/lib/v2/3dmgame/maintainer.js +4 -0
  32. package/lib/v2/3dmgame/news_center.js +42 -0
  33. package/lib/v2/3dmgame/radar.js +19 -0
  34. package/lib/v2/3dmgame/router.js +4 -0
  35. package/lib/v2/3dmgame/utils.js +30 -0
  36. package/lib/v2/4ksj/forum.js +128 -0
  37. package/lib/v2/4ksj/maintainer.js +3 -0
  38. package/lib/v2/4ksj/radar.js +13 -0
  39. package/lib/v2/4ksj/router.js +3 -0
  40. package/lib/v2/4ksj/templates/description.art +56 -0
  41. package/lib/v2/5eplay/index.js +100 -0
  42. package/lib/v2/5eplay/maintainer.js +3 -0
  43. package/lib/v2/5eplay/radar.js +13 -0
  44. package/lib/v2/5eplay/router.js +3 -0
  45. package/lib/v2/5eplay/utils.js +35 -0
  46. package/lib/v2/aeon/category.js +27 -0
  47. package/lib/v2/aeon/maintainer.js +4 -0
  48. package/lib/v2/aeon/radar.js +19 -0
  49. package/lib/v2/aeon/router.js +4 -0
  50. package/lib/v2/aeon/templates/essay.art +3 -0
  51. package/lib/v2/aeon/templates/video.art +10 -0
  52. package/lib/v2/aeon/type.js +29 -0
  53. package/lib/v2/aeon/utils.js +50 -0
  54. package/lib/v2/aisixiang/column.js +36 -0
  55. package/lib/v2/aisixiang/maintainer.js +6 -0
  56. package/lib/v2/aisixiang/radar.js +29 -0
  57. package/lib/v2/aisixiang/router.js +6 -0
  58. package/lib/v2/aisixiang/thinktank.js +49 -0
  59. package/lib/v2/aisixiang/toplist.js +37 -0
  60. package/lib/v2/aisixiang/utils.js +37 -0
  61. package/lib/v2/aliresearch/information.js +57 -0
  62. package/lib/v2/aliresearch/maintainer.js +3 -0
  63. package/lib/v2/aliresearch/radar.js +13 -0
  64. package/lib/v2/aliresearch/router.js +3 -0
  65. package/lib/v2/amazon/kindle-software-updates.js +1 -0
  66. package/lib/v2/atcoder/radar.js +1 -1
  67. package/lib/v2/bad/index.js +58 -0
  68. package/lib/v2/bad/maintainer.js +3 -0
  69. package/lib/v2/bad/radar.js +13 -0
  70. package/lib/v2/bad/router.js +3 -0
  71. package/lib/v2/baozimh/index.js +1 -1
  72. package/lib/v2/bilibili/cache.js +17 -5
  73. package/lib/v2/bilibili/hotSearch.js +5 -1
  74. package/lib/v2/bilibili/userChannel.js +2 -1
  75. package/lib/v2/bilibili/userCollection.js +3 -1
  76. package/lib/v2/bilibili/utils.js +3 -3
  77. package/lib/v2/bilibili/video-all.js +7 -2
  78. package/lib/v2/bilibili/video.js +1 -1
  79. package/lib/v2/bilibili/vsearch.js +1 -1
  80. package/lib/v2/bjsk/keti.js +54 -0
  81. package/lib/v2/bjsk/maintainer.js +1 -0
  82. package/lib/v2/bjsk/radar.js +8 -0
  83. package/lib/v2/bjsk/router.js +1 -0
  84. package/lib/v2/bmkg/earthquake.js +29 -0
  85. package/lib/v2/bmkg/maintainer.js +4 -0
  86. package/lib/v2/bmkg/news.js +42 -0
  87. package/lib/v2/bmkg/radar.js +19 -0
  88. package/lib/v2/bmkg/router.js +4 -0
  89. package/lib/v2/chinathinktanks/radar.js +1 -1
  90. package/lib/v2/cls/depth.js +34 -32
  91. package/lib/v2/cls/hot.js +38 -29
  92. package/lib/v2/cls/maintainer.js +1 -1
  93. package/lib/v2/cls/radar.js +1 -1
  94. package/lib/v2/cls/telegraph.js +25 -23
  95. package/lib/v2/cls/templates/depth.art +3 -3
  96. package/lib/v2/cls/templates/telegraph.art +5 -5
  97. package/lib/v2/cls/utils.js +12 -6
  98. package/lib/v2/cneb/maintainer.js +4 -0
  99. package/lib/v2/cneb/radar.js +19 -0
  100. package/lib/v2/cneb/router.js +5 -0
  101. package/lib/v2/cneb/yjxw.js +72 -0
  102. package/lib/v2/cneb/yjxx.js +50 -0
  103. package/lib/v2/cnki/author.js +38 -26
  104. package/lib/v2/cnki/maintainer.js +1 -1
  105. package/lib/v2/comicat/maintainer.js +3 -0
  106. package/lib/v2/comicat/radar.js +11 -0
  107. package/lib/v2/comicat/router.js +3 -0
  108. package/lib/v2/comicat/search.js +42 -0
  109. package/lib/v2/coomer/utils.js +3 -1
  110. package/lib/v2/cqgas/maintainer.js +3 -0
  111. package/lib/v2/cqgas/radar.js +13 -0
  112. package/lib/v2/cqgas/router.js +3 -0
  113. package/lib/v2/cqgas/tqtz.js +36 -0
  114. package/lib/v2/cssn/iolaw.js +38 -0
  115. package/lib/v2/cssn/maintainer.js +3 -0
  116. package/lib/v2/cssn/radar.js +11 -0
  117. package/lib/v2/cssn/router.js +3 -0
  118. package/lib/v2/daily/discussed.js +73 -0
  119. package/lib/v2/daily/index.js +83 -0
  120. package/lib/v2/daily/maintainer.js +5 -0
  121. package/lib/v2/daily/radar.js +25 -0
  122. package/lib/v2/daily/router.js +5 -0
  123. package/lib/v2/daily/upvoted.js +77 -0
  124. package/lib/v2/daily/utils.js +39 -0
  125. package/lib/v2/dblp/maintainer.js +3 -0
  126. package/lib/v2/dblp/publication.js +70 -0
  127. package/lib/v2/dblp/radar.js +13 -0
  128. package/lib/v2/dblp/router.js +3 -0
  129. package/lib/v2/deadline/maintainer.js +4 -0
  130. package/lib/v2/deadline/posts.js +53 -0
  131. package/lib/v2/deadline/radar.js +13 -0
  132. package/lib/v2/deadline/router.js +3 -0
  133. package/lib/v2/deadline/templates/desc.art +10 -0
  134. package/lib/v2/devolverdigital/blog.js +50 -0
  135. package/lib/v2/devolverdigital/maintainer.js +3 -0
  136. package/lib/v2/devolverdigital/radar.js +13 -0
  137. package/lib/v2/devolverdigital/router.js +3 -0
  138. package/lib/v2/dhu/maintainer.js +1 -0
  139. package/lib/v2/dhu/radar.js +6 -0
  140. package/lib/v2/dhu/router.js +1 -0
  141. package/lib/v2/dhu/yjs/zs.js +46 -0
  142. package/lib/v2/discord/channel.js +8 -8
  143. package/lib/v2/discord/maintainer.js +1 -1
  144. package/lib/v2/discord/radar.js +2 -2
  145. package/lib/v2/discord/router.js +1 -1
  146. package/lib/v2/domp4/detail.js +26 -0
  147. package/lib/v2/dorohedoro/maintainer.js +3 -0
  148. package/lib/v2/dorohedoro/news.js +69 -0
  149. package/lib/v2/dorohedoro/radar.js +13 -0
  150. package/lib/v2/dorohedoro/router.js +3 -0
  151. package/lib/v2/duozhuayu/maintainer.js +3 -0
  152. package/lib/v2/duozhuayu/radar.js +13 -0
  153. package/lib/v2/duozhuayu/router.js +3 -0
  154. package/lib/{routes → v2}/duozhuayu/search.js +23 -32
  155. package/lib/v2/duozhuayu/templates/book.art +10 -0
  156. package/lib/v2/dxy/maintainer.js +4 -0
  157. package/lib/v2/dxy/profile/thread.js +82 -0
  158. package/lib/v2/dxy/radar.js +21 -0
  159. package/lib/v2/dxy/router.js +4 -0
  160. package/lib/v2/dxy/special.js +79 -0
  161. package/lib/v2/dxy/utils.js +72 -0
  162. package/lib/v2/eastmoney/maintainer.js +1 -0
  163. package/lib/v2/eastmoney/radar.js +8 -0
  164. package/lib/v2/eastmoney/report/index.js +41 -0
  165. package/lib/v2/eastmoney/router.js +2 -1
  166. package/lib/v2/embassy/radar.js +1 -1
  167. package/lib/v2/embassy/supportedList.js +4 -4
  168. package/lib/v2/firecore/index.js +37 -0
  169. package/lib/v2/firecore/maintainer.js +3 -0
  170. package/lib/v2/firecore/radar.js +13 -0
  171. package/lib/v2/firecore/router.js +3 -0
  172. package/lib/v2/flyert/creditcard.js +3 -0
  173. package/lib/v2/flyert/utils.js +14 -8
  174. package/lib/v2/followin/index.js +35 -0
  175. package/lib/v2/followin/kol.js +25 -0
  176. package/lib/v2/followin/maintainer.js +7 -0
  177. package/lib/v2/followin/news.js +21 -0
  178. package/lib/v2/followin/radar.js +37 -0
  179. package/lib/v2/followin/router.js +7 -0
  180. package/lib/v2/followin/tag.js +44 -0
  181. package/lib/v2/followin/templates/thread.art +15 -0
  182. package/lib/v2/followin/topic.js +25 -0
  183. package/lib/v2/followin/utils.js +84 -0
  184. package/lib/v2/freebuf/index.js +41 -0
  185. package/lib/v2/freebuf/maintainer.js +3 -0
  186. package/lib/v2/freebuf/radar.js +13 -0
  187. package/lib/v2/freebuf/router.js +3 -0
  188. package/lib/v2/freecomputerbooks/index.js +41 -13
  189. package/lib/v2/freecomputerbooks/templates/desc.art +3 -0
  190. package/lib/v2/futunn/main.js +67 -0
  191. package/lib/v2/futunn/maintainer.js +3 -0
  192. package/lib/v2/futunn/radar.js +13 -0
  193. package/lib/v2/futunn/router.js +5 -0
  194. package/lib/v2/futunn/templates/description.art +6 -0
  195. package/lib/v2/fzmtr/announcements.js +38 -0
  196. package/lib/v2/fzmtr/maintainer.js +3 -0
  197. package/lib/v2/fzmtr/radar.js +11 -0
  198. package/lib/v2/fzmtr/router.js +3 -0
  199. package/lib/v2/github/gist.js +35 -0
  200. package/lib/v2/github/maintainer.js +1 -0
  201. package/lib/v2/github/radar.js +8 -0
  202. package/lib/v2/github/router.js +1 -0
  203. package/lib/v2/gov/cac/index.js +64 -0
  204. package/lib/v2/gov/ccdi/index.js +1 -1
  205. package/lib/v2/gov/ccdi/utils.js +1 -1
  206. package/lib/v2/gov/chongqing/rsks.js +38 -0
  207. package/lib/v2/gov/maintainer.js +2 -0
  208. package/lib/v2/gov/news/index.js +10 -5
  209. package/lib/v2/gov/radar.js +23 -1
  210. package/lib/v2/gov/router.js +2 -0
  211. package/lib/v2/gq/tw/index.js +1 -1
  212. package/lib/v2/guangzhoumetro/maintainer.js +3 -0
  213. package/lib/v2/guangzhoumetro/news.js +37 -0
  214. package/lib/v2/guangzhoumetro/radar.js +11 -0
  215. package/lib/v2/guangzhoumetro/router.js +3 -0
  216. package/lib/v2/hnu/careers.js +33 -0
  217. package/lib/v2/hnu/maintainer.js +3 -0
  218. package/lib/v2/hnu/radar.js +12 -0
  219. package/lib/v2/hnu/router.js +3 -0
  220. package/lib/v2/hust/aia/news.js +0 -0
  221. package/lib/v2/hust/aia/notice.js +0 -0
  222. package/lib/v2/i-cable/category.js +74 -0
  223. package/lib/v2/i-cable/maintainer.js +3 -0
  224. package/lib/v2/i-cable/radar.js +13 -0
  225. package/lib/v2/i-cable/router.js +3 -0
  226. package/lib/v2/i-cable/templates/desc.art +8 -0
  227. package/lib/v2/ibc/maintainer.js +4 -0
  228. package/lib/{routes/maitta/index.js → v2/ibc/maitta.js} +11 -8
  229. package/lib/v2/ibc/radar.js +19 -0
  230. package/lib/v2/ibc/radio.js +73 -0
  231. package/lib/v2/ibc/router.js +4 -0
  232. package/lib/v2/ibc/templates/description.art +6 -0
  233. package/lib/v2/instructables/projects.js +1 -1
  234. package/lib/v2/ithome/radar.js +3 -3
  235. package/lib/v2/iwara/index.js +36 -24
  236. package/lib/v2/iwara/radar.js +1 -1
  237. package/lib/v2/iwara/subscriptions.js +131 -32
  238. package/lib/v2/iwara/templates/subscriptions.art +1 -1
  239. package/lib/v2/line/publisher.js +1 -1
  240. package/lib/v2/mdpi/maintainer.js +0 -0
  241. package/lib/v2/mdpi/radar.js +0 -0
  242. package/lib/v2/mdpi/router.js +0 -0
  243. package/lib/v2/mdpi/templates/description.art +0 -0
  244. package/lib/v2/medium/following.js +31 -0
  245. package/lib/v2/medium/for-you.js +31 -0
  246. package/lib/v2/medium/graphql.js +190 -0
  247. package/lib/v2/medium/list.js +32 -0
  248. package/lib/v2/medium/maintainer.js +6 -0
  249. package/lib/v2/medium/parse-article.js +60 -0
  250. package/lib/v2/medium/radar.js +23 -0
  251. package/lib/v2/medium/router.js +6 -0
  252. package/lib/v2/medium/tag.js +32 -0
  253. package/lib/v2/mihoyo/maintainer.js +1 -0
  254. package/lib/v2/mihoyo/radar.js +16 -0
  255. package/lib/v2/mihoyo/router.js +1 -0
  256. package/lib/v2/mihoyo/sr/news.js +71 -0
  257. package/lib/v2/mihoyo/templates/ys.art +4 -0
  258. package/lib/v2/mihoyo/ys/news.js +132 -52
  259. package/lib/v2/nationalgeographic/latest-stories.js +56 -0
  260. package/lib/v2/nationalgeographic/maintainer.js +3 -0
  261. package/lib/v2/nationalgeographic/radar.js +13 -0
  262. package/lib/v2/nationalgeographic/router.js +3 -0
  263. package/lib/v2/nationalgeographic/templates/stories.art +44 -0
  264. package/lib/v2/nenu/maintainer.js +4 -0
  265. package/lib/v2/nenu/radar.js +21 -0
  266. package/lib/v2/nenu/router.js +4 -0
  267. package/lib/v2/nenu/sohac.js +60 -0
  268. package/lib/v2/nenu/yjsy.js +64 -0
  269. package/lib/v2/newzmz/index.js +55 -44
  270. package/lib/v2/newzmz/maintainer.js +1 -1
  271. package/lib/v2/newzmz/radar.js +1 -1
  272. package/lib/v2/newzmz/router.js +2 -1
  273. package/lib/v2/newzmz/templates/description.art +7 -0
  274. package/lib/v2/newzmz/view.js +32 -17
  275. package/lib/v2/nhentai/util.js +2 -1
  276. package/lib/v2/nikkei/cn/index.js +2 -2
  277. package/lib/v2/nju/zcc.js +7 -13
  278. package/lib/v2/notateslaapp/maintainer.js +3 -0
  279. package/lib/v2/notateslaapp/radar.js +13 -0
  280. package/lib/v2/notateslaapp/router.js +3 -0
  281. package/lib/{routes/tesla → v2/notateslaapp}/update.js +6 -12
  282. package/lib/v2/notefolio/maintainer.js +3 -0
  283. package/lib/v2/notefolio/radar.js +13 -0
  284. package/lib/v2/notefolio/router.js +3 -0
  285. package/lib/v2/notefolio/search.js +145 -0
  286. package/lib/v2/notefolio/templates/search.art +9 -0
  287. package/lib/v2/notion/database.js +161 -0
  288. package/lib/v2/notion/maintainer.js +3 -0
  289. package/lib/v2/notion/radar.js +13 -0
  290. package/lib/v2/notion/router.js +3 -0
  291. package/lib/v2/nytimes/author.js +1 -1
  292. package/lib/v2/oeeee/app/channel.js +36 -0
  293. package/lib/v2/oeeee/app/reporter.js +30 -0
  294. package/lib/v2/oeeee/maintainer.js +5 -0
  295. package/lib/v2/oeeee/radar.js +12 -0
  296. package/lib/v2/oeeee/router.js +5 -0
  297. package/lib/v2/oeeee/templates/description.art +7 -0
  298. package/lib/v2/oeeee/utils.js +41 -0
  299. package/lib/v2/oeeee/web.js +36 -0
  300. package/lib/v2/openai/blog.js +3 -56
  301. package/lib/v2/openai/common.js +72 -0
  302. package/lib/v2/openai/maintainer.js +1 -0
  303. package/lib/v2/openai/radar.js +8 -0
  304. package/lib/v2/openai/research.js +32 -0
  305. package/lib/v2/openai/router.js +1 -0
  306. package/lib/v2/pumc/maintainer.js +3 -0
  307. package/lib/v2/pumc/mdadmission.js +62 -0
  308. package/lib/v2/pumc/radar.js +13 -0
  309. package/lib/v2/pumc/router.js +3 -0
  310. package/lib/v2/rattibha/maintainer.js +3 -0
  311. package/lib/v2/rattibha/radar.js +13 -0
  312. package/lib/v2/rattibha/router.js +3 -0
  313. package/lib/v2/rattibha/user.js +45 -0
  314. package/lib/v2/readhub/index.js +1 -1
  315. package/lib/{routes → v2}/right/forum.js +21 -23
  316. package/lib/v2/right/maintainer.js +3 -0
  317. package/lib/v2/right/radar.js +13 -0
  318. package/lib/v2/right/router.js +3 -0
  319. package/lib/v2/rsshub/radar.js +2 -2
  320. package/lib/v2/sdust/maintainer.js +3 -0
  321. package/lib/v2/sdust/radar.js +13 -0
  322. package/lib/v2/sdust/router.js +3 -0
  323. package/lib/v2/sdust/yjsy/zhaosheng.js +52 -0
  324. package/lib/v2/sehuatang/maintainer.js +1 -0
  325. package/lib/v2/sehuatang/router.js +1 -0
  326. package/lib/v2/sehuatang/user.js +113 -0
  327. package/lib/v2/shiep/config.js +64 -0
  328. package/lib/v2/shiep/index.js +13 -34
  329. package/lib/v2/shiep/radar.js +303 -15
  330. package/lib/v2/shuiguopai/index.js +1 -1
  331. package/lib/v2/sina/chuangshiji.js +17 -0
  332. package/lib/v2/sina/discovery.js +32 -0
  333. package/lib/v2/sina/finance/china.js +25 -0
  334. package/lib/v2/sina/finance/stock/usstock.js +37 -0
  335. package/lib/v2/sina/maintainer.js +8 -0
  336. package/lib/v2/sina/radar.js +49 -0
  337. package/lib/v2/sina/rollnews.js +31 -0
  338. package/lib/v2/sina/router.js +8 -0
  339. package/lib/v2/sina/sports.js +43 -0
  340. package/lib/v2/sina/templates/slide.art +3 -0
  341. package/lib/v2/sina/templates/video.art +5 -0
  342. package/lib/v2/sina/utils.js +104 -0
  343. package/lib/v2/sony/downloads.js +1 -0
  344. package/lib/v2/springer/maintainer.js +0 -0
  345. package/lib/v2/springer/radar.js +0 -0
  346. package/lib/v2/springer/router.js +0 -0
  347. package/lib/v2/springer/templates/description.art +0 -0
  348. package/lib/v2/sspai/radar.js +1 -1
  349. package/lib/v2/stbu/jsjxy.js +51 -0
  350. package/lib/v2/stbu/maintainer.js +4 -0
  351. package/lib/v2/stbu/radar.js +21 -0
  352. package/lib/v2/stbu/router.js +4 -0
  353. package/lib/v2/stbu/xyxw.js +52 -0
  354. package/lib/v2/storyfm/episodes.js +63 -0
  355. package/lib/v2/storyfm/maintainer.js +4 -0
  356. package/lib/v2/storyfm/radar.js +19 -0
  357. package/lib/v2/storyfm/router.js +4 -0
  358. package/lib/v2/storyfm/templates/description.art +6 -0
  359. package/lib/v2/sysu/maintainer.js +1 -0
  360. package/lib/v2/sysu/radar.js +8 -0
  361. package/lib/v2/sysu/router.js +1 -0
  362. package/lib/v2/sysu/ygafz.js +69 -0
  363. package/lib/v2/techpowerup/index.js +69 -0
  364. package/lib/v2/techpowerup/maintainer.js +5 -0
  365. package/lib/v2/techpowerup/radar.js +19 -0
  366. package/lib/v2/techpowerup/review.js +69 -0
  367. package/lib/v2/techpowerup/router.js +4 -0
  368. package/lib/v2/techpowerup/utils.js +84 -0
  369. package/lib/v2/telecompaper/maintainer.js +4 -0
  370. package/lib/{routes → v2}/telecompaper/news.js +1 -0
  371. package/lib/v2/telecompaper/radar.js +15 -0
  372. package/lib/v2/telecompaper/router.js +4 -0
  373. package/lib/v2/tencent/news/author.js +12 -8
  374. package/lib/v2/tiktok/user.js +5 -5
  375. package/lib/v2/tingshuitz/maintainer.js +1 -0
  376. package/lib/v2/tingshuitz/radar.js +11 -0
  377. package/lib/v2/tingshuitz/router.js +1 -0
  378. package/lib/v2/tingshuitz/shenzhen.js +29 -0
  379. package/lib/v2/tingshuitz/templates/shenzhen.art +8 -0
  380. package/lib/v2/tingtingfm/maintainer.js +3 -0
  381. package/lib/v2/tingtingfm/program.js +104 -0
  382. package/lib/v2/tingtingfm/radar.js +13 -0
  383. package/lib/v2/tingtingfm/router.js +3 -0
  384. package/lib/v2/tingtingfm/templates/audio.art +5 -0
  385. package/lib/v2/tingtingfm/utils.js +32 -0
  386. package/lib/v2/twitter/maintainer.js +1 -0
  387. package/lib/v2/twitter/radar.js +10 -0
  388. package/lib/v2/twitter/router.js +1 -0
  389. package/lib/v2/twitter/tweet.js +5 -0
  390. package/lib/v2/twitter/web-api/tweet.js +25 -0
  391. package/lib/v2/twitter/web-api/twitter-api.js +41 -2
  392. package/lib/v2/ustb/maintainer.js +2 -22
  393. package/lib/v2/ustb/radar.js +8 -0
  394. package/lib/v2/ustb/router.js +1 -0
  395. package/lib/{routes/universities → v2}/ustb/tj/news.js +11 -12
  396. package/lib/v2/utgd/category.js +68 -0
  397. package/lib/v2/utgd/maintainer.js +5 -0
  398. package/lib/v2/utgd/radar.js +25 -0
  399. package/lib/v2/utgd/router.js +5 -0
  400. package/lib/v2/utgd/templates/description.art +7 -0
  401. package/lib/v2/utgd/timeline.js +54 -0
  402. package/lib/v2/utgd/topic.js +70 -0
  403. package/lib/v2/v1tx/index.js +41 -22
  404. package/lib/v2/wechat/feeddd.js +12 -3
  405. package/lib/v2/wechat/mp.js +0 -0
  406. package/lib/v2/wechat/radar.js +2 -2
  407. package/lib/v2/weibo/group.js +93 -0
  408. package/lib/v2/weibo/keyword.js +1 -10
  409. package/lib/v2/weibo/maintainer.js +4 -3
  410. package/lib/v2/weibo/router.js +1 -0
  411. package/lib/v2/weibo/super_index.js +1 -10
  412. package/lib/v2/weibo/timeline.js +5 -5
  413. package/lib/v2/weibo/user.js +2 -8
  414. package/lib/v2/weibo/utils.js +15 -3
  415. package/lib/v2/winstall/maintainer.js +3 -0
  416. package/lib/v2/winstall/radar.js +13 -0
  417. package/lib/v2/winstall/router.js +3 -0
  418. package/lib/v2/winstall/templates/desc.art +5 -0
  419. package/lib/v2/winstall/update.js +43 -0
  420. package/lib/v2/wnacg/index.js +1 -1
  421. package/lib/v2/wnacg/templates/manga.art +4 -4
  422. package/lib/v2/wtu/index.js +37 -0
  423. package/lib/v2/wtu/job.js +80 -0
  424. package/lib/v2/wtu/maintainer.js +4 -0
  425. package/lib/v2/wtu/radar.js +22 -0
  426. package/lib/v2/wtu/router.js +4 -0
  427. package/lib/v2/xiaohongshu/maintainer.js +1 -1
  428. package/lib/v2/xiaohongshu/notes.js +16 -0
  429. package/lib/v2/xiaohongshu/router.js +1 -0
  430. package/lib/v2/xiaohongshu/util.js +122 -0
  431. package/lib/v2/yomiuri/maintainer.js +1 -1
  432. package/lib/v2/yomiuri/news.js +50 -100
  433. package/lib/v2/yomiuri/radar.js +3 -3
  434. package/lib/v2/youtube/user.js +1 -1
  435. package/lib/v2/zcool/radar.js +6 -6
  436. package/lib/v2/zhihu/answers.js +13 -9
  437. package/lib/v2/zhihu/radar.js +2 -2
  438. package/lib/v2/zhubai/maintainer.js +1 -0
  439. package/lib/v2/zhubai/radar.js +7 -0
  440. package/lib/v2/zhubai/router.js +1 -0
  441. package/lib/v2/zhubai/templates/description.art +31 -0
  442. package/lib/v2/zhubai/top20.js +57 -0
  443. package/lib/v2/zju/radar.js +1 -1
  444. package/lib/v2/zyw/hot.js +63 -0
  445. package/lib/v2/zyw/maintainer.js +3 -0
  446. package/lib/v2/zyw/radar.js +16 -0
  447. package/lib/v2/zyw/router.js +3 -0
  448. package/lib/views/error.art +7 -3
  449. package/lib/views/rss.art +1 -1
  450. package/lib/views/welcome.art +2 -2
  451. package/package.json +115 -124
  452. package/lib/routes/141jav/141jav.js +0 -37
  453. package/lib/routes/141ppv/141ppv.js +0 -37
  454. package/lib/routes/3dm/game.js +0 -42
  455. package/lib/routes/3dm/news_center.js +0 -54
  456. package/lib/routes/aeon/category.js +0 -70
  457. package/lib/routes/aisixiang/column.js +0 -37
  458. package/lib/routes/aisixiang/ranking.js +0 -37
  459. package/lib/routes/aisixiang/thinktank.js +0 -40
  460. package/lib/routes/aisixiang/utils.js +0 -39
  461. package/lib/routes/cneb/guoneinews.js +0 -27
  462. package/lib/routes/cneb/yjxx.js +0 -36
  463. package/lib/routes/futunn/highlights.js +0 -58
  464. package/lib/routes/icable/category.js +0 -64
  465. package/lib/routes/notefolio/index.js +0 -67
  466. package/lib/routes/rss3/blog.js +0 -46
  467. package/lib/routes/sina/chuangshiji.js +0 -38
  468. package/lib/routes/sina/discovery.js +0 -52
  469. package/lib/routes/sina/finance.js +0 -37
  470. package/lib/routes/sina/rollnews.js +0 -41
  471. package/lib/routes/sina/sports.js +0 -54
  472. package/lib/routes/universities/wtu/index.js +0 -34
  473. /package/lib/{routes → v2}/storyfm/index.js +0 -0
  474. /package/lib/{routes → v2}/telecompaper/search.js +0 -0
package/README.md CHANGED
@@ -33,14 +33,6 @@ RSSHub 是一个开源、简单易用、易于扩展的 RSS 生成器,可以
33
33
 
34
34
  ## Special Thanks
35
35
 
36
- ### Special Sponsors
37
-
38
- <p>
39
- <a href="https://rss3.io/" target="_blank"><img height="50px" src="https://i.imgur.com/vHtI4bz.png"></a>
40
- </p>
41
-
42
- [![](https://opencollective.com/static/images/become_sponsor.svg)](https://docs.rsshub.app/en/support/)
43
-
44
36
  ### Contributors
45
37
 
46
38
  [![](https://opencollective.com/RSSHub/contributors.svg?width=890)](https://github.com/DIYgod/RSSHub/graphs/contributors)
package/lib/app.js CHANGED
@@ -13,6 +13,7 @@ const cache = require('./middleware/cache');
13
13
  const parameter = require('./middleware/parameter');
14
14
  const template = require('./middleware/template');
15
15
  const favicon = require('koa-favicon');
16
+ const serve = require('koa-static');
16
17
  const debug = require('./middleware/debug');
17
18
  const accessControl = require('./middleware/access-control');
18
19
  const antiHotlink = require('./middleware/anti-hotlink');
@@ -37,6 +38,7 @@ app.proxy = true;
37
38
 
38
39
  // favicon
39
40
  app.use(favicon(__dirname + '/favicon.png'));
41
+ app.use(serve(__dirname + '/static'));
40
42
 
41
43
  // global error handing
42
44
  app.use(onerror);
package/lib/config.js CHANGED
@@ -9,6 +9,7 @@ const calculateValue = () => {
9
9
  const twitter_tokens = {};
10
10
  const email_config = {};
11
11
  const discuz_cookies = {};
12
+ const medium_cookies = {};
12
13
 
13
14
  for (const name in envs) {
14
15
  if (name.startsWith('BILIBILI_COOKIE_')) {
@@ -23,6 +24,9 @@ const calculateValue = () => {
23
24
  } else if (name.startsWith('DISCUZ_COOKIE_')) {
24
25
  const cid = name.slice(14);
25
26
  discuz_cookies[cid] = envs[name];
27
+ } else if (name.startsWith('MEDIUM_COOKIE_')) {
28
+ const username = name.slice(14).toLowerCase();
29
+ medium_cookies[username] = envs[name];
26
30
  }
27
31
  }
28
32
 
@@ -194,7 +198,8 @@ const calculateValue = () => {
194
198
  cookie: envs.IG_COOKIE,
195
199
  },
196
200
  iwara: {
197
- cookie: envs.IWARA_COOKIE,
201
+ username: envs.IWARA_USERNAME,
202
+ password: envs.IWARA_PASSWORD,
198
203
  },
199
204
  lastfm: {
200
205
  api_key: envs.LASTFM_API_KEY,
@@ -207,6 +212,10 @@ const calculateValue = () => {
207
212
  accessToken: envs.MASTODON_API_ACCESS_TOKEN,
208
213
  acctDomain: envs.MASTODON_API_ACCT_DOMAIN,
209
214
  },
215
+ medium: {
216
+ cookies: medium_cookies,
217
+ articleCookie: envs.MEDIUM_ARTICLE_COOKIE || '',
218
+ },
210
219
  miniflux: {
211
220
  instance: envs.MINIFLUX_INSTANCE || 'https://reader.miniflux.app',
212
221
  token: envs.MINIFLUX_TOKEN || '',
@@ -225,6 +234,9 @@ const calculateValue = () => {
225
234
  username: envs.NHENTAI_USERNAME,
226
235
  password: envs.NHENTAI_PASSWORD,
227
236
  },
237
+ notion: {
238
+ key: envs.NOTION_TOKEN,
239
+ },
228
240
  pianyuan: {
229
241
  cookie: envs.PIANYUAN_COOKIE,
230
242
  },
@@ -244,6 +256,9 @@ const calculateValue = () => {
244
256
  saraba1st: {
245
257
  cookie: envs.SARABA1ST_COOKIE,
246
258
  },
259
+ sehuatang: {
260
+ cookie: envs.SEHUATANG_COOKIE,
261
+ },
247
262
  scboy: {
248
263
  token: envs.SCBOY_BBS_TOKEN,
249
264
  },
@@ -268,6 +283,7 @@ const calculateValue = () => {
268
283
  weibo: {
269
284
  app_key: envs.WEIBO_APP_KEY,
270
285
  app_secret: envs.WEIBO_APP_SECRET,
286
+ cookies: envs.WEIBO_COOKIES,
271
287
  redirect_url: envs.WEIBO_REDIRECT_URL,
272
288
  },
273
289
  wenku8: {
@@ -1,9 +1,9 @@
1
- const Lru = require('lru-cache');
1
+ const { LRUCache } = require('lru-cache');
2
2
  const config = require('@/config').value;
3
3
 
4
4
  const status = { available: false };
5
5
 
6
- const memoryCache = new Lru({
6
+ const memoryCache = new LRUCache({
7
7
  ttl: config.cache.routeExpire * 1000,
8
8
  max: config.memory.max,
9
9
  });
@@ -1,7 +1,7 @@
1
1
  const { art, json } = require('@/utils/render');
2
2
  const path = require('path');
3
3
  const config = require('@/config').value;
4
- const typeRegex = /\.(atom|rss|debug\.json|json)$/;
4
+ const typeRegex = /\.(atom|rss|debug\.json|json|\d+\.debug\.html)$/;
5
5
  const { collapseWhitespace, convertDateToISO8601 } = require('@/utils/common-utils');
6
6
 
7
7
  module.exports = async (ctx, next) => {
@@ -26,6 +26,19 @@ module.exports = async (ctx, next) => {
26
26
  ctx.body = JSON.stringify({ message: 'plugin does not set debug json' });
27
27
  }
28
28
  }
29
+ if (outputType.endsWith('.debug.html') && config.debugInfo) {
30
+ ctx.set({
31
+ 'Content-Type': 'text/html; charset=UTF-8',
32
+ });
33
+
34
+ const index = parseInt(outputType.match(/(\d+)\.debug\.html$/)[1]);
35
+ if (!(ctx.state.data && ctx.state.data.item && ctx.state.data.item[index])) {
36
+ ctx.body = `ctx.state.data.item[${index}] not found`;
37
+ } else {
38
+ ctx.body = ctx.state.data.item[index].description;
39
+ }
40
+ }
41
+
29
42
  if (outputType === 'json') {
30
43
  ctx.set({ 'Content-Type': 'application/feed+json; charset=UTF-8' });
31
44
  }
@@ -789,82 +789,6 @@ module.exports = {
789
789
  },
790
790
  ],
791
791
  },
792
- '141jav.com': {
793
- _name: '141JAV BT',
794
- '.': [
795
- {
796
- title: '今日种子',
797
- docs: 'https://docs.rsshub.app/multimedia.html#141jav',
798
- source: '/',
799
- target: (params, url, document) => {
800
- const today = document.querySelector('div.card.mb-1.card-overview').getAttribute('data-date').replace(/-/g, '');
801
- return `/141jav/day/${today}`;
802
- },
803
- },
804
- {
805
- title: '今日演员',
806
- docs: 'https://docs.rsshub.app/multimedia.html#141jav',
807
- source: '/',
808
- target: (params, url, document) => {
809
- const star = document.querySelector('div.card-content > div > a').getAttribute('href');
810
- return `/141jav${star}`;
811
- },
812
- },
813
- {
814
- title: '页面种子',
815
- docs: 'https://docs.rsshub.app/multimedia.html#141jav',
816
- source: ['/:type', '/:type/:key', '/:type/:key/:morekey'],
817
- target: (params, url, document) => {
818
- const itype = params.morekey === undefined ? params.type : params.type === 'tag' ? 'tag' : 'day';
819
- let ikey = `${itype === 'day' ? params.type : ''}${params.key || ''}${itype === 'tag' && params.morekey !== undefined ? '%2F' : ''}${params.morekey || ''}`;
820
- if (ikey === '' && itype === 'tag') {
821
- ikey = document.querySelector('div.thumbnail.is-inline > a').getAttribute('href').replace('/tag/', '').replace('/', '%2F');
822
- } else if (ikey === '' && itype === 'actress') {
823
- ikey = document.querySelector('div.card > a').getAttribute('href').replace('/actress/', '');
824
- }
825
- return `/141jav/${itype}/${ikey}`;
826
- },
827
- },
828
- ],
829
- },
830
- '141ppv.com': {
831
- _name: '141ppv BT',
832
- '.': [
833
- {
834
- title: '今日种子',
835
- docs: 'https://docs.rsshub.app/multimedia.html#141pvp',
836
- source: '/',
837
- target: (params, url, document) => {
838
- const today = document.querySelector('div.card.mb-1.card-overview').getAttribute('data-date').replace(/-/g, '');
839
- return `/141ppv/day/${today}`;
840
- },
841
- },
842
- {
843
- title: '今日演员',
844
- docs: 'https://docs.rsshub.app/multimedia.html#141ppv',
845
- source: '/',
846
- target: (params, url, document) => {
847
- const star = document.querySelector('div.card-content > div > a').getAttribute('href');
848
- return `/141ppv${star}`;
849
- },
850
- },
851
- {
852
- title: '页面种子',
853
- docs: 'https://docs.rsshub.app/multimedia.html#141ppv',
854
- source: ['/:type', '/:type/:key', '/:type/:key/:morekey'],
855
- target: (params, url, document) => {
856
- const itype = params.morekey === undefined ? params.type : params.type === 'tag' ? 'tag' : 'day';
857
- let ikey = `${itype === 'day' ? params.type : ''}${params.key || ''}${itype === 'tag' && params.morekey !== undefined ? '%2F' : ''}${params.morekey || ''}`;
858
- if (ikey === '' && itype === 'tag') {
859
- ikey = document.querySelector('div.thumbnail.is-inline > a').getAttribute('href').replace('/tag/', '').replace('/', '%2F');
860
- } else if (ikey === '' && itype === 'actress') {
861
- ikey = document.querySelector('div.card > a').getAttribute('href').replace('/actress/', '');
862
- }
863
- return `/141ppv/${itype}/${ikey}`;
864
- },
865
- },
866
- ],
867
- },
868
792
  'sexinsex.net': {
869
793
  _name: 'sexinsex',
870
794
  '.': [
package/lib/radar.js CHANGED
@@ -43,9 +43,28 @@ const validateRadarRules = (rule, dir) => {
43
43
  if (!item.docs.startsWith('https://docs.rsshub.app/')) {
44
44
  throw Error(`Radar rules for "${host}" in "${dir}" should start with 'https://docs.rsshub.app/'.`);
45
45
  }
46
- if ((Array.isArray(item.source) && item.source.some((s) => s.includes('#') || s.includes('='))) || (typeof item.source === 'string' && (item.source.includes('#') || item.source.includes('=')))) {
47
- // Some will try to match '/some/path?a=1' which is not supported
48
- throw Error(`Radar rules for "${host}" in "${dir}" cannot match URL hash or URL search parameters.`);
46
+ if (Array.isArray(item.source)) {
47
+ if (!item.source.length) {
48
+ // check for []
49
+ throw Error(`Radar rule of "${item.title}" for subdomain "${host}" in "${dir}" should not be empty.`);
50
+ }
51
+ if (item.source.some((s) => s.includes('#') || s.includes('='))) {
52
+ // Some will try to match '/some/path?a=1' which is not supported
53
+ throw Error(`Radar rule of "${item.title}" for subdomain "${host}" in "${dir}" cannot match URL hash or URL search parameters.`);
54
+ }
55
+ if (item.source.some((s) => !s.length)) {
56
+ // check for ['/some/thing', ''] and ['']
57
+ throw Error(`Radar rule of "${item.title}" for subdomain "${host}" in "${dir}" should not be empty.`);
58
+ }
59
+ }
60
+ if (typeof item.source === 'string') {
61
+ if (!item.source.length) {
62
+ // check for ''
63
+ throw Error(`Radar rule of "${item.title}" for subdomain "${host}" in "${dir}" should not be empty.`);
64
+ }
65
+ if (item.source.includes('#') || item.source.includes('=')) {
66
+ throw Error(`Radar rule of "${item.title}" for subdomain "${host}" in "${dir}" cannot match URL hash or URL search parameters.`);
67
+ }
49
68
  }
50
69
  for (const key in item) {
51
70
  if (key !== 'title' && key !== 'docs' && key !== 'source' && key !== 'target') {
package/lib/router.js CHANGED
@@ -242,8 +242,8 @@ router.get('/yande.re/post/popular_recent/:period', lazyloadRouteHandler('./rout
242
242
  // router.get('/nytimes/:lang?', lazyloadRouteHandler('./routes/nytimes/index'));
243
243
 
244
244
  // 3dm
245
- router.get('/3dm/:name/:type', lazyloadRouteHandler('./routes/3dm/game'));
246
- router.get('/3dm/news', lazyloadRouteHandler('./routes/3dm/news_center'));
245
+ // router.get('/3dm/:name/:type', lazyloadRouteHandler('./routes/3dm/game'));
246
+ // router.get('/3dm/news', lazyloadRouteHandler('./routes/3dm/news_center'));
247
247
 
248
248
  // 喜马拉雅
249
249
  router.get('/ximalaya/:type/:id/:all?', lazyloadRouteHandler('./routes/ximalaya/album'));
@@ -748,7 +748,7 @@ router.get('/shu/:type?', lazyloadRouteHandler('./routes/universities/shu/index'
748
748
  router.get('/shu/jwc/:type?', lazyloadRouteHandler('./routes/universities/shu/jwc'));
749
749
 
750
750
  // 北京科技大学天津学院
751
- router.get('/ustb/tj/news/:type?', lazyloadRouteHandler('./routes/universities/ustb/tj/news'));
751
+ // router.get('/ustb/tj/news/:type?', lazyloadRouteHandler('./routes/universities/ustb/tj/news'));
752
752
 
753
753
  // 深圳大学
754
754
  // router.get('/szu/yz/:type?', lazyloadRouteHandler('./routes/universities/szu/yz'));
@@ -1164,7 +1164,7 @@ router.get('/allpoetry/:order?', lazyloadRouteHandler('./routes/allpoetry/order'
1164
1164
  // router.get('/wallstreetcn/live/:channel?', lazyloadRouteHandler('./routes/wallstreetcn/live'));
1165
1165
 
1166
1166
  // 多抓鱼搜索
1167
- router.get('/duozhuayu/search/:wd', lazyloadRouteHandler('./routes/duozhuayu/search'));
1167
+ // router.get('/duozhuayu/search/:wd', lazyloadRouteHandler('./routes/duozhuayu/search'));
1168
1168
 
1169
1169
  // 创业邦
1170
1170
  router.get('/cyzone/author/:id', lazyloadRouteHandler('./routes/cyzone/author'));
@@ -1247,19 +1247,19 @@ router.get('/fitchratings/site/:type', lazyloadRouteHandler('./routes/fitchratin
1247
1247
  // router.get('/mpaypass/main/:type?', lazyloadRouteHandler('./routes/mpaypass/main'));
1248
1248
 
1249
1249
  // 新浪科技探索
1250
- router.get('/sina/discovery/:type', lazyloadRouteHandler('./routes/sina/discovery'));
1250
+ // router.get('/sina/discovery/:type', lazyloadRouteHandler('./routes/sina/discovery'));
1251
1251
 
1252
1252
  // 新浪科技滚动新闻
1253
- router.get('/sina/rollnews', lazyloadRouteHandler('./routes/sina/rollnews'));
1253
+ // router.get('/sina/rollnews', lazyloadRouteHandler('./routes/sina/rollnews'));
1254
1254
 
1255
1255
  // 新浪体育
1256
- router.get('/sina/sports/:type', lazyloadRouteHandler('./routes/sina/sports'));
1256
+ // router.get('/sina/sports/:type', lazyloadRouteHandler('./routes/sina/sports'));
1257
1257
 
1258
1258
  // 新浪专栏创事记
1259
- router.get('/sina/csj', lazyloadRouteHandler('./routes/sina/chuangshiji'));
1259
+ // router.get('/sina/csj', lazyloadRouteHandler('./routes/sina/chuangshiji'));
1260
1260
 
1261
1261
  // 新浪财经-国內
1262
- router.get('/sina/finance', lazyloadRouteHandler('./routes/sina/finance'));
1262
+ // router.get('/sina/finance', lazyloadRouteHandler('./routes/sina/finance'));
1263
1263
 
1264
1264
  // Animen
1265
1265
  router.get('/animen/news/:type', lazyloadRouteHandler('./routes/animen/news'));
@@ -1297,9 +1297,9 @@ router.get('/whalegogo/home', lazyloadRouteHandler('./routes/whalegogo/home'));
1297
1297
  router.get('/whalegogo/portal/:type_id/:tagid?', lazyloadRouteHandler('./routes/whalegogo/portal'));
1298
1298
 
1299
1299
  // 爱思想
1300
- router.get('/aisixiang/column/:id', lazyloadRouteHandler('./routes/aisixiang/column'));
1301
- router.get('/aisixiang/ranking/:type?/:range?', lazyloadRouteHandler('./routes/aisixiang/ranking'));
1302
- router.get('/aisixiang/thinktank/:name/:type?', lazyloadRouteHandler('./routes/aisixiang/thinktank'));
1300
+ // router.get('/aisixiang/column/:id', lazyloadRouteHandler('./routes/aisixiang/column'));
1301
+ // router.get('/aisixiang/ranking/:type?/:range?', lazyloadRouteHandler('./routes/aisixiang/ranking'));
1302
+ // router.get('/aisixiang/thinktank/:name/:type?', lazyloadRouteHandler('./routes/aisixiang/thinktank'));
1303
1303
 
1304
1304
  // Hacker News
1305
1305
  // router.get('/hackernews/:section/:type?', lazyloadRouteHandler('./routes/hackernews/story'));
@@ -1360,7 +1360,7 @@ router.get('/ui-cn/user/:id', lazyloadRouteHandler('./routes/ui-cn/user'));
1360
1360
  router.get('/juesheng', lazyloadRouteHandler('./routes/juesheng'));
1361
1361
 
1362
1362
  // 播客IBCラジオ イヤーマイッタマイッタ
1363
- router.get('/maitta', lazyloadRouteHandler('./routes/maitta'));
1363
+ // router.get('/maitta', lazyloadRouteHandler('./routes/maitta'));
1364
1364
 
1365
1365
  // 一些博客
1366
1366
  // 敬维-以认真的态度做完美的事情: https://jingwei.link/
@@ -1664,7 +1664,7 @@ router.get('/ningmeng/song', lazyloadRouteHandler('./routes/ningmeng/song'));
1664
1664
  router.get('/zzz/:category?/:language?', lazyloadRouteHandler('./routes/zzz'));
1665
1665
 
1666
1666
  // AEON
1667
- router.get('/aeon/:cid', lazyloadRouteHandler('./routes/aeon/category'));
1667
+ // router.get('/aeon/:cid', lazyloadRouteHandler('./routes/aeon/category'));
1668
1668
 
1669
1669
  // AlgoCasts
1670
1670
  router.get('/algocasts', lazyloadRouteHandler('./routes/algocasts/all'));
@@ -1925,7 +1925,7 @@ router.get('/ctfhub/search/:limit?/:form?/:class?/:title?', lazyloadRouteHandler
1925
1925
  router.get('/liwushuo/index', lazyloadRouteHandler('./routes/liwushuo/index.js'));
1926
1926
 
1927
1927
  // 故事fm
1928
- router.get('/storyfm/index', lazyloadRouteHandler('./routes/storyfm/index.js'));
1928
+ // router.get('/storyfm/index', lazyloadRouteHandler('./routes/storyfm/index.js'));
1929
1929
 
1930
1930
  // 中国日报
1931
1931
  router.get('/chinadaily/english/:category', lazyloadRouteHandler('./routes/chinadaily/english.js'));
@@ -2017,8 +2017,8 @@ router.get('/latexstudio/home', lazyloadRouteHandler('./routes/latexstudio/home'
2017
2017
  router.get('/jskou/:type?', lazyloadRouteHandler('./routes/jskou/index'));
2018
2018
 
2019
2019
  // 国家应急广播
2020
- router.get('/cneb/yjxx', lazyloadRouteHandler('./routes/cneb/yjxx'));
2021
- router.get('/cneb/guoneinews', lazyloadRouteHandler('./routes/cneb/guoneinews'));
2020
+ // router.get('/cneb/yjxx', lazyloadRouteHandler('./routes/cneb/yjxx'));
2021
+ // router.get('/cneb/guoneinews', lazyloadRouteHandler('./routes/cneb/guoneinews'));
2022
2022
 
2023
2023
  // 邮箱
2024
2024
  router.get('/mail/imap/:email', lazyloadRouteHandler('./routes/mail/imap'));
@@ -2882,7 +2882,7 @@ router.get('/gov/chinatax/latest', lazyloadRouteHandler('./routes/gov/chinatax/l
2882
2882
  router.get('/lizhi/user/:id', lazyloadRouteHandler('./routes/lizhi/user'));
2883
2883
 
2884
2884
  // 富途牛牛
2885
- router.get('/futunn/highlights', lazyloadRouteHandler('./routes/futunn/highlights'));
2885
+ // router.get('/futunn/highlights', lazyloadRouteHandler('./routes/futunn/highlights'));
2886
2886
 
2887
2887
  // 即刻 migrated to v2
2888
2888
  // router.get('/jike/topic/:id', lazyloadRouteHandler('./routes/jike/topic'));
@@ -3037,17 +3037,17 @@ router.get('/hfut/tzgg', lazyloadRouteHandler('./routes/universities/hfut/tzgg')
3037
3037
  router.get('/onejav/:type/:key?', lazyloadRouteHandler('./routes/onejav/one'));
3038
3038
 
3039
3039
  // 141jav
3040
- router.get('/141jav/:type/:key?', lazyloadRouteHandler('./routes/141jav/141jav'));
3040
+ // router.get('/141jav/:type/:key?', lazyloadRouteHandler('./routes/141jav/141jav'));
3041
3041
 
3042
3042
  // 141ppv
3043
- router.get('/141ppv/:type/:key?', lazyloadRouteHandler('./routes/141ppv/141ppv'));
3043
+ // router.get('/141ppv/:type/:key?', lazyloadRouteHandler('./routes/141ppv/141ppv'));
3044
3044
 
3045
3045
  // CuriousCat
3046
3046
  router.get('/curiouscat/user/:id', lazyloadRouteHandler('./routes/curiouscat/user'));
3047
3047
 
3048
3048
  // Telecompaper
3049
- router.get('/telecompaper/news/:caty/:year?/:country?/:type?', lazyloadRouteHandler('./routes/telecompaper/news'));
3050
- router.get('/telecompaper/search/:keyword?/:company?/:sort?/:period?', lazyloadRouteHandler('./routes/telecompaper/search'));
3049
+ // router.get('/telecompaper/news/:caty/:year?/:country?/:type?', lazyloadRouteHandler('./routes/telecompaper/news'));
3050
+ // router.get('/telecompaper/search/:keyword?/:company?/:sort?/:period?', lazyloadRouteHandler('./routes/telecompaper/search'));
3051
3051
 
3052
3052
  // 水木社区
3053
3053
  router.get('/newsmth/account/:id', lazyloadRouteHandler('./routes/newsmth/account'));
@@ -3232,7 +3232,7 @@ router.get('/mamibuy/:caty?/:age?/:sort?', lazyloadRouteHandler('./routes/mamibu
3232
3232
  router.get('/mercari/:type/:id', lazyloadRouteHandler('./routes/mercari/index'));
3233
3233
 
3234
3234
  // notefolio
3235
- router.get('/notefolio/:caty?/:order?/:time?/:query?', lazyloadRouteHandler('./routes/notefolio/index'));
3235
+ // router.get('/notefolio/:caty?/:order?/:time?/:query?', lazyloadRouteHandler('./routes/notefolio/index'));
3236
3236
 
3237
3237
  // JavDB
3238
3238
  // router.get('/javdb/home/:category?/:sort?/:filter?', lazyloadRouteHandler('./routes/javdb'));
@@ -3459,7 +3459,7 @@ router.get('/zhimap/:categoryUuid?/:recommend?', lazyloadRouteHandler('./routes/
3459
3459
  // router.get('/fantia/user/:id', lazyloadRouteHandler('./routes/fantia/user'));
3460
3460
 
3461
3461
  // i-Cable
3462
- router.get('/icable/:category/:option?', lazyloadRouteHandler('./routes/icable/category'));
3462
+ // router.get('/icable/:category/:option?', lazyloadRouteHandler('./routes/icable/category'));
3463
3463
 
3464
3464
  // ProcessOn
3465
3465
  router.get('/processon/popular/:cate?/:sort?', lazyloadRouteHandler('./routes/processon/popular'));
@@ -3511,7 +3511,7 @@ router.get('/chuapp/index/:category?', lazyloadRouteHandler('./routes/chuapp/ind
3511
3511
  router.get('/deloitte/industries/:category?', lazyloadRouteHandler('./routes/deloitte/industries'));
3512
3512
 
3513
3513
  // 特斯拉系统更新
3514
- router.get('/tesla', lazyloadRouteHandler('./routes/tesla/update'));
3514
+ // router.get('/tesla/ota', lazyloadRouteHandler('./routes/tesla/update'));
3515
3515
 
3516
3516
  // 复旦大学继续教育学院
3517
3517
  router.get('/fudan/cce', lazyloadRouteHandler('./routes/universities/fudan/cce'));
@@ -3719,7 +3719,7 @@ router.get('/thrillist/:tag?', lazyloadRouteHandler('./routes/thrillist/index'))
3719
3719
  router.get('/dxy/vaccine/:province?/:city?/:location?', lazyloadRouteHandler('./routes/dxy/vaccine'));
3720
3720
 
3721
3721
  // Wtu
3722
- router.get('/wtu/:type', lazyloadRouteHandler('./routes/universities/wtu'));
3722
+ // router.get('/wtu/:type', lazyloadRouteHandler('./routes/universities/wtu'));
3723
3723
 
3724
3724
  // 中国庭审公开网
3725
3725
  router.get('/tingshen', lazyloadRouteHandler('./routes/tingshen/tingshen'));
@@ -3979,7 +3979,7 @@ router.get('/fnal/news/:category?', lazyloadRouteHandler('./routes/fnal/news'));
3979
3979
  router.get('/x410/news', lazyloadRouteHandler('./routes/x410/news'));
3980
3980
 
3981
3981
  // 恩山无线论坛
3982
- router.get('/right/forum/:id?', lazyloadRouteHandler('./routes/right/forum'));
3982
+ // router.get('/right/forum/:id?', lazyloadRouteHandler('./routes/right/forum'));
3983
3983
 
3984
3984
  // 香港經濟日報 migrated to v2
3985
3985
  // router.get('/hket/:category?', lazyloadRouteHandler('./routes/hket/index'));
@@ -4024,9 +4024,6 @@ router.get('/sbs/chinese/:category?/:id?/:dialect?/:language?', lazyloadRouteHan
4024
4024
  // QuestMobile
4025
4025
  router.get('/questmobile/report/:category?/:label?', lazyloadRouteHandler('./routes/questmobile/report'));
4026
4026
 
4027
- // RSS3
4028
- router.get('/rss3/blog', lazyloadRouteHandler('./routes/rss3/blog'));
4029
-
4030
4027
  // 星球日报
4031
4028
  // router.get('/odaily/activity', lazyloadRouteHandler('./routes/odaily/activity'));
4032
4029
  // router.get('/odaily/newsflash', lazyloadRouteHandler('./routes/odaily/newsflash'));
File without changes
File without changes
File without changes
File without changes
@@ -3,7 +3,7 @@ const got = require('@/utils/got');
3
3
  module.exports = async (ctx) => {
4
4
  const type = ctx.params.type || 'all';
5
5
  const rssData = {
6
- isType: ctx.params.type ? true : false,
6
+ isType: !!ctx.params.type,
7
7
  Title: `湖南省政府采购网`,
8
8
  Desc: `湖南省政府采购网`,
9
9
  Link: `http://www.ccgp-hunan.gov.cn/page/notice/more.jsp`,
File without changes
File without changes
File without changes
Binary file
@@ -6,7 +6,7 @@ const logger = require('./logger');
6
6
 
7
7
  const options = {
8
8
  args: ['--no-sandbox', '--disable-setuid-sandbox', '--disable-infobars', '--window-position=0,0', '--ignore-certificate-errors', '--ignore-certificate-errors-spki-list', `--user-agent=${config.ua}`],
9
- headless: true,
9
+ headless: 'new',
10
10
  ignoreHTTPSErrors: true,
11
11
  };
12
12
 
@@ -20,7 +20,7 @@ module.exports = async (extraOptions = {}) => {
20
20
  const { addExtra } = require('puppeteer-extra');
21
21
  puppeteer = addExtra(puppeteer);
22
22
 
23
- // workaround for vercel/nft #54 and #283
23
+ // workaround for vercel/nft #54, #283, #304
24
24
  require('puppeteer-extra-plugin-stealth/evasions/chrome.app');
25
25
  require('puppeteer-extra-plugin-stealth/evasions/chrome.csi');
26
26
  require('puppeteer-extra-plugin-stealth/evasions/chrome.loadTimes');
@@ -7,10 +7,10 @@ const https = require('https');
7
7
  let agent = null;
8
8
  if (proxyUri) {
9
9
  if (proxyUri.startsWith('http')) {
10
- const HttpsProxyAgent = require('https-proxy-agent');
10
+ const { HttpsProxyAgent } = require('https-proxy-agent');
11
11
  agent = new HttpsProxyAgent(proxyUri);
12
12
  } else if (proxyUri.startsWith('socks')) {
13
- const SocksProxyAgent = require('socks-proxy-agent').SocksProxyAgent;
13
+ const { SocksProxyAgent } = require('socks-proxy-agent');
14
14
  agent = new SocksProxyAgent(proxyUri);
15
15
  }
16
16
  }
@@ -0,0 +1,71 @@
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
+ module.exports = async (ctx) => {
8
+ const rootUrl = 'https://www.141jav.com';
9
+ const currentUrl = `${rootUrl}${ctx.path}`;
10
+
11
+ const response = await got({
12
+ method: 'get',
13
+ url: currentUrl,
14
+ });
15
+
16
+ const $ = cheerio.load(response.data);
17
+
18
+ if (ctx.path === '/') {
19
+ ctx.redirect(`/141jav${$('.overview').first().attr('href')}`);
20
+ return;
21
+ }
22
+
23
+ const items = $('.columns')
24
+ .toArray()
25
+ .map((item) => {
26
+ item = $(item);
27
+
28
+ const id = item.find('.title a').text();
29
+ const size = item.find('.title span').text();
30
+ const pubDate = item.find('.subtitle a').attr('href').split('/date/').pop();
31
+ const description = item.find('.has-text-grey-dark').text();
32
+ const actresses = item
33
+ .find('.panel-block')
34
+ .toArray()
35
+ .map((a) => $(a).text().trim());
36
+ const tags = item
37
+ .find('.tag')
38
+ .toArray()
39
+ .map((t) => $(t).text().trim());
40
+ const magnet = item.find('a[title="Magnet torrent"]').attr('href');
41
+ const link = item.find('a[title="Download .torrent"]').attr('href');
42
+ const image = item.find('.image').attr('src');
43
+
44
+ return {
45
+ title: `${id} ${size}`,
46
+ pubDate: parseDate(pubDate, 'YYYY/MM/DD'),
47
+ link: new URL(item.find('a').first().attr('href'), rootUrl).href,
48
+ description: art(path.join(__dirname, 'templates/description.art'), {
49
+ image,
50
+ id,
51
+ size,
52
+ pubDate,
53
+ description,
54
+ actresses,
55
+ tags,
56
+ magnet,
57
+ link,
58
+ }),
59
+ author: actresses.join(', '),
60
+ category: [...tags, ...actresses],
61
+ enclosure_type: 'application/x-bittorrent',
62
+ enclosure_url: magnet,
63
+ };
64
+ });
65
+
66
+ ctx.state.data = {
67
+ title: `141JAV - ${$('title').text().split('-')[0].trim()}`,
68
+ link: currentUrl,
69
+ item: items,
70
+ };
71
+ };
@@ -0,0 +1,3 @@
1
+ module.exports = {
2
+ '/:type?/:keyword?': ['cgkings', 'nczitzk'],
3
+ };
@@ -0,0 +1,40 @@
1
+ module.exports = {
2
+ '141jav.com': {
3
+ _name: '141JAV',
4
+ '.': [
5
+ {
6
+ title: '今日种子',
7
+ docs: 'https://docs.rsshub.app/multimedia.html#_141jav',
8
+ source: '/',
9
+ target: (params, url, document) => {
10
+ const today = document.querySelector('div.card.mb-1.card-overview').getAttribute('data-date').replace(/-/g, '');
11
+ return `/141jav/day/${today}`;
12
+ },
13
+ },
14
+ {
15
+ title: '今日演员',
16
+ docs: 'https://docs.rsshub.app/multimedia.html#_141jav',
17
+ source: '/',
18
+ target: (params, url, document) => {
19
+ const star = document.querySelector('div.card-content > div > a').getAttribute('href');
20
+ return `/141jav${star}`;
21
+ },
22
+ },
23
+ {
24
+ title: '页面种子',
25
+ docs: 'https://docs.rsshub.app/multimedia.html#_141jav',
26
+ source: ['/:type', '/:type/:key', '/:type/:key/:morekey'],
27
+ target: (params, url, document) => {
28
+ const itype = params.morekey === undefined ? params.type : params.type === 'tag' ? 'tag' : 'day';
29
+ let ikey = `${itype === 'day' ? params.type : ''}${params.key || ''}${itype === 'tag' && params.morekey !== undefined ? '%2F' : ''}${params.morekey || ''}`;
30
+ if (ikey === '' && itype === 'tag') {
31
+ ikey = document.querySelector('div.thumbnail.is-inline > a').getAttribute('href').replace('/tag/', '').replace(/\//g, '%2F');
32
+ } else if (ikey === '' && itype === 'actress') {
33
+ ikey = document.querySelector('div.card > a').getAttribute('href').replace('/actress/', '');
34
+ }
35
+ return `/141jav/${itype}/${ikey}`;
36
+ },
37
+ },
38
+ ],
39
+ },
40
+ };
@@ -0,0 +1,3 @@
1
+ module.exports = function (router) {
2
+ router.get(/([\w-/]+)?/, require('./index'));
3
+ };