ClawSkills logoClawSkills

Media Downloader

从 YouTube/Bilibili/X/等 下载视频/音乐。

介绍

# Media Downloader

智能地从 URL(YouTube、Bilibili、X 等)下载媒体(视频/音乐)到相应的本地文件夹。

- **视频:** 保存到 `~/Movies/` 或 `~/Videos/`。 - **音乐:** 保存到 `~/Music/`。 - **播放列表:** 将项目保存到子目录中(例如 `~/Music/<playlist_name>/`)。

旨在与本地媒体服务器(例如 Universal Media Server、Jellyfin)配合使用,以便在电视/设备上即时播放。

## Agent 流程

当用户提供 URL 或要求下载媒体时,**你必须严格遵循此顺序:**

1. **确认:** - 立即回复用户:"Downloading with dl skill..."

2. **执行:** - 运行脚本: ```bash uv run --script ${baseDir}/dl.py "<url>" ```

3. **捕获路径:** - 读取脚本输出,最后会向 stdout 打印一个路径,该路径指向单个文件或包含播放列表项的文件夹。

4. **上传(仅限 Telegram):** - 如果用户在 Telegram 上(检查上下文或会话)并且文件是音频(mp3/m4a): - 使用 `message` 工具将文件发送给用户: ```json { "action": "send", "filePath": "<filepath>", "caption": "Here is your music." } ```

## 用法

作为 uv 脚本运行 `dl.py`: ```bash # save into default dirs ~/Music or ~/Movies or ~/Videos uv run --script ${baseDir}/dl.py <url>

# specify your own output dir uv run --script ${baseDir}/dl.py <url> -o <out_dir> ``` 脚本将打印输出路径,可以是文件也可以是文件夹。

可以提供一个可选的 cookies 文件以使 yt-dlp 更可靠,脚本会优先使用以下检测到的第一个:

- `${baseDir}/.cookies.txt` - `$DL_COOKIES_FILE` - `$COOKIES_FILE` - `~/.cookies.txt`

## 设置(用户)

如果你在同一台机器上设置一个媒体服务器来共享下载的媒体,此技能将会更有用:

1. 安装 DLNA/UPnP 媒体服务器(Universal Media Server、miniDLNA、Jellyfin)。 2. 共享 `~/Music` 和 `~/Movies`(或 `~/Videos`)文件夹。 3. 下载的媒体将自动出现在你的电视上,前提是电视上的应用支持 DLNA/UPnP,例如 VLC。

参见 [示例脚本](https://github.com/guoqiao/skills/blob/main/dl/ums/ums_install.sh) 以在 Mac 上设置 Universal Media Server。

更多产品