Closed paulxjz closed 6 months ago
你好,不好意思最近代码重构了,测试不到位,现在重新升级一下,就可以了,运行
pip install -U python-http_request python-115
以后如果有模块缺失,但手动用 pip 安装不上,可能需要带一个前缀 python-,例如 python-texttools
目前我重构了代码,把公用模块一个个独立出来了,不在原来的项目中,具体可以看这里 https://pypi.org/user/ChenyangGao/
如果你要输出目录信息,也可以用命令行工具
$ p115 iterdir -h
usage: p115 iterdir [-h] [-c COOKIES] [-p PASSWORD] [-s SELECT]
[-k [{id,parent_id,name,path,relpath,sha1,pickcode,is_directory,size,ctime,mtime,atime,hidden,violated,play_long,thumb,star,score,labels,description} ...]]
[-t {log,json,csv}] [-d DUMP] [-de] [-o OUTPUT_FILE]
[-m MIN_DEPTH] [-M MAX_DEPTH] [-dfs] [-v]
[path]
115 文件夹信息遍历导出
positional arguments:
path 文件夹路径或 id,默认值 0,即根目录
options:
-h, --help show this help message and exit
-c COOKIES, --cookies COOKIES
115 登录 cookie,如果缺失,则从 115-cookies.txt 文件中获取,此文件可以在
当前工作目录、此脚本所在目录 或 用户根目录 下
-p PASSWORD, --password PASSWORD
密码,用于进入隐藏模式,罗列隐藏文件
-s SELECT, --select SELECT
提供一个表达式(会注入一个变量 path,类型是 p115.P115Path),用于对路径进行筛选
-k [{id,parent_id,name,path,relpath,sha1,pickcode,is_directory,size,ctime,mtime,atime,hidden,violated,play_long,thumb,star,score,labels,description} ...], --keys [{id,parent_id,name,path,relpath,sha1,pickcode,is_directory,size,ctime,mtime,atime,hidden,violated,play_long,thumb,star,score,labels,description} ...]
选择输出的 key,默认输出所有可选值
-t {log,json,csv}, --output-type {log,json,csv}
输出类型,默认为 log - log 每行输出一条数据,每条数据输出为一个 json 的 object -
json 输出一个 json 的 list,每条数据输出为一个 json 的 object - csv
输出一个 csv,第 1 行为表头,以后每行输出一条数据
-d DUMP, --dump DUMP (优先级高于 -k/--keys 和 -t/--output-type)
提供一段代码,每次调用,再行输出,尾部会添加一个 b' '。 如果结果 result 是 - None,跳过
- bytes,输出 - 其它,先调用 `bytes(str(result), 'utf-8')`,再输出
-de, --dump-exec 对 dump 代码进行 exec 解析(必须生成一个变量 dump,用于调用),否则用 eval
解析(会注入一个变量 path,类型是 p115.P115Path)
-o OUTPUT_FILE, --output-file OUTPUT_FILE
保存到文件,此时命令行会输出进度条
-m MIN_DEPTH, --min-depth MIN_DEPTH
最小深度,默认值 0,小于或等于 0 时不限
-M MAX_DEPTH, --max-depth MAX_DEPTH
最大深度,默认值 -1,小于 0 时不限
-dfs, --depth-first 使用深度优先搜索,否则使用广度优先
-v, --version 输出版本号
如果你要输出目录信息,也可以用命令行工具
$ p115 iterdir -h usage: p115 iterdir [-h] [-c COOKIES] [-p PASSWORD] [-s SELECT] [-k [{id,parent_id,name,path,relpath,sha1,pickcode,is_directory,size,ctime,mtime,atime,hidden,violated,play_long,thumb,star,score,labels,description} ...]] [-t {log,json,csv}] [-d DUMP] [-de] [-o OUTPUT_FILE] [-m MIN_DEPTH] [-M MAX_DEPTH] [-dfs] [-v] [path] 115 文件夹信息遍历导出 positional arguments: path 文件夹路径或 id,默认值 0,即根目录 options: -h, --help show this help message and exit -c COOKIES, --cookies COOKIES 115 登录 cookie,如果缺失,则从 115-cookies.txt 文件中获取,此文件可以在 当前工作目录、此脚本所在目录 或 用户根目录 下 -p PASSWORD, --password PASSWORD 密码,用于进入隐藏模式,罗列隐藏文件 -s SELECT, --select SELECT 提供一个表达式(会注入一个变量 path,类型是 p115.P115Path),用于对路径进行筛选 -k [{id,parent_id,name,path,relpath,sha1,pickcode,is_directory,size,ctime,mtime,atime,hidden,violated,play_long,thumb,star,score,labels,description} ...], --keys [{id,parent_id,name,path,relpath,sha1,pickcode,is_directory,size,ctime,mtime,atime,hidden,violated,play_long,thumb,star,score,labels,description} ...] 选择输出的 key,默认输出所有可选值 -t {log,json,csv}, --output-type {log,json,csv} 输出类型,默认为 log - log 每行输出一条数据,每条数据输出为一个 json 的 object - json 输出一个 json 的 list,每条数据输出为一个 json 的 object - csv 输出一个 csv,第 1 行为表头,以后每行输出一条数据 -d DUMP, --dump DUMP (优先级高于 -k/--keys 和 -t/--output-type) 提供一段代码,每次调用,再行输出,尾部会添加一个 b' '。 如果结果 result 是 - None,跳过 - bytes,输出 - 其它,先调用 `bytes(str(result), 'utf-8')`,再输出 -de, --dump-exec 对 dump 代码进行 exec 解析(必须生成一个变量 dump,用于调用),否则用 eval 解析(会注入一个变量 path,类型是 p115.P115Path) -o OUTPUT_FILE, --output-file OUTPUT_FILE 保存到文件,此时命令行会输出进度条 -m MIN_DEPTH, --min-depth MIN_DEPTH 最小深度,默认值 0,小于或等于 0 时不限 -M MAX_DEPTH, --max-depth MAX_DEPTH 最大深度,默认值 -1,小于 0 时不限 -dfs, --depth-first 使用深度优先搜索,否则使用广度优先 -v, --version 输出版本号
我升级以后还是报错了,以下是报错信息
Traceback (most recent call last):
File "D:\ruanjian\WingetUI-data\winget\rss2cloud\123\rss\list_folders.py", line 3, in <module>
from p115 import P115Client, P115FileSystem
File "D:\ruanjian\WingetUI-data\Scoop\apps\python\current\Lib\site-packages\p115\__init__.py", line 7, in <module>
from .component import *
File "D:\ruanjian\WingetUI-data\Scoop\apps\python\current\Lib\site-packages\p115\component\__init__.py", line 8, in <module>
from .client import *
File "D:\ruanjian\WingetUI-data\Scoop\apps\python\current\Lib\site-packages\p115\component\client.py", line 60, in <module>
from startfile import startfile, startfile_async # type: ignore
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ImportError: cannot import name 'startfile_async' from 'startfile' (D:\ruanjian\WingetUI-data\Scoop\apps\python\current\Lib\site-packages\startfile.py). Did you mean: 'startfile_aysnc'?
我尝试将startfile.py里面的函数名改了,确实不报错了。 我也尝试用命令行
p115 iterdir -c "YOUR_COOKIE_STRING" -p "password" -k name -k id -t json -m 1 -M 1 2906117406037584494
只生成了id和它的值,如果改成-k name,id 它就报错
我想请教下这个命令行怎么写
是bug,再升级一下
pip install -U 'python-startfile>=0.0.1.1' 'python-115>=0.0.8.3.5'
按照命令行的说明来按需求使用
例如获取几个必要的字段,只输出文件的信息不输出文件夹的,并把结果输出到本地的一个文件
p115 iterdir -k id name path sha1 size -dfs -s 'path.is_file()' -o 115.log.json
是bug,再升级一下
pip install -U 'python-startfile>=0.0.1.1' 'python-115>=0.0.8.3.5'
按照命令行的说明来按需求使用
例如获取几个必要的字段,只输出文件的信息不输出文件夹的,并把结果输出到本地的一个文件
p115 iterdir -k id name path sha1 size -dfs -s 'path.is_file()' -o 115.log.json
好的我会了,感谢
如题,这个texttools怎么装,我没找到,我用AI写了输入文件夹cid和cookie,就可以输出文件夹里的文件夹cid及对应名称,我在0.0.7.4运行没问题,升级到0.0.8.1就出问题,请求帮助。报错信息如下
Traceback (most recent call last): File "D:\ruanjian\WingetUI-data\winget\rss2cloud\123\rss\list_folders.py", line 3, in
from p115 import P115Client, P115FileSystem
File "D:\ruanjian\WingetUI-data\Scoop\apps\python\current\Lib\site-packages\p115__init.py", line 7, in
from .component import
File "D:\ruanjian\WingetUI-data\Scoop\apps\python\current\Lib\site-packages\p115\component__init__.py", line 8, in
from .client import
File "D:\ruanjian\WingetUI-data\Scoop\apps\python\current\Lib\site-packages\p115\component\client.py", line 53, in
from http_request import encode_multipart_data, encode_multipart_data_async, SupportsGeturl
File "D:\ruanjian\WingetUI-data\Scoop\apps\python\current\Lib\site-packages\http_request\ init__.py", line 21, in
from texttools import text_to_dict
ModuleNotFoundError: No module named 'texttools'
源代码如下