{"id":44290879,"url":"https://github.com/mapitman/ripsharp","last_synced_at":"2026-02-10T23:34:04.527Z","repository":{"id":331708792,"uuid":"1120396419","full_name":"mapitman/ripsharp","owner":"mapitman","description":"Automatic DVD, Blu-Ray, and UltraHD Blu-Ray ripping tool with intelligent metadata lookup and file organization.","archived":false,"fork":false,"pushed_at":"2026-02-05T07:55:24.000Z","size":5240,"stargazers_count":1,"open_issues_count":14,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-02-05T18:52:00.421Z","etag":null,"topics":["blurayrip","dotnet","dvdrip"],"latest_commit_sha":null,"homepage":"","language":"C#","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/mapitman.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-12-21T05:50:56.000Z","updated_at":"2026-02-05T07:55:26.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/mapitman/ripsharp","commit_stats":null,"previous_names":["mapitman/media-encoding"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/mapitman/ripsharp","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mapitman%2Fripsharp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mapitman%2Fripsharp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mapitman%2Fripsharp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mapitman%2Fripsharp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mapitman","download_url":"https://codeload.github.com/mapitman/ripsharp/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mapitman%2Fripsharp/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29321423,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-10T20:44:44.282Z","status":"ssl_error","status_checked_at":"2026-02-10T20:44:43.393Z","response_time":65,"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":["blurayrip","dotnet","dvdrip"],"created_at":"2026-02-10T23:34:04.432Z","updated_at":"2026-02-10T23:34:04.519Z","avatar_url":"https://github.com/mapitman.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# RipSharp\n\n**RipSharp** is a command-line tool for automated optical disc ripping and file naming. It integrates MakeMKV for disc extraction with TMDB, OMDB, and TVDB metadata providers to generate properly organized video files with correct naming and metadata for movies and TV shows. Extracted tracks are re-encoded with FFmpeg using H.264 (slow, CRF 22) for video and AAC for audio, with optional English subtitle embedding.\n\n![RipSharp Demo](demo.png)\n\n## Features\n\n- **Automatic disc detection** — Identifies DVD, Blu-ray, and UHD discs\n- **MakeMKV integration** — Extracts titles without quality loss\n- **Multi-provider metadata** — Fetches movie/TV info from TMDB, OMDB, and TVDB\n- **TV episode resolution** — Looks up episode titles for proper naming\n- **H.264 re-encoding** — Compresses video with FFmpeg (CRF 22, slow preset)\n- **Audio handling** — Copies AAC/AC3/EAC3, transcodes others to AAC\n- **English filtering** — Selects English audio tracks and optional subtitles\n- **Smart file naming** — Generates organized filenames with metadata\n- **Progress tracking** — Real-time display for scanning, ripping, and encoding\n\n## Requirements\n\n### Software\n\n- **MakeMKV** – [makemkv.com](https://www.makemkv.com/)\n- **FFmpeg** – See installation options below\n- **.NET SDK 10.0+** – [dotnet.microsoft.com/download](https://dotnet.microsoft.com/download)\n\n### API Keys (Optional)\n\n- **TMDB** – [themoviedb.org/settings/api](https://www.themoviedb.org/settings/api) (free)\n- **OMDB** – [omdbapi.com/apikey.aspx](https://www.omdbapi.com/apikey.aspx) (free tier)\n- **TVDB** – [thetvdb.com/dashboard/account/apikeys](https://thetvdb.com/dashboard/account/apikeys) (free)\n\n### Hardware\n\n- Optical disc drive (DVD/Blu-ray/UHD) or ISO file\n- 5–100 GB free disk space per disc\n\n## Quick Start\n\n1. **Install dependencies**\n   \n   Install MakeMKV from https://www.makemkv.com/\n\n   Install FFmpeg (choose one):\n\n   Ubuntu/Debian:\n\n   ```bash\n   sudo apt install ffmpeg\n   ```\n\n   Fedora:\n\n   ```bash\n   sudo dnf install ffmpeg\n   ```\n\n   Arch:\n\n   ```bash\n   sudo pacman -S ffmpeg\n   ```\n\n   openSUSE:\n\n   ```bash\n   sudo zypper install ffmpeg\n   ```\n\n   Alpine:\n\n   ```bash\n   sudo apk add ffmpeg\n   ```\n\n   macOS (Homebrew):\n\n   ```bash\n   brew install ffmpeg\n   ```\n\n   Windows (winget):\n\n   ```bash\n   winget install --id Gyan.FFmpeg\n   ```\n\n   Install .NET SDK 10.0+ from https://dotnet.microsoft.com/download\n\n2. **Clone and build**\n   \n   ```bash\n   git clone https://github.com/mapitman/ripsharp.git\n   cd ripsharp\n   dotnet build src/RipSharp\n   ```\n\n3. **Set API keys** (optional but recommended)\n   \n   ```bash\n   export TMDB_API_KEY=\"your_key_here\"\n   export OMDB_API_KEY=\"your_key_here\"\n   export TVDB_API_KEY=\"your_key_here\"\n   ```\n\n4. **Rip a disc**\n   \n   ```bash\n   # Movie from physical disc (auto-detected)\n   dotnet run --project src/RipSharp -- --output ~/Movies\n   \n   # TV series with episode titles\n   dotnet run --project src/RipSharp -- --output ~/TV --mode tv --title \"Breaking Bad\" --season 1\n   \n   # From ISO file\n   dotnet run --project src/RipSharp -- --output ~/Movies --disc \"file:/path/to/movie.iso\"\n   ```\n\n## Options\n\n### Required\n\n| Option          | Description                         |\n|:----------------|:------------------------------------|\n| `--output PATH` | Output directory for ripped files   |\n\n### Optional\n\n| Option                   | Description                                                                                           |\n|:-------------------------|:------------------------------------------------------------------------------------------------------|\n| `--mode auto\\|movie\\|tv` | Content type detection (default: `auto`)                                                              |\n| `--disc PATH`            | Optical drive or ISO file path (default: `disc:0`, e.g., `disc:1`, `/dev/sr0`, `file:movie.iso`)      |\n| `--temp PATH`            | Temporary directory (default: auto-generated in output)                                               |\n| `--title TEXT`           | Custom title for file naming                                                                          |\n| `--year YYYY`            | Release year (movies only)                                                                            |\n| `--season N`             | Season number (TV only, default: `1`)                                                                 |\n| `--episode-start N`      | Starting episode number (TV only, default: `1`)                                                       |\n| `--disc-type TYPE`       | Override disc type: `dvd\\|bd\\|uhd` (auto-detect by default)                                           |\n| `--sequential`           | Disable parallel processing (rip all, then encode all)                                                |\n| `--debug`                | Enable debug logging                                                                                  |\n| `-h, --help`             | Show help message                                                                                     |\n\n### Environment Variables\n\n| Variable        | Description                                    |\n|:----------------|:-----------------------------------------------|\n| `TMDB_API_KEY`  | TMDB API key for metadata lookup (recommended) |\n| `OMDB_API_KEY`  | OMDB API key for metadata lookup (optional)    |\n| `TVDB_API_KEY`  | TVDB API key for TV episode titles (optional)  |\n\n## Building\n\n```bash\ngit clone https://github.com/mapitman/ripsharp.git\ncd ripsharp\ndotnet restore src/RipSharp\ndotnet build src/RipSharp\n```\n\nTo run without building separately:\n\n```bash\ndotnet run --project src/RipSharp -- --output ~/Movies\n```\n\n## Examples\n\n### Movie with Custom Title\n\n```bash\ndotnet run --project src/RipSharp -- --output ~/Movies --title \"The Matrix\" --year 1999\n```\n\n**Output:** `~/Movies/The Matrix (1999).mkv`\n\n### TV Series Season\n\n```bash\ndotnet run --project src/RipSharp -- --output ~/TV --mode tv --title \"Breaking Bad\" --season 1\n```\n\n**Output:** `~/TV/Breaking Bad - S01E01 - Pilot.mkv`, `~/TV/Breaking Bad - S01E02 - Cat's in the Bag....mkv`, etc.\n\n### Using Alternate Disc Drive\n\n```bash\ndotnet run --project src/RipSharp -- --output ~/Movies --disc disc:1\n```\n\n### Ripping from ISO File\n\n```bash\ndotnet run --project src/RipSharp -- --output ~/Movies --disc \"file:/path/to/movie.iso\"\n```\n\n**Output:** Processes the ISO file instead of a physical disc\n\nSee [EXAMPLES.md](EXAMPLES.md) for more detailed examples.\n\n## File Naming\n\nRipSharp automatically generates organized filenames based on metadata lookup results.\n\n### Movies\n\nFormat: `Title (Year).mkv`\n\nExamples:\n- `The Matrix (1999).mkv`\n- `Inception (2010).mkv`\n- `The Shawshank Redemption (1994).mkv`\n\n### TV Series\n\nFormat: `Show Name - S##E## - Episode Title.mkv`\n\nExamples:\n- `Breaking Bad - S01E01 - Pilot.mkv`\n- `The Legend of Korra - S01E01 - Welcome to Republic City.mkv`\n- `Game of Thrones - S03E09 - The Rains of Castamere.mkv`\n\n**Note:** Episode titles require a TVDB API key. Without it, files are named `Show Name - S##E##.mkv`.\n\n## How It Works\n\nRipSharp follows a streamlined workflow to automatically process optical discs:\n\n1. **Scan** — Uses MakeMKV to detect all titles on the disc\n2. **Detect** — Analyzes title durations to identify content type (movie vs TV series)\n3. **Lookup** — Queries metadata providers (TMDB, OMDB, TVDB) for titles and episode information\n4. **Rip** — Extracts titles using MakeMKV at highest quality\n5. **Encode** — Re-encodes with FFmpeg (H.264, AAC) with parallel processing for efficiency\n6. **Rename** — Generates organized filenames and moves to output directory\n7. **Cleanup** — Removes temporary files automatically\n\n## Troubleshooting\n\n### \"Missing required tools\" error\n\nEnsure all dependencies are installed and in PATH:\n\n```bash\nwhich makemkvcon ffmpeg ffprobe dotnet\n```\n\n### Disc not detected\n\n1. Insert disc and wait for it to be recognized by the system\n2. Check if readable: `makemkvcon info disc:0`\n3. Try alternate device: `--disc disc:1` or specify device path\n\n### Insufficient disk space\n\nSpace requirements by disc type:\n- DVD: 4–8 GB\n- Blu-ray: 15–35 GB\n- UHD 4K: 40–100 GB\n\nEnsure both `--temp` and `--output` directories have sufficient space.\n\n### MakeMKV beta key required\n\nMakeMKV requires a license key. Get the latest beta key from: https://www.makemkv.com/forum/viewtopic.php?f=5\u0026t=1053\n\n### Permission denied\n\nSome systems require elevated permissions to access optical drives:\n\n```bash\nsudo dotnet run --project src/RipSharp -- --output ~/Movies\n```\n\n## Support\n\n- Check [Troubleshooting](#troubleshooting) for common issues\n- Open an issue on GitHub: https://github.com/mapitman/ripsharp/issues\n- See examples in [EXAMPLES.md](EXAMPLES.md)\n- MakeMKV forums can help with drive or ripping issues: https://www.makemkv.com/forum/\n\n## Performance\n\nTypical ripping and encoding times vary by disc type, drive speed, and system performance.\n\n| Disc Type | Size      | Approximate Time |\n|:----------|:----------|:-----------------|\n| DVD       | 4–8 GB    | 10–30 minutes    |\n| Blu-ray   | 15–35 GB  | 30–90 minutes    |\n| UHD 4K    | 40–100 GB | 60–180 minutes   |\n\n**Factors affecting performance:**\n- Optical drive read speed\n- CPU encoding performance\n- Disc condition and read errors\n- Parallel processing enabled (default)\n\n**Note:** Times include both ripping and encoding. Use `--sequential` to disable parallel processing if needed.\n\n## Contributing\n\nContributions are welcome! See [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines.\n\n## License\n\nMIT License - see [LICENSE](LICENSE) for details.\n\n**Note:** Ensure you own the physical media and comply with applicable copyright laws when ripping discs.\n\n## Acknowledgments\n\nRipSharp is built on top of these excellent tools:\n\n- **[MakeMKV](https://www.makemkv.com/)** — Disc ripping and extraction engine\n- **[FFmpeg](https://ffmpeg.org/)** — Media encoding and processing\n- **[TMDB](https://www.themoviedb.org/)** — Movie and TV series metadata\n- **[OMDB](https://www.omdbapi.com/)** — Additional movie database\n- **[TVDB](https://thetvdb.com/)** — TV episode information","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmapitman%2Fripsharp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmapitman%2Fripsharp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmapitman%2Fripsharp/lists"}