{"id":13587852,"url":"https://github.com/bardisty/ytdlrc","last_synced_at":"2025-04-08T02:34:00.955Z","repository":{"id":217169290,"uuid":"85466023","full_name":"bardisty/ytdlrc","owner":"bardisty","description":":cloud: Downloads videos and metadata with youtube-dl and moves each file on completion to an rclone remote","archived":false,"fork":false,"pushed_at":"2019-05-07T05:15:44.000Z","size":127,"stargazers_count":171,"open_issues_count":3,"forks_count":28,"subscribers_count":7,"default_branch":"master","last_synced_at":"2024-02-13T21:58:19.324Z","etag":null,"topics":["amazon-drive","amazon-s3","backblaze-b2","box","ceph","datahoarder","digitalocean-spaces","download-videos","dropbox","google-cloud-storage","google-drive","hubic","mega","metadata","microsoft-onedrive","ovh","posix","rclone","wrapper","youtube-dl"],"latest_commit_sha":null,"homepage":"https://git.io/ytdlrc","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/bardisty.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2017-03-19T09:58:37.000Z","updated_at":"2024-02-13T21:58:20.138Z","dependencies_parsed_at":null,"dependency_job_id":"7dbd0a18-6441-4919-8625-bf95d1e29514","html_url":"https://github.com/bardisty/ytdlrc","commit_stats":null,"previous_names":["bardisty/ytdlrc"],"tags_count":7,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bardisty%2Fytdlrc","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bardisty%2Fytdlrc/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bardisty%2Fytdlrc/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bardisty%2Fytdlrc/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bardisty","download_url":"https://codeload.github.com/bardisty/ytdlrc/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":223300571,"owners_count":17122646,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["amazon-drive","amazon-s3","backblaze-b2","box","ceph","datahoarder","digitalocean-spaces","download-videos","dropbox","google-cloud-storage","google-drive","hubic","mega","metadata","microsoft-onedrive","ovh","posix","rclone","wrapper","youtube-dl"],"created_at":"2024-08-01T15:06:23.397Z","updated_at":"2024-11-06T07:30:30.371Z","avatar_url":"https://github.com/bardisty.png","language":"Shell","funding_links":[],"categories":["Shell"],"sub_categories":[],"readme":"# ytdlrc\n\n[![Codacy grade](https://img.shields.io/codacy/grade/fb1e5b8b80374c15b05877cf2bebfd31.svg)](https://www.codacy.com/app/bardisty/ytdlrc?utm_source=github.com\u0026amp;utm_medium=referral\u0026amp;utm_content=bardisty/ytdlrc\u0026amp;utm_campaign=Badge_Grade)\n![GitHub file size in bytes](https://img.shields.io/github/size/bardisty/ytdlrc/ytdlrc.svg)\n[![GitHub](https://img.shields.io/github/license/bardisty/ytdlrc.svg?color=blue)](https://github.com/bardisty/ytdlrc/blob/master/LICENSE)\n\n`ytdlrc` is a simple shell script wrapper for `youtube-dl` and `rclone`. It\ndownloads videos and metadata via `youtube-dl` and moves each file on\ncompletion to an `rclone` remote, e.g. Google Drive.\n\n\u003cdetails\u003e\n  \u003csummary\u003e\n    \u003cstrong\u003eTable of Contents\u003c/strong\u003e\n  \u003c/summary\u003e\n  \u003cul\u003e\n    \u003cli\u003e\u003ca href=\"#about\"\u003eAbout\u003c/a\u003e\n    \u003cli\u003e\u003ca href=\"#example-output\"\u003eExample Output\u003c/a\u003e\n        \u003cul\u003e\n          \u003cli\u003e\u003ca href=\"#example-initial-execution\"\u003eExample: Initial execution\n          \u003cli\u003e\u003ca href=\"#example-downloading-all-videos-from-ytuserkurzgesagt\"\u003eExample: Downloading all videos from ytuser:kurzgesagt\n            \u003cul\u003e\n              \u003cli\u003e\u003ca href=\"#first-run\"\u003eFirst run\u003c/a\u003e\n              \u003cli\u003e\u003ca href=\"#second-run\"\u003eSecond run\u003c/a\u003e\n            \u003c/ul\u003e\n        \u003c/ul\u003e\n    \u003cli\u003e\u003ca href=\"#installation\"\u003eInstallation\u003c/a\u003e\n    \u003cli\u003e\u003ca href=\"#usage\"\u003eUsage\u003c/a\u003e\n    \u003cli\u003e\u003ca href=\"#requirements\"\u003eRequirements\u003c/a\u003e\n    \u003cli\u003e\u003ca href=\"#license\"\u003eLicense\u003c/a\u003e\n  \u003c/ul\u003e\n\u003c/details\u003e\n\n## About\n\n*   Designed to be executed via cron job or manually.\n\n*   Ideal for use on VPS's with small disk space as it moves files on\n    completion rather than copying them. In testing I downloaded / uploaded\n    ~500GB of videos on a VPS with a 15GB SSD.\n\n    *   This can easily be changed to keep the files if you have the disk\n        space; see the `rclone_command` variable to do so.\n\n*   Includes metadata (xattrs, \\*.info.json, \\*.description, \\*.jpg).\n\n*   Reads a file named `snatch.list` to know which URL's / channels /\n    playlists you want to download and monitor for new videos.\n\n    *   Lines beginning with `#` are ignored.\n\n*   Completed video ID's are saved in a file named `archive.list`; this\n    prevents `youtube-dl` from re-downloading videos that have already been\n    processed and moved to the rclone remote.\n\n*   By default, it creates / uses the following structure:\n\n    *   `~/ytdlrc/stage`           - download directory\n    *   `~/ytdlrc/snatch.list`     - list of usernames or URL's to monitor / download\n    *   `~/ytdlrc/archive.list`    - list of completed video ID's\n\n    These paths can be changed by modifying the `ytdl_*` variables.\n\n*   In the download directory, subfolders are created for each line in the\n    `snatch.list`. The name of the subfolders depends on whether the\n    processed line is a playlist or a channel. This results in the following\n    structure:\n\n    *   `~/ytdlrc/stage/Some_Channel_Name/{downloaded files}`\n    *   `~/ytdlrc/stage/Another_Channel_Name/{downloaded files}`\n    *   `~/ytdlrc/stage/Some_Playlist_Name/{downloaded files}`\n    *   `~/ytdlrc/stage/Another_Playlist_Name/{downloaded files}`\n\n    Upon download completion a file is moved to the rclone remote, creating\n    a structure such as:\n\n    *   `remote:archive/youtube/Some_Channel_Name/{downloaded files}`\n    *   `remote:archive/youtube/Another_Channel_Name/{downloaded files}`\n    *   `remote:archive/youtube/Some_Playlist_Name/{downloaded files}`\n    *   `remote:archive/youtube/Another_Playlist_Name/{downloaded files}`\n\n    The path before the channel / playlist names (`remote:archive/youtube`)\n    is set via the `rclone_destination` variable.\n\n*   Downloaded files are saved with the following output template:\n\n    `\"%(uploader)s.%(upload_date)s.%(title)s.%(resolution)s.%(id)s.%(ext)s\"`\n\n    This results in filenames such as:\n\n    *   `Channel_Name.20170307.Video_Title.1920x1080.J---aiyznGQ.mp4`\n    *   `Channel_Name.20170307.Video_Title.1920x1080.J---aiyznGQ.info.json`\n    *   `Channel_Name.20170307.Video_Title.1920x1080.J---aiyznGQ.description`\n    *   `Channel_Name.20170307.Video_Title.1920x1080.J---aiyznGQ.jpg`\n\n    See the `ytdl_output_template` variable if you wish to use a different\n    output template.\n\n## Example Output\n\nThese examples are what you see with `debug=true`.\n\n### Example: Initial execution\n\n```text\n[YTDLRC] Lock file doesn't exist. Attempting to create /tmp/ytdlrc.lock...\n[YTDLRC] Creating '/tmp/ytdlrc.lock' succeeded. Continuing...\n[YTDLRC] Creating download directory: /home/brian/ytdlrc/stage\n[YTDLRC] Creating snatch list: /home/brian/ytdlrc/snatch.list\n[YTDLRC] Creating archive list: /home/brian/ytdlrc/archive.list\n[YTDLRC] Process complete. Removing lock file.\n```\n\n### Example: Downloading all videos from ytuser:kurzgesagt\n\n`ytuser:kurzgesagt` is the only line in our `snatch.list`.\n\n#### First run\n\n```text\n[YTDLRC] Lock file doesn't exist. Attempting to create /tmp/ytdlrc.lock...\n[YTDLRC] Creating '/tmp/ytdlrc.lock' succeeded. Continuing...\n[YTDLRC] Processing ytuser:kurzgesagt...\n[YTDLRC] Grabbing 'playlist_title' from 'ytuser:kurzgesagt'...\n[YTDLRC] 'playlist_title' is 'Uploads_from_Kurzgesagt_In_a_Nutshell'\n[YTDLRC] Trimming off 'Uploads_from_' from 'Uploads_from_Kurzgesagt_In_a_Nutshell'...\n[YTDLRC] New 'playlist_title' is 'Kurzgesagt_In_a_Nutshell'\n[debug] System config: []\n[debug] User config: []\n[debug] Custom config: []\n[debug] Command-line args: ['-4', '--continue', '--download-archive', '/home/brian/ytdlrc/archive.list', '--exec', \"/usr/bin/rclone move '{}' 'acd:testing/Kurzgesagt_In_a_Nutshell' --config '/home/brian/.rclone.conf' -v --stats 1s\", '--ignore-errors', '--no-overwrites', '--restrict-filenames', '--write-description', '--write-info-json', '--write-thumbnail', '--xattrs', '-f', 'bestvideo+bestaudio', '-o', '/home/brian/ytdlrc/stage/Kurzgesagt_In_a_Nutshell/%(uploader)s.%(upload_date)s.%(title)s.%(resolution)s.%(id)s.%(ext)s', '--verbose', 'ytuser:kurzgesagt']\n[debug] Encodings: locale UTF-8, fs utf-8, out UTF-8, pref UTF-8\n[debug] youtube-dl version 2017.03.07\n[debug] Python version 3.6.0 - Linux-4.9.11-1-ARCH-x86_64-with-arch\n[debug] exe versions: ffmpeg 3.2.4, ffprobe 3.2.4, rtmpdump 2.4\n[debug] Proxy map: {}\n[youtube:user] kurzgesagt: Downloading channel page\n[youtube:playlist] UUsXVk37bltHxD1rDPwtNM8Q: Downloading webpage\n[download] Downloading playlist: Uploads from Kurzgesagt – In a Nutshell\n[youtube:playlist] playlist Uploads from Kurzgesagt – In a Nutshell: Downloading 58 videos\n[download] Downloading video 1 of 58\n[youtube] DHyUYg8X31c: Downloading webpage\n[youtube] DHyUYg8X31c: Downloading video info webpage\n[youtube] DHyUYg8X31c: Extracting video information\n[youtube] DHyUYg8X31c: Downloading MPD manifest\n[info] Writing video description to: /home/brian/ytdlrc/stage/Kurzgesagt_In_a_Nutshell/Kurzgesagt_In_a_Nutshell.20170223.Do_Robots_Deserve_Rights_What_if_Machines_Become_Conscious.1920x1080.DHyUYg8X31c.description\n[info] Writing video description metadata as JSON to: /home/brian/ytdlrc/stage/Kurzgesagt_In_a_Nutshell/Kurzgesagt_In_a_Nutshell.20170223.Do_Robots_Deserve_Rights_What_if_Machines_Become_Conscious.1920x1080.DHyUYg8X31c.info.json\n[youtube] DHyUYg8X31c: Downloading thumbnail ...\n[youtube] DHyUYg8X31c: Writing thumbnail to: /home/brian/ytdlrc/stage/Kurzgesagt_In_a_Nutshell/Kurzgesagt_In_a_Nutshell.20170223.Do_Robots_Deserve_Rights_What_if_Machines_Become_Conscious.1920x1080.DHyUYg8X31c.jpg\nWARNING: Requested formats are incompatible for merge and will be merged into mkv.\n[debug] Invoking downloader on 'https://r8---sn-n4v7kne7.googlevideo.com/videoplayback?id=0c7c94620f17df57\u0026itag=299\u0026source=youtube\u0026requiressl=yes\u0026mn=sn-n4v7kne7\u0026mm=31\u0026pl=20\u0026initcwndbps=8067500\u0026mv=m\u0026ms=au\u0026ratebypass=yes\u0026mime=video/mp4\u0026gir=yes\u0026clen=97795996\u0026lmt=1487912067914680\u0026dur=394.266\u0026signature=D4B482B33A060CAD522317EBCF5BA3288C4C95.276EACC1ABBDFFAE143AB016DB9079A47D8329EC\u0026upn=Wj36IpbSSvI\u0026mt=1489800442\u0026key=dg_yt0\u0026ip=104.131.132.15\u0026ipbits=0\u0026expire=1489822135\u0026sparams=ip,ipbits,expire,id,itag,source,requiressl,mn,mm,pl,initcwndbps,mv,ms,ratebypass,mime,gir,clen,lmt,dur'\n[download] Destination: /home/brian/ytdlrc/stage/Kurzgesagt_In_a_Nutshell/Kurzgesagt_In_a_Nutshell.20170223.Do_Robots_Deserve_Rights_What_if_Machines_Become_Conscious.1920x1080.DHyUYg8X31c.f299.mp4\n[download] 100% of 93.27MiB in 00:01\n[debug] Invoking downloader on 'https://r8---sn-n4v7kne7.googlevideo.com/videoplayback?pl=20\u0026ei=Vo3MWIusHurD-APq5JnoDg\u0026clen=6926640\u0026itag=251\u0026gir=yes\u0026upn=TwHyVFumtCo\u0026signature=4ADE59C2CE26DABFB4D6418F61D65F10DF13E25B.1B06F7DE826DD862F39066A6D16B90B12D04EE5D\u0026mime=audio%2Fwebm\u0026initcwndbps=8067500\u0026sparams=clen%2Cdur%2Cei%2Cgir%2Cid%2Cinitcwndbps%2Cip%2Cipbits%2Citag%2Ckeepalive%2Clmt%2Cmime%2Cmm%2Cmn%2Cms%2Cmv%2Cpl%2Crequiressl%2Csource%2Cupn%2Cexpire\u0026ipbits=0\u0026requiressl=yes\u0026keepalive=yes\u0026mn=sn-n4v7kne7\u0026mm=31\u0026mt=1489800442\u0026dur=394.281\u0026id=o-AM978v3HI34Q_CjNzW-0QaneJHqs_vHmTJJzH32vY0-f\u0026lmt=1487796412297530\u0026key=yt6\u0026ip=104.131.132.15\u0026mv=m\u0026source=youtube\u0026ms=au\u0026expire=1489822134\u0026ratebypass=yes'\n[download] Destination: /home/brian/ytdlrc/stage/Kurzgesagt_In_a_Nutshell/Kurzgesagt_In_a_Nutshell.20170223.Do_Robots_Deserve_Rights_What_if_Machines_Become_Conscious.1920x1080.DHyUYg8X31c.f251.webm\n[download] 100% of 6.61MiB in 00:00\n[ffmpeg] Merging formats into \"/home/brian/ytdlrc/stage/Kurzgesagt_In_a_Nutshell/Kurzgesagt_In_a_Nutshell.20170223.Do_Robots_Deserve_Rights_What_if_Machines_Become_Conscious.1920x1080.DHyUYg8X31c.mkv\"\n[debug] ffmpeg command line: ffmpeg -y -i file:/home/brian/ytdlrc/stage/Kurzgesagt_In_a_Nutshell/Kurzgesagt_In_a_Nutshell.20170223.Do_Robots_Deserve_Rights_What_if_Machines_Become_Conscious.1920x1080.DHyUYg8X31c.f299.mp4 -i file:/home/brian/ytdlrc/stage/Kurzgesagt_In_a_Nutshell/Kurzgesagt_In_a_Nutshell.20170223.Do_Robots_Deserve_Rights_What_if_Machines_Become_Conscious.1920x1080.DHyUYg8X31c.f251.webm -c copy -map 0:v:0 -map 1:a:0 file:/home/brian/ytdlrc/stage/Kurzgesagt_In_a_Nutshell/Kurzgesagt_In_a_Nutshell.20170223.Do_Robots_Deserve_Rights_What_if_Machines_Become_Conscious.1920x1080.DHyUYg8X31c.temp.mkv\nDeleting original file /home/brian/ytdlrc/stage/Kurzgesagt_In_a_Nutshell/Kurzgesagt_In_a_Nutshell.20170223.Do_Robots_Deserve_Rights_What_if_Machines_Become_Conscious.1920x1080.DHyUYg8X31c.f299.mp4 (pass -k to keep)\nDeleting original file /home/brian/ytdlrc/stage/Kurzgesagt_In_a_Nutshell/Kurzgesagt_In_a_Nutshell.20170223.Do_Robots_Deserve_Rights_What_if_Machines_Become_Conscious.1920x1080.DHyUYg8X31c.f251.webm (pass -k to keep)\n[metadata] Writing metadata to file's xattrs\n[exec] Executing command: /usr/bin/rclone move '/home/brian/ytdlrc/stage/Kurzgesagt_In_a_Nutshell/Kurzgesagt_In_a_Nutshell.20170223.Do_Robots_Deserve_Rights_What_if_Machines_Become_Conscious.1920x1080.DHyUYg8X31c.mkv' 'acd:testing/Kurzgesagt_In_a_Nutshell' --config '/home/brian/.rclone.conf' -v --stats 1s\n2017/03/17 18:29:00 Using RCLONE_CONFIG_PASS password.\n2017/03/17 18:29:00 rclone: Version \"v1.35-54-gff8f11dβ\" starting with parameters [\"/usr/bin/rclone\" \"move\" \"/home/brian/ytdlrc/stage/Kurzgesagt_In_a_Nutshell/Kurzgesagt_In_a_Nutshell.20170223.Do_Robots_Deserve_Rights_What_if_Machines_Become_Conscious.1920x1080.DHyUYg8X31c.mkv\" \"acd:testing/Kurzgesagt_In_a_Nutshell\" \"--config\" \"/home/brian/.rclone.conf\" \"-v\" \"--stats\" \"1s\"]\n2017/03/17 18:29:00 acdp: Saved new token in config file\n2017/03/17 18:29:03 Encrypted amazon drive root 'crypt/i04dv4pst54cb73aviioosi6z0/itz12de1esv28z1fob78x6p5q3cp4tw1nboxe4g5u8nswp96qsnt': Modify window not supported\n2017/03/17 18:29:03 Encrypted amazon drive root 'crypt/i04dv4pst54cb73aviioosi6z0/itz12de1esv28z1fob78x6p5q3cp4tw1nboxe4g5u8nswp96qsnt': Waiting for checks to finish\n2017/03/17 18:29:03 Encrypted amazon drive root 'crypt/i04dv4pst54cb73aviioosi6z0/itz12de1esv28z1fob78x6p5q3cp4tw1nboxe4g5u8nswp96qsnt': Waiting for transfers to finish\n2017/03/17 18:29:04\nTransferred:      0 Bytes (0 Bytes/s)\nErrors:                 0\nChecks:                 0\nTransferred:            0\nElapsed time:        4.1s\nTransferring:\n * ...Become_Conscious.1920x1080.DHyUYg8X31c.mkv:  0% done, 0 Bytes/s, ETA: -\n\n2017/03/17 18:29:05\nTransferred:   13.312 MBytes (2.590 MBytes/s)\nErrors:                 0\nChecks:                 0\nTransferred:            0\nElapsed time:        5.1s\nTransferring:\n * ...Become_Conscious.1920x1080.DHyUYg8X31c.mkv: 13% done, 5.278 MBytes/s, ETA: 16s\n\n2017/03/17 18:29:06\nTransferred:   41.312 MBytes (6.707 MBytes/s)\nErrors:                 0\nChecks:                 0\nTransferred:            0\nElapsed time:        6.1s\nTransferring:\n * ...Become_Conscious.1920x1080.DHyUYg8X31c.mkv: 41% done, 6.744 MBytes/s, ETA: 8s\n\n2017/03/17 18:29:07\nTransferred:   68.062 MBytes (9.532 MBytes/s)\nErrors:                 0\nChecks:                 0\nTransferred:            0\nElapsed time:        7.1s\nTransferring:\n * ...Become_Conscious.1920x1080.DHyUYg8X31c.mkv: 68% done, 8.003 MBytes/s, ETA: 3s\n\n2017/03/17 18:29:08\nTransferred:   95.500 MBytes (11.727 MBytes/s)\nErrors:                 0\nChecks:                 0\nTransferred:            0\nElapsed time:        8.1s\nTransferring:\n * ...Become_Conscious.1920x1080.DHyUYg8X31c.mkv: 95% done, 9.293 MBytes/s, ETA: 0s\n\n2017/03/17 18:29:09\nTransferred:   99.754 MBytes (10.913 MBytes/s)\nErrors:                 0\nChecks:                 0\nTransferred:            0\nElapsed time:        9.1s\nTransferring:\n * ...Become_Conscious.1920x1080.DHyUYg8X31c.mkv: 100% done, 9.473 MBytes/s, ETA: 0s\n\n2017/03/17 18:29:21 Kurzgesagt_In_a_Nutshell.20170223.Do_Robots_Deserve_Rights_What_if_Machines_Become_Conscious.1920x1080.DHyUYg8X31c.mkv: Copied (new)\n2017/03/17 18:29:21 Kurzgesagt_In_a_Nutshell.20170223.Do_Robots_Deserve_Rights_What_if_Machines_Become_Conscious.1920x1080.DHyUYg8X31c.mkv: Deleted\n2017/03/17 18:29:21\nTransferred:   99.754 MBytes (4.598 MBytes/s)\nErrors:                 0\nChecks:                 1\nTransferred:            1\nElapsed time:       21.6s\n2017/03/17 18:29:21 Go routines at exit 13\n[download] Downloading video 2 of 58\n[youtube] RVMZxH1TIIQ: Downloading webpage\n[youtube] RVMZxH1TIIQ: Downloading video info webpage\n[youtube] RVMZxH1TIIQ: Extracting video information\n[youtube] RVMZxH1TIIQ: Downloading MPD manifest\n[info] Writing video description to: /home/brian/ytdlrc/stage/Kurzgesagt_In_a_Nutshell/Kurzgesagt_In_a_Nutshell.20170201.Why_Earth_Is_A_Prison_and_How_To_Escape_It.1920x1080.RVMZxH1TIIQ.description\n[info] Writing video description metadata as JSON to: /home/brian/ytdlrc/stage/Kurzgesagt_In_a_Nutshell/Kurzgesagt_In_a_Nutshell.20170201.Why_Earth_Is_A_Prison_and_How_To_Escape_It.1920x1080.RVMZxH1TIIQ.info.json\n[youtube] RVMZxH1TIIQ: Downloading thumbnail ...\n[youtube] RVMZxH1TIIQ: Writing thumbnail to: /home/brian/ytdlrc/stage/Kurzgesagt_In_a_Nutshell/Kurzgesagt_In_a_Nutshell.20170201.Why_Earth_Is_A_Prison_and_How_To_Escape_It.1920x1080.RVMZxH1TIIQ.jpg\nWARNING: Requested formats are incompatible for merge and will be merged into mkv.\n[debug] Invoking downloader on 'https://r12---sn-n4v7kn76.googlevideo.com/videoplayback?id=455319c47d532084\u0026itag=299\u0026source=youtube\u0026requiressl=yes\u0026mn=sn-n4v7kn76\u0026mm=31\u0026mv=m\u0026initcwndbps=8067500\u0026pl=20\u0026ms=au\u0026ratebypass=yes\u0026mime=video/mp4\u0026gir=yes\u0026clen=96704077\u0026lmt=1486111643921647\u0026dur=416.166\u0026key=dg_yt0\u0026upn=05NaEV1LBgE\u0026signature=35638BDF9D1E278A874D767C7215EF5A9EE8BA23.2CB508CE60975702F17ABD906AC0C079966AD66A\u0026mt=1489800442\u0026ip=104.131.132.15\u0026ipbits=0\u0026expire=1489822162\u0026sparams=ip,ipbits,expire,id,itag,source,requiressl,mn,mm,mv,initcwndbps,pl,ms,ratebypass,mime,gir,clen,lmt,dur'\n[download] Destination: /home/brian/ytdlrc/stage/Kurzgesagt_In_a_Nutshell/Kurzgesagt_In_a_Nutshell.20170201.Why_Earth_Is_A_Prison_and_How_To_Escape_It.1920x1080.RVMZxH1TIIQ.f299.mp4\n[download] 100% of 92.22MiB in 00:02\n[debug] Invoking downloader on 'https://r12---sn-n4v7kn76.googlevideo.com/videoplayback?mv=m\u0026source=youtube\u0026ms=au\u0026lmt=1485958101260093\u0026ip=104.131.132.15\u0026key=yt6\u0026mt=1489800442\u0026mn=sn-n4v7kn76\u0026mm=31\u0026id=o-APMAlzJZmlhyM8gJr2Qpia97TJJC-xyNgHdb-x3ftfMO\u0026dur=416.161\u0026gir=yes\u0026clen=7619194\u0026itag=251\u0026ei=cY3MWKenLszL-gP_u4O4Bw\u0026pl=20\u0026initcwndbps=8067500\u0026upn=NJAuw32Dclw\u0026signature=B4CF4BDE47558BAD446C092DD53E8C9E62324A8B.73D00E820A74DD2122C00B502364FCECF99969B4\u0026mime=audio%2Fwebm\u0026requiressl=yes\u0026keepalive=yes\u0026expire=1489822161\u0026sparams=clen%2Cdur%2Cei%2Cgir%2Cid%2Cinitcwndbps%2Cip%2Cipbits%2Citag%2Ckeepalive%2Clmt%2Cmime%2Cmm%2Cmn%2Cms%2Cmv%2Cpl%2Crequiressl%2Csource%2Cupn%2Cexpire\u0026ipbits=0\u0026ratebypass=yes'\n[download] Destination: /home/brian/ytdlrc/stage/Kurzgesagt_In_a_Nutshell/Kurzgesagt_In_a_Nutshell.20170201.Why_Earth_Is_A_Prison_and_How_To_Escape_It.1920x1080.RVMZxH1TIIQ.f251.webm\n[download] 100% of 7.27MiB in 00:00\n[ffmpeg] Merging formats into \"/home/brian/ytdlrc/stage/Kurzgesagt_In_a_Nutshell/Kurzgesagt_In_a_Nutshell.20170201.Why_Earth_Is_A_Prison_and_How_To_Escape_It.1920x1080.RVMZxH1TIIQ.mkv\"\n[debug] ffmpeg command line: ffmpeg -y -i file:/home/brian/ytdlrc/stage/Kurzgesagt_In_a_Nutshell/Kurzgesagt_In_a_Nutshell.20170201.Why_Earth_Is_A_Prison_and_How_To_Escape_It.1920x1080.RVMZxH1TIIQ.f299.mp4 -i file:/home/brian/ytdlrc/stage/Kurzgesagt_In_a_Nutshell/Kurzgesagt_In_a_Nutshell.20170201.Why_Earth_Is_A_Prison_and_How_To_Escape_It.1920x1080.RVMZxH1TIIQ.f251.webm -c copy -map 0:v:0 -map 1:a:0 file:/home/brian/ytdlrc/stage/Kurzgesagt_In_a_Nutshell/Kurzgesagt_In_a_Nutshell.20170201.Why_Earth_Is_A_Prison_and_How_To_Escape_It.1920x1080.RVMZxH1TIIQ.temp.mkv\nDeleting original file /home/brian/ytdlrc/stage/Kurzgesagt_In_a_Nutshell/Kurzgesagt_In_a_Nutshell.20170201.Why_Earth_Is_A_Prison_and_How_To_Escape_It.1920x1080.RVMZxH1TIIQ.f299.mp4 (pass -k to keep)\nDeleting original file /home/brian/ytdlrc/stage/Kurzgesagt_In_a_Nutshell/Kurzgesagt_In_a_Nutshell.20170201.Why_Earth_Is_A_Prison_and_How_To_Escape_It.1920x1080.RVMZxH1TIIQ.f251.webm (pass -k to keep)\n[metadata] Writing metadata to file's xattrs\n[exec] Executing command: /usr/bin/rclone move '/home/brian/ytdlrc/stage/Kurzgesagt_In_a_Nutshell/Kurzgesagt_In_a_Nutshell.20170201.Why_Earth_Is_A_Prison_and_How_To_Escape_It.1920x1080.RVMZxH1TIIQ.mkv' 'acd:testing/Kurzgesagt_In_a_Nutshell' --config '/home/brian/.rclone.conf' -v --stats 1s\n2017/03/17 18:29:27 Using RCLONE_CONFIG_PASS password.\n2017/03/17 18:29:27 rclone: Version \"v1.35-54-gff8f11dβ\" starting with parameters [\"/usr/bin/rclone\" \"move\" \"/home/brian/ytdlrc/stage/Kurzgesagt_In_a_Nutshell/Kurzgesagt_In_a_Nutshell.20170201.Why_Earth_Is_A_Prison_and_How_To_Escape_It.1920x1080.RVMZxH1TIIQ.mkv\" \"acd:testing/Kurzgesagt_In_a_Nutshell\" \"--config\" \"/home/brian/.rclone.conf\" \"-v\" \"--stats\" \"1s\"]\n2017/03/17 18:29:29 Encrypted amazon drive root 'crypt/i04dv4pst54cb73aviioosi6z0/itz12de1esv28z1fob78x6p5q3cp4tw1nboxe4g5u8nswp96qsnt': Modify window not supported\n2017/03/17 18:29:29 Encrypted amazon drive root 'crypt/i04dv4pst54cb73aviioosi6z0/itz12de1esv28z1fob78x6p5q3cp4tw1nboxe4g5u8nswp96qsnt': Waiting for checks to finish\n2017/03/17 18:29:29 Encrypted amazon drive root 'crypt/i04dv4pst54cb73aviioosi6z0/itz12de1esv28z1fob78x6p5q3cp4tw1nboxe4g5u8nswp96qsnt': Waiting for transfers to finish\n2017/03/17 18:29:30\nTransferred:   1.688 MBytes (617.097 kBytes/s)\nErrors:                 0\nChecks:                 0\nTransferred:            0\nElapsed time:        2.8s\nTransferring:\n * ...How_To_Escape_It.1920x1080.RVMZxH1TIIQ.mkv:  1% done, 0 Bytes/s, ETA: -\n\n2017/03/17 18:29:31\nTransferred:   21.062 MBytes (5.513 MBytes/s)\nErrors:                 0\nChecks:                 0\nTransferred:            0\nElapsed time:        3.8s\nTransferring:\n * ...How_To_Escape_It.1920x1080.RVMZxH1TIIQ.mkv: 21% done, 3.614 MBytes/s, ETA: 21s\n\n2017/03/17 18:29:32\nTransferred:   47.438 MBytes (9.882 MBytes/s)\nErrors:                 0\nChecks:                 0\nTransferred:            0\nElapsed time:        4.8s\nTransferring:\n * ...How_To_Escape_It.1920x1080.RVMZxH1TIIQ.mkv: 47% done, 4.707 MBytes/s, ETA: 11s\n\n2017/03/17 18:29:33\nTransferred:    79 MBytes (13.613 MBytes/s)\nErrors:                 0\nChecks:                 0\nTransferred:            0\nElapsed time:        5.8s\nTransferring:\n * ...How_To_Escape_It.1920x1080.RVMZxH1TIIQ.mkv: 79% done, 6.243 MBytes/s, ETA: 3s\n\n2017/03/17 18:29:34\nTransferred:   99.365 MBytes (14.612 MBytes/s)\nErrors:                 0\nChecks:                 0\nTransferred:            0\nElapsed time:        6.8s\nTransferring:\n * ...How_To_Escape_It.1920x1080.RVMZxH1TIIQ.mkv: 100% done, 7.948 MBytes/s, ETA: 0s\n```\n\nThis will continue until all videos / metadata are downloaded and moved to\nthe rclone remote.\n\n#### Second run\n\n```text\n[YTDLRC] Lock file doesn't exist. Creating lock file and continuing...\n[YTDLRC] Processing ytuser:kurzgesagt...\n[YTDLRC] Grabbing 'playlist_title' from 'ytuser:kurzgesagt'...\n[YTDLRC] 'playlist_title' is 'Uploads_from_Kurzgesagt_In_a_Nutshell'\n[YTDLRC] Trimming off 'Uploads_from_' from 'Uploads_from_Kurzgesagt_In_a_Nutshell'...\n[YTDLRC] New 'playlist_title' is 'Kurzgesagt_In_a_Nutshell'\n[debug] System config: []\n[debug] User config: []\n[debug] Custom config: []\n[debug] Command-line args: ['-4', '--continue', '--download-archive', '/home/brian/ytdlrc/archive.list', '--exec', \"/usr/bin/rclone move '{}' 'acd:archive/youtube/Kurzgesagt_In_a_Nutshell' --config '/home/brian/.rclone.conf' -v --stats 1s\", '--ignore-errors', '--no-overwrites', '--restrict-filenames', '--write-description', '--write-info-json', '--write-thumbnail', '--xattrs', '-f', 'bestvideo+bestaudio', '-o', '/home/brian/ytdlrc/stage/Kurzgesagt_In_a_Nutshell/%(uploader)s.%(upload_date)s.%(title)s.%(resolution)s.%(id)s.%(ext)s', '--verbose', 'ytuser:kurzgesagt']\n[debug] Encodings: locale UTF-8, fs utf-8, out UTF-8, pref UTF-8\n[debug] youtube-dl version 2017.03.07\n[debug] Python version 3.6.0 - Linux-4.9.11-1-ARCH-x86_64-with-arch\n[debug] exe versions: ffmpeg 3.2.4, ffprobe 3.2.4, rtmpdump 2.4\n[debug] Proxy map: {}\n[youtube:user] kurzgesagt: Downloading channel page\n[youtube:playlist] UUsXVk37bltHxD1rDPwtNM8Q: Downloading webpage\n[download] Downloading playlist: Uploads from Kurzgesagt – In a Nutshell\n[youtube:playlist] playlist Uploads from Kurzgesagt – In a Nutshell: Downloading 58 videos\n[download] Downloading video 1 of 58\n[download] Do Robots Deserve Rights? What if Machines Become Conscious? has already been recorded in archive\n[download] Downloading video 2 of 58\n[download] Why Earth Is A Prison and How To Escape It has already been recorded in archive\n[download] Downloading video 3 of 58\n[download] Overpopulation – The Human Explosion Explained has already been recorded in archive\n[download] Downloading video 4 of 58\n[download] A New History for Humanity – The Human Era has already been recorded in archive\n[download] Downloading video 5 of 58\n[download] The Most Gruesome Parasites – Neglected Tropical Diseases – NTDs has already been recorded in archive\n[download] Downloading video 6 of 58\n[download] Fusion Power Explained – Future or Failure has already been recorded in archive\n[download] Downloading video 7 of 58\n[download] The Most Efficient Way to Destroy the Universe – False Vacuum has already been recorded in archive\n[download] Downloading video 8 of 58\n[download] How To Eradicate One Of Our Deadliest Enemies – Gene Drive \u0026 Malaria has already been recorded in archive\n[download] Downloading video 9 of 58\n[download] Genetic Engineering Will Change Everything Forever – CRISPR has already been recorded in archive\n[download] Downloading video 10 of 58\n[download] Death From Space — Gamma-Ray Bursts Explained has already been recorded in archive\n[download] Downloading video 11 of 58\n[download] What Happened Before History? Human Origins has already been recorded in archive\n[download] Downloading video 12 of 58\n[download] What Are You? has already been recorded in archive\n[download] Downloading video 13 of 58\n[download] How Far Can We Go? Limits of Humanity. has already been recorded in archive\n[download] Downloading video 14 of 58\n[download] Safe and Sorry – Terrorism \u0026 Mass Surveillance has already been recorded in archive\n[download] Downloading video 15 of 58\n[download] Space Elevator – Science Fiction or the Future of Mankind? has already been recorded in archive\n[download] Downloading video 16 of 58\n[download] The Antibiotic Apocalypse Explained has already been recorded in archive\n[download] Downloading video 17 of 58\n[download] Why The War on Drugs Is a Huge Failure has already been recorded in archive\n[download] Downloading video 18 of 58\n[download] The Last Star in the Universe – Red Dwarfs Explained has already been recorded in archive\n[download] Downloading video 19 of 58\n[download] What Is Something? has already been recorded in archive\n[download] Downloading video 20 of 58\n[download] Black Holes Explained – From Birth to Death has already been recorded in archive\n[download] Downloading video 21 of 58\n[download] Quantum Computers Explained – Limits of Human Technology has already been recorded in archive\n[download] Downloading video 22 of 58\n[download] How Facebook is Stealing Billions of Views has already been recorded in archive\n[download] Downloading video 23 of 58\n[download] Addiction has already been recorded in archive\n[download] Downloading video 24 of 58\n[download] What Is Light? has already been recorded in archive\n[download] Downloading video 25 of 58\n[download] The European Refugee Crisis and Syria Explained has already been recorded in archive\n[download] Downloading video 26 of 58\n[download] What is Dark Matter and Dark Energy? has already been recorded in archive\n[download] Downloading video 27 of 58\n[download] What if there was a black hole in your pocket? has already been recorded in archive\n[download] Downloading video 28 of 58\n[download] The Death Of Bees Explained – Parasites, Poison and Humans has already been recorded in archive\n[download] Downloading video 29 of 58\n[download] The Fermi Paradox II — Solutions and Ideas – Where Are All The Aliens? has already been recorded in archive\n[download] Downloading video 30 of 58\n[download] The Fermi Paradox — Where Are All The Aliens? (1/2) has already been recorded in archive\n[download] Downloading video 31 of 58\n[download] 3 Reasons Why Nuclear Energy Is Terrible! 2/3 has already been recorded in archive\n[download] Downloading video 32 of 58\n[download] 3 Reasons Why Nuclear Energy Is Awesome! 3/3 has already been recorded in archive\n[download] Downloading video 33 of 58\n[download] Nuclear Energy Explained: How does it work? 1/3 has already been recorded in archive\n[download] Downloading video 34 of 58\n[download] Banking Explained – Money and Credit has already been recorded in archive\n[download] Downloading video 35 of 58\n[download] Measles Explained — Vaccinate or Not? has already been recorded in archive\n[download] Downloading video 36 of 58\n[download] How Small Is An Atom? Spoiler: Very Small. has already been recorded in archive\n[download] Downloading video 37 of 58\n[download] The Ultimate Conspiracy Debunker has already been recorded in archive\n[download] Downloading video 38 of 58\n[download] What Is Life? Is Death Real? has already been recorded in archive\n[download] Downloading video 39 of 58\n[download] The Ebola Virus Explained — How Your Body Fights For Survival has already been recorded in archive\n[download] Downloading video 40 of 58\n[download] Is War Over? — A Paradox Explained has already been recorded in archive\n[download] Downloading video 41 of 58\n[download] Atoms As Big As Mountains — Neutron Stars Explained has already been recorded in archive\n[download] Downloading video 42 of 58\n[download] Everything You Need to Know About Planet Earth has already been recorded in archive\n[download] Downloading video 43 of 58\n[download] The Immune System Explained I – Bacteria Infection has already been recorded in archive\n[download] Downloading video 44 of 58\n[download] Iraq Explained -- ISIS, Syria and War has already been recorded in archive\n[download] Downloading video 45 of 58\n[download] Are You Alone? (In The Universe) has already been recorded in archive\n[download] Downloading video 46 of 58\n[download] How to catch a Dwarf Planet -- Triton MM#3 has already been recorded in archive\n[download] Downloading video 47 of 58\n[download] The Moons of Mars Explained -- Phobos \u0026 Deimos MM#2 has already been recorded in archive\n[download] Downloading video 48 of 58\n[download] How Big is the Moon? MM#1 has already been recorded in archive\n[download] Downloading video 49 of 58\n[download] Help us make more Videos for Kurzgesagt has already been recorded in archive\n[download] Downloading video 50 of 58\n[download] Who Invented the Internet? And Why? has already been recorded in archive\n[download] Downloading video 51 of 58\n[download] The Beginning of Everything -- The Big Bang has already been recorded in archive\n[download] Downloading video 52 of 58\n[download] Three Ways to Destroy the Universe has already been recorded in archive\n[download] Downloading video 53 of 58\n[download] The History and Future of Everything -- Time has already been recorded in archive\n[download] Downloading video 54 of 58\n[download] How The Stock Exchange Works (For Dummies) has already been recorded in archive\n[download] Downloading video 55 of 58\n[download] The Gulf Stream Explained has already been recorded in archive\n[download] Downloading video 56 of 58\n[download] Fracking explained: opportunity or danger has already been recorded in archive\n[download] Downloading video 57 of 58\n[download] The Solar System -- our home in space has already been recorded in archive\n[download] Downloading video 58 of 58\n[download] How Evolution works has already been recorded in archive\n[download] Finished downloading playlist: Uploads from Kurzgesagt – In a Nutshell\n[YTDLRC] Process complete. Removing lock file.\n```\n\nAll available videos were already downloaded and moved to the rclone remote,\nso there was nothing to be done on the second run other than check for new\nuploads.\n\n## Installation\n\n1.  [Download](https://github.com/bardisty/ytdlrc/archive/master.zip) or\n    clone the repository:\n\n    `git clone https://github.com/bardisty/ytdlrc`\n\n2.  `cd` into the directory:\n\n    `cd ytdlrc`\n\n3.  Open `ytdlrc` in your text editor and see [Usage](#usage).\n\n## Usage\n\n1.  Ensure the path to your rclone configuration file is correct or modify\n    it if need be:\n\n    ```shell\n    rclone_config=\"${HOME}/.config/rclone/rclone.conf\"\n    ```\n\n2.  Modify the `rclone_destination` variable with your rclone remote\n    destination path, e.g.:\n\n    ```diff\n    - rclone_destination=\"remote:archive/youtube\"\n    + rclone_destination=\"gdrive:archive/youtube\"\n    ```\n\n3.  Run the script once to generate the working directory, download\n    directory, snatch list, and archive list:\n\n    ```text\n    $ ./ytdlrc\n    [YTDLRC] Creating download directory: /home/brian/ytdlrc/stage\n    [YTDLRC] Creating snatch list: /home/brian/ytdlrc/snatch.list\n    [YTDLRC] Creating archive list: /home/brian/ytdlrc/archive.list\n    [YTDLCR] Process complete. Removing lock file.\n    ```\n\n4.  Put the URL's / channels / playlists you want to download in the\n    `snatch.list` file, one per line, e.g.:\n\n    *   `ytuser:username`\n    *   `https://www.youtube.com/user/username`\n    *   `https://www.youtube.com/playlist?list=PLK9Sc5q_4K6aNajVLKtkaAB1JGmKyccf2`\n\n5.  *(Optional / Recommended)* Run the script once or twice with debugging\n    enabled (`debug=true`) to ensure everything is okie dokie. Disable\n    debugging when done if you don't want `ytdlrc` to spam your system log\n    when executed via cron.\n\n6.  Set up a cron job to execute the script however often you want, e.g.:\n\n    ```crontab\n    # Every 6 hours\n    30 */6 * * * /home/your-user/bin/ytdlrc\n    ```\n\n    *   If you set up the cron job by moving the `ytdlrc` file to one of the\n        `/etc/cron.*/` directories, you may want to modify the\n        `rclone_config` variable with the path to your rclone config,\n        otherwise it will look inside `/root` for your config file:\n\n        ```diff\n        - rclone_config=\"${HOME}/.config/rclone/rclone.conf\"\n        + rclone_config=\"/home/your-user/.config/rclone/rclone.conf\"\n        ```\n\n        You may also want to modify the `ytdl_root_dir` variable so runtime\n        files aren't created inside `/root`:\n\n        ```diff\n        - ytdl_root_dir=\"${HOME}/ytdlrc\"\n        + ytdl_root_dir=\"/home/your-user/ytdlrc\"\n        ```\n\n7.  *(Optional)* Commit your configuration changes so you can easily remain\n    updated with the upstream version of the script:\n\n    ```shell\n    git add ytdlrc\n    git commit -m \"Modify options to my taste\"\n    ```\n\n    To update the script to the latest version simply run `git pull` and\n    merge any changes.\n\n## Requirements\n\n*   [coreutils](https://www.gnu.org/software/coreutils/coreutils.html)\n*   [ffmpeg](https://ffmpeg.org/)\n*   [rclone \u003e= v1.43](http://rclone.org/)\n*   [youtube-dl](https://rg3.github.io/youtube-dl/)\n\n## License\n\n[MIT](LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbardisty%2Fytdlrc","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbardisty%2Fytdlrc","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbardisty%2Fytdlrc/lists"}