Project Icon

ytdl-sub

将YouTube内容自动下载并格式化为多种媒体播放器可用的资源

ytdl-sub是一个基于yt-dlp的命令行工具,可自动下载并处理YouTube、SoundCloud等平台的内容。它能将视频格式化为适用于Kodi、Jellyfin、Plex等媒体播放器的电视节目、音乐视频或音乐专辑,并生成相应元数据。用户可通过YAML文件定义订阅内容,使用预设处理和输出媒体文件。该工具支持Docker安装,并提供Web界面,便于管理和使用。

ytdl-sub

使用YoutubeDL自动下载和生成元数据。

codecov 代码质量 检查 许可证

ytdl-sub是一个命令行工具,通过yt-dlp下载媒体,并为您喜爱的媒体播放器做好准备,包括KodiJellyfinPlexEmby和现代音乐播放器。无需额外插件或外部抓取工具。

我们认识到每个人存储媒体的方式都不同。我们的文件和元数据格式化方法是在保持简单性的同时提供最大的灵活性。

将YouTube频道作为电视节目

Plex

未知

Jellyfin

jellyfin

音乐视频和演唱会

Kodi

kodi

Jellyfin

jelly_mv

SoundCloud唱片目录

通过beets API写入适当的音乐标签

sc_mb

Bandcamp唱片目录

bc_nav

工作原理

ytdl-sub使用YAML文件定义订阅。每个订阅导入预设,这些预设定义了如何处理和输出媒体文件。ytdl-sub打包了许多预构建预设,可以完成配置构建的工作,因此您可以立即开始下载。

# subscriptions.yaml:
# 此处的所有内容都可以使用以下命令下载:
#   ytdl-sub sub subscriptions.yaml

# __preset__ 是为所有订阅定义全局覆盖的地方
__preset__:
  overrides:
    # 所有ytdl-sub电视节目的根文件夹
    tv_show_directory: "/tv_shows"
    
    # 所有ytdl-sub音乐的根文件夹
    music_directory: "/music"
    
    # 所有ytdl-sub音乐视频的根文件夹
    music_video_directory: "/music_videos"
    
    # 对于"仅最近"预设,只保留此范围内的视频并限制数量
    only_recent_date_range: "2months"
    only_recent_max_files: 30
    
  # 直接将任何参数传递给yt-dlp的Python API
  ytdl_options:
    cookiefile: "/config/cookie.txt" 

###################################################################
# 电视节目预设。可以用Plex/Jellyfin/Kodi替换Plex

Plex按日期排列的电视节目:

  # 将流派标签设置为"纪录片"
  = Documentaries:
    "NOVA PBS": "https://www.youtube.com/@novapbs"
    "国家地理": "https://www.youtube.com/@NatGeo"
    "Cosmos - What If": "https://www.youtube.com/playlist?list=PLZdXRHYAVxTJno6oFF9nLGuwXNGYHmE8U"

  # 将流派标签设置为"儿童",内容分级为"TV-Y"
  = Kids | = TV-Y:
    "Jake Trains": "https://www.youtube.com/@JakeTrains"
    "Kids Toys Play": "https://www.youtube.com/@KidsToysPlayChannel"

  = Music:
    # 电视节目订阅可以支持多个URL,并存储在同一个电视节目中
    "Rick Beato":
      - "https://www.youtube.com/@RickBeato"
      - "https://www.youtube.com/@rickbeato240"

  # 将流派标签设置为"新闻",使用`仅最近`预设只存储最近上传的视频
  = News | Only Recent:
    "BBC新闻": "https://www.youtube.com/@BBCNews"

Plex电视节目合集:
  = Music:
    # 以~开头设置特定的覆盖变量
    "~Beyond the Guitar":
      s01_name: "视频"
      s01_url: "https://www.youtube.com/c/BeyondTheGuitar"
      s02_name: "翻唱"
      s02_url: "https://www.youtube.com/playlist?list=PLE62gWlWZk5NWVAVuf0Lm9jdv_-_KXs0W"

###################################################################
# 音乐预设。可以用Plex/Jellyfin/Kodi替换Plex

YouTube发布:
  = Jazz:  # 将流派标签设置为"爵士乐"
    "Thelonious Monk": "https://www.youtube.com/@theloniousmonk3870/releases"

YouTube完整专辑:
  = Lofi:
    "Game Chops": "https://www.youtube.com/playlist?list=PLBsm_SagFMmdWnCnrNtLjA9kzfrRkto4i"

SoundCloud唱片目录:
  = Chill Hop:
    "UKNOWY": "https://soundcloud.com/uknowymunich"
  = Synthwave:
    "Lazerdiscs Records": "https://soundcloud.com/lazerdiscsrecords"
    "Earmake": "https://soundcloud.com/earmake"

Bandcamp:
  = Lofi:
    "Emily Hopkins": "https://emilyharpist.bandcamp.com/"

###################################################################
# 音乐视频预设
"Plex音乐视频":
  = Pop:  # 将流派标签设置为"流行"
    "Rick Astley": "https://www.youtube.com/playlist?list=PLlaN88a7y2_plecYoJxvRFTLHVbIVAOoc"
    "Michael Jackson": "https://www.youtube.com/playlist?list=OLAK5uy_mnY03zP6abNWH929q2XhGzWD_2uKJ_n8E"

所有这些都可以通过以下命令下载并准备导入到您喜欢的播放器中:

ytdl-sub sub subscriptions.yaml

查看我们的示例订阅获取更详细的示例和用例。

输出

ytdl-sub 运行后,最终结果将下载并格式化文件,使其可以被您喜欢的媒体播放器/服务器使用。

tv_shows/
  Jake Trains/
    Season 2021/
      s2021.e031701 - Pattys Day Video-thumb.jpg
      s2021.e031701 - Pattys Day Video.mp4
      s2021.e031701 - Pattys Day Video.nfo
      s2021.e031702 - Second Pattys Day Video-thumb.jpg
      s2021.e031702 - Second Pattys Day Video.mp4
      s2021.e031702 - Second Pattys Day Video.nfo
    Season 2022/
      s2022.e122501 - Merry Christmas-thumb.jpg
      s2022.e122501 - Merry Christmas.mp4
      s2022.e122501 - Merry Christmas.nfo
    poster.jpg
    fanart.jpg
    tvshow.nfo

music/
  Artist/
    [2022] Some Single/
      01 - Some Single.mp3
      folder.jpg
    [2023] Latest Album/
      01 - Track Title.mp3
      02 - Another Track.mp3
      folder.jpg

music_videos/
  Elton John/
    Elton John - Rocketman.jpg
    Elton John - Rocketman.mp4

自定义配置

通过使用自定义配置,可以修改此过程的任何部分。查看我们的入门指南,了解如何从头开始构建您的第一个配置。您可以在这里找到现成的示例配置,以及我们的readthedocs,获取所有配置字段的详细信息。

安装

ytdl-sub 可以在以下平台上安装:

Docker 安装

Docker 安装可以是无头模式或使用 Web-GUI 镜像,后者包含了 LSIOcode-server Docker 镜像,并预装了 ytdl-sub。这是使用 ytdl-sub 的推荐方式。

image

贡献

有很多方式可以贡献,即使不编码也可以。请查看我们的 GitHub Issues 提交功能请求,或修复 bug。

支持

如果您有任何问题,我们在 Discord 频道 非常活跃。另外,请查看我们的 FAQ 获取常见问题解答。

项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

白日梦AI

白日梦AI提供专注于AI视频生成的多样化功能,包括文生视频、动态画面和形象生成等,帮助用户快速上手,创造专业级内容。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

讯飞绘镜

讯飞绘镜是一个支持从创意到完整视频创作的智能平台,用户可以快速生成视频素材并创作独特的音乐视频和故事。平台提供多样化的主题和精选作品,帮助用户探索创意灵感。

Project Cover

讯飞文书

讯飞文书依托讯飞星火大模型,为文书写作者提供从素材筹备到稿件撰写及审稿的全程支持。通过录音智记和以稿写稿等功能,满足事务性工作的高频需求,帮助撰稿人节省精力,提高效率,优化工作与生活。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

AIWritePaper论文写作

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号