rsshub 1.0.0-master.facc6d5 → 1.0.0-master.fad0dfa

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 (1213) hide show
  1. package/README.md +1 -1
  2. package/lib/{app.tsx → app-bootstrap.tsx} +0 -2
  3. package/lib/app.test.ts +15 -1
  4. package/lib/app.ts +5 -0
  5. package/lib/config.ts +8 -0
  6. package/lib/index.ts +0 -1
  7. package/lib/middleware/header.test.ts +1 -0
  8. package/lib/middleware/header.ts +4 -0
  9. package/lib/middleware/parameter.ts +4 -3
  10. package/lib/registry.ts +12 -5
  11. package/lib/routes/005/index.ts +0 -2
  12. package/lib/routes/10000link/info.ts +251 -0
  13. package/lib/routes/10000link/namespace.ts +9 -0
  14. package/lib/routes/10000link/templates/description.art +7 -0
  15. package/lib/routes/12306/index.ts +0 -2
  16. package/lib/routes/141jav/index.ts +0 -2
  17. package/lib/routes/141ppv/index.ts +0 -2
  18. package/lib/routes/163/ds.ts +0 -2
  19. package/lib/routes/163/exclusive.ts +0 -2
  20. package/lib/routes/163/music/artist-songs.ts +0 -2
  21. package/lib/routes/163/music/artist.ts +0 -2
  22. package/lib/routes/163/music/djradio.ts +0 -2
  23. package/lib/routes/163/music/playlist.ts +0 -2
  24. package/lib/routes/163/music/userevents.ts +0 -2
  25. package/lib/routes/163/music/userplaylist.ts +0 -2
  26. package/lib/routes/163/music/userplayrecords.ts +0 -2
  27. package/lib/routes/163/open/vip.ts +0 -2
  28. package/lib/routes/163/utils.ts +0 -3
  29. package/lib/routes/18comic/utils.ts +0 -3
  30. package/lib/routes/199it/index.ts +2 -4
  31. package/lib/routes/1point3acres/offer.ts +0 -2
  32. package/lib/routes/1point3acres/section.ts +2 -2
  33. package/lib/routes/1point3acres/utils.ts +0 -3
  34. package/lib/routes/1x/index.ts +1 -3
  35. package/lib/routes/2048/index.ts +0 -2
  36. package/lib/routes/2cycd/index.ts +3 -3
  37. package/lib/routes/36kr/hot-list.ts +9 -1
  38. package/lib/routes/3dmgame/news-center.ts +1 -1
  39. package/lib/routes/3kns/index.ts +0 -2
  40. package/lib/routes/423down/index.ts +6 -8
  41. package/lib/routes/4gamers/utils.ts +0 -3
  42. package/lib/routes/4khd/namespace.ts +1 -1
  43. package/lib/routes/4ksj/forum.ts +0 -2
  44. package/lib/routes/500px/tribe-set.ts +0 -2
  45. package/lib/routes/56kog/util.ts +0 -3
  46. package/lib/routes/591/list.ts +0 -2
  47. package/lib/routes/6park/news.ts +1 -1
  48. package/lib/routes/78dm/index.ts +0 -2
  49. package/lib/routes/7mmtv/index.ts +0 -2
  50. package/lib/routes/8264/list.ts +0 -2
  51. package/lib/routes/91porn/author.ts +0 -2
  52. package/lib/routes/91porn/index.ts +0 -2
  53. package/lib/routes/95mm/utils.ts +0 -3
  54. package/lib/routes/a9vg/index.ts +0 -2
  55. package/lib/routes/aamacau/index.ts +3 -3
  56. package/lib/routes/abc/index.ts +1 -3
  57. package/lib/routes/accessbriefing/index.ts +0 -2
  58. package/lib/routes/acfun/video.ts +1 -1
  59. package/lib/routes/acs/journal.ts +0 -2
  60. package/lib/routes/adquan/case-library.ts +144 -0
  61. package/lib/routes/adquan/index.ts +144 -0
  62. package/lib/routes/adquan/namespace.ts +9 -0
  63. package/lib/routes/adquan/templates/description.art +7 -0
  64. package/lib/routes/aeaweb/index.ts +0 -2
  65. package/lib/routes/aeon/utils.ts +0 -3
  66. package/lib/routes/aflcio/blog.ts +158 -0
  67. package/lib/routes/aflcio/namespace.ts +9 -0
  68. package/lib/routes/agefans/update.ts +20 -20
  69. package/lib/routes/agri/index.ts +0 -2
  70. package/lib/routes/ahjzu/news.ts +3 -3
  71. package/lib/routes/aibase/util.ts +0 -3
  72. package/lib/routes/aicaijing/index.ts +0 -2
  73. package/lib/routes/ainvest/utils.ts +3 -3
  74. package/lib/routes/aip/journal.ts +26 -30
  75. package/lib/routes/aip/utils.ts +0 -3
  76. package/lib/routes/ali213/news.ts +2 -4
  77. package/lib/routes/ali213/zl.ts +2 -4
  78. package/lib/routes/aliyun/database-month.ts +3 -3
  79. package/lib/routes/aliyun/developer/group.ts +12 -18
  80. package/lib/routes/aliyun/notice.ts +3 -3
  81. package/lib/routes/aljazeera/index.ts +0 -2
  82. package/lib/routes/ally/rail.ts +22 -16
  83. package/lib/routes/amazfitwatchfaces/index.ts +430 -0
  84. package/lib/routes/amazfitwatchfaces/namespace.ts +10 -0
  85. package/lib/routes/amazfitwatchfaces/templates/description.art +17 -0
  86. package/lib/routes/amazon/kindle-software-updates.ts +7 -9
  87. package/lib/routes/anquanke/vul.ts +1 -1
  88. package/lib/routes/anthropic/engineering.ts +72 -0
  89. package/lib/routes/anthropic/news.ts +6 -4
  90. package/lib/routes/anytxt/namespace.ts +9 -0
  91. package/lib/routes/anytxt/release-notes.ts +92 -0
  92. package/lib/routes/apnews/mobile-api.ts +94 -0
  93. package/lib/routes/apnews/sitemap.ts +3 -2
  94. package/lib/routes/apnews/topics.ts +3 -2
  95. package/lib/routes/apnews/utils.ts +2 -10
  96. package/lib/routes/app-center/release.ts +0 -2
  97. package/lib/routes/app-sales/index.ts +200 -0
  98. package/lib/routes/app-sales/mostwanted.ts +194 -0
  99. package/lib/routes/app-sales/namespace.ts +9 -0
  100. package/lib/routes/app-sales/templates/description.art +120 -0
  101. package/lib/routes/app-sales/util.ts +161 -0
  102. package/lib/routes/apple/podcast.ts +2 -1
  103. package/lib/routes/appstorrent/programs.ts +0 -2
  104. package/lib/routes/aqara/post.ts +0 -2
  105. package/lib/routes/arcteryx/new-arrivals.ts +0 -2
  106. package/lib/routes/arcteryx/outlet.ts +0 -2
  107. package/lib/routes/arcteryx/regear-new-arrivals.ts +0 -2
  108. package/lib/routes/artstation/user.ts +0 -2
  109. package/lib/routes/asiafruitchina/categories.ts +2 -4
  110. package/lib/routes/asiafruitchina/news.ts +2 -4
  111. package/lib/routes/asiantolick/index.ts +0 -2
  112. package/lib/routes/asmr-200/index.ts +1 -2
  113. package/lib/routes/asus/bios.ts +0 -2
  114. package/lib/routes/baidu/gushitong/index.ts +0 -2
  115. package/lib/routes/baidu/search.ts +0 -2
  116. package/lib/routes/baidu/tieba/forum.ts +0 -2
  117. package/lib/routes/baidu/tieba/post.ts +31 -37
  118. package/lib/routes/baidu/tieba/search.ts +0 -2
  119. package/lib/routes/baidu/top.ts +0 -2
  120. package/lib/routes/bakamh/manga.ts +74 -0
  121. package/lib/routes/bakamh/namespace.ts +8 -0
  122. package/lib/routes/bandcamp/weekly.ts +0 -2
  123. package/lib/routes/bangumi.online/online.ts +0 -2
  124. package/lib/routes/bangumi.tv/calendar/today.ts +0 -2
  125. package/lib/routes/bangumi.tv/subject/ep.ts +0 -3
  126. package/lib/routes/bangumi.tv/user/collections.ts +0 -3
  127. package/lib/routes/baozimh/index.ts +0 -2
  128. package/lib/routes/bast/index.ts +1 -1
  129. package/lib/routes/bbc/learningenglish.ts +76 -0
  130. package/lib/routes/bbcnewslabs/news.ts +4 -4
  131. package/lib/routes/bc3ts/list.ts +1 -4
  132. package/lib/routes/bdys/index.ts +37 -40
  133. package/lib/routes/behance/user.ts +1 -3
  134. package/lib/routes/bgmlist/onair.ts +0 -2
  135. package/lib/routes/bilibili/danmaku.ts +1 -1
  136. package/lib/routes/bilibili/dynamic.ts +2 -0
  137. package/lib/routes/bilibili/followings-dynamic.ts +10 -4
  138. package/lib/routes/bilibili/ranking.ts +2 -0
  139. package/lib/routes/bilibili/utils.ts +5 -4
  140. package/lib/routes/bilibili/video.ts +76 -26
  141. package/lib/routes/bilibili/wasm-exec.ts +3 -3
  142. package/lib/routes/bing/search.ts +2 -2
  143. package/lib/routes/bjnews/cat.ts +2 -9
  144. package/lib/routes/bjwxdxh/index.ts +3 -3
  145. package/lib/routes/bjx/huanbao.ts +4 -12
  146. package/lib/routes/bjx/types.ts +9 -13
  147. package/lib/routes/blogread/index.ts +3 -4
  148. package/lib/routes/bloomberg/authors.ts +13 -14
  149. package/lib/routes/bloomberg/index.ts +6 -5
  150. package/lib/routes/bloomberg/utils.ts +5 -17
  151. package/lib/routes/bnu/bs.ts +3 -3
  152. package/lib/routes/bnu/dwxgb.ts +3 -3
  153. package/lib/routes/bnu/jwb.ts +1 -1
  154. package/lib/routes/bookfere/category.ts +11 -15
  155. package/lib/routes/booru/mmda.ts +0 -2
  156. package/lib/routes/bsky/feeds.ts +0 -2
  157. package/lib/routes/bsky/posts.ts +1 -3
  158. package/lib/routes/btzj/index.ts +0 -2
  159. package/lib/routes/buaa/lib/space/newbook.ts +0 -2
  160. package/lib/routes/bulianglin/rss.ts +3 -3
  161. package/lib/routes/bullionvault/gold-news.ts +2 -1
  162. package/lib/routes/bupt/jwc.ts +2 -2
  163. package/lib/routes/bupt/rczp.ts +3 -3
  164. package/lib/routes/caai/utils.ts +0 -3
  165. package/lib/routes/caareviews/utils.ts +3 -6
  166. package/lib/routes/cahkms/index.ts +0 -2
  167. package/lib/routes/caixin/blog.ts +1 -1
  168. package/lib/routes/caixin/database.ts +0 -2
  169. package/lib/routes/caixin/utils-fulltext.ts +1 -1
  170. package/lib/routes/caixin/utils.ts +0 -3
  171. package/lib/routes/cankaoxiaoxi/index.ts +0 -2
  172. package/lib/routes/cara/likes.ts +0 -3
  173. package/lib/routes/cara/timeline.ts +0 -3
  174. package/lib/routes/cara/utils.ts +0 -9
  175. package/lib/routes/cartoonmad/comic.ts +0 -2
  176. package/lib/routes/cas/cg/index.ts +3 -3
  177. package/lib/routes/cas/genetics/index.ts +2 -2
  178. package/lib/routes/cbaigui/index.ts +0 -2
  179. package/lib/routes/cccmc/index.ts +2 -1
  180. package/lib/routes/ccf/ccfcv/index.ts +0 -2
  181. package/lib/routes/ccf/tfbd/utils.ts +0 -3
  182. package/lib/routes/ccfa/index.ts +0 -2
  183. package/lib/routes/ccreports/index.ts +3 -3
  184. package/lib/routes/cctv/jx.ts +3 -3
  185. package/lib/routes/cctv/utils/news.ts +3 -3
  186. package/lib/routes/cctv/utils/xinwen1j1.ts +1 -1
  187. package/lib/routes/cctv/xwlb.ts +1 -1
  188. package/lib/routes/cde/xxgk.ts +24 -9
  189. package/lib/routes/cdzjryb/project-list.ts +0 -2
  190. package/lib/routes/cebbank/all.ts +6 -8
  191. package/lib/routes/cebbank/history.ts +3 -5
  192. package/lib/routes/cfr/index.ts +3 -2
  193. package/lib/routes/cfr/utils.ts +2 -10
  194. package/lib/routes/chaincatcher/home.ts +0 -2
  195. package/lib/routes/changba/user.ts +40 -46
  196. package/lib/routes/chaoxing/qk.ts +0 -2
  197. package/lib/routes/china/finance/finance.ts +2 -2
  198. package/lib/routes/china/news/highlights/news.ts +11 -15
  199. package/lib/routes/china/news/military/news.ts +11 -15
  200. package/lib/routes/chinacdc/index.ts +2 -4
  201. package/lib/routes/chinadaily/language.ts +324 -0
  202. package/lib/routes/chinadaily/namespace.ts +9 -0
  203. package/lib/routes/chinadaily/templates/description.art +21 -0
  204. package/lib/routes/chinadegrees/province.ts +0 -2
  205. package/lib/routes/chinanews/index.ts +2 -2
  206. package/lib/routes/chinaratings/credit-research.ts +2 -1
  207. package/lib/routes/chinaventure/index.ts +3 -5
  208. package/lib/routes/chnmuseum/namespace.ts +10 -0
  209. package/lib/routes/chnmuseum/xingnew.ts +73 -0
  210. package/lib/routes/chnmuseum/xwzt.ts +67 -0
  211. package/lib/routes/chongbuluo/index.ts +86 -0
  212. package/lib/routes/chongbuluo/namespace.ts +7 -0
  213. package/lib/routes/chuanliu/nice.ts +0 -2
  214. package/lib/routes/cib/whpj.ts +3 -3
  215. package/lib/routes/cih-index/namespace.ts +7 -0
  216. package/lib/routes/cih-index/report.ts +74 -0
  217. package/lib/routes/ciidbnu/index.ts +3 -3
  218. package/lib/routes/ciweimao/chapter.ts +1 -1
  219. package/lib/routes/clickme/index.ts +1 -1
  220. package/lib/routes/cline/blog.ts +80 -0
  221. package/lib/routes/cline/namespace.ts +13 -0
  222. package/lib/routes/cls/depth.ts +0 -2
  223. package/lib/routes/cls/hot.ts +0 -2
  224. package/lib/routes/cls/subject.ts +0 -2
  225. package/lib/routes/cls/telegraph.ts +0 -2
  226. package/lib/routes/cma/channel.ts +0 -2
  227. package/lib/routes/cna/index.ts +1 -1
  228. package/lib/routes/cna/web/index.ts +1 -1
  229. package/lib/routes/cncf/index.ts +3 -3
  230. package/lib/routes/cncf/reports.ts +3 -3
  231. package/lib/routes/cngal/entry.ts +0 -2
  232. package/lib/routes/cngal/weekly.ts +0 -2
  233. package/lib/routes/cnjxol/index.ts +0 -2
  234. package/lib/routes/cnki/debut.ts +7 -9
  235. package/lib/routes/cnki/journals.ts +11 -13
  236. package/lib/routes/cnki/utils.ts +0 -3
  237. package/lib/routes/cntheory/paper.ts +0 -2
  238. package/lib/routes/cntv/column.ts +1 -3
  239. package/lib/routes/codeforces/contests.ts +4 -6
  240. package/lib/routes/colamanga/manga.ts +3 -3
  241. package/lib/routes/comicskingdom/index.ts +1 -3
  242. package/lib/routes/cool18/index.ts +70 -42
  243. package/lib/routes/{copernicium → coolpc}/namespace.ts +2 -2
  244. package/lib/routes/coolpc/news.ts +53 -0
  245. package/lib/routes/coomer/index.ts +1 -3
  246. package/lib/routes/copymanga/comic.ts +2 -12
  247. package/lib/routes/cosplaytele/article.ts +14 -6
  248. package/lib/routes/cosplaytele/category.ts +12 -6
  249. package/lib/routes/cosplaytele/latest.ts +12 -3
  250. package/lib/routes/cosplaytele/popular.ts +2 -4
  251. package/lib/routes/cosplaytele/tag.ts +12 -6
  252. package/lib/routes/cpcey/index.ts +3 -3
  253. package/lib/routes/cpta/handler.ts +2 -6
  254. package/lib/routes/crac/exam.ts +60 -0
  255. package/lib/routes/crac/index.ts +9 -4
  256. package/lib/routes/crac/namespace.ts +1 -0
  257. package/lib/routes/crac/templates/exam.art +54 -0
  258. package/lib/routes/creative-comic/book.ts +0 -2
  259. package/lib/routes/creative-comic/utils.ts +2 -2
  260. package/lib/routes/cssn/iolaw.ts +3 -3
  261. package/lib/routes/csu/cse.ts +1 -1
  262. package/lib/routes/csu/utils.ts +1 -1
  263. package/lib/routes/cts/news.ts +23 -22
  264. package/lib/routes/cuilingmag/index.ts +0 -2
  265. package/lib/routes/curius/links.ts +0 -2
  266. package/lib/routes/cursor/changelog.ts +2 -1
  267. package/lib/routes/cyzone/util.ts +8 -10
  268. package/lib/routes/cztv/daily.ts +0 -2
  269. package/lib/routes/cztv/zjxwlb.ts +0 -2
  270. package/lib/routes/daily/utils.ts +0 -2
  271. package/lib/routes/damai/activity.ts +0 -2
  272. package/lib/routes/dapenti/utils.ts +1 -1
  273. package/lib/routes/dayanzai/index.ts +19 -21
  274. package/lib/routes/dbaplus/rss.ts +3 -4
  275. package/lib/routes/dcard/utils.ts +38 -37
  276. package/lib/routes/dcfever/utils.ts +0 -3
  277. package/lib/routes/ddosi/category.ts +3 -3
  278. package/lib/routes/ddosi/index.ts +3 -3
  279. package/lib/routes/deadline/posts.ts +0 -2
  280. package/lib/routes/dedao/knowledge.ts +0 -2
  281. package/lib/routes/dedao/user.ts +0 -2
  282. package/lib/routes/deeplearning/the-batch.ts +0 -2
  283. package/lib/routes/dehenglaw/index.ts +0 -2
  284. package/lib/routes/diariofruticola/filtro.ts +2 -1
  285. package/lib/routes/diershoubing/news.ts +0 -2
  286. package/lib/routes/discord/channel.ts +0 -2
  287. package/lib/routes/discord/search.ts +0 -3
  288. package/lib/routes/disinfo/publications.ts +3 -3
  289. package/lib/routes/dlnews/category.ts +2 -7
  290. package/lib/routes/dlsite/utils.ts +0 -3
  291. package/lib/routes/dmzj/news.ts +5 -5
  292. package/lib/routes/dn/news.ts +0 -2
  293. package/lib/routes/dockerhub/tag.ts +1 -1
  294. package/lib/routes/domp4/detail.ts +8 -6
  295. package/lib/routes/domp4/latest-movie-bt.ts +10 -10
  296. package/lib/routes/domp4/latest.ts +8 -8
  297. package/lib/routes/domp4/namespace.ts +2 -8
  298. package/lib/routes/domp4/utils.ts +5 -5
  299. package/lib/routes/douban/commercialpress/latest.ts +3 -3
  300. package/lib/routes/douban/movie/coming.ts +0 -3
  301. package/lib/routes/douban/other/celebrity.ts +9 -13
  302. package/lib/routes/douban/other/doulist.ts +16 -16
  303. package/lib/routes/douban/other/explore-column.ts +6 -6
  304. package/lib/routes/douban/other/explore.ts +23 -29
  305. package/lib/routes/douban/other/group.ts +1 -1
  306. package/lib/routes/douban/other/jobs.ts +5 -7
  307. package/lib/routes/douban/other/later.ts +3 -3
  308. package/lib/routes/douban/other/latest-music.ts +1 -1
  309. package/lib/routes/douban/other/list.ts +0 -2
  310. package/lib/routes/douban/other/playing.ts +1 -1
  311. package/lib/routes/douban/other/recommended.ts +0 -2
  312. package/lib/routes/douban/other/replied.ts +3 -3
  313. package/lib/routes/douban/other/replies.ts +3 -3
  314. package/lib/routes/douban/other/weekly-best.ts +0 -2
  315. package/lib/routes/douban/people/status.ts +1 -1
  316. package/lib/routes/douban/people/wish.ts +2 -2
  317. package/lib/routes/douyin/hashtag.ts +1 -1
  318. package/lib/routes/douyin/live.ts +1 -1
  319. package/lib/routes/douyin/utils.ts +0 -3
  320. package/lib/routes/douyu/group.ts +0 -2
  321. package/lib/routes/douyu/post.ts +0 -2
  322. package/lib/routes/dribbble/utils.ts +0 -3
  323. package/lib/routes/dtcj/datainsight.ts +3 -3
  324. package/lib/routes/duozhuayu/search.ts +0 -2
  325. package/lib/routes/dushu/fuzhou/index.ts +0 -2
  326. package/lib/routes/dw/rss.ts +2 -2
  327. package/lib/routes/dw/utils.ts +0 -2
  328. package/lib/routes/dx2025/index.ts +3 -3
  329. package/lib/routes/dytt/index.ts +2 -1
  330. package/lib/routes/e-hentai/index.ts +0 -2
  331. package/lib/routes/ea/apex-news.ts +104 -0
  332. package/lib/routes/ea/namespace.ts +6 -0
  333. package/lib/routes/eagle/blog.ts +3 -3
  334. package/lib/routes/eagle/changelog.ts +25 -29
  335. package/lib/routes/eastmoney/report/index.ts +0 -3
  336. package/lib/routes/ecnu/contest.ts +0 -2
  337. package/lib/routes/ecnu/jwc.ts +3 -3
  338. package/lib/routes/ehentai/ehapi.ts +1 -1
  339. package/lib/routes/elsevier/issue.ts +3 -5
  340. package/lib/routes/elsevier/journal.ts +3 -5
  341. package/lib/routes/embassy/supported-list.ts +1 -1
  342. package/lib/routes/epicgames/index.ts +0 -2
  343. package/lib/routes/eprice/rss.ts +0 -2
  344. package/lib/routes/eshukan/academic.ts +0 -2
  345. package/lib/routes/espn/news.ts +1 -4
  346. package/lib/routes/esquirehk/tag.ts +1 -4
  347. package/lib/routes/famitsu/category.ts +1 -3
  348. package/lib/routes/fanbox/utils.ts +0 -3
  349. package/lib/routes/fangchan/list.ts +2 -4
  350. package/lib/routes/fansly/utils.ts +0 -3
  351. package/lib/routes/farmatters/index.ts +0 -2
  352. package/lib/routes/fashionnetwork/index.ts +0 -2
  353. package/lib/routes/fastbull/news.ts +0 -2
  354. package/lib/routes/feng/forum.ts +0 -2
  355. package/lib/routes/ff14/ff14-global.ts +0 -2
  356. package/lib/routes/ff14/ff14-zh.ts +0 -2
  357. package/lib/routes/fffdm/manhua/manhua.ts +1 -3
  358. package/lib/routes/finviz/quote.ts +14 -16
  359. package/lib/routes/fisher-spb/news.ts +3 -5
  360. package/lib/routes/fishshell/index.ts +3 -3
  361. package/lib/routes/fjksbm/index.ts +1 -1
  362. package/lib/routes/flyert/creditcard.ts +4 -4
  363. package/lib/routes/flyert/namespace.ts +1 -1
  364. package/lib/routes/flyert/preferential.ts +3 -3
  365. package/lib/routes/flyert/util.ts +0 -3
  366. package/lib/routes/flyert/utils.ts +17 -11
  367. package/lib/routes/focustaiwan/index.ts +0 -2
  368. package/lib/routes/followin/utils.ts +0 -3
  369. package/lib/routes/foresightnews/util.ts +9 -14
  370. package/lib/routes/fosshub/index.ts +0 -2
  371. package/lib/routes/freecomputerbooks/index.ts +0 -2
  372. package/lib/routes/ft/myft.ts +4 -4
  373. package/lib/routes/furstar/artists.ts +2 -2
  374. package/lib/routes/furstar/utils.ts +14 -19
  375. package/lib/routes/futunn/main.ts +0 -2
  376. package/lib/routes/fx-markets/channel.ts +12 -14
  377. package/lib/routes/fx678/kx.ts +2 -2
  378. package/lib/routes/fzmtr/announcements.ts +3 -3
  379. package/lib/routes/gameapps/index.ts +1 -3
  380. package/lib/routes/gamebase/news.ts +0 -3
  381. package/lib/routes/gamer/gnn-index.ts +3 -3
  382. package/lib/routes/gamer/hot.ts +3 -3
  383. package/lib/routes/gamersky/utils.ts +1 -1
  384. package/lib/routes/gcores/articles.ts +0 -3
  385. package/lib/routes/gcores/categories.ts +0 -3
  386. package/lib/routes/gcores/collections.ts +0 -3
  387. package/lib/routes/gcores/news.ts +0 -3
  388. package/lib/routes/gcores/parser.ts +1 -4
  389. package/lib/routes/gcores/program-previews.ts +47 -0
  390. package/lib/routes/gcores/radio.ts +5 -7
  391. package/lib/routes/gcores/tags.ts +0 -3
  392. package/lib/routes/gcores/topics.ts +0 -3
  393. package/lib/routes/gcores/util.ts +0 -3
  394. package/lib/routes/gcores/videos.ts +0 -3
  395. package/lib/routes/gdut/oa-news.ts +85 -84
  396. package/lib/routes/geekpark/index.ts +0 -2
  397. package/lib/routes/gelbooru/utils.ts +0 -3
  398. package/lib/routes/gelonghui/live.ts +0 -2
  399. package/lib/routes/geocaching/blogs.ts +4 -3
  400. package/lib/routes/gettr/user.ts +0 -2
  401. package/lib/routes/gihyo/group.ts +17 -19
  402. package/lib/routes/github/comments.ts +2 -2
  403. package/lib/routes/github/contributors.ts +1 -1
  404. package/lib/routes/github/pulse.ts +0 -2
  405. package/lib/routes/github/trending.ts +0 -2
  406. package/lib/routes/gitpod/blog.ts +0 -2
  407. package/lib/routes/gofans/index.ts +0 -2
  408. package/lib/routes/google/citations.ts +1 -1
  409. package/lib/routes/google/fonts.ts +0 -2
  410. package/lib/routes/google/news.ts +0 -2
  411. package/lib/routes/google/scholar.ts +1 -1
  412. package/lib/routes/google/search.ts +0 -2
  413. package/lib/routes/gov/caac/cjwt.ts +0 -2
  414. package/lib/routes/gov/chinatax/latest.ts +3 -3
  415. package/lib/routes/gov/cmse/fxrw.ts +0 -2
  416. package/lib/routes/gov/cmse/index.ts +0 -2
  417. package/lib/routes/gov/csrc/news.ts +1 -3
  418. package/lib/routes/gov/forestry/gjlckjdjt.ts +0 -2
  419. package/lib/routes/gov/general/general.ts +1 -4
  420. package/lib/routes/gov/guangdong/tqyb/sncsyjxh.ts +0 -2
  421. package/lib/routes/gov/guangdong/tqyb/tfxtq.ts +0 -2
  422. package/lib/routes/gov/hangzhou/zwfw.ts +0 -2
  423. package/lib/routes/gov/huizhou/zwgk/index.ts +3 -3
  424. package/lib/routes/gov/hunan/changsha/major-email.ts +3 -3
  425. package/lib/routes/gov/jiangsu/wlt/index.ts +2 -5
  426. package/lib/routes/gov/jinan/healthcommission/medical-exam-notice.ts +16 -18
  427. package/lib/routes/gov/mee/ywdt.ts +3 -3
  428. package/lib/routes/gov/miit/wjfb.ts +6 -6
  429. package/lib/routes/gov/miit/yjzj.ts +6 -6
  430. package/lib/routes/gov/miit/zcwj.ts +1 -1
  431. package/lib/routes/gov/moa/gjs.ts +2 -1
  432. package/lib/routes/gov/moa/moa.ts +3 -3
  433. package/lib/routes/gov/moa/zdscxx.ts +13 -11
  434. package/lib/routes/gov/moe/moe.ts +35 -37
  435. package/lib/routes/gov/mof/gss.ts +82 -0
  436. package/lib/routes/gov/nea/ghs.ts +70 -37
  437. package/lib/routes/gov/nrta/dsj.ts +13 -14
  438. package/lib/routes/gov/nrta/news.ts +3 -3
  439. package/lib/routes/gov/pbc/goutongjiaoliu.ts +3 -3
  440. package/lib/routes/gov/pbc/gzlw.ts +3 -3
  441. package/lib/routes/gov/pbc/trade-announcement.ts +3 -3
  442. package/lib/routes/gov/pbc/zcyj.ts +3 -3
  443. package/lib/routes/gov/safe/util.ts +0 -3
  444. package/lib/routes/gov/samr/xgzlyhd.ts +0 -2
  445. package/lib/routes/gov/sh/fgw/index.ts +0 -2
  446. package/lib/routes/gov/sh/rsj/ksxm.ts +3 -5
  447. package/lib/routes/gov/sh/wgj/wgj.ts +3 -5
  448. package/lib/routes/gov/sh/wsjkw/yqtb/index.ts +14 -18
  449. package/lib/routes/gov/shenzhen/hrss/szksy/index.ts +3 -3
  450. package/lib/routes/gov/shenzhen/zzb/index.ts +3 -3
  451. package/lib/routes/gov/sichuan/deyang/govpublicinfo.ts +0 -2
  452. package/lib/routes/gov/sichuan/deyang/mztoday.ts +0 -2
  453. package/lib/routes/gov/stats/index.ts +0 -2
  454. package/lib/routes/gov/taiyuan/rsj.ts +3 -3
  455. package/lib/routes/grainoil/category.ts +2 -1
  456. package/lib/routes/greasyfork/feedback.ts +1 -1
  457. package/lib/routes/greasyfork/versions.ts +1 -1
  458. package/lib/routes/guancha/member.ts +1 -1
  459. package/lib/routes/guangdiu/cheaps.ts +3 -3
  460. package/lib/routes/guangdiu/index.ts +3 -3
  461. package/lib/routes/guangdiu/rank.ts +3 -3
  462. package/lib/routes/guangdiu/search.ts +3 -3
  463. package/lib/routes/guangzhoumetro/news.ts +3 -3
  464. package/lib/routes/guduodata/daily.ts +0 -2
  465. package/lib/routes/gumroad/index.ts +0 -2
  466. package/lib/routes/guozaoke/index.ts +34 -35
  467. package/lib/routes/gzdaily/app.ts +0 -2
  468. package/lib/routes/hackernews/index.ts +5 -5
  469. package/lib/routes/hackyournews/index.ts +5 -5
  470. package/lib/routes/hafu/utils.ts +90 -99
  471. package/lib/routes/hanime1/namespace.ts +7 -0
  472. package/lib/routes/hanime1/previews.ts +97 -0
  473. package/lib/routes/hanime1/search.ts +95 -0
  474. package/lib/routes/hashnode/blog.ts +0 -2
  475. package/lib/routes/hbr/topic.ts +3 -3
  476. package/lib/routes/hdu/cs/notice.ts +10 -15
  477. package/lib/routes/hdu/cs/pg.ts +10 -15
  478. package/lib/routes/hebtv/nong-bo-shi-zai-xing-dong.ts +0 -2
  479. package/lib/routes/hellobtc/information.ts +3 -3
  480. package/lib/routes/hellobtc/kepu.ts +3 -3
  481. package/lib/routes/hellobtc/news.ts +3 -3
  482. package/lib/routes/hellogithub/report.ts +0 -2
  483. package/lib/routes/hellogithub/volume.ts +0 -2
  484. package/lib/routes/hicairo/rss.ts +3 -3
  485. package/lib/routes/hiring.cafe/jobs.ts +0 -3
  486. package/lib/routes/hit/hitgs.ts +3 -3
  487. package/lib/routes/hitcon/zeroday.ts +0 -3
  488. package/lib/routes/hitwh/today.ts +3 -3
  489. package/lib/routes/hk01/utils.ts +0 -3
  490. package/lib/routes/hkej/index.ts +11 -15
  491. package/lib/routes/hkepc/index.ts +1 -1
  492. package/lib/routes/hket/index.ts +1 -3
  493. package/lib/routes/hkjunkcall/index.ts +3 -3
  494. package/lib/routes/hostmonit/cloudflareyes.ts +0 -2
  495. package/lib/routes/hotukdeals/index.ts +2 -2
  496. package/lib/routes/houxu/events.ts +0 -2
  497. package/lib/routes/houxu/index.ts +0 -2
  498. package/lib/routes/houxu/memory.ts +0 -2
  499. package/lib/routes/howtoforge/rss.ts +3 -3
  500. package/lib/routes/hoyolab/news.ts +0 -2
  501. package/lib/routes/hpoi/banner-item.ts +3 -3
  502. package/lib/routes/hpoi/info.ts +68 -23
  503. package/lib/routes/hpoi/user.ts +3 -3
  504. package/lib/routes/hpoi/utils.ts +3 -3
  505. package/lib/routes/hrbeu/gx/card.ts +3 -3
  506. package/lib/routes/hrbeu/gx/list.ts +3 -3
  507. package/lib/routes/hrbeu/job/bigemploy.ts +3 -3
  508. package/lib/routes/hrbeu/job/calendar.ts +3 -3
  509. package/lib/routes/hrbeu/job/list.ts +3 -3
  510. package/lib/routes/hrbeu/uae/news.ts +3 -3
  511. package/lib/routes/hrbeu/yjsy/list.ts +3 -3
  512. package/lib/routes/huggingface/blog-community.ts +126 -0
  513. package/lib/routes/hupu/all.ts +0 -2
  514. package/lib/routes/hupu/bbs.ts +0 -2
  515. package/lib/routes/huxiu/util.ts +0 -3
  516. package/lib/routes/i-cable/news.ts +0 -3
  517. package/lib/routes/ianspriggs/index.ts +0 -2
  518. package/lib/routes/icac/news.ts +3 -3
  519. package/lib/routes/idaily/index.ts +0 -2
  520. package/lib/routes/idolmaster/news.ts +1 -1
  521. package/lib/routes/ieee/author.ts +0 -2
  522. package/lib/routes/ieee/journal.ts +0 -2
  523. package/lib/routes/ielts/index.ts +1 -1
  524. package/lib/routes/ifeng/news.ts +0 -2
  525. package/lib/routes/ifeng/utils.ts +0 -3
  526. package/lib/routes/iguoguo/index.ts +57 -55
  527. package/lib/routes/ikea/cn/utils.ts +0 -3
  528. package/lib/routes/ikea/gb/new.ts +0 -2
  529. package/lib/routes/ikea/gb/offer.ts +0 -2
  530. package/lib/routes/iknowwhatyoudownload/daily.ts +1 -4
  531. package/lib/routes/imdb/chart.ts +1 -3
  532. package/lib/routes/imhcg/blog.ts +6 -6
  533. package/lib/routes/imiker/jinghua.ts +0 -2
  534. package/lib/routes/infoq/presentations.ts +0 -2
  535. package/lib/routes/infoq/topic.ts +1 -1
  536. package/lib/routes/informs/index.ts +3 -6
  537. package/lib/routes/inoreader/index.ts +17 -19
  538. package/lib/routes/instagram/common-utils.ts +0 -3
  539. package/lib/routes/instagram/private-api/index.ts +1 -1
  540. package/lib/routes/instagram/web-api/utils.ts +0 -3
  541. package/lib/routes/ipsw/index.ts +10 -11
  542. package/lib/routes/ipsw.dev/index.ts +3 -5
  543. package/lib/routes/iqilu/program.ts +0 -2
  544. package/lib/routes/iqiyi/album.ts +0 -2
  545. package/lib/routes/iqiyi/video.ts +6 -10
  546. package/lib/routes/iresearch/chart.ts +0 -3
  547. package/lib/routes/iresearch/report.ts +1 -3
  548. package/lib/routes/iresearch/weekly.ts +0 -2
  549. package/lib/routes/itch/devlog.ts +0 -2
  550. package/lib/routes/itch/index.ts +0 -2
  551. package/lib/routes/ithome/index.ts +3 -3
  552. package/lib/routes/ithome/ranking.ts +5 -5
  553. package/lib/routes/ithome/tag.ts +3 -3
  554. package/lib/routes/ithome/tw/feeds.ts +1 -1
  555. package/lib/routes/ithome/zt.ts +0 -2
  556. package/lib/routes/iwara/subscriptions.ts +0 -2
  557. package/lib/routes/ixigua/user-video.ts +0 -2
  558. package/lib/routes/jandan/index.ts +36 -12
  559. package/lib/routes/jandan/section.ts +102 -44
  560. package/lib/routes/jandan/utils.ts +248 -0
  561. package/lib/routes/japanpost/track.ts +46 -53
  562. package/lib/routes/japanpost/utils.ts +4 -4
  563. package/lib/routes/javbus/index.ts +0 -2
  564. package/lib/routes/javlibrary/utils.ts +0 -3
  565. package/lib/routes/javtiful/utils.ts +0 -3
  566. package/lib/routes/javtrailers/utils.ts +0 -2
  567. package/lib/routes/jd/price.ts +0 -2
  568. package/lib/routes/jewishmuseum/exhibitions.ts +2 -2
  569. package/lib/routes/jianshu/collection.ts +1 -1
  570. package/lib/routes/jianshu/home.ts +1 -1
  571. package/lib/routes/jianshu/user.ts +1 -1
  572. package/lib/routes/jiemian/account.ts +16 -0
  573. package/lib/routes/jiemian/common.ts +101 -0
  574. package/lib/routes/jiemian/lists.ts +93 -106
  575. package/lib/routes/jiemian/special.ts +12 -0
  576. package/lib/routes/jiemian/video.ts +19 -0
  577. package/lib/routes/jiemian/vip.ts +20 -0
  578. package/lib/routes/jike/utils.ts +0 -1
  579. package/lib/routes/jimmyspa/books.ts +0 -2
  580. package/lib/routes/jimmyspa/news.ts +0 -2
  581. package/lib/routes/jin10/category.ts +221 -0
  582. package/lib/routes/jin10/index.ts +0 -2
  583. package/lib/routes/jingzhengu/utils.ts +3 -3
  584. package/lib/routes/jinse/catalogue.ts +0 -2
  585. package/lib/routes/jinse/lives.ts +0 -2
  586. package/lib/routes/jinse/timeline.ts +0 -2
  587. package/lib/routes/jisilu/util.ts +2 -1
  588. package/lib/routes/jiuyangongshe/community.ts +1 -4
  589. package/lib/routes/jjwxc/author.ts +0 -2
  590. package/lib/routes/jjwxc/book.ts +0 -2
  591. package/lib/routes/joins/chinese.ts +0 -2
  592. package/lib/routes/joneslanglasalle/index.ts +2 -4
  593. package/lib/routes/jpmorganchase/namespace.ts +9 -0
  594. package/lib/routes/jpmorganchase/research.ts +107 -0
  595. package/lib/routes/jpxgmn/search.ts +2 -2
  596. package/lib/routes/jpxgmn/tab.ts +3 -3
  597. package/lib/routes/jpxgmn/utils.ts +11 -6
  598. package/lib/routes/jpxgmn/weekly.ts +3 -3
  599. package/lib/routes/juejin/pins.ts +4 -6
  600. package/lib/routes/jumeili/home.ts +98 -0
  601. package/lib/routes/{trending → jumeili}/namespace.ts +2 -2
  602. package/lib/routes/jump/discount.ts +0 -2
  603. package/lib/routes/kadokawa/blog.ts +0 -2
  604. package/lib/routes/kamen-rider-official/news.ts +0 -2
  605. package/lib/routes/kantarworldpanel/index.ts +0 -2
  606. package/lib/routes/kanxue/topic.ts +5 -5
  607. package/lib/routes/kbs/news.ts +3 -3
  608. package/lib/routes/kbs/today.ts +3 -3
  609. package/lib/routes/kcna/news.ts +35 -37
  610. package/lib/routes/keep/templates/user.art +10 -8
  611. package/lib/routes/keep/user.ts +30 -38
  612. package/lib/routes/kemono/index.ts +2 -4
  613. package/lib/routes/kepu/live.ts +0 -2
  614. package/lib/routes/kpmg/insights.ts +0 -2
  615. package/lib/routes/kpopping/kpics.ts +10 -13
  616. package/lib/routes/kpopping/news.ts +2 -4
  617. package/lib/routes/kuaidi100/utils.ts +1 -1
  618. package/lib/routes/kurogames/namespace.ts +1 -1
  619. package/lib/routes/kurogames/wutheringwaves/constants.ts +34 -0
  620. package/lib/routes/kurogames/wutheringwaves/news.ts +63 -33
  621. package/lib/routes/kurogames/wutheringwaves/utils.ts +79 -0
  622. package/lib/routes/kyodonews/index.ts +8 -10
  623. package/lib/routes/lala/rss.ts +3 -3
  624. package/lib/routes/lang/room.ts +0 -2
  625. package/lib/routes/lanqiao/utils.ts +0 -3
  626. package/lib/routes/learnblockchain/posts.ts +11 -15
  627. package/lib/routes/learnku/topic.ts +1 -3
  628. package/lib/routes/leetcode/articles.ts +8 -8
  629. package/lib/routes/leetcode/dailyquestion-cn.ts +0 -2
  630. package/lib/routes/leetcode/dailyquestion-en.ts +0 -2
  631. package/lib/routes/leiphone/index.ts +1 -1
  632. package/lib/routes/lfsyd/utils.ts +0 -3
  633. package/lib/routes/lhratings/research.ts +2 -1
  634. package/lib/routes/linkedin/cn/renderer.ts +1 -1
  635. package/lib/routes/linkedin/cn/utils.ts +1 -4
  636. package/lib/routes/linkedin/posts.ts +1 -0
  637. package/lib/routes/linkresearcher/index.ts +1 -3
  638. package/lib/routes/linovelib/novel.ts +4 -4
  639. package/lib/routes/liquipedia/cs-matches.ts +20 -22
  640. package/lib/routes/literotica/category.ts +3 -3
  641. package/lib/routes/literotica/new.ts +3 -3
  642. package/lib/routes/lkong/forum.ts +0 -2
  643. package/lib/routes/lkong/thread.ts +0 -2
  644. package/lib/routes/lmu/jobs.ts +0 -2
  645. package/lib/routes/logclub/index.ts +0 -2
  646. package/lib/routes/logclub/report.ts +0 -2
  647. package/lib/routes/logonews/index.ts +0 -2
  648. package/lib/routes/logrocket/index.ts +1 -8
  649. package/lib/routes/loltw/news.ts +0 -2
  650. package/lib/routes/lorientlejour/index.ts +1 -3
  651. package/lib/routes/lovelive-anime/news.ts +0 -2
  652. package/lib/routes/lovelive-anime/schedules.ts +2 -4
  653. package/lib/routes/lovelive-anime/topics.ts +0 -2
  654. package/lib/routes/lrepacks/index.ts +0 -2
  655. package/lib/routes/lsnu/jiaowc/tzgg.ts +1 -1
  656. package/lib/routes/ltaaa/article.ts +2 -4
  657. package/lib/routes/luogu/contest.ts +25 -25
  658. package/lib/routes/luolei/index.ts +0 -2
  659. package/lib/routes/lvv2/news.ts +3 -5
  660. package/lib/routes/lvv2/top.ts +3 -5
  661. package/lib/routes/lxixsxa/discography.ts +0 -2
  662. package/lib/routes/lxixsxa/information.ts +0 -2
  663. package/lib/routes/m4/index.ts +0 -2
  664. package/lib/routes/maccms/index.ts +1 -2
  665. package/lib/routes/magazinelib/latest-magazine.ts +0 -2
  666. package/lib/routes/manhuagui/comic.ts +30 -31
  667. package/lib/routes/manhuagui/subscribe.ts +8 -10
  668. package/lib/routes/manyvids/video.ts +1 -4
  669. package/lib/routes/mckinsey/cn/index.ts +1 -1
  670. package/lib/routes/mcmod/index.ts +2 -3
  671. package/lib/routes/mdpi/journal.ts +3 -5
  672. package/lib/routes/melonbooks/search.ts +1 -1
  673. package/lib/routes/mercari/util.ts +0 -2
  674. package/lib/routes/metacritic/index.ts +0 -2
  675. package/lib/routes/metacritic/release.ts +1 -1
  676. package/lib/routes/meteor/utils.ts +0 -3
  677. package/lib/routes/mi/utils.ts +4 -7
  678. package/lib/routes/mihoyo/bbs/follow-list.ts +0 -2
  679. package/lib/routes/mihoyo/bbs/official.ts +0 -2
  680. package/lib/routes/mihoyo/bbs/utils.ts +0 -3
  681. package/lib/routes/mihoyo/ys/news.ts +19 -75
  682. package/lib/routes/mindmeister/example.ts +0 -2
  683. package/lib/routes/minecraft/version.ts +6 -6
  684. package/lib/routes/mingpao/index.ts +1 -3
  685. package/lib/routes/miniflux/entry.ts +5 -5
  686. package/lib/routes/miniflux/subscription.ts +2 -2
  687. package/lib/routes/missav/new.ts +0 -2
  688. package/lib/routes/misskey/home-timeline.ts +1 -1
  689. package/lib/routes/misskey/user-timeline.ts +1 -1
  690. package/lib/routes/misskey/utils.ts +0 -3
  691. package/lib/routes/mittrchina/index.ts +0 -2
  692. package/lib/routes/modelscope/community.ts +0 -2
  693. package/lib/routes/modelscope/datasets.ts +0 -2
  694. package/lib/routes/modelscope/studios.ts +0 -2
  695. package/lib/routes/modian/zhongchou.ts +3 -3
  696. package/lib/routes/modrinth/versions.ts +0 -3
  697. package/lib/routes/mpaypass/main.ts +7 -7
  698. package/lib/routes/mpaypass/news.ts +2 -2
  699. package/lib/routes/mrdx/daily.ts +1 -1
  700. package/lib/routes/msn/index.ts +2 -2
  701. package/lib/routes/mycard520/news.ts +3 -11
  702. package/lib/routes/mydrivers/cid.ts +192 -6
  703. package/lib/routes/mydrivers/index.ts +41 -13
  704. package/lib/routes/mydrivers/rank.ts +2 -3
  705. package/lib/routes/mydrivers/util.ts +10 -13
  706. package/lib/routes/myfans/post.ts +1 -4
  707. package/lib/routes/myfigurecollection/activity.ts +0 -2
  708. package/lib/routes/myfigurecollection/index.ts +0 -2
  709. package/lib/routes/mymusicsheet/usersheets.ts +1 -3
  710. package/lib/routes/nasa/apod-ncku.ts +3 -3
  711. package/lib/routes/nasa/apod.ts +3 -3
  712. package/lib/routes/natgeo/dailyphoto.ts +0 -2
  713. package/lib/routes/nationalgeographic/latest-stories.ts +0 -2
  714. package/lib/routes/nautil/topics.ts +0 -2
  715. package/lib/routes/nber/common.ts +0 -3
  716. package/lib/routes/ncc-cma/cmdp.ts +0 -2
  717. package/lib/routes/ncepu/master/masterinfo.ts +3 -3
  718. package/lib/routes/neea/index.ts +1 -1
  719. package/lib/routes/neea/jlpt.ts +3 -2
  720. package/lib/routes/netflav/index.ts +0 -2
  721. package/lib/routes/neu/bmie.ts +1 -1
  722. package/lib/routes/newrank/utils.ts +11 -1
  723. package/lib/routes/news/xhsxw.ts +0 -2
  724. package/lib/routes/newsmarket/index.ts +3 -3
  725. package/lib/routes/newzmz/index.ts +1 -1
  726. package/lib/routes/newzmz/util.ts +0 -3
  727. package/lib/routes/nextapple/realtime.ts +28 -27
  728. package/lib/routes/nga/post.ts +3 -2
  729. package/lib/routes/ngocn2/index.ts +3 -3
  730. package/lib/routes/nhentai/util.ts +0 -3
  731. package/lib/routes/nhk/news-web-easy.ts +15 -22
  732. package/lib/routes/nhk/news.ts +0 -2
  733. package/lib/routes/nicovideo/utils.ts +1 -4
  734. package/lib/routes/nifd/research.ts +3 -3
  735. package/lib/routes/nikkei/asia/index.ts +27 -27
  736. package/lib/routes/nikkei/cn/index.ts +8 -1
  737. package/lib/routes/nikkei/news.ts +0 -2
  738. package/lib/routes/nintendo/direct.ts +0 -2
  739. package/lib/routes/nintendo/eshop-hk.ts +0 -2
  740. package/lib/routes/nintendo/eshop-jp.ts +0 -2
  741. package/lib/routes/nintendo/eshop-us.ts +0 -2
  742. package/lib/routes/nintendo/system-update.ts +2 -4
  743. package/lib/routes/nintendo/utils.ts +2 -5
  744. package/lib/routes/njit/jwc.ts +5 -6
  745. package/lib/routes/njit/tzgg.ts +6 -6
  746. package/lib/routes/njnu/ceai/ceai.ts +1 -1
  747. package/lib/routes/njnu/jwc/jwc.ts +3 -3
  748. package/lib/routes/nju/gra.ts +2 -2
  749. package/lib/routes/nju/scit.ts +8 -10
  750. package/lib/routes/nju/zbb.ts +19 -23
  751. package/lib/routes/njupt/jwc.ts +6 -6
  752. package/lib/routes/njust/cwc.ts +5 -9
  753. package/lib/routes/njust/dgxg.ts +5 -9
  754. package/lib/routes/njust/eo.ts +5 -9
  755. package/lib/routes/njust/eoe.ts +5 -9
  756. package/lib/routes/njust/jwc.ts +5 -9
  757. package/lib/routes/nltimes/news.ts +5 -5
  758. package/lib/routes/nmtv/column.ts +0 -2
  759. package/lib/routes/notateslaapp/update.ts +9 -13
  760. package/lib/routes/notefolio/search.ts +0 -2
  761. package/lib/routes/now/news.ts +3 -3
  762. package/lib/routes/nowcoder/discuss.ts +5 -5
  763. package/lib/routes/nowcoder/jobcenter.ts +3 -3
  764. package/lib/routes/npm/package.ts +0 -2
  765. package/lib/routes/ntdm/video.ts +4 -4
  766. package/lib/routes/ntdtv/channel.ts +2 -2
  767. package/lib/routes/nuaa/college/cae.ts +6 -6
  768. package/lib/routes/nuaa/college/cs.ts +6 -6
  769. package/lib/routes/nuaa/jwc/jwc.ts +6 -6
  770. package/lib/routes/nuaa/yjsy/yjsy.ts +6 -6
  771. package/lib/routes/nuist/bulletin.ts +20 -22
  772. package/lib/routes/nwafu/all.ts +3 -3
  773. package/lib/routes/nytimes/book.ts +3 -3
  774. package/lib/routes/nytimes/daily-briefing-chinese.ts +0 -2
  775. package/lib/routes/nytimes/rss.ts +5 -1
  776. package/lib/routes/oceanengine/arithmetic-index.ts +1 -3
  777. package/lib/routes/oeeee/app/channel.ts +0 -2
  778. package/lib/routes/oeeee/app/reporter.ts +0 -2
  779. package/lib/routes/oeeee/web.ts +0 -2
  780. package/lib/routes/oilchem/index.ts +3 -3
  781. package/lib/routes/oncc/index.ts +3 -5
  782. package/lib/routes/oncc/money18.ts +0 -2
  783. package/lib/routes/onet/news.ts +0 -2
  784. package/lib/routes/onet/utils.ts +0 -3
  785. package/lib/routes/openai/chatgpt.ts +2 -2
  786. package/lib/routes/openai/common.ts +69 -3
  787. package/lib/routes/openai/news.ts +32 -0
  788. package/lib/routes/openrice/chart.ts +0 -2
  789. package/lib/routes/openrice/offers.ts +0 -2
  790. package/lib/routes/openrice/promos.ts +0 -2
  791. package/lib/routes/orcid/index.ts +0 -2
  792. package/lib/routes/oreno3d/main.ts +40 -44
  793. package/lib/routes/oschina/column.ts +2 -4
  794. package/lib/routes/oschina/event.ts +2 -4
  795. package/lib/routes/oshwhub/explore.ts +0 -2
  796. package/lib/routes/osu/beatmaps/latest-ranked.ts +2 -4
  797. package/lib/routes/otobanana/utils.ts +0 -3
  798. package/lib/routes/oup/index.ts +0 -2
  799. package/lib/routes/p-articles/contributors.ts +5 -5
  800. package/lib/routes/p-articles/section.ts +5 -5
  801. package/lib/routes/papers/category.ts +2 -4
  802. package/lib/routes/papers/query.ts +0 -2
  803. package/lib/routes/parliament.uk/petitions.ts +0 -3
  804. package/lib/routes/patagonia/new-arrivals.ts +9 -16
  805. package/lib/routes/patreon/feed.ts +0 -3
  806. package/lib/routes/penguin-random-house/articles.ts +5 -7
  807. package/lib/routes/penguin-random-house/thereaddown.ts +5 -7
  808. package/lib/routes/penguin-random-house/utils.ts +1 -4
  809. package/lib/routes/people/index.ts +13 -13
  810. package/lib/routes/people/xjpjh.ts +5 -5
  811. package/lib/routes/phoronix/index.ts +2 -2
  812. package/lib/routes/pianyuan/app.ts +1 -1
  813. package/lib/routes/pianyuan/search.ts +2 -2
  814. package/lib/routes/picnob/user.ts +4 -6
  815. package/lib/routes/picuki/profile.ts +0 -2
  816. package/lib/routes/pikabu/utils.ts +0 -3
  817. package/lib/routes/pincong/hot.ts +6 -8
  818. package/lib/routes/pincong/index.ts +5 -7
  819. package/lib/routes/pincong/topic.ts +5 -7
  820. package/lib/routes/pixabay/search.ts +0 -2
  821. package/lib/routes/pixiv/api/get-ranking.ts +1 -1
  822. package/lib/routes/pixiv/pixiv-got.ts +1 -1
  823. package/lib/routes/piyao/jrpy.ts +3 -3
  824. package/lib/routes/pku/bbs/hot.ts +5 -7
  825. package/lib/routes/pku/cls/lecture.ts +3 -3
  826. package/lib/routes/pku/hr.ts +3 -3
  827. package/lib/routes/pku/nsd.ts +3 -3
  828. package/lib/routes/pku/pkuyjs.ts +9 -13
  829. package/lib/routes/pku/rccp/mzyt.ts +3 -3
  830. package/lib/routes/pku/scc/recruit.ts +3 -3
  831. package/lib/routes/playpcesor/rss.ts +3 -3
  832. package/lib/routes/pnas/index.ts +1 -3
  833. package/lib/routes/podwise/episodes.ts +1 -1
  834. package/lib/routes/pornhub/category.ts +2 -2
  835. package/lib/routes/pornhub/utils.ts +0 -3
  836. package/lib/routes/priconne-redive/news.ts +1 -1
  837. package/lib/routes/producthunt/today.ts +0 -2
  838. package/lib/routes/ps/monthly-games.ts +0 -2
  839. package/lib/routes/ps/trophy.ts +35 -43
  840. package/lib/routes/psyche/utils.ts +0 -3
  841. package/lib/routes/pts/curations.ts +0 -2
  842. package/lib/routes/pts/index.ts +0 -2
  843. package/lib/routes/pts/live.ts +0 -2
  844. package/lib/routes/pts/projects.ts +0 -2
  845. package/lib/routes/pubmed/trending.ts +0 -2
  846. package/lib/routes/qidian/author.ts +0 -2
  847. package/lib/routes/qidian/free-next.ts +11 -13
  848. package/lib/routes/qidian/free.ts +13 -15
  849. package/lib/routes/qingting/podcast.ts +1 -1
  850. package/lib/routes/qipamaijia/index.ts +3 -3
  851. package/lib/routes/qoo-app/apps/comment.ts +0 -2
  852. package/lib/routes/qoo-app/news.ts +1 -1
  853. package/lib/routes/qoo-app/notes/note.ts +0 -2
  854. package/lib/routes/qoo-app/user/app-comment.ts +0 -2
  855. package/lib/routes/qq/ac/utils.ts +0 -3
  856. package/lib/routes/qq/fact/index.ts +0 -2
  857. package/lib/routes/qq88/index.ts +3 -3
  858. package/lib/routes/questmobile/report.ts +0 -2
  859. package/lib/routes/qust/jw.ts +3 -3
  860. package/lib/routes/qweather/3days.ts +0 -2
  861. package/lib/routes/qweather/now.ts +0 -2
  862. package/lib/routes/radio/album.ts +0 -2
  863. package/lib/routes/radio/index.ts +0 -2
  864. package/lib/routes/radio/zhibo.ts +0 -2
  865. package/lib/routes/raspberrypi/magazine.ts +2 -4
  866. package/lib/routes/rattibha/templates/description.art +12 -0
  867. package/lib/routes/rattibha/user.ts +33 -24
  868. package/lib/routes/rawkuma/manga.ts +0 -2
  869. package/lib/routes/readhub/daily.ts +2 -2
  870. package/lib/routes/readhub/index.ts +0 -2
  871. package/lib/routes/readhub/util.ts +0 -3
  872. package/lib/routes/resonac/products.ts +1 -1
  873. package/lib/routes/reuters/common.ts +17 -4
  874. package/lib/routes/reuters/investigates.ts +3 -3
  875. package/lib/routes/rfi/namespace.ts +4 -1
  876. package/lib/routes/rfi/news.ts +15 -4
  877. package/lib/routes/routledge/book-series.ts +0 -2
  878. package/lib/routes/rsc/journal.ts +0 -2
  879. package/lib/routes/rsshub/routes.ts +1 -1
  880. package/lib/routes/ruc/ai.ts +2 -2
  881. package/lib/routes/rustcc/jobs.ts +1 -1
  882. package/lib/routes/rustcc/news.ts +1 -1
  883. package/lib/routes/sara/index.ts +1 -1
  884. package/lib/routes/saraba1st/digest.ts +7 -7
  885. package/lib/routes/saraba1st/namespace.ts +1 -1
  886. package/lib/routes/saraba1st/templates/digest.art +1 -1
  887. package/lib/routes/saraba1st/thread.ts +10 -6
  888. package/lib/routes/science/cover.ts +0 -2
  889. package/lib/routes/science/utils.ts +0 -3
  890. package/lib/routes/sciencedirect/call-for-paper.ts +0 -2
  891. package/lib/routes/scientificamerican/podcast.ts +0 -3
  892. package/lib/routes/scmp/index.ts +15 -10
  893. package/lib/routes/sctv/programme.ts +0 -2
  894. package/lib/routes/scut/jwc/news.ts +1 -1
  895. package/lib/routes/scut/jwc/notice.ts +1 -1
  896. package/lib/routes/scut/jwc/school.ts +1 -1
  897. package/lib/routes/sdu/cmse.ts +3 -3
  898. package/lib/routes/sdu/cs/index.ts +4 -4
  899. package/lib/routes/sdu/epe.ts +3 -3
  900. package/lib/routes/sdu/mech.ts +3 -4
  901. package/lib/routes/sdu/sc.ts +3 -3
  902. package/lib/routes/seekingalpha/index.ts +0 -2
  903. package/lib/routes/sehuatang/index.ts +1 -1
  904. package/lib/routes/sensortower/blog.ts +0 -2
  905. package/lib/routes/shcstheatre/programs.ts +0 -2
  906. package/lib/routes/shiep/index.ts +0 -2
  907. package/lib/routes/shmeea/self-study.ts +1 -1
  908. package/lib/routes/shmtu/portal.ts +0 -2
  909. package/lib/routes/shoac/recent-show.ts +0 -2
  910. package/lib/routes/shopback/store.ts +3 -3
  911. package/lib/routes/shopify/apps/[handle].reviews.ts +1 -1
  912. package/lib/routes/shoppingdesign/posts.ts +26 -25
  913. package/lib/routes/shuiguopai/index.ts +0 -2
  914. package/lib/routes/sicau/dky.ts +3 -3
  915. package/lib/routes/sicau/jiaowu.ts +1 -1
  916. package/lib/routes/sicau/yan.ts +3 -3
  917. package/lib/routes/sicau/zsjy.ts +3 -3
  918. package/lib/routes/simpleinfo/index.ts +3 -5
  919. package/lib/routes/sina/utils.ts +0 -3
  920. package/lib/routes/sinchew/index.ts +0 -2
  921. package/lib/routes/sjtu/gs.ts +3 -3
  922. package/lib/routes/sjtu/tongqu/activity.ts +0 -2
  923. package/lib/routes/skeb/utils.ts +0 -3
  924. package/lib/routes/snowpeak/us-new-arrivals.ts +4 -6
  925. package/lib/routes/sobooks/utils.ts +3 -3
  926. package/lib/routes/sogou/search.ts +0 -2
  927. package/lib/routes/sohu/mobile.ts +149 -0
  928. package/lib/routes/sohu/mp.ts +0 -2
  929. package/lib/routes/soundofhope/channel.ts +3 -3
  930. package/lib/routes/southcn/nfapp/column.ts +0 -2
  931. package/lib/routes/southcn/nfapp/reporter.ts +0 -2
  932. package/lib/routes/spankbang/new-videos.ts +0 -2
  933. package/lib/routes/spotify/saved.ts +1 -1
  934. package/lib/routes/springer/journal.ts +5 -7
  935. package/lib/routes/sqmc/www.ts +1 -1
  936. package/lib/routes/sse/convert.ts +11 -5
  937. package/lib/routes/sse/disclosure.ts +9 -5
  938. package/lib/routes/sse/inquire.ts +0 -2
  939. package/lib/routes/sse/renewal.ts +2 -4
  940. package/lib/routes/ssm/news.ts +14 -18
  941. package/lib/routes/sspai/series.ts +21 -23
  942. package/lib/routes/startuplatte/index.ts +3 -3
  943. package/lib/routes/stcn/index.ts +2 -1
  944. package/lib/routes/stdaily/digitalpaper.ts +9 -11
  945. package/lib/routes/steam/appcommunityfeed.ts +0 -2
  946. package/lib/routes/steam/curator.ts +0 -3
  947. package/lib/routes/steam/search.ts +1 -2
  948. package/lib/routes/steam/workshop-search.ts +0 -2
  949. package/lib/routes/stheadline/std/realtime.ts +1 -1
  950. package/lib/routes/storm/index.ts +3 -3
  951. package/lib/routes/storyfm/episodes.ts +0 -2
  952. package/lib/routes/storyfm/index.ts +3 -3
  953. package/lib/routes/straitstimes/index.ts +0 -2
  954. package/lib/routes/surfshark/blog.ts +0 -2
  955. package/lib/routes/swjtu/scai.ts +19 -4
  956. package/lib/routes/swjtu/utils.ts +0 -3
  957. package/lib/routes/swpu/cjxy.ts +1 -1
  958. package/lib/routes/swpu/dean.ts +1 -1
  959. package/lib/routes/swpu/dxy.ts +1 -1
  960. package/lib/routes/swpu/is.ts +1 -1
  961. package/lib/routes/syosetu/ranking-isekai.ts +1 -4
  962. package/lib/routes/syosetu/ranking-r18.ts +1 -4
  963. package/lib/routes/syosetu/ranking.ts +1 -4
  964. package/lib/routes/syosetu/search.ts +1 -4
  965. package/lib/routes/sysu/ygafz.ts +5 -31
  966. package/lib/routes/szftedu/gonggao.ts +1 -1
  967. package/lib/routes/szse/inquire.ts +0 -2
  968. package/lib/routes/szse/projectdynamic.ts +0 -2
  969. package/lib/routes/taobao/zhongchou.ts +0 -2
  970. package/lib/routes/taptap/utils.ts +0 -3
  971. package/lib/routes/techcrunch/news.ts +0 -2
  972. package/lib/routes/telecompaper/news.ts +3 -3
  973. package/lib/routes/telecompaper/search.ts +3 -3
  974. package/lib/routes/telegram/blog.ts +1 -1
  975. package/lib/routes/telegram/channel.ts +482 -487
  976. package/lib/routes/telegram/scripts/get-telegram-session.mjs +1 -1
  977. package/lib/routes/telegram/tglib/channel.ts +4 -4
  978. package/lib/routes/telegram/tglib/client.ts +2 -2
  979. package/lib/routes/tencent/news/author.ts +0 -2
  980. package/lib/routes/tencent/news/coronavirus/data.ts +0 -2
  981. package/lib/routes/tencent/news/coronavirus/total.ts +0 -2
  982. package/lib/routes/tesla/cx.ts +0 -2
  983. package/lib/routes/tfc-taiwan/category.ts +53 -0
  984. package/lib/routes/tfc-taiwan/index.ts +26 -10
  985. package/lib/routes/tfc-taiwan/namespace.ts +4 -1
  986. package/lib/routes/tfc-taiwan/utils.ts +24 -52
  987. package/lib/routes/the/index.ts +0 -2
  988. package/lib/routes/theatlantic/utils.ts +0 -3
  989. package/lib/routes/theblockbeats/index.ts +0 -3
  990. package/lib/routes/thecover/channel.ts +6 -8
  991. package/lib/routes/theinitium/app.ts +5 -5
  992. package/lib/routes/theinitium/templates/description.art +0 -3
  993. package/lib/routes/themoviedb/utils.ts +0 -3
  994. package/lib/routes/thenewslens/index.ts +0 -2
  995. package/lib/routes/thepaper/839studio/category.ts +8 -12
  996. package/lib/routes/thepaper/839studio/studio.ts +8 -12
  997. package/lib/routes/thepaper/factpaper.ts +0 -2
  998. package/lib/routes/thepaper/utils.ts +0 -3
  999. package/lib/routes/theverge/index.ts +0 -3
  1000. package/lib/routes/thoughtco/index.ts +0 -2
  1001. package/lib/routes/tiktok/user.ts +0 -2
  1002. package/lib/routes/timednews/news.ts +3 -3
  1003. package/lib/routes/tingshuitz/changsha.ts +3 -3
  1004. package/lib/routes/tingshuitz/dongguan.ts +9 -13
  1005. package/lib/routes/tingshuitz/hangzhou.ts +9 -13
  1006. package/lib/routes/tingshuitz/nanjing.ts +13 -15
  1007. package/lib/routes/tingshuitz/shenzhen.ts +0 -2
  1008. package/lib/routes/tingshuitz/xian.ts +9 -11
  1009. package/lib/routes/tingshuitz/xiaoshan.ts +9 -13
  1010. package/lib/routes/tingshuitz/yangjiang.ts +10 -12
  1011. package/lib/routes/tingtingfm/program.ts +0 -2
  1012. package/lib/routes/tisi/index.ts +3 -3
  1013. package/lib/routes/tju/cic/index.ts +3 -3
  1014. package/lib/routes/tju/news/index.ts +1 -1
  1015. package/lib/routes/tju/oaa/index.ts +3 -3
  1016. package/lib/routes/tju/yzb/index.ts +3 -3
  1017. package/lib/routes/tmtpost/util.ts +0 -3
  1018. package/lib/routes/tophub/list.ts +0 -2
  1019. package/lib/routes/toutiao/user.ts +1 -4
  1020. package/lib/routes/tradingview/blog.ts +42 -44
  1021. package/lib/routes/transcriptforest/index.ts +0 -2
  1022. package/lib/routes/transformer-circuits/index.ts +0 -5
  1023. package/lib/routes/tribalfootball/latest.ts +3 -5
  1024. package/lib/routes/trow/portal.ts +11 -15
  1025. package/lib/routes/tvb/news.ts +0 -2
  1026. package/lib/routes/tvtropes/featured.ts +0 -2
  1027. package/lib/routes/twitter/api/mobile-api/login.ts +1 -1
  1028. package/lib/routes/twitter/utils.ts +9 -8
  1029. package/lib/routes/twreporter/fetch-article.ts +0 -3
  1030. package/lib/routes/txrjy/fornumtopic.ts +5 -7
  1031. package/lib/routes/uber/blog.ts +1 -1
  1032. package/lib/routes/ucas/index.ts +1 -1
  1033. package/lib/routes/udn/breaking-news.ts +2 -4
  1034. package/lib/routes/uestc/auto.ts +3 -3
  1035. package/lib/routes/uestc/cqe.ts +3 -3
  1036. package/lib/routes/uestc/news.ts +3 -3
  1037. package/lib/routes/uestc/scse.ts +3 -3
  1038. package/lib/routes/uestc/sice.ts +3 -3
  1039. package/lib/routes/uestc/sise.ts +3 -3
  1040. package/lib/routes/ulapia/index.ts +4 -4
  1041. package/lib/routes/ulapia/research.ts +3 -3
  1042. package/lib/routes/unusualwhales/news.ts +10 -8
  1043. package/lib/routes/uptimerobot/rss.ts +0 -2
  1044. package/lib/routes/urbandictionary/random.ts +0 -2
  1045. package/lib/routes/ustb/tj/news.ts +1 -1
  1046. package/lib/routes/ustb/yjsy/news.ts +40 -44
  1047. package/lib/routes/ustc/index.ts +4 -4
  1048. package/lib/routes/ustc/jwc.ts +5 -5
  1049. package/lib/routes/usts/jwch.ts +3 -3
  1050. package/lib/routes/utgd/utils.ts +0 -3
  1051. package/lib/routes/uw/gix/news.ts +3 -3
  1052. package/lib/routes/v2ex/xna.ts +1 -1
  1053. package/lib/routes/vcb-s/category.ts +0 -2
  1054. package/lib/routes/vcb-s/index.ts +0 -2
  1055. package/lib/routes/verfghbw/press.ts +3 -3
  1056. package/lib/routes/vice/topic.ts +1 -3
  1057. package/lib/routes/vimeo/category.ts +0 -2
  1058. package/lib/routes/vimeo/channel.ts +16 -20
  1059. package/lib/routes/vimeo/usr-videos.ts +0 -2
  1060. package/lib/routes/visionias/utils.ts +0 -3
  1061. package/lib/routes/wainao/topics.ts +0 -3
  1062. package/lib/routes/wallhaven/index.ts +3 -3
  1063. package/lib/routes/wallpaperhub/index.ts +0 -2
  1064. package/lib/routes/wallstreetcn/live.ts +0 -2
  1065. package/lib/routes/warthunder/news.ts +0 -2
  1066. package/lib/routes/washingtonpost/app.ts +3 -5
  1067. package/lib/routes/wechat/data258.ts +4 -4
  1068. package/lib/routes/wechat/msgalbum.ts +1 -1
  1069. package/lib/routes/wechat/sogou.ts +171 -50
  1070. package/lib/routes/wechat/tgchannel.ts +113 -115
  1071. package/lib/routes/weibo/friends.ts +1 -1
  1072. package/lib/routes/weibo/group.ts +1 -1
  1073. package/lib/routes/weibo/keyword.ts +1 -1
  1074. package/lib/routes/weibo/search/hot.ts +1 -3
  1075. package/lib/routes/weibo/timeline.ts +1 -1
  1076. package/lib/routes/weibo/user-bookmarks.ts +1 -1
  1077. package/lib/routes/weibo/user.ts +9 -8
  1078. package/lib/routes/weibo/utils.ts +1 -1
  1079. package/lib/routes/wellcee/rent.ts +1 -3
  1080. package/lib/routes/wenku8/index.ts +3 -3
  1081. package/lib/routes/wfu/jwc.ts +18 -20
  1082. package/lib/routes/wfu/news.ts +18 -20
  1083. package/lib/routes/who/news-room.ts +8 -10
  1084. package/lib/routes/whu/gs/index.ts +2 -2
  1085. package/lib/routes/whu/news.ts +0 -2
  1086. package/lib/routes/whu/util.ts +0 -3
  1087. package/lib/routes/winstall/update.ts +0 -2
  1088. package/lib/routes/wise/pair.ts +1 -3
  1089. package/lib/routes/wizfile/index.ts +3 -3
  1090. package/lib/routes/wmc-bj/publish.ts +0 -2
  1091. package/lib/routes/wnacg/common.ts +0 -3
  1092. package/lib/routes/woshipm/popular.ts +3 -2
  1093. package/lib/routes/wsj/news.ts +3 -2
  1094. package/lib/routes/wsj/utils.ts +1 -12
  1095. package/lib/routes/wsyu/news.ts +6 -6
  1096. package/lib/routes/wtu/job.ts +3 -3
  1097. package/lib/routes/wzu/news.ts +13 -17
  1098. package/lib/routes/x-mol/news.ts +0 -2
  1099. package/lib/routes/x-mol/paper.ts +17 -22
  1100. package/lib/routes/xaut/index.ts +4 -4
  1101. package/lib/routes/xaut/jwc.ts +3 -3
  1102. package/lib/routes/xaut/rsc.ts +3 -3
  1103. package/lib/routes/xiaohongshu/user.ts +1 -1
  1104. package/lib/routes/xiaohongshu/util.ts +9 -5
  1105. package/lib/routes/xiaomiyoupin/crowdfunding.ts +0 -2
  1106. package/lib/routes/xiaomiyoupin/utils.ts +0 -3
  1107. package/lib/routes/ximalaya/utils.ts +2 -2
  1108. package/lib/routes/xinpianchang/util.ts +0 -3
  1109. package/lib/routes/xjtu/dean.ts +3 -7
  1110. package/lib/routes/xjtu/ee.ts +3 -3
  1111. package/lib/routes/xjtu/gs/tzgg.ts +3 -3
  1112. package/lib/routes/xjtu/job.ts +0 -2
  1113. package/lib/routes/xjtu/std.ts +0 -2
  1114. package/lib/routes/xjtu/zs.ts +171 -0
  1115. package/lib/routes/xkb/index.ts +0 -2
  1116. package/lib/routes/xmanhua/index.ts +13 -15
  1117. package/lib/routes/xmut/jwc/bkjw.ts +3 -3
  1118. package/lib/routes/xueqiu/stock-comments.ts +0 -2
  1119. package/lib/routes/xys/new.ts +0 -2
  1120. package/lib/routes/xyzrank/index.ts +0 -2
  1121. package/lib/routes/yahoo/news/listid.ts +1 -1
  1122. package/lib/routes/yahoo/news/utils.ts +0 -3
  1123. package/lib/routes/yamibo/bbs/forum.ts +5 -4
  1124. package/lib/routes/yamibo/utils.ts +0 -9
  1125. package/lib/routes/ycwb/index.ts +0 -2
  1126. package/lib/routes/yenpress/series.ts +1 -4
  1127. package/lib/routes/ygkkk/rss.ts +3 -3
  1128. package/lib/routes/yicai/dt.ts +0 -2
  1129. package/lib/routes/yicai/utils.ts +0 -3
  1130. package/lib/routes/yilinzazhi/latest.ts +1 -1
  1131. package/lib/routes/ymgal/game.ts +1 -3
  1132. package/lib/routes/yoasobi-music/info.ts +0 -2
  1133. package/lib/routes/yoasobi-music/live.ts +0 -2
  1134. package/lib/routes/yoasobi-music/media.ts +3 -8
  1135. package/lib/routes/yomujp/level.ts +2 -2
  1136. package/lib/routes/youku/channel.ts +24 -28
  1137. package/lib/routes/youtube/api/google.ts +189 -0
  1138. package/lib/routes/youtube/api/youtubei.ts +98 -0
  1139. package/lib/routes/youtube/channel.ts +45 -46
  1140. package/lib/routes/youtube/community.ts +2 -4
  1141. package/lib/routes/youtube/playlist.ts +10 -29
  1142. package/lib/routes/youtube/subscriptions.ts +3 -11
  1143. package/lib/routes/youtube/user.ts +30 -81
  1144. package/lib/routes/youtube/utils.ts +29 -42
  1145. package/lib/routes/yxdown/news.ts +3 -3
  1146. package/lib/routes/yxdown/recommend.ts +3 -3
  1147. package/lib/routes/yxdzqb/index.ts +17 -21
  1148. package/lib/routes/yyets/today.ts +8 -12
  1149. package/lib/routes/zagg/new-arrivals.ts +7 -9
  1150. package/lib/routes/zaimanhua/comic.ts +88 -0
  1151. package/lib/routes/zaimanhua/namespace.ts +7 -0
  1152. package/lib/routes/zaimanhua/template/comic.art +3 -0
  1153. package/lib/routes/zaimanhua/update.ts +86 -0
  1154. package/lib/routes/zaker/channel.ts +2 -5
  1155. package/lib/routes/zaker/focus.ts +2 -5
  1156. package/lib/routes/zaobao/util.ts +2 -5
  1157. package/lib/routes/zcmu/jwc/index.ts +3 -3
  1158. package/lib/routes/zcmu/yxy/index.ts +3 -3
  1159. package/lib/routes/zcool/discover.ts +0 -2
  1160. package/lib/routes/zcool/user.ts +1 -1
  1161. package/lib/routes/zcool/utils.ts +0 -3
  1162. package/lib/routes/zhibo8/luxiang.ts +1 -1
  1163. package/lib/routes/zhihu/hot.ts +28 -8
  1164. package/lib/routes/zhihu/pin/utils.ts +5 -5
  1165. package/lib/routes/zhihu/weekly.ts +7 -7
  1166. package/lib/routes/zhitongcaijing/index.ts +0 -2
  1167. package/lib/routes/zhiy/post.ts +0 -2
  1168. package/lib/routes/zhonglun/index.ts +0 -2
  1169. package/lib/routes/zhubai/top20.ts +0 -2
  1170. package/lib/routes/zhujiceping/rss.ts +3 -3
  1171. package/lib/routes/zimuxia/portfolio.ts +1 -1
  1172. package/lib/routes/zju/career/index.ts +10 -14
  1173. package/lib/routes/zju/cst/custom.ts +11 -16
  1174. package/lib/routes/zju/cst/index.ts +8 -13
  1175. package/lib/routes/zju/grs/index.ts +9 -13
  1176. package/lib/routes/zju/list.ts +6 -6
  1177. package/lib/routes/zju/physics/index.ts +3 -3
  1178. package/lib/routes/zjut/da/index.ts +3 -3
  1179. package/lib/routes/zjut/news.ts +3 -3
  1180. package/lib/routes/zodgame/forum.ts +0 -2
  1181. package/lib/routes/zotero/versions.ts +13 -17
  1182. package/lib/routes/zrblog/rss.ts +3 -3
  1183. package/lib/routes/zuvio/utils.ts +0 -3
  1184. package/lib/routes/zxcs/namespace.ts +7 -0
  1185. package/lib/routes/zxcs/novel.ts +95 -0
  1186. package/lib/routes/zyshow/index.ts +0 -2
  1187. package/lib/setup.test.ts +2 -0
  1188. package/lib/utils/camelcase-keys.spec.ts +3 -3
  1189. package/lib/utils/camelcase-keys.ts +4 -3
  1190. package/lib/utils/common-config.test.ts +3 -2
  1191. package/lib/utils/common-config.ts +17 -13
  1192. package/lib/utils/common-utils.ts +1 -1
  1193. package/lib/utils/git-hash.ts +1 -1
  1194. package/lib/utils/helpers.test.ts +8 -1
  1195. package/lib/utils/helpers.ts +20 -1
  1196. package/lib/utils/md5.ts +1 -1
  1197. package/lib/utils/parse-date.ts +4 -4
  1198. package/lib/utils/rand-user-agent.test.ts +2 -2
  1199. package/lib/utils/timezone.ts +1 -1
  1200. package/lib/utils/wechat-mp.ts +3 -2
  1201. package/package.json +57 -54
  1202. package/lib/routes/apnews/api.ts +0 -77
  1203. package/lib/routes/copernicium/index.ts +0 -75
  1204. package/lib/routes/dnaindia/category.ts +0 -0
  1205. package/lib/routes/jiemian/list.ts +0 -14
  1206. package/lib/routes/mihoyo/templates/ys.art +0 -4
  1207. package/lib/routes/openai/blog.ts +0 -66
  1208. package/lib/routes/rsshub/referer-map.ts +0 -14
  1209. package/lib/routes/tfc-taiwan/common.ts +0 -38
  1210. package/lib/routes/tfc-taiwan/topic.ts +0 -17
  1211. package/lib/routes/trending/all-trending.ts +0 -228
  1212. package/lib/routes/trending/templates/content.art +0 -25
  1213. package/lib/routes-deprecated/jpmorganchase/research.js +0 -52
@@ -1,5 +1,4 @@
1
1
  import { Route, ViewType } from '@/types';
2
- import { getCurrentPath } from '@/utils/helpers';
3
2
  import cache from '@/utils/cache';
4
3
  import { config } from '@/config';
5
4
  import ofetch from '@/utils/ofetch';
@@ -7,12 +6,10 @@ import { load } from 'cheerio';
7
6
  import { parseDate } from '@/utils/parse-date';
8
7
  import { art } from '@/utils/render';
9
8
  import path from 'node:path';
10
- import querystring from 'querystring';
9
+ import querystring from 'node:querystring';
11
10
  import { fallback, queryToBoolean } from '@/utils/readable-social';
12
11
  import tglibchannel from './tglib/channel';
13
12
 
14
- const __dirname = getCurrentPath(import.meta.url);
15
-
16
13
  /* message types */
17
14
  const REPLY = 'REPLY';
18
15
  const FORWARDED = 'FORWARDED';
@@ -241,522 +238,520 @@ async function handler(ctx) {
241
238
  itunes_author: channelName,
242
239
  image: $('.tgme_page_photo_image > img').attr('src'),
243
240
 
244
- item:
245
- list &&
246
- list
247
- .map((index, item) => {
248
- item = $(item);
249
- let extra = null;
250
-
251
- /* message types */
252
- let msgTypes = [];
253
- if (item.find('.service_message').length) {
254
- // service message can have an image (avatar changed)
255
- msgTypes.push(SERVICE);
256
- }
257
- // if (item.find('.tgme_widget_message_video').length) { // fail if video too big
258
- if (item.find('.tgme_widget_message_video_player').length) {
259
- // video and gif cannot be mixed, it's safe to do that
260
- msgTypes.push(item.find('.message_video_play').length ? VIDEO : GIF);
261
- }
262
- if (item.find('.tgme_widget_message_photo,.tgme_widget_message_service_photo').length) {
263
- // video and photo can be mixed
264
- msgTypes.push(PHOTO);
265
- }
266
- // all other types below cannot be mixed
267
- if (item.find('.tgme_widget_message_poll').length) {
268
- msgTypes.push(POLL);
269
- }
270
- if (item.find('.tgme_widget_message_voice').length) {
271
- msgTypes.push(VOICE);
272
- }
273
- if (item.find('.tgme_widget_message_document').length) {
274
- // music and document cannot be mixed, it's safe to do that
275
- msgTypes.push(item.find('.audio').length ? MUSIC : DOCUMENT);
276
- }
277
- if (item.find('.tgme_widget_message_location').length) {
278
- msgTypes.push(LOCATION);
279
- }
280
- if (item.find('.tgme_widget_message_contact').length) {
281
- msgTypes.push(CONTACT);
282
- }
283
- if (item.find('.tgme_widget_message_sticker').length) {
284
- msgTypes.push(STICKER);
285
- }
286
- if (item.find('.tgme_widget_message_tgsticker').length) {
287
- msgTypes.push(ANIMATED_STICKER);
288
- }
289
- if (item.find('.tgme_widget_message_videosticker').length) {
290
- msgTypes.push(VIDEO_STICKER);
291
- }
292
- if (item.find('.message_media_not_supported').length) {
293
- if (item.find('.media_supported_cont').length) {
294
- msgTypes.unshift(PARTIALLY_UNSUPPORTED);
295
- } else {
296
- if (msgTypes.length === 0 && !includeUnsupportedMsg) {
297
- return null; // drop unsupported message
298
- }
299
- msgTypes.unshift(UNSUPPORTED);
241
+ item: list
242
+ .toArray()
243
+ .map((item) => {
244
+ item = $(item);
245
+ let extra = null;
246
+
247
+ /* message types */
248
+ let msgTypes = [];
249
+ if (item.find('.service_message').length) {
250
+ // service message can have an image (avatar changed)
251
+ msgTypes.push(SERVICE);
252
+ }
253
+ // if (item.find('.tgme_widget_message_video').length) { // fail if video too big
254
+ if (item.find('.tgme_widget_message_video_player').length) {
255
+ // video and gif cannot be mixed, it's safe to do that
256
+ msgTypes.push(item.find('.message_video_play').length ? VIDEO : GIF);
257
+ }
258
+ if (item.find('.tgme_widget_message_photo,.tgme_widget_message_service_photo').length) {
259
+ // video and photo can be mixed
260
+ msgTypes.push(PHOTO);
261
+ }
262
+ // all other types below cannot be mixed
263
+ if (item.find('.tgme_widget_message_poll').length) {
264
+ msgTypes.push(POLL);
265
+ }
266
+ if (item.find('.tgme_widget_message_voice').length) {
267
+ msgTypes.push(VOICE);
268
+ }
269
+ if (item.find('.tgme_widget_message_document').length) {
270
+ // music and document cannot be mixed, it's safe to do that
271
+ msgTypes.push(item.find('.audio').length ? MUSIC : DOCUMENT);
272
+ }
273
+ if (item.find('.tgme_widget_message_location').length) {
274
+ msgTypes.push(LOCATION);
275
+ }
276
+ if (item.find('.tgme_widget_message_contact').length) {
277
+ msgTypes.push(CONTACT);
278
+ }
279
+ if (item.find('.tgme_widget_message_sticker').length) {
280
+ msgTypes.push(STICKER);
281
+ }
282
+ if (item.find('.tgme_widget_message_tgsticker').length) {
283
+ msgTypes.push(ANIMATED_STICKER);
284
+ }
285
+ if (item.find('.tgme_widget_message_videosticker').length) {
286
+ msgTypes.push(VIDEO_STICKER);
287
+ }
288
+ if (item.find('.message_media_not_supported').length) {
289
+ if (item.find('.media_supported_cont').length) {
290
+ msgTypes.unshift(PARTIALLY_UNSUPPORTED);
291
+ } else {
292
+ if (msgTypes.length === 0 && !includeUnsupportedMsg) {
293
+ return null; // drop unsupported message
300
294
  }
295
+ msgTypes.unshift(UNSUPPORTED);
301
296
  }
302
- // all other types above cannot be mixed
303
- if (item.find('.tgme_widget_message_author .tgme_widget_message_via_bot,.tgme_widget_message_forwarded_from .tgme_widget_message_via_bot').length) {
304
- // can be mixed with other types, excluding service messages
305
- msgTypes.unshift(VIA_BOT);
297
+ }
298
+ // all other types above cannot be mixed
299
+ if (item.find('.tgme_widget_message_author .tgme_widget_message_via_bot,.tgme_widget_message_forwarded_from .tgme_widget_message_via_bot').length) {
300
+ // can be mixed with other types, excluding service messages
301
+ msgTypes.unshift(VIA_BOT);
302
+ }
303
+ if (item.find('.tgme_widget_message_forwarded_from').length) {
304
+ // can be mixed with other types, excluding service messages and reply messages
305
+ msgTypes.unshift(FORWARDED);
306
+ if (!includeFwd) {
307
+ return null; // drop forwarded message
306
308
  }
307
- if (item.find('.tgme_widget_message_forwarded_from').length) {
308
- // can be mixed with other types, excluding service messages and reply messages
309
- msgTypes.unshift(FORWARDED);
310
- if (!includeFwd) {
311
- return null; // drop forwarded message
312
- }
309
+ }
310
+ if (item.find('.tgme_widget_message_reply').length) {
311
+ // can be mixed with other types, excluding service messages and forwarded messages
312
+ msgTypes.unshift(REPLY);
313
+ if (!includeReply) {
314
+ return null; // drop reply message
313
315
  }
314
- if (item.find('.tgme_widget_message_reply').length) {
315
- // can be mixed with other types, excluding service messages and forwarded messages
316
- msgTypes.unshift(REPLY);
317
- if (!includeReply) {
318
- return null; // drop reply message
316
+ }
317
+
318
+ /* fix emoji */
319
+ item.find('.emoji').each((_, emoji) => {
320
+ emoji = $(emoji);
321
+ emoji.replaceWith(`<span class="emoji">${emoji.text()}</span>`);
322
+ });
323
+
324
+ /* "Forwarded From" tag */
325
+ const fwdFrom = () => {
326
+ let fwdFrom = '';
327
+ const fwdFromNameObj = item.find('.tgme_widget_message_forwarded_from_name');
328
+ if (fwdFromNameObj.length) {
329
+ const userLink = fwdFromNameObj.attr('href');
330
+ const userHtml = userLink ? `<a href="${userLink}">${fwdFromNameObj.text()}</a>` : fwdFromNameObj.text();
331
+ fwdFrom += `<p>Forwarded From <b>${userHtml}</b>`;
332
+ const fwdFromAuthorObj = item.find('.tgme_widget_message_forwarded_from_author');
333
+ if (fwdFromAuthorObj.length && showFwdFromAuthor) {
334
+ fwdFrom += ` (${fwdFromAuthorObj.text()})`;
319
335
  }
336
+ fwdFrom += '</p>';
337
+
338
+ extra = {
339
+ links: [
340
+ {
341
+ type: 'repost',
342
+ url: userLink,
343
+ },
344
+ ],
345
+ };
320
346
  }
321
-
322
- /* fix emoji */
323
- item.find('.emoji').each((_, emoji) => {
324
- emoji = $(emoji);
325
- emoji.replaceWith(`<span class="emoji">${emoji.text()}</span>`);
326
- });
327
-
328
- /* "Forwarded From" tag */
329
- const fwdFrom = () => {
330
- let fwdFrom = '';
331
- const fwdFromNameObj = item.find('.tgme_widget_message_forwarded_from_name');
332
- if (fwdFromNameObj.length) {
333
- const userLink = fwdFromNameObj.attr('href');
334
- const userHtml = userLink ? `<a href="${userLink}">${fwdFromNameObj.text()}</a>` : fwdFromNameObj.text();
335
- fwdFrom += `<p>Forwarded From <b>${userHtml}</b>`;
336
- const fwdFromAuthorObj = item.find('.tgme_widget_message_forwarded_from_author');
337
- if (fwdFromAuthorObj.length && showFwdFromAuthor) {
338
- fwdFrom += ` (${fwdFromAuthorObj.text()})`;
339
- }
340
- fwdFrom += '</p>';
341
-
342
- extra = {
343
- links: [
344
- {
345
- type: 'repost',
346
- url: userLink,
347
- },
348
- ],
349
- };
350
- }
351
- return fwdFrom;
352
- };
353
-
354
- /* reply */
355
- const replyContent = () => {
356
- const replyObj = item.find('.tgme_widget_message_reply');
357
- if (replyObj.length === 0) {
358
- return '';
359
- } else {
360
- const replyAuthorObj = replyObj.find('.tgme_widget_message_author_name');
361
- const replyAuthor = replyAuthorObj.length ? replyAuthorObj.text() : '';
362
- const viaBotObj = replyObj.find('.tgme_widget_message_via_bot');
363
- const viaBotText = viaBotObj.length ? ` via <b>${viaBotObj.text()}</b>` : '';
364
- const replyLinkHref = replyObj.attr('href');
365
- const replyLink = replyLinkHref.length ? replyLinkHref : '';
366
- const replyMetaTextObj = replyObj.find('.tgme_widget_message_metatext');
367
- const replyMetaText = replyMetaTextObj.length ? `<p><small>${replyMetaTextObj.html()}</small></p>` : '';
368
- const replyTextObj = replyObj.find('.tgme_widget_message_text');
369
- const replyText = replyTextObj.length ? `<p>${replyTextObj.html()}</p>` : '';
370
-
371
- extra = {
372
- links: [
373
- {
374
- type: 'reply',
375
- url: replyLink,
376
- },
377
- ],
378
- };
379
- return replyLink === ''
380
- ? `<div class="rsshub-quote"><blockquote>
347
+ return fwdFrom;
348
+ };
349
+
350
+ /* reply */
351
+ const replyContent = () => {
352
+ const replyObj = item.find('.tgme_widget_message_reply');
353
+ if (replyObj.length === 0) {
354
+ return '';
355
+ } else {
356
+ const replyAuthorObj = replyObj.find('.tgme_widget_message_author_name');
357
+ const replyAuthor = replyAuthorObj.length ? replyAuthorObj.text() : '';
358
+ const viaBotObj = replyObj.find('.tgme_widget_message_via_bot');
359
+ const viaBotText = viaBotObj.length ? ` via <b>${viaBotObj.text()}</b>` : '';
360
+ const replyLinkHref = replyObj.attr('href');
361
+ const replyLink = replyLinkHref.length ? replyLinkHref : '';
362
+ const replyMetaTextObj = replyObj.find('.tgme_widget_message_metatext');
363
+ const replyMetaText = replyMetaTextObj.length ? `<p><small>${replyMetaTextObj.html()}</small></p>` : '';
364
+ const replyTextObj = replyObj.find('.tgme_widget_message_text');
365
+ const replyText = replyTextObj.length ? `<p>${replyTextObj.html()}</p>` : '';
366
+
367
+ extra = {
368
+ links: [
369
+ {
370
+ type: 'reply',
371
+ url: replyLink,
372
+ },
373
+ ],
374
+ };
375
+ return replyLink === ''
376
+ ? `<div class="rsshub-quote"><blockquote>
381
377
  <p><b>${replyAuthor}</b>${viaBotText}:</p>
382
378
  ${replyMetaText}
383
379
  ${replyText}
384
380
  </blockquote></div>`
385
- : `<div class="rsshub-quote"><blockquote>
381
+ : `<div class="rsshub-quote"><blockquote>
386
382
  <p><a href='${replyLink}'><b>${replyAuthor}</b>${viaBotText}:</a></p>
387
383
  ${replyMetaText}
388
384
  ${replyText}
389
385
  </blockquote></div>`;
390
- }
391
- };
392
-
393
- /* via bot */
394
- const viaBot = () => {
395
- const viaBotObj = item.find('.tgme_widget_message_author .tgme_widget_message_via_bot,.tgme_widget_message_forwarded_from .tgme_widget_message_via_bot');
396
- if (viaBotObj.length) {
397
- const userLink = viaBotObj.attr('href');
398
- const userHtml = userLink ? `<a href="${userLink}">${viaBotObj.text()}</a>` : viaBotObj.text();
399
- return `<p>via <b>${userHtml}</b></p>`;
400
- } else {
401
- return '';
402
- }
403
- };
386
+ }
387
+ };
388
+
389
+ /* via bot */
390
+ const viaBot = () => {
391
+ const viaBotObj = item.find('.tgme_widget_message_author .tgme_widget_message_via_bot,.tgme_widget_message_forwarded_from .tgme_widget_message_via_bot');
392
+ if (viaBotObj.length) {
393
+ const userLink = viaBotObj.attr('href');
394
+ const userHtml = userLink ? `<a href="${userLink}">${viaBotObj.text()}</a>` : viaBotObj.text();
395
+ return `<p>via <b>${userHtml}</b></p>`;
396
+ } else {
397
+ return '';
398
+ }
399
+ };
404
400
 
405
- /* images and videos */
406
- const generateMedia = (selector) => {
407
- const nodes = item.find(selector);
408
- if (!nodes.length) {
409
- return '';
410
- }
411
- let tag_media_all = '';
412
- const pictureNodes = nodes.find('picture');
413
- const imgNodes = nodes.find('img');
414
- nodes.each((_, node) => {
415
- const $node = $(node);
416
- let tag_media = '';
417
- if (node.attribs && node.attribs.class && node.attribs.class.search(/(^|\s)tgme_widget_message_video_player(\s|$)/) !== -1) {
418
- // video
419
- const videoLink = $node.find('.tgme_widget_message_video').attr('src');
420
- const thumbBackground = $node.find('.tgme_widget_message_video_thumb').css('background-image');
421
- const thumbBackgroundUrl = thumbBackground && thumbBackground.match(/url\('(.*)'\)/);
422
- const thumbBackgroundUrlSrc = thumbBackgroundUrl && thumbBackgroundUrl[1];
423
- tag_media += art(path.join(__dirname, 'templates/video.art'), {
424
- source: videoLink,
425
- poster: thumbBackgroundUrlSrc,
426
- });
427
- } else if ($node.attr('data-webp')) {
428
- // sticker
429
- tag_media += `<img src="${$node.attr('data-webp')}">`;
430
- } else if (node.name === 'picture') {
431
- // animated sticker
401
+ /* images and videos */
402
+ const generateMedia = (selector) => {
403
+ const nodes = item.find(selector);
404
+ if (!nodes.length) {
405
+ return '';
406
+ }
407
+ let tag_media_all = '';
408
+ const pictureNodes = nodes.find('picture');
409
+ const imgNodes = nodes.find('img');
410
+ nodes.each((_, node) => {
411
+ const $node = $(node);
412
+ let tag_media = '';
413
+ if (node.attribs && node.attribs.class && node.attribs.class.search(/(^|\s)tgme_widget_message_video_player(\s|$)/) !== -1) {
414
+ // video
415
+ const videoLink = $node.find('.tgme_widget_message_video').attr('src');
416
+ const thumbBackground = $node.find('.tgme_widget_message_video_thumb').css('background-image');
417
+ const thumbBackgroundUrl = thumbBackground && thumbBackground.match(/url\('(.*)'\)/);
418
+ const thumbBackgroundUrlSrc = thumbBackgroundUrl && thumbBackgroundUrl[1];
419
+ tag_media += art(path.join(__dirname, 'templates/video.art'), {
420
+ source: videoLink,
421
+ poster: thumbBackgroundUrlSrc,
422
+ });
423
+ } else if ($node.attr('data-webp')) {
424
+ // sticker
425
+ tag_media += `<img src="${$node.attr('data-webp')}">`;
426
+ } else if (node.name === 'picture') {
427
+ // animated sticker
428
+ tag_media += '<picture>';
429
+ $node.find('source,img').each((_, source) => {
430
+ tag_media += $(source).toString();
431
+ });
432
+ tag_media += '</picture>';
433
+ } else if (node.attribs && node.attribs.class && node.attribs.class.search(/(^|\s)tgme_widget_message_videosticker(\s|$)/) !== -1) {
434
+ // video sticker
435
+ const videoLink = $node.find('.js-videosticker_video').attr('src');
436
+ tag_media += art(path.join(__dirname, 'templates/video.art'), {
437
+ source: videoLink,
438
+ });
439
+ } else if (node.name === 'img') {
440
+ // unknown
441
+ tag_media += $node.toString();
442
+ } else if (pictureNodes.length) {
443
+ // unknown
444
+ pictureNodes.each((_, picture) => {
432
445
  tag_media += '<picture>';
433
- $node.find('source,img').each((_, source) => {
434
- tag_media += $(source).toString();
435
- });
446
+ $(picture)
447
+ .find('source,img')
448
+ .each((_, source) => {
449
+ tag_media += $(source).toString();
450
+ });
436
451
  tag_media += '</picture>';
437
- } else if (node.attribs && node.attribs.class && node.attribs.class.search(/(^|\s)tgme_widget_message_videosticker(\s|$)/) !== -1) {
438
- // video sticker
439
- const videoLink = $node.find('.js-videosticker_video').attr('src');
440
- tag_media += art(path.join(__dirname, 'templates/video.art'), {
441
- source: videoLink,
442
- });
443
- } else if (node.name === 'img') {
444
- // unknown
445
- tag_media += $node.toString();
446
- } else if (pictureNodes.length) {
447
- // unknown
448
- pictureNodes.each((_, picture) => {
449
- tag_media += '<picture>';
450
- $(picture)
451
- .find('source,img')
452
- .each((_, source) => {
453
- tag_media += $(source).toString();
454
- });
455
- tag_media += '</picture>';
456
- });
457
- } else if (imgNodes.length) {
458
- // service message
459
- imgNodes.each((_, img) => {
460
- tag_media += $(img).toString();
461
- });
462
- } else {
463
- // image message, location
464
- const background = $node.css('background-image');
465
- const backgroundUrl = background && background.match(/url\('(.*)'\)/);
466
- const backgroundUrlSrc = backgroundUrl && backgroundUrl[1];
467
- const attrs = [`src="${backgroundUrlSrc}"`];
468
- /*
469
- * If the width is not in px, it is either a percentage (Link Preview/Instant view)
470
- * or absent (ditto).
471
- * Only accept px to prevent images from being invisible or too small.
472
- */
473
- let width = 0;
474
- const widthStr = $node.css('width');
475
- if (widthStr && widthStr.endsWith('px')) {
476
- width = Number.parseFloat(widthStr);
477
- }
478
- /*
479
- * Height is present when the message is an album but does not exist in other cases.
480
- * Ditto, only accept px.
481
- * !!!NOTE: images in albums may have smaller width and height.
482
- */
483
- let height = 0;
484
- const heightStr = $node.css('height');
485
- if (heightStr && heightStr.endsWith('px')) {
486
- height = Number.parseFloat(heightStr);
487
- }
488
- /*
489
- * Only calculate height when needed.
490
- * The aspect ratio is either a percentage (single image) or absent (Link Preview).
491
- * Only accept percentage to prevent images from being invisible or distorted.
492
- */
493
- const aspectRatioStr = $node.find('.tgme_widget_message_photo').css('padding-top');
494
- if (height <= 0 && width > 0 && aspectRatioStr && aspectRatioStr.endsWith('%')) {
495
- height = (Number.parseFloat(aspectRatioStr) / 100) * width;
496
- }
497
- // Only set width/height when >32 to avoid invisible images.
498
- width > 32 && attrs.push(`width="${width}"`);
499
- height > 32 && attrs.push(`height="${height.toFixed(2).replace('.00', '')}"`);
500
- tag_media += backgroundUrlSrc ? `<img ${attrs.join(' ')}>` : '';
452
+ });
453
+ } else if (imgNodes.length) {
454
+ // service message
455
+ imgNodes.each((_, img) => {
456
+ tag_media += $(img).toString();
457
+ });
458
+ } else {
459
+ // image message, location
460
+ const background = $node.css('background-image');
461
+ const backgroundUrl = background && background.match(/url\('(.*)'\)/);
462
+ const backgroundUrlSrc = backgroundUrl && backgroundUrl[1];
463
+ const attrs = [`src="${backgroundUrlSrc}"`];
464
+ /*
465
+ * If the width is not in px, it is either a percentage (Link Preview/Instant view)
466
+ * or absent (ditto).
467
+ * Only accept px to prevent images from being invisible or too small.
468
+ */
469
+ let width = 0;
470
+ const widthStr = $node.css('width');
471
+ if (widthStr && widthStr.endsWith('px')) {
472
+ width = Number.parseFloat(widthStr);
501
473
  }
502
- if (tag_media) {
503
- tag_media_all += tag_media;
504
- $node.find('.message_media_not_supported').remove();
474
+ /*
475
+ * Height is present when the message is an album but does not exist in other cases.
476
+ * Ditto, only accept px.
477
+ * !!!NOTE: images in albums may have smaller width and height.
478
+ */
479
+ let height = 0;
480
+ const heightStr = $node.css('height');
481
+ if (heightStr && heightStr.endsWith('px')) {
482
+ height = Number.parseFloat(heightStr);
505
483
  }
506
- });
507
- return tag_media_all;
508
- };
509
- // ordinary message photos, service message photos, stickers, animated stickers, video
510
- const messageMedia = generateMedia(
511
- '.tgme_widget_message_photo_wrap,.tgme_widget_message_service_photo,.tgme_widget_message_sticker,.tgme_widget_message_tgsticker,.tgme_widget_message_videosticker,.tgme_widget_message_video_player'
512
- );
513
-
514
- /* location */
515
- const location = () => {
516
- const locationObj = item.find('.tgme_widget_message_location_wrap');
517
- if (locationObj.length) {
518
- const locationLink = locationObj.attr('href');
519
- const mapBackground = locationObj.find('.tgme_widget_message_location').css('background-image');
520
- const mapBackgroundUrl = mapBackground && mapBackground.match(/url\('(.*)'\)/);
521
- const mapBackgroundUrlSrc = mapBackgroundUrl && mapBackgroundUrl[1];
522
- const mapImgHtml = mapBackgroundUrlSrc ? `<img src="${mapBackgroundUrlSrc}">` : (showMediaTagAsEmoji ? mediaTagDict[LOCATION][1] : mediaTagDict[LOCATION][0]);
523
- return locationLink ? `<a href="${locationLink}">${mapImgHtml}</a>` : mapImgHtml;
524
- } else {
525
- return '';
484
+ /*
485
+ * Only calculate height when needed.
486
+ * The aspect ratio is either a percentage (single image) or absent (Link Preview).
487
+ * Only accept percentage to prevent images from being invisible or distorted.
488
+ */
489
+ const aspectRatioStr = $node.find('.tgme_widget_message_photo').css('padding-top');
490
+ if (height <= 0 && width > 0 && aspectRatioStr && aspectRatioStr.endsWith('%')) {
491
+ height = (Number.parseFloat(aspectRatioStr) / 100) * width;
492
+ }
493
+ // Only set width/height when >32 to avoid invisible images.
494
+ width > 32 && attrs.push(`width="${width}"`);
495
+ height > 32 && attrs.push(`height="${height.toFixed(2).replace('.00', '')}"`);
496
+ tag_media += backgroundUrlSrc ? `<img ${attrs.join(' ')}>` : '';
526
497
  }
527
- };
528
-
529
- /* voice */
530
- const voiceObj = item.find('audio.tgme_widget_message_voice');
531
- const durationObj = item.find('.tgme_widget_message_voice_duration');
532
- const durationInMmss = durationObj.text();
533
- const voiceUrl = voiceObj.length ? voiceObj.attr('src') : '';
534
- let voiceTitle = '';
535
- let voiceHtml = '';
536
- if (voiceUrl) {
537
- if (showMediaTagInTitle) {
538
- voiceTitle = durationInMmss ? `(${durationInMmss})` : '';
498
+ if (tag_media) {
499
+ tag_media_all += tag_media;
500
+ $node.find('.message_media_not_supported').remove();
539
501
  }
540
- voiceHtml += '<p><b>';
541
- voiceHtml += showMediaTagAsEmoji ? mediaTagDict[VOICE][1] : mediaTagDict[VOICE][0];
542
- voiceHtml += durationInMmss ? ` (${durationInMmss})` : '';
543
- voiceHtml += '</b></p>';
544
- voiceHtml += `<audio src="${voiceUrl}"></audio>`;
502
+ });
503
+ return tag_media_all;
504
+ };
505
+ // ordinary message photos, service message photos, stickers, animated stickers, video
506
+ const messageMedia = generateMedia(
507
+ '.tgme_widget_message_photo_wrap,.tgme_widget_message_service_photo,.tgme_widget_message_sticker,.tgme_widget_message_tgsticker,.tgme_widget_message_videosticker,.tgme_widget_message_video_player'
508
+ );
509
+
510
+ /* location */
511
+ const location = () => {
512
+ const locationObj = item.find('.tgme_widget_message_location_wrap');
513
+ if (locationObj.length) {
514
+ const locationLink = locationObj.attr('href');
515
+ const mapBackground = locationObj.find('.tgme_widget_message_location').css('background-image');
516
+ const mapBackgroundUrl = mapBackground && mapBackground.match(/url\('(.*)'\)/);
517
+ const mapBackgroundUrlSrc = mapBackgroundUrl && mapBackgroundUrl[1];
518
+ const mapImgHtml = mapBackgroundUrlSrc ? `<img src="${mapBackgroundUrlSrc}">` : (showMediaTagAsEmoji ? mediaTagDict[LOCATION][1] : mediaTagDict[LOCATION][0]);
519
+ return locationLink ? `<a href="${locationLink}">${mapImgHtml}</a>` : mapImgHtml;
520
+ } else {
521
+ return '';
545
522
  }
546
- const voiceDuration = () => {
547
- if (durationObj.length) {
548
- const p = durationInMmss.split(':');
549
- let second = 0,
550
- minute = 1;
551
- while (p.length > 0) {
552
- second += minute * Number.parseInt(p.pop(), 10);
553
- minute *= 60;
554
- }
555
- return second.toString();
556
- } else {
557
- return '';
558
- }
559
- };
560
-
561
- /* link preview */
562
- const linkPreview = () => {
563
- const linkPreviewSiteObj = item.find('.link_preview_site_name');
564
- const linkPreviewSite = linkPreviewSiteObj.length ? `<b>${linkPreviewSiteObj.text()}</b><br>` : '';
565
- const linkPreviewTitleObj = item.find('.link_preview_title');
566
- const linkPreviewTitle = linkPreviewTitleObj.length ? `<b><a href="${item.find('.tgme_widget_message_link_preview').attr('href')}">${linkPreviewTitleObj.text()}</a></b><br>` : '';
567
- const linkPreviewDescriptionObj = item.find('.link_preview_description');
568
- const linkPreviewDescription = linkPreviewDescriptionObj.length ? `<p>${linkPreviewDescriptionObj.html()}</p>` : '';
569
- const linkPreviewImage = generateMedia('.link_preview_image') + generateMedia('.link_preview_right_image');
570
-
571
- return linkPreviewSite.length > 0 || linkPreviewTitle.length > 0 || linkPreviewDescription.length > 0 || linkPreviewImage.length > 0
572
- ? `<blockquote>${linkPreviewSite}${linkPreviewTitle}${linkPreviewDescription}${linkPreviewImage}</blockquote>`
573
- : '';
574
- };
575
-
576
- /* poll */
577
- const pollQuestionObj = item.find('.tgme_widget_message_poll_question');
578
- const pollQuestion = pollQuestionObj.length ? pollQuestionObj.text() : '';
579
- const poll = () => {
580
- let pollHtml = '';
581
- const pollTypeObj = item.find('.tgme_widget_message_poll_type');
582
- const pollType = pollTypeObj.length ? pollTypeObj.text() : '';
583
- const pollOptions = item.find('.tgme_widget_message_poll_option');
584
- if (pollQuestion && pollType.length > 0 && pollOptions.length > 0) {
585
- pollHtml += `<p><b>${pollQuestion}</b></p>`;
586
- pollHtml += `<p><small>${pollType}</small></p>`;
587
- pollOptions.each((_, option) => {
588
- const $option = $(option);
589
- const percentObj = $option.find('.tgme_widget_message_poll_option_percent');
590
- const percent = percentObj.length ? percentObj.text() : '';
591
- const textObj = $option.find('.tgme_widget_message_poll_option_text');
592
- const text = textObj.length ? textObj.text() : '';
593
- if (percent && text) {
594
- pollHtml += `<p><b>${percent}</b> - ${text}</p>`;
595
- }
596
- });
523
+ };
524
+
525
+ /* voice */
526
+ const voiceObj = item.find('audio.tgme_widget_message_voice');
527
+ const durationObj = item.find('.tgme_widget_message_voice_duration');
528
+ const durationInMmss = durationObj.text();
529
+ const voiceUrl = voiceObj.length ? voiceObj.attr('src') : '';
530
+ let voiceTitle = '';
531
+ let voiceHtml = '';
532
+ if (voiceUrl) {
533
+ if (showMediaTagInTitle) {
534
+ voiceTitle = durationInMmss ? `(${durationInMmss})` : '';
535
+ }
536
+ voiceHtml += '<p><b>';
537
+ voiceHtml += showMediaTagAsEmoji ? mediaTagDict[VOICE][1] : mediaTagDict[VOICE][0];
538
+ voiceHtml += durationInMmss ? ` (${durationInMmss})` : '';
539
+ voiceHtml += '</b></p>';
540
+ voiceHtml += `<audio src="${voiceUrl}"></audio>`;
541
+ }
542
+ const voiceDuration = () => {
543
+ if (durationObj.length) {
544
+ const p = durationInMmss.split(':');
545
+ let second = 0,
546
+ minute = 1;
547
+ while (p.length > 0) {
548
+ second += minute * Number.parseInt(p.pop(), 10);
549
+ minute *= 60;
597
550
  }
598
- return pollHtml ? `<blockquote>${pollHtml}</blockquote>` : '';
599
- };
600
-
601
- /* attachment (document or music) */
602
- const documentWrapObj = item.find('.tgme_widget_message_document_wrap');
603
- let attachmentTitle = '';
604
- let attachmentHtml = '';
605
- if (documentWrapObj.length) {
606
- documentWrapObj.each((_, wrap) => {
607
- // a message may have multiple attachments
608
- const $wrap = $(wrap);
609
- const documentTitleObj = $wrap.find('.tgme_widget_message_document_title');
610
- const documentExtraObj = $wrap.find('.tgme_widget_message_document_extra');
611
- const documentTitle = documentTitleObj.length ? documentTitleObj.text() : '';
612
- const documentExtra = documentExtraObj.length ? documentExtraObj.text() : '';
613
- const _attachmentTitle = `${documentTitle}${documentTitle && documentExtra ? ' - ' : ''}${documentExtra}`;
614
- const _attachmentHtml = (documentTitle ? `<p><b>${documentTitle}</b></p>` : '') + (documentExtra ? `<p><small>${documentExtra}</small></p>` : '');
615
- attachmentTitle += attachmentTitle && _attachmentTitle ? ' | ' : '';
616
- attachmentTitle += _attachmentTitle;
617
- attachmentHtml += _attachmentHtml ? `<blockquote>${_attachmentHtml}</blockquote>` : '';
618
- const wrapNext = $wrap.next('.tgme_widget_message_text');
619
- if (wrapNext.length) {
620
- const captionHtml = wrapNext.html();
621
- if (captionHtml.length) {
622
- attachmentHtml += `<p>${captionHtml}</p>`;
623
- }
624
- // remove them, avoid being duplicated
625
- wrapNext.each((_, caption) => {
626
- $(caption).remove();
627
- });
628
- }
629
- });
551
+ return second.toString();
552
+ } else {
553
+ return '';
630
554
  }
631
-
632
- /* contact */
633
- const contactNameObj = item.find('.tgme_widget_message_contact_name');
634
- const contactName = contactNameObj.length ? contactNameObj.text() : '';
635
- const contactNameHtml = contactName ? `<b>${contactName}</b>` : '';
636
- const contactPhoneObj = item.find('.tgme_widget_message_contact_phone');
637
- const contactPhone = contactPhoneObj.length ? contactPhoneObj.text() : '';
638
- const contactPhoneHtml = contactPhone ? `<a href="tel:${contactPhone.replace(' ', '')}">${contactPhone}</a>` : '';
639
- const contactTitle = contactName + (contactName && contactPhone ? ': ' : '') + contactPhone;
640
- const contactHtml = contactNameHtml || contactPhoneHtml ? `<p>${contactNameHtml}${contactName && contactPhone ? ': ' : ''}${contactPhoneHtml}</p>` : '';
641
-
642
- /* inline buttons */
643
- let inlineButtons = '';
644
- const inlineButtonNodes = item.find('.tgme_widget_message_inline_button_text');
645
- if (showInlineButtons && inlineButtonNodes.length) {
646
- inlineButtons += '<table style="width: 100%"><tbody><tr>';
647
- inlineButtonNodes.each((_, button) => {
648
- const $button = $(button);
649
- const buttonText = $button.text();
650
- inlineButtons += `<td style="border: 2px solid;text-align: center"><b>${buttonText}</b></td>`;
555
+ };
556
+
557
+ /* link preview */
558
+ const linkPreview = () => {
559
+ const linkPreviewSiteObj = item.find('.link_preview_site_name');
560
+ const linkPreviewSite = linkPreviewSiteObj.length ? `<b>${linkPreviewSiteObj.text()}</b><br>` : '';
561
+ const linkPreviewTitleObj = item.find('.link_preview_title');
562
+ const linkPreviewTitle = linkPreviewTitleObj.length ? `<b><a href="${item.find('.tgme_widget_message_link_preview').attr('href')}">${linkPreviewTitleObj.text()}</a></b><br>` : '';
563
+ const linkPreviewDescriptionObj = item.find('.link_preview_description');
564
+ const linkPreviewDescription = linkPreviewDescriptionObj.length ? `<p>${linkPreviewDescriptionObj.html()}</p>` : '';
565
+ const linkPreviewImage = generateMedia('.link_preview_image') + generateMedia('.link_preview_right_image');
566
+
567
+ return linkPreviewSite.length > 0 || linkPreviewTitle.length > 0 || linkPreviewDescription.length > 0 || linkPreviewImage.length > 0
568
+ ? `<blockquote>${linkPreviewSite}${linkPreviewTitle}${linkPreviewDescription}${linkPreviewImage}</blockquote>`
569
+ : '';
570
+ };
571
+
572
+ /* poll */
573
+ const pollQuestionObj = item.find('.tgme_widget_message_poll_question');
574
+ const pollQuestion = pollQuestionObj.length ? pollQuestionObj.text() : '';
575
+ const poll = () => {
576
+ let pollHtml = '';
577
+ const pollTypeObj = item.find('.tgme_widget_message_poll_type');
578
+ const pollType = pollTypeObj.length ? pollTypeObj.text() : '';
579
+ const pollOptions = item.find('.tgme_widget_message_poll_option');
580
+ if (pollQuestion && pollType.length > 0 && pollOptions.length > 0) {
581
+ pollHtml += `<p><b>${pollQuestion}</b></p>`;
582
+ pollHtml += `<p><small>${pollType}</small></p>`;
583
+ pollOptions.each((_, option) => {
584
+ const $option = $(option);
585
+ const percentObj = $option.find('.tgme_widget_message_poll_option_percent');
586
+ const percent = percentObj.length ? percentObj.text() : '';
587
+ const textObj = $option.find('.tgme_widget_message_poll_option_text');
588
+ const text = textObj.length ? textObj.text() : '';
589
+ if (percent && text) {
590
+ pollHtml += `<p><b>${percent}</b> - ${text}</p>`;
591
+ }
651
592
  });
652
- inlineButtons += '</tr></tbody></table>';
653
593
  }
654
-
655
- /* unsupported */
656
- let unsupportedHtml = '';
657
- let unsupportedTitle = '';
658
- const unsupportedNodes = item.find('.message_media_not_supported');
659
- if (msgTypes.includes(UNSUPPORTED)) {
660
- if (unsupportedNodes.length) {
661
- unsupportedHtml += '<blockquote>';
662
- unsupportedNodes.find('.message_media_not_supported_label').each(function () {
663
- const $this = $(this);
664
- unsupportedTitle += $this.text();
665
- unsupportedHtml += `<p>${$this.text()}</p>`;
666
- });
667
- unsupportedNodes.find('.message_media_view_in_telegram').each(function () {
668
- const $this = $(this);
669
- unsupportedHtml += $this.attr('href') ? `<p><a href="${$this.attr('href')}">${$this.text()}</a></p>` : `<p>${$this.text()}</p>`;
594
+ return pollHtml ? `<blockquote>${pollHtml}</blockquote>` : '';
595
+ };
596
+
597
+ /* attachment (document or music) */
598
+ const documentWrapObj = item.find('.tgme_widget_message_document_wrap');
599
+ let attachmentTitle = '';
600
+ let attachmentHtml = '';
601
+ if (documentWrapObj.length) {
602
+ documentWrapObj.each((_, wrap) => {
603
+ // a message may have multiple attachments
604
+ const $wrap = $(wrap);
605
+ const documentTitleObj = $wrap.find('.tgme_widget_message_document_title');
606
+ const documentExtraObj = $wrap.find('.tgme_widget_message_document_extra');
607
+ const documentTitle = documentTitleObj.length ? documentTitleObj.text() : '';
608
+ const documentExtra = documentExtraObj.length ? documentExtraObj.text() : '';
609
+ const _attachmentTitle = `${documentTitle}${documentTitle && documentExtra ? ' - ' : ''}${documentExtra}`;
610
+ const _attachmentHtml = (documentTitle ? `<p><b>${documentTitle}</b></p>` : '') + (documentExtra ? `<p><small>${documentExtra}</small></p>` : '');
611
+ attachmentTitle += attachmentTitle && _attachmentTitle ? ' | ' : '';
612
+ attachmentTitle += _attachmentTitle;
613
+ attachmentHtml += _attachmentHtml ? `<blockquote>${_attachmentHtml}</blockquote>` : '';
614
+ const wrapNext = $wrap.next('.tgme_widget_message_text');
615
+ if (wrapNext.length) {
616
+ const captionHtml = wrapNext.html();
617
+ if (captionHtml.length) {
618
+ attachmentHtml += `<p>${captionHtml}</p>`;
619
+ }
620
+ // remove them, avoid being duplicated
621
+ wrapNext.each((_, caption) => {
622
+ $(caption).remove();
670
623
  });
671
- unsupportedHtml += '</blockquote>';
672
- } else {
673
- // remove unsupported type, previous parsing has proved that it is not unsupported
674
- msgTypes = msgTypes.filter((type) => type !== UNSUPPORTED);
675
624
  }
625
+ });
626
+ }
627
+
628
+ /* contact */
629
+ const contactNameObj = item.find('.tgme_widget_message_contact_name');
630
+ const contactName = contactNameObj.length ? contactNameObj.text() : '';
631
+ const contactNameHtml = contactName ? `<b>${contactName}</b>` : '';
632
+ const contactPhoneObj = item.find('.tgme_widget_message_contact_phone');
633
+ const contactPhone = contactPhoneObj.length ? contactPhoneObj.text() : '';
634
+ const contactPhoneHtml = contactPhone ? `<a href="tel:${contactPhone.replace(' ', '')}">${contactPhone}</a>` : '';
635
+ const contactTitle = contactName + (contactName && contactPhone ? ': ' : '') + contactPhone;
636
+ const contactHtml = contactNameHtml || contactPhoneHtml ? `<p>${contactNameHtml}${contactName && contactPhone ? ': ' : ''}${contactPhoneHtml}</p>` : '';
637
+
638
+ /* inline buttons */
639
+ let inlineButtons = '';
640
+ const inlineButtonNodes = item.find('.tgme_widget_message_inline_button_text');
641
+ if (showInlineButtons && inlineButtonNodes.length) {
642
+ inlineButtons += '<table style="width: 100%"><tbody><tr>';
643
+ inlineButtonNodes.each((_, button) => {
644
+ const $button = $(button);
645
+ const buttonText = $button.text();
646
+ inlineButtons += `<td style="border: 2px solid;text-align: center"><b>${buttonText}</b></td>`;
647
+ });
648
+ inlineButtons += '</tr></tbody></table>';
649
+ }
650
+
651
+ /* unsupported */
652
+ let unsupportedHtml = '';
653
+ let unsupportedTitle = '';
654
+ const unsupportedNodes = item.find('.message_media_not_supported');
655
+ if (msgTypes.includes(UNSUPPORTED)) {
656
+ if (unsupportedNodes.length) {
657
+ unsupportedHtml += '<blockquote>';
658
+ unsupportedNodes.find('.message_media_not_supported_label').each(function () {
659
+ const $this = $(this);
660
+ unsupportedTitle += $this.text();
661
+ unsupportedHtml += `<p>${$this.text()}</p>`;
662
+ });
663
+ unsupportedNodes.find('.message_media_view_in_telegram').each(function () {
664
+ const $this = $(this);
665
+ unsupportedHtml += $this.attr('href') ? `<p><a href="${$this.attr('href')}">${$this.text()}</a></p>` : `<p>${$this.text()}</p>`;
666
+ });
667
+ unsupportedHtml += '</blockquote>';
668
+ } else {
669
+ // remove unsupported type, previous parsing has proved that it is not unsupported
670
+ msgTypes = msgTypes.filter((type) => type !== UNSUPPORTED);
676
671
  }
672
+ }
677
673
 
678
- /* pubDate */
679
- const pubDate = parseDate(item.find('.tgme_widget_message_date time').attr('datetime'));
674
+ /* pubDate */
675
+ const pubDate = parseDate(item.find('.tgme_widget_message_date time').attr('datetime'));
680
676
 
681
- /* ----- finished parsing ----- */
677
+ /* ----- finished parsing ----- */
682
678
 
683
- /* media tag */
684
- let mediaTag = '';
685
- if (showMediaTagInTitle) {
686
- for (const type of msgTypes) {
687
- if (type !== REPLY || type !== FORWARDED || type !== VIA_BOT || (type === REPLY && showReplyTo) || (type === FORWARDED && showFwdFrom) || (type === VIA_BOT && showViaBot)) {
688
- mediaTag += showMediaTagAsEmoji ? mediaTagDict[type][1] : mediaTagDict[type][0];
689
- }
679
+ /* media tag */
680
+ let mediaTag = '';
681
+ if (showMediaTagInTitle) {
682
+ for (const type of msgTypes) {
683
+ if (type !== REPLY || type !== FORWARDED || type !== VIA_BOT || (type === REPLY && showReplyTo) || (type === FORWARDED && showFwdFrom) || (type === VIA_BOT && showViaBot)) {
684
+ mediaTag += showMediaTagAsEmoji ? mediaTagDict[type][1] : mediaTagDict[type][0];
690
685
  }
691
686
  }
692
-
693
- /* message text & title */
694
- const messageTextObj = item.find(`.${msgTypes.includes(PARTIALLY_UNSUPPORTED) ? 'media_supported_cont' : 'tgme_widget_message_bubble'} > .tgme_widget_message_text`);
695
- let messageHtml = '',
696
- messageTitle = '';
697
-
698
- if (messageTextObj.length > 0) {
699
- messageHtml = `<p>${messageTextObj.html()}</p>`;
700
- }
701
-
702
- let titleCompleteFlag = false;
703
- if (pollQuestion) {
704
- messageTitle = pollQuestion;
705
- titleCompleteFlag = true;
706
- } else if (attachmentTitle) {
707
- messageTitle = attachmentTitle;
708
- titleCompleteFlag = true;
709
- } else if (contactTitle) {
710
- messageTitle = contactTitle;
711
- titleCompleteFlag = true;
712
- } else if (voiceTitle) {
713
- messageTitle = voiceTitle;
714
- } else if (unsupportedTitle) {
715
- messageTitle = unsupportedTitle;
716
- titleCompleteFlag = true;
717
- }
718
-
719
- if (messageTextObj.length > 0 && !titleCompleteFlag) {
720
- const _messageTextObj = $(messageTextObj.toString());
721
- _messageTextObj.find('br').replaceWith('\n');
722
- const trimmedTitleText = _messageTextObj.text().split('\n').at(0)?.trim();
723
- messageTitle += (messageTitle && trimmedTitleText ? ': ' : '') + trimmedTitleText;
724
- }
725
-
726
- messageTitle = messageTitle === '' ? mediaTag || pubDate.toUTCString() : `${mediaTag}${mediaTag ? ' ' : ''}${messageTitle}`;
727
-
728
- let description = '';
729
- if (showFwdFrom) {
730
- description += fwdFrom();
731
- }
732
- if (showReplyTo) {
733
- description += replyContent();
734
- }
735
- if (showViaBot) {
736
- description += viaBot();
737
- }
738
- description += location() + poll() + contactHtml + voiceHtml + attachmentHtml + messageHtml + unsupportedHtml;
739
- if (showLinkPreview) {
740
- description += linkPreview();
741
- }
742
- description += inlineButtons + messageMedia;
743
-
744
- return {
745
- title: messageTitle,
746
- description,
747
- pubDate,
748
- link: item.find('.tgme_widget_message_date').attr('href'),
749
- author: item.find('.tgme_widget_message_from_author').text(),
750
-
751
- enclosure_url: voiceUrl,
752
- itunes_duration: voiceDuration(),
753
- enclosure_type: 'audio/ogg',
754
-
755
- _extra: extra,
756
- };
757
- })
758
- .get()
759
- .filter(Boolean)
760
- .reverse(),
687
+ }
688
+
689
+ /* message text & title */
690
+ const messageTextObj = item.find(`.${msgTypes.includes(PARTIALLY_UNSUPPORTED) ? 'media_supported_cont' : 'tgme_widget_message_bubble'} > .tgme_widget_message_text`);
691
+ let messageHtml = '',
692
+ messageTitle = '';
693
+
694
+ if (messageTextObj.length > 0) {
695
+ messageHtml = `<p>${messageTextObj.html()}</p>`;
696
+ }
697
+
698
+ let titleCompleteFlag = false;
699
+ if (pollQuestion) {
700
+ messageTitle = pollQuestion;
701
+ titleCompleteFlag = true;
702
+ } else if (attachmentTitle) {
703
+ messageTitle = attachmentTitle;
704
+ titleCompleteFlag = true;
705
+ } else if (contactTitle) {
706
+ messageTitle = contactTitle;
707
+ titleCompleteFlag = true;
708
+ } else if (voiceTitle) {
709
+ messageTitle = voiceTitle;
710
+ } else if (unsupportedTitle) {
711
+ messageTitle = unsupportedTitle;
712
+ titleCompleteFlag = true;
713
+ }
714
+
715
+ if (messageTextObj.length > 0 && !titleCompleteFlag) {
716
+ const _messageTextObj = $(messageTextObj.toString());
717
+ _messageTextObj.find('br').replaceWith('\n');
718
+ const trimmedTitleText = _messageTextObj.text().split('\n').at(0)?.trim();
719
+ messageTitle += (messageTitle && trimmedTitleText ? ': ' : '') + trimmedTitleText;
720
+ }
721
+
722
+ messageTitle = messageTitle === '' ? mediaTag || pubDate.toUTCString() : `${mediaTag}${mediaTag ? ' ' : ''}${messageTitle}`;
723
+
724
+ let description = '';
725
+ if (showFwdFrom) {
726
+ description += fwdFrom();
727
+ }
728
+ if (showReplyTo) {
729
+ description += replyContent();
730
+ }
731
+ if (showViaBot) {
732
+ description += viaBot();
733
+ }
734
+ description += location() + poll() + contactHtml + voiceHtml + attachmentHtml + messageHtml + unsupportedHtml;
735
+ if (showLinkPreview) {
736
+ description += linkPreview();
737
+ }
738
+ description += inlineButtons + messageMedia;
739
+
740
+ return {
741
+ title: messageTitle,
742
+ description,
743
+ pubDate,
744
+ link: item.find('.tgme_widget_message_date').attr('href'),
745
+ author: item.find('.tgme_widget_message_from_author').text(),
746
+
747
+ enclosure_url: voiceUrl,
748
+ itunes_duration: voiceDuration(),
749
+ enclosure_type: 'audio/ogg',
750
+
751
+ _extra: extra,
752
+ };
753
+ })
754
+ .filter(Boolean)
755
+ .reverse(),
761
756
  };
762
757
  }