115driver
This is a 115 cloud driver package.
Ask AI about 115driver
Powered by Claude Β· Grounded in docs
I know everything about 115driver. Ask me about installation, configuration, usage, or troubleshooting.
0/500
Reviews
Documentation
115driver
A comprehensive Go library, CLI tool, and MCP server for 115 cloud storage. It provides a full-featured driver for 115.com's API, supporting login, file operations, upload/download, offline downloads, and more.
Table of Contents
- Features
- Installation
- Quick Start
- CLI
- MCP Server
- API Reference
- Troubleshooting
- Project Structure
- Contributing
- License
Features
Authentication β Cookie-based login, QR code login, and user identity verification.
File Operations β List, rename, move, copy, delete, download, upload (with rapid upload via SHA1 deduplication and multipart upload via Aliyun OSS), search with filters, and get file info/statistics.
Offline Downloads β Add HTTP, ED2K, and magnet link download tasks; list, delete, and clear tasks.
Share β Create share links and download files via share code.
Recycle Bin β List, restore, and permanently delete items.
CLI β Full-featured command-line interface with colored table output, JSON mode for scripts, shell completions, and multiple profile support.
MCP Server β Model Context Protocol server for AI application integration (Claude Desktop, Cursor, etc.).
Installation
go get github.com/SheltonZhu/115driver
Quick Start
Basic Usage
package main
import (
"github.com/SheltonZhu/115driver/pkg/driver"
"log"
)
func main() {
// Option 1: Import credentials from cookie string
cr, err := driver.CredentialFromCookie("your_cookie_string")
if err != nil {
log.Fatalf("Failed to create credential: %v", err)
}
// Option 2: Create credentials manually
// cr := &driver.Credential{
// UID: "your_uid",
// CID: "your_cid",
// SEID: "your_seid",
// KID: "your_kid",
// }
// Create client with credentials
client := driver.Default().ImportCredential(cr)
// Check login status
if err := client.LoginCheck(); err != nil {
log.Fatalf("Login failed: %v", err)
}
log.Println("Successfully logged in!")
}
Common Operations
The examples below assume you have an authenticated client (see Basic Usage above).
// Download a file using pickcode
downloadInfo, err := client.Download("pickcode_here")
if err != nil { /* handle error */ }
fileReader, _ := downloadInfo.Get()
defer fileReader.Close()
// write fileReader to file...
// Upload a file (auto-selects rapid upload or multipart via OSS)
file, _ := os.Open("/path/to/local/file.zip")
defer file.Close()
fileInfo, _ := file.Stat()
uploadID, err := client.RapidUploadOrByOSS(
"0", // parent directory ID ("0" for root)
fileInfo.Name(),
fileInfo.Size(),
file,
)
// List files in root directory
files, err := client.List("0")
for _, f := range files {
log.Printf("File: %s, Size: %d, Type: %s", f.Name, f.Size, f.Type)
}
// Search for files
results, err := client.Search(&driver.SearchOption{
SearchValue: "document",
Limit: 100,
})
for _, r := range results.Files {
log.Printf("File: %s, Size: %d", r.Name, r.Size)
}
// Add offline download task
taskIDs, err := client.AddOfflineTaskURIs(
[]string{"https://example.com/file.zip"},
"0", // "0" for root directory
)
CLI
115driver includes a CLI tool for interacting with 115 cloud storage from the command line, designed for both human use (colored table output) and AI agent consumption (--json flag).
Install
go install github.com/SheltonZhu/115driver/cmd/115driver@latest
Authentication
# QR code login (interactive)
115driver login
# Cookie login
115driver login --cookie "UID=xxx;CID=xxx;SEID=xxx;KID=xxx"
# Verify identity
115driver whoami
Credentials are stored in ~/.115driver/config.toml and support multiple profiles.
Authentication Priority
--cookieflagDRIVER115_COOKIEenvironment variable- Config file (
~/.115driver/config.toml)
Additional env vars: DRIVER115_CONFIG (config path), DRIVER115_PROFILE (profile name).
Commands
# List files
115driver ls /path/to/dir
115driver ls -l /path/to/dir # detailed view
# File info
115driver stat /path/to/file
# Create directories
115driver mkdir /new/dir
115driver mkdir -p /deep/nested/dir # create parents
# Move / Copy / Rename / Delete
115driver mv /source/file /dest/dir
115driver cp /source/file /dest/dir
115driver rename /path/to/file new_name
115driver rm /path/to/file
# Upload & Download
115driver upload /local/file /remote/dir
115driver download /remote/file /local/dir
# Search
115driver search keyword
115driver search keyword -t video # filter by type
115driver search keyword --sort size # sort results
# Offline downloads (HTTP/ED2K/magnet)
115driver offline add <url>
115driver offline add <url> -d /save/dir
115driver offline list
115driver offline rm <hash>
JSON Output
All commands support --json for machine-readable output:
115driver --json ls /path/to/dir
115driver --json stat /path/to/file
Shell Completion
# Bash
echo 'source <(115driver completion bash)' >> ~/.bashrc
# Zsh
echo 'source <(115driver completion zsh)' >> ~/.zshrc
# Fish
115driver completion fish > ~/.config/fish/completions/115driver.fish
MCP Server
115driver includes an MCP (Model Context Protocol) server for AI application integration (Claude Desktop, Cursor, etc.).
Install
Option 1: go install
go install github.com/SheltonZhu/115driver/mcp@latest
Option 2: build from source
git clone https://github.com/SheltonZhu/115driver.git
cd 115driver
go build -o 115driver-mcp-server ./mcp/
Usage
# If installed via go install:
mcp --cookie="UID=xxx;CID=xxx;SEID=xxx;KID=xxx"
# If built from source:
./115driver-mcp-server --cookie="UID=xxx;CID=xxx;SEID=xxx;KID=xxx"
Available Tools
| Category | Tools |
|---|---|
| Directory | listDirectory |
| File | stat, mkdir, delete, rename, move, copy, upload_from_url, upload_from_local, download_file, get_download_info |
| Search | search |
| Offline | listOfflineTasks, addOfflineTaskURIs, deleteOfflineTasks, clearOfflineTasks |
| Share | getShareSnap |
| Recycle | listRecycleBin, revertRecycleBin, cleanRecycleBin |
Configure with Claude Desktop
Add to your claude_desktop_config.json:
{
"mcpServers": {
"115driver": {
"command": "mcp",
"args": ["--cookie=UID=xxx;CID=xxx;SEID=xxx;KID=xxx"]
}
}
}
API Reference
For detailed API documentation, visit pkg.go.dev.
Troubleshooting
Login Issues
If you encounter login issues:
- Make sure your cookie is valid and not expired
- Check that all required fields (UID, CID, SEID, KID) are present
- Try logging in through the web interface first to obtain a fresh cookie
Upload/Download Issues
If upload or download fails:
- Verify file paths are correct
- Check your internet connection
- Ensure you have sufficient storage space
- Check the returned error message for specific details
Rate Limiting
The 115 API may have rate limits. If you encounter rate limiting errors:
- Add delays between operations
- Implement retry logic with exponential backoff
- Consider using a proxy if needed
Project Structure
115driver/ # Go 1.23+
βββ cmd/
β βββ 115driver/ # CLI entry point (go install binary)
βββ cli/ # CLI implementation
β βββ cmd/ # Cobra commands
β βββ internal/ # Internal packages (auth, output, resolver)
βββ pkg/
β βββ driver/ # Core driver (client, login, file, upload, download, search, share, offline)
β βββ crypto/ # Cryptography utilities (ECDH, AES, RSA)
βββ mcp/ # MCP server (stdin/stdout JSON-RPC 2.0)
βββ main.go # Entry point
βββ server/tools/ # Tool implementations (dir, file, search, offline, share, recycle)
Star History
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
Contributors
|
SheltonZhu |
xhofe |
Ovear |
power721 |
