| 1 | #!/bin/bash |
| 2 | path="/path/to/youtube-folder" |
| 3 | |
| 4 | sudo chown -R user:user "${path}" |
| 5 | |
| 6 | yt-dlp --config-location "ytdlp-config.txt" -a "${path}/channels-1.txt" |
| 7 | |
| 8 | echo |
| 9 | echo "Deleting JSON files" |
| 10 | echo |
| 11 | for file in "${path}"/*/*.json; do |
| 12 | if [ -f "$file" ]; then |
| 13 | sudo rm "$file" |
| 14 | fi |
| 15 | done |
| 16 | |
| 17 | echo "Done" |
| 18 | echo |
| 19 | |
| 20 | sudo chown -R jellyfin:jellyfin "${path}" |
| 21 | |
| 22 | |
| 23 | |
| 24 | # ytdlp-config.txt |
| 25 | --progress |
| 26 | --ignore-errors |
| 27 | --check-formats |
| 28 | --format "bestvideo[height<=1080][ext=mkv]+bestaudio[ext=m4a]/best[ext=mkv]/best" |
| 29 | --merge-output mkv |
| 30 | --write-info-json |
| 31 | --write-annotations |
| 32 | --write-thumbnail |
| 33 | --convert-thumbnails jpg |
| 34 | --embed-thumbnail |
| 35 | --embed-chapters |
| 36 | --embed-info-json |
| 37 | --ignore-errors |
| 38 | --add-metadata |
| 39 | --restrict-filenames |
| 40 | --concurrent-fragments 3 |
| 41 | --sponsorblock-mark all,-preview,-filler,-interaction |
| 42 | --dateafter now-7days |
| 43 | --playlist-end 10 |
| 44 | --no-playlist |
| 45 | --cookies-from-browser firefox:vzh1hdbr.default-release |
| 46 | --compat-options no-youtube-unavailable-videos |
| 47 | --match-filter "!is_live & live_status!=is_upcoming & availability=public & title!*=WAN" |
| 48 | --download-archive "/path/to/youtube/downloaded.txt" |
| 49 | -o "/path/to/youtube/%(channel)s/%(upload_date>%Y-%m-%d)s - %(title)s [%(id)s].%(ext)s" |
airikr / Download videos from YouTube (not AI, my own)
Last active 4 months ago
This script downloads videos from 7 days to today from selected YouTube channels. Downloaded videos will be logged in download.txt to prevent re-downloading them.
Revision 418b706fb0b5c6e423d559ea6196698493099aa0