蓝奏网盘API 您所在的位置:网站首页 蓝奏云分享网盘 蓝奏网盘API

蓝奏网盘API

2023-07-15 14:14| 来源: 网络整理| 查看: 265

蓝奏云网盘API 2.0

基于Python3实现,最强的蓝奏云API~

蓝奏云注册 更新说明 修复了登录时 formhash 错误的问题 解决了多次上传大文件被限制的问题 #3 细化 API 接口的功能,某些接口被取消、更名 操作网盘时会进行检查,屏蔽蓝奏云不合理的设计 支持批量上传/下载 上传大文件不再直接将数据分段,改用 RAR 分卷压缩 #2 取消使用种子文件下载大文件,自动识别分卷压缩文件并解压 上传/下载时支持使用回调函数显示进度 #1 不再向上抛异常,而是返回错误码 简介

本库封装了对蓝奏云的基本操作: 登录、列出文件、下载文件、上传文件、删除文件(夹)、 清空回收站、恢复文件、创建文件夹、设置文件(夹)访问密码、直链解析

此外,通过伪装后缀名,解决了蓝奏云的上传格式限制。 通过分卷上传,解决了单文件最大 100MB 的限制。同时增加了批量上传/下载的功能

如果有任何问题或建议,欢迎提 issue。最后,求一个 star (≧∇≦)ノ

安装依赖库 pip install requests requests_toolbelt

Windows 平台可使用项目文件中的 rar.exe 作为解压工具,Linux 平台需安装 rar

sudo apt install rar API 文档 .login(username, passwd)

登录蓝奏云

参数 类型 说明 必填 username str 用户名 Y passwd str 登录密码 Y

示例 :

from api.lanzou import LanZouCloud lzy = LanZouCloud() code = lzy.login('username', 'passwd') if code == LanZouCloud.SUCCESS: print('登录成功')

返回值 :

成功返回 : LanZouCloud.SUCCESS 失败返回 : LanZouCloud.FAILED .logout()

注销当前账号

示例 :

code = lzy.logout() if code == LanZouCloud.SUCCESS: print('注销成功')

返回值 :

成功返回 : LanZouCloud.SUCCESS 失败返回 : LanZouCloud.FAILED .get_dir_list(folder_id)

获取子文件夹name-id列表

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

示例 :

# 列出 id 为 1037070 的文件夹的子文件夹 sub_dirs = lzy.get_dir_list(1037070) print(sub_dirs)

返回值:

{ "娱乐": 1037080, "科幻": 1037083, "纪录片": 1037084, "游戏改": 1037085 } .get_file_list(folder_id)

获取文件详细信息列表

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

示例 :

file_list = lzy.get_file_list(1037070) print(file_list)

注意 : 添加了伪装后缀名的文件,伪装后缀会被自动去除

返回值 :

{ "Valentin - A Little Story.mp3":{ "id": 12741016, # 文件 id "name": "Valentin - A Little Story.mp3", # 文件名 "time": "昨天15:27", # 上传时间 "size": "8.0 M", # 文件大小 "downs": 6, # 下载次数 "has_pwd": False, # 是否设置提取码 "has_des": True # 是否设置描述 }, "小清水亜美 - 玻璃の空.mp3":{ "id": 12740874, "name": "小清水亜美 - 玻璃の空.mp3", "time": "昨天15:24", "size": "10.7 M", "downs": 0, "has_pwd": False, "has_des": False } } .get_file_list2(folder_id)

获取子文件名-id列表

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

示例 :

file_list = lzy.get_file_list2(1037070) print(file_list)

返回值 :

{ "Valentin - A Little Story.mp3": 12741016, "小清水亜美 - 玻璃の空.mp3": 12740874 } .get_full_path(folder_id)

获取文件夹的绝对路径

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

示例 :

# 路径: /视频/电影/娱乐 "娱乐"文件夹 id 为 1037080 full_path = lzy.get_full_path(1037080) print(full_path)

返回值 :

{ "LanZouCloud": -1, "视频": 1033205, "电影": 1037070, "娱乐": 1037080 } .delete(fid)

把网盘的文件(夹)放到回收站

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

示例 :

code = lzy.delete(12741016) if code == LanZouCloud.SUCCESS: print('删除成功')

返回值 :

成功返回 : LanZouCloud.SUCCESS 失败返回 : LanZouCloud.FAILED

注 :

无法删除含有子文件夹的文件夹,但含有文件的可以删除。 重复删除同一个 id 仍返回 : LanZouCloud.SUCCESS 删除不存在的 id 也返回 : LanZouCloud.SUCCESS 这都是蓝奏云的锅,与我无关 😦 .move_file(file_id, folder_id)

移动文件到指定文件夹

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

示例 :

# 把 id=12741016 的文件移动到 id=1037083 的文件夹 code = lzy.move_file(12741016, 1037083) if code == LanZouCloud.SUCCESS: print('恢复成功')

返回值 :

成功返回 : LanZouCloud.SUCCESS 失败返回 : LanZouCloud.FAILED .upload_file(file_path, folder_id, call_back)

上传文件到网盘的指定文件夹

参数 类型 说明 必填 备注 file_path str 本地文件路径 Y 使用绝对路径 folder_id int 网盘文件夹id N 默认-1(根目录) call_back func 回调函数 N 默认None

返回值 :

上传成功返回 : LanZouCloud.SUCCESS 上传失败返回 : LanZouCloud.FAILED 压缩过程异常返回 : LanZouCloud.ZIP_ERROR

注意 :

上传一个网盘中已经存在的文件,默认执行覆盖操作 不支持的文件会自动添加伪装后缀名,下载时自动去除 大文件使用 RAR 分卷压缩,保留 5% 恢复记录 上传大文件会自动在网盘创建文件夹以保存分卷

回调函数 : 该函数用于跟踪上传进度

参数 类型 说明 file_name str 上传文件名 total_size int 文件总字节数 now_size int 已上传字节数

示例:

# 显示上传进度条的回调函数 def show_progress(file_name, total_size, now_size): """显示进度条的回调函数""" percent = now_size / total_size bar_len = 40 # 进度条长总度 bar_str = '>' * round(bar_len * percent) + '=' * round(bar_len * (1 - percent)) print('\r{:.2f}%\t[{}] {:.1f}/{:.1f}MB | {} '.format( percent * 100, bar_str, now_size / 1048576, total_size / 1048576, file_name), end='') if total_size == now_size: print('') # 下载完成换行 code = lzy.upload_file(r"D:\test\DJ Okawari - Luv Letter.mp3", -1, show_progress) if code != LanZouCloud.SUCCESS: print('上传失败!')

结果 :

.upload_dir(dir_path, folder_id, call_back)

上传一个文件夹

参数 类型 说明 必填 备注 dir_path str 本地文件夹路径 Y 使用绝对路径 folder_id int 网盘文件夹id N 默认-1(根目录) call_back func 回调函数 N 默认None

返回值 : 同 .upload_file()

注意 : 上传的文件夹中,不能存在子文件夹

回调函数 : 同 .upload_file()

示例 :

code = lzy.upload_dir(r"D:\test\music", -1, show_progress) if code != LanZouCloud.SUCCESS: print('上传失败!')

结果 :

.is_file_url(share_url)

判断分享链接是否为文件

参数 类型 说明 必填 share_url str 分享链接 Y

返回值 : 是文件返回 True,否则返回 False

.is_folder_url(share_url)

判断分享链接是否为文件夹

参数 类型 说明 必填 share_url str 分享链接 Y

返回值 : 是文件夹返回 True,否则返回 False

.set_rar_tool(bin_path)

设置 RAR 压缩工具二进制文件路径

参数 类型 说明 必填 bin_path str 压缩工具路径 Y

返回值 :

设置成功返回 : LanZouCloud.SUCCESS 文件不存在返回 : LanZouCloud.ZIP_ERROR .download_file(share_url, pwd, save_path, call_back)

通过分享链接下载文件

参数 类型 说明 必填 备注 share_url str 文件分享链接 Y - pwd str 提取码 N 默认空 save_path str 文件保存路径 N 默认当前路径 call_back func 回调函数 N 默认None

返回值 :

链接非法返回 : LanZouCloud.URL_INVALID 文件已取消返回 : LanZouCloud.FILE_CANCELLED 全部成功返回 : LanZouCloud.SUCCESS 下载失败返回 : LanZouCloud.FAILED 缺少提取码返回 : LanZouCloud.LACK_PASSWORD 提取码错误返回 : LanZouCloud.PASSWORD_ERROR

示例 :

code = lzy.download_file('https://www.lanzous.com/i6qxywb', '6666', r'D:\test\download', show_progress) if code == LanZouCloud.FAILED: print('失败!')

结果 :

.download_file2(fid, save_path, call_back)

登录用户通过id下载文件

参数 类型 说明 必填 备注 fid int 文件id Y - save_path str 文件保存路径 N 默认当前路径 call_back func 回调函数 N 默认None

返回值 :

成功返回 : LanZouCloud.SUCCESS 失败返回 : LanZouCloud.FAILED

回调函数 : 同 .download_file()

.download_dir(share_url, dir_pwd, save_path, call_back)

通过分享链接下载文件夹

参数 类型 说明 必填 备注 share_url str 文件夹分享链接 Y - dir_pwd str 提取码 N 默认空 save_path str 文件保存路径 N 默认./down call_back func 回调函数 N 默认None

返回值 :

链接非法返回 : LanZouCloud.URL_INVALID 文件已取消返回 : LanZouCloud.FILE_CANCELLED 全部成功返回 : LanZouCloud.SUCCESS 下载失败返回 : LanZouCloud.FAILED 缺少提取码返回 : LanZouCloud.LACK_PASSWORD 提取码错误返回 : LanZouCloud.PASSWORD_ERROR 解压失败返回 : LanZouCloud.ZIP_ERROR

注意 :

不能下载多级文件夹,只会下载一个文件夹下的所有文件 分卷压缩文件下载完成后自动解压出原文件 解压异常时不会自动删除分卷文件,可尝试使用解压软件手动修复

示例 :

code = lzy.download_dir('https://www.lanzous.com/b0f142z0d/', '6666', r'D:\test\download', show_progress) if code == LanZouCloud.LACK_PASSWORD: print('大人!您没给我没填提取码啊!') elif code == LanZouCloud.PASSWORD_ERROR: print('我好难啊,提取码不对!')

结果 :

.download_dir2(fid, save_path, call_back)

登录后通过id下载文件夹

参数 类型 说明 必填 备注 fid int 文件夹id Y - save_path str 文件保存路径 N 默认./down call_back func 回调函数 N 默认None

返回值 : 同 .download_dir()

示例 :

code = lzy.download_dir2(1056513, r'D:\test\download', show_progress) if code != LanZouCloud.SUCCESS: print('艾玛,失败了??不可能!!')

示例 :

code = lzy.mkdir(-1, 'my_music', '音乐分享') if code == LanZouCloud.SUCCESS: print('创建成功')

返回值 :

创建成功返回 : LanZouCloud.SUCCESS 目标已存在返回 : LanZouCloud.SUCCESS 创建失败返回 : LanZouCloud.FAILED .mkdir(parent_id, folder_name, description)

创建文件夹并返回 id

参数 类型 说明 必填 备注 parent_id int 父文件夹id Y -1 表根目录 folder_name str 文件夹名 Y 自动删除非法字符 description str 文件夹描述 N 默认无

示例 :

code = lzy.mkdir(-1, 'my_music', '音乐分享') if code != LanZouCloud.MKDIR_ERROR: print('文件夹id:' + str(code))

返回值 :

创建成功返回 : 文件夹ID 目标已存在返回 : 文件夹ID 创建失败返回 : LanZouCloud.MKDIR_ERROR

注意 : 蓝奏云支持创建 同名文件夹 ,但本方法会阻止这种操作,以防出现混淆

.rename_dir(folder_id, folder_name, description)

重命名文件夹(和描述)

参数 类型 说明 必填 备注 folder_id int 文件夹id N 默认-1(根目录) folder_name str 文件夹名 Y 非法字符自动删除 description str 文件夹描述 N 默认无

示例 :

code = lzy.rename_dir(1037070, 'soft-music', '轻音乐分享') if code == LanZouCloud.SUCCESS: print('修改成功')

返回值 :

成功返回 : LanZouCloud.SUCCESS 失败返回 : LanZouCloud.FAILED .list_recovery()

列出回收站文件(夹)

示例 :

deleted_files = lzy.list_recovery() print(deleted_files)

返回值 :

{ "folder_list": { "杂物": "1037324", "相册": "1037324" }, "file_list": { "java模拟器.zip": "1037324", "Valentin - A Little Story.mp3": "12741016", "小清水亜美 - 玻璃の空.mp3": "12740874" } } .recovery(fid)

从回收站恢复文件(夹)

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

示例 :

code = lzy.recovery(12741016) if code == LanZouCloud.SUCCESS: print('恢复成功')

返回值 :

成功返回 : LanZouCloud.SUCCESS 失败返回 : LanZouCloud.FAILED .clean_recycle()

清空回收站

示例 :

code = lzy.clean_recycle() if code == LanZouCloud.SUCCESS: print('清空成功')

返回值 :

成功返回 : LanZouCloud.SUCCESS 失败返回 : LanZouCloud.FAILED .get_share_info(fid)

获取文件(夹)分享信息

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

示例 :

info = lzy.get_share_info(1033203) if info['code'] == LanZouCloud.SUCCESS: print('分享链接:' + info['share_url'])

返回值 :

{ "code": 0, # 状态码 "share_url": "https://www.lanzous.com/i6q0fli", # 分享链接 "passwd": "6666" # 提取码 }

状态码 code:

获取成功 : LanZouCloud.SUCCESS 获取失败 : LanZouCloud.FAILED fid参数错误 : LanZouCloud.ID_ERROR .set_share_passwd(fid, passwd)

设置文件(夹)分享密码

参数 类型 说明 必填 备注 fid int 文件(夹)id Y - passwd str 分享密码 N 2-6个字符,默认空(无密码)

示例 :

code = lzy.set_share_info(1033203, 'fuck') if code == LanZouCloud.SUCCESS: print('设置成功')

返回值 :

成功返回 : LanZouCloud.SUCCESS 失败返回 : LanZouCloud.FAILED .get_direct_url(share_url, pwd)

获取文件下载直链

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

示例 :

info = lzy.get_direct_url('https://www.lanzous.com/i6qxywb', '6666') if info['code'] == LanZouCloud.SUCCESS: print('直链地址:' + info['direct_url']) elif info['code'] == LanZouCloud.LACK_PASSWD: print('缺少提取码')

返回值 :

{ "code": 0, "name": "Git-2.23.0-64-bit.exe", "direct_url": "https://development5.baidupan.com/100420bb/2019/10/03/41c4117570de8c0ce02d7e7ddc838135.mp3?st=o22S3uwv063cbklsDWh50w&e=1570193627&b=CAwBYFA8UzNXbAclADkAagN2WisNLAVCUSIBQFM9B3FTdQ5iUDVYfVVTVHYEOwF3VXkAcgFtA3VSMg_c_c&fi=12741016&up=" }

状态码 code :

获取成功 : LanZouCloud.SUCCESS 分享链接非法 : LanZouCloud.URL_INVALID 缺少提取码 : LanZouCloud.LACK_PASSWORD 提取码错误 : LanZouCloud.PASSWORD_ERROR 文件已取消 : LanZouCloud.FILE_CANCELLED

注意 :

本方法会检查分享链接合法性 直链有效期约 30 分钟 .get_direct_url2(fid)

登录后通过id获取文件下载直链

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

返回值 : 同 .get_direct_url()



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有