{"id":26905625,"url":"https://github.com/ern0/youda","last_synced_at":"2026-04-24T20:34:43.404Z","repository":{"id":72784585,"uuid":"83361042","full_name":"ern0/youda","owner":"ern0","description":"💾 Youtube Download Automation","archived":false,"fork":false,"pushed_at":"2019-08-23T07:05:48.000Z","size":20,"stargazers_count":2,"open_issues_count":1,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-06-18T06:41:47.975Z","etag":null,"topics":["automation","utility","youtube"],"latest_commit_sha":null,"homepage":"","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/ern0.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,"zenodo":null}},"created_at":"2017-02-27T21:56:15.000Z","updated_at":"2020-07-08T02:39:03.000Z","dependencies_parsed_at":null,"dependency_job_id":"56a3a7cb-b220-49c1-8a96-a697595ff423","html_url":"https://github.com/ern0/youda","commit_stats":null,"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"purl":"pkg:github/ern0/youda","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ern0%2Fyouda","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ern0%2Fyouda/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ern0%2Fyouda/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ern0%2Fyouda/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ern0","download_url":"https://codeload.github.com/ern0/youda/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ern0%2Fyouda/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32239949,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-24T13:21:15.438Z","status":"ssl_error","status_checked_at":"2026-04-24T13:21:15.005Z","response_time":64,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["automation","utility","youtube"],"created_at":"2025-04-01T10:58:21.831Z","updated_at":"2026-04-24T20:34:43.399Z","avatar_url":"https://github.com/ern0.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"youda.py\n========\n*Youtube Downloader Automation*\n\n## How to setup ##\n  - download this script to your computer\n  - install youtube-dl \u003cbr /\u003e\n    on a Mac: brew install youtube-dl \u003cbr /\u003e\n    on any OS: sudo pip install --upgrade youtube_dl\n  - install a context-menu extension in your browser \u003cbr /\u003e\n    e.g. Context Menus for Chrome https://goo.gl/8hgwuB\n  - add a custom action for links, which sends the URL to \u003cbr /\u003e\n    http://localhost:8009/?q=%s \u003cbr /\u003e\n    where \"%s\" is the variable name for the selected URL\n\n## Troubleshooting ##\n\n  - update youtube-dl: \u003cbr/\u003e\n    youtube-dl -U\n  - if you got error message like \"The TLS connection was non-properly terminated\": \u003cbr/\u003e\n    solution: https://github.com/mpv-player/mpv/issues/4425 \u003cbr/\u003e\n    quick solution for Raspberry Pi: https://gist.github.com/enzanki-ars/7d67996a90883e928bc1dd2db7ef0351 \u003cbr/\u003e\n\n## How to use ##\n  - start this script in a shell window: \u003cbr /\u003e\n      youda.py port [download-dir [check-dir [check-dir...]]] \u003cbr /\u003e\n    example:\n      youda.py 8009 ~/Downloads/youtube /media/nexus7/storage/sdcard0/Podcasts/ \u003cbr /\u003e\n    If you specify download-dirs, duplications will be also \u003cbr /\u003e\n    checked in these directories\n  - in your browser, right-click in a YouTube link and \u003cbr /\u003e\n    select custom context menu item you've added\n  - this script will catch the URL and call youtube-dl with it\n\n## Under the hood ##\n  - when you add a file, the web server thread creates a placeholder file\n  - the processing thread scans the directory, picks first placeholder file, \n    then replaces it with the downloaded file\n  - upon counter overflow, the items above 555 will appear before others,\n    e.g. the order will be: 910, 911, 922, 930, 001, 002, 003\n  - because the queue is stored in files, script can be restarted\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fern0%2Fyouda","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fern0%2Fyouda","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fern0%2Fyouda/lists"}