@agentrhq/webcmd 0.1.2 → 0.2.0

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 (929) hide show
  1. package/README.md +183 -218
  2. package/cli-manifest.json +16247 -34913
  3. package/clis/_atlassian/shared.js +1 -1
  4. package/clis/booking/search.js +4 -4
  5. package/clis/chatgpt/ask.js +2 -2
  6. package/clis/chatgpt/utils.js +41 -42
  7. package/clis/chatgpt/utils.test.js +23 -23
  8. package/clis/chatgpt-app/ax.js +5 -5
  9. package/clis/chatgpt-app/ax.test.js +8 -8
  10. package/clis/chatgpt-app/new.js +2 -2
  11. package/clis/codex/sidebar.js +1 -1
  12. package/clis/codex/sidebar.test.js +12 -12
  13. package/clis/coingecko/top.js +3 -3
  14. package/clis/dblp/dblp.test.js +1 -1
  15. package/clis/discord-app/search.js +1 -1
  16. package/clis/discord-app/utils.js +6 -6
  17. package/clis/facebook/__fixtures__/notifications-page.html +6 -6
  18. package/clis/facebook/add-friend.js +2 -2
  19. package/clis/facebook/feed.js +18 -18
  20. package/clis/facebook/friends.js +4 -4
  21. package/clis/facebook/groups.js +3 -3
  22. package/clis/facebook/join-group.js +2 -2
  23. package/clis/facebook/marketplace-inbox.js +3 -3
  24. package/clis/facebook/marketplace-listings.js +1 -1
  25. package/clis/facebook/notifications.js +14 -15
  26. package/clis/facebook/notifications.test.js +28 -29
  27. package/clis/gemini/ask.test.js +12 -12
  28. package/clis/gemini/deep-research-result.js +2 -2
  29. package/clis/gemini/deep-research-result.test.js +2 -2
  30. package/clis/gemini/deep-research.js +2 -2
  31. package/clis/gemini/deep-research.test.js +1 -1
  32. package/clis/gemini/models.js +11 -11
  33. package/clis/gemini/models.test.js +1 -1
  34. package/clis/gemini/reply-state.test.js +89 -89
  35. package/clis/gemini/utils.js +41 -41
  36. package/clis/gemini/utils.test.js +30 -30
  37. package/clis/geogebra/utils.js +1 -1
  38. package/clis/google-scholar/search.js +3 -3
  39. package/clis/grok/delete.js +1 -1
  40. package/clis/grok/export-all.js +2 -2
  41. package/clis/grok/export.js +2 -2
  42. package/clis/grok/pin.js +3 -3
  43. package/clis/grok/utils.js +12 -12
  44. package/clis/grok/utils.test.js +2 -2
  45. package/clis/indeed/indeed.test.js +3 -3
  46. package/clis/indeed/utils.js +1 -1
  47. package/clis/instagram/post.js +19 -19
  48. package/clis/instagram/post.test.js +2 -2
  49. package/clis/instagram/reel.js +6 -6
  50. package/clis/linkedin/connect.js +3 -3
  51. package/clis/linkedin/people-search.js +4 -4
  52. package/clis/linkedin/profile-experience.js +6 -6
  53. package/clis/linkedin/profile-experience.test.js +10 -10
  54. package/clis/linkedin/profile-read.js +1 -1
  55. package/clis/linkedin/safe-send.js +1 -1
  56. package/clis/linkedin/search.js +1 -1
  57. package/clis/linkedin/shared.js +2 -2
  58. package/clis/linkedin/timeline.js +5 -5
  59. package/clis/manus/manus.test.js +2 -2
  60. package/clis/medium/feed.js +3 -3
  61. package/clis/medium/search.js +3 -3
  62. package/clis/medium/user.js +3 -3
  63. package/clis/notebooklm/auth.js +2 -2
  64. package/clis/notebooklm/note-list.test.js +4 -4
  65. package/clis/notebooklm/notes-get.test.js +8 -8
  66. package/clis/notebooklm/source-fulltext.test.js +11 -11
  67. package/clis/notebooklm/utils.js +28 -28
  68. package/clis/notebooklm/utils.test.js +10 -10
  69. package/clis/pixiv/search.test.js +3 -3
  70. package/clis/qoder/quest.js +2 -2
  71. package/clis/reddit/home.js +2 -2
  72. package/clis/reddit/hot.js +1 -1
  73. package/clis/reddit/read.js +2 -2
  74. package/clis/reddit/read.test.js +1 -1
  75. package/clis/reddit/reply.js +2 -2
  76. package/clis/reddit/whoami.js +2 -2
  77. package/clis/reuters/article-detail.js +1 -1
  78. package/clis/reuters/search.js +1 -1
  79. package/clis/slock/attachment-upload.test.js +1 -1
  80. package/clis/slock/task-convert.js +1 -1
  81. package/clis/substack/feed.js +3 -3
  82. package/clis/substack/publication.js +3 -3
  83. package/clis/substack/search.js +4 -4
  84. package/clis/tiktok/comment.js +2 -2
  85. package/clis/tiktok/follow.js +4 -4
  86. package/clis/tiktok/like.js +1 -1
  87. package/clis/tiktok/save.js +1 -1
  88. package/clis/tiktok/unfollow.js +4 -4
  89. package/clis/tiktok/unlike.js +1 -1
  90. package/clis/tiktok/unsave.js +2 -2
  91. package/clis/tiktok/write-refactor.test.js +5 -5
  92. package/clis/twitter/accept.js +3 -3
  93. package/clis/twitter/followers.js +1 -1
  94. package/clis/twitter/list-remove-core.js +2 -2
  95. package/clis/twitter/list-tweets.test.js +3 -3
  96. package/clis/twitter/lists.js +6 -6
  97. package/clis/twitter/lists.test.js +2 -2
  98. package/clis/twitter/reply-dm.js +1 -1
  99. package/clis/twitter/shared.test.js +4 -5
  100. package/clis/twitter/trending.js +1 -1
  101. package/clis/twitter/utils.js +1 -1
  102. package/clis/web/read.js +1 -1
  103. package/clis/web/read.test.js +2 -2
  104. package/clis/yahoo-finance/quote.js +1 -1
  105. package/clis/youtube/history.js +4 -4
  106. package/clis/youtube/transcript-group.js +1 -1
  107. package/clis/youtube/transcript-group.test.js +5 -5
  108. package/clis/youtube/transcript.js +5 -5
  109. package/clis/youtube/video.js +4 -4
  110. package/clis/youtube/video.test.js +6 -6
  111. package/dist/src/browser/analyze.test.js +13 -13
  112. package/dist/src/browser/bridge-readiness.d.ts +1 -1
  113. package/dist/src/browser/daemon-client.d.ts +1 -0
  114. package/dist/src/browser/daemon-client.js +102 -50
  115. package/dist/src/browser/daemon-client.test.js +104 -19
  116. package/dist/src/browser/errors.js +11 -0
  117. package/dist/src/browser/protocol.d.ts +2 -0
  118. package/dist/src/browser.test.js +2 -2
  119. package/dist/src/cli-argv-preprocess.d.ts +2 -2
  120. package/dist/src/cli-argv-preprocess.js +2 -2
  121. package/dist/src/cli-argv-preprocess.test.js +35 -35
  122. package/dist/src/cli.js +2 -2
  123. package/dist/src/cli.test.js +57 -57
  124. package/dist/src/commanderAdapter.test.js +19 -19
  125. package/dist/src/convention-audit.js +1 -1
  126. package/dist/src/daemon/server.js +28 -23
  127. package/dist/src/daemon/server.test.js +52 -0
  128. package/dist/src/daemon-utils.d.ts +1 -0
  129. package/dist/src/daemon-utils.js +9 -0
  130. package/dist/src/daemon.test.js +10 -1
  131. package/dist/src/doctor.js +7 -1
  132. package/dist/src/doctor.test.js +8 -1
  133. package/dist/src/download/article-download.d.ts +3 -3
  134. package/dist/src/download/article-download.js +7 -7
  135. package/dist/src/download/article-download.test.js +6 -6
  136. package/dist/src/download/index.js +1 -1
  137. package/dist/src/download/index.test.js +1 -2
  138. package/dist/src/download/media-download.d.ts +1 -1
  139. package/dist/src/download/media-download.js +1 -1
  140. package/dist/src/electron-apps.js +0 -8
  141. package/dist/src/electron-apps.test.js +2 -11
  142. package/dist/src/errors.test.js +9 -9
  143. package/dist/src/execution.js +2 -0
  144. package/dist/src/execution.test.js +12 -0
  145. package/dist/src/external-clis.yaml +0 -37
  146. package/dist/src/external.d.ts +1 -1
  147. package/dist/src/external.test.js +2 -17
  148. package/dist/src/generate-release-notes-cli.test.js +140 -0
  149. package/dist/src/help.d.ts +3 -3
  150. package/dist/src/help.test.js +8 -8
  151. package/dist/src/main.js +1 -1
  152. package/dist/src/manifest-types.d.ts +1 -1
  153. package/dist/src/node-network.test.js +2 -2
  154. package/dist/src/output.js +1 -1
  155. package/dist/src/pipeline/steps/download.test.js +3 -3
  156. package/dist/src/registry.test.js +2 -2
  157. package/dist/src/release-notes.d.ts +38 -0
  158. package/dist/src/release-notes.js +99 -0
  159. package/dist/src/release-notes.test.js +61 -0
  160. package/dist/src/serialization.test.js +7 -7
  161. package/dist/src/snapshotFormatter.js +3 -5
  162. package/dist/src/snapshotFormatter.test.d.ts +1 -1
  163. package/dist/src/snapshotFormatter.test.js +50 -50
  164. package/dist/src/tui.js +1 -1
  165. package/package.json +4 -1
  166. package/scripts/generate-release-notes.ts +234 -0
  167. package/scripts/postinstall.js +1 -1
  168. package/scripts/silent-column-drop-baseline.json +0 -498
  169. package/scripts/typed-error-lint-baseline.json +0 -464
  170. package/skills/webcmd-adapter-author/SKILL.md +216 -213
  171. package/skills/webcmd-adapter-author/references/adapter-template.md +206 -399
  172. package/skills/webcmd-adapter-author/references/api-discovery.md +111 -220
  173. package/skills/webcmd-adapter-author/references/coverage-matrix.md +34 -68
  174. package/skills/webcmd-adapter-author/references/field-conventions.md +84 -167
  175. package/skills/webcmd-adapter-author/references/field-decode-playbook.md +60 -146
  176. package/skills/webcmd-adapter-author/references/jsdom-fixture-pattern.md +111 -178
  177. package/skills/webcmd-adapter-author/references/output-design.md +47 -125
  178. package/skills/webcmd-adapter-author/references/site-memory.md +116 -166
  179. package/skills/webcmd-adapter-author/references/site-recon.md +74 -78
  180. package/skills/webcmd-adapter-author/references/strategy-selection.md +80 -124
  181. package/skills/webcmd-adapter-author/references/success-rate-pitfalls.md +80 -105
  182. package/skills/webcmd-adapter-author/references/typed-errors.md +87 -178
  183. package/skills/webcmd-autofix/SKILL.md +136 -143
  184. package/skills/webcmd-sitemap-author/SKILL.md +58 -67
  185. package/skills/webcmd-sitemap-author/references/sitemap-schema.md +354 -494
  186. package/skills/webcmd-usage/SKILL.md +106 -97
  187. package/clis/12306/auth.js +0 -59
  188. package/clis/12306/me.js +0 -73
  189. package/clis/12306/orders.js +0 -96
  190. package/clis/12306/passengers.js +0 -90
  191. package/clis/12306/price.js +0 -166
  192. package/clis/12306/stations.js +0 -66
  193. package/clis/12306/train.js +0 -91
  194. package/clis/12306/trains.js +0 -166
  195. package/clis/12306/utils.js +0 -272
  196. package/clis/12306/utils.test.js +0 -424
  197. package/clis/1688/assets.js +0 -205
  198. package/clis/1688/assets.test.js +0 -39
  199. package/clis/1688/auth.js +0 -46
  200. package/clis/1688/download.js +0 -77
  201. package/clis/1688/download.test.js +0 -31
  202. package/clis/1688/item.js +0 -188
  203. package/clis/1688/item.test.js +0 -67
  204. package/clis/1688/search.js +0 -310
  205. package/clis/1688/search.test.js +0 -75
  206. package/clis/1688/shared.js +0 -557
  207. package/clis/1688/shared.test.js +0 -57
  208. package/clis/1688/store.js +0 -227
  209. package/clis/1688/store.test.js +0 -62
  210. package/clis/1point3acres/auth.js +0 -52
  211. package/clis/1point3acres/digest.js +0 -35
  212. package/clis/1point3acres/forum.js +0 -51
  213. package/clis/1point3acres/forums.js +0 -44
  214. package/clis/1point3acres/hot.js +0 -35
  215. package/clis/1point3acres/latest.js +0 -35
  216. package/clis/1point3acres/notifications.js +0 -64
  217. package/clis/1point3acres/search.js +0 -71
  218. package/clis/1point3acres/thread.js +0 -117
  219. package/clis/1point3acres/user.js +0 -77
  220. package/clis/1point3acres/utils.js +0 -247
  221. package/clis/36kr/article.js +0 -66
  222. package/clis/36kr/article.test.js +0 -46
  223. package/clis/36kr/hot.js +0 -87
  224. package/clis/36kr/hot.test.js +0 -15
  225. package/clis/36kr/news.js +0 -52
  226. package/clis/36kr/news.test.js +0 -85
  227. package/clis/36kr/search.js +0 -79
  228. package/clis/51job/company.js +0 -126
  229. package/clis/51job/detail.js +0 -109
  230. package/clis/51job/hot.js +0 -56
  231. package/clis/51job/search.js +0 -80
  232. package/clis/51job/utils.js +0 -302
  233. package/clis/51job/utils.test.js +0 -69
  234. package/clis/aibase/news.js +0 -110
  235. package/clis/aibase/news.test.js +0 -59
  236. package/clis/autohome/__fixtures__/catalog.html +0 -11
  237. package/clis/autohome/__fixtures__/koubei.json +0 -116
  238. package/clis/autohome/autohome.test.js +0 -115
  239. package/clis/autohome/brand.js +0 -108
  240. package/clis/autohome/score.js +0 -103
  241. package/clis/autohome/utils.js +0 -157
  242. package/clis/baidu-scholar/search.js +0 -87
  243. package/clis/baidu-scholar/search.test.js +0 -23
  244. package/clis/bilibili/auth.js +0 -36
  245. package/clis/bilibili/comment.js +0 -107
  246. package/clis/bilibili/comment.test.js +0 -153
  247. package/clis/bilibili/comments.js +0 -136
  248. package/clis/bilibili/comments.test.js +0 -142
  249. package/clis/bilibili/download.js +0 -178
  250. package/clis/bilibili/download.test.js +0 -173
  251. package/clis/bilibili/dynamic.js +0 -34
  252. package/clis/bilibili/dynamic.test.js +0 -68
  253. package/clis/bilibili/favorite.js +0 -47
  254. package/clis/bilibili/feed.js +0 -220
  255. package/clis/bilibili/follow.js +0 -140
  256. package/clis/bilibili/follow.test.js +0 -203
  257. package/clis/bilibili/following.js +0 -44
  258. package/clis/bilibili/history.js +0 -45
  259. package/clis/bilibili/hot.js +0 -40
  260. package/clis/bilibili/hot.test.js +0 -17
  261. package/clis/bilibili/me.js +0 -13
  262. package/clis/bilibili/ranking.js +0 -25
  263. package/clis/bilibili/search.js +0 -24
  264. package/clis/bilibili/subtitle.js +0 -141
  265. package/clis/bilibili/subtitle.test.js +0 -240
  266. package/clis/bilibili/summary.js +0 -167
  267. package/clis/bilibili/summary.test.js +0 -210
  268. package/clis/bilibili/unfollow.js +0 -121
  269. package/clis/bilibili/user-videos.js +0 -39
  270. package/clis/bilibili/utils.js +0 -273
  271. package/clis/bilibili/utils.test.js +0 -97
  272. package/clis/bilibili/video.js +0 -155
  273. package/clis/bilibili/video.test.js +0 -308
  274. package/clis/boss/auth.js +0 -47
  275. package/clis/boss/batchgreet.js +0 -61
  276. package/clis/boss/chatlist.js +0 -116
  277. package/clis/boss/chatlist.test.js +0 -211
  278. package/clis/boss/chatmsg.js +0 -117
  279. package/clis/boss/chatmsg.test.js +0 -230
  280. package/clis/boss/detail.js +0 -63
  281. package/clis/boss/exchange.js +0 -46
  282. package/clis/boss/greet.js +0 -49
  283. package/clis/boss/invite.js +0 -64
  284. package/clis/boss/joblist.js +0 -31
  285. package/clis/boss/mark.js +0 -70
  286. package/clis/boss/recommend.js +0 -45
  287. package/clis/boss/resume.js +0 -150
  288. package/clis/boss/search.js +0 -197
  289. package/clis/boss/search.test.js +0 -78
  290. package/clis/boss/send.js +0 -44
  291. package/clis/boss/stats.js +0 -66
  292. package/clis/boss/utils.js +0 -468
  293. package/clis/boss/utils.test.js +0 -34
  294. package/clis/chaoxing/assignments.js +0 -76
  295. package/clis/chaoxing/auth.js +0 -54
  296. package/clis/chaoxing/exams.js +0 -75
  297. package/clis/chaoxing/utils.js +0 -223
  298. package/clis/chaoxing/utils.test.js +0 -45
  299. package/clis/cnki/search.js +0 -61
  300. package/clis/cnki/search.test.js +0 -18
  301. package/clis/ctrip/auth.js +0 -50
  302. package/clis/ctrip/ctrip.test.js +0 -719
  303. package/clis/ctrip/flight.js +0 -136
  304. package/clis/ctrip/hotel-search.js +0 -132
  305. package/clis/ctrip/hotel-suggest.js +0 -45
  306. package/clis/ctrip/search.js +0 -41
  307. package/clis/ctrip/utils.js +0 -473
  308. package/clis/deepseek/ask.js +0 -158
  309. package/clis/deepseek/ask.test.js +0 -399
  310. package/clis/deepseek/auth.js +0 -54
  311. package/clis/deepseek/detail.js +0 -46
  312. package/clis/deepseek/detail.test.js +0 -81
  313. package/clis/deepseek/history.js +0 -27
  314. package/clis/deepseek/new.js +0 -33
  315. package/clis/deepseek/read.js +0 -25
  316. package/clis/deepseek/send.js +0 -140
  317. package/clis/deepseek/send.test.js +0 -107
  318. package/clis/deepseek/status.js +0 -26
  319. package/clis/deepseek/utils.js +0 -487
  320. package/clis/deepseek/utils.test.js +0 -370
  321. package/clis/dianping/__fixtures__/search.html +0 -168
  322. package/clis/dianping/__fixtures__/shop.html +0 -6
  323. package/clis/dianping/auth.js +0 -49
  324. package/clis/dianping/cityResolver.js +0 -185
  325. package/clis/dianping/dianping.test.js +0 -578
  326. package/clis/dianping/search.js +0 -157
  327. package/clis/dianping/shop.js +0 -173
  328. package/clis/dianping/utils.js +0 -157
  329. package/clis/dongchedi/__fixtures__/search.json +0 -60
  330. package/clis/dongchedi/__fixtures__/series-detail.json +0 -911
  331. package/clis/dongchedi/__fixtures__/series-score.json +0 -1396
  332. package/clis/dongchedi/dongchedi.test.js +0 -191
  333. package/clis/dongchedi/koubei.js +0 -85
  334. package/clis/dongchedi/models.js +0 -91
  335. package/clis/dongchedi/score.js +0 -83
  336. package/clis/dongchedi/search.js +0 -83
  337. package/clis/dongchedi/series.js +0 -87
  338. package/clis/dongchedi/specs.js +0 -115
  339. package/clis/dongchedi/utils.js +0 -180
  340. package/clis/douban/auth.js +0 -50
  341. package/clis/douban/book-hot.js +0 -15
  342. package/clis/douban/download.js +0 -68
  343. package/clis/douban/download.test.js +0 -170
  344. package/clis/douban/marks.js +0 -116
  345. package/clis/douban/movie-hot.js +0 -15
  346. package/clis/douban/movie-hot.test.js +0 -14
  347. package/clis/douban/photos.js +0 -35
  348. package/clis/douban/reviews.js +0 -107
  349. package/clis/douban/search.js +0 -18
  350. package/clis/douban/search.test.js +0 -11
  351. package/clis/douban/subject.js +0 -46
  352. package/clis/douban/subject.test.js +0 -11
  353. package/clis/douban/top250.js +0 -68
  354. package/clis/douban/utils.js +0 -657
  355. package/clis/douban/utils.test.js +0 -488
  356. package/clis/doubao/ask.js +0 -40
  357. package/clis/doubao/auth.js +0 -66
  358. package/clis/doubao/detail.js +0 -35
  359. package/clis/doubao/detail.test.js +0 -42
  360. package/clis/doubao/history.js +0 -30
  361. package/clis/doubao/history.test.js +0 -37
  362. package/clis/doubao/meeting-summary.js +0 -41
  363. package/clis/doubao/meeting-transcript.js +0 -38
  364. package/clis/doubao/new.js +0 -22
  365. package/clis/doubao/read.js +0 -21
  366. package/clis/doubao/send.js +0 -24
  367. package/clis/doubao/status.js +0 -26
  368. package/clis/doubao/utils.js +0 -1156
  369. package/clis/doubao/utils.test.js +0 -396
  370. package/clis/doubao-app/ask.js +0 -54
  371. package/clis/doubao-app/dump.js +0 -25
  372. package/clis/doubao-app/new.js +0 -21
  373. package/clis/doubao-app/read.js +0 -19
  374. package/clis/doubao-app/screenshot.js +0 -19
  375. package/clis/doubao-app/send.js +0 -28
  376. package/clis/doubao-app/status.js +0 -17
  377. package/clis/doubao-app/utils.js +0 -110
  378. package/clis/douyin/_shared/browser-fetch.js +0 -66
  379. package/clis/douyin/_shared/browser-fetch.test.js +0 -64
  380. package/clis/douyin/_shared/creation-id.js +0 -5
  381. package/clis/douyin/_shared/creation-id.test.js +0 -22
  382. package/clis/douyin/_shared/evaluate-result.js +0 -16
  383. package/clis/douyin/_shared/imagex-upload.js +0 -53
  384. package/clis/douyin/_shared/imagex-upload.test.js +0 -87
  385. package/clis/douyin/_shared/public-api.js +0 -29
  386. package/clis/douyin/_shared/sts2.js +0 -21
  387. package/clis/douyin/_shared/sts2.test.js +0 -27
  388. package/clis/douyin/_shared/text-extra.js +0 -15
  389. package/clis/douyin/_shared/text-extra.test.js +0 -37
  390. package/clis/douyin/_shared/timing.js +0 -22
  391. package/clis/douyin/_shared/timing.test.js +0 -28
  392. package/clis/douyin/_shared/tos-upload-short-read.test.js +0 -83
  393. package/clis/douyin/_shared/tos-upload.js +0 -331
  394. package/clis/douyin/_shared/tos-upload.test.js +0 -229
  395. package/clis/douyin/_shared/transcode.js +0 -45
  396. package/clis/douyin/_shared/transcode.test.js +0 -91
  397. package/clis/douyin/_shared/vod-upload.js +0 -212
  398. package/clis/douyin/_shared/vod-upload.test.js +0 -38
  399. package/clis/douyin/activities.js +0 -23
  400. package/clis/douyin/activities.test.js +0 -55
  401. package/clis/douyin/auth.js +0 -39
  402. package/clis/douyin/collections.js +0 -23
  403. package/clis/douyin/collections.test.js +0 -45
  404. package/clis/douyin/delete.js +0 -152
  405. package/clis/douyin/delete.test.js +0 -100
  406. package/clis/douyin/draft.js +0 -355
  407. package/clis/douyin/draft.test.js +0 -335
  408. package/clis/douyin/drafts.js +0 -24
  409. package/clis/douyin/drafts.test.js +0 -11
  410. package/clis/douyin/hashtag.js +0 -114
  411. package/clis/douyin/hashtag.test.js +0 -171
  412. package/clis/douyin/location.js +0 -25
  413. package/clis/douyin/location.test.js +0 -23
  414. package/clis/douyin/profile.js +0 -29
  415. package/clis/douyin/profile.test.js +0 -46
  416. package/clis/douyin/publish-upload-id.test.js +0 -206
  417. package/clis/douyin/publish.js +0 -341
  418. package/clis/douyin/publish.test.js +0 -38
  419. package/clis/douyin/search.js +0 -308
  420. package/clis/douyin/search.test.js +0 -307
  421. package/clis/douyin/stats.js +0 -28
  422. package/clis/douyin/stats.test.js +0 -22
  423. package/clis/douyin/update.js +0 -32
  424. package/clis/douyin/update.test.js +0 -11
  425. package/clis/douyin/user-videos.js +0 -82
  426. package/clis/douyin/user-videos.test.js +0 -151
  427. package/clis/douyin/videos.js +0 -52
  428. package/clis/douyin/videos.test.js +0 -54
  429. package/clis/eastmoney/_secid.js +0 -78
  430. package/clis/eastmoney/announcement.js +0 -53
  431. package/clis/eastmoney/convertible.js +0 -74
  432. package/clis/eastmoney/etf.js +0 -66
  433. package/clis/eastmoney/holders.js +0 -79
  434. package/clis/eastmoney/hot-rank.js +0 -51
  435. package/clis/eastmoney/hot-rank.test.js +0 -59
  436. package/clis/eastmoney/index-board.js +0 -97
  437. package/clis/eastmoney/kline.js +0 -88
  438. package/clis/eastmoney/kuaixun.js +0 -55
  439. package/clis/eastmoney/longhu.js +0 -68
  440. package/clis/eastmoney/money-flow.js +0 -79
  441. package/clis/eastmoney/northbound.js +0 -58
  442. package/clis/eastmoney/quote.js +0 -108
  443. package/clis/eastmoney/rank.js +0 -95
  444. package/clis/eastmoney/sectors.js +0 -77
  445. package/clis/flomo/auth.js +0 -55
  446. package/clis/flomo/memos.js +0 -228
  447. package/clis/flomo/memos.test.js +0 -144
  448. package/clis/gitee/auth.js +0 -41
  449. package/clis/gitee/index.js +0 -3
  450. package/clis/gitee/search.js +0 -137
  451. package/clis/gitee/search.test.js +0 -65
  452. package/clis/gitee/trending.js +0 -568
  453. package/clis/gitee/user.js +0 -200
  454. package/clis/gitee/user.test.js +0 -63
  455. package/clis/gov-law/commands.test.js +0 -39
  456. package/clis/gov-law/recent.js +0 -22
  457. package/clis/gov-law/search.js +0 -41
  458. package/clis/gov-law/shared.js +0 -51
  459. package/clis/gov-policy/__fixtures__/recent.html +0 -16
  460. package/clis/gov-policy/__fixtures__/search.html +0 -41
  461. package/clis/gov-policy/gov-policy.test.js +0 -224
  462. package/clis/gov-policy/recent.js +0 -90
  463. package/clis/gov-policy/search.js +0 -91
  464. package/clis/gov-policy/utils.js +0 -54
  465. package/clis/guazi/__fixtures__/detail.html +0 -7
  466. package/clis/guazi/__fixtures__/list.html +0 -5
  467. package/clis/guazi/browse.js +0 -95
  468. package/clis/guazi/car.js +0 -110
  469. package/clis/guazi/guazi.test.js +0 -126
  470. package/clis/guazi/utils.js +0 -133
  471. package/clis/huodongxing/events.js +0 -322
  472. package/clis/huodongxing/events.test.js +0 -296
  473. package/clis/hupu/__fixtures__/hot-home.html +0 -64
  474. package/clis/hupu/auth.js +0 -47
  475. package/clis/hupu/detail.js +0 -72
  476. package/clis/hupu/hot.js +0 -163
  477. package/clis/hupu/hot.test.js +0 -224
  478. package/clis/hupu/like.js +0 -76
  479. package/clis/hupu/mentions.js +0 -160
  480. package/clis/hupu/reply.js +0 -72
  481. package/clis/hupu/search.js +0 -60
  482. package/clis/hupu/unlike.js +0 -76
  483. package/clis/hupu/utils.js +0 -319
  484. package/clis/jd/add-cart.js +0 -72
  485. package/clis/jd/auth.js +0 -46
  486. package/clis/jd/cart.js +0 -80
  487. package/clis/jd/commands.test.js +0 -41
  488. package/clis/jd/detail.js +0 -63
  489. package/clis/jd/item.js +0 -730
  490. package/clis/jd/item.test.js +0 -354
  491. package/clis/jd/item.test.ts +0 -517
  492. package/clis/jd/reviews.js +0 -55
  493. package/clis/jd/search.js +0 -66
  494. package/clis/jianyu/auth.js +0 -62
  495. package/clis/jianyu/detail.js +0 -21
  496. package/clis/jianyu/search.js +0 -634
  497. package/clis/jianyu/search.test.js +0 -153
  498. package/clis/jianyu/shared/china-bid-search.js +0 -165
  499. package/clis/jianyu/shared/procurement-contract.js +0 -324
  500. package/clis/jianyu/shared/procurement-contract.test.js +0 -72
  501. package/clis/jianyu/shared/procurement-detail.js +0 -107
  502. package/clis/jianyu/shared/procurement-detail.test.js +0 -84
  503. package/clis/jike/auth.js +0 -48
  504. package/clis/jike/comment.js +0 -107
  505. package/clis/jike/create.js +0 -106
  506. package/clis/jike/feed.js +0 -68
  507. package/clis/jike/like.js +0 -61
  508. package/clis/jike/notifications.js +0 -169
  509. package/clis/jike/post.js +0 -72
  510. package/clis/jike/read.test.js +0 -86
  511. package/clis/jike/repost.js +0 -103
  512. package/clis/jike/search.js +0 -68
  513. package/clis/jike/topic.js +0 -65
  514. package/clis/jike/user.js +0 -65
  515. package/clis/jike/utils.js +0 -25
  516. package/clis/jimeng/auth.js +0 -46
  517. package/clis/jimeng/generate.js +0 -84
  518. package/clis/jimeng/history.js +0 -48
  519. package/clis/jimeng/new.js +0 -44
  520. package/clis/jimeng/workspaces.js +0 -42
  521. package/clis/juejin/hot.js +0 -37
  522. package/clis/juejin/juejin.test.js +0 -241
  523. package/clis/juejin/recommend.js +0 -61
  524. package/clis/juejin/utils.js +0 -199
  525. package/clis/ke/auth.js +0 -46
  526. package/clis/ke/chengjiao.js +0 -78
  527. package/clis/ke/ershoufang.js +0 -101
  528. package/clis/ke/utils.js +0 -104
  529. package/clis/ke/xiaoqu.js +0 -78
  530. package/clis/ke/zufang.js +0 -95
  531. package/clis/kimi/_utils.js +0 -110
  532. package/clis/kimi/audit-extras.js +0 -268
  533. package/clis/kimi/auth.js +0 -57
  534. package/clis/kimi/chat.js +0 -470
  535. package/clis/kimi/kimi.test.js +0 -187
  536. package/clis/kimi/storage.js +0 -169
  537. package/clis/kimi/ui.js +0 -314
  538. package/clis/kimi/usage.js +0 -144
  539. package/clis/linux-do/auth.js +0 -55
  540. package/clis/linux-do/categories.js +0 -50
  541. package/clis/linux-do/feed.js +0 -395
  542. package/clis/linux-do/feed.test.js +0 -153
  543. package/clis/linux-do/search.js +0 -29
  544. package/clis/linux-do/tags.js +0 -28
  545. package/clis/linux-do/topic-content.js +0 -155
  546. package/clis/linux-do/topic-content.test.js +0 -59
  547. package/clis/linux-do/topic.js +0 -53
  548. package/clis/linux-do/user-posts.js +0 -57
  549. package/clis/linux-do/user-topics.js +0 -37
  550. package/clis/maimai/auth.js +0 -47
  551. package/clis/maimai/search-talents.js +0 -192
  552. package/clis/maimai/search-talents.test.js +0 -29
  553. package/clis/mubu/doc.js +0 -41
  554. package/clis/mubu/docs.js +0 -44
  555. package/clis/mubu/notes.js +0 -245
  556. package/clis/mubu/recent.js +0 -28
  557. package/clis/mubu/search.js +0 -63
  558. package/clis/mubu/utils.js +0 -304
  559. package/clis/nowcoder/auth.js +0 -65
  560. package/clis/nowcoder/companies.js +0 -24
  561. package/clis/nowcoder/creators.js +0 -28
  562. package/clis/nowcoder/detail.js +0 -62
  563. package/clis/nowcoder/experience.js +0 -37
  564. package/clis/nowcoder/hot.js +0 -25
  565. package/clis/nowcoder/jobs.js +0 -22
  566. package/clis/nowcoder/notifications.js +0 -30
  567. package/clis/nowcoder/papers.js +0 -41
  568. package/clis/nowcoder/practice.js +0 -38
  569. package/clis/nowcoder/recommend.js +0 -31
  570. package/clis/nowcoder/referral.js +0 -40
  571. package/clis/nowcoder/salary.js +0 -41
  572. package/clis/nowcoder/search.js +0 -50
  573. package/clis/nowcoder/suggest.js +0 -34
  574. package/clis/nowcoder/topics.js +0 -28
  575. package/clis/nowcoder/trending.js +0 -26
  576. package/clis/ones/common.js +0 -144
  577. package/clis/ones/enrich-tasks.js +0 -37
  578. package/clis/ones/login.js +0 -81
  579. package/clis/ones/logout.js +0 -18
  580. package/clis/ones/me.js +0 -31
  581. package/clis/ones/my-tasks.js +0 -121
  582. package/clis/ones/resolve-labels.js +0 -64
  583. package/clis/ones/task-helpers.js +0 -212
  584. package/clis/ones/task-helpers.test.js +0 -12
  585. package/clis/ones/task.js +0 -67
  586. package/clis/ones/tasks.js +0 -80
  587. package/clis/ones/token-info.js +0 -43
  588. package/clis/ones/worklog.js +0 -268
  589. package/clis/ones/worklog.test.js +0 -20
  590. package/clis/powerchina/auth.js +0 -52
  591. package/clis/powerchina/search.js +0 -251
  592. package/clis/powerchina/search.test.js +0 -93
  593. package/clis/quark/auth.js +0 -47
  594. package/clis/quark/ls.js +0 -64
  595. package/clis/quark/mkdir.js +0 -37
  596. package/clis/quark/mv.js +0 -54
  597. package/clis/quark/rename.js +0 -27
  598. package/clis/quark/rm.js +0 -25
  599. package/clis/quark/save.js +0 -81
  600. package/clis/quark/share-tree.js +0 -46
  601. package/clis/quark/utils.js +0 -146
  602. package/clis/quark/utils.test.js +0 -58
  603. package/clis/qwen/ask.js +0 -104
  604. package/clis/qwen/ask.test.js +0 -36
  605. package/clis/qwen/auth.js +0 -56
  606. package/clis/qwen/detail.js +0 -62
  607. package/clis/qwen/history.js +0 -61
  608. package/clis/qwen/image.js +0 -179
  609. package/clis/qwen/new.js +0 -23
  610. package/clis/qwen/read.js +0 -41
  611. package/clis/qwen/send.js +0 -55
  612. package/clis/qwen/status.js +0 -37
  613. package/clis/qwen/utils.js +0 -461
  614. package/clis/qwen/utils.test.js +0 -128
  615. package/clis/rednote/auth.js +0 -52
  616. package/clis/rednote/comments.js +0 -85
  617. package/clis/rednote/download.js +0 -59
  618. package/clis/rednote/feed.js +0 -27
  619. package/clis/rednote/navigation.test.js +0 -26
  620. package/clis/rednote/note.js +0 -68
  621. package/clis/rednote/notifications.js +0 -139
  622. package/clis/rednote/rednote.test.js +0 -240
  623. package/clis/rednote/search.js +0 -107
  624. package/clis/rednote/user.js +0 -55
  625. package/clis/sinablog/article.js +0 -15
  626. package/clis/sinablog/hot.js +0 -15
  627. package/clis/sinablog/search.js +0 -52
  628. package/clis/sinablog/user.js +0 -16
  629. package/clis/sinablog/utils.js +0 -186
  630. package/clis/sinafinance/news.js +0 -62
  631. package/clis/sinafinance/rolling-news.js +0 -41
  632. package/clis/sinafinance/stock-rank.js +0 -66
  633. package/clis/sinafinance/stock.js +0 -121
  634. package/clis/sinafinance/stock.test.js +0 -59
  635. package/clis/smzdm/search.js +0 -149
  636. package/clis/smzdm/search.test.js +0 -114
  637. package/clis/taobao/add-cart.js +0 -150
  638. package/clis/taobao/auth.js +0 -58
  639. package/clis/taobao/cart.js +0 -96
  640. package/clis/taobao/commands.test.js +0 -41
  641. package/clis/taobao/detail.js +0 -71
  642. package/clis/taobao/reviews.js +0 -77
  643. package/clis/taobao/search.js +0 -97
  644. package/clis/tdx/hot-rank.js +0 -48
  645. package/clis/tdx/hot-rank.test.js +0 -59
  646. package/clis/ths/hot-rank.js +0 -50
  647. package/clis/ths/hot-rank.test.js +0 -64
  648. package/clis/tieba/commands.test.js +0 -79
  649. package/clis/tieba/hot.js +0 -48
  650. package/clis/tieba/posts.js +0 -86
  651. package/clis/tieba/read.js +0 -141
  652. package/clis/tieba/search.js +0 -109
  653. package/clis/tieba/utils.js +0 -240
  654. package/clis/tieba/utils.test.js +0 -290
  655. package/clis/toutiao/articles.js +0 -55
  656. package/clis/toutiao/auth.js +0 -70
  657. package/clis/toutiao/hot.js +0 -63
  658. package/clis/toutiao/toutiao.test.js +0 -378
  659. package/clis/toutiao/utils.js +0 -161
  660. package/clis/trae-cn/activity.js +0 -22
  661. package/clis/trae-cn/approve.js +0 -52
  662. package/clis/trae-cn/ask.js +0 -99
  663. package/clis/trae-cn/dump.js +0 -5
  664. package/clis/trae-cn/export.js +0 -40
  665. package/clis/trae-cn/model.js +0 -22
  666. package/clis/trae-cn/new.js +0 -63
  667. package/clis/trae-cn/read.js +0 -23
  668. package/clis/trae-cn/screenshot.js +0 -5
  669. package/clis/trae-cn/select-model.js +0 -25
  670. package/clis/trae-cn/send.js +0 -23
  671. package/clis/trae-cn/setup.js +0 -75
  672. package/clis/trae-cn/status.js +0 -27
  673. package/clis/trae-cn/targets.js +0 -96
  674. package/clis/trae-cn/trae-cn.test.js +0 -412
  675. package/clis/trae-cn/utils.js +0 -750
  676. package/clis/trae-cn/watch.js +0 -119
  677. package/clis/uisdc/news.js +0 -105
  678. package/clis/uisdc/news.test.js +0 -66
  679. package/clis/v2ex/auth.js +0 -44
  680. package/clis/v2ex/daily.js +0 -99
  681. package/clis/v2ex/hot.js +0 -26
  682. package/clis/v2ex/latest.js +0 -26
  683. package/clis/v2ex/me.js +0 -100
  684. package/clis/v2ex/member.js +0 -28
  685. package/clis/v2ex/node.js +0 -39
  686. package/clis/v2ex/nodes.js +0 -26
  687. package/clis/v2ex/notifications.js +0 -72
  688. package/clis/v2ex/replies.js +0 -27
  689. package/clis/v2ex/topic.js +0 -31
  690. package/clis/v2ex/user.js +0 -34
  691. package/clis/wanfang/search.js +0 -66
  692. package/clis/wanfang/search.test.js +0 -23
  693. package/clis/wechat-channels/auth.js +0 -62
  694. package/clis/wechat-channels/publish.js +0 -732
  695. package/clis/wechat-channels/publish.test.js +0 -144
  696. package/clis/weibo/auth.js +0 -53
  697. package/clis/weibo/comments.js +0 -53
  698. package/clis/weibo/delete.js +0 -172
  699. package/clis/weibo/delete.test.js +0 -94
  700. package/clis/weibo/envelope.test.js +0 -85
  701. package/clis/weibo/favorites.js +0 -170
  702. package/clis/weibo/favorites.test.js +0 -114
  703. package/clis/weibo/feed.js +0 -69
  704. package/clis/weibo/hot.js +0 -39
  705. package/clis/weibo/me.js +0 -75
  706. package/clis/weibo/post.js +0 -75
  707. package/clis/weibo/publish.js +0 -306
  708. package/clis/weibo/publish.test.js +0 -192
  709. package/clis/weibo/search.js +0 -80
  710. package/clis/weibo/user-posts.js +0 -234
  711. package/clis/weibo/user-posts.test.js +0 -92
  712. package/clis/weibo/user.js +0 -63
  713. package/clis/weibo/utils.js +0 -59
  714. package/clis/weibo/utils.test.js +0 -36
  715. package/clis/weixin/create-draft.js +0 -226
  716. package/clis/weixin/download.js +0 -371
  717. package/clis/weixin/download.test.js +0 -106
  718. package/clis/weixin/drafts.js +0 -66
  719. package/clis/weixin/drafts.test.js +0 -69
  720. package/clis/weixin/search.js +0 -157
  721. package/clis/weixin/search.test.js +0 -227
  722. package/clis/weread/ai-outline.js +0 -171
  723. package/clis/weread/ai-outline.test.js +0 -83
  724. package/clis/weread/auth.js +0 -59
  725. package/clis/weread/book-search.js +0 -438
  726. package/clis/weread/book-search.test.js +0 -242
  727. package/clis/weread/book.js +0 -233
  728. package/clis/weread/commands.test.js +0 -398
  729. package/clis/weread/highlights.js +0 -24
  730. package/clis/weread/notebooks.js +0 -22
  731. package/clis/weread/notes.js +0 -30
  732. package/clis/weread/private-api-regression.test.js +0 -369
  733. package/clis/weread/ranking.js +0 -29
  734. package/clis/weread/search-regression.test.js +0 -494
  735. package/clis/weread/search.js +0 -186
  736. package/clis/weread/shelf.js +0 -66
  737. package/clis/weread/utils.js +0 -321
  738. package/clis/weread/utils.test.js +0 -128
  739. package/clis/weread-official/book.js +0 -135
  740. package/clis/weread-official/commands.test.js +0 -385
  741. package/clis/weread-official/discover.js +0 -107
  742. package/clis/weread-official/list-apis.js +0 -95
  743. package/clis/weread-official/notes.js +0 -171
  744. package/clis/weread-official/readdata.js +0 -158
  745. package/clis/weread-official/review.js +0 -93
  746. package/clis/weread-official/search.js +0 -106
  747. package/clis/weread-official/shelf.js +0 -97
  748. package/clis/weread-official/utils.js +0 -293
  749. package/clis/weread-official/utils.test.js +0 -242
  750. package/clis/xianyu/auth.js +0 -68
  751. package/clis/xianyu/chat.js +0 -74
  752. package/clis/xianyu/chat.test.js +0 -84
  753. package/clis/xianyu/im.js +0 -322
  754. package/clis/xianyu/im.test.js +0 -253
  755. package/clis/xianyu/inbox.js +0 -96
  756. package/clis/xianyu/item.js +0 -153
  757. package/clis/xianyu/item.test.js +0 -56
  758. package/clis/xianyu/messages.js +0 -91
  759. package/clis/xianyu/publish.js +0 -485
  760. package/clis/xianyu/publish.test.js +0 -220
  761. package/clis/xianyu/reply.js +0 -82
  762. package/clis/xianyu/search.js +0 -262
  763. package/clis/xianyu/search.test.js +0 -104
  764. package/clis/xianyu/utils.js +0 -8
  765. package/clis/xiaoe/auth.js +0 -55
  766. package/clis/xiaoe/catalog.js +0 -227
  767. package/clis/xiaoe/content.js +0 -175
  768. package/clis/xiaoe/courses.js +0 -127
  769. package/clis/xiaoe/detail.js +0 -36
  770. package/clis/xiaoe/play-url.js +0 -121
  771. package/clis/xiaoe/xiaoe.test.js +0 -486
  772. package/clis/xiaohongshu/ask.js +0 -426
  773. package/clis/xiaohongshu/ask.test.js +0 -271
  774. package/clis/xiaohongshu/auth.js +0 -53
  775. package/clis/xiaohongshu/collection-helpers.js +0 -283
  776. package/clis/xiaohongshu/collection-helpers.test.js +0 -125
  777. package/clis/xiaohongshu/comments.js +0 -228
  778. package/clis/xiaohongshu/comments.test.js +0 -320
  779. package/clis/xiaohongshu/creator-note-detail.js +0 -482
  780. package/clis/xiaohongshu/creator-note-detail.test.js +0 -451
  781. package/clis/xiaohongshu/creator-notes-summary.js +0 -98
  782. package/clis/xiaohongshu/creator-notes-summary.test.js +0 -94
  783. package/clis/xiaohongshu/creator-notes.js +0 -479
  784. package/clis/xiaohongshu/creator-notes.test.js +0 -281
  785. package/clis/xiaohongshu/creator-profile.js +0 -55
  786. package/clis/xiaohongshu/creator-stats.js +0 -76
  787. package/clis/xiaohongshu/creator-stats.test.js +0 -24
  788. package/clis/xiaohongshu/delete-note.js +0 -260
  789. package/clis/xiaohongshu/delete-note.test.js +0 -172
  790. package/clis/xiaohongshu/download.js +0 -249
  791. package/clis/xiaohongshu/download.test.js +0 -339
  792. package/clis/xiaohongshu/draft-clear.js +0 -91
  793. package/clis/xiaohongshu/draft-delete.js +0 -103
  794. package/clis/xiaohongshu/draft-open.js +0 -43
  795. package/clis/xiaohongshu/draft-utils.js +0 -142
  796. package/clis/xiaohongshu/drafts.js +0 -28
  797. package/clis/xiaohongshu/drafts.test.js +0 -172
  798. package/clis/xiaohongshu/feed.js +0 -163
  799. package/clis/xiaohongshu/feed.test.js +0 -126
  800. package/clis/xiaohongshu/follow.js +0 -226
  801. package/clis/xiaohongshu/follow.test.js +0 -211
  802. package/clis/xiaohongshu/liked.js +0 -29
  803. package/clis/xiaohongshu/liked.test.js +0 -82
  804. package/clis/xiaohongshu/navigation.test.js +0 -38
  805. package/clis/xiaohongshu/note-helpers.js +0 -69
  806. package/clis/xiaohongshu/note.js +0 -104
  807. package/clis/xiaohongshu/note.test.js +0 -249
  808. package/clis/xiaohongshu/notifications.js +0 -46
  809. package/clis/xiaohongshu/publish.js +0 -1423
  810. package/clis/xiaohongshu/publish.test.js +0 -1141
  811. package/clis/xiaohongshu/saved.js +0 -29
  812. package/clis/xiaohongshu/saved.test.js +0 -143
  813. package/clis/xiaohongshu/search.js +0 -330
  814. package/clis/xiaohongshu/search.test.js +0 -325
  815. package/clis/xiaohongshu/unfollow.js +0 -285
  816. package/clis/xiaohongshu/user-helpers.js +0 -78
  817. package/clis/xiaohongshu/user-helpers.test.js +0 -160
  818. package/clis/xiaohongshu/user.js +0 -140
  819. package/clis/xiaohongshu/user.test.js +0 -141
  820. package/clis/xiaoyuzhou/auth.js +0 -303
  821. package/clis/xiaoyuzhou/auth.test.js +0 -124
  822. package/clis/xiaoyuzhou/download.js +0 -54
  823. package/clis/xiaoyuzhou/download.test.js +0 -135
  824. package/clis/xiaoyuzhou/episode.js +0 -34
  825. package/clis/xiaoyuzhou/podcast-episodes.js +0 -41
  826. package/clis/xiaoyuzhou/podcast-episodes.test.js +0 -78
  827. package/clis/xiaoyuzhou/podcast.js +0 -33
  828. package/clis/xiaoyuzhou/transcript.js +0 -77
  829. package/clis/xiaoyuzhou/transcript.test.js +0 -195
  830. package/clis/xiaoyuzhou/utils.js +0 -15
  831. package/clis/xiaoyuzhou/utils.test.js +0 -39
  832. package/clis/xueqiu/auth.js +0 -63
  833. package/clis/xueqiu/comments.js +0 -355
  834. package/clis/xueqiu/comments.test.js +0 -696
  835. package/clis/xueqiu/danjuan-utils.js +0 -126
  836. package/clis/xueqiu/danjuan-utils.test.js +0 -41
  837. package/clis/xueqiu/earnings-date.js +0 -45
  838. package/clis/xueqiu/feed.js +0 -39
  839. package/clis/xueqiu/fund-holdings.js +0 -29
  840. package/clis/xueqiu/fund-snapshot.js +0 -26
  841. package/clis/xueqiu/groups.js +0 -23
  842. package/clis/xueqiu/hot-stock.js +0 -32
  843. package/clis/xueqiu/hot.js +0 -37
  844. package/clis/xueqiu/kline.js +0 -44
  845. package/clis/xueqiu/search.js +0 -37
  846. package/clis/xueqiu/stock.js +0 -65
  847. package/clis/xueqiu/utils.js +0 -48
  848. package/clis/xueqiu/utils.test.js +0 -26
  849. package/clis/xueqiu/watchlist.js +0 -37
  850. package/clis/youdao/note.js +0 -258
  851. package/clis/youdao/note.test.js +0 -99
  852. package/clis/yuanbao/ask.js +0 -362
  853. package/clis/yuanbao/ask.test.js +0 -124
  854. package/clis/yuanbao/auth.js +0 -59
  855. package/clis/yuanbao/detail.js +0 -65
  856. package/clis/yuanbao/history.js +0 -51
  857. package/clis/yuanbao/new.js +0 -72
  858. package/clis/yuanbao/new.test.js +0 -30
  859. package/clis/yuanbao/read.js +0 -38
  860. package/clis/yuanbao/send.js +0 -57
  861. package/clis/yuanbao/shared.js +0 -341
  862. package/clis/yuanbao/shared.test.js +0 -80
  863. package/clis/yuanbao/status.js +0 -44
  864. package/clis/zhihu/answer-comments.js +0 -280
  865. package/clis/zhihu/answer-comments.test.js +0 -287
  866. package/clis/zhihu/answer-detail.js +0 -216
  867. package/clis/zhihu/answer-detail.test.js +0 -338
  868. package/clis/zhihu/answer.js +0 -54
  869. package/clis/zhihu/answer.test.js +0 -54
  870. package/clis/zhihu/auth.js +0 -59
  871. package/clis/zhihu/collection.js +0 -199
  872. package/clis/zhihu/collection.test.js +0 -337
  873. package/clis/zhihu/collections.js +0 -128
  874. package/clis/zhihu/collections.test.js +0 -182
  875. package/clis/zhihu/comment.js +0 -55
  876. package/clis/zhihu/comment.test.js +0 -50
  877. package/clis/zhihu/download.js +0 -80
  878. package/clis/zhihu/download.test.js +0 -12
  879. package/clis/zhihu/favorite.js +0 -87
  880. package/clis/zhihu/favorite.test.js +0 -59
  881. package/clis/zhihu/follow.js +0 -50
  882. package/clis/zhihu/follow.test.js +0 -42
  883. package/clis/zhihu/followers.js +0 -40
  884. package/clis/zhihu/followers.test.js +0 -42
  885. package/clis/zhihu/following.js +0 -40
  886. package/clis/zhihu/following.test.js +0 -44
  887. package/clis/zhihu/hot.js +0 -44
  888. package/clis/zhihu/like.js +0 -47
  889. package/clis/zhihu/like.test.js +0 -41
  890. package/clis/zhihu/paginate.js +0 -128
  891. package/clis/zhihu/pins.js +0 -41
  892. package/clis/zhihu/pins.test.js +0 -44
  893. package/clis/zhihu/question.js +0 -113
  894. package/clis/zhihu/question.test.js +0 -251
  895. package/clis/zhihu/recommend.js +0 -103
  896. package/clis/zhihu/recommend.test.js +0 -143
  897. package/clis/zhihu/search.js +0 -206
  898. package/clis/zhihu/search.test.js +0 -198
  899. package/clis/zhihu/target.js +0 -91
  900. package/clis/zhihu/target.test.js +0 -77
  901. package/clis/zhihu/text.js +0 -29
  902. package/clis/zhihu/text.test.js +0 -24
  903. package/clis/zhihu/user-answers.js +0 -41
  904. package/clis/zhihu/user-answers.test.js +0 -69
  905. package/clis/zhihu/user-arg.js +0 -34
  906. package/clis/zhihu/user-articles.js +0 -40
  907. package/clis/zhihu/user-articles.test.js +0 -44
  908. package/clis/zhihu/user.js +0 -59
  909. package/clis/zhihu/user.test.js +0 -73
  910. package/clis/zhihu/write-shared.js +0 -228
  911. package/clis/zhihu/write-shared.test.js +0 -176
  912. package/clis/zsxq/auth.js +0 -68
  913. package/clis/zsxq/dynamics.js +0 -48
  914. package/clis/zsxq/groups.js +0 -33
  915. package/clis/zsxq/search.js +0 -44
  916. package/clis/zsxq/search.test.js +0 -24
  917. package/clis/zsxq/topic.js +0 -50
  918. package/clis/zsxq/topic.test.js +0 -30
  919. package/clis/zsxq/topics.js +0 -26
  920. package/clis/zsxq/topics.test.js +0 -24
  921. package/clis/zsxq/utils.js +0 -233
  922. package/clis/zsxq/utils.test.js +0 -31
  923. package/dist/src/weixin-download.test.js +0 -45
  924. package/skills/webcmd-adapter-author/references/site-memory/bilibili.md +0 -70
  925. package/skills/webcmd-adapter-author/references/site-memory/eastmoney.md +0 -70
  926. package/skills/webcmd-adapter-author/references/site-memory/tonghuashun.md +0 -51
  927. package/skills/webcmd-adapter-author/references/site-memory/xueqiu.md +0 -58
  928. /package/{clis/douyin/_shared/types.js → dist/src/generate-release-notes-cli.test.d.ts} +0 -0
  929. /package/dist/src/{weixin-download.test.d.ts → release-notes.test.d.ts} +0 -0
@@ -1,233 +0,0 @@
1
- import { ArgumentError, AuthRequiredError, CliError } from '@agentrhq/webcmd/errors';
2
- const SITE_DOMAIN = 'wx.zsxq.com';
3
- const SITE_URL = 'https://wx.zsxq.com';
4
- function asRecord(value) {
5
- return value && typeof value === 'object' && !Array.isArray(value)
6
- ? value
7
- : null;
8
- }
9
- function pickArray(...values) {
10
- for (const value of values) {
11
- if (Array.isArray(value)) {
12
- return value;
13
- }
14
- }
15
- return [];
16
- }
17
- export async function ensureZsxqPage(page) {
18
- await page.goto(SITE_URL);
19
- }
20
- export async function ensureZsxqAuth(page) {
21
- // zsxq uses httpOnly cookies that may be on different subdomains.
22
- // Verify auth by attempting a lightweight API call instead of checking cookies.
23
- try {
24
- const result = await page.evaluate(`
25
- (async () => {
26
- try {
27
- const r = await new Promise((resolve, reject) => {
28
- const xhr = new XMLHttpRequest();
29
- xhr.open('GET', 'https://api.zsxq.com/v2/groups', true);
30
- xhr.withCredentials = true;
31
- xhr.setRequestHeader('accept', 'application/json');
32
- xhr.onload = () => {
33
- if (xhr.status >= 200 && xhr.status < 300) {
34
- try { resolve(JSON.parse(xhr.responseText)); }
35
- catch { resolve(null); }
36
- } else { resolve(null); }
37
- };
38
- xhr.onerror = () => resolve(null);
39
- xhr.send();
40
- });
41
- return r !== null;
42
- } catch { return false; }
43
- })()
44
- `);
45
- if (!result) {
46
- throw new AuthRequiredError('zsxq.com');
47
- }
48
- }
49
- catch (err) {
50
- if (err instanceof AuthRequiredError)
51
- throw err;
52
- throw new AuthRequiredError('zsxq.com');
53
- }
54
- }
55
- export async function getCookieValue(page, name) {
56
- const cookies = await page.getCookies({ domain: SITE_DOMAIN });
57
- return cookies.find(cookie => cookie.name === name)?.value;
58
- }
59
- export async function getActiveGroupId(page) {
60
- const groupId = await page.evaluate(`
61
- (() => {
62
- const target = localStorage.getItem('target_group');
63
- if (target) {
64
- try {
65
- const parsed = JSON.parse(target);
66
- if (parsed.group_id) return String(parsed.group_id);
67
- } catch {}
68
- }
69
- return null;
70
- })()
71
- `);
72
- if (groupId)
73
- return groupId;
74
- throw new ArgumentError('Cannot determine active group_id', 'Pass --group_id <id> or open the target 知识星球 page in Chrome first');
75
- }
76
- export async function browserJsonRequest(page, path) {
77
- return await page.evaluate(`
78
- (async () => {
79
- const path = ${JSON.stringify(path)};
80
-
81
- try {
82
- return await new Promise((resolve) => {
83
- const xhr = new XMLHttpRequest();
84
- xhr.open('GET', path, true);
85
- xhr.withCredentials = true;
86
- xhr.setRequestHeader('accept', 'application/json, text/plain, */*');
87
- xhr.onload = () => {
88
- let parsed = null;
89
- if (xhr.responseText) {
90
- try { parsed = JSON.parse(xhr.responseText); }
91
- catch {}
92
- }
93
-
94
- resolve({
95
- ok: xhr.status >= 200 && xhr.status < 300,
96
- url: path,
97
- status: xhr.status,
98
- data: parsed,
99
- error: xhr.status >= 200 && xhr.status < 300 ? undefined : 'HTTP ' + xhr.status,
100
- });
101
- };
102
- xhr.onerror = () => resolve({
103
- ok: false,
104
- url: path,
105
- error: 'Network error',
106
- });
107
- xhr.send();
108
- });
109
- } catch (error) {
110
- return {
111
- ok: false,
112
- url: path,
113
- error: error instanceof Error ? error.message : String(error),
114
- };
115
- }
116
- })()
117
- `);
118
- }
119
- export async function fetchFirstJson(page, paths) {
120
- let lastFailure = null;
121
- for (const path of paths) {
122
- const result = await browserJsonRequest(page, path);
123
- if (result.ok) {
124
- return result;
125
- }
126
- lastFailure = result;
127
- }
128
- if (!lastFailure) {
129
- throw new CliError('FETCH_ERROR', 'No candidate endpoint returned JSON', `Checked endpoints: ${paths.join(', ')}`);
130
- }
131
- throw new CliError('FETCH_ERROR', lastFailure.error || 'Failed to fetch ZSXQ API', `Checked endpoints: ${paths.join(', ')}`);
132
- }
133
- export function unwrapRespData(payload) {
134
- const record = asRecord(payload);
135
- if (!record) {
136
- throw new CliError('PARSE_ERROR', 'Invalid ZSXQ API response');
137
- }
138
- if (record.succeeded === false) {
139
- const code = typeof record.code === 'number' ? String(record.code) : 'API_ERROR';
140
- const message = typeof record.info === 'string'
141
- ? record.info
142
- : typeof record.error === 'string'
143
- ? record.error
144
- : 'ZSXQ API returned an error';
145
- throw new CliError(code, message);
146
- }
147
- return (record.resp_data ?? record.data ?? payload);
148
- }
149
- export function getTopicsFromResponse(payload) {
150
- const data = unwrapRespData(payload);
151
- if (Array.isArray(data))
152
- return data;
153
- return pickArray(data.topics, data.list, data.records, data.items, data.search_result);
154
- }
155
- export function getCommentsFromResponse(payload) {
156
- const data = unwrapRespData(payload);
157
- if (Array.isArray(data))
158
- return data;
159
- return pickArray(data.comments, data.list, data.items);
160
- }
161
- export function getGroupsFromResponse(payload) {
162
- const data = unwrapRespData(payload);
163
- if (Array.isArray(data))
164
- return data;
165
- return pickArray(data.groups, data.list, data.items);
166
- }
167
- export function getTopicFromResponse(payload) {
168
- const data = unwrapRespData(payload);
169
- if (Array.isArray(data))
170
- return data[0] ?? null;
171
- if (typeof data.topic_id === 'number' || typeof data.topic_id === 'string')
172
- return data;
173
- const record = asRecord(data);
174
- if (!record)
175
- return null;
176
- const topic = record.topic;
177
- return topic && typeof topic === 'object' ? topic : null;
178
- }
179
- export function getTopicAuthor(topic) {
180
- return (topic.owner?.name ||
181
- topic.talk?.owner?.name ||
182
- topic.question?.owner?.name ||
183
- topic.answer?.owner?.name ||
184
- topic.task?.owner?.name ||
185
- topic.solution?.owner?.name ||
186
- '');
187
- }
188
- export function getTopicText(topic) {
189
- const title = (topic.title || '').replace(/\s+/g, ' ').trim();
190
- return title || getTopicContent(topic);
191
- }
192
- export function getTopicContent(topic) {
193
- const primary = [
194
- topic.talk?.text,
195
- topic.question?.text,
196
- topic.answer?.text,
197
- topic.task?.text,
198
- topic.solution?.text,
199
- ].find(value => typeof value === 'string' && value.trim());
200
- return (primary || '').replace(/\s+/g, ' ').trim();
201
- }
202
- export function getTopicUrl(topicId) {
203
- return topicId ? `${SITE_URL}/topic/${topicId}` : SITE_URL;
204
- }
205
- export function summarizeComments(comments, limit = 3) {
206
- return comments
207
- .slice(0, limit)
208
- .map((comment) => {
209
- const author = comment.owner?.name || '匿名';
210
- const target = comment.repliee?.name ? ` -> ${comment.repliee.name}` : '';
211
- const text = (comment.text || '').replace(/\s+/g, ' ').trim();
212
- return `${author}${target}: ${text}`;
213
- })
214
- .join(' | ');
215
- }
216
- export function toTopicRow(topic) {
217
- const topicId = topic.topic_id ?? '';
218
- const comments = pickArray(topic.show_comments, topic.comments);
219
- return {
220
- topic_id: topicId,
221
- type: topic.type || '',
222
- group: topic.group?.name || '',
223
- author: getTopicAuthor(topic),
224
- title: getTopicText(topic),
225
- content: getTopicContent(topic),
226
- comments: topic.comments_count ?? comments.length ?? 0,
227
- likes: topic.likes_count ?? 0,
228
- readers: topic.readers_count ?? topic.reading_count ?? 0,
229
- time: topic.create_time || '',
230
- comment_preview: summarizeComments(comments),
231
- url: getTopicUrl(topicId),
232
- };
233
- }
@@ -1,31 +0,0 @@
1
- import { describe, expect, it } from 'vitest';
2
- import { getTopicText, toTopicRow } from './utils.js';
3
-
4
- describe('zsxq utils', () => {
5
- it('keeps title and content separate when both fields exist', () => {
6
- const topic = {
7
- topic_id: '123',
8
- title: 'A full title that should not be truncated',
9
- talk: { text: 'This is the full body text.' },
10
- };
11
-
12
- expect(getTopicText(topic)).toBe('A full title that should not be truncated');
13
- expect(toTopicRow(topic)).toMatchObject({
14
- title: 'A full title that should not be truncated',
15
- content: 'This is the full body text.',
16
- });
17
- });
18
-
19
- it('falls back to body text for title when explicit title is absent', () => {
20
- const topic = {
21
- topic_id: '456',
22
- talk: { text: 'Body-only topic text should still appear as the title preview.' },
23
- };
24
-
25
- expect(getTopicText(topic)).toBe('Body-only topic text should still appear as the title preview.');
26
- expect(toTopicRow(topic)).toMatchObject({
27
- title: 'Body-only topic text should still appear as the title preview.',
28
- content: 'Body-only topic text should still appear as the title preview.',
29
- });
30
- });
31
- });
@@ -1,45 +0,0 @@
1
- import { describe, expect, it } from 'vitest';
2
- async function loadModule() {
3
- // @ts-expect-error JS adapter — no type declarations
4
- return import('../clis/weixin/download.js');
5
- }
6
- describe('weixin publish time extraction', () => {
7
- it('prefers publish_time text over create_time-like date strings', async () => {
8
- const mod = await loadModule();
9
- expect(mod.extractWechatPublishTime('2026年3月24日 22:38', 'var create_time = "2026年3月24日 22:38";')).toBe('2026年3月24日 22:38');
10
- });
11
- it('falls back to unix timestamp create_time values', async () => {
12
- const mod = await loadModule();
13
- expect(mod.extractWechatPublishTime('', 'var create_time = "1711291080";')).toBe('2024-03-24 22:38:00');
14
- });
15
- it('rejects malformed create_time values', async () => {
16
- const mod = await loadModule();
17
- expect(mod.extractWechatPublishTime('', 'var create_time = "2026年3月24日 22:38";')).toBe('');
18
- expect(mod.extractWechatPublishTime('', 'var create_time = "1711291080abc";')).toBe('');
19
- expect(mod.extractWechatPublishTime('', 'var create_time = "17112910800";')).toBe('');
20
- });
21
- it('builds a self-contained browser helper that matches fallback behavior', async () => {
22
- const mod = await loadModule();
23
- const extractInPage = eval(mod.buildExtractWechatPublishTimeJs());
24
- expect(extractInPage('', 'var create_time = "1711291080";')).toBe('2024-03-24 22:38:00');
25
- });
26
- it('browser helper still prefers DOM publish_time text', async () => {
27
- const mod = await loadModule();
28
- const extractInPage = eval(mod.buildExtractWechatPublishTimeJs());
29
- expect(extractInPage('2026年3月24日 22:38', 'var create_time = "1711291080";')).toBe('2026年3月24日 22:38');
30
- });
31
- it('detects WeChat verification gate pages', async () => {
32
- const mod = await loadModule();
33
- expect(mod.detectWechatAccessIssue('环境异常 当前环境异常,完成验证后即可继续访问。 去验证', '<html><body><a id="js_verify">去验证</a></body></html>')).toBe('environment verification required');
34
- });
35
- it('browser access detector matches the server-side verifier', async () => {
36
- const mod = await loadModule();
37
- const detectInPage = eval(mod.buildDetectWechatAccessIssueJs());
38
- expect(detectInPage('环境异常 当前环境异常,完成验证后即可继续访问。 去验证', '<html>secitptpage/verify.html<a id="js_verify">去验证</a></html>')).toBe('environment verification required');
39
- });
40
- it('picks the first non-empty WeChat metadata field', async () => {
41
- const mod = await loadModule();
42
- expect(mod.pickFirstWechatMetaText('', 'Name cleared', '数字生命卡兹克')).toBe('数字生命卡兹克');
43
- expect(mod.pickFirstWechatMetaText('', ' 聊聊刚刚上线的PixVerse V6视频模型。 ')).toBe('聊聊刚刚上线的PixVerse V6视频模型。');
44
- });
45
- });
@@ -1,70 +0,0 @@
1
- # bilibili(B 站)
2
-
3
- ## 域名
4
-
5
- | 用途 | 域名 |
6
- |------|------|
7
- | 主 API | `api.bilibili.com` |
8
- | 个人主页 / 空间 | `space.bilibili.com` |
9
- | 登录 / 鉴权 | `passport.bilibili.com` |
10
- | 动态 | `t.bilibili.com` / `api.vc.bilibili.com` |
11
- | 直播 | `api.live.bilibili.com` |
12
-
13
- ## 默认鉴权
14
-
15
- - `Strategy.COOKIE + browser: true`
16
- - 核心 cookie:`SESSDATA`(登录态)、`bili_jct`(CSRF token,部分写接口要带到 header `Referer + csrf`)
17
- - **未登录也能调多数读接口**,但有 wbi 签名要求
18
-
19
- ## 关键:wbi 签名
20
-
21
- - 凡 URL 含 `/wbi/` 的接口都要 `w_rid + wts` 签名
22
- - 签名算法依赖每日轮换的 `img_key / sub_key`,从 `api.bilibili.com/x/web-interface/nav` 的 `wbi_img` 字段拿
23
- - **不要自己重新实现**:`clis/bilibili/utils.js` 里的 `apiGet(page, path, { signed: true, params })` 已经封装好
24
- - 普通 cookie JSON 接口优先用 `page.fetchJson(url)`;站点级签名逻辑仍复用 `utils.js`
25
-
26
- ## 已知 endpoint
27
-
28
- - `GET api.bilibili.com/x/web-interface/nav` — 登录态 + 拿 wbi key
29
- - `GET api.bilibili.com/x/space/wbi/arc/search?mid=<uid>` — 用户视频(需 wbi 签)
30
- - `GET api.bilibili.com/x/space/acc/info?mid=<uid>` — 用户资料
31
- - `GET api.bilibili.com/x/web-interface/view?bvid=BV...` — 视频详情
32
- - `GET api.bilibili.com/x/web-interface/popular?ps=20&pn=1` — 热门
33
- - `GET api.bilibili.com/x/web-interface/ranking/v2?rid=0` — 排行
34
- - `GET api.bilibili.com/x/v2/reply/wbi/main?type=1&oid=<aid>&mode=3` — 评论(需 wbi)
35
- - `GET api.bilibili.com/x/web-interface/search/all/v2?keyword=<q>` — 综合搜索
36
- - `GET api.vc.bilibili.com/dynamic_svr/v1/dynamic_svr/space_history?host_uid=<uid>` — 用户动态(新版走 `api.bilibili.com/x/polymer/web-dynamic/v1/feed/space`)
37
- - `GET api.bilibili.com/x/v2/history/cursor` — 观看历史(需登录)
38
- - `GET api.bilibili.com/x/v3/fav/folder/created/list-all` — 收藏夹列表(需登录)
39
-
40
- ## 字段
41
-
42
- 字段基本人类可读,见 `../field-conventions.md` 的 bilibili 节(`mid / aid / bvid / cid / view / danmaku / reply / favorite / coin / share / like / pubdate / ctime`)。
43
-
44
- ## 坑 / 陷阱
45
-
46
- 1. **wbi 签名缓存 `img_key / sub_key`**:24 小时内有效,每次请求都重新 fetch `nav` 会被限频。utils.js 内部做了缓存
47
- 2. **`mid` 和 `uid` 一回事**:接口不统一,`mid=` 居多,个别接口要 `host_mid=`
48
- 3. **视频 ID 两种**:`aid`(老数字)和 `bvid`(BV1xxx),视频详情要用 `bvid`
49
- 4. **`ps=` 最大 50**(popular/ranking),超过了多发几页拼
50
- 5. **动态接口换版**:老的 `dynamic_svr` 已经废,新的走 `x/polymer/web-dynamic/v1/feed/space`,写新 adapter 直接用新接口
51
- 6. **评论分页靠 `next` 游标**,不是页号
52
- 7. **B 站限频 `-352 风控`**:短时间高频调会拦截,adapter 层加 500ms 间隔
53
- 8. **搜索要先 "cold start"**:空 cookie 的 session 第一次搜会 412,先访问首页拿 `buvid3` cookie
54
- 9. **直播接口在 `api.live.bilibili.com`**,不是主域名
55
-
56
- ## 可参考的 adapter
57
-
58
- | 模板类型 | 参考文件 |
59
- |---------|---------|
60
- | 用户资料 / 视频列表 | `clis/bilibili/user-videos.js` / `me.js` |
61
- | 视频详情 / 字幕 | `clis/bilibili/download.js` / `subtitle.js` |
62
- | 评论 | `clis/bilibili/comments.js` |
63
- | 搜索 | `clis/bilibili/search.js` |
64
- | 热门 / 排行 | `clis/bilibili/hot.js` / `ranking.js` |
65
- | 动态 | `clis/bilibili/dynamic.js` |
66
- | 关注 | `clis/bilibili/following.js` |
67
- | 收藏 | `clis/bilibili/favorite.js` |
68
- | 观看历史 | `clis/bilibili/history.js` |
69
-
70
- 通用工具:`clis/bilibili/utils.js`。新 adapter 先 `import { apiGet, fetchJson } from './utils.js'`,不要重写。
@@ -1,70 +0,0 @@
1
- # eastmoney(东方财富)
2
-
3
- ## 域名
4
-
5
- | 用途 | 域名 |
6
- |------|------|
7
- | 行情列表 / 批量报价 | `push2.eastmoney.com` |
8
- | K 线历史 | `push2his.eastmoney.com` |
9
- | 报表类(龙虎榜 / 十大股东) | `datacenter-web.eastmoney.com` |
10
- | 7x24 快讯 | `np-listapi.eastmoney.com` |
11
- | 公司公告 | `np-anotice-stock.eastmoney.com` |
12
- | 静态页(网页端入口) | `quote.eastmoney.com` / `data.eastmoney.com` |
13
-
14
- ## 默认鉴权
15
-
16
- - `Strategy.PUBLIC + browser: false`
17
- - 统一带 `ut=bd1d9ddb04089700cf9c27f6f7426281`(push2 系列的公共 token)
18
- - User-Agent 随意给个 `Mozilla/5.0` 就行,不加会偶发被拦
19
-
20
- ## 已知 endpoint
21
-
22
- - `GET push2.eastmoney.com/api/qt/clist/get` — 列表 / 排行
23
- - 必需:`fs`(市场/板块过滤码)、`fields`(字段清单)
24
- - 可选:`pn`(页码,1-based)、`pz`(每页数量)、`fid`(排序字段)、`po`(0=asc / 1=desc)、`fltt`(2=浮点格式化)、`invt`(2=固定)、`np`(1=固定)
25
- - 返回:`data.diff[]` 数组
26
- - `GET push2.eastmoney.com/api/qt/ulist.np/get` — 批量报价(给定 secids)
27
- - 必需:`secids`(逗号拼接的 `<market>.<code>`)、`fields`
28
- - 返回:`data.diff[]` 数组
29
- - `GET push2.eastmoney.com/api/qt/stock/get` — 单只详情
30
- - 必需:`secid`、`fields`
31
- - `GET push2his.eastmoney.com/api/qt/stock/kline/get` — K 线历史
32
- - 必需:`secid`、`klt`(周期:1 分 / 5 / 15 / 30 / 60 / 101 日 / 102 周 / 103 月)、`fqt`(0=不复权 / 1=前复权 / 2=后复权)、`fields1`、`fields2`
33
- - 返回:`data.klines[]` — CSV 字符串数组
34
- - `GET datacenter-web.eastmoney.com/api/data/v1/get` — 报表类
35
- - 必需:`reportName`(如 `RPT_DAILYBILLBOARD_DETAILS`)、`columns`、`pageSize`、`pageNumber`、`sortColumns`、`sortTypes`
36
- - 返回:`result.data[]`
37
- - `GET np-listapi.eastmoney.com/nlist/api/list/get` — 7x24 快讯
38
- - 必需:`client=web`、`column_id`、`limit`、`last_time`
39
- - `GET np-anotice-stock.eastmoney.com/api/security/ann` — 公司公告
40
- - 必需:`sr=-1`、`page_size`、`page_index`、`ann_type`、`stock_list`
41
-
42
- ## 字段
43
-
44
- 字段代号词典见 `../field-conventions.md` 的 eastmoney 节(`f2 / f3 / f12 / f14 / f62 / f229-f243` 等全集)。
45
-
46
- 市场前缀、fs 过滤码、secid 格式也都在那里。
47
-
48
- ## 坑 / 陷阱
49
-
50
- 1. **`fltt=2` 必传**:否则价格字段是 `int × 10^f152` 的整数表示,要自己除
51
- 2. **资金流单位混乱**:`f6` 成交额是元,但 `f62 / f66 / f72 / f78 / f84` 等净流入大部分接口返回"万元",核对单条接口后再乘
52
- 3. **secid vs code**:`0.000001 / 1.600000` 是 secid(market + code),只有纯 code 时要先判断所属市场前缀再拼。用 `clis/eastmoney/_secid.js` 导出的 `resolveSecid(input)`(单股)或 `splitSymbols(s)`(批量参数拆分),不要自己硬拼前缀
53
- 4. **港股代码 `00700.HK` 不是 secid**:只有前缀属于 `{0, 1, 105, 106, 107, 116, 100, 90}` 才当 secid
54
- 5. **kline CSV 列序**:`fields2=f51,f52,f53,f54,f55,f56,f57,f58,f59,f60,f61` 对应 `date,open,close,high,low,volume,turnover,amplitude,changePct,changeAmt,turnoverRate`
55
- 6. **datacenter-web 字段名大写**:`SECURITY_CODE` 不是 `security_code`
56
-
57
- ## 可参考的 adapter
58
-
59
- | 模板类型 | 参考文件 |
60
- |---------|---------|
61
- | clist 分页排行 | `clis/eastmoney/convertible.js` / `rank.js` / `etf.js` / `sectors.js` |
62
- | ulist 批量报价 | `clis/eastmoney/quote.js` |
63
- | K 线历史 | `clis/eastmoney/kline.js` |
64
- | 报表类 | `clis/eastmoney/longhu.js` / `holders.js` |
65
- | 7x24 快讯 | `clis/eastmoney/kuaixun.js` |
66
- | 公司公告 | `clis/eastmoney/announcement.js` |
67
- | 指数 / 北上 | `clis/eastmoney/index-board.js` / `northbound.js` |
68
- | 资金流 | `clis/eastmoney/money-flow.js` |
69
-
70
- 新写 eastmoney adapter 时,照最像的那条 copy + 改 `name` / URL 参数 / 字段映射三处。
@@ -1,51 +0,0 @@
1
- # tonghuashun(同花顺 / ths)
2
-
3
- ## 域名
4
-
5
- | 用途 | 域名 |
6
- |------|------|
7
- | 行情页 / 热榜 | `q.10jqka.com.cn` |
8
- | 数据中心(多维筛选) | `data.10jqka.com.cn` |
9
- | 行情推送 | `d.10jqka.com.cn` / `dq.10jqka.com.cn` |
10
- | 基本面 / F10 | `basic.10jqka.com.cn` |
11
- | 资讯 / 新闻 | `news.10jqka.com.cn` |
12
-
13
- ## 默认鉴权
14
-
15
- - `Strategy.COOKIE + browser: true`(多数接口有 cookie 风控)
16
- - `Referer: http://q.10jqka.com.cn/` 是关键 header,很多接口缺它直接返回空
17
- - 有些 JSONP 接口没 cookie 要求,但 Referer 还是要带
18
- - 不支持登录态扩展(加密/签名客户端逻辑复杂)
19
-
20
- ## 已知 endpoint
21
-
22
- - `GET d.10jqka.com.cn/v6/line/hs_<code>/01/last1200.js` — K 线(JSONP,返回 `quotebridge_v6_line_...({...})`)
23
- - `GET q.10jqka.com.cn/thsq/quote/v6/<code>` — 实时行情快照(页面内 XHR)
24
- - `GET q.10jqka.com.cn/stock/attention/` — 热度榜(HTML,抽表)
25
- - `GET data.10jqka.com.cn/funds/ggzjl/field/zdf/order/desc/page/1/ajax/1/` — 资金流排行(HTML 表格 + JSONP 混合)
26
- - `GET news.10jqka.com.cn/tapp/news/push/stock/?tag=&page=1&limit=20` — 快讯
27
- - `GET data.10jqka.com.cn/ifinance/hotNews/` — 热点新闻
28
-
29
- ## 字段
30
-
31
- 见 `../field-conventions.md` 的 tonghuashun 节(`openPrice / closePrice / zdf / hsl / zf` 等)。
32
-
33
- 数值字段多数是字符串(带百分号或"万"单位),解析时 `parseFloat` 并处理单位。
34
-
35
- ## 坑 / 陷阱
36
-
37
- 1. **`Referer` 必须带**,否则 302 到错误页
38
- 2. **多数 JSONP 接口回调名固定**:`quotebridge_v6_...`,adapter 里直接 `.replace(/^[\w_]+\((.*)\)$/, '$1')` 剥壳再 JSON.parse
39
- 3. **HTML 表格接口**(如资金流):`page.evaluate` 里 `document.querySelectorAll('table tr')` 抽,每列顺序在同类 adapter 之间复用
40
- 4. **`<code>` 格式 `hs_600000`**:hs 是上海,sz 是深圳;港美股前缀不同
41
- 5. **数据中心接口有日期快照切换**:`date=YYYYMMDD` 参数默认当天,历史日期要显式传
42
- 6. **限频特别严**:连续 10 次会跳风控页,adapter 层 1s 间隔起
43
- 7. **响应 gzip 强制**:某些接口不带 Accept-Encoding 会 406,`fetch` 默认 OK,node 原生 http 要显式加
44
-
45
- ## 可参考的 adapter
46
-
47
- | 模板类型 | 参考文件 |
48
- |---------|---------|
49
- | 热度榜 | `clis/ths/hot-rank.js`(目前唯一一个,其他待补) |
50
-
51
- ths 覆盖度低,新写 adapter 参考 eastmoney 同类型 adapter 的结构,把 URL / 解析逻辑换成 ths 版本。
@@ -1,58 +0,0 @@
1
- # xueqiu(雪球)
2
-
3
- ## 域名
4
-
5
- | 用途 | 域名 |
6
- |------|------|
7
- | 行情 / 搜索 / 关注列表 | `stock.xueqiu.com` / `xueqiu.com` |
8
- | 动态 / 评论 / 热帖 | `xueqiu.com` |
9
- | 基金(蛋卷) | `danjuanfunds.com` |
10
-
11
- ## 默认鉴权
12
-
13
- - `Strategy.COOKIE + browser: true`
14
- - 核心 cookie:`xq_a_token`(匿名也有,登录后含用户身份)
15
- - `page.evaluate` 里 `fetch(url, { credentials: 'include' })` 带 cookie
16
- - 浏览器先访问一次 `xueqiu.com` 触发 cookie 下发,再去调接口(否则 `xq_a_token` 不存在 → 400)
17
-
18
- ## 已知 endpoint
19
-
20
- - `GET stock.xueqiu.com/v5/stock/quote.json?symbol=SH600000` — 单股详情
21
- - `GET stock.xueqiu.com/v5/stock/batch/quote.json?symbol=SH600000,SZ000001` — 批量报价
22
- - `GET stock.xueqiu.com/v5/stock/chart/kline.json?symbol=SH600000&begin=<ts>&period=day&type=before&count=-100` — K 线
23
- - `GET stock.xueqiu.com/v5/stock/screener/quote/list.json?market=CN&type=sh_sz` — 排行
24
- - 可选:`order_by=percent`(涨幅)/ `volume`(成交量)/ `amount`(成交额)/ `market_capital`
25
- - `GET stock.xueqiu.com/v5/stock/search.json?keyword=<q>` — 搜索
26
- - `GET xueqiu.com/statuses/hot/list.json?since_id=-1&max_id=-1&size=20&type=stock` — 热门帖
27
- - `GET xueqiu.com/statuses/search.json?source=all&q=<q>` — 动态搜索
28
- - `GET xueqiu.com/service/v5/stock/portfolio/list.json` — 关注组合(需登录)
29
- - `GET xueqiu.com/v4/statuses/user_timeline.json?user_id=<uid>` — 用户动态
30
-
31
- ## 字段
32
-
33
- 字段基本人类可读(`symbol / name / current / chg / percent / volume / amount / market_capital / pe_ttm / pb`),详见 `../field-conventions.md` 的 xueqiu 节。
34
-
35
- ## 坑 / 陷阱
36
-
37
- 1. **必须先访问首页**:冷启动直接调 API 会 400 `cookie is invalid`,先 `page.goto('https://xueqiu.com/')` 再 fetch
38
- 2. **`symbol` 前缀硬编码**:SH/SZ/HK/US —— 港股 `00700` 是 `'HK00700'`,美股 `AAPL` 是 `'AAPL'`(无前缀)
39
- 3. **kline 的 `begin` 是毫秒 unix**,不是秒
40
- 4. **screener 的 `type`**:`sh_sz / hk / us` 必传,漏了拿空数组
41
- 5. **评论接口 `comments.json` 要传 `statusId`**,不是 `status_id`
42
- 6. **限频明显**:同 symbol 短时间反复调会 403,adapter 层建议加 300ms 间隔
43
- 7. **蛋卷基金(`danjuanfunds.com`)是独立子品牌**:cookie 域不同,要单独获取
44
-
45
- ## 可参考的 adapter
46
-
47
- | 模板类型 | 参考文件 |
48
- |---------|---------|
49
- | 单股 / 批量报价 | `clis/xueqiu/stock.js` |
50
- | K 线 | `clis/xueqiu/kline.js` |
51
- | 排行 | `clis/xueqiu/hot-stock.js` |
52
- | 热帖 / feed | `clis/xueqiu/hot.js` / `feed.js` |
53
- | 关注 | `clis/xueqiu/watchlist.js` |
54
- | 搜索 | `clis/xueqiu/search.js` |
55
- | 评论 | `clis/xueqiu/comments.js` |
56
- | 基金持仓(蛋卷) | `clis/xueqiu/fund-holdings.js` |
57
-
58
- 工具:`clis/xueqiu/utils.js` 有 `fetchWithRetry` + symbol normalize,直接用别重写。