rsshub 1.0.0-master.f9ec483 → 1.0.0-master.fa1dcc5

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 (334) hide show
  1. package/lib/config.ts +42 -1
  2. package/lib/middleware/access-control.ts +3 -3
  3. package/lib/middleware/cache.ts +5 -3
  4. package/lib/middleware/template.test.ts +6 -0
  5. package/lib/middleware/template.tsx +3 -1
  6. package/lib/router.js +0 -6
  7. package/lib/routes/141jav/index.ts +1 -1
  8. package/lib/routes/141ppv/index.ts +1 -1
  9. package/lib/routes/36kr/hot-list.ts +1 -1
  10. package/lib/routes/36kr/index.ts +1 -1
  11. package/lib/routes/78dm/index.ts +429 -43
  12. package/lib/routes/78dm/namespace.ts +2 -0
  13. package/lib/routes/78dm/templates/description.art +17 -0
  14. package/lib/routes/abc/index.ts +10 -9
  15. package/lib/routes/aeon/category.ts +1 -1
  16. package/lib/routes/aeon/type.ts +1 -1
  17. package/lib/routes/afr/latest.ts +69 -0
  18. package/lib/routes/afr/namespace.ts +7 -0
  19. package/lib/routes/afr/navigation.ts +75 -0
  20. package/lib/routes/afr/query.ts +349 -0
  21. package/lib/routes/afr/utils.ts +80 -0
  22. package/lib/routes/aibase/discover.ts +1 -1
  23. package/lib/routes/aibase/news.ts +1 -1
  24. package/lib/routes/aibase/topic.ts +1 -1
  25. package/lib/routes/air-level/index.ts +49 -0
  26. package/lib/routes/air-level/levelrank.ts +65 -0
  27. package/lib/routes/air-level/namespace.ts +12 -0
  28. package/lib/routes/ajcass/namespace.ts +11 -0
  29. package/lib/routes/ajcass/shxyj.ts +73 -0
  30. package/lib/routes/alpinelinux/pkgs.ts +2 -2
  31. package/lib/routes/anime1/anime.ts +1 -1
  32. package/lib/routes/apnews/utils.ts +6 -2
  33. package/lib/routes/appleinsider/index.ts +1 -1
  34. package/lib/routes/aqara/region.ts +1 -1
  35. package/lib/routes/asus/bios.ts +0 -1
  36. package/lib/routes/baoyu/index.ts +57 -0
  37. package/lib/routes/baoyu/namespace.ts +8 -0
  38. package/lib/routes/bilibili/article.ts +37 -14
  39. package/lib/routes/bilibili/dynamic.ts +15 -7
  40. package/lib/routes/bilibili/followings-dynamic.ts +2 -2
  41. package/lib/routes/bilibili/manga-update.ts +3 -0
  42. package/lib/routes/bilibili/ranking.ts +188 -117
  43. package/lib/routes/bilibili/reply.ts +2 -0
  44. package/lib/routes/bilibili/templates/description.art +2 -0
  45. package/lib/routes/bing/daily-wallpaper.ts +5 -1
  46. package/lib/routes/bsky/posts.ts +0 -1
  47. package/lib/routes/bsky/templates/post.art +8 -1
  48. package/lib/routes/buaa/lib/space/newbook.ts +1 -1
  49. package/lib/routes/c114/namespace.ts +2 -0
  50. package/lib/routes/c114/roll.ts +71 -42
  51. package/lib/routes/cags/edu/index.ts +84 -0
  52. package/lib/routes/cags/namespace.ts +9 -0
  53. package/lib/routes/caixin/article.ts +1 -1
  54. package/lib/routes/caixin/blog.ts +2 -3
  55. package/lib/routes/caixin/category.ts +1 -1
  56. package/lib/routes/caixin/latest.ts +12 -16
  57. package/lib/routes/caixin/namespace.ts +1 -1
  58. package/lib/routes/caixin/utils-fulltext.ts +51 -0
  59. package/lib/routes/caixin/utils.ts +37 -37
  60. package/lib/routes/cara/likes.ts +1 -1
  61. package/lib/routes/cara/portfolio.ts +1 -1
  62. package/lib/routes/cara/timeline.ts +1 -1
  63. package/lib/routes/ccfa/index.ts +11 -11
  64. package/lib/routes/chub/characters.ts +1 -1
  65. package/lib/routes/cnbeta/namespace.ts +1 -1
  66. package/lib/routes/cngold/index.ts +195 -0
  67. package/lib/routes/cngold/namespace.ts +9 -0
  68. package/lib/routes/cnki/author.ts +120 -48
  69. package/lib/routes/cnki/utils.ts +4 -4
  70. package/lib/routes/coomer/artist.ts +1 -1
  71. package/lib/routes/coomer/namespace.ts +1 -1
  72. package/lib/routes/coomer/posts.ts +2 -2
  73. package/lib/routes/coomer/utils.ts +1 -1
  74. package/lib/routes/cpcaauto/index.ts +22 -22
  75. package/lib/routes/cs/zzkx.ts +1 -1
  76. package/lib/routes/csdn/blog.ts +17 -13
  77. package/lib/routes/cybersecurityventures/namespace.ts +7 -0
  78. package/lib/routes/cybersecurityventures/news.ts +121 -0
  79. package/lib/routes/cybersecurityventures/types.ts +17 -0
  80. package/lib/routes/daily/discussed.ts +22 -21
  81. package/lib/routes/daily/index.ts +14 -11
  82. package/lib/routes/daily/namespace.ts +1 -1
  83. package/lib/routes/daily/source.ts +186 -0
  84. package/lib/routes/daily/upvoted.ts +17 -17
  85. package/lib/routes/daily/user.ts +6 -23
  86. package/lib/routes/daily/utils.ts +27 -32
  87. package/lib/routes/dataguidance/index.ts +19 -30
  88. package/lib/routes/dcfever/news.ts +1 -1
  89. package/lib/routes/dcfever/reviews.ts +1 -1
  90. package/lib/routes/dcfever/trading-search.ts +1 -1
  91. package/lib/routes/dcfever/trading.ts +1 -1
  92. package/lib/routes/deeplearning/namespace.ts +3 -1
  93. package/lib/routes/deeplearning/templates/description.art +21 -0
  94. package/lib/routes/deeplearning/the-batch.ts +296 -0
  95. package/lib/routes/deepmind/blog.ts +1 -1
  96. package/lib/routes/digitalcameraworld/news.ts +1 -1
  97. package/lib/routes/discord/discord-api.ts +44 -2
  98. package/lib/routes/discord/search.ts +106 -0
  99. package/lib/routes/dn/news.ts +1 -1
  100. package/lib/routes/dockerhub/repositories.ts +42 -0
  101. package/lib/routes/dongqiudi/daily.ts +1 -1
  102. package/lib/routes/dw/namespace.ts +6 -0
  103. package/lib/routes/dw/news.ts +89 -0
  104. package/lib/routes/dw/rss.ts +62 -0
  105. package/lib/routes/dw/templates/description.art +23 -0
  106. package/lib/routes/dw/templates/liveblog.art +13 -0
  107. package/lib/routes/dw/templates/video.art +14 -0
  108. package/lib/routes/dw/utils.ts +172 -0
  109. package/lib/routes/ecnu/jwc.ts +5 -1
  110. package/lib/routes/espn/news.ts +1 -1
  111. package/lib/routes/fashionnetwork/namespace.ts +1 -1
  112. package/lib/routes/flyert/forum.ts +99 -0
  113. package/lib/routes/flyert/namespace.ts +1 -0
  114. package/lib/routes/flyert/templates/description.art +21 -0
  115. package/lib/routes/flyert/util.ts +188 -0
  116. package/lib/routes/follow/profile.ts +2 -2
  117. package/lib/routes/foresightnews/article.ts +1 -1
  118. package/lib/routes/foresightnews/column.ts +1 -1
  119. package/lib/routes/foresightnews/index.ts +3 -1
  120. package/lib/routes/foresightnews/news.ts +1 -1
  121. package/lib/routes/freecomputerbooks/index.ts +0 -10
  122. package/lib/routes/ftm/index.ts +1 -1
  123. package/lib/routes/furaffinity/art.ts +85 -0
  124. package/lib/routes/furaffinity/browse.ts +58 -0
  125. package/lib/routes/furaffinity/commissions.ts +55 -0
  126. package/lib/routes/furaffinity/home.ts +80 -0
  127. package/lib/routes/furaffinity/journal-comments.ts +64 -0
  128. package/lib/routes/furaffinity/journals.ts +56 -0
  129. package/lib/routes/furaffinity/namespace.ts +7 -0
  130. package/lib/routes/furaffinity/search.ts +72 -0
  131. package/lib/routes/furaffinity/shouts.ts +56 -0
  132. package/lib/routes/furaffinity/status.ts +58 -0
  133. package/lib/routes/furaffinity/submission-comments.ts +64 -0
  134. package/lib/{routes-deprecated/furaffinity/user.js → routes/furaffinity/user.ts} +53 -41
  135. package/lib/routes/furaffinity/watchers.ts +62 -0
  136. package/lib/routes/furaffinity/watching.ts +62 -0
  137. package/lib/routes/google/developers.ts +71 -0
  138. package/lib/routes/google/news.ts +26 -6
  139. package/lib/routes/gov/cbirc/index.ts +35 -35
  140. package/lib/routes/hamel/index.ts +81 -0
  141. package/lib/routes/hamel/namespace.ts +7 -0
  142. package/lib/routes/hellogithub/volume.ts +3 -0
  143. package/lib/routes/hket/index.ts +13 -1
  144. package/lib/routes/hostmonit/cloudflareyesv6.ts +1 -1
  145. package/lib/routes/hrbeu/sec/list.ts +80 -0
  146. package/lib/routes/hrbust/jwzx.ts +6 -0
  147. package/lib/routes/hunau/gfxy/index.ts +1 -1
  148. package/lib/routes/hunau/ied.ts +1 -1
  149. package/lib/routes/hunau/jwc.ts +1 -1
  150. package/lib/routes/hunau/xky/index.ts +1 -1
  151. package/lib/routes/hust/gs.ts +4 -3
  152. package/lib/routes/idolmaster/namespace.ts +7 -0
  153. package/lib/routes/idolmaster/news.ts +112 -0
  154. package/lib/routes/ieee/author.ts +95 -0
  155. package/lib/routes/ikea/cn/low-price.ts +2 -1
  156. package/lib/routes/imdb/chart.ts +1 -1
  157. package/lib/routes/inspirehep/author.ts +9 -1
  158. package/lib/routes/isct/namespace.ts +11 -0
  159. package/lib/routes/isct/news.ts +66 -0
  160. package/lib/routes/javtrailers/casts.ts +41 -0
  161. package/lib/routes/javtrailers/categories.ts +40 -0
  162. package/lib/routes/javtrailers/namespace.ts +7 -0
  163. package/lib/routes/javtrailers/studios.ts +39 -0
  164. package/lib/routes/javtrailers/templates/description.art +31 -0
  165. package/lib/routes/javtrailers/types.ts +59 -0
  166. package/lib/routes/javtrailers/utils.ts +48 -0
  167. package/lib/routes/jiemian/list.ts +1 -1
  168. package/lib/routes/jiuyangongshe/community.ts +1 -1
  169. package/lib/routes/jlu/phy/index.ts +55 -0
  170. package/lib/routes/joins/chinese.ts +13 -13
  171. package/lib/routes/kcna/news.ts +7 -5
  172. package/lib/routes/keep/user.ts +1 -1
  173. package/lib/routes/langchain/index.ts +74 -0
  174. package/lib/routes/langchain/namespace.ts +7 -0
  175. package/lib/routes/last-origin/namespace.ts +7 -0
  176. package/lib/routes/last-origin/news.ts +65 -0
  177. package/lib/routes/linkresearcher/index.ts +108 -46
  178. package/lib/routes/linkresearcher/namespace.ts +8 -2
  179. package/lib/routes/linkresearcher/templates/bilingual.art +7 -0
  180. package/lib/routes/linkresearcher/types.ts +103 -0
  181. package/lib/routes/liulinblog/itnews.ts +1 -1
  182. package/lib/routes/lofter/collection.ts +1 -1
  183. package/lib/routes/lofter/tag.ts +1 -1
  184. package/lib/routes/logrocket/index.ts +71 -0
  185. package/lib/routes/logrocket/namespace.ts +7 -0
  186. package/lib/routes/m-78/namespace.ts +7 -0
  187. package/lib/routes/m-78/news.ts +115 -0
  188. package/lib/routes/m-78/types.ts +13 -0
  189. package/lib/routes/mastodon/account-id.ts +1 -1
  190. package/lib/routes/mastodon/acct.ts +1 -1
  191. package/lib/routes/mastodon/timeline-local.ts +2 -2
  192. package/lib/routes/mastodon/timeline-remote.ts +2 -2
  193. package/lib/routes/mastodon/utils.ts +1 -1
  194. package/lib/routes/metacritic/index.ts +1 -1
  195. package/lib/routes/mi/utils.ts +1 -1
  196. package/lib/routes/mihoyo/bbs/official.ts +2 -1
  197. package/lib/routes/misskey/utils.ts +19 -1
  198. package/lib/routes/mittrchina/index.ts +2 -2
  199. package/lib/routes/natgeo/natgeo.ts +25 -24
  200. package/lib/routes/nbd/daily.ts +1 -1
  201. package/lib/routes/nielsberglund/index.ts +78 -0
  202. package/lib/routes/nielsberglund/namespace.ts +7 -0
  203. package/lib/routes/nytimes/rss.ts +57 -0
  204. package/lib/routes/openrice/chart.ts +68 -0
  205. package/lib/routes/openrice/templates/chart.art +9 -0
  206. package/lib/routes/openrice/voting.ts +84 -0
  207. package/lib/routes/oschina/news.ts +26 -7
  208. package/lib/routes/patreon/feed.ts +126 -0
  209. package/lib/routes/patreon/namespace.ts +7 -0
  210. package/lib/routes/patreon/templates/description.art +39 -0
  211. package/lib/routes/patreon/types.ts +387 -0
  212. package/lib/routes/pixiv/api/get-illust-detail.ts +22 -0
  213. package/lib/routes/pixiv/novel-api/content/nsfw.ts +73 -0
  214. package/lib/routes/pixiv/novel-api/content/sfw.ts +63 -0
  215. package/lib/routes/pixiv/novel-api/content/types.ts +254 -0
  216. package/lib/routes/pixiv/novel-api/content/utils.ts +133 -0
  217. package/lib/routes/pixiv/novel-api/series/nsfw.ts +84 -0
  218. package/lib/routes/pixiv/novel-api/series/sfw.ts +70 -0
  219. package/lib/routes/pixiv/novel-api/series/types.ts +94 -0
  220. package/lib/routes/pixiv/novel-api/user-novels/nsfw.ts +82 -0
  221. package/lib/routes/pixiv/novel-api/user-novels/sfw.ts +74 -0
  222. package/lib/routes/pixiv/novel-api/user-novels/types.ts +133 -0
  223. package/lib/routes/pixiv/novel-series.ts +52 -0
  224. package/lib/routes/pixiv/novels.ts +69 -44
  225. package/lib/routes/pixiv/utils.ts +3 -0
  226. package/lib/routes/plurk/anonymous.ts +1 -1
  227. package/lib/routes/plurk/hotlinks.ts +1 -1
  228. package/lib/routes/plurk/news.ts +1 -1
  229. package/lib/routes/plurk/search.ts +1 -1
  230. package/lib/routes/qstheory/index.ts +121 -0
  231. package/lib/routes/qstheory/magazine.ts +64 -0
  232. package/lib/routes/qstheory/namespace.ts +7 -0
  233. package/lib/routes/qstheory/utils.ts +25 -0
  234. package/lib/routes/ruc/ai.ts +1 -1
  235. package/lib/routes/scmp/coronavirus.ts +1 -1
  236. package/lib/routes/scu/jwc/tzgg.ts +75 -0
  237. package/lib/routes/scu/namespace.ts +7 -0
  238. package/lib/routes/scu/scupi/_utils.ts +62 -0
  239. package/lib/routes/scu/scupi/notice.ts +41 -0
  240. package/lib/routes/solidot/namespace.ts +1 -1
  241. package/lib/routes/stbu/jsjxy.ts +4 -1
  242. package/lib/routes/steam/search.ts +7 -0
  243. package/lib/routes/sycl/feeds.ts +1 -1
  244. package/lib/routes/syosetu/dev.ts +67 -0
  245. package/lib/routes/syosetu/index.ts +85 -0
  246. package/lib/routes/syosetu/namespace.ts +2 -2
  247. package/lib/routes/syosetu/ranking-isekai.ts +93 -0
  248. package/lib/routes/syosetu/ranking-r18.ts +192 -0
  249. package/lib/routes/syosetu/ranking.ts +285 -0
  250. package/lib/routes/syosetu/search.ts +161 -0
  251. package/lib/routes/syosetu/templates/description.art +73 -0
  252. package/lib/routes/syosetu/types/ranking-r18.ts +60 -0
  253. package/lib/routes/syosetu/types/ranking.ts +67 -0
  254. package/lib/routes/syosetu/types/search.ts +138 -0
  255. package/lib/routes/syosetu/utils.ts +50 -0
  256. package/lib/routes/telegram/channel.ts +31 -1
  257. package/lib/routes/telegram/scripts/get-telegram-session.mjs +16 -6
  258. package/lib/routes/telegram/stickerpack.ts +1 -1
  259. package/lib/routes/telegram/tglib/channel.ts +12 -9
  260. package/lib/routes/telegram/tglib/client.ts +13 -9
  261. package/lib/routes/test/index.ts +4 -0
  262. package/lib/routes/theblockbeats/index.ts +1 -1
  263. package/lib/routes/thegradient/index.ts +80 -0
  264. package/lib/routes/thegradient/namespace.ts +7 -0
  265. package/lib/routes/theinitium/app.ts +4 -0
  266. package/lib/routes/thepaper/channel.ts +1 -1
  267. package/lib/routes/thepaper/factpaper.ts +1 -1
  268. package/lib/routes/thepaper/featured.ts +1 -1
  269. package/lib/routes/thepaper/list.ts +1 -1
  270. package/lib/routes/thepaper/user.ts +174 -0
  271. package/lib/routes/tongji/sem/_utils.ts +65 -0
  272. package/lib/routes/tongji/sem/notice.ts +58 -0
  273. package/lib/routes/toutiao/a-bogus.ts +540 -0
  274. package/lib/routes/toutiao/namespace.ts +7 -0
  275. package/lib/routes/toutiao/templates/video.art +7 -0
  276. package/lib/routes/toutiao/types.ts +443 -0
  277. package/lib/routes/toutiao/user.ts +127 -0
  278. package/lib/routes/twitter/api/mobile-api/api.ts +8 -0
  279. package/lib/routes/twitter/api/web-api/utils.ts +21 -9
  280. package/lib/routes/twitter/namespace.ts +1 -0
  281. package/lib/routes/twitter/utils.ts +7 -1
  282. package/lib/routes/vertikal/latest.ts +73 -0
  283. package/lib/routes/vertikal/namespace.ts +7 -0
  284. package/lib/routes/vice/topic.ts +1 -1
  285. package/lib/routes/vocus/publication.ts +1 -1
  286. package/lib/routes/vocus/user.ts +1 -1
  287. package/lib/routes/wallstreetcn/calendar.ts +90 -0
  288. package/lib/routes/wallstreetcn/hot.ts +2 -2
  289. package/lib/routes/wallstreetcn/live.ts +1 -1
  290. package/lib/routes/wallstreetcn/news.ts +5 -3
  291. package/lib/routes/weibo/timeline.ts +3 -2
  292. package/lib/routes/wellcee/rent.ts +1 -1
  293. package/lib/routes/wufazhuce/namespace.ts +7 -0
  294. package/lib/routes/wufazhuce/one.ts +90 -0
  295. package/lib/routes/xiaoheihe/discount.ts +72 -28
  296. package/lib/routes/xiaohongshu/user.ts +40 -3
  297. package/lib/routes/xiaohongshu/util.ts +112 -105
  298. package/lib/routes/xsijishe/rank.ts +33 -7
  299. package/lib/routes/xueqiu/cookies.ts +13 -18
  300. package/lib/routes/yahoo/news/listid.ts +4 -1
  301. package/lib/routes/yahoo/news/provider-helper.ts +4 -1
  302. package/lib/routes/yahoo/news/provider.ts +4 -1
  303. package/lib/routes/yande/post.ts +13 -3
  304. package/lib/routes/youtube/user.ts +37 -25
  305. package/lib/routes/zhonglun/index.ts +5 -6
  306. package/lib/routes/zjut/cs/index.ts +1 -1
  307. package/lib/utils/got.ts +2 -1
  308. package/lib/utils/helpers.test.ts +13 -1
  309. package/lib/utils/helpers.ts +10 -0
  310. package/lib/utils/ofetch.ts +3 -0
  311. package/lib/utils/request-rewriter/fetch.test.ts +94 -0
  312. package/lib/utils/request-rewriter/fetch.ts +14 -1
  313. package/lib/views/error.tsx +1 -1
  314. package/package.json +40 -37
  315. package/lib/routes/78dm/templates/image.art +0 -1
  316. package/lib/routes/deeplearning/thebatch.ts +0 -74
  317. package/lib/routes/syosetu/chapter.ts +0 -87
  318. package/lib/routes/xiaohongshu/notes.ts +0 -39
  319. package/lib/routes-deprecated/furaffinity/browse.js +0 -44
  320. package/lib/routes-deprecated/furaffinity/commissions.js +0 -39
  321. package/lib/routes-deprecated/furaffinity/favorites.js +0 -56
  322. package/lib/routes-deprecated/furaffinity/gallery.js +0 -56
  323. package/lib/routes-deprecated/furaffinity/home.js +0 -72
  324. package/lib/routes-deprecated/furaffinity/journal-comments.js +0 -50
  325. package/lib/routes-deprecated/furaffinity/journals.js +0 -49
  326. package/lib/routes-deprecated/furaffinity/scraps.js +0 -56
  327. package/lib/routes-deprecated/furaffinity/search.js +0 -56
  328. package/lib/routes-deprecated/furaffinity/shouts.js +0 -40
  329. package/lib/routes-deprecated/furaffinity/status.js +0 -38
  330. package/lib/routes-deprecated/furaffinity/submission-comments.js +0 -50
  331. package/lib/routes-deprecated/furaffinity/watchers.js +0 -47
  332. package/lib/routes-deprecated/furaffinity/watching.js +0 -47
  333. package/lib/routes-deprecated/ieee/author.js +0 -30
  334. package/lib/routes-deprecated/qstheory/index.js +0 -122
package/lib/config.ts CHANGED
@@ -5,12 +5,14 @@ import { ofetch } from 'ofetch';
5
5
  let envs = process.env;
6
6
 
7
7
  export type Config = {
8
+ // app config
8
9
  disallowRobot: boolean;
9
10
  enableCluster?: string;
10
11
  isPackage: boolean;
11
12
  nodeName?: string;
12
13
  puppeteerWSEndpoint?: string;
13
14
  chromiumExecutablePath?: string;
15
+ // network
14
16
  connect: {
15
17
  port: number;
16
18
  };
@@ -20,6 +22,7 @@ export type Config = {
20
22
  ua: string;
21
23
  trueUA: string;
22
24
  allowOrigin?: string;
25
+ // cache
23
26
  cache: {
24
27
  type: string;
25
28
  requestTimeout: number;
@@ -32,6 +35,7 @@ export type Config = {
32
35
  redis: {
33
36
  url: string;
34
37
  };
38
+ // proxy
35
39
  proxyUri?: string;
36
40
  proxy: {
37
41
  protocol?: string;
@@ -43,7 +47,9 @@ export type Config = {
43
47
  };
44
48
  pacUri?: string;
45
49
  pacScript?: string;
50
+ // access control
46
51
  accessKey?: string;
52
+ // logging
47
53
  debugInfo: string;
48
54
  loggerLevel: string;
49
55
  noLogfiles?: boolean;
@@ -56,6 +62,8 @@ export type Config = {
56
62
  dsn?: string;
57
63
  routeTimeout: number;
58
64
  };
65
+ enableRemoteDebugging?: boolean;
66
+ // feed config
59
67
  hotlink: {
60
68
  template?: string;
61
69
  includePaths?: string[];
@@ -78,6 +86,8 @@ export type Config = {
78
86
  promptTitle: string;
79
87
  promptDescription: string;
80
88
  };
89
+
90
+ // Route-specific Configurations
81
91
  bilibili: {
82
92
  cookies: Record<string, string | undefined>;
83
93
  dmImgList?: string;
@@ -94,6 +104,9 @@ export type Config = {
94
104
  bupt: {
95
105
  portal_cookie?: string;
96
106
  };
107
+ caixin: {
108
+ cookie?: string;
109
+ };
97
110
  civitai: {
98
111
  cookie?: string;
99
112
  };
@@ -239,6 +252,9 @@ export type Config = {
239
252
  notion: {
240
253
  key?: string;
241
254
  };
255
+ patreon: {
256
+ sessionId?: string;
257
+ };
242
258
  pianyuan: {
243
259
  cookie?: string;
244
260
  };
@@ -293,6 +309,14 @@ export type Config = {
293
309
  telegram: {
294
310
  token?: string;
295
311
  session?: string;
312
+ apiId?: number;
313
+ apiHash?: string;
314
+ maxConcurrentDownloads?: number;
315
+ proxy?: {
316
+ host?: string;
317
+ port?: number;
318
+ secret?: string;
319
+ };
296
320
  };
297
321
  tophub: {
298
322
  cookie?: string;
@@ -327,6 +351,9 @@ export type Config = {
327
351
  device_id?: string;
328
352
  refresh_token?: string;
329
353
  };
354
+ xiaohongshu: {
355
+ cookie?: string;
356
+ };
330
357
  ximalaya: {
331
358
  token?: string;
332
359
  };
@@ -415,7 +442,6 @@ const calculateValue = () => {
415
442
  requestTimeout: toInt(envs.REQUEST_TIMEOUT, 30000), // Milliseconds to wait for the server to end the response before aborting the request
416
443
  ua: envs.UA ?? (toBoolean(envs.NO_RANDOM_UA, false) ? TRUE_UA : randUserAgent({ browser: 'chrome', os: 'mac os', device: 'desktop' })),
417
444
  trueUA: TRUE_UA,
418
- // cors request
419
445
  allowOrigin: envs.ALLOW_ORIGIN,
420
446
  // cache
421
447
  cache: {
@@ -459,6 +485,7 @@ const calculateValue = () => {
459
485
  dsn: envs.SENTRY,
460
486
  routeTimeout: toInt(envs.SENTRY_ROUTE_TIMEOUT, 30000),
461
487
  },
488
+ enableRemoteDebugging: toBoolean(envs.ENABLE_REMOTE_DEBUGGING, false),
462
489
  // feed config
463
490
  hotlink: {
464
491
  template: envs.HOTLINK_TEMPLATE,
@@ -500,6 +527,9 @@ const calculateValue = () => {
500
527
  bupt: {
501
528
  portal_cookie: envs.BUPT_PORTAL_COOKIE,
502
529
  },
530
+ caixin: {
531
+ cookie: envs.CAIXIN_COOKIE,
532
+ },
503
533
  civitai: {
504
534
  cookie: envs.CIVITAI_COOKIE,
505
535
  },
@@ -646,6 +676,9 @@ const calculateValue = () => {
646
676
  notion: {
647
677
  key: envs.NOTION_TOKEN,
648
678
  },
679
+ patreon: {
680
+ sessionId: envs.PATREON_SESSION_ID,
681
+ },
649
682
  pianyuan: {
650
683
  cookie: envs.PIANYUAN_COOKIE,
651
684
  },
@@ -703,6 +736,11 @@ const calculateValue = () => {
703
736
  apiId: envs.TELEGRAM_API_ID,
704
737
  apiHash: envs.TELEGRAM_API_HASH,
705
738
  maxConcurrentDownloads: envs.TELEGRAM_MAX_CONCURRENT_DOWNLOADS,
739
+ proxy: {
740
+ host: envs.TELEGRAM_PROXY_HOST,
741
+ port: envs.TELEGRAM_PROXY_PORT,
742
+ secret: envs.TELEGRAM_PROXY_SECRET,
743
+ },
706
744
  },
707
745
  tophub: {
708
746
  cookie: envs.TOPHUB_COOKIE,
@@ -737,6 +775,9 @@ const calculateValue = () => {
737
775
  device_id: envs.XIAOYUZHOU_ID,
738
776
  refresh_token: envs.XIAOYUZHOU_TOKEN,
739
777
  },
778
+ xiaohongshu: {
779
+ cookie: envs.XIAOHONGSHU_COOKIE,
780
+ },
740
781
  ximalaya: {
741
782
  token: envs.XIMALAYA_TOKEN,
742
783
  },
@@ -3,8 +3,8 @@ import { config } from '@/config';
3
3
  import md5 from '@/utils/md5';
4
4
  import RejectError from '@/errors/types/reject';
5
5
 
6
- const reject = () => {
7
- throw new RejectError('Authentication failed. Access denied.');
6
+ const reject = (requestPath) => {
7
+ throw new RejectError(`Authentication failed. Access denied.\n${requestPath}`);
8
8
  };
9
9
 
10
10
  const middleware: MiddlewareHandler = async (ctx, next) => {
@@ -16,7 +16,7 @@ const middleware: MiddlewareHandler = async (ctx, next) => {
16
16
  await next();
17
17
  } else {
18
18
  if (config.accessKey && !(config.accessKey === accessKey || accessCode === md5(requestPath + config.accessKey))) {
19
- return reject();
19
+ return reject(requestPath);
20
20
  }
21
21
  await next();
22
22
  }
@@ -8,7 +8,7 @@ import { Data } from '@/types';
8
8
 
9
9
  const bypassList = new Set(['/', '/robots.txt', '/logo.png', '/favicon.ico']);
10
10
  // only give cache string, as the `!` condition tricky
11
- // md5 is used to shrink key size
11
+ // XXH64 is used to shrink key size
12
12
  // plz, write these tips in comments!
13
13
  const middleware: MiddlewareHandler = async (ctx, next) => {
14
14
  if (!cacheModule.status.available || bypassList.has(ctx.req.path)) {
@@ -16,9 +16,11 @@ const middleware: MiddlewareHandler = async (ctx, next) => {
16
16
  return;
17
17
  }
18
18
 
19
+ const requestPath = ctx.req.path;
20
+ const limit = ctx.req.query('limit') ? `:${ctx.req.query('limit')}` : '';
19
21
  const { h64ToString } = await xxhash();
20
- const key = 'rsshub:koa-redis-cache:' + h64ToString(ctx.req.path);
21
- const controlKey = 'rsshub:path-requested:' + h64ToString(ctx.req.path);
22
+ const key = 'rsshub:koa-redis-cache:' + h64ToString(requestPath + limit);
23
+ const controlKey = 'rsshub:path-requested:' + h64ToString(requestPath + limit);
22
24
 
23
25
  const isRequesting = await cacheModule.globalCache.get(controlKey);
24
26
 
@@ -108,4 +108,10 @@ describe('template', () => {
108
108
  expect(parsed.items[0].enclosure?.length).toBe('3661');
109
109
  expect(parsed.items[0].itunes.duration).toBe('10:10:10');
110
110
  });
111
+
112
+ it(`redirect`, async () => {
113
+ const response = await app.request('/test/redirect');
114
+ expect(response.status).toBe(301);
115
+ expect(response.headers.get('location')).toBe('/test/1');
116
+ });
111
117
  });
@@ -102,7 +102,9 @@ const middleware: MiddlewareHandler = async (ctx, next) => {
102
102
  return ctx.json(result);
103
103
  }
104
104
 
105
- if (ctx.get('no-content')) {
105
+ if (ctx.get('redirect')) {
106
+ return ctx.redirect(ctx.get('redirect'), 301);
107
+ } else if (ctx.get('no-content')) {
106
108
  return ctx.body(null);
107
109
  } else {
108
110
  // retain .ums for backward compatibility
package/lib/router.js CHANGED
@@ -874,9 +874,6 @@ router.get('/guet/xwzx/:type?', lazyloadRouteHandler('./routes/guet/news'));
874
874
  // はてな匿名ダイアリー
875
875
  router.get('/hatena/anonymous_diary/archive', lazyloadRouteHandler('./routes/hatena/anonymous_diary/archive'));
876
876
 
877
- // IEEE Xplore [Sci Journal]
878
- router.get('/ieee/author/:aid/:sortType/:count?', lazyloadRouteHandler('./routes/ieee/author'));
879
-
880
877
  // PNAS [Sci Journal]
881
878
  // router.get('/pnas/:topic?', lazyloadRouteHandler('./routes/pnas/index'));
882
879
 
@@ -1455,9 +1452,6 @@ router.get('/deepl/blog/:lang?', lazyloadRouteHandler('./routes/deepl/blog'));
1455
1452
  router.get('/muchong/journal/:type?', lazyloadRouteHandler('./routes/muchong/journal'));
1456
1453
  router.get('/muchong/:id/:type?/:sort?', lazyloadRouteHandler('./routes/muchong/index'));
1457
1454
 
1458
- // 求是网
1459
- router.get('/qstheory/:category?', lazyloadRouteHandler('./routes/qstheory/index'));
1460
-
1461
1455
  // 生命时报
1462
1456
  router.get('/lifetimes/:category?', lazyloadRouteHandler('./routes/lifetimes/index'));
1463
1457
 
@@ -66,7 +66,7 @@ async function handler(ctx) {
66
66
  const $ = load(response.data);
67
67
 
68
68
  if (getSubPath(ctx) === '/') {
69
- ctx.redirect(`/141jav${$('.overview').first().attr('href')}`);
69
+ ctx.set('redirect', `/141jav${$('.overview').first().attr('href')}`);
70
70
  return;
71
71
  }
72
72
 
@@ -66,7 +66,7 @@ async function handler(ctx) {
66
66
  const $ = load(response.data);
67
67
 
68
68
  if (getSubPath(ctx) === '/') {
69
- ctx.redirect(`/141ppv${$('.overview').first().attr('href')}`);
69
+ ctx.set('redirect', `/141ppv${$('.overview').first().attr('href')}`);
70
70
  return;
71
71
  }
72
72
 
@@ -26,7 +26,7 @@ const categories = {
26
26
 
27
27
  export const route: Route = {
28
28
  path: '/hot-list/:category?',
29
- categories: ['new-media'],
29
+ categories: ['new-media', 'popular'],
30
30
  example: '/36kr/hot-list',
31
31
  parameters: { category: '分类,默认为24小时热榜' },
32
32
  features: {
@@ -18,7 +18,7 @@ const shortcuts = {
18
18
 
19
19
  export const route: Route = {
20
20
  path: '/:category/:subCategory?/:keyword?',
21
- categories: ['new-media'],
21
+ categories: ['new-media', 'popular'],
22
22
  example: '/36kr/newsflashes',
23
23
  parameters: {
24
24
  category: '分类,必填项',