{"id":35731518,"url":"https://github.com/kushiemoon-dev/youflac","last_synced_at":"2026-04-10T20:07:55.198Z","repository":{"id":332412096,"uuid":"1128460107","full_name":"kushiemoon-dev/YouFLAC","owner":"kushiemoon-dev","description":"YouTube video + lossless FLAC audio = perfect MKV. Create high-quality music videos by combining YouTube 4K video with FLAC from Tidal, Qobuz \u0026 Amazon Music.","archived":false,"fork":false,"pushed_at":"2026-03-12T11:28:12.000Z","size":1771,"stargazers_count":9,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-03-12T17:41:18.709Z","etag":null,"topics":["flac","jellyfin","lossless-audio","mkv","music-video","plex","qobuz","tidal","wails","youtube","yt-dlp"],"latest_commit_sha":null,"homepage":"https://codeberg.org/KushieMoon-dev/youflac","language":"Go","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/kushiemoon-dev.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":"2026-01-05T17:05:57.000Z","updated_at":"2026-03-12T11:28:12.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/kushiemoon-dev/YouFLAC","commit_stats":null,"previous_names":["kushiemoon-dev/youflac"],"tags_count":10,"template":false,"template_full_name":null,"purl":"pkg:github/kushiemoon-dev/YouFLAC","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kushiemoon-dev%2FYouFLAC","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kushiemoon-dev%2FYouFLAC/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kushiemoon-dev%2FYouFLAC/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kushiemoon-dev%2FYouFLAC/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kushiemoon-dev","download_url":"https://codeload.github.com/kushiemoon-dev/YouFLAC/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kushiemoon-dev%2FYouFLAC/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31359104,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-03T14:24:47.623Z","status":"ssl_error","status_checked_at":"2026-04-03T14:24:32.380Z","response_time":107,"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":["flac","jellyfin","lossless-audio","mkv","music-video","plex","qobuz","tidal","wails","youtube","yt-dlp"],"created_at":"2026-01-06T11:17:17.058Z","updated_at":"2026-04-03T15:04:51.537Z","avatar_url":"https://github.com/kushiemoon-dev.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\n\u003cimg src=\"banner.png\" alt=\"YouFLAC\" width=\"600\"\u003e\n\n### YouTube Video + Lossless FLAC Audio = Perfect MKV\n\n[![GitHub Release](https://img.shields.io/github/v/release/kushiemoon-dev/YouFLAC?style=flat-square\u0026color=e91e8c)](https://github.com/kushiemoon-dev/YouFLAC/releases/latest)\n[![ghcr.io](https://img.shields.io/badge/ghcr.io-youflac-2496ED?style=flat-square\u0026logo=docker\u0026logoColor=white)](https://github.com/kushiemoon-dev/YouFLAC/pkgs/container/youflac)\n[![License](https://img.shields.io/github/license/kushiemoon-dev/YouFLAC?style=flat-square\u0026color=gray)](LICENSE)\n[![Go](https://img.shields.io/badge/Go-1.25-00ADD8?style=flat-square\u0026logo=go\u0026logoColor=white)](https://go.dev)\n\n![Windows](https://img.shields.io/badge/Windows-10+-0078D6?style=flat-square\u0026logo=windows\u0026logoColor=white)\n![macOS](https://img.shields.io/badge/macOS-10.13+-000000?style=flat-square\u0026logo=apple\u0026logoColor=white)\n![Linux](https://img.shields.io/badge/Linux-any-FCC624?style=flat-square\u0026logo=linux\u0026logoColor=black)\n![Docker](https://img.shields.io/badge/Docker-supported-2496ED?style=flat-square\u0026logo=docker\u0026logoColor=white)\n\n\u003c/div\u003e\n\n---\n\n## Overview\n\n**YouFLAC** combines the best of both worlds: it downloads a YouTube video and replaces the audio track with a lossless FLAC sourced from Tidal, Qobuz, or Amazon Music — producing a perfect `.mkv` file with Hi-Res audio and full 4K video.\n\n\u003cdiv align=\"center\"\u003e\n\u003cimg src=\"screenshot.png\" alt=\"YouFLAC Screenshot\" width=\"860\"\u003e\n\u003c/div\u003e\n\n---\n\n## Features\n\n- **4K Video** — Best quality video from YouTube (AV1/VP9, up to 4K)\n- **Lossless Audio** — FLAC sourced from Tidal, Qobuz, or Amazon Music\n- **Smart Matching** — Auto-matches YouTube video to the correct audio track via song.link and ISRC\n- **Quality Fallback** — Automatically falls back to next available source if preferred is unavailable\n- **MKV Output** — Muxes video + FLAC into a single MKV container with proper metadata\n- **Queue System** — Concurrent downloads with pause, resume, and retry support\n- **Playlist Support** — Auto-generates `.m3u8` playlist after batch downloads\n- **Lyrics** — Fetches synced lyrics from LRCLIB (embed in MKV or `.lrc` file)\n- **NFO Files** — Generates metadata files for Jellyfin, Plex, and Kodi\n- **Structured Logging** — Configurable log level and format via environment variables\n- **Proxy Support** — Route all requests through a custom HTTP proxy\n- **Docker + Native** — Run as a web app in Docker or as a native desktop app\n\n---\n\n## Install\n\n### Docker\n\n```bash\ndocker run -d \\\n  --name youflac \\\n  -p 8080:8080 \\\n  -v ./config:/config \\\n  -v ./downloads:/downloads \\\n  ghcr.io/kushiemoon-dev/youflac:latest\n```\n\nOr with `docker-compose`:\n\n```bash\ngit clone https://github.com/kushiemoon-dev/YouFLAC.git\ncd YouFLAC\ndocker compose up -d\n```\n\nAccess the web UI at **http://localhost:8080**\n\n### Native Binaries\n\n**[⬇ Download Latest Release](https://github.com/kushiemoon-dev/YouFLAC/releases/latest)**\n\n| Platform | File |\n|----------|------|\n| Linux x86_64 | `youflac-server-linux-amd64.tar.gz` |\n| Linux ARM64 | `youflac-server-linux-arm64.tar.gz` |\n| macOS Apple Silicon | `youflac-server-darwin-arm64.tar.gz` |\n| Windows x86_64 | `youflac-server-windows-amd64.zip` |\n\n```bash\n# Linux / macOS\ntar -xzf youflac-server-linux-amd64.tar.gz\ncd youflac-server-linux-amd64\n./youflac-server\n```\n\n```powershell\n# Windows — extract the zip, then:\n.\\youflac-server.exe\n```\n\n\u003e **Note:** Native binaries require **FFmpeg** and **yt-dlp** in PATH. The Docker image bundles both.\n\n---\n\n## Requirements (Native only)\n\n| Tool | Install |\n|------|---------|\n| **FFmpeg** | `sudo pacman -S ffmpeg` / `brew install ffmpeg` / `choco install ffmpeg` |\n| **yt-dlp** | `sudo pacman -S yt-dlp` / `brew install yt-dlp` / `pip install yt-dlp` |\n\n---\n\n## Configuration\n\nAll settings can be configured via environment variables or through the web UI.\n\n| Variable | Default | Description |\n|----------|---------|-------------|\n| `PORT` | `8080` | HTTP server port |\n| `OUTPUT_DIR` | `/downloads` | Download output directory |\n| `CONFIG_DIR` | `/config` | Config file directory |\n| `VIDEO_QUALITY` | `best` | `best`, `1080p`, `720p`, `480p` |\n| `CONCURRENT_DOWNLOADS` | `2` | Parallel downloads (1–5) |\n| `NAMING_TEMPLATE` | `jellyfin` | `jellyfin`, `plex`, `flat`, `album`, `year` |\n| `GENERATE_NFO` | `true` | Generate NFO metadata files |\n| `EMBED_COVER_ART` | `true` | Embed cover art in MKV |\n| `LYRICS_ENABLED` | `false` | Fetch lyrics automatically |\n| `LYRICS_EMBED_MODE` | `lrc` | `lrc`, `embed`, `both` |\n| `LOG_LEVEL` | `info` | `debug`, `info`, `warn`, `error` |\n| `LOG_FORMAT` | `text` | `text`, `json` |\n| `PROXY_URL` | _(none)_ | HTTP proxy for all outbound requests |\n| `DOWNLOAD_TIMEOUT_MINUTES` | `10` | Per-download timeout |\n\nConfig file location:\n- **Docker**: `/config/config.json`\n- **Linux**: `~/.config/youflac/config.json`\n- **macOS**: `~/Library/Application Support/youflac/config.json`\n- **Windows**: `%APPDATA%\\youflac\\config.json`\n\n---\n\n## How It Works\n\n```\nYouTube URL\n     │\n     ├──────────────────────┐\n     ▼                      ▼\n yt-dlp                song.link API\n 4K Video DL           Cross-platform resolve\n                            │\n                     ┌──────┴───────┐\n                     ▼              ▼\n                   Tidal          Qobuz\n                   FLAC           FLAC\n                     └──────┬───────┘\n                            ▼\n                     Amazon Music\n                       FLAC fallback\n                            │\n     ┌──────────────────────┘\n     ▼\n FFmpeg Mux\n Video + FLAC → MKV\n     │\n     ▼\n NFO + Cover Art + Lyrics\n```\n\n---\n\n## API Endpoints\n\n| Method | Endpoint | Description |\n|--------|----------|-------------|\n| `GET` | `/api/health` | Health check |\n| `GET` | `/api/queue` | List queue items |\n| `POST` | `/api/queue` | Add item to queue |\n| `POST` | `/api/queue/:id/pause` | Pause an item |\n| `POST` | `/api/queue/:id/resume` | Resume an item |\n| `POST` | `/api/queue/retry-failed` | Retry all failed items |\n| `GET` | `/api/queue/failed/export` | Export failed items as `.txt` |\n| `GET` | `/api/services/status` | Audio service health check |\n| `GET` | `/api/version` | Current version |\n\n---\n\n## Build from Source\n\n```bash\ngit clone https://github.com/kushiemoon-dev/YouFLAC.git\ncd YouFLAC\n\n# Build frontend\ncd frontend \u0026\u0026 npm ci \u0026\u0026 npm run build \u0026\u0026 cd ..\n\n# Build server binary\ngo build -o youflac-server ./cmd/server\n\n# Run\n./youflac-server\n```\n\n---\n\n## Credits\n\n- [yt-dlp](https://github.com/yt-dlp/yt-dlp) — Video downloading\n- [FFmpeg](https://ffmpeg.org) — Media muxing\n- [Fiber](https://gofiber.io) — HTTP framework\n- [song.link](https://song.link) — Cross-platform music linking\n- [LRCLIB](https://lrclib.net) — Synced lyrics database\n- Inspired by [SpotiFLAC](https://github.com/afkarxyz/SpotiFLAC)\n\n---\n\n## Disclaimer\n\nYouFLAC is intended for **educational and private use only**. It is not affiliated with, endorsed by, or connected to YouTube, Tidal, Qobuz, Amazon Music, or any other streaming service. By using this tool, you agree to comply with all applicable laws and the Terms of Service of the platforms involved. The developers assume no liability for any misuse.\n\n---\n\n\u003cdiv align=\"center\"\u003e\n\n**MIT License** · [Releases](https://github.com/kushiemoon-dev/YouFLAC/releases) · [Issues](https://github.com/kushiemoon-dev/YouFLAC/issues)\n\n\u003c/div\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkushiemoon-dev%2Fyouflac","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkushiemoon-dev%2Fyouflac","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkushiemoon-dev%2Fyouflac/lists"}