trailsnap-cli 0.3.8__tar.gz → 0.3.10__tar.gz

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 (24) hide show
  1. trailsnap_cli-0.3.10/PKG-INFO +320 -0
  2. trailsnap_cli-0.3.10/README.md +313 -0
  3. {trailsnap_cli-0.3.8 → trailsnap_cli-0.3.10}/pyproject.toml +1 -1
  4. {trailsnap_cli-0.3.8 → trailsnap_cli-0.3.10}/trailsnap/cli.py +12 -1
  5. {trailsnap_cli-0.3.8 → trailsnap_cli-0.3.10}/trailsnap/commands/albums.py +6 -4
  6. {trailsnap_cli-0.3.8 → trailsnap_cli-0.3.10}/trailsnap/commands/folders.py +5 -3
  7. {trailsnap_cli-0.3.8 → trailsnap_cli-0.3.10}/trailsnap/commands/locations.py +9 -8
  8. {trailsnap_cli-0.3.8 → trailsnap_cli-0.3.10}/trailsnap/commands/people.py +6 -7
  9. {trailsnap_cli-0.3.8 → trailsnap_cli-0.3.10}/trailsnap/commands/photos.py +14 -8
  10. {trailsnap_cli-0.3.8 → trailsnap_cli-0.3.10}/trailsnap/commands/tags.py +5 -3
  11. trailsnap_cli-0.3.10/trailsnap/output.py +198 -0
  12. {trailsnap_cli-0.3.8 → trailsnap_cli-0.3.10}/trailsnap/utils.py +9 -1
  13. trailsnap_cli-0.3.10/trailsnap_cli.egg-info/PKG-INFO +320 -0
  14. {trailsnap_cli-0.3.8 → trailsnap_cli-0.3.10}/trailsnap_cli.egg-info/SOURCES.txt +1 -0
  15. trailsnap_cli-0.3.8/PKG-INFO +0 -81
  16. trailsnap_cli-0.3.8/README.md +0 -74
  17. trailsnap_cli-0.3.8/trailsnap_cli.egg-info/PKG-INFO +0 -81
  18. {trailsnap_cli-0.3.8 → trailsnap_cli-0.3.10}/setup.cfg +0 -0
  19. {trailsnap_cli-0.3.8 → trailsnap_cli-0.3.10}/trailsnap/commands/__init__.py +0 -0
  20. {trailsnap_cli-0.3.8 → trailsnap_cli-0.3.10}/trailsnap/commands/config.py +0 -0
  21. {trailsnap_cli-0.3.8 → trailsnap_cli-0.3.10}/trailsnap/commands/medias.py +0 -0
  22. {trailsnap_cli-0.3.8 → trailsnap_cli-0.3.10}/trailsnap_cli.egg-info/dependency_links.txt +0 -0
  23. {trailsnap_cli-0.3.8 → trailsnap_cli-0.3.10}/trailsnap_cli.egg-info/entry_points.txt +0 -0
  24. {trailsnap_cli-0.3.8 → trailsnap_cli-0.3.10}/trailsnap_cli.egg-info/top_level.txt +0 -0
@@ -0,0 +1,320 @@
1
+ Metadata-Version: 2.4
2
+ Name: trailsnap-cli
3
+ Version: 0.3.10
4
+ Summary: TrailSnap Command Line Interface
5
+ Requires-Python: >=3.9
6
+ Description-Content-Type: text/markdown
7
+
8
+ # TrailSnap CLI 命令说明书
9
+
10
+ 本文档详细说明 TrailSnap CLI 命令行工具的所有可用命令、参数用法、功能描述及使用示例,适用于快速上手操作。命令结构遵循「主命令 + 子命令 + 参数」。
11
+
12
+ 核心说明:所有命令需在终端执行,格式统一为 `trailsnap <command> <subcommand> [options]`。涉及 API 交互的命令(如 photos、locations 等)需先通过 `config set` 配置 API 地址和 Token,否则会直接报错并退出。
13
+
14
+ ## 输出格式参数
15
+
16
+ 所有支持数据输出的命令均支持 `--format` 参数,可选值:
17
+
18
+ - `--format json`(默认):完整 JSON 响应
19
+ - `--format pretty`:人性化格式输出,树状结构展示
20
+ - `--format table`:易读表格格式
21
+ - `--format ndjson`:换行分隔 JSON(适合管道处理)
22
+ - `--format csv`:逗号分隔值(适合导入 Excel)
23
+
24
+ # 一、基础命令
25
+
26
+ ## 1.1 help - 显示帮助信息
27
+
28
+ 「功能」:显示所有可用命令、命令结构及各命令的核心参数,快速查阅命令用法。
29
+ 「格式」:`--help`
30
+ 「示例」:
31
+ ```bash
32
+ trailsnap --help
33
+ ```
34
+
35
+ # 二、配置命令
36
+
37
+ ## 2.1 config set - 配置API URL和Token
38
+
39
+ 「功能」:配置CLI工具与后端API的连接信息,包括API基础地址和Bearer凭证Token,是所有API交互类命令的前置操作。
40
+
41
+ 「格式」:`config set --url API地址 --token API凭证`
42
+
43
+ 「参数说明」:
44
+
45
+ - `--url`(必填):API基础地址,格式为http/https开头,例如:http://localhost:8000
46
+
47
+ - `--token`(必填):API访问凭证(Bearer Token),用于身份验证,需从后端获取。
48
+
49
+ 「示例」:
50
+
51
+ ```bash
52
+ trailsnap config set --url http://localhost:8000 --token eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
53
+ ```
54
+
55
+ 「输出说明」:配置成功后会输出配置文件保存路径(写入同目录 `.env`),例如:`配置已保存到 .../.env`。
56
+
57
+ # 三、照片管理命令
58
+
59
+ ## 3.1 photos - 照片管理主命令
60
+
61
+ 「功能」:包含照片列表查询、单张照片详情获取、照片删除三个核心子命令,所有子命令需先完成API配置。
62
+
63
+ ### 3.1.1 photos list - 查询照片列表
64
+
65
+ 「功能」:查询照片列表,支持分页与按相册/地点/设备信息过滤。返回结果为简化字段集合。
66
+
67
+ 「格式」:`photos list [--skip N] [--limit N] [--album-id 相册ID] [--city 城市] [--province 省份] [--make 品牌] [--model 型号] [--format json|pretty|table|ndjson|csv]`
68
+
69
+ 「参数说明」(支持组合筛选):
70
+
71
+ - `--skip`:跳过 N 张照片(默认 0)
72
+ - `--limit`:限制返回 N 张照片(默认 10)
73
+ - `--order_by`:排序字段,默认按值得回忆评分排序,可选值:quality_score(画面质量评分),memory_score(值得回忆评分),photo_time(拍摄时间)
74
+ - `--image-type`:按图片类型过滤照片,多个类型用逗号分隔,可选值:Camera(手机或相机拍摄)、Screenshot(截图)、Other(未知的其他类型)
75
+ - `--start-time`:按开始时间过滤照片,格式为 YYYY-MM-DD HH:MM:SS
76
+ - `--end-time`:按结束时间过滤照片,格式为 YYYY-MM-DD HH:MM:SS
77
+ - `--album-id`:按相册 ID 过滤,多个 ID 用逗号分隔
78
+ - `--people-id`:按人物 ID 过滤,多个 ID 用逗号分隔
79
+ - `--tag-id`:按标签 ID 过滤,多个 ID 用逗号分隔
80
+ - `--city`:按城市过滤,多个城市用逗号分隔(全称)
81
+ - `--province`:按省份过滤,多个省份用逗号分隔(全称)
82
+ - `--scene`:按景区过滤,多个景区用逗号分隔
83
+ - `--make`:按相机品牌过滤,多个品牌用逗号分隔
84
+ - `--model`:按相机型号过滤,多个型号用逗号分隔
85
+ - `--format`:输出格式(默认 json,可选:json、pretty、table、ndjson、csv)
86
+
87
+ 「返回值」:JSON 数组,每项包含 `id`、`filename`、`file_type`、`photo_time`
88
+
89
+ 「示例」:
90
+
91
+ ```bash
92
+ trailsnap photos list --limit 20 --city 西安市,上海市
93
+ trailsnap photos list --limit 20 --format pretty
94
+ ```
95
+
96
+ ### 3.1.2 photos info - 获取单张照片信息
97
+
98
+ 「功能」:获取指定 ID 照片的元数据信息与内容描述信息。
99
+
100
+ 「格式」:`photos info --photo-id 照片ID [--format json|pretty|table|ndjson|csv]`
101
+
102
+ 「参数说明」:
103
+
104
+ - `--photo-id`(必填):照片唯一ID,可通过photos list命令获取。
105
+ - `--format`:输出格式(默认 json,可选:json、pretty、table、ndjson、csv)
106
+
107
+ 「返回值」:JSON 对象,包含:
108
+
109
+ - `address`:照片详细拍摄地址(精确到街道)
110
+ - `albums`:所属相册信息
111
+ - `tags`:标签信息
112
+ - `faces_identities`:人物(面部识别身份)信息
113
+ - `description`:照片内容描述信息
114
+ - `description`:照片画面描述(若无则为空字符串)
115
+ - `memory_score`:照片值得回忆分数(0-100,100为值得回忆)
116
+ - `quality_score`:照片质量分数(0-100,100为最高质量)
117
+ - `narrative`:照片一句话文案(若无则为空字符串)
118
+
119
+ 「示例」:
120
+
121
+ ```bash
122
+ trailsnap photos info --photo-id 10001
123
+ trailsnap photos info --photo-id 10001 --format pretty
124
+ ```
125
+
126
+ ### 3.1.3 photos delete - 删除单张照片
127
+
128
+ 「功能」:删除指定ID的照片,删除后不可恢复(需谨慎操作)。
129
+
130
+ 「格式」:`photos delete --photo-id 照片ID`
131
+
132
+ 「参数说明」:
133
+
134
+ - `--photo-id`(必填):需删除的照片唯一ID。
135
+
136
+ 「示例」:
137
+
138
+ ```bash
139
+ trailsnap photos delete --photo-id 10001
140
+ ```
141
+
142
+ 「输出说明」:删除成功提示 `照片 <photo-id> 删除成功`,失败提示 `照片删除失败或不存在`。
143
+
144
+ # 四、分类标签命令
145
+
146
+ ## 4.1 tags list - 查询分类标签
147
+
148
+ 「功能」:查询分类标签列表,支持分页。
149
+
150
+ 「格式」:`tags list [--skip N] [--limit N] [--format json|pretty|table|ndjson|csv]`
151
+
152
+ 「参数说明」:
153
+
154
+ - `--skip`:跳过 N 个记录(默认 0)
155
+ - `--limit`:限制返回 N 个记录(默认 100)
156
+ - `--format`:输出格式(默认 json,可选:json、pretty、table、ndjson、csv)
157
+
158
+ 「示例」:
159
+
160
+ ```bash
161
+ trailsnap tags list
162
+ trailsnap tags list --format table
163
+ ```
164
+
165
+ 「输出说明」:输出 JSON 数组,每项包含 `id`、`name`(tag_name)、`count`。
166
+
167
+ # 五、相册管理命令
168
+
169
+ ## 5.1 albums list - 查询相册列表
170
+
171
+ 「功能」:查询相册列表,支持分页。
172
+
173
+ 「格式」:`albums list [--skip N] [--limit N] [--format json|pretty|table|ndjson|csv]`
174
+
175
+ 「参数说明」:
176
+
177
+ - `--skip`:跳过 N 个相册(默认 0)
178
+ - `--limit`:限制返回 N 个相册(默认 100)
179
+ - `--format`:输出格式(默认 json,可选:json、pretty、table、ndjson、csv)
180
+
181
+ 「输出说明」:输出 JSON 数组,每项包含 `id`、`name`、`count`(num_photos)、`description`、`condition`、`type`。
182
+
183
+ 「示例」:
184
+
185
+ ```bash
186
+ trailsnap albums list
187
+ trailsnap albums list --format pretty
188
+ ```
189
+
190
+ # 六、位置相关命令
191
+
192
+ ## 6.1 locations - 位置查询主命令
193
+
194
+ 「功能」:包含位置分布查询、足迹时间轴查询两个子命令,基于照片的GPS信息统计。
195
+
196
+ ### 6.1.1 locations list - 查询位置分布
197
+
198
+ 「功能」:查询位置分布,不含时间信息(地点名、照片数量)。支持按层级分组与日期范围过滤。
199
+
200
+ 「格式」:`locations list [--level city|province|district|scene] [--skip N] [--limit N] [--start-date YYYY-MM-DD] [--end-date YYYY-MM-DD] [--format json|pretty|table|ndjson|csv]`
201
+
202
+ 「参数说明」:
203
+
204
+ - `--level`:分组级别(默认 city,可选:city、province、district、scene)
205
+ - `--skip`:跳过 N 个位置(默认 0)
206
+ - `--limit`:限制返回 N 个位置(默认 100)
207
+ - `--start-date`:可选,开始日期(YYYY-MM-DD)
208
+ - `--end-date`:可选,结束日期(YYYY-MM-DD)
209
+ - `--format`:输出格式(默认 json,可选:json、pretty、table、ndjson、csv)
210
+
211
+ 「返回值」:JSON 数组,每项包含 `name`、`count`
212
+
213
+ 「示例」:
214
+
215
+ ```bash
216
+ trailsnap locations list
217
+ trailsnap locations list --format table
218
+ ```
219
+
220
+ ### 6.1.2 locations timeline - 查询足迹时间轴
221
+
222
+ 「功能」:查询足迹时间轴列表,按时间段和地点分组(开始日期、结束日期、地点名、照片数量)。支持按层级分组与日期范围过滤。
223
+
224
+ 「格式」:`locations timeline [--level city|province|district|scene] [--skip N] [--limit N] [--start-date YYYY-MM-DD] [--end-date YYYY-MM-DD] [--format json|pretty|table|ndjson|csv]`
225
+
226
+ 「参数说明」:
227
+
228
+ - `--level`:分组级别(默认 city,可选:city、province、district、scene)
229
+ - `--skip`:跳过 N 个位置(默认 0)
230
+ - `--limit`:限制返回 N 个位置(默认 100)
231
+ - `--start-date`:可选,开始日期(YYYY-MM-DD)
232
+ - `--end-date`:可选,结束日期(YYYY-MM-DD)
233
+ - `--format`:输出格式(默认 json,可选:json、pretty、table、ndjson、csv)
234
+
235
+ 「返回值」:JSON 数组,每项包含 `startDate`、`endDate`、`locationName`、`count`
236
+
237
+ 「示例」:
238
+
239
+ ```bash
240
+ trailsnap locations timeline --level city --start-date 2025-01-01 --end-date 2025-06-30
241
+ trailsnap locations timeline --format csv
242
+ ```
243
+
244
+ # 七、人物识别命令
245
+
246
+ ## 7.1 people list - 查询已识别的人物/面孔
247
+
248
+ 「功能」:查询人物(面部识别身份)列表,支持按类型过滤。
249
+
250
+ 「格式」:`people list [--limit N] [--types named,unnamed,hidden] [--format json|pretty|table|ndjson|csv]`
251
+
252
+ 「参数说明」:
253
+
254
+ - `--limit`:返回的记录数(默认 100)
255
+ - `--types`:查询类型,逗号分隔,默认 `named`;可选值:`named`、`unnamed`、`hidden`
256
+ - `--format`:输出格式(默认 json,可选:json、pretty、table、ndjson、csv)
257
+
258
+ 「输出说明」:输出 JSON 数组,每项包含 `id`、`name`(identity_name)、`tags`、`description`、`face_count`。
259
+
260
+ 「示例」:
261
+
262
+ ```bash
263
+ trailsnap people list
264
+ trailsnap people list --format ndjson
265
+ ```
266
+
267
+ # 八、存储文件夹命令
268
+
269
+ ## 8.1 folders list - 查询挂载的存储文件夹列表
270
+
271
+ 「功能」:查询系统中已挂载的存储目录信息。
272
+
273
+ 「格式」:`folders list [--format json|pretty|table|ndjson|csv]`
274
+
275
+ 「参数说明」:
276
+
277
+ - `--format`:输出格式(默认 json,可选:json、pretty、table、ndjson、csv)
278
+
279
+ 「输出说明」:直接输出后端接口返回的 JSON(字段结构以服务端为准)。
280
+
281
+ 「示例」:
282
+
283
+ ```bash
284
+ trailsnap folders list
285
+ trailsnap folders list --format pretty
286
+ ```
287
+
288
+ # 九、媒体文件命令
289
+
290
+ ## 9.1 medias get - 获取照片的媒体文件或URL
291
+
292
+ 「功能」:获取指定照片的媒体内容/访问地址,支持输出 URL、base64、或保存到本地文件。
293
+
294
+ 「格式」:`medias get [--photo-id 照片ID] [--size small|medium|large] [--format url|base64|file] [--output 文件路径]`
295
+
296
+ 「参数说明」:
297
+
298
+ - `--photo-id`:照片 ID(默认 100)
299
+ - `--size`:照片质量/尺寸(默认 medium,可选:small、medium、large)
300
+ - `--format`:输出格式(默认 url(可以把链接插入到HTML页面或者markdown文件),可选:url、base64、file)
301
+ - `--output`:输出文件路径(仅当 `--format file` 时必填)
302
+
303
+ 「示例」:
304
+
305
+ ```bash
306
+ # 输出 URL(large 输出原图URL,small/medium 输出缩略图URL)
307
+ trailsnap medias get --photo-id 10001 --format url --size large
308
+
309
+ # base64 输出(缩略图base64编码)
310
+ trailsnap medias get --photo-id 10001 --format base64 --size medium
311
+
312
+ # 保存到本地文件
313
+ trailsnap medias get --photo-id 10001 --format file --output .\photo_10001.jpg
314
+ ```
315
+
316
+ # 十、注意事项
317
+
318
+ - 所有涉及 API 交互的命令(photos、locations、people 等),必须先执行 `config set` 配置 API URL 和 Token,否则会提示 `错误: API URL 和 Token 未配置,请先运行 'config' 命令。` 并退出。
319
+
320
+ - 所有命令可通过 `--help` 查询详细用法,若参数错误,会提示具体错误信息及正确格式。
@@ -0,0 +1,313 @@
1
+ # TrailSnap CLI 命令说明书
2
+
3
+ 本文档详细说明 TrailSnap CLI 命令行工具的所有可用命令、参数用法、功能描述及使用示例,适用于快速上手操作。命令结构遵循「主命令 + 子命令 + 参数」。
4
+
5
+ 核心说明:所有命令需在终端执行,格式统一为 `trailsnap <command> <subcommand> [options]`。涉及 API 交互的命令(如 photos、locations 等)需先通过 `config set` 配置 API 地址和 Token,否则会直接报错并退出。
6
+
7
+ ## 输出格式参数
8
+
9
+ 所有支持数据输出的命令均支持 `--format` 参数,可选值:
10
+
11
+ - `--format json`(默认):完整 JSON 响应
12
+ - `--format pretty`:人性化格式输出,树状结构展示
13
+ - `--format table`:易读表格格式
14
+ - `--format ndjson`:换行分隔 JSON(适合管道处理)
15
+ - `--format csv`:逗号分隔值(适合导入 Excel)
16
+
17
+ # 一、基础命令
18
+
19
+ ## 1.1 help - 显示帮助信息
20
+
21
+ 「功能」:显示所有可用命令、命令结构及各命令的核心参数,快速查阅命令用法。
22
+ 「格式」:`--help`
23
+ 「示例」:
24
+ ```bash
25
+ trailsnap --help
26
+ ```
27
+
28
+ # 二、配置命令
29
+
30
+ ## 2.1 config set - 配置API URL和Token
31
+
32
+ 「功能」:配置CLI工具与后端API的连接信息,包括API基础地址和Bearer凭证Token,是所有API交互类命令的前置操作。
33
+
34
+ 「格式」:`config set --url API地址 --token API凭证`
35
+
36
+ 「参数说明」:
37
+
38
+ - `--url`(必填):API基础地址,格式为http/https开头,例如:http://localhost:8000
39
+
40
+ - `--token`(必填):API访问凭证(Bearer Token),用于身份验证,需从后端获取。
41
+
42
+ 「示例」:
43
+
44
+ ```bash
45
+ trailsnap config set --url http://localhost:8000 --token eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
46
+ ```
47
+
48
+ 「输出说明」:配置成功后会输出配置文件保存路径(写入同目录 `.env`),例如:`配置已保存到 .../.env`。
49
+
50
+ # 三、照片管理命令
51
+
52
+ ## 3.1 photos - 照片管理主命令
53
+
54
+ 「功能」:包含照片列表查询、单张照片详情获取、照片删除三个核心子命令,所有子命令需先完成API配置。
55
+
56
+ ### 3.1.1 photos list - 查询照片列表
57
+
58
+ 「功能」:查询照片列表,支持分页与按相册/地点/设备信息过滤。返回结果为简化字段集合。
59
+
60
+ 「格式」:`photos list [--skip N] [--limit N] [--album-id 相册ID] [--city 城市] [--province 省份] [--make 品牌] [--model 型号] [--format json|pretty|table|ndjson|csv]`
61
+
62
+ 「参数说明」(支持组合筛选):
63
+
64
+ - `--skip`:跳过 N 张照片(默认 0)
65
+ - `--limit`:限制返回 N 张照片(默认 10)
66
+ - `--order_by`:排序字段,默认按值得回忆评分排序,可选值:quality_score(画面质量评分),memory_score(值得回忆评分),photo_time(拍摄时间)
67
+ - `--image-type`:按图片类型过滤照片,多个类型用逗号分隔,可选值:Camera(手机或相机拍摄)、Screenshot(截图)、Other(未知的其他类型)
68
+ - `--start-time`:按开始时间过滤照片,格式为 YYYY-MM-DD HH:MM:SS
69
+ - `--end-time`:按结束时间过滤照片,格式为 YYYY-MM-DD HH:MM:SS
70
+ - `--album-id`:按相册 ID 过滤,多个 ID 用逗号分隔
71
+ - `--people-id`:按人物 ID 过滤,多个 ID 用逗号分隔
72
+ - `--tag-id`:按标签 ID 过滤,多个 ID 用逗号分隔
73
+ - `--city`:按城市过滤,多个城市用逗号分隔(全称)
74
+ - `--province`:按省份过滤,多个省份用逗号分隔(全称)
75
+ - `--scene`:按景区过滤,多个景区用逗号分隔
76
+ - `--make`:按相机品牌过滤,多个品牌用逗号分隔
77
+ - `--model`:按相机型号过滤,多个型号用逗号分隔
78
+ - `--format`:输出格式(默认 json,可选:json、pretty、table、ndjson、csv)
79
+
80
+ 「返回值」:JSON 数组,每项包含 `id`、`filename`、`file_type`、`photo_time`
81
+
82
+ 「示例」:
83
+
84
+ ```bash
85
+ trailsnap photos list --limit 20 --city 西安市,上海市
86
+ trailsnap photos list --limit 20 --format pretty
87
+ ```
88
+
89
+ ### 3.1.2 photos info - 获取单张照片信息
90
+
91
+ 「功能」:获取指定 ID 照片的元数据信息与内容描述信息。
92
+
93
+ 「格式」:`photos info --photo-id 照片ID [--format json|pretty|table|ndjson|csv]`
94
+
95
+ 「参数说明」:
96
+
97
+ - `--photo-id`(必填):照片唯一ID,可通过photos list命令获取。
98
+ - `--format`:输出格式(默认 json,可选:json、pretty、table、ndjson、csv)
99
+
100
+ 「返回值」:JSON 对象,包含:
101
+
102
+ - `address`:照片详细拍摄地址(精确到街道)
103
+ - `albums`:所属相册信息
104
+ - `tags`:标签信息
105
+ - `faces_identities`:人物(面部识别身份)信息
106
+ - `description`:照片内容描述信息
107
+ - `description`:照片画面描述(若无则为空字符串)
108
+ - `memory_score`:照片值得回忆分数(0-100,100为值得回忆)
109
+ - `quality_score`:照片质量分数(0-100,100为最高质量)
110
+ - `narrative`:照片一句话文案(若无则为空字符串)
111
+
112
+ 「示例」:
113
+
114
+ ```bash
115
+ trailsnap photos info --photo-id 10001
116
+ trailsnap photos info --photo-id 10001 --format pretty
117
+ ```
118
+
119
+ ### 3.1.3 photos delete - 删除单张照片
120
+
121
+ 「功能」:删除指定ID的照片,删除后不可恢复(需谨慎操作)。
122
+
123
+ 「格式」:`photos delete --photo-id 照片ID`
124
+
125
+ 「参数说明」:
126
+
127
+ - `--photo-id`(必填):需删除的照片唯一ID。
128
+
129
+ 「示例」:
130
+
131
+ ```bash
132
+ trailsnap photos delete --photo-id 10001
133
+ ```
134
+
135
+ 「输出说明」:删除成功提示 `照片 <photo-id> 删除成功`,失败提示 `照片删除失败或不存在`。
136
+
137
+ # 四、分类标签命令
138
+
139
+ ## 4.1 tags list - 查询分类标签
140
+
141
+ 「功能」:查询分类标签列表,支持分页。
142
+
143
+ 「格式」:`tags list [--skip N] [--limit N] [--format json|pretty|table|ndjson|csv]`
144
+
145
+ 「参数说明」:
146
+
147
+ - `--skip`:跳过 N 个记录(默认 0)
148
+ - `--limit`:限制返回 N 个记录(默认 100)
149
+ - `--format`:输出格式(默认 json,可选:json、pretty、table、ndjson、csv)
150
+
151
+ 「示例」:
152
+
153
+ ```bash
154
+ trailsnap tags list
155
+ trailsnap tags list --format table
156
+ ```
157
+
158
+ 「输出说明」:输出 JSON 数组,每项包含 `id`、`name`(tag_name)、`count`。
159
+
160
+ # 五、相册管理命令
161
+
162
+ ## 5.1 albums list - 查询相册列表
163
+
164
+ 「功能」:查询相册列表,支持分页。
165
+
166
+ 「格式」:`albums list [--skip N] [--limit N] [--format json|pretty|table|ndjson|csv]`
167
+
168
+ 「参数说明」:
169
+
170
+ - `--skip`:跳过 N 个相册(默认 0)
171
+ - `--limit`:限制返回 N 个相册(默认 100)
172
+ - `--format`:输出格式(默认 json,可选:json、pretty、table、ndjson、csv)
173
+
174
+ 「输出说明」:输出 JSON 数组,每项包含 `id`、`name`、`count`(num_photos)、`description`、`condition`、`type`。
175
+
176
+ 「示例」:
177
+
178
+ ```bash
179
+ trailsnap albums list
180
+ trailsnap albums list --format pretty
181
+ ```
182
+
183
+ # 六、位置相关命令
184
+
185
+ ## 6.1 locations - 位置查询主命令
186
+
187
+ 「功能」:包含位置分布查询、足迹时间轴查询两个子命令,基于照片的GPS信息统计。
188
+
189
+ ### 6.1.1 locations list - 查询位置分布
190
+
191
+ 「功能」:查询位置分布,不含时间信息(地点名、照片数量)。支持按层级分组与日期范围过滤。
192
+
193
+ 「格式」:`locations list [--level city|province|district|scene] [--skip N] [--limit N] [--start-date YYYY-MM-DD] [--end-date YYYY-MM-DD] [--format json|pretty|table|ndjson|csv]`
194
+
195
+ 「参数说明」:
196
+
197
+ - `--level`:分组级别(默认 city,可选:city、province、district、scene)
198
+ - `--skip`:跳过 N 个位置(默认 0)
199
+ - `--limit`:限制返回 N 个位置(默认 100)
200
+ - `--start-date`:可选,开始日期(YYYY-MM-DD)
201
+ - `--end-date`:可选,结束日期(YYYY-MM-DD)
202
+ - `--format`:输出格式(默认 json,可选:json、pretty、table、ndjson、csv)
203
+
204
+ 「返回值」:JSON 数组,每项包含 `name`、`count`
205
+
206
+ 「示例」:
207
+
208
+ ```bash
209
+ trailsnap locations list
210
+ trailsnap locations list --format table
211
+ ```
212
+
213
+ ### 6.1.2 locations timeline - 查询足迹时间轴
214
+
215
+ 「功能」:查询足迹时间轴列表,按时间段和地点分组(开始日期、结束日期、地点名、照片数量)。支持按层级分组与日期范围过滤。
216
+
217
+ 「格式」:`locations timeline [--level city|province|district|scene] [--skip N] [--limit N] [--start-date YYYY-MM-DD] [--end-date YYYY-MM-DD] [--format json|pretty|table|ndjson|csv]`
218
+
219
+ 「参数说明」:
220
+
221
+ - `--level`:分组级别(默认 city,可选:city、province、district、scene)
222
+ - `--skip`:跳过 N 个位置(默认 0)
223
+ - `--limit`:限制返回 N 个位置(默认 100)
224
+ - `--start-date`:可选,开始日期(YYYY-MM-DD)
225
+ - `--end-date`:可选,结束日期(YYYY-MM-DD)
226
+ - `--format`:输出格式(默认 json,可选:json、pretty、table、ndjson、csv)
227
+
228
+ 「返回值」:JSON 数组,每项包含 `startDate`、`endDate`、`locationName`、`count`
229
+
230
+ 「示例」:
231
+
232
+ ```bash
233
+ trailsnap locations timeline --level city --start-date 2025-01-01 --end-date 2025-06-30
234
+ trailsnap locations timeline --format csv
235
+ ```
236
+
237
+ # 七、人物识别命令
238
+
239
+ ## 7.1 people list - 查询已识别的人物/面孔
240
+
241
+ 「功能」:查询人物(面部识别身份)列表,支持按类型过滤。
242
+
243
+ 「格式」:`people list [--limit N] [--types named,unnamed,hidden] [--format json|pretty|table|ndjson|csv]`
244
+
245
+ 「参数说明」:
246
+
247
+ - `--limit`:返回的记录数(默认 100)
248
+ - `--types`:查询类型,逗号分隔,默认 `named`;可选值:`named`、`unnamed`、`hidden`
249
+ - `--format`:输出格式(默认 json,可选:json、pretty、table、ndjson、csv)
250
+
251
+ 「输出说明」:输出 JSON 数组,每项包含 `id`、`name`(identity_name)、`tags`、`description`、`face_count`。
252
+
253
+ 「示例」:
254
+
255
+ ```bash
256
+ trailsnap people list
257
+ trailsnap people list --format ndjson
258
+ ```
259
+
260
+ # 八、存储文件夹命令
261
+
262
+ ## 8.1 folders list - 查询挂载的存储文件夹列表
263
+
264
+ 「功能」:查询系统中已挂载的存储目录信息。
265
+
266
+ 「格式」:`folders list [--format json|pretty|table|ndjson|csv]`
267
+
268
+ 「参数说明」:
269
+
270
+ - `--format`:输出格式(默认 json,可选:json、pretty、table、ndjson、csv)
271
+
272
+ 「输出说明」:直接输出后端接口返回的 JSON(字段结构以服务端为准)。
273
+
274
+ 「示例」:
275
+
276
+ ```bash
277
+ trailsnap folders list
278
+ trailsnap folders list --format pretty
279
+ ```
280
+
281
+ # 九、媒体文件命令
282
+
283
+ ## 9.1 medias get - 获取照片的媒体文件或URL
284
+
285
+ 「功能」:获取指定照片的媒体内容/访问地址,支持输出 URL、base64、或保存到本地文件。
286
+
287
+ 「格式」:`medias get [--photo-id 照片ID] [--size small|medium|large] [--format url|base64|file] [--output 文件路径]`
288
+
289
+ 「参数说明」:
290
+
291
+ - `--photo-id`:照片 ID(默认 100)
292
+ - `--size`:照片质量/尺寸(默认 medium,可选:small、medium、large)
293
+ - `--format`:输出格式(默认 url(可以把链接插入到HTML页面或者markdown文件),可选:url、base64、file)
294
+ - `--output`:输出文件路径(仅当 `--format file` 时必填)
295
+
296
+ 「示例」:
297
+
298
+ ```bash
299
+ # 输出 URL(large 输出原图URL,small/medium 输出缩略图URL)
300
+ trailsnap medias get --photo-id 10001 --format url --size large
301
+
302
+ # base64 输出(缩略图base64编码)
303
+ trailsnap medias get --photo-id 10001 --format base64 --size medium
304
+
305
+ # 保存到本地文件
306
+ trailsnap medias get --photo-id 10001 --format file --output .\photo_10001.jpg
307
+ ```
308
+
309
+ # 十、注意事项
310
+
311
+ - 所有涉及 API 交互的命令(photos、locations、people 等),必须先执行 `config set` 配置 API URL 和 Token,否则会提示 `错误: API URL 和 Token 未配置,请先运行 'config' 命令。` 并退出。
312
+
313
+ - 所有命令可通过 `--help` 查询详细用法,若参数错误,会提示具体错误信息及正确格式。
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "trailsnap-cli"
7
- version = "0.3.8"
7
+ version = "0.3.10"
8
8
  description = "TrailSnap Command Line Interface"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.9"
@@ -6,8 +6,9 @@ from pathlib import Path
6
6
  sys.path.insert(0, str(Path(__file__).parent))
7
7
 
8
8
  from commands import config, photos, tags, albums, locations, people, folders, medias
9
+ from output import set_formatter, OutputFormatter
9
10
 
10
- VERSION = "0.3.8"
11
+ VERSION = "0.3.10"
11
12
 
12
13
  def main():
13
14
  if hasattr(sys.stdout, "reconfigure"):
@@ -20,6 +21,13 @@ def main():
20
21
  subparsers.required = True
21
22
 
22
23
  parser.add_argument("-v", "--version", action="version", version=VERSION)
24
+ parser.add_argument(
25
+ "--format",
26
+ type=str,
27
+ default="json",
28
+ choices=OutputFormatter.SUPPORTED_FORMATS,
29
+ help="输出格式: json (完整JSON,默认), pretty (人性化), table (表格), ndjson (换行分隔JSON), csv (逗号分隔值)"
30
+ )
23
31
 
24
32
  # 注册各个子命令
25
33
  config.setup_parser(subparsers)
@@ -33,6 +41,9 @@ def main():
33
41
 
34
42
  args = parser.parse_args()
35
43
 
44
+ # 设置全局输出格式
45
+ set_formatter(args.format)
46
+
36
47
  # 执行对应的命令处理函数
37
48
  if hasattr(args, "func"):
38
49
  args.func(args)