rednote-cli 0.1.0__py3-none-any.whl

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 (81) hide show
  1. rednote_cli/__init__.py +5 -0
  2. rednote_cli/_runtime/__init__.py +0 -0
  3. rednote_cli/_runtime/common/__init__.py +0 -0
  4. rednote_cli/_runtime/common/app_utils.py +77 -0
  5. rednote_cli/_runtime/common/config.py +83 -0
  6. rednote_cli/_runtime/common/enums.py +17 -0
  7. rednote_cli/_runtime/common/errors.py +22 -0
  8. rednote_cli/_runtime/core/__init__.py +0 -0
  9. rednote_cli/_runtime/core/account_manager.py +349 -0
  10. rednote_cli/_runtime/core/browser/__init__.py +0 -0
  11. rednote_cli/_runtime/core/browser/manager.py +247 -0
  12. rednote_cli/_runtime/core/database/__init__.py +0 -0
  13. rednote_cli/_runtime/core/database/manager.py +334 -0
  14. rednote_cli/_runtime/platforms/__init__.py +0 -0
  15. rednote_cli/_runtime/platforms/base.py +62 -0
  16. rednote_cli/_runtime/platforms/factory.py +55 -0
  17. rednote_cli/_runtime/platforms/publishing/__init__.py +12 -0
  18. rednote_cli/_runtime/platforms/publishing/media.py +275 -0
  19. rednote_cli/_runtime/platforms/publishing/models.py +59 -0
  20. rednote_cli/_runtime/platforms/publishing/validator.py +124 -0
  21. rednote_cli/_runtime/services/__init__.py +1 -0
  22. rednote_cli/_runtime/services/scraper_service.py +235 -0
  23. rednote_cli/adapters/__init__.py +1 -0
  24. rednote_cli/adapters/output/__init__.py +1 -0
  25. rednote_cli/adapters/output/event_stream.py +29 -0
  26. rednote_cli/adapters/output/formatter_json.py +23 -0
  27. rednote_cli/adapters/output/formatter_table.py +39 -0
  28. rednote_cli/adapters/output/writer.py +17 -0
  29. rednote_cli/adapters/persistence/__init__.py +1 -0
  30. rednote_cli/adapters/persistence/file_account_repo.py +51 -0
  31. rednote_cli/adapters/platform/__init__.py +1 -0
  32. rednote_cli/adapters/platform/rednote/__init__.py +1 -0
  33. rednote_cli/adapters/platform/rednote/extractor.py +65 -0
  34. rednote_cli/adapters/platform/rednote/publisher.py +26 -0
  35. rednote_cli/adapters/platform/rednote/runtime_extractor.py +818 -0
  36. rednote_cli/adapters/platform/rednote/runtime_publisher.py +373 -0
  37. rednote_cli/adapters/platform/rednote/runtime_registration.py +20 -0
  38. rednote_cli/application/__init__.py +1 -0
  39. rednote_cli/application/dto/__init__.py +1 -0
  40. rednote_cli/application/dto/input_models.py +121 -0
  41. rednote_cli/application/dto/output_models.py +78 -0
  42. rednote_cli/application/use_cases/__init__.py +1 -0
  43. rednote_cli/application/use_cases/account_list.py +9 -0
  44. rednote_cli/application/use_cases/account_mutation.py +22 -0
  45. rednote_cli/application/use_cases/auth_login.py +64 -0
  46. rednote_cli/application/use_cases/auth_status.py +96 -0
  47. rednote_cli/application/use_cases/doctor.py +49 -0
  48. rednote_cli/application/use_cases/init_runtime.py +20 -0
  49. rednote_cli/application/use_cases/note_get.py +22 -0
  50. rednote_cli/application/use_cases/note_search.py +26 -0
  51. rednote_cli/application/use_cases/publish_note.py +25 -0
  52. rednote_cli/application/use_cases/user_get.py +18 -0
  53. rednote_cli/application/use_cases/user_search.py +8 -0
  54. rednote_cli/application/use_cases/user_self.py +8 -0
  55. rednote_cli/cli/__init__.py +1 -0
  56. rednote_cli/cli/__main__.py +5 -0
  57. rednote_cli/cli/commands/__init__.py +1 -0
  58. rednote_cli/cli/commands/account.py +204 -0
  59. rednote_cli/cli/commands/doctor.py +20 -0
  60. rednote_cli/cli/commands/init.py +20 -0
  61. rednote_cli/cli/commands/note.py +101 -0
  62. rednote_cli/cli/commands/publish.py +147 -0
  63. rednote_cli/cli/commands/search.py +185 -0
  64. rednote_cli/cli/commands/user.py +113 -0
  65. rednote_cli/cli/main.py +163 -0
  66. rednote_cli/cli/options.py +13 -0
  67. rednote_cli/cli/runtime.py +142 -0
  68. rednote_cli/cli/utils.py +74 -0
  69. rednote_cli/domain/__init__.py +1 -0
  70. rednote_cli/domain/errors.py +50 -0
  71. rednote_cli/domain/note_search_filters.py +155 -0
  72. rednote_cli/infra/__init__.py +1 -0
  73. rednote_cli/infra/exit_codes.py +30 -0
  74. rednote_cli/infra/logger.py +11 -0
  75. rednote_cli/infra/paths.py +31 -0
  76. rednote_cli/infra/platforms.py +4 -0
  77. rednote_cli-0.1.0.dist-info/METADATA +81 -0
  78. rednote_cli-0.1.0.dist-info/RECORD +81 -0
  79. rednote_cli-0.1.0.dist-info/WHEEL +5 -0
  80. rednote_cli-0.1.0.dist-info/entry_points.txt +2 -0
  81. rednote_cli-0.1.0.dist-info/top_level.txt +1 -0
@@ -0,0 +1,81 @@
1
+ Metadata-Version: 2.4
2
+ Name: rednote-cli
3
+ Version: 0.1.0
4
+ Summary: Rednote platform CLI
5
+ Requires-Python: >=3.11
6
+ Description-Content-Type: text/markdown
7
+ Requires-Dist: playwright==1.57.0
8
+ Requires-Dist: playwright-stealth==2.0.0
9
+ Requires-Dist: yt-dlp==2025.12.8
10
+ Requires-Dist: pydantic==2.12.2
11
+ Requires-Dist: typer>=0.12.0
12
+ Requires-Dist: rich>=13.7.0
13
+ Requires-Dist: loguru==0.7.3
14
+ Requires-Dist: croniter==6.0.0
15
+ Requires-Dist: fake_useragent==2.2.0
16
+
17
+ # rednote-cli
18
+
19
+ Rednote 平台专用 CLI 包(独立安装、独立升级)。
20
+
21
+ ## 安装
22
+
23
+ ```bash
24
+ pipx install rednote-cli
25
+ ```
26
+
27
+ ## 快速开始
28
+
29
+ ```bash
30
+ rednote-cli init runtime
31
+ rednote-cli doctor run --format json
32
+ rednote-cli account login
33
+ rednote-cli account status --format json
34
+ rednote-cli account list --only-active true
35
+ rednote-cli account list --only-active false
36
+ rednote-cli search note --keyword 旅行 --size 10 --sort-by latest --note-type image_text --format json
37
+ rednote-cli publish --target image --account user_001 --image-list /abs/a.jpg,/abs/b.jpg --title 标题 --content 正文 --format json
38
+ rednote-cli publish --target video --account user_001 --video /abs/demo.mp4 --title 标题 --content 正文 --format json
39
+ ```
40
+
41
+ 命令结构(当前版本):
42
+ - `note` / `user` 作为详情查询入口,`search note|user` 作为统一搜索入口。
43
+ - 旧层级 `note get|search`、`user get|search` 已移除。
44
+
45
+ 空参数行为(统一约定):
46
+ - `rednote-cli note`、`rednote-cli publish`、`rednote-cli account activate` 等缺少业务参数时,输出帮助文本并返回退出码 `0`。
47
+ - 非空调用但参数非法时,返回 JSON `INVALID_ARGS`(退出码 `2`)。
48
+
49
+ `account status` 会实时打开浏览器检查登录态并刷新账号存储(`is_logged_in/check_time/storage_state`),输出结构与 `account list --only-active false` 对齐。
50
+
51
+ `account list` 的 `--only-active` 支持显式 `true|false`(默认 `true`)。
52
+
53
+ 发布能力说明:
54
+ - `publish --target image`:图文发布,支持本地/URL 图片,`--account` 必填。
55
+ - `publish --target video`:视频发布,支持本地/URL 视频(仅 `mp4/mov`),`--account` 必填。
56
+
57
+ ## 自动化建议
58
+
59
+ ```bash
60
+ rednote-cli --format json --trace-id req-001 <command> ...
61
+ ```
62
+
63
+ `--input`(面向 AI/Agent):
64
+ - 作用:从 JSON 文件或 stdin 读取参数,适合复杂命令的程序化调用。
65
+ - 优先级:显式 CLI 参数 > `--input` JSON > 默认值。
66
+ - 范围:`--input` 不是全局参数,仅 `search note|user`、`note`、`user`、`publish` 支持。
67
+
68
+ 示例:
69
+
70
+ ```bash
71
+ rednote-cli --format json --trace-id req-001 search note --input payload.json
72
+ cat payload.json | rednote-cli --format json --trace-id req-002 publish --input - --account user_001
73
+ ```
74
+
75
+ ## 文档
76
+
77
+ 完整文档请查看仓库根目录:
78
+ - `README.md`
79
+ - `DESIGN.md`
80
+ - `DEV.md`
81
+ - `USER_GUIDE.md`
@@ -0,0 +1,81 @@
1
+ rednote_cli/__init__.py,sha256=_C27jCUeM-Q59jz59EuDlDyybXaB3kirsYP1JI-TcGg,86
2
+ rednote_cli/_runtime/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
3
+ rednote_cli/_runtime/common/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
4
+ rednote_cli/_runtime/common/app_utils.py,sha256=6LXlHgOcTlmzx3X4OAqh6SRZyaoOhHt6Wyfy7da-s2E,2441
5
+ rednote_cli/_runtime/common/config.py,sha256=gcXAkHQqxjLh_9SDkJBMAM_tJ0MOfyrR8nQ921NHiNg,2615
6
+ rednote_cli/_runtime/common/enums.py,sha256=E8R5buSeIt1tFpqUsivhWDUzD3o8abf741dN-GfgSts,566
7
+ rednote_cli/_runtime/common/errors.py,sha256=Sn31UDJ-q7ch_rLRR6htzoJGDNCnTvmYp3g9eZhJnKw,693
8
+ rednote_cli/_runtime/core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
9
+ rednote_cli/_runtime/core/account_manager.py,sha256=1AAE151-muG3F8T01xLXs9Gol_mhDIYgqLqXnBknezo,15808
10
+ rednote_cli/_runtime/core/browser/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
11
+ rednote_cli/_runtime/core/browser/manager.py,sha256=tZkb3Rq5XhTETs8vl7Wyqa6qSw800HsbUNj04uRfa_I,8994
12
+ rednote_cli/_runtime/core/database/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
13
+ rednote_cli/_runtime/core/database/manager.py,sha256=q7PIw9Ct2HHhPK4TVzo0zH_H--lPsmUXR-JrPYRHuxc,11000
14
+ rednote_cli/_runtime/platforms/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
15
+ rednote_cli/_runtime/platforms/base.py,sha256=LgGEOhyqG4vX9RuHAw59RVZTP67SjwhQkWSixOZ5MTo,2274
16
+ rednote_cli/_runtime/platforms/factory.py,sha256=x3pwtmbz6FIyaUApS1K7lZEe1UqBGkEhAF0RoS78n9c,1799
17
+ rednote_cli/_runtime/platforms/publishing/__init__.py,sha256=wyvtAsXbwk9m1CSSH9Ggn0mJgwlvFkWuEv8y4li8Gos,445
18
+ rednote_cli/_runtime/platforms/publishing/media.py,sha256=Phcx8iSPIJUdT6fPnY27IQNgo23k-L8KsDOQRzIESrg,11537
19
+ rednote_cli/_runtime/platforms/publishing/models.py,sha256=k9FusnV2fUXfGTIdsm4387IS32BN2NO3GLmeNt0s4b8,1475
20
+ rednote_cli/_runtime/platforms/publishing/validator.py,sha256=r6wWHqc8PAKLWh0cB_DjBRSP22uGVzItWaNoKfLuWUo,4601
21
+ rednote_cli/_runtime/services/__init__.py,sha256=6mfu1RAktvMP9QPfy6Uu-zibR-rHHuOrwnm0yu3i2zA,39
22
+ rednote_cli/_runtime/services/scraper_service.py,sha256=Ql7eOOgaeUmBwuZBrPlJeydNg2wHIdz0T0_0qBHyJ58,10017
23
+ rednote_cli/adapters/__init__.py,sha256=C5olCabUMtzMbI3o129pVbQ6wPeNJfeYvbjUSS5n6fw,22
24
+ rednote_cli/adapters/output/__init__.py,sha256=ZrlPdoTVbYmus59dh6OQ6iM-hcM1KuSn-f_-02yz4FY,23
25
+ rednote_cli/adapters/output/event_stream.py,sha256=Swcxr3lIeRxoUpmzfSByovPjLwtet7WiWf66piVkA_0,659
26
+ rednote_cli/adapters/output/formatter_json.py,sha256=S75KlkM_BpyGuA_KrplJGzf_bu73KzsK3w1msJXgmzc,676
27
+ rednote_cli/adapters/output/formatter_table.py,sha256=5upUckNr1Sr8vQFmarniUpkOC4wuxyujzLeZz4KnEVk,1032
28
+ rednote_cli/adapters/output/writer.py,sha256=3r8Vq4A7ScG_qjDHdfLanIUVS5a3RR0u41sxVkDl6z8,446
29
+ rednote_cli/adapters/persistence/__init__.py,sha256=cpbzefS5l9UvNUzdXmzlMUGHFG4RfwLwS2-obzm_bNY,28
30
+ rednote_cli/adapters/persistence/file_account_repo.py,sha256=1iqH_hkjzi6xumMK1bCu_atj2nc5r2NKW6WhkVHaaN4,2128
31
+ rednote_cli/adapters/platform/__init__.py,sha256=4SgrFO5axL-iy8dMmNa-CEd9JDXF00TctqwoOy9LZVE,25
32
+ rednote_cli/adapters/platform/rednote/__init__.py,sha256=5ZTrVnZs1OR-39Nj4hJEVbaQOEG1yjrrYyWkdMUEo4A,33
33
+ rednote_cli/adapters/platform/rednote/extractor.py,sha256=FAs1n5p6rHKRN_ZZjhqGuF1IDh_dkyTXAzYvSOIW97U,2109
34
+ rednote_cli/adapters/platform/rednote/publisher.py,sha256=5E3XUOPm9uZFGwyVr62ubhdbpB9d6gwcz0uMwRIm-sE,692
35
+ rednote_cli/adapters/platform/rednote/runtime_extractor.py,sha256=B1ZtyxE9d-Jz4sFwKTEoUFafI1VOnpdjq2KrFgAQR_A,42093
36
+ rednote_cli/adapters/platform/rednote/runtime_publisher.py,sha256=m729lYUr1rS1LbxRL82xH10auO3CylVFnWCJILj9P1A,14462
37
+ rednote_cli/adapters/platform/rednote/runtime_registration.py,sha256=U0vl5qwpX2T0T7AsHq7QkSmCeeqFp2pbz5MUD3W3a70,776
38
+ rednote_cli/application/__init__.py,sha256=Q7HK7gR_NyeQrxH1fvm1sO03FGCqmse4y8VwxbDZGEc,25
39
+ rednote_cli/application/dto/__init__.py,sha256=7ju8eZpPZVfqH2UQvXgwsxt1cr0mkG2W3fbBHlPPivg,45
40
+ rednote_cli/application/dto/input_models.py,sha256=-QzKzQEpGmABX-mGH4ErBaBmR_kPWnh200UvTAwasX8,3717
41
+ rednote_cli/application/dto/output_models.py,sha256=y-xGi2pob6qZzxUnYSzrvlsYMoeUopeuA77-a99ZvWY,1615
42
+ rednote_cli/application/use_cases/__init__.py,sha256=hVEWOFnwef1m8kvvwRu3icSATw8q76geX6AuKpcRdxw,34
43
+ rednote_cli/application/use_cases/account_list.py,sha256=SCyfHwX17WMUefBGpgVAndWCbitOHQBIOv6b8VdRpSU,363
44
+ rednote_cli/application/use_cases/account_mutation.py,sha256=F--LYPtE925renUyhILEjtaN1o1RnHWaMEVWJCHOkbo,1000
45
+ rednote_cli/application/use_cases/auth_login.py,sha256=M_I5X6CgIWCZAfbm14CGrJ55HWw-ZexiOcteykyOXj4,2152
46
+ rednote_cli/application/use_cases/auth_status.py,sha256=mXCeOC5pThyTzgJYUVOa9Myylstgm_2La_3CuCAk5sA,4002
47
+ rednote_cli/application/use_cases/doctor.py,sha256=D7Soe6Y_6meIvDQ80j7-LK09Lw4erbnLEaBLbov6YP0,1602
48
+ rednote_cli/application/use_cases/init_runtime.py,sha256=pTXMqCfam63rXPhMjwK-HVNuw6ZBJxUUcqjEKqWf9C4,708
49
+ rednote_cli/application/use_cases/note_get.py,sha256=Mn8WM-yFi25HCu6dLJEJN6VGZT4nmGAfzhfiBnEWbqU,636
50
+ rednote_cli/application/use_cases/note_search.py,sha256=hIhIcTijqXZqLusAWHNNeZTOxa0DcYNZQPMk9pf-t90,730
51
+ rednote_cli/application/use_cases/publish_note.py,sha256=vnkV5dAuBdAVpDkBT_BK4gvaDoRz_eJoztpSyq1IGcE,637
52
+ rednote_cli/application/use_cases/user_get.py,sha256=u_nUrUVqQXls6GjWmo8qeUoXTT1miv9jJZFDM0kKj7g,499
53
+ rednote_cli/application/use_cases/user_search.py,sha256=52UXf7Y0dplmOhwt_8brVHvUD5h6e-iE2K5bi20-j1M,360
54
+ rednote_cli/application/use_cases/user_self.py,sha256=Hqm5mxQiPQAFwWwBJV-KmMJy2W3Pqa-1ITq-Uf699-4,295
55
+ rednote_cli/cli/__init__.py,sha256=R2ng2cypzW3NzjJp6nvdhGqaOpJZtFKdJX-2-JcDAqA,25
56
+ rednote_cli/cli/__main__.py,sha256=G6b6UnEqnHpFP4ymxj7M-Ins6bhOWu6Jxr1nKUkJSE8,76
57
+ rednote_cli/cli/main.py,sha256=vw-iqahFeKFBT2fU-rPiarSwU537LVAi1UaxTnukIDw,5509
58
+ rednote_cli/cli/options.py,sha256=JolEufOXfAVKAjTQf5S117blySHggFY6QQYzO7JN3g8,280
59
+ rednote_cli/cli/runtime.py,sha256=OgwM_acGwdEmU_DBZK3HMHNquKRKNj8qdlOY2mFkz30,5296
60
+ rednote_cli/cli/utils.py,sha256=2M5LITUJMUHRUf5WyTT5iMdaHgRjKc2mQmdo7TQweOM,2086
61
+ rednote_cli/cli/commands/__init__.py,sha256=eMuQR40Ye6ei4XbISb4dO1BwFk5RRqKIKGMxrztVu9Y,28
62
+ rednote_cli/cli/commands/account.py,sha256=00lyl9AZIiZze_tNvzxbCksql9GUHDoEXj6oJZ2R3_w,6110
63
+ rednote_cli/cli/commands/doctor.py,sha256=5YrsNyWZzJwhP_nVQruA6FK8dsWdFnFPkp5sd-WNXfY,586
64
+ rednote_cli/cli/commands/init.py,sha256=sPhDCE3bGR9YC9q-D4sZnQW8dXZQeCURpf2FrpwosNY,659
65
+ rednote_cli/cli/commands/note.py,sha256=yMn5zyYidahFcjglXEfnfPR9C74bGRYb5IywXnrgDEo,3632
66
+ rednote_cli/cli/commands/publish.py,sha256=IJ5NyXd5c64a-gpjxZ83CuTVaNAuKpe-OLbfIz7YXk4,5298
67
+ rednote_cli/cli/commands/search.py,sha256=D4e_H8dtIkzWs6RUTGv6iWCaxL3ElqQXASJ-CjQqOMk,6598
68
+ rednote_cli/cli/commands/user.py,sha256=K4dD2FL_QcsdQANHLtNAOpi8htX4ozik457ByGjYLos,3694
69
+ rednote_cli/domain/__init__.py,sha256=tVRdTG5Li5EHNcD9TusatDQ1UYr0vluPIChCdvmPAOw,20
70
+ rednote_cli/domain/errors.py,sha256=PRICMjTmDqmIZtTdJNDz1pmJ_z7WkbwZgtbnHIJXVKE,1607
71
+ rednote_cli/domain/note_search_filters.py,sha256=LItDju91Ch6Wqe-51ANx6DMv74pUfv6HsOlraHy2C6I,4492
72
+ rednote_cli/infra/__init__.py,sha256=HzEYIjoXnkz_i_MHO2e0sIVYweUcRnl2RpyBiTbMObU,28
73
+ rednote_cli/infra/exit_codes.py,sha256=gpEkZeXn9CN4n8R3boLB-8Sne-3-ho621IUQlaQIvQk,833
74
+ rednote_cli/infra/logger.py,sha256=IUZEYAiJgmV3wdju-K6eY2PhIj6dzXDFOYS8sEwaDGo,276
75
+ rednote_cli/infra/paths.py,sha256=89q7V-r9bJCYtRxlJiTuDmY4RoxDXK0P8Fott_zdvdg,1019
76
+ rednote_cli/infra/platforms.py,sha256=_81vaMYNoRTWyqPn9m2hKsxu_JO4MFHW2aRWnYvzSA8,92
77
+ rednote_cli-0.1.0.dist-info/METADATA,sha256=d5lrYZd5BUZExq9ZeRWWIRXhE_EaSBuo6kz0voDxDsw,2840
78
+ rednote_cli-0.1.0.dist-info/WHEEL,sha256=YCfwYGOYMi5Jhw2fU4yNgwErybb2IX5PEwBKV4ZbdBo,91
79
+ rednote_cli-0.1.0.dist-info/entry_points.txt,sha256=QJwetsf8H1CUdZlty8f0xTt0JT21oLtxgwMgjiL1rCQ,57
80
+ rednote_cli-0.1.0.dist-info/top_level.txt,sha256=mabAHOBYApWTKFPJ8nDN4XLw81iuv9PXHfzhDnU6nfk,12
81
+ rednote_cli-0.1.0.dist-info/RECORD,,
@@ -0,0 +1,5 @@
1
+ Wheel-Version: 1.0
2
+ Generator: setuptools (82.0.0)
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
5
+
@@ -0,0 +1,2 @@
1
+ [console_scripts]
2
+ rednote-cli = rednote_cli.cli.main:run
@@ -0,0 +1 @@
1
+ rednote_cli