【Python&网络通信】基于Bypy调用百度网盘api实现自动上传和下载网盘文件

        网盘对于大家的生活工作可以说是息息相关,但是如果每天都重复去上传下载文件就会很浪费时间,所以有没有什么办法可以解放双手?那就是网盘接口,本文通过Bypy库实现百度网盘的自动上传和下载文件。

原创作者:RS迷途小书童

博客地址:https://blog.csdn.net/m0_56729804?type=blog

        百度网盘官网有另一种方法,但是目前只针对企业可以申请。这里使用的bypy库可以个人授权,但是弊端就是文件只能存放在网盘app/bypy目录下。

1 获取授权

        这里的获取方法很简单,安装好bypy库后运行下面的代码,命令行中就会弹出网页链接,点击链接复制授权码,粘贴至命令行中回车即可。(我用的Pycharm)

# -*- coding: utf-8 -*-
"""
@Time : 2023/11/3 14:37
@Auth : RS迷途小书童
@File :Baidu Net disk Function.py
@IDE :PyCharm
@Purpose:百度网盘上传下载接口
@Web:博客地址:https://blog.csdn.net/m0_56729804
"""
from bypy import ByPy
bp = ByPy()
print(bp.list())

2 上传文件

# -*- coding: utf-8 -*-
"""
@Time : 2023/11/3 14:37
@Auth : RS迷途小书童
@File :Baidu Net disk Function.py
@IDE :PyCharm
@Purpose:百度网盘上传下载接口
@Web:博客地址:https://blog.csdn.net/m0_56729804
"""


def upload_file(src_file="C:/1/1.png", target_file="/1/2.png"):
    bp = ByPy()
    bp.upload(
        localpath=src_file,
        remotepath=target_file
    )  # 第一个参数是需要上传的文件绝对路径,第二个参数是希望的名称(路径)


def upload_path(src_path=r"C:/1", target_path="文件夹1"):
    bp = ByPy()
    bp.syncup(
        src_path,
        target_path
    )  # 第一个参数是需要上传的文件夹绝对路径,第二个参数是目标的文件夹目录

3 下载文件

# -*- coding: utf-8 -*-
"""
@Time : 2023/11/3 14:37
@Auth : RS迷途小书童
@File :Baidu Net disk Function.py
@IDE :PyCharm
@Purpose:百度网盘上传下载接口
@Web:博客地址:https://blog.csdn.net/m0_56729804
"""


def download_file(src_file=r"/1/1.png", target_file=r"Z:\2.png"):
    bp = ByPy()
    bp.download(
        src_file,
        target_file
    )  # 第一个参数是需要下载的网盘文件路径,第二个参数是目标的文件目录/名称


def download_path(src_path=r"/test/", target_path=r"Z:/test/"):
    bp = ByPy()
    bp.syncdown(
        src_path,
        target_path
    )  # 第一个参数是需要下载的网盘文件夹路径,第二个参数是目标的文件夹目录/名称

4 问题解答

        1.上传/下载文件时报错:

        看下文件是否成功上传/下载,成功了就别管他的报错。有时候是因为编码不一致导致的。

        2.授权码怎么修改

        使用cmd进入bypy的Python环境后运行下面的指令

  • bypy list (展示app中的文件夹,提示输入token)
  • bypy -c(清空token)
  • bypy --help (帮助面板,显示所有功能)
### 回答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. 首先需要导入必要的模块,例如bypyos模块。bypy百度云网盘Python API接口库,可用于控制文件上传下载操作。 2. 创建一个类,例如BaiduNetDiskUploader,作为文件上传器。 3. 在类的构造函数中,可以初始化bypyAPI对象,这需要输入百度云网盘的应用授权信息。 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) ``` 以上示例代码仅供参考,具体的百度云网盘授权信息、文件上传路径等需要根据实际情况进行修改。另外,还可以根据需要添加其他功能,例如下载文件、创建文件夹等。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

RS迷途小书童

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

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

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

打赏作者

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

抵扣说明:

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

余额充值