藍奏網盤API


藍奏雲網盤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()


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM