Video Fetch Download

v1.1.9

Download videos from 1000+ sites, torrents, and magnet links directly to 115 or Quark cloud storage via server-side or local downloads.

2· 368· 12 versions· 1 current· 1 all-time· Updated 15h ago· MIT-0

Install

openclaw skills install video-fetch-download

video-fetch-download

中文简介: 视频与种子下载神器,支持:①按片名搜索磁力链并一键提交115离线下载(magnet_search.py,支持中文片名自动转换,基于Knaben API + apibay双源);②磁力链/种子URL通过115网盘离线下载(服务器端,不占本机带宽);③夸克网盘磁力/URL离线下载;④夸克网盘分享链接一键转存;⑤YouTube/Bilibili/Twitter等1000+网站视频通过yt-dlp下载并上传至网盘,支持Google Drive、OneDrive、Dropbox等40+云存储。一键安装脚本(含SHA256校验),115支持扫码登录,夸克需手动提取一次Cookie(有效期数月)。

⚠️ 夸克说明: 夸克网盘未开放扫码登录API,首次使用需从浏览器手动复制Cookie,操作约1分钟,之后数月内无需重复。


Download videos and torrents directly to cloud storage. Five input modes:

InputToolDestinationBandwidth
Magnet / Torrent URL115 offline API115 PanZero (server-side)
Magnet / URLquark_offline.pyQuark PanZero (server-side)
Quark share linkquark_save.pyQuark PanZero (server-side)
Video URL (YT/Bili/etc.)yt-dlp + rclone115 PanLocal download
Local .torrent filearia2c + rclone115 PanLocal download

Installation

Run the one-command installer. It detects your OS/arch and installs all dependencies:

bash scripts/install.sh

Installs: yt-dlp, rclone (115-patched build), aria2, python3.12, p115client

All binaries are verified with SHA256 checksums before installation.


Authentication

115 Pan — QR code login (recommended, TV mode)

TV mode does not compete with your phone/browser sessions:

python3 scripts/115_qrlogin.py
# Scan the QR code with 115 App → confirm → done
# Credentials are saved securely to rclone config (chmod 600)

Re-login when cookie expires: python3 scripts/115_qrlogin.py

Quark Pan — Cookie (manual, one-time setup)

⚠️ Note: Quark does not provide a public QR code login API. Authentication requires manually extracting a browser Cookie. The cookie is valid for several months and only needs to be set once.

Steps:

  1. Open https://pan.quark.cn in a browser and log in
  2. Press F12 → Network tab → Refresh the page
  3. Click any request → Request Headers → Copy the cookie field
  4. Run the setup wizard:
python3 scripts/quark_login.py
# Paste your cookie when prompted
# It is saved to ~/.config/video-fetch/quark_cookie.txt (chmod 600)

Usage

Search & submit to 115 (v1.1.3)

# Search only (Knaben API, auto-fallback to apibay)
python3 scripts/magnet_search.py "电影名"

# Search and auto-submit best result to 115
python3 scripts/magnet_search.py "电影名" --submit

# Submit specific result (e.g. #2)
python3 scripts/magnet_search.py "电影名" --submit --index 2

# Use apibay only
python3 scripts/magnet_search.py "Movie Name" --source apibay

# Merge results from both sources
python3 scripts/magnet_search.py "Movie Name" --source both

Supports Chinese titles (auto-mapped to English for search). Powered by Knaben API (primary) + apibay/TPB (fallback). Use --source both to merge results from both sources.


Magnet link / Torrent URL → 115 offline download

python3.12 scripts/115_offline.py 'magnet:?xt=urn:btih:...'
python3.12 scripts/115_offline.py 'https://example.com/file.torrent'
python3.12 scripts/115_offline.py --list   # check task status

Magnet link / URL → Quark offline download

python3 scripts/quark_offline.py 'magnet:?xt=urn:btih:...'
python3 scripts/quark_offline.py 'https://example.com/file.torrent'
python3 scripts/quark_offline.py --list   # check task status
python3 scripts/quark_offline.py --login  # show cookie setup instructions

Quark share link → transfer to Quark Pan

python3 scripts/quark_save.py 'https://pan.quark.cn/s/xxxxxxxx'
python3 scripts/quark_save.py 'https://pan.quark.cn/s/xxxxxxxx' '/MyFolder'
python3 scripts/quark_save.py --list   # list Quark Pan root

Video URL → download and upload to 115

VIDEOFETCH_REMOTE=115drive:云下载 bash scripts/video_fetch.sh 'https://youtube.com/watch?v=...'

Local .torrent file → aria2c download and upload

bash scripts/video_fetch.sh /path/to/file.torrent 115drive:云下载

Environment Variables

VariableDefaultDescription
VIDEOFETCH_REMOTE115drive:云下载rclone remote:path for uploads
VIDEOFETCH_TMPDIR/tmp/video-fetchlocal staging directory

Supported Sites

All sites supported by yt-dlp: YouTube, Bilibili, Twitter/X, Instagram, TikTok, Vimeo, and 1000+ more.

yt-dlp --list-extractors | grep -i <site>

Other Cloud Storage

The skill uses rclone for uploads, which supports 40+ cloud storage providers. Any rclone-compatible remote works as a destination.

Supported providers (examples)

Providerrclone backendAuth methodNotes
Google DrivedriveOAuth (browser link)15 GB free
Microsoft OneDriveonedriveOAuth (browser link)Included with Microsoft 365
DropboxdropboxOAuth (browser link)2 GB free
PikPakpikpakOAuth (browser link)Also supports server-side offline download
pCloudpcloudOAuth (browser link)10 GB free, Europe-based
Proton DriveprotondriveUsername + password + 2FAPrivacy-focused
MegamegaUsername + password20 GB free, end-to-end encrypted
Backblaze B2b2API keyLow-cost object storage
Amazon S3s3API keyAnd 20+ S3-compatible providers
Any WebDAVwebdavUsername + passwordNextcloud, Owncloud, etc.
SFTPsftpSSH key or passwordAny SSH server

Setup (one-time) — Recommended method

The easiest way to connect Google Drive (or any OAuth provider) to a headless server is to authorize on your local machine first, then copy the token to the server.

Step 1 — On your local machine, install rclone:

# macOS
brew install rclone

# Windows: download from https://rclone.org/install/

# Linux
curl https://rclone.org/install.sh | sudo bash

Step 2 — Run the authorization wizard locally:

rclone config
# → n (new remote)
# → name it: gdrive
# → type: drive (Google Drive)
# → leave client_id and client_secret blank (press Enter)
# → scope: 1 (full access)
# → browser will open automatically → log in → allow access
# → y (use auto config)
# → n (not a team drive, unless you need it)
# → q (quit)

Step 3 — Copy the token to your server. On your local machine, find the token:

cat ~/.config/rclone/rclone.conf
# Find the [gdrive] section — copy the entire block

On your server, append it to rclone config:

cat >> ~/.config/rclone/rclone.conf << 'EOF'
[gdrive]
type = drive
token = {"access_token":"...","token_type":"Bearer",...}
EOF

Step 4 — Verify:

rclone lsd gdrive:

Once configured, use it as your download destination:

VIDEOFETCH_REMOTE=gdrive:Videos bash scripts/video_fetch.sh 'https://youtube.com/watch?v=...'

Usage

# Download YouTube video → upload to Google Drive
VIDEOFETCH_REMOTE=gdrive:Videos bash scripts/video_fetch.sh 'https://youtube.com/watch?v=...'

# Download to OneDrive
VIDEOFETCH_REMOTE=onedrive:Downloads bash scripts/video_fetch.sh 'https://...'

# Download to Dropbox
VIDEOFETCH_REMOTE=dropbox:Videos bash scripts/video_fetch.sh 'https://...'

Note: Downloads via yt-dlp use local bandwidth (file downloads to server first, then uploads to cloud). This differs from 115/Quark offline download which is server-side with zero local bandwidth.


Re-authentication

ServiceCommand
115 Panpython3 scripts/115_qrlogin.py
Quark Panpython3 scripts/quark_login.py

Security

Binary installation

  • yt-dlp is downloaded from the official yt-dlp/yt-dlp repository and verified against the official SHA2-256SUMS file before installation. Installation is aborted if verification fails.
  • rclone 115-fork is downloaded from gaoyb7/rclone-release (a fork with 115 Pan backend support) with pinned SHA256 checksums for all supported architectures. Installation is aborted if verification fails.
  • The rclone 115-fork is installed to ~/.local/bin/rclone (user directory only). It does not replace or modify any system-level rclone installation.

Credential handling

  • 115 Pan credentials are obtained via QR code scan (TV mode) and written directly to the rclone config file (chmod 600). They are never passed as command-line arguments and are not visible in the process list (ps aux).
  • Quark Pan cookie is manually extracted by the user from their own browser and stored at ~/.config/video-fetch/quark_cookie.txt (chmod 600).
  • All credentials are stored locally only and are never transmitted to any third party. They are only used to authenticate with the respective cloud service APIs (115 Pan, Quark Pan).

Other

  • video_fetch.sh does not use --js-runtimes node (no arbitrary JS execution via yt-dlp)
  • Torrent search uses public APIs only (Knaben, apibay) — no credentials required

Verified

  • 115 offline download (magnet → 115 server) ✅
  • 115 rclone direct access ✅
  • Quark offline download (magnet → Quark server) ✅
  • Quark share transfer ✅
  • yt-dlp + rclone upload pipeline ✅
  • aria2c torrent download ✅
  • One-command installer (with SHA256 verification) ✅
  • Dual search source: Knaben + apibay ✅
  • Chinese title auto-mapping ✅

Version tags

latestvk971tz7jafedmp8v5m9f44p4es82xtyg