{"id":32472142,"url":"https://github.com/delivator/riparr","last_synced_at":"2026-01-26T02:00:36.356Z","repository":{"id":318867926,"uuid":"1076393985","full_name":"Delivator/riparr","owner":"Delivator","description":"A music requester app","archived":false,"fork":false,"pushed_at":"2026-01-26T00:38:32.000Z","size":917,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-01-26T01:58:59.313Z","etag":null,"topics":["arr","homelab","homelab-media","music","streamrip"],"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/Delivator.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,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-10-14T19:50:46.000Z","updated_at":"2026-01-26T00:34:12.000Z","dependencies_parsed_at":"2026-01-25T13:04:05.080Z","dependency_job_id":null,"html_url":"https://github.com/Delivator/riparr","commit_stats":null,"previous_names":["delivator/riparr"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Delivator/riparr","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Delivator%2Friparr","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Delivator%2Friparr/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Delivator%2Friparr/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Delivator%2Friparr/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Delivator","download_url":"https://codeload.github.com/Delivator/riparr/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Delivator%2Friparr/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28764399,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-26T00:37:26.264Z","status":"online","status_checked_at":"2026-01-26T02:00:08.215Z","response_time":59,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["arr","homelab","homelab-media","music","streamrip"],"created_at":"2025-10-26T17:28:06.714Z","updated_at":"2026-01-26T02:00:36.312Z","avatar_url":"https://github.com/Delivator.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# riparr\n\nA music requester and download management system — **Like Jellyseerr but for music.**\n\nRiparr allows users to search for and request songs, albums, and artists. It leverages [streamrip](https://github.com/nathom/streamrip) for automated downloading, with planned features for advanced metadata processing and Jellyfin library integration.\n\n---\n\n## 🚀 Features\n\n- **Music Search \u0026 Request**: Search via MusicBrainz API for accurate metadata.\n- **Automatic Downloading**: Seamlessly fetch music via Qobuz, Deezer, or Tidal.\n- **Jellyfin Integration**: (Planned) Sync your existing library to prevent duplicate downloads.\n- **Smart Metadata**: (Planned) Integrated post-processing with MusicBrainz Picard for perfect tags.\n- **User Roles**: Separate admin and user accounts.\n\n\u003e **Note**: Post-processing and Jellyfin library integration are currently in development and not yet fully implemented.\n\n---\n\n## 🛠️ Setup \u0026 Configuration\n\n### 1. Credentials \u0026 Environment\nBefore running, you need to set up your environment:\n```bash\ncp .env.example .env\n# Edit .env and set a secure SECRET_KEY\n```\n\n### 2. Streamrip Config\nCopy the example config and add your streaming service credentials:\n```bash\nmkdir -p config\ncp config/streamrip.toml.example config/streamrip.toml\n# Edit config/streamrip.toml with your account details\n```\n\u003e [!TIP]\n\u003e Riparr focuses on credentials in the `streamrip.toml`. Download paths and quality are managed through the web interface or `.env`.\n\n---\n\n## 💻 Development\n\n### Local with `uv`\nThe recommended way to run the backend locally:\n```bash\nuv sync\nuv run flask --app backend/app.py init-db\nuv run flask --app backend/app.py run --debug\n```\n\n### Containerized Environment\nRunning with the development overwrite allows for hot-reloading and easy dependency management:\n```bash\n# Using Podman (or docker compose)\npodman compose -f docker-compose.yml -f docker-compose.dev.yml up -d\n```\n\n---\n\n## 🏠 Production \u0026 NAS Deployment\n\nFor a stable service on a NAS or server, use the standard compose file.\n\n### 1. Run the service\n```bash\npodman compose up -d\n```\n\n### 2. Initialize the Database\nOn your first deployment, run the initialization command:\n```bash\npodman compose exec app flask --app backend/app.py init-db\n```\n\n### 3. Example `docker-compose.yml` Structure\n```yaml\nservices:\n  app:\n    image: riparr:latest\n    restart: unless-stopped\n    ports:\n      - \"5000:5000\"\n    volumes:\n      - ./instance:/app/instance         # Database and app state\n      - ./music:/app/music               # Your music library path\n      - ./config:/app/config             # streamrip.toml location\n    environment:\n      - SECRET_KEY=your_secret_here\n```\n\n---\n\n## ⚙️ Administration\n\n- **Default Admin**: `admin` / `admin` (Change this immediately!)\n- **Storage**: Customize how music is organized (e.g., `{artist}/{album}/{title}`) in the web settings.\n\n---\n\n## 🙏 Acknowledgments\n\nThis project relies heavily on the incredible work of the [streamrip](https://github.com/nathom/streamrip) project. Huge thanks to **nathom** and all the **streamrip contributors** for building the core engine that makes Riparr possible.\n\n---\n\n## ⚖️ Disclaimer \u0026 Warning\n\n### ⚠️ Vibecoded\nThis project has been almost **100% vibecoded** with the help of **GitHub Copilot** and **Antigravity**. It is provided \"as is\", and I take no responsibility for any harm, data loss, or emotional distress caused by its use.\n\n### ⚖️ Legal Disclaimer\nRiparr is for educational and private use only. I cannot be held responsible for how this software is used. By using this software, you agree to comply with the Terms of Service of the streaming services you access. You are responsible for your own actions and any consequences that may arise from using this software.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdelivator%2Friparr","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdelivator%2Friparr","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdelivator%2Friparr/lists"}