Nodejs实现的一个百度网盘命令行工具

发布于 1周前 作者 h691938207 来自 nodejs/Nestjs

Nodejs实现的一个百度网盘命令行工具

还不是很成熟,使用之前需要到 http://demoapi.duapp.com/wiki/index.php 授权一下 =.=

安装 npm install -g baohe

使用 baohe use baidu 会提示输入用户密码

然后 baohe cp /path/to/your/file

接着 baohe ls 就能看到已经上传到网盘的文件

打开 pan.baidu.com 可以在 我的应用数据 > 测试应用 里面找到上传文件


2 回复

Nodejs 实现的一个百度网盘命令行工具

摘要

本文将介绍如何使用 Node.js 开发一个简单的百度网盘命令行工具。通过这个工具,你可以方便地进行文件的上传、下载、查看等操作。

准备工作

在开始之前,你需要先到 百度云开放平台 进行授权并获取 API Key 和 Secret Key。这些信息将会用于身份验证和调用百度网盘 API。

安装

首先,确保你已经安装了 Node.js 和 npm(Node 包管理器)。然后可以通过以下命令全局安装该工具:

npm install -g baohe

使用说明

安装完成后,你可以使用以下命令来初始化并登录:

baohe use baidu

系统会提示你输入从百度云开放平台获取的用户名和密码。输入后,你就可以开始使用命令行工具进行操作了。

文件上传

上传本地文件到百度网盘:

baohe cp /path/to/your/file
查看文件列表

查看当前百度网盘中的文件列表:

baohe ls

示例代码

下面是一个简化的示例代码片段,展示如何使用 Node.js 调用百度网盘 API 进行文件上传和列表查询:

const axios = require('axios');
const fs = require('fs');

// 获取 API Key 和 Secret Key
const apiKey = 'YOUR_API_KEY';
const secretKey = 'YOUR_SECRET_KEY';

// 百度网盘 API 的基础 URL
const baseUrl = 'https://pan.baidu.com/rest/2.0/xpan/file';

// 文件上传函数
async function uploadFile(filePath) {
    const fileData = fs.readFileSync(filePath);
    const formData = new FormData();
    formData.append('file', fileData, filePath);

    try {
        const response = await axios.post(`${baseUrl}?method=upload`, formData, {
            headers: formData.getHeaders(),
            params: {
                access_token: 'YOUR_ACCESS_TOKEN',
            },
        });

        console.log('Upload successful:', response.data);
    } catch (error) {
        console.error('Error uploading file:', error.response ? error.response.data : error.message);
    }
}

// 文件列表查询函数
async function listFiles() {
    try {
        const response = await axios.get(`${baseUrl}?method=list`, {
            params: {
                access_token: 'YOUR_ACCESS_TOKEN',
            },
        });

        console.log('File list:', response.data);
    } catch (error) {
        console.error('Error listing files:', error.response ? error.response.data : error.message);
    }
}

// 示例调用
uploadFile('/path/to/your/file');
listFiles();

总结

以上代码展示了如何使用 Node.js 实现一个简单的百度网盘命令行工具。通过调用百度网盘 API,我们可以轻松地完成文件上传和列表查询等功能。希望这个示例能够帮助你快速上手开发自己的命令行工具。


这个帖子描述了一个用 Node.js 实现的百度网盘命令行工具。为了实现这个工具,你需要通过百度开放平台获取相应的 API Key 和 Secret Key,并且对这些密钥进行授权以便于你的应用程序能够访问百度网盘的 API。

示例代码

首先,你需要一个基本的框架来处理百度网盘的 API 调用。这里提供一个简单的示例,展示如何使用 request 库来上传文件到百度网盘:

const request = require('request');
const fs = require('fs');
const qs = require('querystring');

// 你的百度网盘的API key和secret key
const ACCESS_TOKEN_URL = 'https://openapi.baidu.com/oauth/2.0/token';
const UPLOAD_URL = 'https://c.pcs.baidu.com/rest/2.0/pcs/file';

function getAccessToken(client_id, client_secret) {
    return new Promise((resolve, reject) => {
        request.post({
            url: ACCESS_TOKEN_URL,
            form: {
                grant_type: 'client_credentials',
                client_id: client_id,
                client_secret: client_secret
            }
        }, (error, response, body) => {
            if (!error && response.statusCode === 200) {
                resolve(JSON.parse(body).access_token);
            } else {
                reject(error);
            }
        });
    });
}

async function uploadFile(filePath, accessToken) {
    const formData = {
        method: 'upload',
        path: '/test/' + filePath.split('/').pop(),
        access_token: accessToken
    };

    const fileStream = fs.createReadStream(filePath);
    const requestOptions = {
        uri: UPLOAD_URL,
        method: 'POST',
        formData: formData,
        headers: {
            'Content-Type': 'multipart/form-data'
        },
        formData: {
            file: fileStream
        }
    };

    return new Promise((resolve, reject) => {
        request(requestOptions, (err, res, body) => {
            if (err) {
                reject(err);
            } else {
                resolve(body);
            }
        });
    });
}

(async () => {
    try {
        const accessToken = await getAccessToken('YOUR_CLIENT_ID', 'YOUR_CLIENT_SECRET');
        const result = await uploadFile('/path/to/your/file', accessToken);
        console.log(result);
    } catch (error) {
        console.error(error);
    }
})();

解释

  1. getAccessToken: 这个函数负责通过百度的 OAuth 2.0 获取访问令牌。
  2. uploadFile: 这个函数用于上传文件到百度网盘。它接受文件路径和访问令牌作为参数,并使用百度网盘的 API 来执行文件上传操作。
  3. 主程序: 在主程序中,我们首先获取访问令牌,然后调用 uploadFile 函数来上传文件。

使用方法

  1. 安装依赖项:npm install request
  2. 替换 'YOUR_CLIENT_ID''YOUR_CLIENT_SECRET' 为从百度开放平台获得的实际值。
  3. 运行脚本:node script.js

以上代码仅供参考,实际部署时可能需要根据具体需求进行调整。

回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!