{"id":18048281,"url":"https://github.com/relintai/ytdl_link_gen","last_synced_at":"2025-10-09T05:33:00.160Z","repository":{"id":59636631,"uuid":"538253875","full_name":"Relintai/ytdl_link_gen","owner":"Relintai","description":"A little python script that helps archiving youtube (and other) channels using yt-dlp.","archived":false,"fork":false,"pushed_at":"2023-10-20T09:08:52.000Z","size":33,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-02-10T13:14:04.512Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","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/Relintai.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,"publiccode":null,"codemeta":null}},"created_at":"2022-09-18T22:08:40.000Z","updated_at":"2022-09-18T22:26:09.000Z","dependencies_parsed_at":"2023-01-18T15:25:09.442Z","dependency_job_id":"e4c42ced-c34a-40ac-a19a-ed6b7c7677a9","html_url":"https://github.com/Relintai/ytdl_link_gen","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Relintai%2Fytdl_link_gen","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Relintai%2Fytdl_link_gen/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Relintai%2Fytdl_link_gen/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Relintai%2Fytdl_link_gen/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Relintai","download_url":"https://codeload.github.com/Relintai/ytdl_link_gen/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247289431,"owners_count":20914464,"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":[],"created_at":"2024-10-30T20:12:18.132Z","updated_at":"2025-10-09T05:32:55.125Z","avatar_url":"https://github.com/Relintai.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# YTDL Link Gen\n\nA little python script that helps archiving youtube (and other) channels using yt-dlp.\n\n## Features\n\n- Generates a simple batch file that you can use to get everything.\n- Skips downloading all video metadata, unlike vanilla yt-dlp.\n- Keeps track the videos you have without needing to keep the videos accessible, and only dowloads missing stuff.\n- Numbers each video, also remembers old numbering (meaning: deleted videos will not screw it up).\n- Backs up it's own data before an update.\n\n## Usage\n\n### Python\n\nFirst make sure that you have python 3 installed.\n\n#### Without python virtual environments (global install)\n\nInstall yt-dlp:\n\n` sudo pip install yt-dlp  `\n\n#### Using python virtual environments\n\ncreate a new virtual environment in the current folder:\n\n` python -m venv venv `\n\nThis will create a new venv folder.\n\nActivate it:\n\nPOSIX:\n\nbash/zsh ` $ source venv/bin/activate `\\\nfish ` $ source venv/bin/activate.fish `\\\ncsh/tcsh ` $ source venv/bin/activate.csh `\\\nPowerShell ` $ venv/bin/Activate.ps1 `\\\nbash (alternate) ` $ . ./venv/bin/activate `\n\nWindows:\n\t\ncmd.exe ` C:\\\u003e venv\\Scripts\\activate.bat `\\\nPowerShell ` PS C:\\\u003e venv\\Scripts\\Activate.ps1 `\n\t\nInstall the newest yt-dlp (Recommended, as sites change a lot.):\n\n` pip install yt-dlp  `\n\nOr install the last tested version (In case the newest doesn't work):\n\n` pip install -r requirements.txt  `\n\nHere are the [full python virtualenv docs](https://docs.python.org/3/library/venv.html) if needed.\n\n### Script\n\nSet up your config file:\n\n` cp config.txt.example config.txt `\n\nAdd all channels that you want to grab to your new config.txt.\n\nRun the script:\n\n` python ytdl_link_gen.py `\n\nIf you run into any issue you can safely run the script again, it will continue where it left off.\n\nOnce this is finished you can (and should, if you want to update videos again) delete the new `temp` directory which got created. It contains channel data,\nso if an error occurs it won't have to re-download channel lists again.\n\nYou should have a ` dl.sh ` now. Containing yt-dlp commands to all videos since the previous run.\n\nRun it single threaded:\n\n``` \nchmod +x dl.sh \n./dl.sh\n```\n\nOr for example using parallel:\n\n` parallel -j4 -a dl.sh --progress `\n\n### Note\n\nIf you get an error conplaining about a null object being unindexable check the .json for that channel in the temp directory.\nif it only has a null in in delete it. That should solve the issue.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frelintai%2Fytdl_link_gen","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frelintai%2Fytdl_link_gen","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frelintai%2Fytdl_link_gen/lists"}