Python上传文件到百度网盘(一)

前言

最近由于突发奇想要下载某网站电影,当然资源也是爬来的,然后是一堆M3u8格式的URL,为了保证防止资源后续失效的情况,打算先下载下来,然后加密压缩(~。~你懂的),然后上传百度网盘,哈哈。下面就开始我们的冒险之旅吧~~

第一步:研究百度网盘开放平台api

https://pan.baidu.com/union/document/entrance

第二部:建立应用获取对应的appkey巴拉巴拉。。。目的就是为了获取百度api的token

这里,我们使用最简单获取token的方法:

 再贴一张图:

这里操作完呢,我们的token就到手了,一个月过期哈,够我们自己折腾了,如果要上云的话,就参考server的获取token的方式,可以直接吧token丢到你的接口里面,想存哪存哪,还可以二次刷新,这里不拓展了。

第三部:撸代码

这里我就使用到了上传文件的接口,如需其他接口也是一样的哈,不多说了上代码:

# -*- coding: UTF-8 -*-
import os.path

import demjson
import requests


def pre_create_file(access_token, remote_path, local_path, block_list, content_md5, slice_md5):
    url = "http://pan.baidu.com/rest/2.0/xpan/file?method=precreate&access_token=" + access_token
    file_size = os.path.getsize(local_path)
    payload = {'path': remote_path,
               'size': file_size,
               'rtype': '3',
               'isdir': '0',
               'autoinit': '1',
               'block_list': block_list,
               'content-md5': content_md5,
               'slice-md5': slice_md5
               }
    files = [

    ]
    headers = {
        'Cookie': 'BAIDUID=56BE0870011A115CFA43E19EA4CE92C2:FG=1; BIDUPSID=56BE0870011A115CFA43E19EA4CE92C2; PSTM=1535714267'
    }
    response = requests.request(method="POST", url=url, headers=headers, data=payload, files=files)
    print("pre_create_file resp is ", response.text.encode('utf8'))
    return demjson.decode(response.text.encode('utf8'))


def part_upload(access_token, remote_path, upload_id, seq, local_path):
    url = "https://d.pcs.baidu.com/rest/2.0/pcs/superfile2?method=upload&access_token=" + access_token + \
          "&path=" + remote_path + \
          "&type=tmpfile&uploadid=" + upload_id + \
          "&partseq=" + str(seq)
    payload = {}
    files = [
        ('util', open(local_path, 'rb'))
    ]
    headers = {
        'Cookie': 'BAIDUID=56BE0870011A115CFA43E19EA4CE92C2:FG=1; BIDUPSID=56BE0870011A115CFA43E19EA4CE92C2; PSTM=1535714267'
    }

    response = requests.request("POST", url, headers=headers, data=payload, files=files)

    print(response.text.encode('utf8'))


def create_remote_file(access_token, remote_path, upload_id, size, block_list):
    url = "https://pan.baidu.com/rest/2.0/xpan/file?method=create&access_token=" + access_token

    payload = {'path': remote_path,
               'size': size,
               'rtype': '1',
               'isdir': '0',
               'uploadid': upload_id,
               'block_list': block_list}
    files = [

    ]
    headers = {
        'Cookie': 'BAIDUID=56BE0870011A115CFA43E19EA4CE92C2:FG=1; BIDUPSID=56BE0870011A115CFA43E19EA4CE92C2; PSTM=1535714267'
    }
    response = requests.request("POST", url, headers=headers, data=payload, files=files)
    print(response.text.encode('utf8'))

这个文件呢,就是我们可爱的上传文件的百度网盘的接口了。

总结:

好啦好啦,小渃先和你讲到这,下班了下班了,要回家看电视了,后续再更。

 

  • 3
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
### 回答1: 好的,这是一个技术问题,我可以回答。下面是一个简单的Python类示例,可以用来上本地文件到百度盘: ```python import requests import json class BaiduNetdiskUploader: def __init__(self, access_token): self.access_token = access_token self.upload_url = 'https://pan.baidu.com/rest/2.0/xpan/file?method=upload&access_token=' + access_token def upload_file(self, file_path, save_path='/'): file_name = file_path.split('/')[-1] headers = {'User-Agent': 'Mozilla/5.0'} data = {'path': save_path + file_name} files = {'file': open(file_path, 'rb')} response = requests.post(self.upload_url, headers=headers, data=data, files=files) result = json.loads(response.text) if 'error_code' in result: print('Upload failed: ' + result['error_msg']) else: print('Upload success: ' + file_name) # 使用示例 access_token = 'your_baidu_netdisk_access_token' uploader = BaiduNetdiskUploader(access_token) uploader.upload_file('/path/to/your/local/file') ``` 在这个示例中,我们通过调用百度盘的API,使用access_token进行身份验证,并上本地文件到指定的目录。你需要将 `your_baidu_netdisk_access_token` 替换为你自己的百度盘access_token,`/path/to/your/local/file` 替换为你想要上的本地文件路径。 ### 回答2: 要使用Python编写一个类来实现将本地文件到百度盘,可以按照以下步骤进行编写: 1. 首先需要导入必要的模块,例如bypy和os模块。bypy是百度云盘的Python API接口库,可用于控制文件的上和下载操作。 2. 创建一个类,例如BaiduNetDiskUploader,作为文件器。 3. 在类的构造函数中,可以初始化bypy的API对象,这需要输入百度云盘的应用授权信息。 4. 可以定义一个上文件的方法,例如upload_file方法,该方法需要入本地文件的路径作为参数。在方法体内,可以使用os.path模块获取文件名和文件夹路径。 5. 在upload_file方法中,可以调用bypy的upload方法,将本地文件到百度盘。upload方法需要入两个参数,分别是文件路径和上到百度盘的目标路径。 下面是一个示例代码: ```python import os import bypy class BaiduNetDiskUploader: def __init__(self, app_key, app_secret): self.client = bypy.BaiduYun(app_key, app_secret) def upload_file(self, file_path): file_name = os.path.basename(file_path) target_path = "/path/to/upload/destination/" # 设置上到百度云的目标路径 self.client.upload(file_path, target_path + file_name) # 示例用法 app_key = "your_app_key" app_secret = "your_app_secret" uploader = BaiduNetDiskUploader(app_key, app_secret) local_file_path = "/path/to/local/file.txt" uploader.upload_file(local_file_path) ``` 以上示例代码仅供参考,具体的百度云盘授权信息、文件路径等需要根据实际情况进行修改。另外,还可以根据需要添加其他功能,例如下载文件、创建文件夹等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

轩渃

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值