1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > python 百度网盘 群组 文件_py实现百度云批量生成文件共享链接

python 百度网盘 群组 文件_py实现百度云批量生成文件共享链接

时间:2019-09-01 03:39:13

相关推荐

python 百度网盘 群组 文件_py实现百度云批量生成文件共享链接

背景

最近在设计本站PDF电子书页面的时候发现针对百度云PDF目录下的电子书生成不加密的共享链接很不方便。

有人可能问那么多文件生成一个共享链接供大家下载那多方便?不存在的,防止你们一次性保存到自己百度云然后跑路。

每次都要一个一个右键共享生成,这样不仅容易出错,眼花缭乱,而且效率低,浪费时间等等。所以打算通过程序实现,正好百度了一下,发现有Python对应的百度云的API,正好练练手。

环境准备

Python3.5.3,Windows操作系统,pycharm,Python包(setuptools,pyinstaller,baidupcsapi等反正缺啥模块安啥模块)

开始搬砖

新建类

打开pycharm,新建Python文件,命名为BaiduYunLinksShare.py

导入模块

from baidupcsapi import PCS

import time

import json

编写init函数

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))

解释:

默认实例化BaiduYunLinksShare类使需要传入百度云用户名,百度云密码,需要批量生成共享链接的百度云目录

针对密码进行输出加密用星号代替中间部分

客户端连接

def client(self):

return PCS(self.username, self.passwrod)

解释:

通过用户名和密码连接百度云的客户端并作为返回值返回

第一次连接需要验证码验证,会在C盘用户目录下生成一个临时图片.png,根据png上的汉字进行输入,填写正确后会默认生成一个cookie文件,以后再次使用就不需要图片验证了。

生成cookie文件截图

第一次输入验证码截图

验证目录是否存在

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')

解释:

首先需要根据返回码判断传入的目录是否正确,正确的话返回文件列表集合,不正确返回False

主函数

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文件中")

解释:

实例化BaiduYunLinksShare.py,并连接客户端,判断传入的目录是否存在

根据文件号来实现文件共享

将共享的文件返回信息中的共享链接输入到文件中进行保存

判断当天共享的链接数是否已达上限

总结

以上就是批量实现共享百度云某个目录下的文件链接的主要代码了,仅供个人学习。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。