吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 5189|回复: 11
收起左侧

[Python 转载] 批量读取excel百度链接转存到自己的百度网盘

[复制链接]
香谢枫林 发表于 2019-12-27 22:25
本帖最后由 香谢枫林 于 2019-12-27 22:28 编辑

最近遇到一批百度链接,想要转存到自己的网盘里,于是写了一个脚本,共享给大家。
PS:附件里有脚本代码......以及300多套图链接
语言:Python3
功能:批量读取excel百度链接转存到自己的百度网盘指定目录

第一步:获取自己百度网盘的BDUSS,STOKEN,bdstoken这三个数据,方法:登录百度网盘,通过浏览器开发者模式获取这些信息,参考如下
2019-12-27_22-07-10.jpg

2019-12-27_22-07-20.jpg

第二步:把参数填入代码主程序,调试执行代码即可。
[Python] 纯文本查看 复制代码
#!/usr/local/Cellar/python/3.7.1/bin
# -*- coding: UTF-8 -*-
import requests,re,time,random,os,xlrd
path = os.getcwd()

#获取当前时间戳
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.com/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.com/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.com/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.com/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])

# 从Excel中读取分享链接和提取密码(默认第一列是链接、第二列是提取密码)
def read_excel():
    filePath = os.path.join(os.getcwd(), "PartyCat.xls")
    workbook = xlrd.open_workbook(filePath)
    sheet1 = workbook.sheet_by_index(0)
    listurl = []
    listpwd = []
    rownum = sheet1.nrows
    for row in range(rownum):
        listurl.append(sheet1.cell_value(row, 0))
        listpwd.append(sheet1.cell_value(row, 1))
    return listurl,listpwd

def main():
    # 百度网盘转存,注:BDUSS,STOKEN,bdstoken 参数要自己获取
    #   furl = 分享链接
    #   verify = 提取码
    #   savepath = 转存到百度网盘指定目录
    #   BDUSS = 从百度COOKICES中提取
    #   STOKEN = 从百度COOKICES中提取
    #   bdstoken = 从百度COOKICES中提取
    savepath = '/临时文件/pic图片'
    BDUSS = ''
    STOKEN = ''
    bdstoken = ''

    listurl, listpwd = read_excel()
    for index in range(len(listurl)):
        time.sleep(random.randint(1, 5))
        srcurl = listurl[index]
        srcpwd = listpwd[index]
        print('第'+str(index + 1)+'条: '+str(srcurl)+'  '+str(srcpwd))
        info = bdsave(srcurl, srcpwd, savepath, BDUSS, STOKEN, bdstoken)
        print(info)


if __name__ == '__main__':
    main()


执行效果如下:
2019-12-27_22-01-55.jpg

执行后,百度网盘转存情况如下:
2019-12-27_22-02-29.jpg
脚本代码打包如下(密码:52pojie): 百度网盘批量转存.rar (22.11 KB, 下载次数: 92)

注:百度网盘转存功能参考了论坛一位大神的帖子:https://www.52pojie.cn/thread-1005198-1-1.html

免费评分

参与人数 4吾爱币 +6 热心值 +4 收起 理由
zqqzqqzqq + 1 + 1 老是显示cookie失效,哭了
wushaominkk + 3 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
为海尔而战 + 1 + 1 我很赞同!
愚无尽 + 1 + 1 支持原创!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

愚无尽 发表于 2019-12-27 22:31
对于用得到的人就非常实用了,谢谢分享!
HighBox 发表于 2019-12-27 22:34
HighBox 发表于 2019-12-27 23:33
 楼主| 香谢枫林 发表于 2019-12-28 08:32
HighBox 发表于 2019-12-27 23:33
楼楼主。我可发到github上吗?

可以啊!
weliong 发表于 2019-12-28 08:36
python是个好东西,不过有点忘光了,得复习复习
ycy0536 发表于 2019-12-28 09:00
如果能以软件的形式就好了
MOEYU_VANILLA 发表于 2019-12-28 10:05
感谢分享
HighBox 发表于 2019-12-28 12:08

谢谢楼主
iamoutdoors 发表于 2019-12-28 21:57
谢谢分享。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 23:32

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表