@jackwener/opencli 1.7.17 → 1.7.19

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 (118) hide show
  1. package/README.md +10 -8
  2. package/README.zh-CN.md +9 -8
  3. package/cli-manifest.json +585 -9
  4. package/clis/ctrip/ctrip.test.js +486 -1
  5. package/clis/ctrip/flight.js +136 -0
  6. package/clis/ctrip/hotel-search.js +132 -0
  7. package/clis/ctrip/utils.js +298 -0
  8. package/clis/doubao/utils.js +17 -0
  9. package/clis/doubao/utils.test.js +61 -0
  10. package/clis/google/search.js +16 -6
  11. package/clis/google-scholar/search.js +20 -5
  12. package/clis/google-scholar/search.test.js +35 -2
  13. package/clis/reddit/home.js +117 -0
  14. package/clis/reddit/home.test.js +127 -0
  15. package/clis/reddit/read.js +400 -54
  16. package/clis/reddit/read.test.js +315 -12
  17. package/clis/reddit/reply.js +182 -0
  18. package/clis/reddit/reply.test.js +89 -0
  19. package/clis/reddit/subreddit-info.js +117 -0
  20. package/clis/reddit/subreddit-info.test.js +163 -0
  21. package/clis/reddit/whoami.js +84 -0
  22. package/clis/reddit/whoami.test.js +105 -0
  23. package/clis/rednote/comments.js +76 -0
  24. package/clis/rednote/download.js +59 -0
  25. package/clis/rednote/feed.js +95 -0
  26. package/clis/rednote/navigation.test.js +26 -0
  27. package/clis/rednote/note.js +68 -0
  28. package/clis/rednote/notifications.js +139 -0
  29. package/clis/rednote/rednote.test.js +157 -0
  30. package/clis/rednote/search.js +101 -0
  31. package/clis/rednote/user.js +55 -0
  32. package/clis/twitter/bookmark-folder.js +3 -1
  33. package/clis/twitter/bookmarks.js +3 -1
  34. package/clis/twitter/followers.js +20 -5
  35. package/clis/twitter/followers.test.js +44 -0
  36. package/clis/twitter/following.js +36 -20
  37. package/clis/twitter/following.test.js +60 -8
  38. package/clis/twitter/likes.js +28 -13
  39. package/clis/twitter/likes.test.js +111 -1
  40. package/clis/twitter/list-add.js +128 -204
  41. package/clis/twitter/list-add.test.js +97 -1
  42. package/clis/twitter/list-tweets.js +13 -4
  43. package/clis/twitter/list-tweets.test.js +48 -0
  44. package/clis/twitter/lists.js +5 -2
  45. package/clis/twitter/post.js +23 -4
  46. package/clis/twitter/post.test.js +30 -0
  47. package/clis/twitter/profile.js +16 -8
  48. package/clis/twitter/profile.test.js +39 -0
  49. package/clis/twitter/reply.js +133 -10
  50. package/clis/twitter/reply.test.js +55 -0
  51. package/clis/twitter/search.js +188 -170
  52. package/clis/twitter/search.test.js +96 -258
  53. package/clis/twitter/shared.js +167 -16
  54. package/clis/twitter/shared.test.js +102 -1
  55. package/clis/twitter/timeline.js +3 -1
  56. package/clis/twitter/tweets.js +147 -51
  57. package/clis/twitter/tweets.test.js +238 -1
  58. package/clis/xiaohongshu/comments.js +57 -26
  59. package/clis/xiaohongshu/comments.test.js +63 -1
  60. package/clis/xiaohongshu/download.js +32 -23
  61. package/clis/xiaohongshu/feed.js +23 -15
  62. package/clis/xiaohongshu/note-helpers.js +16 -6
  63. package/clis/xiaohongshu/note.js +26 -20
  64. package/clis/xiaohongshu/notifications.js +26 -19
  65. package/clis/xiaohongshu/search.js +201 -37
  66. package/clis/xiaohongshu/search.test.js +82 -8
  67. package/clis/xiaohongshu/user-helpers.js +13 -4
  68. package/clis/xiaohongshu/user-helpers.test.js +20 -0
  69. package/clis/xiaohongshu/user.js +9 -4
  70. package/clis/xueqiu/earnings-date.js +2 -2
  71. package/clis/xueqiu/kline.js +2 -2
  72. package/clis/xueqiu/utils.js +19 -0
  73. package/clis/xueqiu/utils.test.js +26 -0
  74. package/clis/youtube/transcript.js +28 -3
  75. package/clis/youtube/transcript.test.js +90 -1
  76. package/clis/zhihu/answer-detail.js +233 -0
  77. package/clis/zhihu/answer-detail.test.js +330 -0
  78. package/clis/zhihu/question.js +44 -10
  79. package/clis/zhihu/question.test.js +78 -1
  80. package/clis/zhihu/recommend.js +103 -0
  81. package/clis/zhihu/recommend.test.js +143 -0
  82. package/dist/src/browser/base-page.d.ts +3 -2
  83. package/dist/src/browser/base-page.test.js +2 -2
  84. package/dist/src/browser/cdp.js +3 -3
  85. package/dist/src/browser/page.d.ts +3 -2
  86. package/dist/src/browser/page.js +4 -4
  87. package/dist/src/browser/page.test.js +31 -0
  88. package/dist/src/browser/utils.d.ts +10 -0
  89. package/dist/src/browser/utils.js +37 -0
  90. package/dist/src/browser/utils.test.d.ts +1 -0
  91. package/dist/src/browser/utils.test.js +29 -0
  92. package/dist/src/cli-argv-preprocess.d.ts +37 -0
  93. package/dist/src/cli-argv-preprocess.js +131 -0
  94. package/dist/src/cli-argv-preprocess.test.d.ts +1 -0
  95. package/dist/src/cli-argv-preprocess.test.js +130 -0
  96. package/dist/src/cli.js +123 -86
  97. package/dist/src/cli.test.js +32 -22
  98. package/dist/src/commands/daemon.js +6 -7
  99. package/dist/src/doctor.js +21 -17
  100. package/dist/src/doctor.test.js +2 -0
  101. package/dist/src/download/progress.js +15 -11
  102. package/dist/src/download/progress.test.d.ts +1 -0
  103. package/dist/src/download/progress.test.js +25 -0
  104. package/dist/src/execution.js +1 -3
  105. package/dist/src/execution.test.js +4 -16
  106. package/dist/src/help.d.ts +11 -0
  107. package/dist/src/help.js +46 -5
  108. package/dist/src/logger.js +8 -9
  109. package/dist/src/main.js +16 -0
  110. package/dist/src/output.js +4 -5
  111. package/dist/src/runtime-detect.d.ts +1 -1
  112. package/dist/src/runtime-detect.js +1 -1
  113. package/dist/src/runtime-detect.test.js +3 -2
  114. package/dist/src/tui.d.ts +0 -1
  115. package/dist/src/tui.js +9 -22
  116. package/dist/src/types.d.ts +3 -1
  117. package/dist/src/update-check.js +4 -5
  118. package/package.json +5 -4
package/cli-manifest.json CHANGED
@@ -5842,6 +5842,122 @@
5842
5842
  "modulePath": "crates/search.js",
5843
5843
  "sourceFile": "crates/search.js"
5844
5844
  },
5845
+ {
5846
+ "site": "ctrip",
5847
+ "name": "flight",
5848
+ "description": "搜索携程一程机票(按出发/到达 IATA 三字码 + 日期)",
5849
+ "access": "read",
5850
+ "domain": "flights.ctrip.com",
5851
+ "strategy": "cookie",
5852
+ "browser": true,
5853
+ "args": [
5854
+ {
5855
+ "name": "from",
5856
+ "type": "str",
5857
+ "required": true,
5858
+ "positional": true,
5859
+ "help": "Departure IATA code (e.g. BJS / PEK)"
5860
+ },
5861
+ {
5862
+ "name": "to",
5863
+ "type": "str",
5864
+ "required": true,
5865
+ "positional": true,
5866
+ "help": "Arrival IATA code (e.g. SHA / PVG)"
5867
+ },
5868
+ {
5869
+ "name": "date",
5870
+ "type": "str",
5871
+ "required": true,
5872
+ "help": "Departure date (YYYY-MM-DD)"
5873
+ },
5874
+ {
5875
+ "name": "limit",
5876
+ "type": "int",
5877
+ "default": 20,
5878
+ "required": false,
5879
+ "help": "Number of flights (1-50)"
5880
+ }
5881
+ ],
5882
+ "columns": [
5883
+ "rank",
5884
+ "airline",
5885
+ "flightNo",
5886
+ "aircraft",
5887
+ "departureTime",
5888
+ "departureAirport",
5889
+ "arrivalTime",
5890
+ "arrivalAirport",
5891
+ "terminal",
5892
+ "price",
5893
+ "currency",
5894
+ "cabin",
5895
+ "url"
5896
+ ],
5897
+ "type": "js",
5898
+ "modulePath": "ctrip/flight.js",
5899
+ "sourceFile": "ctrip/flight.js",
5900
+ "navigateBefore": false
5901
+ },
5902
+ {
5903
+ "site": "ctrip",
5904
+ "name": "hotel-search",
5905
+ "description": "搜索携程酒店列表(按城市 + 入住/离店日期)",
5906
+ "access": "read",
5907
+ "domain": "hotels.ctrip.com",
5908
+ "strategy": "cookie",
5909
+ "browser": true,
5910
+ "args": [
5911
+ {
5912
+ "name": "city",
5913
+ "type": "str",
5914
+ "required": true,
5915
+ "positional": true,
5916
+ "help": "Numeric Ctrip city ID (use `ctrip search` or `ctrip hotel-suggest` to discover)"
5917
+ },
5918
+ {
5919
+ "name": "checkin",
5920
+ "type": "str",
5921
+ "required": true,
5922
+ "help": "Check-in date (YYYY-MM-DD)"
5923
+ },
5924
+ {
5925
+ "name": "checkout",
5926
+ "type": "str",
5927
+ "required": true,
5928
+ "help": "Check-out date (YYYY-MM-DD)"
5929
+ },
5930
+ {
5931
+ "name": "limit",
5932
+ "type": "int",
5933
+ "default": 10,
5934
+ "required": false,
5935
+ "help": "Number of hotels (1-30); SSR first page returns ~13 entries"
5936
+ }
5937
+ ],
5938
+ "columns": [
5939
+ "rank",
5940
+ "hotelId",
5941
+ "name",
5942
+ "enName",
5943
+ "star",
5944
+ "score",
5945
+ "scoreLabel",
5946
+ "reviewCount",
5947
+ "cityName",
5948
+ "district",
5949
+ "address",
5950
+ "lat",
5951
+ "lon",
5952
+ "price",
5953
+ "currency",
5954
+ "url"
5955
+ ],
5956
+ "type": "js",
5957
+ "modulePath": "ctrip/hotel-search.js",
5958
+ "sourceFile": "ctrip/hotel-search.js",
5959
+ "navigateBefore": false
5960
+ },
5845
5961
  {
5846
5962
  "site": "ctrip",
5847
5963
  "name": "hotel-suggest",
@@ -19083,6 +19199,39 @@
19083
19199
  "navigateBefore": "https://reddit.com",
19084
19200
  "siteSession": "persistent"
19085
19201
  },
19202
+ {
19203
+ "site": "reddit",
19204
+ "name": "home",
19205
+ "description": "Reddit personalized home feed (Best, requires login)",
19206
+ "access": "read",
19207
+ "domain": "reddit.com",
19208
+ "strategy": "cookie",
19209
+ "browser": true,
19210
+ "args": [
19211
+ {
19212
+ "name": "limit",
19213
+ "type": "int",
19214
+ "default": 25,
19215
+ "required": false,
19216
+ "help": "Number of posts (1–100)"
19217
+ }
19218
+ ],
19219
+ "columns": [
19220
+ "rank",
19221
+ "title",
19222
+ "subreddit",
19223
+ "score",
19224
+ "comments",
19225
+ "postId",
19226
+ "author",
19227
+ "url"
19228
+ ],
19229
+ "type": "js",
19230
+ "modulePath": "reddit/home.js",
19231
+ "sourceFile": "reddit/home.js",
19232
+ "navigateBefore": "https://reddit.com",
19233
+ "siteSession": "persistent"
19234
+ },
19086
19235
  {
19087
19236
  "site": "reddit",
19088
19237
  "name": "hot",
@@ -19203,6 +19352,20 @@
19203
19352
  "default": 2000,
19204
19353
  "required": false,
19205
19354
  "help": "Max characters per comment body (min 100)"
19355
+ },
19356
+ {
19357
+ "name": "expand-more",
19358
+ "type": "bool",
19359
+ "default": false,
19360
+ "required": false,
19361
+ "help": "Follow Reddit \"more comments\" stubs by calling /api/morechildren.json"
19362
+ },
19363
+ {
19364
+ "name": "expand-rounds",
19365
+ "type": "int",
19366
+ "default": 2,
19367
+ "required": false,
19368
+ "help": "Max expansion passes when --expand-more is on (1–5; each round can fan out new \"more\" stubs)"
19206
19369
  }
19207
19370
  ],
19208
19371
  "columns": [
@@ -19217,6 +19380,39 @@
19217
19380
  "navigateBefore": "https://reddit.com",
19218
19381
  "siteSession": "persistent"
19219
19382
  },
19383
+ {
19384
+ "site": "reddit",
19385
+ "name": "reply",
19386
+ "description": "Reply to a Reddit comment",
19387
+ "access": "write",
19388
+ "domain": "reddit.com",
19389
+ "strategy": "cookie",
19390
+ "browser": true,
19391
+ "args": [
19392
+ {
19393
+ "name": "comment-id",
19394
+ "type": "string",
19395
+ "required": true,
19396
+ "positional": true,
19397
+ "help": "Comment ID (e.g. okf3s7u) or fullname (t1_xxx)"
19398
+ },
19399
+ {
19400
+ "name": "text",
19401
+ "type": "string",
19402
+ "required": true,
19403
+ "positional": true,
19404
+ "help": "Reply text"
19405
+ }
19406
+ ],
19407
+ "columns": [
19408
+ "status",
19409
+ "message"
19410
+ ],
19411
+ "type": "js",
19412
+ "modulePath": "reddit/reply.js",
19413
+ "sourceFile": "reddit/reply.js",
19414
+ "navigateBefore": "https://reddit.com"
19415
+ },
19220
19416
  {
19221
19417
  "site": "reddit",
19222
19418
  "name": "save",
@@ -19391,6 +19587,33 @@
19391
19587
  "navigateBefore": "https://reddit.com",
19392
19588
  "siteSession": "persistent"
19393
19589
  },
19590
+ {
19591
+ "site": "reddit",
19592
+ "name": "subreddit-info",
19593
+ "description": "Show metadata for a Reddit subreddit (subscribers, description, created date, NSFW)",
19594
+ "access": "read",
19595
+ "domain": "reddit.com",
19596
+ "strategy": "cookie",
19597
+ "browser": true,
19598
+ "args": [
19599
+ {
19600
+ "name": "name",
19601
+ "type": "string",
19602
+ "required": true,
19603
+ "positional": true,
19604
+ "help": "Subreddit name (no `r/` prefix needed)"
19605
+ }
19606
+ ],
19607
+ "columns": [
19608
+ "field",
19609
+ "value"
19610
+ ],
19611
+ "type": "js",
19612
+ "modulePath": "reddit/subreddit-info.js",
19613
+ "sourceFile": "reddit/subreddit-info.js",
19614
+ "navigateBefore": "https://reddit.com",
19615
+ "siteSession": "persistent"
19616
+ },
19394
19617
  {
19395
19618
  "site": "reddit",
19396
19619
  "name": "subscribe",
@@ -19589,6 +19812,272 @@
19589
19812
  "navigateBefore": "https://reddit.com",
19590
19813
  "siteSession": "persistent"
19591
19814
  },
19815
+ {
19816
+ "site": "reddit",
19817
+ "name": "whoami",
19818
+ "description": "Show the currently logged-in Reddit user",
19819
+ "access": "read",
19820
+ "domain": "reddit.com",
19821
+ "strategy": "cookie",
19822
+ "browser": true,
19823
+ "args": [],
19824
+ "columns": [
19825
+ "field",
19826
+ "value"
19827
+ ],
19828
+ "type": "js",
19829
+ "modulePath": "reddit/whoami.js",
19830
+ "sourceFile": "reddit/whoami.js",
19831
+ "navigateBefore": "https://reddit.com",
19832
+ "siteSession": "persistent"
19833
+ },
19834
+ {
19835
+ "site": "rednote",
19836
+ "name": "comments",
19837
+ "description": "Read comments from a rednote note (supports nested replies)",
19838
+ "access": "read",
19839
+ "domain": "www.rednote.com",
19840
+ "strategy": "cookie",
19841
+ "browser": true,
19842
+ "args": [
19843
+ {
19844
+ "name": "note-id",
19845
+ "type": "str",
19846
+ "required": true,
19847
+ "positional": true,
19848
+ "help": "Full rednote note URL with xsec_token"
19849
+ },
19850
+ {
19851
+ "name": "limit",
19852
+ "type": "int",
19853
+ "default": 20,
19854
+ "required": false,
19855
+ "help": "Number of top-level comments (max 50)"
19856
+ },
19857
+ {
19858
+ "name": "with-replies",
19859
+ "type": "boolean",
19860
+ "default": false,
19861
+ "required": false,
19862
+ "help": "Include nested replies (楼中楼)"
19863
+ }
19864
+ ],
19865
+ "columns": [
19866
+ "rank",
19867
+ "author",
19868
+ "text",
19869
+ "likes",
19870
+ "time",
19871
+ "is_reply",
19872
+ "reply_to"
19873
+ ],
19874
+ "type": "js",
19875
+ "modulePath": "rednote/comments.js",
19876
+ "sourceFile": "rednote/comments.js",
19877
+ "navigateBefore": false
19878
+ },
19879
+ {
19880
+ "site": "rednote",
19881
+ "name": "download",
19882
+ "description": "Download images and videos from a rednote note",
19883
+ "access": "read",
19884
+ "domain": "www.rednote.com",
19885
+ "strategy": "cookie",
19886
+ "browser": true,
19887
+ "args": [
19888
+ {
19889
+ "name": "note-id",
19890
+ "type": "str",
19891
+ "required": true,
19892
+ "positional": true,
19893
+ "help": "Full rednote note URL with xsec_token"
19894
+ },
19895
+ {
19896
+ "name": "output",
19897
+ "type": "str",
19898
+ "default": "./rednote-downloads",
19899
+ "required": false,
19900
+ "help": "Output directory"
19901
+ }
19902
+ ],
19903
+ "columns": [
19904
+ "index",
19905
+ "type",
19906
+ "status",
19907
+ "size"
19908
+ ],
19909
+ "type": "js",
19910
+ "modulePath": "rednote/download.js",
19911
+ "sourceFile": "rednote/download.js",
19912
+ "navigateBefore": false
19913
+ },
19914
+ {
19915
+ "site": "rednote",
19916
+ "name": "feed",
19917
+ "description": "Rednote home feed (reads hydrated Pinia store)",
19918
+ "access": "read",
19919
+ "domain": "www.rednote.com",
19920
+ "strategy": "cookie",
19921
+ "browser": true,
19922
+ "args": [
19923
+ {
19924
+ "name": "limit",
19925
+ "type": "int",
19926
+ "default": 20,
19927
+ "required": false,
19928
+ "help": "Number of items to return"
19929
+ }
19930
+ ],
19931
+ "columns": [
19932
+ "id",
19933
+ "title",
19934
+ "author",
19935
+ "likes",
19936
+ "type",
19937
+ "url"
19938
+ ],
19939
+ "type": "js",
19940
+ "modulePath": "rednote/feed.js",
19941
+ "sourceFile": "rednote/feed.js",
19942
+ "navigateBefore": false
19943
+ },
19944
+ {
19945
+ "site": "rednote",
19946
+ "name": "note",
19947
+ "description": "Read note body and engagement counts from a rednote note",
19948
+ "access": "read",
19949
+ "domain": "www.rednote.com",
19950
+ "strategy": "cookie",
19951
+ "browser": true,
19952
+ "args": [
19953
+ {
19954
+ "name": "note-id",
19955
+ "type": "str",
19956
+ "required": true,
19957
+ "positional": true,
19958
+ "help": "Full rednote note URL with xsec_token"
19959
+ }
19960
+ ],
19961
+ "columns": [
19962
+ "field",
19963
+ "value"
19964
+ ],
19965
+ "type": "js",
19966
+ "modulePath": "rednote/note.js",
19967
+ "sourceFile": "rednote/note.js",
19968
+ "navigateBefore": false
19969
+ },
19970
+ {
19971
+ "site": "rednote",
19972
+ "name": "notifications",
19973
+ "description": "Rednote notifications (mentions/likes/connections)",
19974
+ "access": "read",
19975
+ "domain": "www.rednote.com",
19976
+ "strategy": "cookie",
19977
+ "browser": true,
19978
+ "args": [
19979
+ {
19980
+ "name": "type",
19981
+ "type": "str",
19982
+ "default": "mentions",
19983
+ "required": false,
19984
+ "help": "Notification type: mentions, likes, or connections"
19985
+ },
19986
+ {
19987
+ "name": "limit",
19988
+ "type": "int",
19989
+ "default": 20,
19990
+ "required": false,
19991
+ "help": "Number of notifications to return"
19992
+ }
19993
+ ],
19994
+ "columns": [
19995
+ "rank",
19996
+ "user",
19997
+ "action",
19998
+ "content",
19999
+ "note",
20000
+ "time"
20001
+ ],
20002
+ "type": "js",
20003
+ "modulePath": "rednote/notifications.js",
20004
+ "sourceFile": "rednote/notifications.js",
20005
+ "navigateBefore": false
20006
+ },
20007
+ {
20008
+ "site": "rednote",
20009
+ "name": "search",
20010
+ "description": "Search rednote notes",
20011
+ "access": "read",
20012
+ "domain": "www.rednote.com",
20013
+ "strategy": "cookie",
20014
+ "browser": true,
20015
+ "args": [
20016
+ {
20017
+ "name": "query",
20018
+ "type": "str",
20019
+ "required": true,
20020
+ "positional": true,
20021
+ "help": "Search keyword"
20022
+ },
20023
+ {
20024
+ "name": "limit",
20025
+ "type": "int",
20026
+ "default": 20,
20027
+ "required": false,
20028
+ "help": "Number of results"
20029
+ }
20030
+ ],
20031
+ "columns": [
20032
+ "rank",
20033
+ "title",
20034
+ "author",
20035
+ "likes",
20036
+ "published_at",
20037
+ "url",
20038
+ "author_url"
20039
+ ],
20040
+ "type": "js",
20041
+ "modulePath": "rednote/search.js",
20042
+ "sourceFile": "rednote/search.js",
20043
+ "navigateBefore": false
20044
+ },
20045
+ {
20046
+ "site": "rednote",
20047
+ "name": "user",
20048
+ "description": "Get public notes from a rednote user profile",
20049
+ "access": "read",
20050
+ "domain": "www.rednote.com",
20051
+ "strategy": "cookie",
20052
+ "browser": true,
20053
+ "args": [
20054
+ {
20055
+ "name": "id",
20056
+ "type": "str",
20057
+ "required": true,
20058
+ "positional": true,
20059
+ "help": "User id or profile URL"
20060
+ },
20061
+ {
20062
+ "name": "limit",
20063
+ "type": "int",
20064
+ "default": 15,
20065
+ "required": false,
20066
+ "help": "Number of notes to return"
20067
+ }
20068
+ ],
20069
+ "columns": [
20070
+ "id",
20071
+ "title",
20072
+ "type",
20073
+ "likes",
20074
+ "url"
20075
+ ],
20076
+ "type": "js",
20077
+ "modulePath": "rednote/user.js",
20078
+ "sourceFile": "rednote/user.js",
20079
+ "navigateBefore": false
20080
+ },
19592
20081
  {
19593
20082
  "site": "rest-countries",
19594
20083
  "name": "country",
@@ -22675,7 +23164,9 @@
22675
23164
  "retweets",
22676
23165
  "replies",
22677
23166
  "created_at",
22678
- "url"
23167
+ "url",
23168
+ "has_media",
23169
+ "media_urls"
22679
23170
  ],
22680
23171
  "type": "js",
22681
23172
  "modulePath": "twitter/list-tweets.js",
@@ -22769,7 +23260,9 @@
22769
23260
  "columns": [
22770
23261
  "status",
22771
23262
  "message",
22772
- "text"
23263
+ "text",
23264
+ "id",
23265
+ "url"
22773
23266
  ],
22774
23267
  "type": "js",
22775
23268
  "modulePath": "twitter/post.js",
@@ -22897,7 +23390,8 @@
22897
23390
  "columns": [
22898
23391
  "status",
22899
23392
  "message",
22900
- "text"
23393
+ "text",
23394
+ "url"
22901
23395
  ],
22902
23396
  "type": "js",
22903
23397
  "modulePath": "twitter/reply.js",
@@ -22985,7 +23479,7 @@
22985
23479
  "description": "Search Twitter/X for tweets, with optional --from / --has / --exclude / --product filters mapped to X's search operators",
22986
23480
  "access": "read",
22987
23481
  "domain": "x.com",
22988
- "strategy": "intercept",
23482
+ "strategy": "cookie",
22989
23483
  "browser": true,
22990
23484
  "args": [
22991
23485
  {
@@ -23078,7 +23572,7 @@
23078
23572
  "type": "js",
23079
23573
  "modulePath": "twitter/search.js",
23080
23574
  "sourceFile": "twitter/search.js",
23081
- "navigateBefore": true,
23575
+ "navigateBefore": "https://x.com",
23082
23576
  "siteSession": "persistent"
23083
23577
  },
23084
23578
  {
@@ -23213,7 +23707,7 @@
23213
23707
  {
23214
23708
  "site": "twitter",
23215
23709
  "name": "tweets",
23216
- "description": "Fetch a Twitter user's most recent tweets (chronological, excludes pinned)",
23710
+ "description": "Fetch a Twitter user's most recent tweets (chronological, excludes pinned; defaults to the logged-in user when no username is given)",
23217
23711
  "access": "read",
23218
23712
  "domain": "x.com",
23219
23713
  "strategy": "cookie",
@@ -23222,9 +23716,9 @@
23222
23716
  {
23223
23717
  "name": "username",
23224
23718
  "type": "string",
23225
- "required": true,
23719
+ "required": false,
23226
23720
  "positional": true,
23227
- "help": "Twitter screen name (with or without @)"
23721
+ "help": "Twitter screen name (with or without @). Defaults to the logged-in user when omitted."
23228
23722
  },
23229
23723
  {
23230
23724
  "name": "limit",
@@ -27720,6 +28214,47 @@
27720
28214
  "sourceFile": "zhihu/answer.js",
27721
28215
  "navigateBefore": "https://www.zhihu.com"
27722
28216
  },
28217
+ {
28218
+ "site": "zhihu",
28219
+ "name": "answer-detail",
28220
+ "description": "知乎单个回答完整内容(按 answer ID 获取)",
28221
+ "access": "read",
28222
+ "domain": "www.zhihu.com",
28223
+ "strategy": "cookie",
28224
+ "browser": true,
28225
+ "args": [
28226
+ {
28227
+ "name": "id",
28228
+ "type": "str",
28229
+ "required": true,
28230
+ "positional": true,
28231
+ "help": "Answer ID, full Zhihu answer URL, or typed target (answer:<qid>:<aid>)"
28232
+ },
28233
+ {
28234
+ "name": "max-content",
28235
+ "type": "int",
28236
+ "default": 0,
28237
+ "required": false,
28238
+ "help": "Optional cap on stripped content length in characters (0 = no truncation, return the full answer)"
28239
+ }
28240
+ ],
28241
+ "columns": [
28242
+ "id",
28243
+ "author",
28244
+ "votes",
28245
+ "comments",
28246
+ "question_id",
28247
+ "question_title",
28248
+ "url",
28249
+ "created_at",
28250
+ "updated_at",
28251
+ "content"
28252
+ ],
28253
+ "type": "js",
28254
+ "modulePath": "zhihu/answer-detail.js",
28255
+ "sourceFile": "zhihu/answer-detail.js",
28256
+ "navigateBefore": "https://www.zhihu.com"
28257
+ },
27723
28258
  {
27724
28259
  "site": "zhihu",
27725
28260
  "name": "collection",
@@ -28054,7 +28589,18 @@
28054
28589
  "type": "int",
28055
28590
  "default": 5,
28056
28591
  "required": false,
28057
- "help": "Number of answers"
28592
+ "help": "Number of answers (max 1000; use normal-sized requests)"
28593
+ },
28594
+ {
28595
+ "name": "sort",
28596
+ "type": "str",
28597
+ "default": "default",
28598
+ "required": false,
28599
+ "help": "Answer order: default or created",
28600
+ "choices": [
28601
+ "default",
28602
+ "created"
28603
+ ]
28058
28604
  }
28059
28605
  ],
28060
28606
  "columns": [
@@ -28068,6 +28614,36 @@
28068
28614
  "sourceFile": "zhihu/question.js",
28069
28615
  "navigateBefore": "https://www.zhihu.com"
28070
28616
  },
28617
+ {
28618
+ "site": "zhihu",
28619
+ "name": "recommend",
28620
+ "description": "知乎首页推荐",
28621
+ "access": "read",
28622
+ "domain": "www.zhihu.com",
28623
+ "strategy": "cookie",
28624
+ "browser": true,
28625
+ "args": [
28626
+ {
28627
+ "name": "limit",
28628
+ "type": "int",
28629
+ "default": 20,
28630
+ "required": false,
28631
+ "help": "Number of items to return (max 1000; use normal-sized requests)"
28632
+ }
28633
+ ],
28634
+ "columns": [
28635
+ "rank",
28636
+ "type",
28637
+ "title",
28638
+ "author",
28639
+ "votes",
28640
+ "url"
28641
+ ],
28642
+ "type": "js",
28643
+ "modulePath": "zhihu/recommend.js",
28644
+ "sourceFile": "zhihu/recommend.js",
28645
+ "navigateBefore": "https://www.zhihu.com"
28646
+ },
28071
28647
  {
28072
28648
  "site": "zhihu",
28073
28649
  "name": "search",