admin管理员组文章数量:1582937
@百度分享链接批量转存到百度网盘
百度分享链接批量转存到百度网盘
最近拿到一批百度分享的链接,想要批量保存到自己的网盘里,于是就写了一段代码自动实现,在这里分享给大家。
我把百度转存的代码放出来,取链接的步骤就自己实现吧,这个方式很多,也不难。
时间:2019年12月22日
语言:Python3
#!/usr/local/Cellar/python/3.7.1/bin
# -*- coding: UTF-8 -*-
import requests, re, time
#获取当前时间戳
def get_timestamp():
return int(round(time.time() * 1000)/1e3)
#百度分享文件转存
def bdsave(furl,verify,savepath,BDUSS,STOKEN,bdstoken):
#Get 打开分享链接网址
s = requests.Session()
s.cookies['BDUSS'] = BDUSS
s.cookies['STOKEN'] = STOKEN
surl = furl.split('/')[-1][1:len(furl.split('/')[-1])]
headers = {
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.79 Safari/537.36',
'Referer': 'https://pan.baidu/share/init?surl=' + surl
}
req = s.get(furl, headers=headers)
req.encoding = 'utf-8'
#判断分享链接是否正常
if ('侵权、色情、反动、低俗' in req.text) or ('已过期' in req.text):
print('此链接分享内容可能因为涉及侵权、色情、反动、低俗等信息,无法访问!||啊哦,来晚了,该分享文件已过期!')
return ('此链接分享内容可能因为涉及侵权、色情、反动、低俗等信息,无法访问!||啊哦,来晚了,该分享文件已过期!')
else:
# Post user信息
purl = 'https://pan.baidu/api/report/user?channel=chunlei&web=1&app_id=250528&bdstoken=' + bdstoken + \
'&logid=MTU3NjY0ODUzNTI1MjAuNjkzMzEyMTcyODA2ODk2&clienttype=0'
data = {'timestamp': get_timestamp(), 'action': 'web_home'}
req = s.post(purl, data=data, headers=headers)
# Post 链接和提取码信息,获取分享的内容
purl = 'https://pan.baidu/share/verify?surl=' + surl + '&t=' + str(get_timestamp()) \
+ '&channel=chunlei&web=1&app_id=250528&bdstoken=' + bdstoken + '&logid=MTU3NjY1MDc0NDMyMzAuMjIxNjQwMTA0OTQ3NjA0Njc=&clienttype=0'
data = {'pwd': verify, 'vcode': '', 'vcode_str': ''}
req = s.post(purl, data=data, headers=headers)
rinfo = re.findall('"errno":[-]{0,1}\d+', req.text)[0].replace('"errno":', '')
if rinfo in '-12,-9':
return ('提取码错误。')
else:
# Get 获取保存分享内容需要使用的相关参数信息,这些写信息存在与分享链接网页里
req = s.get(furl, headers=headers)
req.encoding = 'utf-8'
shareid = re.findall('"shareid":\d+', req.text)[0].replace('"shareid":', '')
uk = re.findall('uk=\d+', req.text)[0].replace('uk=', '')
fsidlist = re.findall('"fs_id":\d+', req.text)[0].replace('"fs_id":', '')
app_id = re.findall('"app_id":"\d+"', req.text)[0].replace('"app_id":', '').replace('"', '')
# print('shareid:'+shareid +'\nuk:'+uk+'\nfsidlist:'+fsidlist+'\napp_id:'+app_id)
# Post 保存分享的内容
purl = 'https://pan.baidu/share/transfer?shareid=' + shareid + '&from=' + uk + '&channel=chunlei&web=1&app_id=' + app_id + '&bdstoken=' + bdstoken + '&logid=MTU3NjY1MTc1NTcwNTAuNjg1NDU2NDk2ODIxNjYx&clienttype=0'
data = {
'fsidlist': '[' + fsidlist + ']',
'path': '/' + savepath
}
req = s.post(purl, data=data, headers=headers)
req.encoding = 'utf-8'
#检查最后返回的页面信息,查看是否成功保存
try:
zcinfo = re.findall('\[\{"errno":[-]{0,1}\d+', req.text)[0].replace('[{"errno":', '')
except:
return 'Cookies失效,请更新BDUSS、STOKEN、bdstoken后再试!'
else:
info = {
"0": "转存成功。",
"-1": "由于您分享了违反相关法律法规的文件,分享功能已被禁用,之前分享出去的文件不受影响。",
"-2": "用户不存在,请刷新页面后重试。",
"-3": "文件不存在,请刷新页面后重试。",
"-4": "登录信息有误,请重新登录试试。",
"-5": "host_key和user_key无效。",
"-6": "请重新登录。",
"-7": "该分享已删除或已取消。",
"-8": "该分享已经过期。",
"-9": "访问密码错误。",
"-10": "分享外链已经达到最大上限100000条,不能再次分享。",
"-11": "验证cookie无效。",
"-14": "对不起,短信分享每天限制20条,你今天已经分享完,请明天再来分享吧!",
"-15": "对不起,邮件分享每天限制20封,你今天已经分享完,请明天再来分享吧!",
"-16": "对不起,该文件已经限制分享!",
"-17": "文件分享超过限制。",
"-21": "预置文件无法进行相关操作。",
"-30": "文件已存在。",
"-31": "文件保存失败。",
"-33": "一次支持操作999个,减点试试吧。",
"-32": "未知结果。",
"-70": "你分享的文件中包含病毒或疑似病毒,为了你和他人的数据安全,换个文件分享吧。",
"2": "参数错误。",
"3": "未登录或帐号无效。",
"4": "存储好像出问题了,请稍候再试。",
"108": "文件名有敏感词,优化一下吧。",
"110": "分享次数超出限制,可以到“我的分享”中查看已分享的文件链接。",
"114": "当前任务不存在,保存失败。",
"115": "该文件禁止分享。",
"112": '页面已过期,请刷新后重试。',
"9100": '你的帐号存在违规行为,已被冻结。',
"9200": '你的帐号存在违规行为,已被冻结。',
"9300": '你的帐号存在违规行为,该功能暂被冻结。',
"9400": '你的帐号异常,需验证后才能使用该功能。',
"9500": '你的帐号存在安全风险,已进入保护模式,请修改密码后使用。'}
return (info[zcinfo])
def main():
# 百度网盘转存
# furl = 分享链接
# verify = 提取码
# savepath = 转存到百度网盘指定目录
# BDUSS = 从百度COOKICES中提取
# STOKEN = 从百度COOKICES中提取
# bdstoken = 从百度COOKICES中提取
furl = ''
verify = ''
savepath = '/临时文件/pic图片'
BDUSS = ''
STOKEN = ''
bdstoken = ''
#调用百度分享转存函数,info是返回的信息,如果是'转存成功。'说明保存成功了
info = bdsave(furl, verify, savepath, BDUSS, STOKEN, bdstoken)
if __name__ == '__main__':
main()
参考资料:https://www.52pojie/thread-1005198-1-1.html
版权声明:本文标题:百度分享链接批量转存到百度网盘 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/dianzi/1727903492a1137155.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论