{"_id":"115pan-node","_rev":"2-d0ac1b7bbf5777280149ad11c8c6bc52","name":"115pan-node","dist-tags":{"latest":"0.0.2"},"versions":{"0.0.1":{"name":"115pan-node","version":"0.0.1","_id":"115pan-node@0.0.1","maintainers":[{"name":"ishikawa-kaito","email":"x@ikaito.icu"}],"dist":{"shasum":"71534ac5b147debfa062535339fe0be8c5d367f0","tarball":"https://registry.npmjs.org/115pan-node/-/115pan-node-0.0.1.tgz","fileCount":17,"integrity":"sha512-z02v9/peuRb3gurbgqCWMIACPgPWqpcex9cM4k9pb/qrr5tptwxCDBtfEcQxuhvI6hTd9VVjUCcGUr9ZFXkhgw==","signatures":[{"sig":"MEUCICNEhB1XmYR7jH2chjn0/1dyvTWlTlMs4SQWeRisHXtoAiEAxUhzMGWGoNp6sa6EEuHcWQQJn9YGou+bDk1qwyCYxWI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":372917},"type":"module","module":"index.ts","scripts":{"demo":"bun run demo.ts"},"_npmUser":{"name":"ishikawa-kaito","email":"x@ikaito.icu"},"_npmVersion":"11.12.1","description":"[![npm version](https://img.shields.io/npm/v/115pan-node.svg)](https://www.npmjs.com/package/115pan-node) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) [![Bun](https://img.shields.io/badge/runt","directories":{},"_nodeVersion":"24.14.1","dependencies":{"qrcode-terminal":"^0.12.0"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"latest"},"peerDependencies":{"typescript":"^5"},"_npmOperationalInternal":{"tmp":"tmp/115pan-node_0.0.1_1775636060600_0.5191909002083315","host":"s3://npm-registry-packages-npm-production"}},"0.0.2":{"name":"115pan-node","version":"0.0.2","module":"index.ts","type":"module","scripts":{"demo":"bun run demo.ts"},"devDependencies":{"@types/bun":"latest"},"peerDependencies":{"typescript":"^5"},"dependencies":{"lz4js":"^0.2.0","qrcode-terminal":"^0.12.0"},"_id":"115pan-node@0.0.2","description":"[![npm version](https://img.shields.io/npm/v/115pan-node.svg)](https://www.npmjs.com/package/115pan-node) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) [![Bun](https://img.shields.io/badge/runt","_nodeVersion":"24.14.1","_npmVersion":"11.12.1","dist":{"integrity":"sha512-Ft64OFFuPRq/tKbHNufcQ6cPB2SVa/aUzy4LZ2GfSqrwR0uyE2r86nknx6fHXu0eH8Tag1B+d4QqWpvIm3vz5w==","shasum":"3c8d5a143bb14b697dcb287ddb8f54fd61ad2a32","tarball":"https://registry.npmjs.org/115pan-node/-/115pan-node-0.0.2.tgz","fileCount":19,"unpackedSize":398066,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIEXGdp9Ozm6UCjLVexQ8Y34kkLS2CiyMpw7bYvib+qoMAiEAiuwZO27IMuR3pjyODU9JR0jBn2x7HStCGD35RYi3OPg="}]},"_npmUser":{"name":"ishikawa-kaito","email":"x@ikaito.icu"},"directories":{},"maintainers":[{"name":"ishikawa-kaito","email":"x@ikaito.icu"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/115pan-node_0.0.2_1775645949581_0.4470186317026834"},"_hasShrinkwrap":false}},"time":{"created":"2026-04-08T08:14:20.599Z","modified":"2026-04-08T10:59:09.845Z","0.0.1":"2026-04-08T08:14:20.823Z","0.0.2":"2026-04-08T10:59:09.740Z"},"description":"[![npm version](https://img.shields.io/npm/v/115pan-node.svg)](https://www.npmjs.com/package/115pan-node) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) [![Bun](https://img.shields.io/badge/runt","maintainers":[{"name":"ishikawa-kaito","email":"x@ikaito.icu"}],"readme":"# 115pan-node\n\n[![npm version](https://img.shields.io/npm/v/115pan-node.svg)](https://www.npmjs.com/package/115pan-node)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n[![Bun](https://img.shields.io/badge/runtime-bun-black)](https://bun.sh)\n\n一个用于 115 网盘的 Node.js/Bun SDK，支持二维码登录、文件管理、下载链接获取等功能。\n\nA Node.js/Bun SDK for 115 Cloud Drive (115网盘), featuring QR code login, file management, download URL retrieval, and more.\n\n## 特性\n\n- 🔐 **二维码登录** - 支持扫码登录，自动保存 cookies\n- 📁 **文件系统操作** - 列目录、搜索、创建文件夹、移动/复制/删除文件\n- ⬇️ **下载链接获取** - 获取文件的下载直链\n- 📤 **上传支持** - 支持文件上传\n- 🔗 **离线下载/分享** - 离线任务与分享链接管理\n- 🍪 **Cookie 管理** - 自动持久化 cookies，支持自动重登录\n\n## 安装\n\n```bash\n# Using bun (recommended)\nbun add 115pan-node\n\n# Using npm\nnpm install 115pan-node\n\n# Using yarn\nyarn add 115pan-node\n\n# Using pnpm\npnpm add 115pan-node\n```\n\n## 快速开始\n\n### 创建客户端\n\n```typescript\nimport { P115Client } from \"115pan-node\";\n\n// 方式 1: 从 cookies 字符串创建\nconst client = new P115Client(\"UID=xxx; CID=xxx; SEID=xxx\");\n\n// 方式 2: 从 cookies 文件创建（推荐）\nconst client = await P115Client.fromPath(\"./115-cookies.txt\");\n\n// 方式 3: 空客户端，稍后登录\nconst client = new P115Client();\n```\n\n### 二维码登录\n\n```typescript\nimport { P115Client } from \"115pan-node\";\nimport qrcodeTerminal from \"qrcode-terminal\";\n\nconst client = new P115Client(undefined, {\n  cookiesPath: \"./115-cookies.txt\", // 自动保存 cookies\n});\n\nawait client.loginWithQrcode(\n  \"web\",\n  (qrcodeUrl, uid) => {\n    // 在终端打印 ASCII 二维码\n    qrcodeTerminal.generate(qrcodeUrl, { small: true }, console.log);\n    console.log(`请用 115 App 扫码登录 (UID: ${uid})`);\n  },\n  (status) => {\n    // status: 0=等待扫码, 1=已扫描待确认, 2=登录成功\n    console.log(\"状态:\", status);\n  }\n);\n\nconsole.log(\"登录成功！用户 ID:\", client.userId);\n```\n\n### 文件操作\n\n```typescript\n// 列出目录\nconst result = await client.fsFiles({ cid: 0, limit: 50 });\nconsole.log(\"文件列表:\", result.data);\n\n// 搜索文件\nconst search = await client.fsSearch({ search_value: \"关键词\", cid: 0 });\n\n// 创建文件夹\nawait client.fsMkdir({ cid: 0, file_name: \"新建文件夹\" });\n\n// 移动文件\nawait client.fsMove({ fid: \"文件ID\", pid: \"目标目录ID\" });\n\n// 复制文件\nawait client.fsCopy({ fid: \"文件ID\", pid: \"目标目录ID\" });\n\n// 删除文件/文件夹\nawait client.fsDelete({ fid: \"文件ID\" });\n```\n\n### 获取下载链接\n\n```typescript\n// 获取文件下载链接\nconst download = await client.downloadUrlWeb({ pickcode: \"文件提取码\" });\nconsole.log(\"下载地址:\", download.file_url);\n\n// 批量获取\nconst batch = await client.downloadUrlApp({ pickcode: \"code1,code2,code3\" });\n```\n\n### 分享链接\n\n```typescript\n// 获取分享链接信息\nconst info = await client.shareInfo({ share_code: \"分享码\" });\n\n// 保存分享文件到网盘\nawait client.shareReceive({\n  share_code: \"分享码\",\n  receive_code: \"提取码\",\n  fid: \"文件ID\",\n  cid: \"目标目录ID\"\n});\n```\n\n## API 参考\n\n### P115Client\n\n主客户端类，提供所有 API 方法。\n\n#### 构造函数\n\n```typescript\nnew P115Client(cookies?, options?)\n```\n\n- `cookies`: 可选，cookies 字符串或对象\n- `options`:\n  - `cookiesPath`: cookies 文件路径，自动读写\n  - `checkForRelogin`: 是否在收到 405 响应时自动重新登录\n\n#### 静态方法\n\n```typescript\nP115Client.fromPath(path, options?): Promise<P115Client>\n```\n\n从文件读取 cookies 并创建客户端实例。\n\n#### 文件系统方法\n\n| 方法 | 说明 |\n|------|------|\n| `fsFiles({ cid, limit, offset, ... })` | 列出目录内容 |\n| `fsSearch({ search_value, cid, ... })` | 搜索文件 |\n| `fsMkdir({ cid, file_name })` | 创建文件夹 |\n| `fsMove({ fid, pid })` | 移动文件 |\n| `fsCopy({ fid, pid })` | 复制文件 |\n| `fsDelete({ fid })` | 删除文件 |\n| `fsRename({ fid, file_name })` | 重命名 |\n| `fsInfo({ fid })` | 获取文件信息 |\n| `fsGetPath({ fid })` | 获取文件路径 |\n\n#### 下载方法\n\n| 方法 | 说明 |\n|------|------|\n| `downloadUrlWeb({ pickcode })` | 获取下载链接（Web 接口） |\n| `downloadUrlApp({ pickcode })` | 获取下载链接（App 接口） |\n| `downloadFolders({ pickcode })` | 获取下载文件夹列表 |\n| `downloadFiles({ pickcode })` | 获取下载文件列表 |\n\n#### 登录方法\n\n| 方法 | 说明 |\n|------|------|\n| `loginQrcodeToken(app)` | 获取二维码 token |\n| `loginQrcodeScanStatus({ uid, time, sign })` | 查询扫码状态 |\n| `loginQrcodeScanResult(uid, app)` | 获取登录结果 |\n| `loginWithQrcode(app, onQrcode, onStatus)` | 完整扫码登录流程 |\n\n#### 分享方法\n\n| 方法 | 说明 |\n|------|------|\n| `shareInfo({ share_code })` | 获取分享信息 |\n| `shareReceive({ share_code, receive_code, ... })` | 保存分享文件 |\n| `offlineTaskAdd({ url })` | 添加离线任务 |\n\n## 运行演示\n\n```bash\n# 克隆项目\ngit clone https://github.com/yourusername/115pan-node.git\ncd 115pan-node\n\n# 安装依赖\nbun install\n\n# 运行演示（扫码登录）\nbun run demo\n\n# 使用保存的 cookies\nbun run demo:save\n```\n\n## 开发\n\n```bash\n# 运行测试\nbun test\n\n# 构建产物\nbun build ./index.ts --outdir ./dist\n```\n\n## 类型导出\n\n```typescript\n// 主要类型\nexport type { P115ClientOptions, RequestOptions };\nexport type { P115CookiesData, DirNode, P115URL };\n\n// 错误类\nexport {\n  P115OSError,\n  P115AuthenticationError,\n  P115BusyOSError,\n  P115DataError,\n  P115OperationalError,\n  P115AccessError,\n  P115FileTooBig,\n  P115ExceededError,\n  P115InvalidArgumentError,\n  P115NoSpaceError,\n  P115NotSupportedError,\n  P115LoginError,\n};\n```\n\n## 注意事项\n\n- 本项目为非官方 SDK，仅供学习研究使用\n- 请合理使用 API，避免频繁请求\n- Cookies 包含敏感信息，请妥善保管\n\n## License\n\n[MIT](LICENSE)\n\n## 贡献\n\n欢迎提交 Issue 和 Pull Request！\n","readmeFilename":"README.md"}