p123client 0.0.6.9.2__py3-none-any.whl → 0.0.6.9.3__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.
p123client/client.py CHANGED
@@ -5577,7 +5577,7 @@ class P123Client(P123OpenClient):
5577
5577
 
5578
5578
  - operation: bool = <default>
5579
5579
  - operatePlace: int = <default>
5580
- - RequestSource: int = <default>
5580
+ - RequestSource: int = <default> 💡 浏览器中,在同步空间中为 1
5581
5581
  """
5582
5582
  if isinstance(payload, (int, str)):
5583
5583
  payload = {"fileTrashInfoList": [{"FileId": payload}]}
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: p123client
3
- Version: 0.0.6.9.2
3
+ Version: 0.0.6.9.3
4
4
  Summary: Python 123 webdisk client.
5
5
  Home-page: https://github.com/ChenyangGao/p123client
6
6
  License: MIT
@@ -45,7 +45,7 @@ Description-Content-Type: text/markdown
45
45
  ![PyPI - Format](https://img.shields.io/pypi/format/p123client)
46
46
  ![PyPI - Status](https://img.shields.io/pypi/status/p123client)
47
47
 
48
- ## 安装
48
+ ## 0. 安装
49
49
 
50
50
  你可以从 [pypi](https://pypi.org/project/p123client/) 安装最新版本
51
51
 
@@ -53,9 +53,7 @@ Description-Content-Type: text/markdown
53
53
  pip install -U p123client
54
54
  ```
55
55
 
56
- ## 入门介绍
57
-
58
- ### 1. 导入模块和创建实例
56
+ ## 1. 导入模块和创建实例
59
57
 
60
58
  导入模块
61
59
 
@@ -63,7 +61,7 @@ pip install -U p123client
63
61
  from p123client import P123Client
64
62
  ```
65
63
 
66
- 创建客户端对象,需要传入 JWT <kbd>token</kbd>
64
+ 创建客户端对象,需要传入 JWT <kbd>token</kbd>,也就是 `access_token`
67
65
 
68
66
  ```python
69
67
  token = "..."
@@ -78,7 +76,26 @@ password = "..." # 密码
78
76
  client = P123Client(passport, password)
79
77
  ```
80
78
 
81
- ### 2. 接口调用
79
+ 它的这个 <kbd>token</kbd>,就包含了有关信息
80
+
81
+ ```python
82
+ from base64 import b64decode
83
+ from json import loads
84
+
85
+ token = client.token
86
+
87
+ method, user_info, sign = token.split(".", 2)
88
+ print("JWT 算法:", loads(b64decode(method)))
89
+ print("用户信息:", loads(b64decode(user_info+"==")))
90
+ ```
91
+
92
+ 当你需要刷新此 <kbd>token</kbd> 时:
93
+
94
+ - 要么利用另一个 `refresh_token`
95
+ - 要么直接用这个 <kbd>token</kbd> 授权一次扫码,即可获得新的 <kbd>token</kbd>
96
+ - 要么重新用账号和密码登录
97
+
98
+ ## 2. 接口调用
82
99
 
83
100
  所有需要直接或间接执行 HTTP 请求的接口,都有同步和异步的调用方式,且默认是采用 POST 发送 JSON 请求数据
84
101
 
@@ -177,7 +194,7 @@ class MyCustom123Client(P123Client):
177
194
  )
178
195
  ```
179
196
 
180
- ### 3. 检查响应
197
+ ## 3. 检查响应
181
198
 
182
199
  接口被调用后,如果返回的是 dict 类型的数据(说明原本是 JSON),则可以用 `p123client.check_response` 执行检查。首先会查看其中名为 "code" 的键的对应值,如果为 0 或 200 或者不存在,则原样返回被检查的数据;否则,抛出一个 `p123client.P123OSError` 的实例。
183
200
 
@@ -190,7 +207,7 @@ data = check_response(client.method(payload))
190
207
  data = check_response(await client.method(payload, async_=True))
191
208
  ```
192
209
 
193
- ### 4. 辅助工具
210
+ ## 4. 辅助工具
194
211
 
195
212
  一些简单的封装工具可能是必要的,特别是那种实现起来代码量比较少,可以封装成单个函数的。我把平常使用过程中,积累的一些经验具体化为一组工具函数。这些工具函数分别有着不同的功能,如果组合起来使用,或许能解决很多问题。
196
213
 
@@ -198,7 +215,9 @@ data = check_response(await client.method(payload, async_=True))
198
215
  from p123client import tool
199
216
  ```
200
217
 
201
- #### 1. 创建自定义 uri
218
+ ## 5. 学习案例
219
+
220
+ ### 1. 创建自定义 uri
202
221
 
203
222
  ```python
204
223
  from p123client import P123Client
@@ -212,7 +231,7 @@ file_id = 15688945
212
231
  print(make_uri(client, file_id))
213
232
  ```
214
233
 
215
- #### 2. 由自定义 uri 转存文件到你的网盘
234
+ ### 2. 由自定义 uri 转存文件到你的网盘
216
235
 
217
236
  ```python
218
237
  from p123client import P123Client
@@ -225,7 +244,7 @@ uri = "123://torrentgalaxy.db|1976025090|582aa8bfb0ad8e6f512d9661f6243bdd"
225
244
  print(upload_uri(client, uri, duplicate=1))
226
245
  ```
227
246
 
228
- #### 3. 由自定义 uri 获取下载直链
247
+ ### 3. 由自定义 uri 获取下载直链
229
248
 
230
249
  ```python
231
250
  from p123client import P123Client
@@ -240,7 +259,7 @@ print(get_downurl(client, "123://torrentgalaxy.db|1976025090|582aa8bfb0ad8e6f512
240
259
  print(get_downurl(client, "123://torrentgalaxy.db|1976025090|582aa8bfb0ad8e6f512d9661f6243bdd"))
241
260
  ```
242
261
 
243
- #### 4. 直链服务
262
+ ### 4. 直链服务
244
263
 
245
264
  需要先安装 [fastapi](https://pypi.org/project/fastapi/)
246
265
 
@@ -289,9 +308,11 @@ if __name__ == "__main__":
289
308
  run(app, host="0.0.0.0", port=8123)
290
309
  ```
291
310
 
292
- #### 5. 遍历文件列表
311
+ ### 5. 遍历文件列表
312
+
313
+ 导出的文件信息中,有个 `"uri"`,表示文件的自定义链接,前面以 `123://` 开头,你可以替换成 302 服务的地址,例如 `http://localhost:8123/`
293
314
 
294
- **遍历网盘中的文件列表**
315
+ #### 1. 遍历网盘中的文件列表
295
316
 
296
317
  ```python
297
318
  from p123client import P123Client
@@ -300,21 +321,87 @@ from p123client.tool import iterdir
300
321
  # TODO: 改成你自己的账户和密码
301
322
  client = P123Client(passport="手机号或邮箱", password="登录密码")
302
323
 
303
- for info in iterdir(client, parent_id=0, max_depth=-1, predicate=lambda a: not a["is_dir"]):
324
+ for info in iterdir(client, parent_id=0, max_depth=-1):
304
325
  print(info)
305
326
  ```
306
327
 
307
- **遍历分享中的文件列表(无需登录)**
328
+ #### 2. 遍历分享中的文件列表,不含目录
308
329
 
309
330
  ```python
310
331
  from p123client.tool import share_iterdir
311
332
 
312
- # TODO: 分享码
313
- share_key = "g0n0Vv-2sbI"
314
- # TODO: 密码
315
- share_pwd = ""
316
-
317
- for info in share_iterdir(share_key, share_pwd, parent_id=0, max_depth=-1, predicate=lambda a: not a["is_dir"]):
333
+ # NOTE: 无需登录
334
+ for info in share_iterdir(
335
+ "https://www.123684.com/s/oec7Vv-CIYWh?提取码:ZY4K",
336
+ max_depth=-1,
337
+ predicate=lambda a: not a["is_dir"],
338
+ ):
318
339
  print(info)
319
340
  ```
320
341
 
342
+ #### 3. 导出分享中的文件列表到本地 .json 文件
343
+
344
+ ```python
345
+ from orjson import dumps
346
+ from p123client.tool import share_iterdir
347
+
348
+ def export_share_files_json(
349
+ link: str,
350
+ path: str = "",
351
+ cooldown: float = 0,
352
+ ):
353
+ """把分享链接中的文件列表导出到 json 文件
354
+
355
+ :param link: 分享链接,可以包含提取码
356
+ :param path: 保存的路径,如果不提供则自动确定
357
+ :param cooldown: 两次调用之间,冷却的时间(用两次调用开始时的时间差,而不是一次完成到下一次开始的时间差)
358
+ """
359
+ print("< 将拉取:", link)
360
+ ls: list[dict] = []
361
+ for i, a in enumerate(share_iterdir(link, max_depth=-1, cooldown=cooldown), 1):
362
+ ls.append(a)
363
+ print(i, a)
364
+ if ls:
365
+ info = ls[0]
366
+ if not path:
367
+ suffix = f"@{info['ShareKey']},{info['SharePwd']}.json"
368
+ path = f"{info['name'][:255-len(suffix)]}{suffix}"
369
+ open(path, "wb").write(dumps(ls))
370
+ print()
371
+ print("> 已拉取:", link)
372
+ print("> 已保存:", path)
373
+
374
+ export_share_files("https://www.123684.com/s/oec7Vv-CIYWh?提取码:ZY4K")
375
+ ```
376
+
377
+ ### 6. 最新的操作记录
378
+
379
+ 在网盘中,你可以按更新时间逆序查询,即可得到最新上传的文件列表
380
+
381
+ ```python
382
+ client.fs_list_new({
383
+ "orderBy": "update_time",
384
+ "orderDirection": "desc",
385
+ "SearchData": ".",
386
+ })
387
+ ```
388
+
389
+ 更一般的,你可以在[同步空间](https://www.123pan.com/SynchronousSpace/main)中执行文件操作。
390
+
391
+ 而在拉取文件列表时,需要指定
392
+
393
+ ```python
394
+ client.fs_list_new({
395
+ "operateType": "SyncSpacePage",
396
+ "event": "syncFileList",
397
+ "RequestSource": 1,
398
+ })
399
+ ```
400
+
401
+ 同步空间中的增删改操作都有[操作记录](https://www.123pan.com/SynchronousSpace/record),你可以用接口
402
+
403
+ ```python
404
+ client.fs_sync_log()
405
+ ```
406
+
407
+
@@ -1,12 +1,12 @@
1
1
  LICENSE,sha256=o5242_N2TgDsWwFhPn7yr8YJNF7XsJM5NxUMtcT97bc,1100
2
2
  p123client/__init__.py,sha256=gfUum-q3f_XuXOk2HpArDAIxAlscZm8Fau1kiNkNFpg,214
3
- p123client/client.py,sha256=FYb3ZmYN9reFJn9g5eO0s28ckEd4zi1UxdN2HF9-CeE,258851
3
+ p123client/client.py,sha256=MSKZU5zsxATZquvhddHsugMFMMBibM-jzbqU_NnZ520,258895
4
4
  p123client/const.py,sha256=T17OzPQrnIG6w_Hzjc8TF_fFMKa-hQMSn1gff8pVcBc,56
5
5
  p123client/exception.py,sha256=020xGo8WQmGCJz1UzNg9oFzpEvToQcgTye0s6lkFASQ,1540
6
6
  p123client/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
7
7
  p123client/tool/__init__.py,sha256=YAIdp-xJ-oSXu6yDtOZGbUEvlE0eW0PV8h8fqlFMkiQ,18819
8
8
  p123client/type.py,sha256=T17OzPQrnIG6w_Hzjc8TF_fFMKa-hQMSn1gff8pVcBc,56
9
- p123client-0.0.6.9.2.dist-info/LICENSE,sha256=o5242_N2TgDsWwFhPn7yr8YJNF7XsJM5NxUMtcT97bc,1100
10
- p123client-0.0.6.9.2.dist-info/METADATA,sha256=WZBXup5z8MJ9KKNmvMJYaGna0YIXb2-Soqg-CepVhH4,8861
11
- p123client-0.0.6.9.2.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
12
- p123client-0.0.6.9.2.dist-info/RECORD,,
9
+ p123client-0.0.6.9.3.dist-info/LICENSE,sha256=o5242_N2TgDsWwFhPn7yr8YJNF7XsJM5NxUMtcT97bc,1100
10
+ p123client-0.0.6.9.3.dist-info/METADATA,sha256=wJFM_RU8jxwWO1cEp53n89K-SFrZ-_t9M_hxUhmRXuY,11395
11
+ p123client-0.0.6.9.3.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
12
+ p123client-0.0.6.9.3.dist-info/RECORD,,