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

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

Project Cover

Kimi

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

Project Cover

阿里绘蛙

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

Project Cover

吐司

探索Tensor.Art平台的独特AI模型,免费访问各种图像生成与AI训练工具,从Stable Diffusion等基础模型开始,轻松实现创新图像生成。体验前沿的AI技术,推动个人和企业的创新发展。

Project Cover

SubCat字幕猫

SubCat字幕猫APP是一款创新的视频播放器,它将改变您观看视频的方式!SubCat结合了先进的人工智能技术,为您提供即时视频字幕翻译,无论是本地视频还是网络流媒体,让您轻松享受各种语言的内容。

Project Cover

美间AI

美间AI创意设计平台,利用前沿AI技术,为设计师和营销人员提供一站式设计解决方案。从智能海报到3D效果图,再到文案生成,美间让创意设计更简单、更高效。

Project Cover

稿定AI

稿定设计 是一个多功能的在线设计和创意平台,提供广泛的设计工具和资源,以满足不同用户的需求。从专业的图形设计师到普通用户,无论是进行图片处理、智能抠图、H5页面制作还是视频剪辑,稿定设计都能提供简单、高效的解决方案。该平台以其用户友好的界面和强大的功能集合,帮助用户轻松实现创意设计。

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