{"id":39502857,"url":"https://github.com/unshackle-dl/unshackle","last_synced_at":"2026-05-05T00:02:52.333Z","repository":{"id":305060767,"uuid":"1021777983","full_name":"unshackle-dl/unshackle","owner":"unshackle-dl","description":"Modular Movie, TV, and Music Archival Software","archived":false,"fork":false,"pushed_at":"2026-04-26T22:33:26.000Z","size":1829,"stargazers_count":266,"open_issues_count":12,"forks_count":65,"subscribers_count":9,"default_branch":"main","last_synced_at":"2026-04-27T00:23:01.728Z","etag":null,"topics":["downloader","playready","python","uv","widevine"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/unshackle-dl.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","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,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-07-18T00:05:48.000Z","updated_at":"2026-04-26T19:10:31.000Z","dependencies_parsed_at":"2026-03-06T01:01:10.716Z","dependency_job_id":null,"html_url":"https://github.com/unshackle-dl/unshackle","commit_stats":null,"previous_names":["unshackle-dl/unshackle"],"tags_count":18,"template":false,"template_full_name":null,"purl":"pkg:github/unshackle-dl/unshackle","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/unshackle-dl%2Funshackle","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/unshackle-dl%2Funshackle/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/unshackle-dl%2Funshackle/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/unshackle-dl%2Funshackle/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/unshackle-dl","download_url":"https://codeload.github.com/unshackle-dl/unshackle/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/unshackle-dl%2Funshackle/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32629705,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-04T10:08:07.713Z","status":"ssl_error","status_checked_at":"2026-05-04T10:08:02.005Z","response_time":58,"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":["downloader","playready","python","uv","widevine"],"created_at":"2026-01-18T05:48:58.430Z","updated_at":"2026-05-05T00:02:52.142Z","avatar_url":"https://github.com/unshackle-dl.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n    \u003cimg width=\"16\" height=\"16\" alt=\"no_encryption\" src=\"https://github.com/user-attachments/assets/6ff88473-0dd2-4bbc-b1ea-c683d5d7a134\" /\u003e unshackle\n    \u003cbr/\u003e\n    \u003csup\u003e\u003cem\u003eMovie, TV, and Music Archival Software\u003c/em\u003e\u003c/sup\u003e\n    \u003cbr/\u003e\n      \u003ca href=\"https://discord.gg/mHYyPaCbFK\"\u003e\n        \u003cimg src=\"https://img.shields.io/discord/1395571732001325127?label=\u0026logo=discord\u0026logoColor=ffffff\u0026color=7289DA\u0026labelColor=7289DA\" alt=\"Discord\"\u003e\n    \u003c/a\u003e\n\u003c/p\u003e\n\n## What is unshackle?\n\nunshackle is a fork of [Devine](https://github.com/devine-dl/devine/), a powerful archival tool for downloading movies, TV shows, and music from streaming services. Built with a focus on modularity and extensibility, it provides a robust framework for content acquisition with support for DRM-protected content.\n\n## Key Features\n\n- 🚀 **Easy Installation** - Simple UV installation\n- 🎥 **Multi-Media Support** - Movies, TV episodes, and music\n- 🛠️ **Built-in Parsers** - DASH/HLS and ISM manifest support\n- 🔒 **DRM Support** - Widevine and PlayReady integration\n- 🌈 **HDR10+DV Hybrid** - Hybrid Dolby Vision injection via [dovi_tool](https://github.com/quietvoid/dovi_tool)\n- 💾 **Flexible Storage** - Local and remote key vaults\n- 👥 **Multi-Profile Auth** - Support for cookies and credentials\n- 🤖 **Smart Naming** - Automatic P2P-style filename structure\n- ⚙️ **Configurable** - YAML-based configuration\n- ❤️ **Open Source** - Fully open-source with community contributions welcome\n\n## Quick Start\n\n### Installation\n\nThis installs the latest version directly from the GitHub repository:\n\n```shell\ngit clone https://github.com/unshackle-dl/unshackle.git\ncd unshackle\nuv sync\nuv run unshackle --help\n```\n\n### Install unshackle as a global (per-user) tool\n\n```bash\nuv tool install git+https://github.com/unshackle-dl/unshackle.git\n# Then run:\nuvx unshackle --help   # or just `unshackle` once PATH updated\n```\n\n\u003e [!NOTE]\n\u003e After installation, you may need to add the installation path to your PATH environment variable if prompted.\n\n\u003e **Recommended:** Use `uv run unshackle` instead of direct command execution to ensure proper virtual environment activation.\n\n## Planned Features\n\n- 🖥️ **Web UI Access \u0026 Control** - Manage and control unshackle from a modern web interface.\n- 🔄 **Sonarr/Radarr Interactivity** - Direct integration for automated personal downloads.\n- ⚙️ **Better ISM Support** - Improve on ISM support for multiple services\n- 🔉 **ATMOS** - Better Atmos Support/Selection\n- 🎵 **Music** - Cleanup Audio Tagging using the [tags.py](unshackle/core/utils/tags.py) for artist/track name etc.\n\n### Basic Usage\n\n```shell\n# Check available commands\nuv run unshackle --help\n\n# Configure your settings\ngit clone https://github.com/unshackle-dl/unshackle.git\ncd unshackle\nuv sync\nuv run unshackle --help\n\n# Download content (requires configured services)\nuv run unshackle dl SERVICE_NAME CONTENT_ID\n```\n\n## Documentation\n\nFor comprehensive setup guides, configuration options, and advanced usage:\n\n📖 **[Visit our WIKI](https://github.com/unshackle-dl/unshackle/wiki)**\n\nThe WIKI contains detailed information on:\n\n- Service configuration\n- DRM configuration\n- Advanced features and troubleshooting\n\nFor guidance on creating services, see our [WIKI documentation](https://github.com/unshackle-dl/unshackle/wiki).\n\n## End User License Agreement\n\nunshackle and it's community pages should be treated with the same kindness as other projects.\nPlease refrain from spam or asking for questions that infringe upon a Service's End User License Agreement.\n\n1. Do not use unshackle for any purposes of which you do not have the rights to do so.\n2. Do not share or request infringing content; this includes widevine Provision Keys, Content Encryption Keys,\n   or Service API Calls or Code.\n3. The Core codebase is meant to stay Free and Open-Source while the Service code should be kept private.\n4. Do not sell any part of this project, neither alone nor as part of a bundle.\n   If you paid for this software or received it as part of a bundle following payment, you should demand your money\n   back immediately.\n5. Be kind to one another and do not single anyone out.\n\n## Licensing\n\nThis software is licensed under the terms of [GNU General Public License, Version 3.0](LICENSE).  \nYou can find a copy of the license in the LICENSE file in the root folder.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Funshackle-dl%2Funshackle","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Funshackle-dl%2Funshackle","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Funshackle-dl%2Funshackle/lists"}