publishport-opencli 1.8.5-pp.2 → 1.8.5-pp.21

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 (2136) hide show
  1. package/LICENSE +24 -0
  2. package/cli-manifest.json +3116 -305
  3. package/clis/12306/auth.js +2 -36
  4. package/clis/12306/me.js +3 -67
  5. package/clis/12306/orders.js +3 -86
  6. package/clis/12306/passengers.js +4 -80
  7. package/clis/12306/price.js +1 -166
  8. package/clis/12306/stations.js +1 -66
  9. package/clis/12306/train.js +1 -91
  10. package/clis/12306/trains.js +1 -166
  11. package/clis/12306/utils.js +1 -272
  12. package/clis/1688/assets.js +2 -80
  13. package/clis/1688/auth.js +1 -46
  14. package/clis/1688/download.js +1 -77
  15. package/clis/1688/item.js +4 -171
  16. package/clis/1688/search.js +4 -185
  17. package/clis/1688/shared.js +6 -552
  18. package/clis/1688/store.js +5 -206
  19. package/clis/1point3acres/auth.js +2 -36
  20. package/clis/1point3acres/digest.js +1 -35
  21. package/clis/1point3acres/forum.js +1 -51
  22. package/clis/1point3acres/forums.js +1 -44
  23. package/clis/1point3acres/hot.js +1 -35
  24. package/clis/1point3acres/latest.js +1 -35
  25. package/clis/1point3acres/notifications.js +1 -64
  26. package/clis/1point3acres/search.js +1 -71
  27. package/clis/1point3acres/thread.js +2 -117
  28. package/clis/1point3acres/user.js +1 -77
  29. package/clis/1point3acres/utils.js +5 -246
  30. package/clis/36kr/article.js +3 -49
  31. package/clis/36kr/hot.js +2 -73
  32. package/clis/36kr/news.js +1 -52
  33. package/clis/36kr/search.js +2 -45
  34. package/clis/51job/company.js +2 -92
  35. package/clis/51job/detail.js +2 -76
  36. package/clis/51job/hot.js +1 -56
  37. package/clis/51job/search.js +1 -80
  38. package/clis/51job/utils.js +7 -288
  39. package/clis/_atlassian/shared.js +21 -577
  40. package/clis/_shared/article/auth.js +15 -123
  41. package/clis/_shared/article/douban-md2draft.js +4 -110
  42. package/clis/_shared/article/format.js +1 -71
  43. package/clis/_shared/article/images.js +7 -125
  44. package/clis/_shared/article/login.js +1 -90
  45. package/clis/_shared/article/page-runtime.js +148 -35
  46. package/clis/_shared/article/publish.js +29 -182
  47. package/clis/_shared/common.js +1 -32
  48. package/clis/_shared/content-guard.js +1 -0
  49. package/clis/_shared/desktop-commands.js +1 -112
  50. package/clis/_shared/search-adapter.js +1 -70
  51. package/clis/_shared/site-auth.js +1 -118
  52. package/clis/_shared/token-auth.js +2 -0
  53. package/clis/_shared/video-publish.js +62 -0
  54. package/clis/aibase/news.js +2 -81
  55. package/clis/amazon/auth.js +2 -36
  56. package/clis/amazon/bestsellers.js +1 -8
  57. package/clis/amazon/discussion.js +3 -106
  58. package/clis/amazon/movers-shakers.js +1 -8
  59. package/clis/amazon/new-releases.js +1 -8
  60. package/clis/amazon/offer.js +3 -115
  61. package/clis/amazon/product.js +5 -73
  62. package/clis/amazon/rankings.js +2 -161
  63. package/clis/amazon/search.js +2 -74
  64. package/clis/amazon/shared.js +6 -360
  65. package/clis/antigravity/_actions.js +14 -131
  66. package/clis/antigravity/audit-extras.js +10 -273
  67. package/clis/antigravity/delete.js +1 -60
  68. package/clis/antigravity/dump.js +1 -29
  69. package/clis/antigravity/extract-code.js +2 -17
  70. package/clis/antigravity/history.js +1 -26
  71. package/clis/antigravity/mark-read.js +1 -52
  72. package/clis/antigravity/model.js +6 -77
  73. package/clis/antigravity/new.js +2 -19
  74. package/clis/antigravity/read.js +2 -27
  75. package/clis/antigravity/rename.js +1 -33
  76. package/clis/antigravity/send.js +3 -28
  77. package/clis/antigravity/serve.js +18 -479
  78. package/clis/antigravity/status.js +1 -19
  79. package/clis/antigravity/storage.js +6 -360
  80. package/clis/antigravity/watch.js +2 -39
  81. package/clis/apple-podcasts/episodes.js +1 -29
  82. package/clis/apple-podcasts/search.js +1 -31
  83. package/clis/apple-podcasts/top.js +1 -45
  84. package/clis/apple-podcasts/utils.js +1 -30
  85. package/clis/archive/item.js +1 -92
  86. package/clis/archive/search.js +1 -115
  87. package/clis/archive/snapshots.js +1 -129
  88. package/clis/archive/wayback.js +1 -83
  89. package/clis/arxiv/author.js +1 -44
  90. package/clis/arxiv/paper.js +1 -22
  91. package/clis/arxiv/recent.js +1 -33
  92. package/clis/arxiv/search.js +1 -36
  93. package/clis/arxiv/utils.js +1 -112
  94. package/clis/autohome/brand.js +1 -108
  95. package/clis/autohome/score.js +1 -103
  96. package/clis/autohome/utils.js +1 -157
  97. package/clis/baidu-scholar/search.js +3 -27
  98. package/clis/baijiahao/article.js +1 -392
  99. package/clis/baijiahao/lists.js +1 -70
  100. package/clis/baijiahao/login.js +1 -15
  101. package/clis/baijiahao/publish.js +57 -0
  102. package/clis/baijiahao/stats.js +1 -0
  103. package/clis/baijiahao/whoami.js +1 -33
  104. package/clis/band/auth.js +2 -35
  105. package/clis/band/bands.js +2 -38
  106. package/clis/band/mentions.js +2 -124
  107. package/clis/band/post.js +4 -104
  108. package/clis/band/posts.js +3 -48
  109. package/clis/barchart/flow.js +4 -50
  110. package/clis/barchart/greeks.js +5 -125
  111. package/clis/barchart/options.js +5 -51
  112. package/clis/barchart/quote.js +3 -51
  113. package/clis/bbc/news.js +1 -42
  114. package/clis/bbc/topic.js +1 -57
  115. package/clis/bbc/utils.js +1 -79
  116. package/clis/bilibili/article.js +1 -393
  117. package/clis/bilibili/auth.js +1 -36
  118. package/clis/bilibili/categories.js +1 -56
  119. package/clis/bilibili/comment.js +1 -107
  120. package/clis/bilibili/comments.js +1 -136
  121. package/clis/bilibili/download.js +2 -173
  122. package/clis/bilibili/drafts.js +1 -60
  123. package/clis/bilibili/dynamic-post.js +3 -60
  124. package/clis/bilibili/dynamic.js +1 -34
  125. package/clis/bilibili/favorite.js +1 -47
  126. package/clis/bilibili/feed.js +2 -220
  127. package/clis/bilibili/follow.js +1 -140
  128. package/clis/bilibili/following.js +1 -44
  129. package/clis/bilibili/history.js +1 -45
  130. package/clis/bilibili/hot.js +2 -27
  131. package/clis/bilibili/me.js +1 -13
  132. package/clis/bilibili/partitions.js +1 -0
  133. package/clis/bilibili/ranking.js +1 -25
  134. package/clis/bilibili/search.js +1 -24
  135. package/clis/bilibili/stats.js +1 -0
  136. package/clis/bilibili/subtitle.js +3 -123
  137. package/clis/bilibili/summary.js +1 -167
  138. package/clis/bilibili/topics.js +1 -0
  139. package/clis/bilibili/unfollow.js +1 -121
  140. package/clis/bilibili/upload.js +1 -0
  141. package/clis/bilibili/user-videos.js +1 -39
  142. package/clis/bilibili/utils.js +7 -249
  143. package/clis/bilibili/video-drafts.js +1 -0
  144. package/clis/bilibili/video.js +1 -155
  145. package/clis/binance/asks.js +1 -22
  146. package/clis/binance/depth.js +1 -21
  147. package/clis/binance/gainers.js +1 -23
  148. package/clis/binance/klines.js +1 -22
  149. package/clis/binance/losers.js +1 -23
  150. package/clis/binance/pairs.js +1 -22
  151. package/clis/binance/price.js +1 -19
  152. package/clis/binance/prices.js +1 -20
  153. package/clis/binance/ticker.js +1 -22
  154. package/clis/binance/top.js +1 -22
  155. package/clis/binance/trades.js +1 -21
  156. package/clis/bloomberg/businessweek.js +4 -117
  157. package/clis/bloomberg/crypto.js +1 -18
  158. package/clis/bloomberg/economics.js +1 -18
  159. package/clis/bloomberg/feeds.js +1 -16
  160. package/clis/bloomberg/green.js +1 -18
  161. package/clis/bloomberg/industries.js +1 -18
  162. package/clis/bloomberg/main.js +1 -18
  163. package/clis/bloomberg/markets.js +1 -18
  164. package/clis/bloomberg/news.js +2 -51
  165. package/clis/bloomberg/opinions.js +1 -18
  166. package/clis/bloomberg/politics.js +1 -18
  167. package/clis/bloomberg/pursuits.js +1 -18
  168. package/clis/bloomberg/tech.js +1 -18
  169. package/clis/bloomberg/utils.js +17 -380
  170. package/clis/booking/search.js +2 -260
  171. package/clis/boss/auth.js +2 -36
  172. package/clis/boss/batchgreet.js +1 -61
  173. package/clis/boss/chatlist.js +1 -116
  174. package/clis/boss/chatmsg.js +1 -117
  175. package/clis/boss/detail.js +1 -63
  176. package/clis/boss/exchange.js +1 -46
  177. package/clis/boss/greet.js +1 -49
  178. package/clis/boss/invite.js +4 -64
  179. package/clis/boss/joblist.js +1 -31
  180. package/clis/boss/mark.js +1 -70
  181. package/clis/boss/recommend.js +1 -45
  182. package/clis/boss/resume.js +2 -62
  183. package/clis/boss/search.js +1 -197
  184. package/clis/boss/send.js +1 -44
  185. package/clis/boss/stats.js +1 -66
  186. package/clis/boss/utils.js +13 -320
  187. package/clis/brave/search.js +3 -60
  188. package/clis/chaoxing/assignments.js +1 -76
  189. package/clis/chaoxing/auth.js +2 -35
  190. package/clis/chaoxing/exams.js +1 -75
  191. package/clis/chaoxing/utils.js +9 -174
  192. package/clis/chatgpt/ask.js +1 -129
  193. package/clis/chatgpt/auth.js +2 -37
  194. package/clis/chatgpt/detail.js +1 -63
  195. package/clis/chatgpt/history.js +1 -39
  196. package/clis/chatgpt/image.js +1 -167
  197. package/clis/chatgpt/model.js +1 -31
  198. package/clis/chatgpt/new.js +1 -32
  199. package/clis/chatgpt/project-file-add.js +1 -74
  200. package/clis/chatgpt/project-list.js +1 -37
  201. package/clis/chatgpt/read.js +1 -44
  202. package/clis/chatgpt/send.js +1 -68
  203. package/clis/chatgpt/status.js +1 -29
  204. package/clis/chatgpt/utils.js +62 -1196
  205. package/clis/chatgpt-app/ask.js +1 -87
  206. package/clis/chatgpt-app/ax.js +9 -100
  207. package/clis/chatgpt-app/model.js +1 -25
  208. package/clis/chatgpt-app/new.js +1 -61
  209. package/clis/chatgpt-app/read.js +1 -32
  210. package/clis/chatgpt-app/send.js +1 -37
  211. package/clis/chatgpt-app/status.js +1 -26
  212. package/clis/chatwise/ask.js +1 -54
  213. package/clis/chatwise/export.js +2 -28
  214. package/clis/chatwise/history.js +2 -37
  215. package/clis/chatwise/model.js +6 -43
  216. package/clis/chatwise/new.js +1 -2
  217. package/clis/chatwise/read.js +2 -17
  218. package/clis/chatwise/screenshot.js +1 -2
  219. package/clis/chatwise/send.js +1 -28
  220. package/clis/chatwise/status.js +1 -2
  221. package/clis/chatwise/utils.js +8 -76
  222. package/clis/chess/analyze.js +1 -35
  223. package/clis/chess/game.js +1 -114
  224. package/clis/chess/games.js +1 -67
  225. package/clis/chess/stats.js +1 -32
  226. package/clis/chess/utils.js +1 -170
  227. package/clis/claude/ask.js +2 -142
  228. package/clis/claude/auth.js +2 -38
  229. package/clis/claude/detail.js +1 -38
  230. package/clis/claude/history.js +1 -33
  231. package/clis/claude/new.js +1 -29
  232. package/clis/claude/read.js +1 -27
  233. package/clis/claude/send.js +1 -48
  234. package/clis/claude/status.js +1 -26
  235. package/clis/claude/utils.js +23 -307
  236. package/clis/cnblogs/article.js +1 -308
  237. package/clis/cnblogs/login.js +1 -15
  238. package/clis/cnblogs/stats.js +37 -0
  239. package/clis/cnblogs/whoami.js +1 -27
  240. package/clis/cnki/search.js +3 -26
  241. package/clis/codex/_actions.js +3 -201
  242. package/clis/codex/archive.js +1 -37
  243. package/clis/codex/ask.js +6 -61
  244. package/clis/codex/dump.js +1 -2
  245. package/clis/codex/export.js +2 -28
  246. package/clis/codex/extract-diff.js +2 -19
  247. package/clis/codex/history.js +1 -27
  248. package/clis/codex/model.js +8 -154
  249. package/clis/codex/new.js +1 -2
  250. package/clis/codex/pin.js +1 -30
  251. package/clis/codex/projects.js +1 -28
  252. package/clis/codex/read.js +2 -27
  253. package/clis/codex/rename.js +4 -56
  254. package/clis/codex/screenshot.js +1 -2
  255. package/clis/codex/send.js +3 -38
  256. package/clis/codex/sidebar.js +1 -356
  257. package/clis/codex/status.js +1 -2
  258. package/clis/coingecko/categories.js +1 -75
  259. package/clis/coingecko/coin.js +1 -107
  260. package/clis/coingecko/derivatives.js +1 -84
  261. package/clis/coingecko/exchanges.js +1 -74
  262. package/clis/coingecko/global.js +1 -71
  263. package/clis/coingecko/top.js +1 -64
  264. package/clis/coingecko/trending.js +1 -55
  265. package/clis/confluence/create.js +1 -39
  266. package/clis/confluence/page.js +1 -23
  267. package/clis/confluence/search.js +1 -34
  268. package/clis/confluence/shared.js +1 -173
  269. package/clis/confluence/update.js +1 -38
  270. package/clis/coupang/add-to-cart.js +3 -66
  271. package/clis/coupang/auth.js +2 -34
  272. package/clis/coupang/product.js +3 -99
  273. package/clis/coupang/search.js +8 -97
  274. package/clis/coupang/utils.js +1 -316
  275. package/clis/crates/crate.js +1 -62
  276. package/clis/crates/search.js +1 -44
  277. package/clis/crates/utils.js +1 -72
  278. package/clis/csdn/article.js +19 -373
  279. package/clis/csdn/columns.js +1 -41
  280. package/clis/csdn/login.js +1 -17
  281. package/clis/csdn/stats.js +71 -0
  282. package/clis/csdn/whoami.js +1 -37
  283. package/clis/cto51/article.js +1 -271
  284. package/clis/cto51/whoami.js +1 -28
  285. package/clis/ctrip/auth.js +1 -50
  286. package/clis/ctrip/flight.js +2 -121
  287. package/clis/ctrip/hotel-search.js +3 -111
  288. package/clis/ctrip/hotel-suggest.js +1 -45
  289. package/clis/ctrip/search.js +1 -41
  290. package/clis/ctrip/utils.js +6 -360
  291. package/clis/cursor/ask.js +5 -57
  292. package/clis/cursor/composer.js +2 -33
  293. package/clis/cursor/dump.js +1 -2
  294. package/clis/cursor/export.js +3 -32
  295. package/clis/cursor/extract-code.js +2 -20
  296. package/clis/cursor/history.js +2 -20
  297. package/clis/cursor/model.js +4 -40
  298. package/clis/cursor/new.js +1 -2
  299. package/clis/cursor/read.js +2 -20
  300. package/clis/cursor/screenshot.js +1 -2
  301. package/clis/cursor/send.js +2 -31
  302. package/clis/cursor/status.js +1 -2
  303. package/clis/dblp/author.js +1 -133
  304. package/clis/dblp/paper.js +1 -40
  305. package/clis/dblp/search.js +1 -45
  306. package/clis/dblp/utils.js +1 -290
  307. package/clis/dblp/venue.js +1 -64
  308. package/clis/deepseek/ask.js +1 -158
  309. package/clis/deepseek/auth.js +2 -34
  310. package/clis/deepseek/detail.js +1 -46
  311. package/clis/deepseek/history.js +1 -27
  312. package/clis/deepseek/new.js +1 -33
  313. package/clis/deepseek/read.js +1 -25
  314. package/clis/deepseek/send.js +7 -97
  315. package/clis/deepseek/status.js +1 -26
  316. package/clis/deepseek/utils.js +25 -310
  317. package/clis/defillama/protocol.js +1 -84
  318. package/clis/defillama/protocols.js +1 -55
  319. package/clis/defillama/utils.js +1 -99
  320. package/clis/devto/auth.js +9 -0
  321. package/clis/devto/latest.js +1 -74
  322. package/clis/devto/publish.js +17 -0
  323. package/clis/devto/read.js +2 -102
  324. package/clis/devto/tag.js +1 -36
  325. package/clis/devto/top.js +1 -30
  326. package/clis/devto/user.js +1 -35
  327. package/clis/dianping/auth.js +2 -40
  328. package/clis/dianping/cityResolver.js +1 -185
  329. package/clis/dianping/search.js +1 -157
  330. package/clis/dianping/shop.js +1 -173
  331. package/clis/dianping/utils.js +1 -157
  332. package/clis/dictionary/examples.js +1 -28
  333. package/clis/dictionary/search.js +1 -30
  334. package/clis/dictionary/synonyms.js +1 -28
  335. package/clis/discord-app/channels.js +1 -26
  336. package/clis/discord-app/delete.js +3 -52
  337. package/clis/discord-app/goto.js +1 -38
  338. package/clis/discord-app/members.js +2 -20
  339. package/clis/discord-app/read.js +1 -42
  340. package/clis/discord-app/search.js +4 -42
  341. package/clis/discord-app/send.js +3 -21
  342. package/clis/discord-app/servers.js +1 -26
  343. package/clis/discord-app/status.js +1 -17
  344. package/clis/discord-app/thread-read.js +1 -45
  345. package/clis/discord-app/threads.js +1 -37
  346. package/clis/discord-app/utils.js +8 -392
  347. package/clis/dockerhub/image.js +1 -52
  348. package/clis/dockerhub/search.js +1 -47
  349. package/clis/dockerhub/utils.js +1 -100
  350. package/clis/dongchedi/koubei.js +1 -85
  351. package/clis/dongchedi/models.js +1 -91
  352. package/clis/dongchedi/score.js +1 -83
  353. package/clis/dongchedi/search.js +1 -83
  354. package/clis/dongchedi/series.js +1 -87
  355. package/clis/dongchedi/specs.js +1 -115
  356. package/clis/dongchedi/utils.js +1 -180
  357. package/clis/douban/article.js +51 -199
  358. package/clis/douban/auth.js +2 -39
  359. package/clis/douban/book-hot.js +1 -15
  360. package/clis/douban/download.js +1 -68
  361. package/clis/douban/marks.js +3 -60
  362. package/clis/douban/movie-hot.js +1 -15
  363. package/clis/douban/photos.js +1 -35
  364. package/clis/douban/reviews.js +3 -57
  365. package/clis/douban/search.js +1 -18
  366. package/clis/douban/subject.js +1 -46
  367. package/clis/douban/top250.js +2 -20
  368. package/clis/douban/utils.js +24 -337
  369. package/clis/doubao/ask.js +1 -40
  370. package/clis/doubao/auth.js +3 -41
  371. package/clis/doubao/detail.js +1 -35
  372. package/clis/doubao/history.js +1 -30
  373. package/clis/doubao/meeting-summary.js +1 -41
  374. package/clis/doubao/meeting-transcript.js +1 -38
  375. package/clis/doubao/new.js +1 -22
  376. package/clis/doubao/read.js +1 -21
  377. package/clis/doubao/send.js +1 -24
  378. package/clis/doubao/status.js +1 -26
  379. package/clis/doubao/utils.js +40 -492
  380. package/clis/doubao-app/ask.js +1 -54
  381. package/clis/doubao-app/dump.js +1 -25
  382. package/clis/doubao-app/new.js +1 -21
  383. package/clis/doubao-app/read.js +1 -19
  384. package/clis/doubao-app/screenshot.js +1 -19
  385. package/clis/doubao-app/send.js +1 -28
  386. package/clis/doubao-app/status.js +1 -17
  387. package/clis/doubao-app/utils.js +6 -52
  388. package/clis/douyin/_shared/browser-fetch.js +7 -45
  389. package/clis/douyin/_shared/creation-id.js +1 -5
  390. package/clis/douyin/_shared/evaluate-result.js +1 -16
  391. package/clis/douyin/_shared/imagex-upload.js +1 -53
  392. package/clis/douyin/_shared/public-api.js +1 -29
  393. package/clis/douyin/_shared/sts2.js +1 -21
  394. package/clis/douyin/_shared/text-extra.js +1 -15
  395. package/clis/douyin/_shared/timing.js +1 -22
  396. package/clis/douyin/_shared/tos-upload.js +5 -331
  397. package/clis/douyin/_shared/transcode.js +1 -45
  398. package/clis/douyin/_shared/types.js +1 -1
  399. package/clis/douyin/_shared/vod-upload.js +5 -212
  400. package/clis/douyin/activities.js +1 -23
  401. package/clis/douyin/auth.js +1 -39
  402. package/clis/douyin/collections.js +1 -23
  403. package/clis/douyin/delete.js +4 -88
  404. package/clis/douyin/draft.js +18 -337
  405. package/clis/douyin/drafts.js +1 -24
  406. package/clis/douyin/hashtag.js +1 -114
  407. package/clis/douyin/location.js +1 -25
  408. package/clis/douyin/profile.js +1 -29
  409. package/clis/douyin/publish-image.js +62 -0
  410. package/clis/douyin/publish.js +10 -337
  411. package/clis/douyin/search.js +3 -260
  412. package/clis/douyin/stats.js +1 -28
  413. package/clis/douyin/update.js +1 -32
  414. package/clis/douyin/user-videos.js +1 -82
  415. package/clis/douyin/videos.js +1 -52
  416. package/clis/duckduckgo/search.js +1 -131
  417. package/clis/duckduckgo/suggest.js +1 -45
  418. package/clis/eastmoney/_secid.js +1 -78
  419. package/clis/eastmoney/announcement.js +1 -53
  420. package/clis/eastmoney/article.js +1 -340
  421. package/clis/eastmoney/convertible.js +1 -74
  422. package/clis/eastmoney/etf.js +1 -66
  423. package/clis/eastmoney/holders.js +1 -79
  424. package/clis/eastmoney/hot-rank.js +2 -23
  425. package/clis/eastmoney/index-board.js +1 -97
  426. package/clis/eastmoney/kline.js +1 -88
  427. package/clis/eastmoney/kuaixun.js +1 -55
  428. package/clis/eastmoney/longhu.js +1 -68
  429. package/clis/eastmoney/money-flow.js +1 -79
  430. package/clis/eastmoney/northbound.js +1 -58
  431. package/clis/eastmoney/quote.js +1 -108
  432. package/clis/eastmoney/rank.js +1 -95
  433. package/clis/eastmoney/sectors.js +1 -77
  434. package/clis/eastmoney/whoami.js +1 -18
  435. package/clis/endoflife/product.js +1 -55
  436. package/clis/endoflife/utils.js +1 -89
  437. package/clis/facebook/add-friend.js +2 -22
  438. package/clis/facebook/auth.js +1 -43
  439. package/clis/facebook/events.js +2 -17
  440. package/clis/facebook/feed.js +3 -99
  441. package/clis/facebook/friends.js +2 -17
  442. package/clis/facebook/groups.js +2 -17
  443. package/clis/facebook/join-group.js +2 -22
  444. package/clis/facebook/marketplace-inbox.js +2 -52
  445. package/clis/facebook/marketplace-listings.js +2 -53
  446. package/clis/facebook/memories.js +2 -17
  447. package/clis/facebook/notifications.js +3 -305
  448. package/clis/facebook/profile.js +2 -22
  449. package/clis/facebook/search.js +2 -19
  450. package/clis/flathub/app.js +1 -71
  451. package/clis/flathub/search.js +1 -80
  452. package/clis/flathub/utils.js +1 -114
  453. package/clis/flomo/auth.js +2 -35
  454. package/clis/flomo/memos.js +2 -217
  455. package/clis/gemini/ask.js +1 -51
  456. package/clis/gemini/auth.js +2 -36
  457. package/clis/gemini/deep-research-result.js +4 -96
  458. package/clis/gemini/deep-research.js +1 -103
  459. package/clis/gemini/detail.js +1 -82
  460. package/clis/gemini/history.js +1 -70
  461. package/clis/gemini/image.js +2 -110
  462. package/clis/gemini/new.js +1 -22
  463. package/clis/gemini/read.js +1 -36
  464. package/clis/gemini/status.js +1 -32
  465. package/clis/gemini/utils.js +51 -873
  466. package/clis/geogebra/add-circle.js +1 -46
  467. package/clis/geogebra/add-line.js +1 -35
  468. package/clis/geogebra/add-point.js +1 -27
  469. package/clis/geogebra/add-polygon.js +1 -25
  470. package/clis/geogebra/eval.js +1 -35
  471. package/clis/geogebra/hexagon.js +1 -62
  472. package/clis/geogebra/info.js +3 -62
  473. package/clis/geogebra/list.js +1 -35
  474. package/clis/geogebra/triangle.js +1 -60
  475. package/clis/geogebra/utils.js +11 -183
  476. package/clis/ghost/publish.js +1 -0
  477. package/clis/ghost/shared.js +1 -0
  478. package/clis/ghost/whoami.js +1 -0
  479. package/clis/gitee/auth.js +2 -31
  480. package/clis/gitee/index.js +1 -3
  481. package/clis/gitee/search.js +1 -137
  482. package/clis/gitee/trending.js +3 -331
  483. package/clis/gitee/user.js +2 -131
  484. package/clis/github/auth.js +2 -39
  485. package/clis/github-trending/repos.js +1 -168
  486. package/clis/google/news.js +1 -59
  487. package/clis/google/search.js +3 -51
  488. package/clis/google/suggest.js +1 -35
  489. package/clis/google/trends.js +1 -39
  490. package/clis/google/utils.js +1 -23
  491. package/clis/google-scholar/cite.js +8 -62
  492. package/clis/google-scholar/profile.js +4 -60
  493. package/clis/google-scholar/search.js +3 -41
  494. package/clis/goproxy/module.js +1 -47
  495. package/clis/goproxy/utils.js +1 -165
  496. package/clis/goproxy/versions.js +1 -59
  497. package/clis/gov-law/recent.js +1 -22
  498. package/clis/gov-law/search.js +3 -30
  499. package/clis/gov-law/shared.js +5 -27
  500. package/clis/gov-policy/recent.js +2 -84
  501. package/clis/gov-policy/search.js +2 -85
  502. package/clis/gov-policy/utils.js +1 -54
  503. package/clis/grok/ask.js +1 -77
  504. package/clis/grok/auth.js +2 -37
  505. package/clis/grok/delete.js +1 -54
  506. package/clis/grok/detail.js +1 -60
  507. package/clis/grok/export-all.js +7 -246
  508. package/clis/grok/export-utils.js +1 -94
  509. package/clis/grok/export.js +4 -87
  510. package/clis/grok/history.js +1 -48
  511. package/clis/grok/image.js +8 -232
  512. package/clis/grok/new.js +1 -20
  513. package/clis/grok/pin.js +1 -68
  514. package/clis/grok/read.js +1 -39
  515. package/clis/grok/send.js +1 -50
  516. package/clis/grok/status.js +1 -41
  517. package/clis/grok/utils.js +21 -324
  518. package/clis/guazi/browse.js +1 -95
  519. package/clis/guazi/car.js +1 -110
  520. package/clis/guazi/utils.js +1 -133
  521. package/clis/hackernews/ask.js +1 -31
  522. package/clis/hackernews/best.js +1 -31
  523. package/clis/hackernews/jobs.js +1 -29
  524. package/clis/hackernews/new.js +1 -31
  525. package/clis/hackernews/read.js +11 -188
  526. package/clis/hackernews/search.js +1 -38
  527. package/clis/hackernews/show.js +1 -31
  528. package/clis/hackernews/top.js +1 -31
  529. package/clis/hackernews/user.js +1 -23
  530. package/clis/hashnode/auth.js +11 -0
  531. package/clis/hashnode/publish.js +92 -0
  532. package/clis/hf/auth.js +2 -31
  533. package/clis/hf/datasets.js +1 -88
  534. package/clis/hf/models.js +1 -91
  535. package/clis/hf/paper.js +1 -79
  536. package/clis/hf/spaces.js +1 -101
  537. package/clis/hf/top.js +1 -121
  538. package/clis/homebrew/cask.js +1 -39
  539. package/clis/homebrew/formula.js +1 -41
  540. package/clis/homebrew/popular.js +1 -54
  541. package/clis/homebrew/utils.js +1 -100
  542. package/clis/huodongxing/events.js +1 -322
  543. package/clis/hupu/auth.js +2 -35
  544. package/clis/hupu/detail.js +7 -72
  545. package/clis/hupu/hot.js +3 -152
  546. package/clis/hupu/like.js +1 -76
  547. package/clis/hupu/mentions.js +6 -75
  548. package/clis/hupu/reply.js +1 -72
  549. package/clis/hupu/search.js +1 -60
  550. package/clis/hupu/unlike.js +1 -76
  551. package/clis/hupu/utils.js +10 -86
  552. package/clis/imdb/person.js +2 -66
  553. package/clis/imdb/reviews.js +3 -52
  554. package/clis/imdb/search.js +2 -51
  555. package/clis/imdb/title.js +1 -94
  556. package/clis/imdb/top.js +1 -54
  557. package/clis/imdb/trending.js +1 -53
  558. package/clis/imdb/utils.js +13 -136
  559. package/clis/imooc/article.js +1 -192
  560. package/clis/imooc/login.js +1 -15
  561. package/clis/imooc/whoami.js +1 -33
  562. package/clis/indeed/job.js +2 -68
  563. package/clis/indeed/search.js +2 -75
  564. package/clis/indeed/utils.js +1 -152
  565. package/clis/instagram/_shared/private-publish.js +4 -959
  566. package/clis/instagram/_shared/protocol-capture.js +9 -111
  567. package/clis/instagram/_shared/runtime-info.js +2 -50
  568. package/clis/instagram/auth.js +2 -37
  569. package/clis/instagram/collection-create.js +2 -22
  570. package/clis/instagram/collection-delete.js +2 -22
  571. package/clis/instagram/comment.js +2 -24
  572. package/clis/instagram/detail.js +2 -150
  573. package/clis/instagram/download.js +5 -149
  574. package/clis/instagram/explore.js +2 -17
  575. package/clis/instagram/follow.js +2 -22
  576. package/clis/instagram/followers.js +2 -18
  577. package/clis/instagram/following.js +2 -18
  578. package/clis/instagram/like.js +2 -23
  579. package/clis/instagram/note.js +8 -69
  580. package/clis/instagram/post.js +35 -814
  581. package/clis/instagram/profile.js +2 -17
  582. package/clis/instagram/reel.js +18 -393
  583. package/clis/instagram/save.js +2 -23
  584. package/clis/instagram/saved.js +2 -18
  585. package/clis/instagram/search.js +2 -18
  586. package/clis/instagram/story.js +4 -99
  587. package/clis/instagram/unfollow.js +2 -22
  588. package/clis/instagram/unlike.js +2 -23
  589. package/clis/instagram/unsave.js +2 -23
  590. package/clis/instagram/user.js +1 -476
  591. package/clis/jd/add-cart.js +3 -53
  592. package/clis/jd/auth.js +2 -36
  593. package/clis/jd/cart.js +2 -23
  594. package/clis/jd/detail.js +4 -25
  595. package/clis/jd/item.js +65 -697
  596. package/clis/jd/reviews.js +3 -27
  597. package/clis/jd/search.js +3 -27
  598. package/clis/jianshu/article.js +1 -0
  599. package/clis/jianshu/login.js +1 -0
  600. package/clis/jianshu/notebooks.js +1 -0
  601. package/clis/jianshu/whoami.js +1 -0
  602. package/clis/jianyu/auth.js +3 -37
  603. package/clis/jianyu/detail.js +1 -21
  604. package/clis/jianyu/search.js +6 -567
  605. package/clis/jianyu/shared/china-bid-search.js +4 -83
  606. package/clis/jianyu/shared/procurement-contract.js +1 -324
  607. package/clis/jianyu/shared/procurement-detail.js +2 -91
  608. package/clis/jike/auth.js +2 -67
  609. package/clis/jike/comment.js +6 -60
  610. package/clis/jike/create.js +6 -61
  611. package/clis/jike/feed.js +3 -39
  612. package/clis/jike/like.js +3 -41
  613. package/clis/jike/notifications.js +3 -57
  614. package/clis/jike/post.js +2 -41
  615. package/clis/jike/repost.js +10 -95
  616. package/clis/jike/search.js +3 -42
  617. package/clis/jike/topic.js +2 -47
  618. package/clis/jike/user.js +2 -48
  619. package/clis/jike/utils.js +2 -12
  620. package/clis/jimeng/auth.js +2 -35
  621. package/clis/jimeng/generate.js +2 -33
  622. package/clis/jimeng/history.js +2 -27
  623. package/clis/jimeng/new.js +2 -20
  624. package/clis/jimeng/workspaces.js +2 -22
  625. package/clis/jira/attachments.js +1 -28
  626. package/clis/jira/comments.js +1 -28
  627. package/clis/jira/issue.js +1 -28
  628. package/clis/jira/links.js +1 -28
  629. package/clis/jira/search.js +1 -47
  630. package/clis/jira/shared.js +1 -256
  631. package/clis/juejin/article.js +5 -503
  632. package/clis/juejin/categories.js +1 -36
  633. package/clis/juejin/hot.js +1 -37
  634. package/clis/juejin/login.js +1 -15
  635. package/clis/juejin/recommend.js +1 -61
  636. package/clis/juejin/stats.js +53 -0
  637. package/clis/juejin/tags.js +1 -37
  638. package/clis/juejin/utils.js +1 -199
  639. package/clis/juejin/whoami.js +1 -34
  640. package/clis/ke/auth.js +2 -34
  641. package/clis/ke/chengjiao.js +2 -35
  642. package/clis/ke/ershoufang.js +2 -53
  643. package/clis/ke/utils.js +4 -87
  644. package/clis/ke/xiaoqu.js +2 -35
  645. package/clis/ke/zufang.js +3 -48
  646. package/clis/kimi/_utils.js +9 -81
  647. package/clis/kimi/audit-extras.js +14 -218
  648. package/clis/kimi/auth.js +3 -43
  649. package/clis/kimi/chat.js +15 -408
  650. package/clis/kimi/storage.js +5 -160
  651. package/clis/kimi/ui.js +14 -239
  652. package/clis/kimi/usage.js +5 -98
  653. package/clis/kuaishou/auth.js +1 -0
  654. package/clis/kuaishou/publish.js +53 -0
  655. package/clis/lesswrong/_helpers.js +5 -71
  656. package/clis/lesswrong/comments.js +5 -61
  657. package/clis/lesswrong/curated.js +3 -29
  658. package/clis/lesswrong/frontpage.js +3 -29
  659. package/clis/lesswrong/new.js +3 -29
  660. package/clis/lesswrong/read.js +3 -44
  661. package/clis/lesswrong/sequences.js +3 -26
  662. package/clis/lesswrong/shortform.js +3 -29
  663. package/clis/lesswrong/tag.js +3 -44
  664. package/clis/lesswrong/tags.js +3 -26
  665. package/clis/lesswrong/top-month.js +3 -29
  666. package/clis/lesswrong/top-week.js +3 -29
  667. package/clis/lesswrong/top-year.js +3 -29
  668. package/clis/lesswrong/top.js +3 -29
  669. package/clis/lesswrong/user-posts.js +3 -40
  670. package/clis/lesswrong/user.js +3 -43
  671. package/clis/lichess/top.js +1 -46
  672. package/clis/lichess/user.js +1 -91
  673. package/clis/lichess/utils.js +1 -97
  674. package/clis/linkedin/auth.js +2 -37
  675. package/clis/linkedin/connect.js +11 -291
  676. package/clis/linkedin/inbox.js +1 -234
  677. package/clis/linkedin/job-detail.js +4 -167
  678. package/clis/linkedin/jobs-preferences.js +3 -82
  679. package/clis/linkedin/people-search.js +2 -301
  680. package/clis/linkedin/post-analytics.js +1 -74
  681. package/clis/linkedin/posts-core.js +2 -105
  682. package/clis/linkedin/posts.js +1 -22
  683. package/clis/linkedin/profile-analytics.js +2 -95
  684. package/clis/linkedin/profile-experience.js +6 -380
  685. package/clis/linkedin/profile-projects.js +4 -185
  686. package/clis/linkedin/profile-read.js +3 -90
  687. package/clis/linkedin/safe-send.js +8 -313
  688. package/clis/linkedin/salesnav-inbox.js +5 -194
  689. package/clis/linkedin/salesnav-message.js +10 -337
  690. package/clis/linkedin/salesnav-search.js +4 -175
  691. package/clis/linkedin/salesnav-thread.js +1 -212
  692. package/clis/linkedin/search.js +10 -371
  693. package/clis/linkedin/sent-invitations.js +2 -51
  694. package/clis/linkedin/services-read.js +6 -162
  695. package/clis/linkedin/shared.js +2 -116
  696. package/clis/linkedin/thread-snapshot.js +4 -130
  697. package/clis/linkedin/timeline.js +2 -110
  698. package/clis/linkedin-learning/auth.js +2 -37
  699. package/clis/linkedin-learning/course.js +4 -125
  700. package/clis/linkedin-learning/search.js +4 -142
  701. package/clis/linkedin-learning/trending.js +4 -120
  702. package/clis/linux-do/auth.js +2 -37
  703. package/clis/linux-do/categories.js +1 -50
  704. package/clis/linux-do/feed.js +4 -380
  705. package/clis/linux-do/search.js +1 -29
  706. package/clis/linux-do/tags.js +1 -28
  707. package/clis/linux-do/topic-content.js +9 -136
  708. package/clis/linux-do/topic.js +1 -53
  709. package/clis/linux-do/user-posts.js +1 -57
  710. package/clis/linux-do/user-topics.js +1 -37
  711. package/clis/lobsters/active.js +1 -29
  712. package/clis/lobsters/domain.js +1 -92
  713. package/clis/lobsters/hot.js +1 -29
  714. package/clis/lobsters/newest.js +1 -29
  715. package/clis/lobsters/read.js +11 -196
  716. package/clis/lobsters/tag.js +1 -35
  717. package/clis/maimai/auth.js +2 -30
  718. package/clis/maimai/search-talents.js +4 -159
  719. package/clis/manus/_utils.js +2 -107
  720. package/clis/manus/auth.js +2 -36
  721. package/clis/manus/connectors.js +3 -39
  722. package/clis/manus/credits.js +3 -38
  723. package/clis/manus/list.js +4 -63
  724. package/clis/manus/read.js +3 -59
  725. package/clis/manus/skills.js +3 -60
  726. package/clis/manus/status.js +3 -38
  727. package/clis/maven/artifact.js +1 -49
  728. package/clis/maven/search.js +1 -51
  729. package/clis/maven/utils.js +1 -110
  730. package/clis/mdn/search.js +1 -97
  731. package/clis/medium/article.js +12 -0
  732. package/clis/medium/feed.js +1 -16
  733. package/clis/medium/login.js +1 -0
  734. package/clis/medium/search.js +1 -16
  735. package/clis/medium/tag.js +1 -135
  736. package/clis/medium/user.js +1 -16
  737. package/clis/medium/utils.js +3 -20
  738. package/clis/medium/whoami.js +1 -0
  739. package/clis/mubu/doc.js +1 -41
  740. package/clis/mubu/docs.js +1 -44
  741. package/clis/mubu/notes.js +1 -245
  742. package/clis/mubu/recent.js +1 -28
  743. package/clis/mubu/search.js +1 -63
  744. package/clis/mubu/utils.js +16 -289
  745. package/clis/note/auth.js +12 -0
  746. package/clis/note/note-utils.js +2 -0
  747. package/clis/note/publish.js +17 -0
  748. package/clis/notebooklm/add-source.js +8 -231
  749. package/clis/notebooklm/auth.js +2 -36
  750. package/clis/notebooklm/create.js +1 -76
  751. package/clis/notebooklm/current.js +1 -28
  752. package/clis/notebooklm/generate-audio.js +1 -91
  753. package/clis/notebooklm/generate-slides.js +1 -106
  754. package/clis/notebooklm/get.js +1 -37
  755. package/clis/notebooklm/history.js +1 -25
  756. package/clis/notebooklm/list.js +1 -36
  757. package/clis/notebooklm/note-list.js +1 -28
  758. package/clis/notebooklm/notes-get.js +1 -47
  759. package/clis/notebooklm/open.js +1 -42
  760. package/clis/notebooklm/rpc.js +8 -175
  761. package/clis/notebooklm/shared.js +1 -3
  762. package/clis/notebooklm/source-fulltext.js +1 -44
  763. package/clis/notebooklm/source-get.js +1 -40
  764. package/clis/notebooklm/source-guide.js +1 -44
  765. package/clis/notebooklm/source-list.js +1 -30
  766. package/clis/notebooklm/status.js +1 -31
  767. package/clis/notebooklm/summary.js +1 -30
  768. package/clis/notebooklm/utils.js +10 -652
  769. package/clis/notebooklm/write-note.js +1 -103
  770. package/clis/nowcoder/auth.js +2 -43
  771. package/clis/nowcoder/comment.js +1 -0
  772. package/clis/nowcoder/comments.js +1 -0
  773. package/clis/nowcoder/companies.js +1 -24
  774. package/clis/nowcoder/creators.js +1 -28
  775. package/clis/nowcoder/delete.js +1 -0
  776. package/clis/nowcoder/detail.js +2 -18
  777. package/clis/nowcoder/dm-list.js +1 -0
  778. package/clis/nowcoder/dm-read.js +1 -0
  779. package/clis/nowcoder/dm-send.js +1 -0
  780. package/clis/nowcoder/drafts.js +1 -0
  781. package/clis/nowcoder/experience.js +2 -21
  782. package/clis/nowcoder/hot.js +1 -25
  783. package/clis/nowcoder/inbox.js +1 -0
  784. package/clis/nowcoder/jobs.js +1 -22
  785. package/clis/nowcoder/like.js +1 -0
  786. package/clis/nowcoder/my.js +1 -0
  787. package/clis/nowcoder/notifications.js +2 -16
  788. package/clis/nowcoder/papers.js +2 -21
  789. package/clis/nowcoder/post.js +1 -0
  790. package/clis/nowcoder/practice.js +2 -19
  791. package/clis/nowcoder/recommend.js +1 -31
  792. package/clis/nowcoder/referral.js +2 -21
  793. package/clis/nowcoder/salary.js +2 -21
  794. package/clis/nowcoder/search.js +2 -21
  795. package/clis/nowcoder/suggest.js +2 -19
  796. package/clis/nowcoder/topics.js +1 -28
  797. package/clis/nowcoder/trending.js +1 -26
  798. package/clis/nowcoder/utils.js +68 -0
  799. package/clis/npm/downloads.js +1 -59
  800. package/clis/npm/package.js +1 -70
  801. package/clis/npm/search.js +1 -49
  802. package/clis/npm/utils.js +1 -76
  803. package/clis/nuget/package.js +1 -101
  804. package/clis/nuget/search.js +1 -69
  805. package/clis/nuget/utils.js +1 -87
  806. package/clis/nvd/cve.js +1 -121
  807. package/clis/oeis/search.js +1 -63
  808. package/clis/oeis/sequence.js +1 -71
  809. package/clis/oeis/utils.js +1 -88
  810. package/clis/ones/common.js +6 -127
  811. package/clis/ones/enrich-tasks.js +1 -37
  812. package/clis/ones/login.js +2 -81
  813. package/clis/ones/logout.js +1 -18
  814. package/clis/ones/me.js +1 -31
  815. package/clis/ones/my-tasks.js +1 -121
  816. package/clis/ones/resolve-labels.js +1 -64
  817. package/clis/ones/task-helpers.js +1 -212
  818. package/clis/ones/task.js +1 -67
  819. package/clis/ones/tasks.js +1 -80
  820. package/clis/ones/token-info.js +1 -43
  821. package/clis/ones/worklog.js +7 -261
  822. package/clis/openalex/search.js +1 -69
  823. package/clis/openalex/utils.js +1 -160
  824. package/clis/openalex/work.js +1 -65
  825. package/clis/openfda/drug-label.js +1 -74
  826. package/clis/openfda/food-recall.js +1 -65
  827. package/clis/openfda/utils.js +1 -67
  828. package/clis/openreview/author.js +1 -58
  829. package/clis/openreview/paper.js +1 -43
  830. package/clis/openreview/reviews.js +3 -130
  831. package/clis/openreview/search.js +1 -46
  832. package/clis/openreview/utils.js +1 -172
  833. package/clis/openreview/venue.js +1 -63
  834. package/clis/oschina/article.js +1 -237
  835. package/clis/oschina/catalogs.js +1 -31
  836. package/clis/oschina/login.js +1 -16
  837. package/clis/oschina/stats.js +54 -0
  838. package/clis/oschina/whoami.js +1 -35
  839. package/clis/osv/query.js +1 -72
  840. package/clis/osv/utils.js +1 -169
  841. package/clis/osv/vulnerability.js +1 -54
  842. package/clis/packagist/package.js +1 -49
  843. package/clis/packagist/search.js +1 -43
  844. package/clis/packagist/utils.js +1 -113
  845. package/clis/paperreview/feedback.js +1 -53
  846. package/clis/paperreview/review.js +1 -38
  847. package/clis/paperreview/submit.js +1 -86
  848. package/clis/paperreview/utils.js +1 -197
  849. package/clis/pinterest/api.js +1 -0
  850. package/clis/pinterest/auth.js +1 -0
  851. package/clis/pinterest/boards.js +1 -0
  852. package/clis/pinterest/client.js +20 -0
  853. package/clis/pinterest/publish.js +13 -0
  854. package/clis/pixiv/auth.js +2 -40
  855. package/clis/pixiv/detail.js +1 -66
  856. package/clis/pixiv/download.js +1 -82
  857. package/clis/pixiv/illusts.js +1 -66
  858. package/clis/pixiv/ranking.js +2 -36
  859. package/clis/pixiv/search.js +1 -44
  860. package/clis/pixiv/user.js +1 -59
  861. package/clis/pixiv/utils.js +3 -83
  862. package/clis/powerchina/auth.js +2 -37
  863. package/clis/powerchina/search.js +1 -251
  864. package/clis/producthunt/browse.js +2 -48
  865. package/clis/producthunt/hot.js +2 -49
  866. package/clis/producthunt/posts.js +1 -29
  867. package/clis/producthunt/today.js +1 -36
  868. package/clis/producthunt/utils.js +1 -99
  869. package/clis/pubmed/article.js +1 -55
  870. package/clis/pubmed/author.js +1 -64
  871. package/clis/pubmed/citations.js +1 -36
  872. package/clis/pubmed/clinical-trial.js +1 -59
  873. package/clis/pubmed/journal.js +1 -59
  874. package/clis/pubmed/mesh.js +1 -47
  875. package/clis/pubmed/related.js +1 -45
  876. package/clis/pubmed/review.js +1 -58
  877. package/clis/pubmed/search.js +1 -75
  878. package/clis/pubmed/utils.js +1 -325
  879. package/clis/pypi/downloads.js +1 -66
  880. package/clis/pypi/package.js +1 -79
  881. package/clis/pypi/utils.js +1 -55
  882. package/clis/qiita/auth.js +1 -0
  883. package/clis/qiita/gql.js +32 -0
  884. package/clis/qiita/publish.js +7 -0
  885. package/clis/qoder/_utils.js +18 -96
  886. package/clis/qoder/composer.js +1 -45
  887. package/clis/qoder/history.js +3 -27
  888. package/clis/qoder/quest.js +1 -147
  889. package/clis/qoder/read.js +1 -29
  890. package/clis/qoder/status.js +1 -21
  891. package/clis/qoder/ui.js +14 -287
  892. package/clis/quark/auth.js +2 -33
  893. package/clis/quark/ls.js +1 -64
  894. package/clis/quark/mkdir.js +1 -37
  895. package/clis/quark/mv.js +1 -54
  896. package/clis/quark/rename.js +1 -27
  897. package/clis/quark/rm.js +1 -25
  898. package/clis/quark/save.js +1 -81
  899. package/clis/quark/share-tree.js +1 -46
  900. package/clis/quark/utils.js +4 -137
  901. package/clis/qwen/ask.js +1 -104
  902. package/clis/qwen/auth.js +3 -42
  903. package/clis/qwen/detail.js +1 -62
  904. package/clis/qwen/history.js +1 -61
  905. package/clis/qwen/image.js +5 -153
  906. package/clis/qwen/new.js +1 -23
  907. package/clis/qwen/read.js +1 -41
  908. package/clis/qwen/send.js +1 -55
  909. package/clis/qwen/status.js +1 -37
  910. package/clis/qwen/utils.js +16 -292
  911. package/clis/reddit/auth.js +2 -37
  912. package/clis/reddit/comment.js +4 -26
  913. package/clis/reddit/frontpage.js +2 -32
  914. package/clis/reddit/home.js +3 -117
  915. package/clis/reddit/hot.js +2 -37
  916. package/clis/reddit/popular.js +2 -35
  917. package/clis/reddit/read.js +10 -200
  918. package/clis/reddit/reply.js +4 -130
  919. package/clis/reddit/save.js +4 -26
  920. package/clis/reddit/saved.js +3 -29
  921. package/clis/reddit/search.js +2 -53
  922. package/clis/reddit/subreddit-info.js +3 -90
  923. package/clis/reddit/subreddit.js +2 -47
  924. package/clis/reddit/subscribe.js +4 -26
  925. package/clis/reddit/subscribed.js +4 -101
  926. package/clis/reddit/upvote.js +4 -26
  927. package/clis/reddit/upvoted.js +3 -29
  928. package/clis/reddit/user-comments.js +2 -27
  929. package/clis/reddit/user-posts.js +2 -28
  930. package/clis/reddit/user.js +2 -20
  931. package/clis/reddit/whoami.js +2 -66
  932. package/clis/rednote/auth.js +2 -35
  933. package/clis/rednote/comments.js +1 -85
  934. package/clis/rednote/download.js +1 -59
  935. package/clis/rednote/feed.js +1 -27
  936. package/clis/rednote/note.js +1 -68
  937. package/clis/rednote/notifications.js +3 -75
  938. package/clis/rednote/search.js +2 -77
  939. package/clis/rednote/user.js +1 -55
  940. package/clis/rest-countries/country.js +1 -65
  941. package/clis/rest-countries/region.js +1 -64
  942. package/clis/rest-countries/utils.js +1 -126
  943. package/clis/reuters/article-detail.js +1 -53
  944. package/clis/reuters/auth.js +3 -31
  945. package/clis/reuters/search.js +1 -63
  946. package/clis/reuters/utils.js +5 -114
  947. package/clis/rfc/rfc.js +1 -52
  948. package/clis/rfc/utils.js +1 -72
  949. package/clis/rubygems/gem.js +1 -42
  950. package/clis/rubygems/search.js +1 -47
  951. package/clis/rubygems/utils.js +1 -86
  952. package/clis/segmentfault/_signed-request.js +43 -0
  953. package/clis/segmentfault/article.js +3 -406
  954. package/clis/segmentfault/channels.js +1 -64
  955. package/clis/segmentfault/login.js +1 -15
  956. package/clis/segmentfault/stats.js +82 -0
  957. package/clis/segmentfault/tags.js +1 -67
  958. package/clis/segmentfault/whoami.js +1 -53
  959. package/clis/semanticscholar/citations.js +1 -61
  960. package/clis/semanticscholar/paper.js +1 -52
  961. package/clis/semanticscholar/recommendations.js +1 -47
  962. package/clis/semanticscholar/search.js +1 -48
  963. package/clis/semanticscholar/utils.js +1 -196
  964. package/clis/sinablog/article.js +1 -15
  965. package/clis/sinablog/hot.js +1 -15
  966. package/clis/sinablog/search.js +1 -52
  967. package/clis/sinablog/user.js +1 -16
  968. package/clis/sinablog/utils.js +9 -42
  969. package/clis/sinafinance/news.js +1 -62
  970. package/clis/sinafinance/rolling-news.js +2 -23
  971. package/clis/sinafinance/stock-rank.js +3 -28
  972. package/clis/sinafinance/stock.js +1 -121
  973. package/clis/slock/attachment-download.js +1 -72
  974. package/clis/slock/attachment-upload.js +7 -85
  975. package/clis/slock/attachment-url.js +1 -53
  976. package/clis/slock/auth-verify.js +1 -19
  977. package/clis/slock/bookmark-add.js +5 -37
  978. package/clis/slock/bookmark-list.js +4 -44
  979. package/clis/slock/bookmark-remove.js +4 -39
  980. package/clis/slock/channel-action.js +1 -63
  981. package/clis/slock/channel-archive.js +1 -9
  982. package/clis/slock/channel-create.js +1 -48
  983. package/clis/slock/channel-files.js +1 -51
  984. package/clis/slock/channel-info.js +1 -42
  985. package/clis/slock/channel-join.js +1 -9
  986. package/clis/slock/channel-leave.js +1 -9
  987. package/clis/slock/channel-list.js +1 -40
  988. package/clis/slock/channel-mark.js +1 -71
  989. package/clis/slock/channel-members.js +1 -64
  990. package/clis/slock/channel-unarchive.js +1 -11
  991. package/clis/slock/dm-list.js +1 -41
  992. package/clis/slock/errors.js +1 -30
  993. package/clis/slock/in-page.js +30 -130
  994. package/clis/slock/inbox-done.js +5 -36
  995. package/clis/slock/inbox-read-all.js +1 -32
  996. package/clis/slock/inbox.js +1 -74
  997. package/clis/slock/login.js +1 -3
  998. package/clis/slock/message-read.js +24 -131
  999. package/clis/slock/message-search.js +10 -58
  1000. package/clis/slock/message-send.js +25 -119
  1001. package/clis/slock/reaction-add.js +1 -42
  1002. package/clis/slock/reaction-remove.js +1 -42
  1003. package/clis/slock/resolve.js +1 -74
  1004. package/clis/slock/server-list.js +3 -32
  1005. package/clis/slock/server-use.js +6 -41
  1006. package/clis/slock/shared.js +1 -14
  1007. package/clis/slock/task-claim.js +4 -62
  1008. package/clis/slock/task-convert.js +13 -84
  1009. package/clis/slock/task-create.js +6 -64
  1010. package/clis/slock/task-delete.js +5 -51
  1011. package/clis/slock/task-get.js +6 -54
  1012. package/clis/slock/task-list-server.js +5 -56
  1013. package/clis/slock/task-list.js +6 -62
  1014. package/clis/slock/task-status.js +6 -80
  1015. package/clis/slock/task-unclaim.js +4 -57
  1016. package/clis/slock/thread-done.js +1 -9
  1017. package/clis/slock/thread-follow.js +1 -46
  1018. package/clis/slock/thread-list.js +1 -44
  1019. package/clis/slock/thread-state.js +1 -45
  1020. package/clis/slock/thread-undone.js +1 -9
  1021. package/clis/slock/thread-unfollow.js +1 -9
  1022. package/clis/slock/unread-summary.js +5 -36
  1023. package/clis/slock/whoami.js +1 -12
  1024. package/clis/smzdm/search.js +3 -81
  1025. package/clis/sohu/article.js +1 -501
  1026. package/clis/sohu/attributes.js +1 -36
  1027. package/clis/sohu/categories.js +1 -48
  1028. package/clis/sohu/channels.js +1 -34
  1029. package/clis/sohu/columns.js +1 -36
  1030. package/clis/sohu/login.js +1 -15
  1031. package/clis/sohu/stats.js +95 -0
  1032. package/clis/sohu/topics.js +1 -50
  1033. package/clis/sohu/whoami.js +1 -27
  1034. package/clis/spotify/spotify.js +1 -327
  1035. package/clis/spotify/utils.js +8 -66
  1036. package/clis/stackoverflow/bounties.js +1 -35
  1037. package/clis/stackoverflow/hot.js +1 -32
  1038. package/clis/stackoverflow/read.js +10 -311
  1039. package/clis/stackoverflow/related.js +1 -66
  1040. package/clis/stackoverflow/search.js +1 -35
  1041. package/clis/stackoverflow/tag.js +1 -60
  1042. package/clis/stackoverflow/unanswered.js +1 -33
  1043. package/clis/stackoverflow/user.js +1 -50
  1044. package/clis/stackoverflow/utils.js +1 -118
  1045. package/clis/steam/app.js +1 -67
  1046. package/clis/steam/search.js +1 -58
  1047. package/clis/steam/top-sellers.js +1 -26
  1048. package/clis/steam/utils.js +1 -107
  1049. package/clis/substack/auth.js +11 -0
  1050. package/clis/substack/feed.js +1 -16
  1051. package/clis/substack/post-utils.js +2 -0
  1052. package/clis/substack/publication.js +1 -16
  1053. package/clis/substack/publish.js +10 -0
  1054. package/clis/substack/search.js +1 -79
  1055. package/clis/substack/utils.js +6 -34
  1056. package/clis/suno/auth.js +2 -40
  1057. package/clis/suno/download.js +5 -128
  1058. package/clis/suno/generate.js +4 -231
  1059. package/clis/suno/list.js +4 -69
  1060. package/clis/suno/status.js +1 -63
  1061. package/clis/suno/utils.js +29 -476
  1062. package/clis/taobao/add-cart.js +6 -63
  1063. package/clis/taobao/auth.js +3 -53
  1064. package/clis/taobao/cart.js +3 -31
  1065. package/clis/taobao/detail.js +5 -28
  1066. package/clis/taobao/reviews.js +4 -29
  1067. package/clis/taobao/search.js +3 -36
  1068. package/clis/tdx/hot-rank.js +2 -25
  1069. package/clis/test-utils.js +1 -61
  1070. package/clis/ths/hot-rank.js +2 -25
  1071. package/clis/tieba/hot.js +3 -35
  1072. package/clis/tieba/posts.js +1 -86
  1073. package/clis/tieba/read.js +2 -59
  1074. package/clis/tieba/search.js +3 -58
  1075. package/clis/tieba/utils.js +1 -240
  1076. package/clis/tiktok/auth.js +2 -37
  1077. package/clis/tiktok/comment.js +5 -81
  1078. package/clis/tiktok/creator-videos.js +3 -228
  1079. package/clis/tiktok/explore.js +8 -76
  1080. package/clis/tiktok/follow.js +8 -81
  1081. package/clis/tiktok/following.js +8 -76
  1082. package/clis/tiktok/friends.js +8 -75
  1083. package/clis/tiktok/like.js +2 -17
  1084. package/clis/tiktok/live.js +7 -72
  1085. package/clis/tiktok/notifications.js +10 -86
  1086. package/clis/tiktok/profile.js +2 -31
  1087. package/clis/tiktok/publish.js +82 -0
  1088. package/clis/tiktok/save.js +2 -17
  1089. package/clis/tiktok/search.js +2 -18
  1090. package/clis/tiktok/unfollow.js +7 -79
  1091. package/clis/tiktok/unlike.js +2 -17
  1092. package/clis/tiktok/unsave.js +2 -17
  1093. package/clis/tiktok/user.js +9 -82
  1094. package/clis/tiktok/utils.js +7 -240
  1095. package/clis/toutiao/article.js +1 -0
  1096. package/clis/toutiao/articles.js +2 -51
  1097. package/clis/toutiao/auth.js +2 -35
  1098. package/clis/toutiao/hot.js +1 -63
  1099. package/clis/toutiao/utils.js +2 -161
  1100. package/clis/trae-cn/activity.js +1 -22
  1101. package/clis/trae-cn/approve.js +1 -52
  1102. package/clis/trae-cn/ask.js +1 -99
  1103. package/clis/trae-cn/dump.js +1 -5
  1104. package/clis/trae-cn/export.js +3 -40
  1105. package/clis/trae-cn/model.js +1 -22
  1106. package/clis/trae-cn/new.js +1 -63
  1107. package/clis/trae-cn/read.js +1 -23
  1108. package/clis/trae-cn/screenshot.js +1 -5
  1109. package/clis/trae-cn/select-model.js +1 -25
  1110. package/clis/trae-cn/send.js +1 -23
  1111. package/clis/trae-cn/setup.js +1 -75
  1112. package/clis/trae-cn/status.js +1 -27
  1113. package/clis/trae-cn/targets.js +1 -96
  1114. package/clis/trae-cn/utils.js +24 -318
  1115. package/clis/trae-cn/watch.js +3 -119
  1116. package/clis/trae-solo/_actions.js +5 -24
  1117. package/clis/trae-solo/_fs.js +6 -118
  1118. package/clis/trae-solo/_state.js +2 -111
  1119. package/clis/trae-solo/automation.js +4 -58
  1120. package/clis/trae-solo/history.js +2 -41
  1121. package/clis/trae-solo/mode.js +4 -54
  1122. package/clis/trae-solo/model.js +4 -88
  1123. package/clis/trae-solo/renderer-storage.js +4 -163
  1124. package/clis/trae-solo/settings.js +1 -54
  1125. package/clis/trae-solo/skill-fs.js +1 -123
  1126. package/clis/trae-solo/skill.js +12 -151
  1127. package/clis/trae-solo/state-fs.js +2 -156
  1128. package/clis/trae-solo/status.js +1 -2
  1129. package/clis/trae-solo/task-fs.js +5 -181
  1130. package/clis/trae-solo/user-rules.js +1 -29
  1131. package/clis/trae-solo/workspaces-fs.js +1 -113
  1132. package/clis/tumblr/auth.js +24 -0
  1133. package/clis/tumblr/publish.js +14 -0
  1134. package/clis/tvmaze/search.js +1 -61
  1135. package/clis/tvmaze/show.js +1 -60
  1136. package/clis/tvmaze/utils.js +1 -110
  1137. package/clis/twitter/accept.js +7 -95
  1138. package/clis/twitter/article.js +7 -61
  1139. package/clis/twitter/auth.js +2 -39
  1140. package/clis/twitter/block.js +4 -32
  1141. package/clis/twitter/bookmark-folder.js +3 -189
  1142. package/clis/twitter/bookmark-folders.js +3 -113
  1143. package/clis/twitter/bookmark.js +3 -33
  1144. package/clis/twitter/bookmarks.js +4 -158
  1145. package/clis/twitter/delete.js +5 -123
  1146. package/clis/twitter/device-follow.js +3 -184
  1147. package/clis/twitter/dm-list.js +1 -0
  1148. package/clis/twitter/dm-read.js +1 -0
  1149. package/clis/twitter/dm-send.js +13 -0
  1150. package/clis/twitter/dm-shared.js +6 -0
  1151. package/clis/twitter/download.js +6 -449
  1152. package/clis/twitter/follow-batch.js +5 -124
  1153. package/clis/twitter/follow.js +4 -32
  1154. package/clis/twitter/followers.js +5 -139
  1155. package/clis/twitter/following.js +2 -272
  1156. package/clis/twitter/hide-reply.js +3 -33
  1157. package/clis/twitter/like.js +3 -35
  1158. package/clis/twitter/likes.js +8 -235
  1159. package/clis/twitter/list-add-batch.js +1 -32
  1160. package/clis/twitter/list-add-core.js +9 -219
  1161. package/clis/twitter/list-add.js +1 -20
  1162. package/clis/twitter/list-batch-utils.js +1 -95
  1163. package/clis/twitter/list-create.js +5 -148
  1164. package/clis/twitter/list-delete.js +4 -126
  1165. package/clis/twitter/list-remove-batch.js +1 -32
  1166. package/clis/twitter/list-remove-core.js +9 -173
  1167. package/clis/twitter/list-remove.js +1 -20
  1168. package/clis/twitter/list-tweets.js +7 -179
  1169. package/clis/twitter/lists.js +6 -157
  1170. package/clis/twitter/notifications.js +2 -126
  1171. package/clis/twitter/post.js +32 -357
  1172. package/clis/twitter/profile.js +7 -115
  1173. package/clis/twitter/quote.js +7 -118
  1174. package/clis/twitter/reply-dm.js +7 -78
  1175. package/clis/twitter/reply.js +12 -167
  1176. package/clis/twitter/retweet.js +3 -35
  1177. package/clis/twitter/schedule.js +11 -167
  1178. package/clis/twitter/scheduled-delete.js +3 -48
  1179. package/clis/twitter/scheduled-list.js +2 -30
  1180. package/clis/twitter/scheduled-utils.js +3 -17
  1181. package/clis/twitter/search.js +5 -339
  1182. package/clis/twitter/shared.js +6 -494
  1183. package/clis/twitter/thread.js +4 -164
  1184. package/clis/twitter/timeline.js +3 -210
  1185. package/clis/twitter/trending.js +2 -42
  1186. package/clis/twitter/tweets.js +6 -341
  1187. package/clis/twitter/unblock.js +4 -32
  1188. package/clis/twitter/unbookmark.js +3 -33
  1189. package/clis/twitter/unfollow.js +4 -32
  1190. package/clis/twitter/unlike.js +3 -35
  1191. package/clis/twitter/unretweet.js +3 -35
  1192. package/clis/twitter/utils.js +11 -279
  1193. package/clis/uisdc/news.js +2 -82
  1194. package/clis/uiverse/_shared.js +11 -181
  1195. package/clis/uiverse/code.js +1 -49
  1196. package/clis/uiverse/preview.js +1 -73
  1197. package/clis/upwork/auth.js +2 -36
  1198. package/clis/upwork/detail.js +2 -112
  1199. package/clis/upwork/feed.js +3 -91
  1200. package/clis/upwork/search.js +2 -96
  1201. package/clis/upwork/utils.js +1 -323
  1202. package/clis/v2ex/auth.js +2 -36
  1203. package/clis/v2ex/daily.js +3 -61
  1204. package/clis/v2ex/hot.js +1 -26
  1205. package/clis/v2ex/latest.js +1 -26
  1206. package/clis/v2ex/me.js +2 -44
  1207. package/clis/v2ex/member.js +1 -28
  1208. package/clis/v2ex/node.js +1 -39
  1209. package/clis/v2ex/nodes.js +1 -26
  1210. package/clis/v2ex/notifications.js +2 -34
  1211. package/clis/v2ex/replies.js +1 -27
  1212. package/clis/v2ex/topic.js +1 -31
  1213. package/clis/v2ex/user.js +1 -34
  1214. package/clis/wanfang/search.js +4 -28
  1215. package/clis/web/read.js +9 -240
  1216. package/clis/wechat-channels/auth.js +2 -47
  1217. package/clis/wechat-channels/publish.js +37 -534
  1218. package/clis/weibo/article.js +1 -0
  1219. package/clis/weibo/auth.js +3 -39
  1220. package/clis/weibo/comments.js +4 -29
  1221. package/clis/weibo/delete.js +3 -91
  1222. package/clis/weibo/favorites.js +8 -151
  1223. package/clis/weibo/feed.js +5 -41
  1224. package/clis/weibo/hot.js +2 -24
  1225. package/clis/weibo/me.js +3 -27
  1226. package/clis/weibo/post.js +3 -32
  1227. package/clis/weibo/publish.js +10 -244
  1228. package/clis/weibo/search.js +2 -35
  1229. package/clis/weibo/user-posts.js +7 -149
  1230. package/clis/weibo/user.js +3 -29
  1231. package/clis/weibo/utils.js +3 -46
  1232. package/clis/weixin/article.js +1 -332
  1233. package/clis/weixin/create-draft.js +26 -226
  1234. package/clis/weixin/download.js +2 -273
  1235. package/clis/weixin/drafts.js +2 -41
  1236. package/clis/weixin/login.js +1 -0
  1237. package/clis/weixin/search.js +2 -115
  1238. package/clis/weixin/stats.js +43 -0
  1239. package/clis/weixin/whoami.js +1 -26
  1240. package/clis/weread/ai-outline.js +2 -171
  1241. package/clis/weread/auth.js +2 -37
  1242. package/clis/weread/book-search.js +2 -438
  1243. package/clis/weread/book.js +2 -232
  1244. package/clis/weread/highlights.js +1 -24
  1245. package/clis/weread/notebooks.js +1 -22
  1246. package/clis/weread/notes.js +1 -30
  1247. package/clis/weread/ranking.js +1 -29
  1248. package/clis/weread/search.js +1 -186
  1249. package/clis/weread/shelf.js +1 -66
  1250. package/clis/weread/utils.js +6 -260
  1251. package/clis/weread-official/book.js +1 -135
  1252. package/clis/weread-official/discover.js +1 -107
  1253. package/clis/weread-official/list-apis.js +1 -95
  1254. package/clis/weread-official/notes.js +1 -171
  1255. package/clis/weread-official/readdata.js +1 -158
  1256. package/clis/weread-official/review.js +1 -93
  1257. package/clis/weread-official/search.js +1 -106
  1258. package/clis/weread-official/shelf.js +1 -97
  1259. package/clis/weread-official/utils.js +1 -293
  1260. package/clis/wikidata/entity.js +1 -60
  1261. package/clis/wikidata/search.js +1 -50
  1262. package/clis/wikidata/utils.js +1 -117
  1263. package/clis/wikipedia/page.js +2 -94
  1264. package/clis/wikipedia/random.js +1 -20
  1265. package/clis/wikipedia/search.js +1 -31
  1266. package/clis/wikipedia/summary.js +1 -24
  1267. package/clis/wikipedia/trending.js +1 -40
  1268. package/clis/wikipedia/utils.js +1 -31
  1269. package/clis/wordpress/publish.js +1 -0
  1270. package/clis/wordpress/shared.js +1 -0
  1271. package/clis/wordpress/whoami.js +1 -0
  1272. package/clis/woshipm/article.js +1 -301
  1273. package/clis/woshipm/login.js +1 -15
  1274. package/clis/woshipm/stats.js +52 -0
  1275. package/clis/woshipm/whoami.js +1 -34
  1276. package/clis/wttr/current.js +1 -63
  1277. package/clis/wttr/forecast.js +1 -71
  1278. package/clis/wttr/utils.js +1 -50
  1279. package/clis/xianyu/auth.js +2 -59
  1280. package/clis/xianyu/chat.js +1 -74
  1281. package/clis/xianyu/im.js +13 -95
  1282. package/clis/xianyu/inbox.js +1 -96
  1283. package/clis/xianyu/item.js +5 -61
  1284. package/clis/xianyu/messages.js +1 -91
  1285. package/clis/xianyu/publish.js +19 -299
  1286. package/clis/xianyu/reply.js +1 -82
  1287. package/clis/xianyu/search.js +8 -129
  1288. package/clis/xianyu/utils.js +1 -8
  1289. package/clis/xiaoe/auth.js +2 -47
  1290. package/clis/xiaoe/catalog.js +2 -95
  1291. package/clis/xiaoe/content.js +2 -161
  1292. package/clis/xiaoe/courses.js +2 -86
  1293. package/clis/xiaoe/detail.js +2 -19
  1294. package/clis/xiaoe/play-url.js +2 -26
  1295. package/clis/xiaohongshu/ask.js +8 -304
  1296. package/clis/xiaohongshu/auth.js +2 -42
  1297. package/clis/xiaohongshu/collection-helpers.js +5 -224
  1298. package/clis/xiaohongshu/comments.js +5 -144
  1299. package/clis/xiaohongshu/creator-note-detail.js +7 -409
  1300. package/clis/xiaohongshu/creator-notes-summary.js +1 -98
  1301. package/clis/xiaohongshu/creator-notes.js +13 -385
  1302. package/clis/xiaohongshu/creator-profile.js +2 -44
  1303. package/clis/xiaohongshu/creator-stats.js +2 -65
  1304. package/clis/xiaohongshu/delete-note.js +7 -207
  1305. package/clis/xiaohongshu/download.js +4 -71
  1306. package/clis/xiaohongshu/draft-clear.js +5 -52
  1307. package/clis/xiaohongshu/draft-delete.js +9 -75
  1308. package/clis/xiaohongshu/draft-open.js +1 -43
  1309. package/clis/xiaohongshu/draft-utils.js +5 -111
  1310. package/clis/xiaohongshu/drafts.js +1 -28
  1311. package/clis/xiaohongshu/feed.js +2 -127
  1312. package/clis/xiaohongshu/follow.js +3 -154
  1313. package/clis/xiaohongshu/liked.js +1 -29
  1314. package/clis/xiaohongshu/note-helpers.js +1 -69
  1315. package/clis/xiaohongshu/note.js +2 -74
  1316. package/clis/xiaohongshu/notifications.js +1 -46
  1317. package/clis/xiaohongshu/publish-video.js +87 -0
  1318. package/clis/xiaohongshu/publish.js +54 -910
  1319. package/clis/xiaohongshu/saved.js +1 -29
  1320. package/clis/xiaohongshu/search.js +8 -194
  1321. package/clis/xiaohongshu/unfollow.js +5 -192
  1322. package/clis/xiaohongshu/user-helpers.js +1 -78
  1323. package/clis/xiaohongshu/user.js +2 -112
  1324. package/clis/xiaoyuzhou/auth.js +3 -303
  1325. package/clis/xiaoyuzhou/download.js +1 -54
  1326. package/clis/xiaoyuzhou/episode.js +1 -34
  1327. package/clis/xiaoyuzhou/podcast-episodes.js +1 -41
  1328. package/clis/xiaoyuzhou/podcast.js +1 -33
  1329. package/clis/xiaoyuzhou/transcript.js +1 -77
  1330. package/clis/xiaoyuzhou/utils.js +1 -15
  1331. package/clis/xueqiu/article.js +4 -388
  1332. package/clis/xueqiu/auth.js +2 -38
  1333. package/clis/xueqiu/comments.js +4 -321
  1334. package/clis/xueqiu/danjuan-utils.js +4 -46
  1335. package/clis/xueqiu/earnings-date.js +1 -45
  1336. package/clis/xueqiu/events.js +17 -58
  1337. package/clis/xueqiu/feed.js +1 -39
  1338. package/clis/xueqiu/fund-holdings.js +1 -29
  1339. package/clis/xueqiu/fund-snapshot.js +1 -26
  1340. package/clis/xueqiu/groups.js +1 -23
  1341. package/clis/xueqiu/hashtags.js +26 -71
  1342. package/clis/xueqiu/hot-stock.js +1 -32
  1343. package/clis/xueqiu/hot.js +1 -37
  1344. package/clis/xueqiu/kline.js +1 -44
  1345. package/clis/xueqiu/search.js +1 -37
  1346. package/clis/xueqiu/stock.js +1 -65
  1347. package/clis/xueqiu/stocks.js +13 -49
  1348. package/clis/xueqiu/users.js +12 -48
  1349. package/clis/xueqiu/utils.js +3 -42
  1350. package/clis/xueqiu/watchlist.js +1 -37
  1351. package/clis/yahoo/search.js +3 -74
  1352. package/clis/yahoo-finance/quote.js +3 -27
  1353. package/clis/yollomi/background.js +1 -46
  1354. package/clis/yollomi/edit.js +1 -57
  1355. package/clis/yollomi/face-swap.js +1 -44
  1356. package/clis/yollomi/generate.js +1 -101
  1357. package/clis/yollomi/models.js +1 -34
  1358. package/clis/yollomi/object-remover.js +1 -43
  1359. package/clis/yollomi/remove-bg.js +1 -39
  1360. package/clis/yollomi/restore.js +1 -39
  1361. package/clis/yollomi/try-on.js +1 -47
  1362. package/clis/yollomi/upload.js +4 -59
  1363. package/clis/yollomi/upscale.js +1 -54
  1364. package/clis/yollomi/utils.js +4 -168
  1365. package/clis/yollomi/video.js +1 -57
  1366. package/clis/youdao/note.js +5 -150
  1367. package/clis/youtube/auth.js +2 -36
  1368. package/clis/youtube/channel.js +4 -113
  1369. package/clis/youtube/comments.js +4 -36
  1370. package/clis/youtube/feed.js +3 -35
  1371. package/clis/youtube/history.js +3 -35
  1372. package/clis/youtube/like.js +5 -39
  1373. package/clis/youtube/playlist.js +7 -58
  1374. package/clis/youtube/publish.js +56 -0
  1375. package/clis/youtube/search.js +3 -64
  1376. package/clis/youtube/subscribe.js +7 -41
  1377. package/clis/youtube/subscriptions.js +4 -36
  1378. package/clis/youtube/transcript-group.js +2 -226
  1379. package/clis/youtube/transcript.js +13 -252
  1380. package/clis/youtube/unlike.js +5 -39
  1381. package/clis/youtube/unsubscribe.js +7 -41
  1382. package/clis/youtube/utils.js +4 -190
  1383. package/clis/youtube/video.js +4 -60
  1384. package/clis/youtube/watch-later.js +6 -42
  1385. package/clis/yuanbao/ask.js +25 -242
  1386. package/clis/yuanbao/auth.js +2 -38
  1387. package/clis/yuanbao/detail.js +1 -65
  1388. package/clis/yuanbao/history.js +1 -51
  1389. package/clis/yuanbao/new.js +4 -60
  1390. package/clis/yuanbao/read.js +1 -38
  1391. package/clis/yuanbao/send.js +1 -57
  1392. package/clis/yuanbao/shared.js +10 -224
  1393. package/clis/yuanbao/status.js +1 -44
  1394. package/clis/yuque/article.js +1 -293
  1395. package/clis/yuque/whoami.js +1 -60
  1396. package/clis/zhihu/answer-comments.js +3 -272
  1397. package/clis/zhihu/answer-detail.js +3 -208
  1398. package/clis/zhihu/answer.js +4 -43
  1399. package/clis/zhihu/article-transform.js +1 -100
  1400. package/clis/zhihu/article.js +6 -129
  1401. package/clis/zhihu/auth.js +2 -50
  1402. package/clis/zhihu/collection.js +3 -195
  1403. package/clis/zhihu/collections.js +3 -124
  1404. package/clis/zhihu/comment.js +5 -43
  1405. package/clis/zhihu/download.js +2 -43
  1406. package/clis/zhihu/favorite.js +6 -54
  1407. package/clis/zhihu/follow.js +4 -35
  1408. package/clis/zhihu/followers.js +1 -40
  1409. package/clis/zhihu/following.js +1 -40
  1410. package/clis/zhihu/hot.js +2 -25
  1411. package/clis/zhihu/like.js +4 -35
  1412. package/clis/zhihu/paginate.js +3 -120
  1413. package/clis/zhihu/pin.js +4 -59
  1414. package/clis/zhihu/pins.js +1 -41
  1415. package/clis/zhihu/question.js +3 -109
  1416. package/clis/zhihu/recommend.js +3 -99
  1417. package/clis/zhihu/search.js +3 -198
  1418. package/clis/zhihu/stats.js +41 -0
  1419. package/clis/zhihu/target.js +1 -91
  1420. package/clis/zhihu/text.js +4 -27
  1421. package/clis/zhihu/user-answers.js +1 -41
  1422. package/clis/zhihu/user-arg.js +1 -34
  1423. package/clis/zhihu/user-articles.js +1 -40
  1424. package/clis/zhihu/user.js +3 -51
  1425. package/clis/zhihu/write-shared.js +7 -176
  1426. package/clis/zlibrary/info.js +1 -48
  1427. package/clis/zlibrary/search.js +1 -47
  1428. package/clis/zlibrary/utils.js +6 -94
  1429. package/clis/zsxq/auth.js +3 -38
  1430. package/clis/zsxq/dynamics.js +1 -48
  1431. package/clis/zsxq/groups.js +1 -33
  1432. package/clis/zsxq/search.js +1 -44
  1433. package/clis/zsxq/topic.js +1 -50
  1434. package/clis/zsxq/topics.js +1 -26
  1435. package/clis/zsxq/utils.js +5 -166
  1436. package/dist/src/adapter-shadow.js +2 -72
  1437. package/dist/src/adapter-source.js +1 -24
  1438. package/dist/src/browser/analyze.js +1 -405
  1439. package/dist/src/browser/article-extract.js +2 -169
  1440. package/dist/src/browser/ax-snapshot.js +2 -217
  1441. package/dist/src/browser/base-page.js +26 -861
  1442. package/dist/src/browser/bridge-readiness.js +1 -24
  1443. package/dist/src/browser/bridge.js +1 -58
  1444. package/dist/src/browser/cdp.d.ts +5 -0
  1445. package/dist/src/browser/cdp.js +1 -536
  1446. package/dist/src/browser/compound.js +2 -32
  1447. package/dist/src/browser/config.js +1 -14
  1448. package/dist/src/browser/daemon-client.js +1 -135
  1449. package/dist/src/browser/daemon-lifecycle.js +12 -150
  1450. package/dist/src/browser/daemon-transport.js +1 -68
  1451. package/dist/src/browser/daemon-version.js +2 -12
  1452. package/dist/src/browser/dom-helpers.js +36 -109
  1453. package/dist/src/browser/dom-snapshot.js +21 -106
  1454. package/dist/src/browser/errors.js +5 -78
  1455. package/dist/src/browser/extract.js +6 -96
  1456. package/dist/src/browser/find.js +13 -83
  1457. package/dist/src/browser/fingerprint.d.ts +44 -0
  1458. package/dist/src/browser/fingerprint.js +82 -0
  1459. package/dist/src/browser/html-tree.js +7 -58
  1460. package/dist/src/browser/index.js +1 -12
  1461. package/dist/src/browser/managed-chrome.d.ts +89 -0
  1462. package/dist/src/browser/managed-chrome.js +1 -0
  1463. package/dist/src/browser/network-cache.js +1 -78
  1464. package/dist/src/browser/network-key.js +1 -66
  1465. package/dist/src/browser/page.js +7 -445
  1466. package/dist/src/browser/profile.d.ts +82 -0
  1467. package/dist/src/browser/profile.js +2 -85
  1468. package/dist/src/browser/proxy-test.d.ts +28 -0
  1469. package/dist/src/browser/proxy-test.js +12 -0
  1470. package/dist/src/browser/shape-filter.js +1 -101
  1471. package/dist/src/browser/shape.js +1 -95
  1472. package/dist/src/browser/stealth.js +2 -25
  1473. package/dist/src/browser/tabs.js +2 -70
  1474. package/dist/src/browser/target-errors.js +1 -45
  1475. package/dist/src/browser/target-resolver.js +27 -174
  1476. package/dist/src/browser/trace.js +2 -91
  1477. package/dist/src/browser/utils.js +1 -64
  1478. package/dist/src/browser/verify-fixture.js +2 -318
  1479. package/dist/src/browser/visual-refs.js +6 -20
  1480. package/dist/src/browser-session-lock.d.ts +13 -0
  1481. package/dist/src/browser-session-lock.js +1 -0
  1482. package/dist/src/browser-session-lock.test.d.ts +1 -0
  1483. package/dist/src/build-manifest.js +15 -362
  1484. package/dist/src/capabilityRouting.js +1 -56
  1485. package/dist/src/cli-argv-preprocess.js +1 -303
  1486. package/dist/src/cli.js +29 -3319
  1487. package/dist/src/commanderAdapter.js +3 -210
  1488. package/dist/src/commands/auth.js +2 -434
  1489. package/dist/src/commands/daemon.d.ts +16 -0
  1490. package/dist/src/commands/daemon.js +1 -98
  1491. package/dist/src/completion-fast.js +1 -88
  1492. package/dist/src/completion-shared.js +4 -34
  1493. package/dist/src/completion.js +1 -68
  1494. package/dist/src/constants.js +1 -38
  1495. package/dist/src/convention-audit.js +2 -553
  1496. package/dist/src/daemon-utils.js +1 -37
  1497. package/dist/src/daemon.js +1 -455
  1498. package/dist/src/discovery.js +2 -280
  1499. package/dist/src/doctor.js +17 -230
  1500. package/dist/src/download/article-download.js +21 -305
  1501. package/dist/src/download/index.js +7 -369
  1502. package/dist/src/download/media-download.js +1 -127
  1503. package/dist/src/download/progress.js +5 -120
  1504. package/dist/src/electron-apps.js +1 -91
  1505. package/dist/src/errors.js +2 -193
  1506. package/dist/src/execution.js +2 -513
  1507. package/dist/src/external.js +1 -227
  1508. package/dist/src/help.js +8 -555
  1509. package/dist/src/hooks.js +1 -58
  1510. package/dist/src/interceptor.js +25 -85
  1511. package/dist/src/launcher.d.ts +1 -1
  1512. package/dist/src/launcher.js +7 -232
  1513. package/dist/src/logger.js +9 -49
  1514. package/dist/src/main.js +9 -175
  1515. package/dist/src/manifest-types.js +1 -9
  1516. package/dist/src/node-network.js +1 -177
  1517. package/dist/src/observation/artifact.js +8 -260
  1518. package/dist/src/observation/events.js +1 -1
  1519. package/dist/src/observation/index.js +1 -7
  1520. package/dist/src/observation/manager.js +1 -27
  1521. package/dist/src/observation/redaction.js +2 -81
  1522. package/dist/src/observation/retention.js +1 -160
  1523. package/dist/src/observation/ring-buffer.js +1 -45
  1524. package/dist/src/observation/session.js +1 -50
  1525. package/dist/src/output.js +2 -159
  1526. package/dist/src/package-paths.js +1 -41
  1527. package/dist/src/pipeline/executor.js +1 -93
  1528. package/dist/src/pipeline/index.js +1 -5
  1529. package/dist/src/pipeline/registry.js +1 -55
  1530. package/dist/src/pipeline/steps/browser.js +1 -86
  1531. package/dist/src/pipeline/steps/download.js +1 -252
  1532. package/dist/src/pipeline/steps/fetch.js +6 -112
  1533. package/dist/src/pipeline/steps/intercept.js +1 -50
  1534. package/dist/src/pipeline/steps/tap.js +17 -57
  1535. package/dist/src/pipeline/steps/transform.js +1 -97
  1536. package/dist/src/pipeline/template.js +1 -354
  1537. package/dist/src/plugin-manifest.js +1 -160
  1538. package/dist/src/plugin-scaffold.js +19 -87
  1539. package/dist/src/plugin.js +20 -1250
  1540. package/dist/src/rate-limit.js +2 -125
  1541. package/dist/src/registry-api.js +1 -10
  1542. package/dist/src/registry.js +1 -125
  1543. package/dist/src/runtime-detect.js +1 -47
  1544. package/dist/src/runtime.d.ts +10 -0
  1545. package/dist/src/runtime.js +1 -54
  1546. package/dist/src/scripts/framework.js +1 -25
  1547. package/dist/src/scripts/interact.js +1 -20
  1548. package/dist/src/scripts/store.js +1 -48
  1549. package/dist/src/serialization.js +4 -102
  1550. package/dist/src/skills.js +6 -127
  1551. package/dist/src/snapshotFormatter.js +3 -338
  1552. package/dist/src/tui.js +16 -179
  1553. package/dist/src/types.js +1 -7
  1554. package/dist/src/update-check.js +8 -202
  1555. package/dist/src/utils.js +6 -120
  1556. package/dist/src/validate.js +3 -129
  1557. package/dist/src/verify.js +2 -71
  1558. package/dist/src/version.js +1 -22
  1559. package/package.json +7 -4
  1560. package/scripts/minify-release.mjs +115 -0
  1561. package/clis/12306/utils.test.js +0 -424
  1562. package/clis/1688/assets.test.js +0 -39
  1563. package/clis/1688/download.test.js +0 -31
  1564. package/clis/1688/item.test.js +0 -67
  1565. package/clis/1688/search.test.js +0 -75
  1566. package/clis/1688/shared.test.js +0 -57
  1567. package/clis/1688/store.test.js +0 -62
  1568. package/clis/36kr/article.test.js +0 -46
  1569. package/clis/36kr/hot.test.js +0 -15
  1570. package/clis/36kr/news.test.js +0 -85
  1571. package/clis/51job/utils.test.js +0 -69
  1572. package/clis/_atlassian/shared.test.js +0 -170
  1573. package/clis/_shared/article/auth.test.js +0 -98
  1574. package/clis/_shared/article/format.test.js +0 -68
  1575. package/clis/_shared/article/images.test.js +0 -182
  1576. package/clis/_shared/article/page-runtime.test.js +0 -155
  1577. package/clis/_shared/article/publish.test.js +0 -104
  1578. package/clis/_shared/site-auth.test.js +0 -98
  1579. package/clis/aibase/news.test.js +0 -59
  1580. package/clis/amazon/bestsellers.test.js +0 -29
  1581. package/clis/amazon/discussion.test.js +0 -124
  1582. package/clis/amazon/offer.test.js +0 -29
  1583. package/clis/amazon/product.test.js +0 -24
  1584. package/clis/amazon/rankings.test.js +0 -41
  1585. package/clis/amazon/search.test.js +0 -22
  1586. package/clis/amazon/shared.test.js +0 -44
  1587. package/clis/antigravity/antigravity.test.js +0 -172
  1588. package/clis/apple-podcasts/commands.test.js +0 -119
  1589. package/clis/apple-podcasts/utils.test.js +0 -57
  1590. package/clis/archive/archive.test.js +0 -262
  1591. package/clis/arxiv/arxiv.test.js +0 -112
  1592. package/clis/autohome/autohome.test.js +0 -115
  1593. package/clis/baidu-scholar/search.test.js +0 -23
  1594. package/clis/baijiahao/article.test.js +0 -395
  1595. package/clis/barchart/greeks.test.js +0 -138
  1596. package/clis/bilibili/article.test.js +0 -384
  1597. package/clis/bilibili/comment.test.js +0 -153
  1598. package/clis/bilibili/comments.test.js +0 -142
  1599. package/clis/bilibili/download.test.js +0 -173
  1600. package/clis/bilibili/dynamic.test.js +0 -68
  1601. package/clis/bilibili/follow.test.js +0 -203
  1602. package/clis/bilibili/hot.test.js +0 -17
  1603. package/clis/bilibili/subtitle.test.js +0 -240
  1604. package/clis/bilibili/summary.test.js +0 -210
  1605. package/clis/bilibili/utils.test.js +0 -97
  1606. package/clis/bilibili/video.test.js +0 -308
  1607. package/clis/binance/commands.test.js +0 -70
  1608. package/clis/bloomberg/businessweek.test.js +0 -149
  1609. package/clis/bloomberg/utils.test.js +0 -129
  1610. package/clis/bluesky/feeds.js +0 -28
  1611. package/clis/bluesky/followers.js +0 -28
  1612. package/clis/bluesky/following.js +0 -28
  1613. package/clis/bluesky/profile.js +0 -30
  1614. package/clis/bluesky/search.js +0 -29
  1615. package/clis/bluesky/starter-packs.js +0 -29
  1616. package/clis/bluesky/thread.js +0 -31
  1617. package/clis/bluesky/trending.js +0 -20
  1618. package/clis/bluesky/user.js +0 -35
  1619. package/clis/booking/booking.test.js +0 -356
  1620. package/clis/boss/chatlist.test.js +0 -211
  1621. package/clis/boss/chatmsg.test.js +0 -230
  1622. package/clis/boss/search.test.js +0 -78
  1623. package/clis/boss/utils.test.js +0 -34
  1624. package/clis/brave/search.test.js +0 -76
  1625. package/clis/chaoxing/utils.test.js +0 -45
  1626. package/clis/chatgpt/commands.test.js +0 -204
  1627. package/clis/chatgpt/envelope.test.js +0 -108
  1628. package/clis/chatgpt/image.test.js +0 -207
  1629. package/clis/chatgpt/model.test.js +0 -36
  1630. package/clis/chatgpt/utils.test.js +0 -1453
  1631. package/clis/chatgpt-app/ax.test.js +0 -95
  1632. package/clis/chatgpt-app/commands.test.js +0 -45
  1633. package/clis/chatwise/composer.test.js +0 -186
  1634. package/clis/chess/analyze.test.js +0 -79
  1635. package/clis/chess/game.test.js +0 -178
  1636. package/clis/chess/games.test.js +0 -164
  1637. package/clis/chess/stats.test.js +0 -79
  1638. package/clis/chess/utils.test.js +0 -230
  1639. package/clis/claude/ask.test.js +0 -338
  1640. package/clis/claude/commands.test.js +0 -118
  1641. package/clis/claude/utils.test.js +0 -148
  1642. package/clis/cnblogs/article.test.js +0 -346
  1643. package/clis/cnki/search.test.js +0 -18
  1644. package/clis/codex/sidebar.test.js +0 -388
  1645. package/clis/coingecko/coingecko.test.js +0 -109
  1646. package/clis/confluence/commands.test.js +0 -195
  1647. package/clis/coupang/coupang.test.js +0 -159
  1648. package/clis/coupang/utils.test.js +0 -62
  1649. package/clis/csdn/article.test.js +0 -378
  1650. package/clis/cto51/article.test.js +0 -326
  1651. package/clis/ctrip/ctrip.test.js +0 -719
  1652. package/clis/dblp/dblp.test.js +0 -397
  1653. package/clis/deepseek/ask.test.js +0 -399
  1654. package/clis/deepseek/detail.test.js +0 -81
  1655. package/clis/deepseek/send.test.js +0 -107
  1656. package/clis/deepseek/utils.test.js +0 -370
  1657. package/clis/defillama/defillama.test.js +0 -99
  1658. package/clis/devto/devto.test.js +0 -236
  1659. package/clis/dianping/dianping.test.js +0 -578
  1660. package/clis/discord-app/commands.test.js +0 -395
  1661. package/clis/dongchedi/dongchedi.test.js +0 -191
  1662. package/clis/douban/article.test.js +0 -136
  1663. package/clis/douban/download.test.js +0 -170
  1664. package/clis/douban/movie-hot.test.js +0 -14
  1665. package/clis/douban/search.test.js +0 -11
  1666. package/clis/douban/subject.test.js +0 -11
  1667. package/clis/douban/utils.test.js +0 -488
  1668. package/clis/doubao/detail.test.js +0 -42
  1669. package/clis/doubao/history.test.js +0 -37
  1670. package/clis/doubao/utils.test.js +0 -396
  1671. package/clis/douyin/_shared/browser-fetch.test.js +0 -64
  1672. package/clis/douyin/_shared/creation-id.test.js +0 -22
  1673. package/clis/douyin/_shared/imagex-upload.test.js +0 -87
  1674. package/clis/douyin/_shared/sts2.test.js +0 -27
  1675. package/clis/douyin/_shared/text-extra.test.js +0 -37
  1676. package/clis/douyin/_shared/timing.test.js +0 -28
  1677. package/clis/douyin/_shared/tos-upload-short-read.test.js +0 -83
  1678. package/clis/douyin/_shared/tos-upload.test.js +0 -229
  1679. package/clis/douyin/_shared/transcode.test.js +0 -91
  1680. package/clis/douyin/_shared/vod-upload.test.js +0 -38
  1681. package/clis/douyin/activities.test.js +0 -55
  1682. package/clis/douyin/collections.test.js +0 -45
  1683. package/clis/douyin/delete.test.js +0 -100
  1684. package/clis/douyin/draft.test.js +0 -347
  1685. package/clis/douyin/drafts.test.js +0 -11
  1686. package/clis/douyin/hashtag.test.js +0 -171
  1687. package/clis/douyin/location.test.js +0 -23
  1688. package/clis/douyin/profile.test.js +0 -46
  1689. package/clis/douyin/publish-upload-id.test.js +0 -206
  1690. package/clis/douyin/publish.test.js +0 -38
  1691. package/clis/douyin/search.test.js +0 -307
  1692. package/clis/douyin/stats.test.js +0 -22
  1693. package/clis/douyin/update.test.js +0 -11
  1694. package/clis/douyin/user-videos.test.js +0 -151
  1695. package/clis/douyin/videos.test.js +0 -54
  1696. package/clis/duckduckgo/search.test.js +0 -128
  1697. package/clis/duckduckgo/suggest.test.js +0 -66
  1698. package/clis/eastmoney/article.test.js +0 -427
  1699. package/clis/eastmoney/hot-rank.test.js +0 -59
  1700. package/clis/endoflife/endoflife.test.js +0 -51
  1701. package/clis/facebook/feed.test.js +0 -169
  1702. package/clis/facebook/marketplace.test.js +0 -91
  1703. package/clis/facebook/notifications.test.js +0 -458
  1704. package/clis/facebook/search.test.js +0 -55
  1705. package/clis/flathub/flathub.test.js +0 -90
  1706. package/clis/flomo/memos.test.js +0 -144
  1707. package/clis/gemini/ask.test.js +0 -100
  1708. package/clis/gemini/commands.test.js +0 -212
  1709. package/clis/gemini/deep-research-result.test.js +0 -155
  1710. package/clis/gemini/deep-research.test.js +0 -181
  1711. package/clis/gemini/reply-state.test.js +0 -671
  1712. package/clis/gemini/utils.test.js +0 -392
  1713. package/clis/geogebra/geogebra.test.js +0 -175
  1714. package/clis/gitee/search.test.js +0 -65
  1715. package/clis/gitee/user.test.js +0 -63
  1716. package/clis/github-trending/repos.test.js +0 -149
  1717. package/clis/google/utils.test.js +0 -75
  1718. package/clis/google-scholar/cite.test.js +0 -47
  1719. package/clis/google-scholar/profile.test.js +0 -49
  1720. package/clis/google-scholar/search.test.js +0 -71
  1721. package/clis/goproxy/goproxy.test.js +0 -103
  1722. package/clis/gov-law/commands.test.js +0 -39
  1723. package/clis/gov-policy/gov-policy.test.js +0 -224
  1724. package/clis/grok/ask.test.js +0 -29
  1725. package/clis/grok/export.test.js +0 -210
  1726. package/clis/grok/utils.test.js +0 -141
  1727. package/clis/guazi/guazi.test.js +0 -126
  1728. package/clis/hackernews/hackernews.test.js +0 -132
  1729. package/clis/hf/hf.test.js +0 -16
  1730. package/clis/huodongxing/events.test.js +0 -296
  1731. package/clis/hupu/hot.test.js +0 -224
  1732. package/clis/imdb/utils.test.js +0 -88
  1733. package/clis/imooc/article.test.js +0 -264
  1734. package/clis/indeed/indeed.test.js +0 -375
  1735. package/clis/instagram/_shared/private-publish.test.js +0 -705
  1736. package/clis/instagram/_shared/protocol-capture.test.js +0 -114
  1737. package/clis/instagram/detail.test.js +0 -137
  1738. package/clis/instagram/download.test.js +0 -118
  1739. package/clis/instagram/instagram.test.js +0 -381
  1740. package/clis/instagram/note.test.js +0 -53
  1741. package/clis/instagram/post.test.js +0 -1647
  1742. package/clis/instagram/reel.test.js +0 -167
  1743. package/clis/instagram/story.test.js +0 -134
  1744. package/clis/instagram/user.test.js +0 -282
  1745. package/clis/jd/commands.test.js +0 -41
  1746. package/clis/jd/item.test.js +0 -354
  1747. package/clis/jianyu/search.test.js +0 -153
  1748. package/clis/jianyu/shared/procurement-contract.test.js +0 -72
  1749. package/clis/jianyu/shared/procurement-detail.test.js +0 -84
  1750. package/clis/jike/read.test.js +0 -86
  1751. package/clis/jira/commands.test.js +0 -287
  1752. package/clis/juejin/article.test.js +0 -299
  1753. package/clis/juejin/juejin.test.js +0 -241
  1754. package/clis/kimi/kimi.test.js +0 -187
  1755. package/clis/lesswrong/frontpage.test.js +0 -37
  1756. package/clis/lichess/lichess.test.js +0 -85
  1757. package/clis/linkedin/connect.test.js +0 -328
  1758. package/clis/linkedin/inbox.test.js +0 -152
  1759. package/clis/linkedin/job-detail.test.js +0 -64
  1760. package/clis/linkedin/jobs-preferences.test.js +0 -43
  1761. package/clis/linkedin/people-search.test.js +0 -216
  1762. package/clis/linkedin/post-analytics.test.js +0 -40
  1763. package/clis/linkedin/posts.test.js +0 -40
  1764. package/clis/linkedin/profile-analytics.test.js +0 -67
  1765. package/clis/linkedin/profile-experience.test.js +0 -152
  1766. package/clis/linkedin/profile-projects.test.js +0 -111
  1767. package/clis/linkedin/profile-read.test.js +0 -77
  1768. package/clis/linkedin/safe-send.test.js +0 -255
  1769. package/clis/linkedin/salesnav-inbox.test.js +0 -113
  1770. package/clis/linkedin/salesnav-message.test.js +0 -172
  1771. package/clis/linkedin/salesnav-search.test.js +0 -76
  1772. package/clis/linkedin/salesnav-thread.test.js +0 -79
  1773. package/clis/linkedin/search.test.js +0 -222
  1774. package/clis/linkedin/sent-invitations.test.js +0 -62
  1775. package/clis/linkedin/services-read.test.js +0 -105
  1776. package/clis/linkedin/thread-snapshot.test.js +0 -89
  1777. package/clis/linkedin/timeline.test.js +0 -81
  1778. package/clis/linkedin-learning/course.test.js +0 -114
  1779. package/clis/linkedin-learning/search.test.js +0 -144
  1780. package/clis/linkedin-learning/trending.test.js +0 -123
  1781. package/clis/linux-do/feed.test.js +0 -153
  1782. package/clis/linux-do/topic-content.test.js +0 -59
  1783. package/clis/lobsters/lobsters.test.js +0 -169
  1784. package/clis/maimai/search-talents.test.js +0 -29
  1785. package/clis/manus/manus.test.js +0 -382
  1786. package/clis/notebooklm/add-source.test.js +0 -97
  1787. package/clis/notebooklm/compat.test.js +0 -16
  1788. package/clis/notebooklm/create.test.js +0 -58
  1789. package/clis/notebooklm/generate-audio.test.js +0 -63
  1790. package/clis/notebooklm/generate-slides.test.js +0 -75
  1791. package/clis/notebooklm/history.test.js +0 -58
  1792. package/clis/notebooklm/note-list.test.js +0 -56
  1793. package/clis/notebooklm/notes-get.test.js +0 -72
  1794. package/clis/notebooklm/open.test.js +0 -63
  1795. package/clis/notebooklm/rpc.test.js +0 -131
  1796. package/clis/notebooklm/source-fulltext.test.js +0 -106
  1797. package/clis/notebooklm/source-get.test.js +0 -84
  1798. package/clis/notebooklm/source-guide.test.js +0 -104
  1799. package/clis/notebooklm/summary.test.js +0 -78
  1800. package/clis/notebooklm/utils.test.js +0 -449
  1801. package/clis/notebooklm/write-note.test.js +0 -70
  1802. package/clis/nuget/nuget.test.js +0 -111
  1803. package/clis/oeis/oeis.test.js +0 -88
  1804. package/clis/ones/task-helpers.test.js +0 -12
  1805. package/clis/ones/worklog.test.js +0 -20
  1806. package/clis/openfda/openfda.test.js +0 -114
  1807. package/clis/openreview/openreview.test.js +0 -427
  1808. package/clis/oschina/article.test.js +0 -361
  1809. package/clis/osv/osv.test.js +0 -97
  1810. package/clis/paperreview/commands.test.js +0 -243
  1811. package/clis/paperreview/utils.test.js +0 -49
  1812. package/clis/pixiv/detail.test.js +0 -93
  1813. package/clis/pixiv/download.test.js +0 -97
  1814. package/clis/pixiv/illusts.test.js +0 -99
  1815. package/clis/pixiv/search.test.js +0 -83
  1816. package/clis/pixiv/user.test.js +0 -100
  1817. package/clis/powerchina/search.test.js +0 -93
  1818. package/clis/producthunt/utils.test.js +0 -64
  1819. package/clis/pubmed/pubmed.test.js +0 -464
  1820. package/clis/qoder/qoder.test.js +0 -125
  1821. package/clis/quark/utils.test.js +0 -58
  1822. package/clis/qwen/ask.test.js +0 -36
  1823. package/clis/qwen/utils.test.js +0 -128
  1824. package/clis/reddit/extract-media.test.js +0 -149
  1825. package/clis/reddit/frontpage.test.js +0 -34
  1826. package/clis/reddit/home.test.js +0 -170
  1827. package/clis/reddit/hot.test.js +0 -32
  1828. package/clis/reddit/popular.test.js +0 -26
  1829. package/clis/reddit/read.test.js +0 -402
  1830. package/clis/reddit/reply.test.js +0 -89
  1831. package/clis/reddit/search.test.js +0 -26
  1832. package/clis/reddit/subreddit-info.test.js +0 -163
  1833. package/clis/reddit/subreddit.test.js +0 -31
  1834. package/clis/reddit/subscribed.test.js +0 -168
  1835. package/clis/reddit/whoami.test.js +0 -105
  1836. package/clis/rednote/navigation.test.js +0 -26
  1837. package/clis/rednote/rednote.test.js +0 -240
  1838. package/clis/rest-countries/rest-countries.test.js +0 -83
  1839. package/clis/reuters/reuters.test.js +0 -299
  1840. package/clis/rfc/rfc.test.js +0 -74
  1841. package/clis/segmentfault/article.test.js +0 -470
  1842. package/clis/semanticscholar/semanticscholar.test.js +0 -279
  1843. package/clis/sinafinance/stock.test.js +0 -59
  1844. package/clis/slock/api-base-canary.test.js +0 -62
  1845. package/clis/slock/attachment-download.test.js +0 -102
  1846. package/clis/slock/attachment-upload.test.js +0 -131
  1847. package/clis/slock/attachment-url.test.js +0 -41
  1848. package/clis/slock/bookmark-add.test.js +0 -38
  1849. package/clis/slock/bookmark-list.test.js +0 -47
  1850. package/clis/slock/bookmark-remove.test.js +0 -24
  1851. package/clis/slock/channel-action.test.js +0 -65
  1852. package/clis/slock/channel-create.test.js +0 -40
  1853. package/clis/slock/channel-files.test.js +0 -32
  1854. package/clis/slock/channel-info.test.js +0 -25
  1855. package/clis/slock/channel-list.test.js +0 -37
  1856. package/clis/slock/channel-mark.test.js +0 -49
  1857. package/clis/slock/channel-members.test.js +0 -44
  1858. package/clis/slock/cross-command.test.js +0 -21
  1859. package/clis/slock/dm-list.test.js +0 -26
  1860. package/clis/slock/error-detail-canary.test.js +0 -144
  1861. package/clis/slock/errors.test.js +0 -29
  1862. package/clis/slock/in-page.test.js +0 -362
  1863. package/clis/slock/inbox-done.test.js +0 -21
  1864. package/clis/slock/inbox-read-all.test.js +0 -20
  1865. package/clis/slock/inbox.test.js +0 -46
  1866. package/clis/slock/message-read.test.js +0 -83
  1867. package/clis/slock/message-search.test.js +0 -61
  1868. package/clis/slock/message-send.test.js +0 -127
  1869. package/clis/slock/reaction-add.test.js +0 -36
  1870. package/clis/slock/reaction-remove.test.js +0 -29
  1871. package/clis/slock/resolve.test.js +0 -102
  1872. package/clis/slock/server-list.test.js +0 -24
  1873. package/clis/slock/server-override-canary.test.js +0 -87
  1874. package/clis/slock/server-use.test.js +0 -48
  1875. package/clis/slock/short-id-canary.test.js +0 -86
  1876. package/clis/slock/site-session-canary.test.js +0 -49
  1877. package/clis/slock/task-claim.test.js +0 -81
  1878. package/clis/slock/task-convert.test.js +0 -82
  1879. package/clis/slock/task-create.test.js +0 -65
  1880. package/clis/slock/task-delete.test.js +0 -52
  1881. package/clis/slock/task-get.test.js +0 -45
  1882. package/clis/slock/task-list-server.test.js +0 -48
  1883. package/clis/slock/task-list.test.js +0 -59
  1884. package/clis/slock/task-status.test.js +0 -76
  1885. package/clis/slock/task-unclaim.test.js +0 -49
  1886. package/clis/slock/thread-follow.test.js +0 -34
  1887. package/clis/slock/thread-list.test.js +0 -24
  1888. package/clis/slock/thread-state.test.js +0 -38
  1889. package/clis/slock/unread-summary.test.js +0 -31
  1890. package/clis/slock/whoami.test.js +0 -23
  1891. package/clis/smzdm/search.test.js +0 -114
  1892. package/clis/sohu/article.test.js +0 -397
  1893. package/clis/spotify/utils.test.js +0 -67
  1894. package/clis/stackoverflow/stackoverflow.test.js +0 -404
  1895. package/clis/steam/steam.test.js +0 -46
  1896. package/clis/substack/utils.test.js +0 -44
  1897. package/clis/suno/commands.test.js +0 -188
  1898. package/clis/suno/download.test.js +0 -151
  1899. package/clis/suno/generate.test.js +0 -252
  1900. package/clis/suno/utils.test.js +0 -329
  1901. package/clis/taobao/commands.test.js +0 -41
  1902. package/clis/tdx/hot-rank.test.js +0 -59
  1903. package/clis/ths/hot-rank.test.js +0 -64
  1904. package/clis/tieba/commands.test.js +0 -79
  1905. package/clis/tieba/utils.test.js +0 -290
  1906. package/clis/tiktok/creator-videos.test.js +0 -113
  1907. package/clis/tiktok/refactor.test.js +0 -389
  1908. package/clis/tiktok/write-refactor.test.js +0 -370
  1909. package/clis/toutiao/toutiao.test.js +0 -378
  1910. package/clis/trae-cn/trae-cn.test.js +0 -412
  1911. package/clis/trae-solo/trae-solo.test.js +0 -67
  1912. package/clis/tvmaze/tvmaze.test.js +0 -93
  1913. package/clis/twitter/bookmark-folder.test.js +0 -396
  1914. package/clis/twitter/bookmark-folders.test.js +0 -152
  1915. package/clis/twitter/bookmark.test.js +0 -74
  1916. package/clis/twitter/bookmarks.test.js +0 -206
  1917. package/clis/twitter/delete.test.js +0 -103
  1918. package/clis/twitter/device-follow.test.js +0 -287
  1919. package/clis/twitter/download.test.js +0 -457
  1920. package/clis/twitter/follow-batch.test.js +0 -137
  1921. package/clis/twitter/followers.test.js +0 -62
  1922. package/clis/twitter/following.test.js +0 -359
  1923. package/clis/twitter/hide-reply.test.js +0 -76
  1924. package/clis/twitter/like.test.js +0 -73
  1925. package/clis/twitter/likes.test.js +0 -220
  1926. package/clis/twitter/list-add.test.js +0 -133
  1927. package/clis/twitter/list-batch.test.js +0 -113
  1928. package/clis/twitter/list-create.test.js +0 -169
  1929. package/clis/twitter/list-delete.test.js +0 -102
  1930. package/clis/twitter/list-remove.test.js +0 -147
  1931. package/clis/twitter/list-tweets.test.js +0 -198
  1932. package/clis/twitter/lists.test.js +0 -253
  1933. package/clis/twitter/post.test.js +0 -334
  1934. package/clis/twitter/profile.test.js +0 -150
  1935. package/clis/twitter/quote.test.js +0 -230
  1936. package/clis/twitter/reply.test.js +0 -237
  1937. package/clis/twitter/retweet.test.js +0 -73
  1938. package/clis/twitter/schedule.test.js +0 -86
  1939. package/clis/twitter/scheduled-delete.test.js +0 -58
  1940. package/clis/twitter/scheduled-list.test.js +0 -36
  1941. package/clis/twitter/search.test.js +0 -400
  1942. package/clis/twitter/shared.test.js +0 -1012
  1943. package/clis/twitter/thread.test.js +0 -58
  1944. package/clis/twitter/timeline.test.js +0 -104
  1945. package/clis/twitter/trending.test.js +0 -15
  1946. package/clis/twitter/tweets.test.js +0 -487
  1947. package/clis/twitter/unbookmark.test.js +0 -73
  1948. package/clis/twitter/unlike.test.js +0 -75
  1949. package/clis/twitter/unretweet.test.js +0 -73
  1950. package/clis/twitter/utils.test.js +0 -169
  1951. package/clis/uisdc/news.test.js +0 -66
  1952. package/clis/uiverse/_shared.test.js +0 -62
  1953. package/clis/uiverse/navigation.test.js +0 -12
  1954. package/clis/upwork/upwork.test.js +0 -566
  1955. package/clis/wanfang/search.test.js +0 -23
  1956. package/clis/web/read.test.js +0 -392
  1957. package/clis/wechat-channels/publish.test.js +0 -144
  1958. package/clis/weibo/delete.test.js +0 -94
  1959. package/clis/weibo/envelope.test.js +0 -85
  1960. package/clis/weibo/favorites.test.js +0 -114
  1961. package/clis/weibo/publish.test.js +0 -192
  1962. package/clis/weibo/user-posts.test.js +0 -92
  1963. package/clis/weibo/utils.test.js +0 -36
  1964. package/clis/weixin/article.test.js +0 -299
  1965. package/clis/weixin/download.test.js +0 -106
  1966. package/clis/weixin/drafts.test.js +0 -69
  1967. package/clis/weixin/search.test.js +0 -227
  1968. package/clis/weread/ai-outline.test.js +0 -83
  1969. package/clis/weread/book-search.test.js +0 -242
  1970. package/clis/weread/commands.test.js +0 -398
  1971. package/clis/weread/private-api-regression.test.js +0 -369
  1972. package/clis/weread/search-regression.test.js +0 -494
  1973. package/clis/weread/utils.test.js +0 -128
  1974. package/clis/weread-official/commands.test.js +0 -385
  1975. package/clis/weread-official/utils.test.js +0 -242
  1976. package/clis/wikidata/wikidata.test.js +0 -83
  1977. package/clis/wikipedia/trending.test.js +0 -57
  1978. package/clis/woshipm/article.test.js +0 -305
  1979. package/clis/wttr/wttr.test.js +0 -84
  1980. package/clis/xianyu/chat.test.js +0 -84
  1981. package/clis/xianyu/im.test.js +0 -253
  1982. package/clis/xianyu/item.test.js +0 -56
  1983. package/clis/xianyu/publish.test.js +0 -220
  1984. package/clis/xianyu/search.test.js +0 -104
  1985. package/clis/xiaoe/xiaoe.test.js +0 -486
  1986. package/clis/xiaohongshu/ask.test.js +0 -271
  1987. package/clis/xiaohongshu/collection-helpers.test.js +0 -125
  1988. package/clis/xiaohongshu/comments.test.js +0 -320
  1989. package/clis/xiaohongshu/creator-note-detail.test.js +0 -451
  1990. package/clis/xiaohongshu/creator-notes-summary.test.js +0 -94
  1991. package/clis/xiaohongshu/creator-notes.test.js +0 -281
  1992. package/clis/xiaohongshu/creator-stats.test.js +0 -24
  1993. package/clis/xiaohongshu/delete-note.test.js +0 -177
  1994. package/clis/xiaohongshu/download.test.js +0 -415
  1995. package/clis/xiaohongshu/drafts.test.js +0 -172
  1996. package/clis/xiaohongshu/feed.test.js +0 -126
  1997. package/clis/xiaohongshu/follow.test.js +0 -211
  1998. package/clis/xiaohongshu/liked.test.js +0 -82
  1999. package/clis/xiaohongshu/navigation.test.js +0 -38
  2000. package/clis/xiaohongshu/note.test.js +0 -249
  2001. package/clis/xiaohongshu/publish.test.js +0 -1155
  2002. package/clis/xiaohongshu/saved.test.js +0 -143
  2003. package/clis/xiaohongshu/search.test.js +0 -394
  2004. package/clis/xiaohongshu/user-helpers.test.js +0 -160
  2005. package/clis/xiaohongshu/user.test.js +0 -141
  2006. package/clis/xiaoyuzhou/auth.test.js +0 -124
  2007. package/clis/xiaoyuzhou/download.test.js +0 -135
  2008. package/clis/xiaoyuzhou/podcast-episodes.test.js +0 -78
  2009. package/clis/xiaoyuzhou/transcript.test.js +0 -195
  2010. package/clis/xiaoyuzhou/utils.test.js +0 -39
  2011. package/clis/xueqiu/article.test.js +0 -505
  2012. package/clis/xueqiu/comments.test.js +0 -696
  2013. package/clis/xueqiu/danjuan-utils.test.js +0 -41
  2014. package/clis/xueqiu/utils.test.js +0 -26
  2015. package/clis/yahoo/search.test.js +0 -94
  2016. package/clis/youdao/note.test.js +0 -99
  2017. package/clis/youtube/channel.test.js +0 -283
  2018. package/clis/youtube/feed.test.js +0 -131
  2019. package/clis/youtube/transcript-group.test.js +0 -99
  2020. package/clis/youtube/transcript.test.js +0 -296
  2021. package/clis/youtube/utils.test.js +0 -84
  2022. package/clis/youtube/video.test.js +0 -111
  2023. package/clis/yuanbao/ask.test.js +0 -124
  2024. package/clis/yuanbao/new.test.js +0 -30
  2025. package/clis/yuanbao/shared.test.js +0 -80
  2026. package/clis/yuque/article.test.js +0 -415
  2027. package/clis/zhihu/answer-comments.test.js +0 -287
  2028. package/clis/zhihu/answer-detail.test.js +0 -338
  2029. package/clis/zhihu/answer.test.js +0 -54
  2030. package/clis/zhihu/article-transform.test.js +0 -43
  2031. package/clis/zhihu/collection.test.js +0 -337
  2032. package/clis/zhihu/collections.test.js +0 -182
  2033. package/clis/zhihu/comment.test.js +0 -50
  2034. package/clis/zhihu/download.test.js +0 -12
  2035. package/clis/zhihu/favorite.test.js +0 -59
  2036. package/clis/zhihu/follow.test.js +0 -42
  2037. package/clis/zhihu/followers.test.js +0 -42
  2038. package/clis/zhihu/following.test.js +0 -44
  2039. package/clis/zhihu/like.test.js +0 -41
  2040. package/clis/zhihu/pins.test.js +0 -44
  2041. package/clis/zhihu/question.test.js +0 -251
  2042. package/clis/zhihu/recommend.test.js +0 -143
  2043. package/clis/zhihu/search.test.js +0 -198
  2044. package/clis/zhihu/target.test.js +0 -77
  2045. package/clis/zhihu/text.test.js +0 -24
  2046. package/clis/zhihu/user-answers.test.js +0 -69
  2047. package/clis/zhihu/user-articles.test.js +0 -44
  2048. package/clis/zhihu/user.test.js +0 -73
  2049. package/clis/zhihu/write-shared.test.js +0 -179
  2050. package/clis/zlibrary/commands.test.js +0 -65
  2051. package/clis/zsxq/search.test.js +0 -24
  2052. package/clis/zsxq/topic.test.js +0 -30
  2053. package/clis/zsxq/topics.test.js +0 -24
  2054. package/clis/zsxq/utils.test.js +0 -31
  2055. package/dist/src/adapter-shadow.test.js +0 -49
  2056. package/dist/src/adapter-source.test.js +0 -29
  2057. package/dist/src/browser/analyze.test.js +0 -209
  2058. package/dist/src/browser/article-extract.e2e.test.js +0 -105
  2059. package/dist/src/browser/article-extract.test.js +0 -94
  2060. package/dist/src/browser/ax-snapshot.test.js +0 -91
  2061. package/dist/src/browser/base-page.test.js +0 -803
  2062. package/dist/src/browser/bridge-readiness.test.js +0 -57
  2063. package/dist/src/browser/cdp-click-fixture.test.js +0 -87
  2064. package/dist/src/browser/cdp.test.js +0 -79
  2065. package/dist/src/browser/compound.test.js +0 -175
  2066. package/dist/src/browser/daemon-client.test.js +0 -318
  2067. package/dist/src/browser/dom-helpers.test.js +0 -106
  2068. package/dist/src/browser/dom-snapshot.test.js +0 -313
  2069. package/dist/src/browser/errors.test.js +0 -60
  2070. package/dist/src/browser/extract.test.js +0 -129
  2071. package/dist/src/browser/find.test.js +0 -180
  2072. package/dist/src/browser/html-tree.test.js +0 -181
  2073. package/dist/src/browser/network-cache.test.js +0 -75
  2074. package/dist/src/browser/network-key.test.js +0 -49
  2075. package/dist/src/browser/page.test.js +0 -406
  2076. package/dist/src/browser/shape-filter.test.js +0 -101
  2077. package/dist/src/browser/shape.test.js +0 -82
  2078. package/dist/src/browser/stealth.test.js +0 -134
  2079. package/dist/src/browser/target-errors.test.js +0 -94
  2080. package/dist/src/browser/target-resolver.test.js +0 -118
  2081. package/dist/src/browser/utils.test.js +0 -29
  2082. package/dist/src/browser/verify-fixture.test.js +0 -219
  2083. package/dist/src/browser.test.js +0 -291
  2084. package/dist/src/build-manifest.test.js +0 -341
  2085. package/dist/src/capabilityRouting.test.js +0 -63
  2086. package/dist/src/cli-argv-preprocess.test.js +0 -304
  2087. package/dist/src/cli.test.js +0 -3003
  2088. package/dist/src/commanderAdapter.test.js +0 -386
  2089. package/dist/src/commands/auth.test.js +0 -309
  2090. package/dist/src/commands/daemon.test.js +0 -283
  2091. package/dist/src/completion.test.js +0 -24
  2092. package/dist/src/convention-audit.test.js +0 -247
  2093. package/dist/src/daemon.test.js +0 -60
  2094. package/dist/src/doctor.test.js +0 -263
  2095. package/dist/src/download/article-download.test.js +0 -235
  2096. package/dist/src/download/index.test.js +0 -177
  2097. package/dist/src/download/media-download.test.js +0 -112
  2098. package/dist/src/download/progress.test.js +0 -36
  2099. package/dist/src/electron-apps.test.js +0 -76
  2100. package/dist/src/engine.test.js +0 -337
  2101. package/dist/src/errors.test.js +0 -109
  2102. package/dist/src/execution.test.js +0 -645
  2103. package/dist/src/extension-manifest-regression.test.js +0 -12
  2104. package/dist/src/external.test.js +0 -188
  2105. package/dist/src/help.test.js +0 -58
  2106. package/dist/src/hooks.test.js +0 -92
  2107. package/dist/src/interceptor.test.js +0 -81
  2108. package/dist/src/launcher.test.js +0 -191
  2109. package/dist/src/node-network.test.js +0 -81
  2110. package/dist/src/observation/artifact.test.js +0 -121
  2111. package/dist/src/observation/manager.test.js +0 -13
  2112. package/dist/src/observation/redaction.test.js +0 -32
  2113. package/dist/src/observation/retention.test.js +0 -118
  2114. package/dist/src/observation/ring-buffer.test.js +0 -22
  2115. package/dist/src/output.test.js +0 -79
  2116. package/dist/src/package-exports.test.js +0 -112
  2117. package/dist/src/pipeline/executor.test.js +0 -182
  2118. package/dist/src/pipeline/steps/download.test.js +0 -102
  2119. package/dist/src/pipeline/steps/fetch.test.js +0 -188
  2120. package/dist/src/pipeline/template.test.js +0 -212
  2121. package/dist/src/pipeline/transform.test.js +0 -174
  2122. package/dist/src/plugin-manifest.test.js +0 -179
  2123. package/dist/src/plugin-scaffold.test.js +0 -83
  2124. package/dist/src/plugin.test.js +0 -1349
  2125. package/dist/src/rate-limit.test.js +0 -66
  2126. package/dist/src/registry.test.js +0 -209
  2127. package/dist/src/runtime-detect.test.js +0 -39
  2128. package/dist/src/serialization.test.js +0 -78
  2129. package/dist/src/skills.test.js +0 -71
  2130. package/dist/src/snapshotFormatter.test.js +0 -521
  2131. package/dist/src/tui.test.js +0 -19
  2132. package/dist/src/update-check.test.js +0 -116
  2133. package/dist/src/utils.test.js +0 -155
  2134. package/dist/src/validate.test.js +0 -90
  2135. package/dist/src/verify.test.js +0 -63
  2136. package/dist/src/weixin-download.test.js +0 -45
@@ -1,90 +1,6 @@
1
- import { cli, Strategy } from '@jackwener/opencli/registry';
2
- import { AuthRequiredError, CommandExecutionError, EmptyResultError } from '@jackwener/opencli/errors';
3
- import { apiGet, resolveBvid, parsePageArg, selectVideoPart } from './utils.js';
4
- cli({
5
- site: 'bilibili',
6
- name: 'subtitle',
7
- access: 'read',
8
- description: '获取 Bilibili 视频的字幕',
9
- domain: 'www.bilibili.com',
10
- strategy: Strategy.COOKIE,
11
- args: [
12
- { name: 'bvid', required: true, positional: true, help: 'Bilibili 视频 BV ID(如 BV1xx411c7mD),或视频 URL / b23.tv 短链' },
13
- { name: 'lang', required: false, help: '字幕语言代码 (如 zh-CN, en-US, ai-zh),默认取第一个' },
14
- { name: 'page', required: false, help: '分P 选集序号(从 1 开始)。多 P 视频取该集字幕;缺省取默认 P1' },
15
- ],
16
- columns: ['index', 'from', 'to', 'content'],
17
- func: async (page, kwargs) => {
18
- if (!page)
19
- throw new CommandExecutionError('Browser session required for bilibili subtitle');
20
- const bvid = await resolveBvid(kwargs.bvid);
21
- const selectedPage = parsePageArg(kwargs.page);
22
- // 1. 通过 view API 拿 cid。
23
- // 以前的实现走 page.goto(/video/<bvid>) + window.__INITIAL_STATE__.videoData.cid,
24
- // bangumi 绑定的 bvid(番剧/纪录片/电影/综艺)页面 state 不在 videoData 而在 epList,
25
- // 导致 SELECTOR 错。view API 接受任何 bvid(UGC + PGC 都通),且不依赖 DOM 结构。
26
- let view;
27
- try {
28
- view = await apiGet(page, '/x/web-interface/view', { params: { bvid } });
29
- }
30
- catch (err) {
31
- throw new CommandExecutionError(`获取视频信息失败: ${err?.message || err}`);
32
- }
33
- if (view?.code !== 0) {
34
- throw new CommandExecutionError(`获取视频信息失败: ${view?.message ?? 'unknown'} (${view?.code})`);
35
- }
36
- // --page 给定时用该集 cid(selectVideoPart 越界抛错);缺省取整集默认 cid(P1,旧行为)。
37
- const cid = selectedPage != null ? selectVideoPart(view?.data, selectedPage).cid : view?.data?.cid;
38
- if (!cid) {
39
- throw new CommandExecutionError(`无法从 view API 拿到 cid (bvid=${bvid})`);
40
- }
41
- // 2. 用带 Wbi 签名的 player/v2 拿字幕列表(之前 evaluate 里 fetch 因为没签名会 403)
42
- let payload;
43
- try {
44
- payload = await apiGet(page, '/x/player/wbi/v2', {
45
- params: { bvid, cid },
46
- signed: true,
47
- });
48
- }
49
- catch (err) {
50
- throw new CommandExecutionError(`获取视频播放信息失败: ${err?.message || err}`);
51
- }
52
- if (!payload || typeof payload !== 'object' || Array.isArray(payload)) {
53
- throw new CommandExecutionError('获取到的视频播放信息对象不符合预期格式');
54
- }
55
- if (payload.code !== 0) {
56
- throw new CommandExecutionError(`获取视频播放信息失败: ${payload.message} (${payload.code})`);
57
- }
58
- const needLoginSubtitle = payload.data?.need_login_subtitle === true;
59
- const subtitles = payload.data?.subtitle?.subtitles;
60
- if (!Array.isArray(subtitles)) {
61
- throw new CommandExecutionError('获取到的字幕列表对象不符合数组格式');
62
- }
63
- if (subtitles.length === 0) {
64
- if (needLoginSubtitle) {
65
- throw new AuthRequiredError('bilibili.com', 'Bilibili subtitles are hidden behind login for this video. Please log in to bilibili.com in Chrome and retry.');
66
- }
67
- throw new EmptyResultError('bilibili subtitle', '此视频没有发现外挂或智能字幕。');
68
- }
69
- // 3. 选择目标字幕语言
70
- const target = kwargs.lang
71
- ? subtitles.find((s) => s.lan === kwargs.lang) || subtitles[0]
72
- : subtitles[0];
73
- if (!target || typeof target !== 'object' || !Object.hasOwn(target, 'subtitle_url')) {
74
- throw new CommandExecutionError('字幕条目缺少 subtitle_url 字段');
75
- }
76
- const targetSubUrl = typeof target.subtitle_url === 'string' ? target.subtitle_url.trim() : '';
77
- if (!targetSubUrl) {
78
- throw new AuthRequiredError('bilibili.com', '[风控拦截/未登录] 获取到的 subtitle_url 为空!请确保 CLI 已成功登录且风控未封锁此账号。');
79
- }
80
- const finalUrl = targetSubUrl.startsWith('//') ? 'https:' + targetSubUrl : targetSubUrl;
81
- if (!/^https?:\/\//i.test(finalUrl)) {
82
- throw new CommandExecutionError(`字幕 URL 非法: ${finalUrl}`);
83
- }
84
- // 4. 解析并拉取 CDN 的 JSON 文件
85
- const fetchJs = `
1
+ import{cli as j,Strategy as A}from"@jackwener/opencli/registry";import{AuthRequiredError as V,CommandExecutionError as F,EmptyResultError as q}from"@jackwener/opencli/errors";import{apiGet as G,resolveBvid as I,parsePageArg as P,selectVideoPart as R}from"./utils.js";j({site:"bilibili",name:"subtitle",access:"read",description:"获取 Bilibili 视频的字幕",domain:"www.bilibili.com",strategy:A.COOKIE,args:[{name:"bvid",required:!0,positional:!0,help:"Bilibili 视频 BV ID(如 BV1xx411c7mD),或视频 URL / b23.tv 短链"},{name:"lang",required:!1,help:"字幕语言代码 (如 zh-CN, en-US, ai-zh),默认取第一个"},{name:"page",required:!1,help:"分P 选集序号(从 1 开始)。多 P 视频取该集字幕;缺省取默认 P1"}],columns:["index","from","to","content"],func:async(W,X)=>{if(!W)throw new F("Browser session required for bilibili subtitle");const Z=await I(X.bvid),B=P(X.page);let M;try{M=await G(W,"/x/web-interface/view",{params:{bvid:Z}})}catch(z){throw new F(`获取视频信息失败: ${z?.message||z}`)}if(M?.code!==0)throw new F(`获取视频信息失败: ${M?.message??"unknown"} (${M?.code})`);const D=B!=null?R(M?.data,B).cid:M?.data?.cid;if(!D)throw new F(`无法从 view API 拿到 cid (bvid=${Z})`);let H;try{H=await G(W,"/x/player/wbi/v2",{params:{bvid:Z,cid:D},signed:!0})}catch(z){throw new F(`获取视频播放信息失败: ${z?.message||z}`)}if(!H||typeof H!=="object"||Array.isArray(H))throw new F("获取到的视频播放信息对象不符合预期格式");if(H.code!==0)throw new F(`获取视频播放信息失败: ${H.message} (${H.code})`);const J=H.data?.need_login_subtitle===!0,Q=H.data?.subtitle?.subtitles;if(!Array.isArray(Q))throw new F("获取到的字幕列表对象不符合数组格式");if(Q.length===0){if(J)throw new V("bilibili.com","Bilibili subtitles are hidden behind login for this video. Please log in to bilibili.com in Chrome and retry.");throw new q("bilibili subtitle","此视频没有发现外挂或智能字幕。")}const T=X.lang?Q.find((z)=>z.lan===X.lang)||Q[0]:Q[0];if(!T||typeof T!=="object"||!Object.hasOwn(T,"subtitle_url"))throw new F("字幕条目缺少 subtitle_url 字段");const Y=typeof T.subtitle_url==="string"?T.subtitle_url.trim():"";if(!Y)throw new V("bilibili.com","[风控拦截/未登录] 获取到的 subtitle_url 为空!请确保 CLI 已成功登录且风控未封锁此账号。");const _=Y.startsWith("//")?"https:"+Y:Y;if(!/^https?:\/\//i.test(_))throw new F(`字幕 URL 非法: ${_}`);const N=`
86
2
  (async () => {
87
- const url = ${JSON.stringify(finalUrl)};
3
+ const url = ${JSON.stringify(_)};
88
4
  const res = await fetch(url);
89
5
  const text = await res.text();
90
6
 
@@ -102,40 +18,4 @@ cli({
102
18
  return { error: 'PARSE_FAILED', text: text.substring(0, 100) };
103
19
  }
104
20
  })()
105
- `;
106
- let items;
107
- try {
108
- items = await page.evaluate(fetchJs);
109
- }
110
- catch (err) {
111
- throw new CommandExecutionError(`字幕获取失败: ${err?.message || err}`);
112
- }
113
- if (items?.error) {
114
- throw new CommandExecutionError(`字幕获取失败: ${items.error}${items.text ? ' — ' + items.text : ''}`);
115
- }
116
- if (!items || typeof items !== 'object' || items.success !== true) {
117
- throw new CommandExecutionError('字幕获取结果对象不符合预期格式');
118
- }
119
- const finalItems = items.data;
120
- if (!Array.isArray(finalItems)) {
121
- throw new CommandExecutionError('解析到的字幕列表对象不符合数组格式');
122
- }
123
- if (finalItems.length === 0) {
124
- throw new EmptyResultError('bilibili subtitle', '字幕文件中没有字幕片段。');
125
- }
126
- // 5. 数据映射
127
- return finalItems.map((item, idx) => {
128
- const from = Number(item?.from);
129
- const to = Number(item?.to);
130
- if (!item || typeof item !== 'object' || !Number.isFinite(from) || !Number.isFinite(to)) {
131
- throw new CommandExecutionError('字幕片段缺少有效 from/to 时间戳');
132
- }
133
- return {
134
- index: idx + 1,
135
- from: from.toFixed(2) + 's',
136
- to: to.toFixed(2) + 's',
137
- content: String(item.content ?? '')
138
- };
139
- });
140
- },
141
- });
21
+ `;let K;try{K=await W.evaluate(N)}catch(z){throw new F(`字幕获取失败: ${z?.message||z}`)}if(K?.error)throw new F(`字幕获取失败: ${K.error}${K.text?" — "+K.text:""}`);if(!K||typeof K!=="object"||K.success!==!0)throw new F("字幕获取结果对象不符合预期格式");const $=K.data;if(!Array.isArray($))throw new F("解析到的字幕列表对象不符合数组格式");if($.length===0)throw new q("bilibili subtitle","字幕文件中没有字幕片段。");return $.map((z,h)=>{const L=Number(z?.from),O=Number(z?.to);if(!z||typeof z!=="object"||!Number.isFinite(L)||!Number.isFinite(O))throw new F("字幕片段缺少有效 from/to 时间戳");return{index:h+1,from:L.toFixed(2)+"s",to:O.toFixed(2)+"s",content:String(z.content??"")}})}});
@@ -1,167 +1 @@
1
- /**
2
- * Bilibili summary — fetches the official AI-generated video summary (the "AI总结"
3
- * shown on the video page) via /x/web-interface/view/conclusion/get.
4
- */
5
- import { cli, Strategy } from '@jackwener/opencli/registry';
6
- import { ArgumentError, AuthRequiredError, CommandExecutionError, EmptyResultError } from '@jackwener/opencli/errors';
7
- import { apiGet, resolveBvid } from './utils.js';
8
-
9
- const BILIBILI_HOST_RE = /(^|\.)bilibili\.com$/i;
10
- const B23_HOST_RE = /(^|\.)b23\.tv$/i;
11
- const BVID_RE = /^BV[A-Za-z0-9]+$/;
12
-
13
- function formatTime(seconds) {
14
- const s = Math.max(0, Math.floor(Number(seconds) || 0));
15
- const h = Math.floor(s / 3600);
16
- const m = Math.floor((s % 3600) / 60);
17
- const sec = s % 60;
18
- const pad = (n) => String(n).padStart(2, '0');
19
- return h > 0 ? `${h}:${pad(m)}:${pad(sec)}` : `${pad(m)}:${pad(sec)}`;
20
- }
21
-
22
- async function readBvid(raw) {
23
- const input = String(raw ?? '').trim();
24
- if (!input) {
25
- throw new ArgumentError('bilibili summary bvid cannot be empty', 'Pass a BV ID, Bilibili video URL, or b23.tv short link.');
26
- }
27
- if (BVID_RE.test(input)) {
28
- return input;
29
- }
30
- let parsed = null;
31
- try {
32
- parsed = new URL(input);
33
- } catch {
34
- // Bare b23.tv short codes are accepted by the shared resolver.
35
- }
36
- if (parsed) {
37
- if (parsed.protocol !== 'https:' && parsed.protocol !== 'http:') {
38
- throw new ArgumentError('Bilibili summary URL must use http or https');
39
- }
40
- if (BILIBILI_HOST_RE.test(parsed.hostname)) {
41
- const match = parsed.pathname.match(/\/(?:video|bangumi\/play)\/(BV[A-Za-z0-9]+)/i);
42
- if (!match) {
43
- throw new ArgumentError('Bilibili summary URL must contain a BV video id');
44
- }
45
- return match[1];
46
- }
47
- if (!B23_HOST_RE.test(parsed.hostname)) {
48
- throw new ArgumentError('Bilibili summary URL must be a bilibili.com or b23.tv URL');
49
- }
50
- }
51
- try {
52
- return await resolveBvid(input);
53
- } catch (error) {
54
- throw new ArgumentError(`Cannot resolve Bilibili BV ID from input: ${input}`, error instanceof Error ? error.message : String(error));
55
- }
56
- }
57
-
58
- function requireOkPayload(payload, label) {
59
- if (!payload || typeof payload !== 'object' || Array.isArray(payload)) {
60
- throw new CommandExecutionError(`Bilibili ${label} API returned a malformed payload`);
61
- }
62
- if (payload.code !== 0) {
63
- const message = payload.message ?? 'unknown error';
64
- if (payload.code === -101 || payload.code === -403 || /登录|权限|forbidden|permission|login/i.test(String(message))) {
65
- throw new AuthRequiredError('bilibili.com', `Bilibili ${label} API requires login or permission: ${message} (${payload.code})`);
66
- }
67
- throw new CommandExecutionError(`Bilibili ${label} API failed: ${message} (${payload.code})`);
68
- }
69
- return payload.data;
70
- }
71
-
72
- function readModelResult(data, bvid) {
73
- if (!data || typeof data !== 'object' || Array.isArray(data)) {
74
- throw new CommandExecutionError('Bilibili conclusion API returned malformed data');
75
- }
76
- if (data.code !== 0) {
77
- throw new EmptyResultError('bilibili summary', `Bilibili has not generated an AI summary for ${bvid}.`);
78
- }
79
- let modelResult = data.model_result;
80
- if (typeof modelResult === 'string') {
81
- try {
82
- modelResult = JSON.parse(modelResult);
83
- } catch {
84
- throw new CommandExecutionError('Bilibili conclusion API returned malformed model_result JSON');
85
- }
86
- }
87
- if (!modelResult || typeof modelResult !== 'object' || Array.isArray(modelResult)) {
88
- throw new CommandExecutionError('Bilibili conclusion API returned malformed model_result');
89
- }
90
- const summary = String(modelResult.summary ?? '').trim();
91
- if (!summary) {
92
- throw new EmptyResultError('bilibili summary', `Bilibili has not generated an AI summary for ${bvid}.`);
93
- }
94
- const outline = modelResult.outline ?? [];
95
- if (!Array.isArray(outline)) {
96
- throw new CommandExecutionError('Bilibili conclusion API returned malformed outline');
97
- }
98
- return { summary, outline };
99
- }
100
-
101
- function rowsFromModel(model) {
102
- const rows = [{ time: '', content: model.summary }];
103
- for (const section of model.outline) {
104
- if (!section || typeof section !== 'object' || Array.isArray(section)) {
105
- throw new CommandExecutionError('Bilibili conclusion API returned malformed outline section');
106
- }
107
- const sectionTitle = String(section.title ?? '').trim();
108
- const sectionTime = formatTime(section.timestamp);
109
- if (sectionTitle) {
110
- rows.push({ time: sectionTime, content: `# ${sectionTitle}` });
111
- }
112
- const points = section.part_outline ?? [];
113
- if (!Array.isArray(points)) {
114
- throw new CommandExecutionError('Bilibili conclusion API returned malformed part outline');
115
- }
116
- for (const point of points) {
117
- if (!point || typeof point !== 'object' || Array.isArray(point)) {
118
- throw new CommandExecutionError('Bilibili conclusion API returned malformed outline point');
119
- }
120
- const content = String(point.content ?? '').trim();
121
- if (content) {
122
- rows.push({ time: formatTime(point.timestamp), content });
123
- }
124
- }
125
- }
126
- return rows;
127
- }
128
-
129
- var command = cli({
130
- site: 'bilibili',
131
- name: 'summary',
132
- access: 'read',
133
- description: '获取 B站视频的官方 AI 总结(视频页「AI总结」同款,含分段大纲与时间戳)',
134
- domain: 'www.bilibili.com',
135
- strategy: Strategy.COOKIE,
136
- args: [
137
- { name: 'bvid', required: true, positional: true, help: 'Video BV ID / URL / b23.tv short link' },
138
- ],
139
- columns: ['time', 'content'],
140
- func: async (page, kwargs) => {
141
- if (!page) {
142
- throw new CommandExecutionError('Browser session required for bilibili summary');
143
- }
144
- const bvid = await readBvid(kwargs.bvid);
145
- const view = await apiGet(page, '/x/web-interface/view', { params: { bvid } });
146
- const viewData = requireOkPayload(view, 'view');
147
- const cid = viewData?.cid;
148
- const upMid = viewData?.owner?.mid;
149
- if (!cid || !upMid) {
150
- throw new CommandExecutionError(`Bilibili view API did not return cid/up_mid for ${bvid}`);
151
- }
152
- const conclusion = await apiGet(page, '/x/web-interface/view/conclusion/get', {
153
- params: { bvid, cid, up_mid: upMid },
154
- signed: true,
155
- });
156
- const conclusionData = requireOkPayload(conclusion, 'conclusion');
157
- return rowsFromModel(readModelResult(conclusionData, bvid));
158
- },
159
- });
160
-
161
- export const __test__ = {
162
- command,
163
- formatTime,
164
- readBvid,
165
- readModelResult,
166
- rowsFromModel,
167
- };
1
+ import{cli as j,Strategy as q}from"@jackwener/opencli/registry";import{ArgumentError as Y,AuthRequiredError as S,CommandExecutionError as Q,EmptyResultError as V}from"@jackwener/opencli/errors";import{apiGet as F,resolveBvid as D}from"./utils.js";const O=/(^|\.)bilibili\.com$/i,I=/(^|\.)b23\.tv$/i,_=/^BV[A-Za-z0-9]+$/;function $(J){const K=Math.max(0,Math.floor(Number(J)||0)),z=Math.floor(K/3600),N=Math.floor(K%3600/60),U=K%60,W=(X)=>String(X).padStart(2,"0");return z>0?`${z}:${W(N)}:${W(U)}`:`${W(N)}:${W(U)}`}async function G(J){const K=String(J??"").trim();if(!K)throw new Y("bilibili summary bvid cannot be empty","Pass a BV ID, Bilibili video URL, or b23.tv short link.");if(_.test(K))return K;let z=null;try{z=new URL(K)}catch{}if(z){if(z.protocol!=="https:"&&z.protocol!=="http:")throw new Y("Bilibili summary URL must use http or https");if(O.test(z.hostname)){const N=z.pathname.match(/\/(?:video|bangumi\/play)\/(BV[A-Za-z0-9]+)/i);if(!N)throw new Y("Bilibili summary URL must contain a BV video id");return N[1]}if(!I.test(z.hostname))throw new Y("Bilibili summary URL must be a bilibili.com or b23.tv URL")}try{return await D(K)}catch(N){throw new Y(`Cannot resolve Bilibili BV ID from input: ${K}`,N instanceof Error?N.message:String(N))}}function H(J,K){if(!J||typeof J!=="object"||Array.isArray(J))throw new Q(`Bilibili ${K} API returned a malformed payload`);if(J.code!==0){const z=J.message??"unknown error";if(J.code===-101||J.code===-403||/登录|权限|forbidden|permission|login/i.test(String(z)))throw new S("bilibili.com",`Bilibili ${K} API requires login or permission: ${z} (${J.code})`);throw new Q(`Bilibili ${K} API failed: ${z} (${J.code})`)}return J.data}function L(J,K){if(!J||typeof J!=="object"||Array.isArray(J))throw new Q("Bilibili conclusion API returned malformed data");if(J.code!==0)throw new V("bilibili summary",`Bilibili has not generated an AI summary for ${K}.`);let z=J.model_result;if(typeof z==="string")try{z=JSON.parse(z)}catch{throw new Q("Bilibili conclusion API returned malformed model_result JSON")}if(!z||typeof z!=="object"||Array.isArray(z))throw new Q("Bilibili conclusion API returned malformed model_result");const N=String(z.summary??"").trim();if(!N)throw new V("bilibili summary",`Bilibili has not generated an AI summary for ${K}.`);const U=z.outline??[];if(!Array.isArray(U))throw new Q("Bilibili conclusion API returned malformed outline");return{summary:N,outline:U}}function P(J){const K=[{time:"",content:J.summary}];for(const z of J.outline){if(!z||typeof z!=="object"||Array.isArray(z))throw new Q("Bilibili conclusion API returned malformed outline section");const N=String(z.title??"").trim(),U=$(z.timestamp);if(N)K.push({time:U,content:`# ${N}`});const W=z.part_outline??[];if(!Array.isArray(W))throw new Q("Bilibili conclusion API returned malformed part outline");for(const X of W){if(!X||typeof X!=="object"||Array.isArray(X))throw new Q("Bilibili conclusion API returned malformed outline point");const Z=String(X.content??"").trim();if(Z)K.push({time:$(X.timestamp),content:Z})}}return K}var k=j({site:"bilibili",name:"summary",access:"read",description:"获取 B站视频的官方 AI 总结(视频页「AI总结」同款,含分段大纲与时间戳)",domain:"www.bilibili.com",strategy:q.COOKIE,args:[{name:"bvid",required:!0,positional:!0,help:"Video BV ID / URL / b23.tv short link"}],columns:["time","content"],func:async(J,K)=>{if(!J)throw new Q("Browser session required for bilibili summary");const z=await G(K.bvid),N=await F(J,"/x/web-interface/view",{params:{bvid:z}}),U=H(N,"view"),W=U?.cid,X=U?.owner?.mid;if(!W||!X)throw new Q(`Bilibili view API did not return cid/up_mid for ${z}`);const Z=await F(J,"/x/web-interface/view/conclusion/get",{params:{bvid:z,cid:W,up_mid:X},signed:!0}),f=H(Z,"conclusion");return P(L(f,z))}});export const __test__={command:k,formatTime:$,readBvid:G,readModelResult:L,rowsFromModel:P};
@@ -0,0 +1 @@
1
+ import{cli as F,Strategy as G}from"@jackwener/opencli/registry";import{ArgumentError as H,CommandExecutionError as D}from"@jackwener/opencli/errors";async function J(q){for(let v=0;v<6;v++){await q.goto("https://member.bilibili.com/platform/home");await q.wait({time:1});let z="";try{z=String(await q.evaluate("location.href")||"")}catch{z=""}if(/^https?:\/\/member\.bilibili\.com\//.test(z))return}throw new D("无法进入 B站创作中心(可能未登录或被风控)。请先在客户端登录哔哩哔哩。")}F({site:"bilibili",name:"topics",aliases:["topic-list"],access:"read",description:"列出某分区下可参与的投稿话题(topic_id + 名称 + 简介 + 播放量),供 `bilibili upload --topic` 取合法 topic_id。禁止臆造。先用 `bilibili partitions` 取 tid。",domain:"member.bilibili.com",strategy:G.COOKIE,browser:!0,args:[{name:"tid",type:"number",required:!0,help:"分区 id(用 `bilibili partitions` 取)。话题按分区提供。"}],columns:["topic_id","name","play","desc"],func:async(q,v)=>{if(!q)throw new D("B站话题列举需要浏览器会话");if(v.tid==null||v.tid===""||!Number.isFinite(Number(v.tid)))throw new H("必须用 --tid 指定分区 id(数字)。用 `bilibili partitions` 列举分区。");const z=Number(v.tid);await J(q);const B=await q.evaluateWithArgs("(async () => {const r = await fetch('https://member.bilibili.com/x/vupre/web/topic/type?type_id=' + encodeURIComponent(tid) + '&pn=0&ps=200', { credentials: 'include' });const j = await r.json();if (!j || j.code !== 0 || !j.data || !Array.isArray(j.data.topics)) {"+" throw new Error('获取 B站话题失败(可能未登录 B站):' + ((j && j.message) || ('code=' + (j && j.code))));"+'}return j.data.topics.map(function (t) { return { topic_id: t.topic_id, name: t.topic_name || "", play: t.arc_play_vv != null ? t.arc_play_vv : "", desc: (t.description || t.activity_description || "").slice(0, 60), };});})()',{tid:z});if(!Array.isArray(B))throw new D("未取到话题列表(接口返回异常)");if(!B.length)return[];return B}});
@@ -1,121 +1 @@
1
- /**
2
- * Bilibili unfollow — removes a follow relation via the official write API.
3
- * Mirror of follow.js with act=2. If the viewer is not currently following the
4
- * target, the API call is skipped and `not-following` is returned without
5
- * touching state.
6
- */
7
- import { cli, Strategy } from '@jackwener/opencli/registry';
8
- import { ArgumentError, CommandExecutionError, EmptyResultError } from '@jackwener/opencli/errors';
9
- import { apiPost, fetchJson, getSelfUid, requireOkPayload, resolveUid } from './utils.js';
10
-
11
- const RELATION_VERIFY_TIMEOUT_MS = 5000;
12
- const RELATION_VERIFY_POLL_MS = 500;
13
-
14
- function parseSpaceMidUrl(raw) {
15
- const trimmed = String(raw ?? '').trim();
16
- if (!trimmed) return '';
17
- const candidate = /^https?:\/\//i.test(trimmed) ? trimmed : `https://${trimmed}`;
18
- let parsed;
19
- try {
20
- parsed = new URL(candidate);
21
- } catch {
22
- return '';
23
- }
24
- if (parsed.hostname.toLowerCase() !== 'space.bilibili.com') return '';
25
- const match = parsed.pathname.match(/^\/(\d+)\/?$/);
26
- return match ? match[1] : '';
27
- }
28
-
29
- async function resolveTargetMid(page, raw) {
30
- const trimmed = String(raw ?? '').trim();
31
- if (!trimmed) {
32
- throw new ArgumentError('bilibili unfollow target cannot be empty');
33
- }
34
- if (/^(?:https?:\/\/)?space\.bilibili\.com\//i.test(trimmed)) {
35
- const mid = parseSpaceMidUrl(trimmed);
36
- if (!mid) {
37
- throw new ArgumentError('bilibili unfollow target must be a valid space.bilibili.com/<uid> URL');
38
- }
39
- return mid;
40
- }
41
- try {
42
- return await resolveUid(page, trimmed);
43
- } catch (error) {
44
- if (error instanceof EmptyResultError) throw error;
45
- throw new ArgumentError(
46
- `Cannot resolve Bilibili target from input: ${trimmed}`,
47
- error instanceof Error ? error.message : String(error),
48
- );
49
- }
50
- }
51
-
52
- async function fetchRelationAttribute(page, mid) {
53
- const payload = await fetchJson(page, `https://api.bilibili.com/x/relation?fid=${mid}`);
54
- requireOkPayload(payload, 'relation query');
55
- const attribute = payload?.data?.attribute;
56
- if (typeof attribute !== 'number') {
57
- throw new CommandExecutionError('Bilibili relation query returned a malformed attribute');
58
- }
59
- return attribute;
60
- }
61
-
62
- async function waitForRelation(page, mid, predicate, expectedLabel) {
63
- const deadline = Date.now() + RELATION_VERIFY_TIMEOUT_MS;
64
- let lastAttribute;
65
- while (Date.now() <= deadline) {
66
- lastAttribute = await fetchRelationAttribute(page, mid);
67
- if (predicate(lastAttribute)) return lastAttribute;
68
- if (typeof page.wait !== 'function') break;
69
- await page.wait({ time: RELATION_VERIFY_POLL_MS / 1000 });
70
- }
71
- throw new CommandExecutionError(
72
- `Bilibili relation modify did not verify ${expectedLabel}; last attribute=${lastAttribute}`,
73
- );
74
- }
75
-
76
- cli({
77
- site: 'bilibili',
78
- name: 'unfollow',
79
- access: 'write',
80
- description: '取消关注 B站用户(官方 API,需登录)',
81
- domain: 'www.bilibili.com',
82
- strategy: Strategy.COOKIE,
83
- args: [
84
- {
85
- name: 'target',
86
- required: true,
87
- positional: true,
88
- help: '目标 UID / 用户名 / space.bilibili.com 链接',
89
- },
90
- ],
91
- columns: ['mid', 'name', 'status', 'url'],
92
- func: async (page, kwargs) => {
93
- if (!page) {
94
- throw new CommandExecutionError('Browser session required for bilibili unfollow');
95
- }
96
- const mid = await resolveTargetMid(page, kwargs.target);
97
- const self = await getSelfUid(page);
98
- if (mid === self) {
99
- throw new ArgumentError('Cannot unfollow yourself');
100
- }
101
- const attribute = await fetchRelationAttribute(page, mid);
102
- const url = `https://space.bilibili.com/${mid}`;
103
- // attribute 2=following, 6=mutual. Anything else means the viewer isn't
104
- // currently following — skip the POST and return idempotent status.
105
- if (attribute !== 2 && attribute !== 6) {
106
- return [{ mid, name: '', status: 'not-following', url }];
107
- }
108
- const payload = await apiPost(page, '/x/relation/modify', {
109
- params: { fid: mid, act: 2, re_src: 11 },
110
- });
111
- requireOkPayload(payload, 'relation modify');
112
- await waitForRelation(page, mid, (nextAttribute) => nextAttribute !== 2 && nextAttribute !== 6, 'not following');
113
- return [{ mid, name: '', status: 'unfollowed', url }];
114
- },
115
- });
116
-
117
- export const __test__ = {
118
- resolveTargetMid,
119
- fetchRelationAttribute,
120
- waitForRelation,
121
- };
1
+ import{cli as V,Strategy as Y}from"@jackwener/opencli/registry";import{ArgumentError as Q,CommandExecutionError as W,EmptyResultError as j}from"@jackwener/opencli/errors";import{apiPost as v,fetchJson as C,getSelfUid as F,requireOkPayload as $,resolveUid as U}from"./utils.js";const I=5000,P=500;function L(D){const G=String(D??"").trim();if(!G)return"";const z=/^https?:\/\//i.test(G)?G:`https://${G}`;let B;try{B=new URL(z)}catch{return""}if(B.hostname.toLowerCase()!=="space.bilibili.com")return"";const H=B.pathname.match(/^\/(\d+)\/?$/);return H?H[1]:""}async function J(D,G){const z=String(G??"").trim();if(!z)throw new Q("bilibili unfollow target cannot be empty");if(/^(?:https?:\/\/)?space\.bilibili\.com\//i.test(z)){const B=L(z);if(!B)throw new Q("bilibili unfollow target must be a valid space.bilibili.com/<uid> URL");return B}try{return await U(D,z)}catch(B){if(B instanceof j)throw B;throw new Q(`Cannot resolve Bilibili target from input: ${z}`,B instanceof Error?B.message:String(B))}}async function X(D,G){const z=await C(D,`https://api.bilibili.com/x/relation?fid=${G}`);$(z,"relation query");const B=z?.data?.attribute;if(typeof B!=="number")throw new W("Bilibili relation query returned a malformed attribute");return B}async function q(D,G,z,B){const H=Date.now()+I;let K;while(Date.now()<=H){K=await X(D,G);if(z(K))return K;if(typeof D.wait!=="function")break;await D.wait({time:P/1000})}throw new W(`Bilibili relation modify did not verify ${B}; last attribute=${K}`)}V({site:"bilibili",name:"unfollow",access:"write",description:"取消关注 B站用户(官方 API,需登录)",domain:"www.bilibili.com",strategy:Y.COOKIE,args:[{name:"target",required:!0,positional:!0,help:"目标 UID / 用户名 / space.bilibili.com 链接"}],columns:["mid","name","status","url"],func:async(D,G)=>{if(!D)throw new W("Browser session required for bilibili unfollow");const z=await J(D,G.target),B=await F(D);if(z===B)throw new Q("Cannot unfollow yourself");const H=await X(D,z),K=`https://space.bilibili.com/${z}`;if(H!==2&&H!==6)return[{mid:z,name:"",status:"not-following",url:K}];const N=await v(D,"/x/relation/modify",{params:{fid:z,act:2,re_src:11}});$(N,"relation modify");await q(D,z,(Z)=>Z!==2&&Z!==6,"not following");return[{mid:z,name:"",status:"unfollowed",url:K}]}});export const __test__={resolveTargetMid:J,fetchRelationAttribute:X,waitForRelation:q};
@@ -0,0 +1 @@
1
+ import*as I from"node:fs";import*as P from"node:path";import{cli as E,Strategy as b}from"@jackwener/opencli/registry";import{ArgumentError as D,AuthRequiredError as h,CommandExecutionError as S}from"@jackwener/opencli/errors";import{resolveVideoFile as l,resolveImageFile as u,throwIfFileAccessDenied as w}from"../_shared/video-publish.js";const U={bda2:{os:"upos",upcdn:"bda2",probe_version:20221109},bldsa:{os:"upos",upcdn:"bldsa",probe_version:20221109},qn:{os:"upos",upcdn:"qn",probe_version:20221109},ws:{os:"upos",upcdn:"ws",probe_version:20221109}},f="bda2",k=["SESSDATA","bili_jct","DedeUserID"],m="https://member.bilibili.com/platform/home",_="__pp_bili_video_input";function n(W){var J=document.getElementById(W.inputId);if(!J||!J.files||!J.files[0])return{error:"文件未就绪(input 为空)"};var Z=J.files[0],Y=Z.size,$=W.line;return async function(){try{var G=new URLSearchParams({profile:"ugcfx/bup",name:Z.name,size:String(Y),r:$.os,ssl:"0",version:"2.14.0",build:"2100400",upcdn:$.upcdn,probe_version:String($.probe_version)}),X=await(await fetch("https://member.bilibili.com/preupload?"+G.toString(),{credentials:"include",headers:{Referer:"https://www.bilibili.com"}})).json();if(X.OK!==1)return{error:"preupload 失败:"+JSON.stringify(X)};var K="https:"+X.endpoint+"/"+String(X.upos_uri).replace(/^upos:\/\//,""),O=new URLSearchParams({uploads:"",output:"json",profile:"ugcfx/bup",filesize:String(Y),partsize:String(X.chunk_size),biz_id:String(X.biz_id)}),H=await(await fetch(K+"?"+O.toString(),{method:"POST",headers:{"x-upos-auth":X.auth}})).json();if(H.OK!==1)return{error:"获取 upload_id 失败:"+JSON.stringify(H)};var T=Math.max(1,Math.ceil(Y/X.chunk_size));return{url:K,auth:X.auth,uploadId:H.upload_id,chunkSize:X.chunk_size,bizId:X.biz_id,size:Y,name:Z.name,total:T}}catch(R){return{error:"preupload 异常:"+String(R&&R.message||R)}}}()}function d(W){var J=document.getElementById(W.inputId);if(!J||!J.files||!J.files[0])return{ok:!1,error:"文件丢失(页面可能已导航)"};var Z=J.files[0],Y=W.idx*W.chunkSize,$=Z.slice(Y,Math.min(Y+W.chunkSize,W.size)),G=$.size,X=new URLSearchParams({partNumber:String(W.idx+1),uploadId:String(W.uploadId),chunk:String(W.idx),chunks:String(W.total),size:String(G),start:String(Y),end:String(Y+G),total:String(W.size)});return async function(){for(var K=0;K<5;K++){try{var O=await fetch(W.url+"?"+X.toString(),{method:"PUT",headers:{"x-upos-auth":W.auth},body:$});if(O.status<400){var H=await O.text();if(H==="MULTIPART_PUT_SUCCESS"||H==="")return{ok:!0}}}catch(T){}await new Promise(function(T){setTimeout(T,800*(K+1))})}return{ok:!1,error:"分块 "+W.idx+" 多次重试仍失败"}}()}function j(W){var J=[];for(var Z=1;Z<=W.total;Z++)J.push({partNumber:Z,eTag:"etag"});var Y=new URLSearchParams({output:"json",name:W.name,profile:"ugcfx/bup",uploadId:String(W.uploadId),biz_id:String(W.bizId)});return async function(){try{var $=await(await fetch(W.url+"?"+Y.toString(),{method:"POST",headers:{"x-upos-auth":W.auth,"content-type":"application/json; charset=UTF-8"},body:JSON.stringify({parts:J})})).json();if($.OK!==1)return{error:"complete 失败:"+JSON.stringify($)};var G=String($.key).replace(/^\//,"").replace(/\.[^.]+$/,"");return{filename:G,cid:W.bizId}}catch(X){return{error:"complete 异常:"+String(X&&X.message||X)}}}()}function c(W){return async function(){try{var J=await fetch("https://member.bilibili.com/x/vupre/web/topic/type?type_id="+encodeURIComponent(W.tid)+"&pn=0&ps=200",{credentials:"include"}),Z=await J.json();if(!Z||Z.code!==0||!Z.data||!Array.isArray(Z.data.topics))return{error:"获取话题列表失败:"+(Z&&Z.message||"code="+(Z&&Z.code))};var Y=null;for(var $=0;$<Z.data.topics.length;$++)if(Number(Z.data.topics[$].topic_id)===Number(W.topicId)){Y=Z.data.topics[$];break}if(!Y)return{error:"topic_id "+W.topicId+" 不在分区 "+W.tid+" 的可用话题里(用 bilibili topics --tid "+W.tid+" 查合法值)"};return{topicId:Number(Y.topic_id),missionId:Y.mission_id!=null?Number(Y.mission_id):null,name:Y.topic_name||""}}catch(G){return{error:"解析话题异常:"+String(G&&G.message||G)}}}()}function o(W){return async function(){var J=document.cookie.match(/(?:^|;\s*)bili_jct=([^;]+)/);if(!J)return{error:"未找到 bili_jct CSRF token"};var Z=decodeURIComponent(J[1]);try{var Y=W.dataUri;if(typeof Y==="string"&&Y.indexOf("data:image/webp")===0){var $=Y.indexOf(",");if($===-1)return{error:"封面 data URI 格式非法"};var G=Y.slice(5,$),X=Y.slice($+1),K;if(G.indexOf("base64")!==-1){var O=atob(X);K=new Uint8Array(O.length);for(var H=0;H<O.length;H++)K[H]=O.charCodeAt(H)}else K=new TextEncoder().encode(decodeURIComponent(X));var T=new Blob([K],{type:"image/webp"}),R=await createImageBitmap(T),B=document.createElement("canvas");B.width=R.width;B.height=R.height;var M=B.getContext("2d");M.fillStyle="#ffffff";M.fillRect(0,0,B.width,B.height);M.drawImage(R,0,0);var q=await new Promise(function(F){B.toBlob(F,"image/jpeg",0.92)});if(!q)return{error:"封面 webp 转码 JPEG 失败"};Y=await new Promise(function(F,x){var A=new FileReader;A.onload=function(){F(String(A.result))};A.onerror=function(){x(Error("FileReader 读取转码结果失败"))};A.readAsDataURL(q)})}var L=new URLSearchParams;L.append("cover",Y);L.append("csrf",Z);var V=await(await fetch("https://member.bilibili.com/x/vu/web/cover/up",{method:"POST",credentials:"include",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:L.toString()})).json();if(!V||V.code!==0||!V.data||!V.data.url)return{error:"封面上传失败:"+(V&&V.message?V.message:JSON.stringify(V))};return{url:V.data.url}}catch(F){return{error:"封面上传异常:"+String(F&&F.message||F)}}}()}function p(W){return async function(){var J=document.cookie.match(/(?:^|;\s*)bili_jct=([^;]+)/);if(!J)return{error:"未找到 bili_jct CSRF token"};var Z=decodeURIComponent(J[1]),Y=W.meta;for(var $ in Y)if(Y[$]===null||Y[$]===void 0)delete Y[$];Y.csrf=Z;try{var G=await fetch("https://member.bilibili.com/x/vu/web/add/v3?csrf="+encodeURIComponent(Z)+"&t="+Date.now(),{method:"POST",credentials:"include",headers:{"Content-Type":"application/json;charset=UTF-8"},body:JSON.stringify(Y)}),X=await G.json();if(!X||X.code!==0)return{error:"add/v3 提交失败:"+(X&&X.message?X.message:"")+"(code="+(X&&X.code)+" status="+G.status+")"};return{bvid:X.data&&X.data.bvid,aid:X.data&&X.data.aid}}catch(K){return{error:"add/v3 异常:"+String(K&&K.message||K)}}}()}function g(W){return async function(){var J=document.cookie.match(/(?:^|;\s*)bili_jct=([^;]+)/);if(!J)return{error:"未找到 bili_jct CSRF token"};var Z=decodeURIComponent(J[1]),Y=W.body;Y.csrf=Z;try{var $=await fetch("https://member.bilibili.com/x/vupre/web/draft/add?t="+Date.now()+"&csrf="+encodeURIComponent(Z),{method:"POST",credentials:"include",headers:{"Content-Type":"application/json;charset=UTF-8"},body:JSON.stringify(Y)}),G=await $.json();if(!G||G.code!==0)return{error:"draft/add 保存草稿失败:"+(G&&G.message?G.message:"")+"(code="+(G&&G.code)+" status="+$.status+")"};return{data:G.data}}catch(X){return{error:"draft/add 异常:"+String(X&&X.message||X)}}}()}const N=(W,J,Z)=>W.evaluateWithArgs(`(${J.toString()})(a)`,{a:Z});function s(W){const J=u(W),Z=P.extname(J).toLowerCase(),Y=Z===".png"?"image/png":Z===".webp"?"image/webp":Z===".bmp"?"image/bmp":"image/jpeg",$=I.readFileSync(J).toString("base64");return`data:${Y};base64,${$}`}async function t(W){for(let J=0;J<8;J++){await W.goto(m);await W.wait({time:1});let Z="";try{Z=String(await W.evaluate("location.href")||"")}catch{Z=""}if(/^https?:\/\/member\.bilibili\.com\//.test(Z)){const Y=await W.getCookies({url:"https://member.bilibili.com"}),$=new Map;for(const X of Array.isArray(Y)?Y:[])if(X&&typeof X.name==="string")$.set(X.name,String(X.value??""));const G=k.filter((X)=>!$.get(X));if(!G.length)return $;throw new h("member.bilibili.com",`缺少 B站登录 cookie(${G.join(", ")})。请先在客户端登录哔哩哔哩。`)}}throw new h("member.bilibili.com","无法进入 B站创作中心(可能未登录或被风控)。请先在客户端登录哔哩哔哩。")}E({site:"bilibili",name:"upload",access:"write",description:"投稿视频到 B站(在真实浏览器登录态里走 web 投稿:preupload→upos 分块→add/v3)。默认仅 dry-run 校验,加 --execute 才真正上传并提交。",domain:"member.bilibili.com",strategy:b.COOKIE,browser:!0,args:[{name:"file",required:!0,positional:!0,help:"视频文件路径"},{name:"title",help:"稿件标题(默认取文件名)"},{name:"tid",type:"number",required:!0,help:"分区 id(B站 typeid,必填,禁止臆造)。合法值用 `bilibili partitions` 列举后取。"},{name:"tag",required:!0,help:"标签,逗号分隔(B站要求至少 1 个)"},{name:"desc",help:"简介"},{name:"topic",type:"number",help:"参与话题的 topic_id(重要流量入口)。合法值用 `bilibili topics --tid <tid>` 列举,禁止臆造;mission_id 自动匹配。"},{name:"cover",help:"封面图片路径(不传由 B站自动截取)"},{name:"copyright",type:"number",help:"1=自制 2=转载(默认 1)"},{name:"source",help:"转载来源 URL(copyright=2 时必填)"},{name:"dynamic",help:"同步发布的动态文案(可空)"},{name:"no-reprint",type:"boolean",help:"禁止转载(默认允许)"},{name:"dtime",type:"number",help:"定时发布的 10 位 unix 时间戳(可空=立即)"},{name:"line",help:`上传线路:${Object.keys(U).join("/")}(默认 ${f})`},{name:"concurrency",type:"number",help:"分块并发数(默认 3)"},{name:"draft",type:"boolean",help:"存草稿而非直接发布(上传视频后存到创作中心草稿箱,不公开)"},{name:"execute",type:"boolean",help:"真正发布投稿;不带(也不带 --draft)则只做 dry-run 校验"}],columns:["status","title","bvid","url"],func:async(W,J)=>{if(!W)throw new S("bilibili upload 需要浏览器会话");const Z=l(String(J.file??"")),Y=String(J.title??"").trim()||P.basename(Z).replace(/\.[^.]+$/,""),$=String(J.tag??"").split(",").map((Q)=>Q.trim()).filter(Boolean);if(!$.length)throw new D("B站投稿至少需要 1 个标签,用 --tag 传(逗号分隔)");if(J.tid==null||J.tid===""||!Number.isFinite(Number(J.tid)))throw new D("必须用 --tid 指定分区 id(数字)。合法值用 `bilibili partitions` 列举,禁止臆造。");const G=Number(J.tid),X=J.copyright!=null&&J.copyright!==""?Number(J.copyright):1;if(X!==1&&X!==2)throw new D("--copyright 只能是 1(自制) 或 2(转载)");const K=String(J.source??"").trim();if(X===2&&!K)throw new D("转载(copyright=2)必须用 --source 提供转载来源");if(J.cover)u(String(J.cover));const O=String(J.line??f),H=U[O];if(!H)throw new D(`未知上传线路「${O}」,可选:${Object.keys(U).join("/")}`);const T=J.concurrency!=null&&J.concurrency!==""?Number(J.concurrency):3,R=Boolean(J.draft),B=Boolean(J.execute)&&!R;await t(W);if(!W.setFileInput)throw new S("浏览器扩展不支持 CDP 文件上传(set-file-input),无法上传视频;请升级 PublishPort 客户端/扩展");await W.evaluate(`(() => { var id=${JSON.stringify(_)}; var el=document.getElementById(id); if(!el){ el=document.createElement('input'); el.type='file'; el.id=id; el.style.cssText='position:fixed;left:-9999px;top:0;'; document.body.appendChild(el);} el.value=''; return true; })()`);try{await W.setFileInput([Z],`#${_}`)}catch(Q){w(Q);throw Q}if(!R&&!B)return{status:"dry-run",title:Y,bvid:"",url:`校验通过:登录态有效、视频已注入就绪、分区 ${G}、标签 [${$.join(", ")}]、版权 ${X===1?"自制":"转载"}。加 --execute 发布,或 --draft 存草稿。`};const M=await N(W,n,{inputId:_,line:H});if(!M||M.error)throw new S(`B站 preupload 失败:${M&&M.error||"无返回"}`);for(let Q=0;Q<M.total;Q++){const z=await N(W,d,{inputId:_,url:M.url,auth:M.auth,uploadId:M.uploadId,idx:Q,total:M.total,size:M.size,chunkSize:M.chunkSize});if(!z||!z.ok)throw new S(`B站分块上传失败(${Q+1}/${M.total}):${z&&z.error||"无返回"}`)}const q=await N(W,j,{url:M.url,auth:M.auth,uploadId:M.uploadId,bizId:M.bizId,name:M.name,total:M.total});if(!q||q.error||!q.filename)throw new S(`B站 complete 失败:${q&&q.error||"未拿到 filename"}`);let L="";if(J.cover){const Q=s(String(J.cover)),z=await N(W,o,{dataUri:Q});if(!z||z.error||!z.url)throw new S(`B站封面上传失败:${z&&z.error||"未拿到 url"}`);L=z.url}let V=null,F=null;if(J.topic!=null&&J.topic!==""){if(!Number.isFinite(Number(J.topic)))throw new D("--topic 必须是 topic_id 数字,用 `bilibili topics --tid <tid>` 取合法值");const Q=await N(W,c,{tid:G,topicId:Number(J.topic)});if(!Q||Q.error)throw new S(`B站话题解析失败:${Q&&Q.error||"无返回"}`);V=Q.topicId;F=Q.missionId}if(R){const Q={videos:[{filename:q.filename,title:Y,desc:"",cid:q.cid,is_4k:!1,is_8k:!1,is_hdr:!1}],cover:L,cover43:L,ai_cover:0,is_ab_cover:0,ab_cover_info:null,title:Y,copyright:X,tid:G,tag:$.join(","),desc:String(J.desc??""),recreate:-1,dynamic:String(J.dynamic??""),is_only_self:0,space_hidden:2,watermark:{state:0},no_reprint:J["no-reprint"]?1:0,subtitle:{open:0,lan:""},dolby:0,lossless_music:0,up_selection_reply:!1,up_close_reply:!1,up_close_danmu:!1};if(X===2)Q.source=K;if(V!=null){Q.topic_id=V;Q.topic_detail={from_topic_id:V,from_source:"arc.web.search"};if(F!=null)Q.mission_id=F}const z=await N(W,g,{body:Q});if(!z||z.error)throw new S(`B站 ${z&&z.error||"draft/add 无返回"}`);const y=z.data&&(z.data.aid!=null?z.data.aid:z.data.draft_id!=null?z.data.draft_id:z.data.id);return{status:"✅ 草稿已保存",title:Y,bvid:y!=null?`draft:${y}`:"",url:"https://member.bilibili.com/platform/upload-manager/article?group=draft"}}const x=J.dtime!=null&&J.dtime!==""?Number(J.dtime):null,A={title:Y,copyright:X,tid:G,tag:$.join(","),mission_id:F,topic_id:V,topic_detail:V!=null?{from_topic_id:V,from_source:"arc.web.recommend"}:null,desc_format_id:9999,desc:String(J.desc??""),dtime:x,recreate:-1,dynamic:String(J.dynamic??""),interactive:0,act_reserve_create:0,no_disturbance:0,porder:null,adorder_type:9,no_reprint:J["no-reprint"]?1:0,subtitle:{open:0,lan:""},neutral_mark:null,dolby:0,lossless_music:0,up_selection_reply:!1,up_close_reply:!1,up_close_danmu:!1,web_os:1,source:X===2?K:null,watermark:{state:0},cover:L,videos:[{title:Y,desc:"",filename:q.filename,cid:q.cid}]},C=await N(W,p,{meta:A});if(!C||C.error)throw new S(`B站 ${C&&C.error||"add/v3 无返回"}`);const v=C.bvid?String(C.bvid):"";return{status:J.dtime?"✅ 定时投稿已提交":"✅ 投稿成功",title:Y,bvid:v,url:v?`https://www.bilibili.com/video/${v}`:"(已提交,稍后在创作中心查看)"}}});
@@ -1,39 +1 @@
1
- import { cli, Strategy } from '@jackwener/opencli/registry';
2
- import { apiGet, payloadData, resolveUid } from './utils.js';
3
- cli({
4
- site: 'bilibili',
5
- name: 'user-videos',
6
- access: 'read',
7
- description: '查看指定用户的投稿视频',
8
- domain: 'www.bilibili.com',
9
- strategy: Strategy.COOKIE,
10
- args: [
11
- { name: 'uid', required: true, positional: true, help: 'User UID or username' },
12
- { name: 'limit', type: 'int', default: 20, help: 'Number of results' },
13
- { name: 'order', default: 'pubdate', help: 'Sort: pubdate, click, stow' },
14
- { name: 'page', type: 'int', default: 1, help: 'Page number' },
15
- ],
16
- columns: ['rank', 'title', 'plays', 'likes', 'date', 'url'],
17
- func: async (page, kwargs) => {
18
- const { uid: uidInput, limit = 20, order = 'pubdate', page: pageNum = 1 } = kwargs;
19
- const uid = await resolveUid(page, String(uidInput));
20
- const payload = await apiGet(page, '/x/space/wbi/arc/search', {
21
- params: {
22
- mid: uid,
23
- pn: pageNum,
24
- ps: Math.min(Number(limit), 50),
25
- order,
26
- },
27
- signed: true,
28
- });
29
- const vlist = payloadData(payload)?.list?.vlist ?? [];
30
- return vlist.slice(0, Number(limit)).map((item, i) => ({
31
- rank: i + 1,
32
- title: item.title ?? '',
33
- plays: item.play ?? 0,
34
- likes: item.like ?? 0,
35
- date: item.created ? new Date(item.created * 1000).toISOString().slice(0, 10) : '',
36
- url: item.bvid ? `https://www.bilibili.com/video/${item.bvid}` : '',
37
- }));
38
- },
39
- });
1
+ import{cli as u,Strategy as o}from"@jackwener/opencli/registry";import{apiGet as c,payloadData as m,resolveUid as b}from"./utils.js";u({site:"bilibili",name:"user-videos",access:"read",description:"查看指定用户的投稿视频",domain:"www.bilibili.com",strategy:o.COOKIE,args:[{name:"uid",required:!0,positional:!0,help:"User UID or username"},{name:"limit",type:"int",default:20,help:"Number of results"},{name:"order",default:"pubdate",help:"Sort: pubdate, click, stow"},{name:"page",type:"int",default:1,help:"Page number"}],columns:["rank","title","plays","likes","date","url"],func:async(i,a)=>{const{uid:r,limit:t=20,order:l="pubdate",page:s=1}=a,d=await b(i,String(r)),n=await c(i,"/x/space/wbi/arc/search",{params:{mid:d,pn:s,ps:Math.min(Number(t),50),order:l},signed:!0});return(m(n)?.list?.vlist??[]).slice(0,Number(t)).map((e,p)=>({rank:p+1,title:e.title??"",plays:e.play??0,likes:e.like??0,date:e.created?new Date(e.created*1000).toISOString().slice(0,10):"",url:e.bvid?`https://www.bilibili.com/video/${e.bvid}`:""}))}});