最近在設計本站PDF電子書頁面的時候發現針對百度雲PDF目錄下的電子書生成不加密的共享連接很不方便。json
有人可能問那麼多文件生成一個共享連接供你們下載那多方便?不存在的,防止大家一次性保存到本身百度雲而後跑路。api
每次都要一個一個右鍵共享生成,這樣不只容易出錯,眼花繚亂,並且效率低,浪費時間等等。因此打算經過程序實現,正好百度了一下,發現有Python對應的百度雲的API,正好練練手。cookie
Python3.5.3,Windows操做系統,pycharm,Python包(setuptools,pyinstaller,baidupcsapi等反正缺啥模塊安啥模塊)app
打開pycharm,新建Python文件,命名爲BaiduYunLinksShare.py函數
from baidupcsapi import PCS import time import json
def __init__(self, username, password, sharedir): self.username = username self.passwrod = password self.sharedir = sharedir encrypt_password = "%s*****%s" % (password[:2], password[-2:]) print("您輸入的帳號:%s,密碼:%s,須要批量生成共享鏈接的目錄是:%s" % (username, encrypt_password, sharedir))
解釋:學習
def client(self): return PCS(self.username, self.passwrod)
解釋:加密
生成cookie文件截圖spa
第一次輸入驗證碼截圖操作系統
def input_path_exist(self, client): input_path_exist_flag = client.list_files(self.sharedir, "size", "asc").json().get('errno') if input_path_exist_flag == -9: # errno=-9 目錄不存在 不然返回該目錄下的文件詳情 return False else: return pcs.list_files(self.shardir, "size", "asc").json().get('list')
解釋:設計
baiduyun = BaiduYunLinksShare(username, password, dir_path) pcs = baiduyun.client() input_path_exist = baiduyun.input_path_exist(pcs) file_ids_list = [] if input_path_exist is False: print(">>>>>您輸入的須要批量生成共享鏈接的目錄不存在") else: for i, file in enumerate(input_path_exist): file_ids_list.append(file.get('fs_id')) res_json = json.loads(pcs.share(file_ids_list).text) if res_json['errno'] != 0: print(">>>>>您今天的分享次數可能已經達到上限") break else: res = "序號:[%s] 共享文件:%s 共享連接:%s" % (i, file.get('server_filename'), res_json['link']) print(res) try: with open(r'D:\baiduyun_share.txt', 'a+', encoding='UTF-8') as f: f.write(res) f.write('\n') file_ids_list = [] time.sleep(2) except Exception as e: print(str(e)) else: f.close() print(">>>>>連接已經保存在D:\\baiduyun_share.txt文件中")
解釋:
以上就是批量實現共享百度雲某個目錄下的文件連接的主要代碼了,僅供我的學習。