Initial commit: YouTube Sync Docker container

- Alpine-based Docker image with yt-dlp
- Configurable channel sync script
- Unraid template for Community Applications
- Automatic scheduling via cron
- Emby/Plex/Jellyfin compatible output structure
This commit is contained in:
2026-05-08 18:52:04 -04:00
commit 0ffb54e12e
7 changed files with 456 additions and 0 deletions

49
youtube-sync.xml Normal file
View File

@@ -0,0 +1,49 @@
<?xml version="1.0"?>
<Container version="2">
<Name>youtube-sync</Name>
<Repository>azcomputerguru/youtube-sync</Repository>
<Registry>https://hub.docker.com/r/azcomputerguru/youtube-sync</Registry>
<Network>bridge</Network>
<MyIP/>
<Shell>bash</Shell>
<Privileged>false</Privileged>
<Support>https://github.com/azcomputerguru/youtube-sync-docker</Support>
<Project>https://github.com/azcomputerguru/youtube-sync-docker</Project>
<Overview>
Automatically download and organize YouTube channel videos for Emby/Plex/Jellyfin.
Features:
- Downloads videos in best quality up to 1080p (configurable)
- Organizes by season folders (by year)
- Creates proper episode naming for media servers
- Embeds thumbnails and metadata
- Creates tvshow.nfo files for Emby/Plex
- Tracks downloaded videos to avoid duplicates
- Supports YouTube cookies for authentication
- Scheduled automatic syncs via cron
Configuration:
1. Edit /mnt/user/appdata/youtube-sync/channels.txt
2. Add your channels in format: CHANNEL_ID|Channel Name
3. (Optional) Add YouTube cookies to /mnt/user/appdata/youtube-sync/cookies.txt
</Overview>
<Category>MediaApp:Video MediaServer:Video</Category>
<WebUI/>
<TemplateURL>https://raw.githubusercontent.com/azcomputerguru/youtube-sync-docker/main/youtube-sync.xml</TemplateURL>
<Icon>https://raw.githubusercontent.com/azcomputerguru/youtube-sync-docker/main/icon.png</Icon>
<ExtraParams/>
<PostArgs/>
<CPUset/>
<DateInstalled/>
<DonateText/>
<DonateLink/>
<Requires/>
<Config Name="Download Directory" Target="/downloads" Default="/mnt/user/media/YouTube" Mode="rw" Description="Where downloaded videos will be stored" Type="Path" Display="always" Required="true" Mask="false">/mnt/user/media/YouTube</Config>
<Config Name="Config Directory" Target="/config" Default="/mnt/user/appdata/youtube-sync" Mode="rw" Description="Configuration files (channels.txt, cookies.txt)" Type="Path" Display="always" Required="true" Mask="false">/mnt/user/appdata/youtube-sync</Config>
<Config Name="Sync Schedule" Target="SYNC_SCHEDULE" Default="0 2 * * *" Mode="" Description="Cron schedule for automatic syncs (default: 2 AM daily). Use 'manual' to disable scheduling." Type="Variable" Display="always" Required="false" Mask="false">0 2 * * *</Config>
<Config Name="Max Quality" Target="MAX_QUALITY" Default="1080" Mode="" Description="Maximum video quality (480, 720, 1080, 1440, 2160)" Type="Variable" Display="always" Required="false" Mask="false">1080</Config>
<Config Name="Sleep Interval" Target="SLEEP_INTERVAL" Default="2" Mode="" Description="Seconds to wait between downloads (helps avoid rate limiting)" Type="Variable" Display="advanced" Required="false" Mask="false">2</Config>
<Config Name="Timezone" Target="TZ" Default="America/Phoenix" Mode="" Description="Timezone for scheduling (TZ database name)" Type="Variable" Display="advanced" Required="false" Mask="false">America/Phoenix</Config>
<Config Name="PUID" Target="PUID" Default="99" Mode="" Description="User ID for file ownership" Type="Variable" Display="advanced" Required="false" Mask="false">99</Config>
<Config Name="PGID" Target="PGID" Default="100" Mode="" Description="Group ID for file ownership" Type="Variable" Display="advanced" Required="false" Mask="false">100</Config>
</Container>