{"id":13551755,"url":"https://github.com/manbearwiz/youtube-dl-server","last_synced_at":"2026-01-17T04:23:04.516Z","repository":{"id":27165264,"uuid":"30634756","full_name":"manbearwiz/youtube-dl-server","owner":"manbearwiz","description":"Web / REST interface for downloading youtube videos onto a server.","archived":false,"fork":false,"pushed_at":"2026-01-12T08:47:18.000Z","size":240,"stargazers_count":926,"open_issues_count":38,"forks_count":290,"subscribers_count":22,"default_branch":"main","last_synced_at":"2026-01-15T08:35:29.422Z","etag":null,"topics":["docker","python","rest-api","videos","youtube-dl"],"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/manbearwiz.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":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2015-02-11T06:51:16.000Z","updated_at":"2026-01-11T20:22:12.000Z","dependencies_parsed_at":"2023-09-26T20:01:06.594Z","dependency_job_id":"65c06d8f-c219-401d-9d12-d1f816464620","html_url":"https://github.com/manbearwiz/youtube-dl-server","commit_stats":null,"previous_names":["kmb32123/youtube-dl-server"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/manbearwiz/youtube-dl-server","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/manbearwiz%2Fyoutube-dl-server","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/manbearwiz%2Fyoutube-dl-server/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/manbearwiz%2Fyoutube-dl-server/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/manbearwiz%2Fyoutube-dl-server/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/manbearwiz","download_url":"https://codeload.github.com/manbearwiz/youtube-dl-server/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/manbearwiz%2Fyoutube-dl-server/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28494822,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-17T02:39:23.645Z","status":"ssl_error","status_checked_at":"2026-01-17T02:34:19.649Z","response_time":85,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: 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":["docker","python","rest-api","videos","youtube-dl"],"created_at":"2024-08-01T12:01:53.240Z","updated_at":"2026-01-17T04:23:04.498Z","avatar_url":"https://github.com/manbearwiz.png","language":"Python","funding_links":[],"categories":["Python","HarmonyOS"],"sub_categories":["Windows Manager"],"readme":"[![Docker Stars Shield](https://img.shields.io/docker/stars/kmb32123/youtube-dl-server.svg?style=flat-square)](https://hub.docker.com/r/kmb32123/youtube-dl-server/)\n[![Docker Pulls Shield](https://img.shields.io/docker/pulls/kmb32123/youtube-dl-server.svg?style=flat-square)](https://hub.docker.com/r/kmb32123/youtube-dl-server/)\n[![GitHub license](https://img.shields.io/badge/license-MIT-blue.svg?style=flat-square)](https://raw.githubusercontent.com/manbearwiz/youtube-dl-server/master/LICENSE)\n![Workflow](https://github.com/manbearwiz/youtube-dl-server/actions/workflows/docker-image.yml/badge.svg)\n\n# youtube-dl-server\n\nVery spartan Web and REST interface for downloading youtube videos onto a server. [`starlette`](https://github.com/encode/starlette) + [`yt-dlp`](https://github.com/yt-dlp/yt-dlp).\n\n![screenshot][1]\n\n## Running\n\n### Docker CLI\n\nThis example uses the docker run command to create the container to run the app. Here we also use host networking for simplicity. Also note the `-v` argument. This directory will be used to output the resulting videos\n\n```shell\ndocker run -d --net=\"host\" --name youtube-dl -v /home/core/youtube-dl:/youtube-dl kmb32123/youtube-dl-server\n```\n\nTo provide custom yt-dlp configuration (e.g., authentication, custom options), mount a config directory:\n\n```shell\ndocker run -d --net=\"host\" --name youtube-dl \\\n  -v /home/core/youtube-dl:/youtube-dl \\\n  -v /home/core/yt-dlp-config:/root/.config/yt-dlp \\\n  kmb32123/youtube-dl-server\n```\n\nPlace your `config` file in `/home/core/yt-dlp-config/` with yt-dlp options (one per line). See [yt-dlp configuration documentation](https://github.com/yt-dlp/yt-dlp#configuration) for details.\n\n### Docker Compose\n\nThis is an example service definition that could be put in `docker-compose.yml`. This service uses a VPN client container for its networking.\n\n```yml\n  youtube-dl:\n    image: \"kmb32123/youtube-dl-server\"\n    network_mode: \"service:vpn\"\n    volumes:\n      - /home/core/youtube-dl:/youtube-dl\n      - /home/core/yt-dlp-config:/root/.config/yt-dlp  # optional: custom yt-dlp config\n    restart: always\n```\n\n### Python\n\nIf you have python ^3.6.0 installed in your PATH you can simply run like this, providing optional environment variable overrides inline.\n\n```shell\nYDL_UPDATE_TIME=False python3 -m uvicorn youtube-dl-server:app --port 8123\n```\n\nIn this example, `YDL_UPDATE_TIME=False` is the same as the command line option `--no-mtime`.\n\n## Usage\n\n### Start a download remotely\n\nDownloads can be triggered by supplying the `{{url}}` of the requested video through the Web UI or through the REST interface via curl, etc.\n\n#### HTML\n\nJust navigate to `http://{{host}}:8080/youtube-dl` and enter the requested `{{url}}`.\n\n#### Curl\n\n```shell\ncurl -X POST --data-urlencode \"url={{url}}\" http://{{host}}:8080/youtube-dl/q\n```\n\n#### Fetch\n\n```javascript\nfetch(`http://${host}:8080/youtube-dl/q`, {\n  method: \"POST\",\n  body: new URLSearchParams({\n    url: url,\n    format: \"bestvideo\"\n  }),\n});\n```\n\n#### Bookmarklet\n\nAdd the following bookmarklet to your bookmark bar so you can conviently send the current page url to your youtube-dl-server instance.\n\n```javascript\njavascript:!function(){fetch(\"http://${host}:8080/youtube-dl/q\",{body:new URLSearchParams({url:window.location.href,format:\"bestvideo\"}),method:\"POST\"})}();\n```\n\n## Implementation\n\nThe server uses [`starlette`](https://github.com/encode/starlette) for the web framework and [`youtube-dl`](https://github.com/rg3/youtube-dl) to handle the downloading. The integration with youtube-dl makes use of their [python api](https://github.com/rg3/youtube-dl#embedding-youtube-dl).\n\nThis docker image is based on [`python:alpine`](https://registry.hub.docker.com/_/python/) and consequently [`alpine:3.8`](https://hub.docker.com/_/alpine/).\n\n[1]:youtube-dl-server.png\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmanbearwiz%2Fyoutube-dl-server","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmanbearwiz%2Fyoutube-dl-server","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmanbearwiz%2Fyoutube-dl-server/lists"}