{"id":41443147,"url":"https://github.com/mewset/better-iptv","last_synced_at":"2026-02-26T11:27:48.960Z","repository":{"id":324795566,"uuid":"1097304134","full_name":"mewset/better-iptv","owner":"mewset","description":"Cross-platform IPTV player that just works. Handles huge playlists (100K+ channels), EPG guide, parental controls, series \u0026 movies library. Built with Rust + Tauri + React for speed \u0026 reliability. Privacy-first. Linux, Windows \u0026 macOS support.","archived":false,"fork":false,"pushed_at":"2026-01-27T22:22:47.000Z","size":1353,"stargazers_count":8,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-01-28T10:21:24.393Z","etag":null,"topics":["cross-platform","desktop-app","epg","iptv","iptv-player","linux","m3u","media-player","mpv","react","rust","streaming","tauri","tv-player","typescript","video-player","vod","xmltv"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mewset.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":".github/FUNDING.yml","license":null,"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},"funding":{"ko_fi":"R6R21I53PD"}},"created_at":"2025-11-15T23:04:12.000Z","updated_at":"2026-01-28T03:53:14.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/mewset/better-iptv","commit_stats":null,"previous_names":["mewset/better-iptv"],"tags_count":8,"template":false,"template_full_name":null,"purl":"pkg:github/mewset/better-iptv","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mewset%2Fbetter-iptv","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mewset%2Fbetter-iptv/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mewset%2Fbetter-iptv/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mewset%2Fbetter-iptv/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mewset","download_url":"https://codeload.github.com/mewset/better-iptv/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mewset%2Fbetter-iptv/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29857347,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-26T08:51:08.701Z","status":"ssl_error","status_checked_at":"2026-02-26T08:50:19.607Z","response_time":89,"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":["cross-platform","desktop-app","epg","iptv","iptv-player","linux","m3u","media-player","mpv","react","rust","streaming","tauri","tv-player","typescript","video-player","vod","xmltv"],"created_at":"2026-01-23T14:58:46.306Z","updated_at":"2026-02-26T11:27:48.927Z","avatar_url":"https://github.com/mewset.png","language":"TypeScript","funding_links":["https://ko-fi.com/R6R21I53PD"],"categories":["Apps"],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"src/assets/logo/logo-256.png\" alt=\"Better IPTV Logo\" width=\"200\"/\u003e\n\n  # Better IPTV\n\n  **Modern, cross-platform IPTV player built with Rust and Tauri**\n\n  [![Test Build](https://github.com/mewset/better-iptv/workflows/Test%20Build/badge.svg)](https://github.com/mewset/better-iptv/actions)\n  [![Tests](https://img.shields.io/badge/tests-passing-brightgreen.svg)](https://github.com/mewset/better-iptv/actions)\n  [![Platform](https://img.shields.io/badge/platform-Linux%20%7C%20Windows%20%7C%20macOS-blue.svg)](#-installation)\n  [![AUR](https://img.shields.io/aur/version/better-iptv-bin?logo=archlinux\u0026label=AUR)](https://aur.archlinux.org/packages/better-iptv-bin)\n  [![License: GPL v2](https://img.shields.io/badge/License-GPL%20v2-blue.svg)](LICENSE)\n\n  [Features](#-features) • [Installation](#-installation) • [Quick Start](#-quick-start) • [FAQ](#-faq) • [Contributing](#-contributing)\n\u003c/div\u003e\n\n---\n\n## 📺 Overview\n\nBetter IPTV is a powerful desktop IPTV player that combines the performance of Rust with the flexibility of a modern web UI. Built on MPV for reliable video playback, it handles everything from live TV to movies and series with ease.\n\n**Why Better IPTV?**\n- 🚀 **Fast \u0026 Efficient** - Rust backend handles 100,000+ channels without breaking a sweat\n- 🎯 **Smart Features** - EPG, parental controls, multi-profile support, and more\n- 🎨 **Modern UI** - Clean, responsive interface with dark/light themes\n- 🔒 **Privacy First** - All data stored locally, credentials never leave your device\n- 🌍 **Cross-Platform** - One app for Linux, Windows, and macOS\n\n---\n\n## ✨ Features\n\n### 🎬 Complete Content Library\n- **Live TV** - Stream live channels with real-time Electronic Program Guide (EPG)\n- **Movies (VOD)** - Browse and watch thousands of on-demand movies\n- **TV Series** - Automatic episode playlists with season/episode organization\n- **Smart Search** - Instant filtering across all content types\n- **Virtual Scrolling** - Smooth performance with massive playlists (tested with 100K+ channels)\n\n### 🔒 Family-Friendly Parental Controls\n\u003e **New in v2.3.0**\n\nProtect your family with comprehensive content restrictions:\n- **Secure PIN Protection** - 4-6 digit PIN with industry-standard Argon2 encryption\n- **Manual Channel Blocking** - Select specific channels to restrict (with virtualized selection for smooth performance)\n- **Auto-Detection** - Automatically identifies and blocks adult content (+18, XXX, Adult markers)\n- **Category Blocking** - Block entire channel groups at once\n- **Three Viewing Modes**:\n  - **Hide** - Completely remove blocked channels from view\n  - **Lock Icon** - Show with lock indicator, unlock with PIN\n  - **Blur** - Show blurred thumbnail, unlock to watch\n- **Session-Based** - Temporary unlock during session, auto-locks on restart\n\n### 📋 Flexible Playlist Management\n- **M3U/M3U8 Support** - Import from local files or URLs\n- **Xtream Codes Integration** - Direct connection to your IPTV provider\n- **Multi-Profile System** - Switch between multiple providers/playlists\n- **Favorites** - Star channels for quick access\n- **Category Quick-Access** - Horizontal bar for instant category filtering\n\n### 🌐 Language \u0026 Accessibility\n- **19 Language Support** - Audio and subtitle preferences for:\n  - Scandinavian: Swedish, Norwegian, Danish, Finnish\n  - European: English, German, French, Spanish, Italian, Portuguese, Dutch, Polish, Russian\n  - International: Arabic, Turkish, Japanese, Chinese, Korean\n- **Per-Profile Settings** - Different language preferences for each profile\n\n### 🚀 Performance \u0026 Reliability\n- **MPV Integration** - Industry-standard player with all codecs supported\n- **Hardware Acceleration** - Automatic GPU usage for smooth playback\n- **SQLite Database** - Lightning-fast local storage\n- **Batch Processing** - Efficiently handles large playlist imports\n- **Error Boundaries** - Graceful degradation, no full-app crashes\n\n---\n\n## 📥 Installation\n\n### System Requirements\n\n#### MPV Media Player\n\nBetter IPTV uses MPV for video playback. Installation varies by platform:\n\n**Linux:**\n```bash\n# Ubuntu/Debian\nsudo apt install mpv\n\n# Arch Linux\nsudo pacman -S mpv\n\n# Fedora\nsudo dnf install mpv\n```\n\n**macOS:**\n```bash\nbrew install mpv\n```\n\n**Windows:**\n\u003e **🎉 New in v2.3.0:** Windows users no longer need to install MPV separately! It's now bundled with the installer.\n\nIf you prefer a manual installation or already have MPV:\n- Download from [mpv.io](https://mpv.io/installation/)\n- Or use Chocolatey: `choco install mpv`\n\n### Download Better IPTV\n\n**Pre-built Packages:**\n1. Visit [Releases](https://github.com/mewset/better-iptv/releases/latest)\n2. Download for your platform:\n   - **Linux**: `.AppImage` (universal), `.deb` (Ubuntu/Debian), `.rpm` (Fedora/RHEL)\n   - **Windows**: `.msi` installer or `.exe` portable\n   - **macOS**: `.dmg` disk image\n\n**Linux AppImage:**\n```bash\nchmod +x Better-IPTV.AppImage\n./Better-IPTV.AppImage\n```\n\n**Build from Source:**\n```bash\ngit clone https://github.com/mewset/better-iptv.git\ncd better-iptv\nnpm install\nnpm run tauri build\n# Output: src-tauri/target/release/bundle/\n```\n\n---\n\n## 🚀 Quick Start\n\n### 1️⃣ Launch \u0026 Setup\n\nOn first launch, you'll see the setup screen. Choose your import method:\n\n### 2️⃣ Import Playlist\n\n**Option A: M3U/M3U8 File**\n1. Click **\"Import M3U Playlist\"**\n2. Enter a profile name (e.g., \"My IPTV\")\n3. Choose source:\n   - **Local File**: Browse to your `.m3u`/`.m3u8` file\n   - **URL**: Paste your playlist URL\n4. Click **\"Import\"** and wait for channels to load\n\n**Option B: Xtream Codes**\n1. Click **\"Import Xtream Playlist\"**\n2. Enter a profile name\n3. Fill in credentials:\n   - **Server URL**: `http://server.com:port`\n   - **Username**: Your username\n   - **Password**: Your password\n4. Click **\"Import\"** (loads Live TV, Movies, and Series)\n\n### 3️⃣ Configure EPG (Optional)\n\n1. Open **Settings** (gear icon)\n2. Navigate to **EPG Settings**\n3. Enter your XMLTV EPG URL\n4. Click **\"Fetch EPG\"**\n5. EPG updates automatically going forward\n\n### 4️⃣ Start Watching!\n\n- **Browse**: Use tabs (All/Live TV/Movies/Series) and category bar\n- **Search**: Type in search box for instant filtering\n- **Play**: Click play button on any channel\n- **Enjoy**: MPV opens in separate window with full playback controls\n\n---\n\n## 💡 Usage Tips\n\n### Content Navigation\n- **Tabs**: Filter by All, Live TV, Movies, or Series\n- **Category Bar**: Horizontal scroll for quick category access\n- **Search**: Real-time filtering by channel/group name\n- **Favorites**: Click star icon to mark favorites\n\n### Watching Series\n1. Go to **Series** tab\n2. Select a series to open details\n3. Choose season from dropdown\n4. Click **Play** on any episode → remaining episodes auto-queue\n\n### Multiple Profiles\n- Import multiple playlists as separate profiles\n- Switch profiles from setup screen\n- Each profile maintains independent channels, favorites, and settings\n\n### Parental Controls\n1. Open **Settings** → **Parental Controls**\n2. Set a PIN (4-6 digits)\n3. Choose blocking method:\n   - Manual selection\n   - Auto-detect adult content\n   - Category blocking\n4. Select viewing mode (Hide/Lock/Blur)\n5. Save settings\n\n---\n\n## 🎮 Keyboard Shortcuts\n\n*Within MPV player window:*\n\n| Key | Action |\n|-----|--------|\n| `Space` | Play/Pause |\n| `F` | Toggle Fullscreen |\n| `↑` / `↓` | Volume Up/Down |\n| `←` / `→` | Seek Backward/Forward (10s) |\n| `M` | Mute/Unmute |\n| `Q` | Quit Player |\n| `Esc` | Exit Fullscreen |\n\n---\n\n## ❓ FAQ\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eWhy won't MPV open?\u003c/strong\u003e\u003c/summary\u003e\n\nMPV must be installed on your system (except Windows v2.3.0+ which includes it bundled).\n\nVerify installation:\n```bash\nmpv --version\n```\n\nSee [Installation](#-installation) for platform-specific instructions.\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eCan I watch channels directly in the app?\u003c/strong\u003e\u003c/summary\u003e\n\nNo, Better IPTV uses MPV as an external player. This provides superior codec support and performance, but video displays in a separate window.\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eEPG data not showing?\u003c/strong\u003e\u003c/summary\u003e\n\nCheck:\n1. Playlist contains EPG identifiers (`tvg-id` or `tvg-name`)\n2. EPG URL configured in Settings → EPG Settings\n3. EPG data fetched (click \"Fetch EPG\" button)\n4. Wait a minute for EPG refresh cycle\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eHow many channels can it handle?\u003c/strong\u003e\u003c/summary\u003e\n\nBetter IPTV uses virtual scrolling and batch processing to handle 50,000+ channels without performance degradation. Better-IPTV has been using a 150.000+ channel playlist during development without any problems.\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eDoes it work with VPN?\u003c/strong\u003e\u003c/summary\u003e\n\nYes! Ensure your VPN is active before launching streams.\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eAre my Xtream credentials secure?\u003c/strong\u003e\u003c/summary\u003e\n\nAbsolutely. All credentials are stored locally in an SQLite database on your device. Nothing is sent to external servers. Logs automatically mask sensitive data.\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eCan I play local video files?\u003c/strong\u003e\u003c/summary\u003e\n\nNo, Better IPTV is designed exclusively for IPTV streams. Use MPV directly for local media.\n\u003c/details\u003e\n\n---\n\n## 🛠️ Troubleshooting\n\n### Channels Buffering\n- **Check internet connection** - Run speed test\n- **Try another channel** - May be provider/server issue\n- **Adjust MPV cache** - Advanced users: edit MPV config\n\n### Series Not Importing (Xtream)\n- **Verify credentials** - Double-check username/password\n- **Check provider support** - Not all Xtream providers offer series\n- **Retry import** - Network issues may cause partial imports\n\n### App Won't Start\n- **Linux**: Ensure `.AppImage` has execute permissions (`chmod +x`)\n- **Windows**: Run as administrator or check Windows Defender\n- **macOS**: Allow app in **System Preferences → Security \u0026 Privacy**\n\n### Parental Controls Issues\n- **Auto-detect not working?** - Re-save settings to trigger channel scan\n- **Lock mode not showing channels?** - Update to v2.3.0+ (bug fixed)\n- **PIN modal stuck?** - Restart app, issue resolved in v2.3.0\n\n### Logs Location\nIf you need to share logs for debugging:\n\n**Linux**: `~/.local/share/better-ip-tv/logs/better-ip-tv.log`\n**Windows**: `%APPDATA%\\com.m0s.better-ip-tv\\logs\\better-ip-tv.log`\n**macOS**: `~/Library/Application Support/com.m0s.better-ip-tv/logs/better-ip-tv.log`\n\n*(Credentials are automatically masked in logs)*\n\n---\n\n## 🤝 Contributing\n\nWe welcome contributions! Better IPTV is open source and community-driven.\n\n### Report Bugs\n[Create an issue](https://github.com/mewset/better-iptv/issues/new) with:\n- Detailed description\n- Steps to reproduce\n- OS and app version\n- Screenshots if applicable\n- Log file (see [Troubleshooting](#-troubleshooting))\n\n### Suggest Features\n[Open a feature request](https://github.com/mewset/better-iptv/issues/new) describing:\n- What you want\n- Why it's useful\n- How it should work\n\n### Submit Code\n\n**Development Setup:**\n```bash\n# Fork \u0026 clone\ngit clone https://github.com/YOUR-USERNAME/better-iptv.git\ncd better-iptv\n\n# Install dependencies\nnpm install\n\n# Run dev server\nnpm run tauri dev\n\n# Run tests\nnpm run test          # Frontend tests\ncd src-tauri \u0026\u0026 cargo test  # Rust tests\n```\n\n**Code Standards:**\n- **TypeScript**: Follow ESLint config (`npm run lint`)\n- **Rust**: Use `rustfmt` and `clippy`\n  ```bash\n  cargo fmt\n  cargo clippy\n  ```\n- **Commits**: Use [Conventional Commits](https://www.conventionalcommits.org/)\n  ```\n  feat: add category quick-access bar\n  fix: resolve EPG timezone bug\n  docs: update README installation steps\n  ```\n\n**Pull Request Process:**\n1. Create feature branch: `git checkout -b feature/my-feature`\n2. Make changes with tests\n3. Run linters: `npm run lint \u0026\u0026 cargo clippy`\n4. Commit: `git commit -m \"feat: description\"`\n5. Push: `git push origin feature/my-feature`\n6. Open PR on GitHub with detailed description\n\n### Community Guidelines\n- Be respectful and inclusive\n- Provide constructive feedback\n- Help other users in issues/discussions\n- Document your changes clearly\n\n---\n\n## 📝 What's New\n\n### Version 2.3.0 (Current)\n\n**🔒 Parental Controls**\n- PIN-protected content restrictions with Argon2 encryption\n- Manual channel blocking with virtualized selection\n- Auto-detection of adult content markers\n- Category-level blocking\n- Three viewing modes: Hide, Lock, Blur\n- Session-based temporary unlock\n\n**🎉 Windows MPV Bundled**\n- Windows users no longer need separate MPV installation\n- Everything included in installer\n- Still compatible with existing MPV installations\n\n**🐛 Bug Fixes**\n- Auto-detect parental controls now properly adds channels to blocked list\n- Lock and Blur modes now correctly show channels (previously would hide them)\n- PIN modal no longer gets stuck on \"Processing...\" after multiple unlocks\n\n[See full changelog](CHANGELOG_USER.md)\n\n---\n\n## 📄 License\n\n**GNU General Public License v2.0**\n\nBetter IPTV is free software. You can use, modify, and distribute it under GPL v2.0 terms.\n\n**Why GPL v2.0?**\nMPV is licensed under GPL v2+, requiring derivative works to also be GPL-licensed. We embrace this to promote open source values.\n\nSee [LICENSE](LICENSE) for full text.\n\n---\n\n## 🙏 Acknowledgments\n\n- **[MPV Project](https://mpv.io/)** - Exceptional media player with comprehensive codec support\n- **[Tauri](https://tauri.app/)** - Cross-platform framework enabling this project\n- **[Open TV](https://github.com/Fredolx/open-tv)** - Architectural inspiration and reference\n- **IPTV Community** - Standards, protocols, and ongoing support\n\n---\n\n## 📞 Support \u0026 Contact\n\n- **Issues**: [Report bugs or request features](https://github.com/mewset/better-iptv/issues)\n- **Discussions**: [Community discussions](https://github.com/mewset/better-iptv/discussions)\n\n---\n\n\u003cdiv align=\"center\"\u003e\n\n  **Made with ❤️ for IPTV enthusiasts**\n\n  *Better IPTV is not affiliated with any IPTV provider.\n  Users are responsible for compliance with local laws and provider terms.*\n\n\u003c/div\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmewset%2Fbetter-iptv","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmewset%2Fbetter-iptv","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmewset%2Fbetter-iptv/lists"}