04db423416
- 70 skills with code and documentation - Add .gitignore (ignore __pycache__, output/, temp/, venv/) - Clean up test intermediates and caches
4.4 KiB
4.4 KiB
name, description
| name | description |
|---|---|
| youtube-downloader | 使用 Savenow API 下载 YouTube 视频/音频。调用第三方 API 直接获取下载链接,无需 cookies。当用户提到下载 YouTube、视频下载、YT 下载时触发此技能。 |
YouTube Downloader Skill
使用 Savenow API 下载 YouTube 视频/音频的技能。
概述
- API 来源: 从 Chrome 插件 "Youtube Tools All in one" (Tampermonkey 脚本) 提取
- API 服务: savenow.to / lbserver.xyz
- API Key:
dfcb6d76f2f6a9894gjkege8a4ab232222(来自插件内置) - 无需 cookies: 直接通过 API 调用,无需登录验证
- 稳定性: 已验证可用,视频和音频都能下载
适用场景
- 下载 YouTube 视频(mp4, webm 等格式)
- 下载 YouTube 音频(mp3, flac, m4a 等格式)
- 无需 cookies / 登录验证
核心参数
- API Base:
https://p.savenow.to或https://p.lbserver.xyz - API Key:
dfcb6d76f2f6a9894gjkege8a4ab232222(来自 Tampermonkey 插件 Youtube Tools All in one) - 备用 API:
https://dub.io(通过https://dubs.io/wp-json/tools/v1/download-video)
视频格式
| format 值 | 说明 |
|---|---|
| 144 | 144p Mp4 |
| 240 | 240p Mp4 |
| 360 | 360p Mp4 |
| 480 | 480p Mp4 |
| 720 | 720p HD Mp4 |
| 1080 | 1080p FULL HD Mp4 |
| 4k | 2160p 4K WEBM |
| 8k | 4320p 8K WEBM |
音频格式
| format 值 | 说明 |
|---|---|
| mp3 | Audio MP3 |
| m4a | Audio M4A |
| flac | Audio FLAC |
| wav | Audio WAV |
| aac | Audio AAC |
| opus | Audio OPUS |
| ogg | Audio OGG |
使用方法
1. 请求下载
curl "https://p.savenow.to/ajax/download.php?copyright=0&allow_extended_duration=1&format=mp3&url=VIDEO_URL&api=API_KEY"
返回 JSON:
{
"success": true,
"id": "1CXjdNLFuewLXLBpOMu3BGJ",
"title": "视频标题",
"info": {
"title": "视频标题"
},
"progress_url": "https://p.savenow.to/api/progress?id=1CXjdNLFuewLXLBpOMu3BGJ"
}
获取标题(Python):
import json
import re
with open('response.json', 'rb') as f:
content = f.read()
match = re.search(rb'"title":"([^"]+)"', content)
escaped = match.group(1).decode('ascii')
title = bytes(escaped, 'ascii').decode('unicode_escape')
# title 就是视频标题
参数说明:
format: 视频或音频格式url: YouTube 视频 URLapi: API Key:dfcb6d76f2f6a9894gjkege8a4ab232222copyright: 0allow_extended_duration: 1
返回 JSON:
{
"success": true,
"id": "1CXjdNLFuewLXLBpOMu3BGJ",
"progress_url": "https://p.savenow.to/api/progress?id=1CXjdNLFuewLXLBpOMu3BGJ"
}
2. 轮询下载链接
curl "https://p.savenow.to/api/progress?id=VIDEO_ID"
当 success: 1 且 progress: 1000 时,返回 download_url。
3. 下载文件
curl -L -o output.mp3 "DOWNLOAD_URL"
Python 示例
import requests
import time
API_KEY = 'dfcb6d76f2f6a9894gjkege8a4ab232222'
BASE_URL = 'https://p.savenow.to'
def download_youtube(url, format='mp3', output_path='output.mp3'):
# 1. 请求下载
params = {
'copyright': '0',
'allow_extended_duration': '1',
'format': format,
'url': url,
'api': API_KEY
}
resp = requests.get(f'{BASE_URL}/ajax/download.php', params=params)
data = resp.json()
if not data.get('success'):
raise Exception(f'Request failed: {data}')
progress_id = data['id']
progress_url = data['progress_url']
# 2. 轮询直到完成
while True:
time.sleep(3)
resp = requests.get(progress_url)
status = resp.json()
if status.get('success') == 1 and status.get('progress') == 1000:
download_url = status['download_url']
break
# 3. 下载文件
resp = requests.get(download_url, stream=True)
with open(output_path, 'wb') as f:
for chunk in resp.iter_content(chunk_size=8192):
f.write(chunk)
return output_path
# 使用
download_youtube('https://www.youtube.com/watch?v=VIDEO_ID', 'mp3', 'video.mp3')
注意事项
- API 不稳定时: 会自动尝试备用 API (
p.lbserver.xyz) - 下载链接有效期: 获取后尽快下载
- 支持地区: API 可能因地区不同而有差异
- 商业用途: API 为免费使用,但有商业合作联系方式
参考
- 插件源码:
Youtube Tools All in one local download mp3 mp4 - API 来源:
savenow.to