{"id":15719403,"url":"https://github.com/targetdisk/squid-dl","last_synced_at":"2025-07-21T10:04:31.572Z","repository":{"id":218630941,"uuid":"417720978","full_name":"targetdisk/squid-dl","owner":"targetdisk","description":"a massively parallel yt-dlp-based YouTube downloader","archived":false,"fork":false,"pushed_at":"2024-05-18T00:55:57.000Z","size":92,"stargazers_count":99,"open_issues_count":3,"forks_count":4,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-11T11:44:51.313Z","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":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/targetdisk.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":"2021-10-16T04:58:27.000Z","updated_at":"2025-03-09T14:09:32.000Z","dependencies_parsed_at":"2024-01-23T03:30:58.461Z","dependency_job_id":"e9826391-78d7-4dfe-933c-f28c03ed701c","html_url":"https://github.com/targetdisk/squid-dl","commit_stats":null,"previous_names":["targetdisk/squid-dl"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/targetdisk/squid-dl","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/targetdisk%2Fsquid-dl","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/targetdisk%2Fsquid-dl/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/targetdisk%2Fsquid-dl/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/targetdisk%2Fsquid-dl/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/targetdisk","download_url":"https://codeload.github.com/targetdisk/squid-dl/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/targetdisk%2Fsquid-dl/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":266278353,"owners_count":23904040,"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-03T21:55:40.450Z","updated_at":"2025-07-21T10:04:31.550Z","avatar_url":"https://github.com/targetdisk.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003cimg alt=\"squid-dl logo\" src=\"./img/squid-dl.no-outline.web.svg\"\u003e\n  \u003ch1 align=\"center\"\u003esquid-dl\u003c/h1\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/psf/black\"\u003e\n    \u003cimg alt=\"Code style: black\" src=\"https://img.shields.io/badge/code%20style-black-000000.svg\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://github.com/targetdisk/squid-dl/blob/main/LICENSE\"\u003e\n    \u003cimg alt=\"License: AGPL v3\" src=\"./img/license.svg\"\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n`squid-dl` is a massively parallel\n[yt-dlp](https://github.com/yt-dlp/yt-dlp)-based YouTube downloader useful for\ndownloading large video playlists.  The faster your internet connection, the\nmore fun you can have!\n\n## Installation\nRun the `setup.py`, which will install `squid-dl` and its two dependencies:\n`linode-cli` and `yt-dlp`.\n```\n$ python3 setup.py install\n```\n\nIf that fails, you may have to install `setuptools`.  You can get it by\ninvoking:\n```\n$ python3 -m pip install setuptools\n```\n\n### Linode Proxy Setup\nIf you want to use the Linode SOCKS proxy feature, be sure to configure the\n`linode-cli` first:\n```\n$ linode-cli configure --token\n```\n\nFollow the onscreen instructions and be sure to set sensible defaults.  The\ndefault region for new Linodes that you pick here is where your proxies will\nlive.  For more information, see\n[this page](https://www.linode.com/docs/guides/linode-cli/) on Linode's website.\n\n## Usage\nTo download a playlist, first fetch its metadata with `squidson`:\n```\n(.venv) $ squidson 'https://www.youtube.com/playlist?list=PLhI42_YpLVHvYqvjniSp7lhAM55K4fllO'\n[youtube:tab] PLhI42_YpLVHvYqvjniSp7lhAM55K4fllO: Downloading webpage\n[youtube:tab] PLhI42_YpLVHvYqvjniSp7lhAM55K4fllO: Downloading API JSON with unavailable videos\n[download] Downloading playlist: Programming\n[youtube:tab] playlist Programming: Downloading 12 videos\n[download] Downloading video 1 of 12\n[youtube] Wp9XD5FKZ2c: Downloading webpage\n[youtube] Wp9XD5FKZ2c: Downloading android player API JSON\n...\n[download] Downloading video 12 of 12\n[youtube] CIpfoMKqPAg: Downloading webpage\n[youtube] CIpfoMKqPAg: Downloading android player API JSON\n[youtube] CIpfoMKqPAg: Downloading MPD manifest\n[youtube] CIpfoMKqPAg: Downloading MPD manifest\n[download] Finished downloading playlist: Programming\n[INFO]: Writing JSON-ified playlist info_dict to \"Programming.json\"\n```\n\nNow that you have the playlist `.json` file, you can download it with\n`squid-dl`.  Use the `-n` flag to tell `squid-dl` how many workers you'd like to\nspawn downloading videos at once (the default is 8 workers).  In this 12-video\nplaylist example, we'll spawn 12 workers:\n```\n(.venv) $ squid-dl -n 12 Programming.json\n\n[INFO]: Starting squid-dl...\n[INFO]: saving videos to \"Programming\" directory\n\n...\n[download] Download completed\n[download] Download completed\n[download] Download completed\n[INFO]: Worker 80214 done...\n[INFO]: Worker 80319 done...\n[download] Download completed\n[INFO]: Worker 80150 done...\n[INFO]: Worker 80248 done...\n[download] Download completed\n[INFO]: Worker 80219 done...\n[INFO]: Worker 80109 done...\n[INFO]: Worker 80341 done...\n[download] Download completed\n[INFO]: Worker 80193 done...\n[download] Download completed\n[INFO]: Worker 80117 done...\n[INFO]: All done!\n```\n\nFor more information see the built-in help by running `squid-dl -h`.\n\n### SOCKS Proxying\nFor those with access to a dedicated SOCKS proxy already, you can use\n`squid-dl`'s `-S` and a fully-qualified SOCKS4, SOCKS4A, or SOCKS5 proxy URL\nto download your playlists through a proxy!  Here's an example using NordVPN's\nSOCKS5 proxy:\n```\n(.venv) $ squid-dl -S socks5://us.socks.nordhold.net:1080 -n 12 Mems.json\n\n[INFO]: Starting squid-dl...\n[INFO]: saving videos to \"Mems\" directory\nSOCKS username: 0asFVrZt0bw1ucPvQRKiUe87\nSOCKS password:\n\n...\n[download] Download completed\n[INFO]: Worker 1667326 done...\n[INFO]: Worker 1667396 done...\n[INFO]: Worker 1667484 done...\n[download] Download completed\n[download] Download completed\n[INFO]: Worker 1667352 done...\n[INFO]: Worker 1667421 done...\n[INFO]: All done!\n```\n\nYou can also add a username and password to SOCKS5 and SOCKS4A proxy URLs in a\nformat like this:\n```\nsocks5://username:password@hostname:port\n```\n\n**SECURITY NOTE:** typing in usernames and passwords this way is considered\ninsecure, as they will likely end up in your shell's history file completely\nunprotected and in the clear (☹).  It is generally recommended to input the\nusername and password interactively unless you are scripting `squid-dl`.\n\n### Linode Proxying\nWith the `-L` option, you can run each worker through its own Linode-powered\nSSH-tunneled SOCKSv5 proxy!  `squid-dl` will make an temporary SSH key in\nthe current working directory and then get to work spinning up Linodes and\ndownloading your videos:\n```\n(.venv) anon@fire-crotch:~/butter/youtube/btr$ squid-dl -L Mem.json\n\n[INFO]: Creating SSH key for Linode proxying...\nGenerating public/private rsa key pair.\nYour identification has been saved in /home/anon/fuse/butter-anon/youtube/btr/proxy\n_key\nYour public key has been saved in /home/anon/fuse/butter-anon/youtube/btr/proxy_key\n.pub\nThe key fingerprint is:\nSHA256:cSns+aK0l7xS+fRSXRdqmc5DXkT5pIQsDV8/Ql526vg anon@fire-crotch\nThe key's randomart image is:\n+---[RSA 3072]----+\n|          .+ oo+o|\n|       .  .o*.+*o|\n|        + o..+*++|\n|       . =   Oo.=|\n|        S.  B.o..|\n|        o.. .*.  |\n|      .o.+.o  E  |\n|     ..o+.o .    |\n|      oo.. .     |\n+----[SHA256]-----+\n\n[INFO]: Starting squid-dl...\n[INFO]: saving videos to \"Mems\" directory\n[INFO]: Created Linode 30970792.\n[INFO]: Waiting for Linodes to come online...........................\n\n[INFO]: Starting proxy on port 1337 with Linode 30970792\nWarning: Permanently added '45.79.47.110' (ED25519) to the list of known hosts.\n[INFO]: SOCKS validation succeeded on port 1337 from ID 30970792\n[youtube] fIdfGtG7Isg: Downloading android player API JSON\n[youtube] fIdfGtG7Isg: Downloading iframe API JS\n[youtube] fIdfGtG7Isg: Downloading player 03869671\n[youtube] fIdfGtG7Isg: Downloading web player API JSON\n[youtube] fIdfGtG7Isg: Downloading MPD manifest\n[youtube] fIdfGtG7Isg: Downloading MPD manifest\n[youtube] fIdfGtG7Isg: Downloading initial data API JSON\n[info] fIdfGtG7Isg: Downloading 1 format(s): 22\n[info] Downloading video thumbnail ...\n[info] Writing video thumbnail to: Plankton goes to an anime convention [fIdfGtG7Is\ng].webp\n[download] Destination: Plankton goes to an anime convention [fIdfGtG7Isg].mp4\n[download] Download completed\n[INFO]: Cleaning up worker 83832's exclusive proxy\n[CLEANUP]: Deleted Linode 30970792.\n[INFO]: Worker 83832 done...\n[INFO]: All done!\n[CLEANUP]: Deleting Linode proxies...\n```\n\n## Bugs\nIf you encounter any issues running `squid-dl`, please create an issue\n[on GitHub](https://github.com/targetdisk/squid-dl/issues/new/choose).\n\nThis software has only tested on Linux so far (patches welcome).\n\n## Contributing\nSubmit your patches as GitHub\n[pull requests](https://github.com/targetdisk/squid-dl/pulls).\n\n### Contact\nFeel free to holler at me on `#squid-dl` on\n[Libera.chat](https://libera.chat/).\n\n### Style notes\nI am an 80 column stickler.  I run all Python code in this repository through\n`black -l 80`.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftargetdisk%2Fsquid-dl","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftargetdisk%2Fsquid-dl","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftargetdisk%2Fsquid-dl/lists"}