Install
openclaw skills install quark-auto-saveManage quark-auto-save(QAS, 夸克自动转存, 夸克转存, 夸克订阅) tasks via CLI.
openclaw skills install quark-auto-saveManage quark-auto-save(QAS, 夸克自动转存, 夸克转存, 夸克订阅) tasks via CLI.
When user send message like https://pan.quark.cn/s/***, get detail, add a QAS task.
WIKI:
Env:
QAS_BASE_URL - User provided, e.g., http://192.168.1.x:5005QAS_TOKEN - User providedActual configuration values are recorded in TOOLS.md, Do not modify SKILL.md
After the user sets the token, the following analysis must be performed and recorded in TOOLS.md:
Get Current Configuration:
python3 {baseDir}/scripts/qas_client.py get-config
Analyze Saving Habits:
savepath directory patterns from existing tasks (e.g., /video/tv/, /video/anime/, /video/movie/)pattern and replace fields — e.g., {TASKNAME}.S01E01.mp4 vs 01.mp4magic_regex key the user prefers (e.g. $TV_MAGIC)Record to TOOLS.md:
### quark-auto-save habits
- TV Series Directory: /video/tv/{name}
- Anime Directory: /video/anime/{name}
- Movie Directory: /video/movie/{name}
- Naming Pattern: $TV_MAGIC (e.g., 都是她的错.S01E01.mp4)
...
Use {baseDir}/scripts/qas_client.py for all operations:
python3 {baseDir}/scripts/qas_client.py get-config # Get all config & tasks
python3 {baseDir}/scripts/qas_client.py search "query" [-d] # Search resources
python3 {baseDir}/scripts/qas_client.py get-share "<shareurl>" [-a] # Get share detail (-a for all files)
python3 {baseDir}/scripts/qas_client.py check-path "/path" # Check savepath
python3 {baseDir}/scripts/qas_client.py delete-file "/path/to/file" # Delete cloud file
python3 {baseDir}/scripts/qas_client.py rename-file "/path/to/file" "new_name" # Rename cloud file
python3 {baseDir}/scripts/qas_client.py add-task '{"taskname": "Name", ...}' # Add task
python3 {baseDir}/scripts/qas_client.py run-task [taskname|json] # Run task(s)
python3 {baseDir}/scripts/qas_client.py update-task "TaskName" '{"savepath": "/new"}' # Update task
python3 {baseDir}/scripts/qas_client.py delete-task "TaskName" # Delete task
python3 {baseDir}/scripts/qas_client.py update-config '{"key": "value"}' # Update config
{
"taskname": "MediaName",
"shareurl": "https://pan.quark.cn/s/xxx#/list/share/fid",
"savepath": "/video/tv/MediaName",
"pattern": "$TV_MAGIC",
"replace": "",
"update_subdir": "",
"ignore_extension": false,
"runweek": [1,2,3,4,5,6,7]
}
Required Fields: taskname, shareurl, savepath
Optional Fields: pattern, replace, update_subdir, ignore_extension, runweek, addition
add-taskauto-detects zip/rar/7z files and enablesauto_unarchiveplugin automatically. No manualadditionconfig needed for this.
shareurl Formathttps://pan.quark.cn/s/{abc123}https://pan.quark.cn/s/{abc123}#/list/share/{fid}Archive files (zip, rar, 7z) are also supported — auto-unarchive is enabled automatically by
add-taskrun-task.
Get subdir info:
python3 {baseDir}/scripts/qas_client.py get-share "<shareurl>"
Add task example:
python3 {baseDir}/scripts/qas_client.py add-task '{"taskname": "Black Mirror", "shareurl": "https://pan.quark.cn/s/xxx", "savepath": "/video/tv/Black Mirror", "pattern": "$TV_MAGIC"}'
pattern & replace| Pattern | Replace | Result |
|---|---|---|
.* | Save all files | |
\.(mp4|mkv)$ | Save video files only | |
^(\d+)\.mp4 | S02E\1.mp4 | 01.mp4 → S02E01.mp4 |
$TV_MAGIC | Use custom magic regex |
replace Magic Variables| Variable | Description |
|---|---|
{TASKNAME} | Task name |
{II} | Index number (01, 02...) |
{EXT} | File extension |
{SXX} | Season (S01, S02...) |
{E} | Episode number |
{DATE} | Date (YYYYMMDD) |
python3 {baseDir}/scripts/qas_client.py search "MediaName" -dpython3 {baseDir}/scripts/qas_client.py get-share "<shareurl>"
shareurl is valid (not banned)pattern & replace: Compare the share's filenames with the user's preferred format (from TOOLS.md).
".*" (save as-is)pattern to capture episode/season info, and replace with magic variables to produce the preferred format01.mp4, preferred {TASKNAME}.S01E01.mp4 → "pattern": "^(\\d+)\\.mp4$", "replace": "{TASKNAME}.S01E\\1.{EXT}"X集全, 全X集, 完结, 全集, single movie) → run-taskadd-task# One-time (completed)
python3 {baseDir}/scripts/qas_client.py run-task '{"taskname": "MediaName", "shareurl": "...", "savepath": "...", "pattern": "..."}'
# Subscription (ongoing)
python3 {baseDir}/scripts/qas_client.py add-task '{"taskname": "MediaName", "shareurl": "...", "savepath": "...", "pattern": "..."}'
savepath and pattern must follow the user's existing habits recorded in TOOLS.mdpython3 {baseDir}/scripts/qas_client.py get-configshareurl_ban key in tasklistpython3 {baseDir}/scripts/qas_client.py search "<taskname>" -d to get a new shareurlpython3 {baseDir}/scripts/qas_client.py detail "<new_shareurl>" — check not banned, file list matchespython3 {baseDir}/scripts/qas_client.py update-task "TaskName" '{"shareurl": "<verified_url>", "shareurl_ban": ""}'python3 {baseDir}/scripts/qas_client.py delete-task "TaskName"
# Partial update (only specified fields are changed)
python3 {baseDir}/scripts/qas_client.py update-task "TaskName" '{"savepath": "/new/path"}'
python3 {baseDir}/scripts/qas_client.py update-task "TaskName" '{"pattern": "$TV_MAGIC", "runweek": [1,3,5]}'
# Update global config (allowed keys: cookie, crontab, push_config, tasklist, magic_regex, plugins, source)
python3 {baseDir}/scripts/qas_client.py update-config '{"crontab": "0 9 * * *"}'
python3 {baseDir}/scripts/qas_client.py run-task # All tasks
python3 {baseDir}/scripts/qas_client.py run-task "TaskName" # Specific task
python3 {baseDir}/scripts/qas_client.py run-task '{"taskname": "Test", ...}' # Direct task
All commands output text. First word indicates status:
OK on first line, followed by log lines