{"id":47677773,"url":"https://github.com/skurbee/ytarchiver","last_synced_at":"2026-06-06T21:00:39.407Z","repository":{"id":342878762,"uuid":"1175453365","full_name":"skurbee/YTArchiver","owner":"skurbee","description":"Download + Compress + Transcribe + Organize + Browse","archived":false,"fork":false,"pushed_at":"2026-06-03T21:29:36.000Z","size":106023,"stargazers_count":12,"open_issues_count":0,"forks_count":2,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-03T23:06:43.529Z","etag":null,"topics":["4kdownloader","batch-processing","cuda","faster-whisper","ffmpeg","matplotlib","transcription","vlc-media-player","whisper","whisper-ai","youtube","yt-dlp","yt-dlp-gui","yt-dlp-wrapper"],"latest_commit_sha":null,"homepage":"","language":"Python","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/skurbee.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"docs/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":"2026-03-07T18:24:41.000Z","updated_at":"2026-06-03T21:29:27.000Z","dependencies_parsed_at":null,"dependency_job_id":"10853cec-4b3c-43aa-b942-1139e1791c35","html_url":"https://github.com/skurbee/YTArchiver","commit_stats":null,"previous_names":["skurbee/ytarchivertool","skurbee/ytarchiver"],"tags_count":43,"template":false,"template_full_name":null,"purl":"pkg:github/skurbee/YTArchiver","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/skurbee%2FYTArchiver","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/skurbee%2FYTArchiver/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/skurbee%2FYTArchiver/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/skurbee%2FYTArchiver/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/skurbee","download_url":"https://codeload.github.com/skurbee/YTArchiver/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/skurbee%2FYTArchiver/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33999579,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-06T02:00:07.033Z","response_time":107,"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":["4kdownloader","batch-processing","cuda","faster-whisper","ffmpeg","matplotlib","transcription","vlc-media-player","whisper","whisper-ai","youtube","yt-dlp","yt-dlp-gui","yt-dlp-wrapper"],"created_at":"2026-04-02T13:37:59.533Z","updated_at":"2026-06-06T21:00:39.401Z","avatar_url":"https://github.com/skurbee.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# YTArchiver\n\nDownload, organize, transcribe, search, compress, and browse entire channels.\n\nA tour of the UI is on the [**wiki**](https://github.com/skurbee/YTArchiver/wiki).\n\n\n\n## Features\n\n### Downloading \u0026 Syncing\n\n* **Channel subscriptions** — add channels to a sub list with per-channel settings\n* **Selective archiving** — set a start date, grab the full history, or only pull new uploads\n* **Auto-sync** — set a recurring interval (1hr, 3hr, 6hr, etc.) to automatically check all subbed channels for new videos\n* **Duration filters** — exclude Shorts, livestreams, or long-form videos by setting min/max duration limits\n* **Resolution control** — per-channel resolution settings (144p–1080p, or \"best\")\n* **Redownload** — change a channel's resolution and retroactively redownload all videos at the new setting\n* **Resumable downloads** — ID caching, so interrupted syncs pick back up without re-scanning\n* **Cookie support** — uses Firefox cookies for age-restricted or member content, and helps avoid IP rate-limiting\n\n\n\n### Organization\n\n* **Folder sorting** — sort videos into `\\YYYY\\` or `\\YYYY\\MM\\` folders, configurable per channel\n* **Reorganize tool** — re-sort existing downloads into a new org structure at any time\n* **Date Fix** — retroactively set file dates to the original YouTube upload date (fuzzy title matching, useful for migrating from other tools)\n\n\n\n### Transcription\n\n* **Auto-captions first** — pulls YouTube's built-in captions when available, with punctuation model cleanup\n* **Whisper GPU fallback** — runs Whisper locally on GPU for videos without captions; model selectable per channel\n* **Auto-transcribe** — per-channel toggle to automatically transcribe new videos after each sync\n* **Transcript output** — clean `.txt` files with an option to follow the channel's folder org or combine into a single file per channel\n* **Hidden JSONL sidecars** — per-word timestamps and video IDs stored alongside readable transcripts\n\n\n\n### Browse Tab\n\n* **Searchable transcript database** — full-text search across all transcribed channels\n* **Embedded video player** — HTML5 video with a synced, scrolling transcript alongside\n* **Click-to-seek** — click any word in the transcript to jump the video to that moment\n* **Word frequency analysis** — frequency graphs (Year / Month / Week buckets) and word cloud visualizations\n* **Recent downloads** — list or thumbnail-grid view of recently-archived videos, filterable\n\n\n\n### Compression\n\n* **AV1 NVENC encoding** — compress archived videos using AV1 hardware encoding (NVIDIA GPU)\n* **Quality presets** — Generous, Average, and Below Average quality tiers with target bitrate-per-hour calculations\n* **HQ downscale** — download at a higher resolution, then downscale for better quality at lower resolutions\n\n\n\n### UI \u0026 Workflow\n\n* **Four-tab layout** — Download, Subs, Browse, Settings\n* **Settings categories** — General / Performance / Appearance / Tools / Index sub-tabs\n* **Simple / Verbose log modes** — toggle between a readable sync view and full yt-dlp output\n* **Pause / resume** — pause active downloads or transcriptions mid-session and resume without losing progress\n* **Processing task queue** — transcription and compression jobs run in their own reorderable queue, separate from downloads\n* **System tray** — sits in the tray with separate indicators for downloads and Processing tasks; auto-sync controllable from the tray menu\n* **Internet monitoring** — automatically pauses on connection loss, resumes when connectivity is restored\n* **Drive monitoring** — automatically pauses on drive failure, resumes when drive is restored\n* **Auto-update** — checks for new releases on GitHub at startup\n\n\n\n## Tech Stack\n\nBuilt on **yt-dlp** + **ffmpeg** for downloading, **OpenAI Whisper** (faster-whisper) for GPU transcription, **SQLite FTS5** for the transcript index, **Chart.js** for graphing, and a **pywebview** shell rendering an HTML/CSS/JS frontend.\n\n\n\n## Documentation\n\n* [Architecture](docs/ARCHITECTURE.md) — process model, sync pipeline, design decisions\n* [Building the exe](docs/BUILD.md) — PyInstaller workflow\n* [Contributing](docs/CONTRIBUTING.md) — project layout and how to find your bearings\n* [Changelog](docs/CHANGELOG.md) — release notes\n* [Project map](docs/PROJECT_MAP.md) — file-by-file index\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fskurbee%2Fytarchiver","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fskurbee%2Fytarchiver","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fskurbee%2Fytarchiver/lists"}