Skip to content

0x04 获取文件(夹)信息

ZaxTyson edited this page Oct 7, 2020 · 4 revisions

v2.4.0 开始不再使用隐藏后缀到文件名的方式绕过官方限制。格式不支持的文件,真实信息写入文件本身,后缀随机,下载完成之前无法得知真实后缀。大文件被切片上传,文件名、文件大小、后缀随机。文件名和后缀下载完成都能自动恢复。


.get_full_path(folder_id)

通过 id 获取文件夹的绝对路径

参数 类型 说明 必填 备注
folder_id int 文件夹id N 默认-1(根目录)
# 网盘路径: /test/txt   ("txt"文件夹 id 为 1388997)

>>> path = lzy.get_full_path(1388997)
>>> path
<List FolderId(name='LanZouCloud', id=-1), FolderId(name='test', id=835602), FolderId(name='txt', id=1388997)>

>>> path[-1]
FolderId(name='txt', id=1388997)

>>> path[-1].name
'txt'

>>> path.all_name
['LanZouCloud', 'test', 'txt']

>>> path.name_id
{'LanZouCloud': -1, 'test': 835602, 'txt': 1388997}

.get_move_folders()

获取网盘全部文件夹(用于移动文件)

示例 :

>>> folders = lzy.get_move_folders()
>>> folders
<List FolderId(name='LanZouCloud', id=-1), FolderId(name='aaa', id=831474), FolderId(name='aaa', id=835475), FolderId(name='test', id=835602), FolderId(name='github', id=837574), FolderId(name='share', id=879591), FolderId(name='hnyz', id=910991), FolderId(name='lanzoucloud', id=1074753), FolderId(name='777', id=1282695), FolderId(name='AnimeSearcher', id=1327639), FolderId(name='网易云', id=1387302), FolderId(name='Music', id=1387639), FolderId(name='mtest', id=1388176), FolderId(name='txt', id=1388997), FolderId(name='some_file', id=1440156)>

>>> folders.find_by_id(1387302)
FolderId(name='网易云', id=1387302)

>>> folders.find_by_name('github')
FolderId(name='github', id=837574)

>>> folders.pop_by_id(835602)
FolderId(name='test', id=835602)

.get_dir_list(folder_id)

获取子文件夹列表

参数 类型 说明 必填 备注
folder_id int 文件夹id N 默认-1(根目录)

示例 :

>>> dirs = lzy.get_dir_list()   # 根目录
>>> dirs
<List Folder(name='test', id=835602, has_pwd=False, desc='测试文件夹'), Folder(name='github', id=837574, has_pwd=False, desc='Github Download'), Folder(name='share', id=879591, has_pwd=False, desc='文件分享'), Folder(name='Music', id=1387639, has_pwd=False, desc='网易云音乐')>

>>> dirs.name_id
{'test': 835602, 'github': 837574, 'share': 879591, 'Music': 1387639}

>>> dirs.update_by_id(837574, desc='新的描述', has_pwd=True)
>>> dirs
<List ... Folder(name='github', id=837574, has_pwd=True, desc='新的描述') ...>

.get_file_list(folder_id)

获取某文件夹下的文件列表

参数 类型 说明 必填 备注
folder_id int 文件夹id N 默认-1(根目录)

示例 :

>>> files = lzy.get_file_list(835602)
>>> files
<List File(name='HashTab_v6.0.0.34_Setup.exe', id=18345368, time='2020-03-03', size='1.1 M', type='exe', downs=0, has_pwd=False, has_des=False), File(name='新建文本文档.ppt', id=18344819, time='2020-03-03', size='1.4 K', type='ppt', downs=1, has_pwd=False, has_des=False), File(name='download20200202194154.ppt', id=18344813, time='2020-03-03', size='272.0 K', type='ppt', downs=1, has_pwd=False, has_des=False), File(name='Craig David - Insomnia.mp3', id=17651728, time='2020-02-19', size='3.6 M', type='mp3', downs=15, has_pwd=True, has_des=False)>

>>> files.filter(lambda f: f.type == 'mp3')
[File(name='Craig David - Insomnia.mp3', id=17651728, time='2020-02-19', size='3.6 M', type='mp3', downs=15, has_pwd=True, has_des=False)]

.get_share_info(fid, is_file)

获取文件(夹)分享信息

参数 类型 说明 必填 备注
fid int 文件(夹)id Y -
is_file bool 是否为文件id N 默认True

示例 :

>>> lzy.get_share_info(18345368)
ShareInfo(code=0, name='HashTab_v6.0.0.34_Setup', url='https://www.lanzous.com/i9w6cji', pwd='', desc='')

>>> lzy.get_share_info(1387639, is_file=False)
ShareInfo(code=0, name='Music', url='https://www.lanzous.com/b0f1b6gyj', pwd='', desc='网易云音乐')

状态码(code):

  • 获取成功: LanZouCloud.SUCCESS
  • 获取失败: LanZouCloud.FAILED
  • fid 错误: LanZouCloud.ID_ERROR
  • 网络异常: LanZouCloud.NETWORK_ERROR

.get_file_info_by_url(share_url, pwd)

通过分享链接获取文件的信息

参数 类型 说明 必填 备注
share_url str 文件分享链接 Y
pwd str 提取码 N 默认''

示例 :

>>> lzy.get_file_info_by_url('https://www.lanzous.com/i6zgwnc')
FileDetail(code=3, name='', size='', type='', time='', desc='', pwd='', url='', durl='')

>>> lzy.get_file_info_by_url('https://www.lanzous.com/i6zgwnc', 'haha')
FileDetail(code=0, name='Craig David - Insomnia.mp3', size='3.6 M', type='mp3', time='2019-10-25', desc='', pwd='haha', url='https://www.lanzous.com/i6zgwnc', durl='https://developer23a.baidupan.com/030319bb/2019/10/25/e8bb4480ffddf99037b636dc7305902f.mp3?st=GinkBzaetCPK69FAgYNu9A&e=1583237842&b=CRhcLgBhUT1VZ1MlV0MHYgIhCTwMaVF3VSsLJlQaUz8HJgxjVzoCaQI_bVmEEegduBiMKZQ_c_c&fi=13460172&up=')

状态码(code):

  • 一切正常: LanZouCloud.SUCCESS
  • URL 错误: LanZouCloud.URL_INVALID
  • 网络异常: LanZouCloud.NETWORK_ERROR
  • 文件已取消: LanZouCloud.FILE_CANCELLED
  • 缺少提取码: LanZouCloud.LACK_PASSWORD
  • 提取码错误: LanZouCloud.PASSWORD_ERROR
  • 验证码错误: LanZouCloud.CAPTCHA_ERROR

.get_file_info_by_id(file_id)

通过 id 获取文件的信息

参数 类型 说明 必填 备注
file_id int 文件id Y -

返回值 : 同 .get_file_info_by_url()


.get_folder_info_by_url(share_url, dir_pwd)

通过分享链接获取文件夹的信息

参数 类型 说明 必填 备注
share_url str 文件夹分享链接 Y
dir_pwd str 提取码 N 默认''

示例 :

>>> folder_info = lzy.get_folder_info_by_url("https://www.lanzous.com/b034jwrpg")   # vip分享的文件夹允许包含子文件夹
>>> folder_info.folder   # 当前文件夹信息
Folder(name='【人工精选软件推荐】', id='1239706', pwd='', time='2020-10-07', desc='这里均是人工精心挑选的热门软件!陆续更新中...所有软件永久免费提供!【注意:所有软件都是根据官方接口写的,很多具有时效性,如果哪个软件失效了只能说明已被官方修复,非我司问题。打个比方10年后腾讯关闭了,你再去玩QQ发现无法使用,然后就说腾讯是个假的公司,您觉得合理吗?拒绝回答无脑问题!感谢支持】', url='https://www.lanzous.com/b034jwrpg')

>>> folder_info.files   # 当前文件夹下文件信息
<List FileInFolder(name='特价屋(淘宝查优惠券).apk', time='2020-07-26', size='33.4 M', type='apk', url='https://www.lanzous.com/igcQvf08cbg'), FileInFolder(name='微信抢红包.apk', time='2020-01-23', size='3.9 M', type='apk', url='https://www.lanzous.com/i8tyguh'), FileInFolder(name='WIFI万能钥匙显密码版.apk', time='2020-01-20', size='6.5 M', type='apk', url='https://www.lanzous.com/i8rzi5i')>

>>> folder_info.sub_folders   # 子文件夹信息
<List Folder(name='『精选』QQ玩网必备', id='', pwd='', time='2020-10-07', desc='此类:这里都是一些玩QQ必备的软件!比如:QQ动态头像 百变气泡等等', url='https://www.lanzous.com/b034jwrta'), Folder(name='『精选』游戏辅助类', id='', pwd='', time='2020-10-07', desc='此类:这里都是关于游戏的软件!如;刺激战场除草 游戏美化 游戏语音包等等', url='https://www.lanzous.com/b034jwrub')>

>>> folder_info.sub_folders[1].url   # 第二个子文件夹的链接
'https://www.lanzous.com/b034jwrub'

.get_folder_info_by_id(folder_id)

通过 id 获取文件夹的信息

参数 类型 说明 必填 备注
folder_id int 文件夹id Y -

返回值 : 同 .get_folder_info_by_url()


.get_durl_by_url(share_url, pwd)

通过分享链接获取文件下载直链

参数 类型 说明 必填 备注
share_url str 文件分享链接 Y -
pwd str 提取码 N 默认''

说明 : 本方法实际上是调用 get_file_info_by_url(),截取了其中文件下载直链的信息

示例 :

>>> lzy.get_durl_by_url('https://www.lanzous.com/i6zgwnc')
DirectUrlInfo(code=3, name='', durl='')

>>> lzy.get_durl_by_url('https://www.lanzous.com/i6zgwnc', 'haha')
DirectUrlInfo(code=0, name='Craig David - Insomnia.mp3', durl='https://developer23a.baidupan.com/030319bb/2019/10/25/e8bb4480ffddf99037b636dc7305902f.mp3?st=6LmArYWOAVRdmQpCyo9xpg&e=1583238762&b=VEVeLAdmWTVTYVEnBxNUMVFyDjsNaFZwCHZad1QaBWlSc1s0UD1ZMgQ4BDMFewVsUncKZQ_c_c&fi=13460172&up=')

.get_durl_by_id(fid)

通过 id 获取文件下载直链

参数 类型 说明 必填 备注
fid int 文件id Y -

返回值 : 同 .get_durl_by_url()