Repository navigation
Releases: nekonaru/lumenfetch
Release list
v2.1.2 - YouTube SABR and download robustness fixes
English
v2.1.2 - YouTube SABR and download robustness fixes
This release fixes repeated download failures (0 bytes then an error) that happened even for public videos.
✨ New features
- Doctor now also checks for a JavaScript runtime (Deno/Node), required for YouTube signature challenges.
⚡ Optimizations
- Removed the forced
player_clientoverride: it triggered YouTube's SABR-only experiment (5 formats served instead of ~46). yt-dlp's maintained defaults are used now. - Transient format errors are retried with backoff, like connection errors.
- Post-processing crashes (e.g. thumbnail embed) no longer fail an otherwise good download - the video is kept with a warning.
- Parallel batch downloads of duplicate titles get unique filenames instead of corrupting each other.
🐛 Bug fixes
- Fixed 0-byte results being reported (or littering the folder): empty results now fail loudly with cleanup.
- Fixed batch files with a BOM prefix being silently skipped, and silent per-URL batch failures.
📦 Install / Update
pip install --upgrade lumenfetchOr download lumenfetch.exe below - no Python needed.
Bahasa Indonesia
v2.1.2 - Fix SABR YouTube dan ketahanan download
Rilis ini memperbaiki kegagalan download berulang (0 bytes lalu error) yang terjadi bahkan untuk video publik.
✨ Fitur baru
- Doctor sekarang juga mengecek JavaScript runtime (Deno/Node), yang dibutuhkan untuk signature challenge YouTube.
⚡ Pengoptimalan
- Override
player_clientyang dipaksakan dihapus: itu memicu eksperimen SABR-only YouTube (cuma 5 format, bukan ~46). Sekarang pakai default yt-dlp yang dirawat maintainer. - Error format transien ikut di-retry dengan backoff, seperti error koneksi.
- Crash post-processing (mis. embed thumbnail) tidak lagi menggagalkan video yang sebenarnya utuh - videonya disimpan dengan warning.
- Download paralel judul duplikat dapat nama file unik, tidak saling merusak.
🐛 Perbaikan bug
- Perbaiki hasil 0-byte yang dilaporkan (atau nyampah di folder): hasil kosong sekarang gagal dengan jujur + bersih-bersih.
- Perbaiki file batch ber-prefix BOM yang dilewati diam-diam, dan kegagalan per-URL batch yang bungkam.
📦 Install / Update
pip install --upgrade lumenfetchAtau download lumenfetch.exe di bawah - tanpa perlu Python.
v2.1.1 - English-first UI and PyPI refresh
English
v2.1.1 - English-first UI and PyPI refresh
✨ New features
lumenfetch doctor: diagnoses your setup in seconds, each check with a specific fix hint.- Self-update notice for lumenfetch itself on PyPI.
--ui-lang en|id,LUMENFETCH_LANG, and rememberedui_langsetting.
⚠️ Changes to be aware of
- The default display language is now English. Run
lumenfetch --ui-lang idonce to get Indonesian back; it is remembered afterwards.
📦 Install / Update
pip install --upgrade lumenfetchOr download lumenfetch.exe below - no Python needed.
Bahasa Indonesia
v2.1.1 - UI English-first dan refresh PyPI
✨ Fitur baru
lumenfetch doctor: mendiagnosa setup dalam hitungan detik, tiap cek dengan saran fix spesifik.- Notice self-update untuk lumenfetch sendiri di PyPI.
--ui-lang en|id,LUMENFETCH_LANG, dan settingui_langyang diingat.
⚠️ Perubahan yang perlu diperhatikan
- Bahasa tampilan default sekarang English. Jalankan
lumenfetch --ui-lang idsekali untuk kembali ke Indonesia; pilihannya diingat.
📦 Install / Update
pip install --upgrade lumenfetchAtau download lumenfetch.exe di bawah - tanpa perlu Python.
v2.1.0 - Doctor, self-update, SponsorBlock
English
v2.1.0 - Doctor, self-update, and SponsorBlock
✨ New features
lumenfetch doctor: diagnoses your setup in seconds - Python, ffmpeg,curl_cffi, yt-dlp version, lumenfetch version, YouTube reachability, browser-cookie readability, and config writability, each with a specific fix hint.- Self-update notice: tells you when a newer lumenfetch is on PyPI (
pip install --upgrade lumenfetch), next to the existing yt-dlp notice. --sponsorblock: skip SponsorBlock segments, e.g.--sponsorblock sponsor intro outro.--write-info-json: save video metadata as.info.jsonnext to the file.- Auto
.m3u: audio playlists (--playlist all) now also write an.m3ufile.
⚡ Optimizations
- Parallel-safe downloads: two batch workers for the same title no longer overwrite each other's file (atomic name reservation, verified live 2/2).
- Loud batch failures: batch mode now prints which URL failed and why instead of failing silently (also handles BOM-prefixed files from PowerShell).
- Quiet terminal: raw yt-dlp
ERROR:noise is redirected tolumenfetch.log; the terminal only shows friendly messages.
🐛 Bug fixes
- Fixed batch URLs with a BOM prefix being silently skipped.
- Fixed batch mode swallowing per-URL errors (now printed with the failing URL).
- Fixed a race where parallel downloads of duplicate titles corrupted each other's output.
🧱 Internal improvements
- New
core/cli.py(argument parsing) andcore/doctor.py(diagnostics) modules;main.pyslimmed down. - Coverage gate (80%) and trusted-publishing workflow (
publish.yml) in CI. - Windows
lumenfetch.exeattached below - no Python needed.
🧪 Testing
Total is now 216 tests, all passing. SponsorBlock, info-json, .m3u, reservation race, and doctor are covered by new tests.
📦 Install / Update
pip install --upgrade lumenfetchNo new required dependencies.
🚀 Usage examples
Diagnose your setup:
lumenfetch --doctorSkip sponsors and save metadata:
lumenfetch "https://youtube.com/watch?v=..." -t video --sponsorblock sponsor intro --write-info-json -yBahasa Indonesia
v2.1.0 - Doctor, self-update, dan SponsorBlock
✨ Fitur baru
lumenfetch doctor: mendiagnosa setup dalam hitungan detik - Python, ffmpeg,curl_cffi, versi yt-dlp, versi lumenfetch, keterjangkauan YouTube, keterbacaan cookies browser, dan keterulisan config, masing-masing dengan saran fix spesifik.- Notice self-update: memberi tahu kalau ada lumenfetch lebih baru di PyPI (
pip install --upgrade lumenfetch), di samping notice yt-dlp yang sudah ada. --sponsorblock: lewati segmen SponsorBlock, mis.--sponsorblock sponsor intro outro.--write-info-json: simpan metadata video sebagai.info.jsondi sebelah file..m3uotomatis: playlist audio (--playlist all) sekarang juga nulis file.m3u.
⚡ Pengoptimalan
- Download paralel yang aman: dua worker batch untuk judul yang sama tidak lagi saling menimpa file (reservasi nama atomik, terverifikasi live 2/2).
- Batch gagal yang bersuara: mode batch sekarang menampilkan URL mana yang gagal dan kenapa, bukan gagal diam-diam (termasuk file ber-prefix BOM dari PowerShell).
- Terminal yang tenang: noise mentah
ERROR:dari yt-dlp dialihkan kelumenfetch.log; terminal cuma menampilkan pesan ramah.
🐛 Perbaikan bug
- Perbaiki URL batch ber-prefix BOM yang diam-diam dilewati.
- Perbaiki mode batch yang menelan error per-URL (sekarang ditampilkan bersama URL yang gagal).
- Perbaiki race di mana download paralel judul duplikat merusak output satu sama lain.
🧱 Peningkatan internal
- Modul baru
core/cli.py(parsing argumen) dancore/doctor.py(diagnostik);main.pydirampingkan. - Coverage gate (80%) dan workflow trusted-publishing (
publish.yml) di CI. lumenfetch.exeWindows terlampir di bawah - tanpa perlu Python.
🧪 Testing
Total sekarang 216 test, semua lolos. SponsorBlock, info-json, .m3u, race reservasi, dan doctor dicover test baru.
📦 Install / Update
pip install --upgrade lumenfetchTidak ada dependency wajib baru.
🚀 Contoh pakai
Diagnosa setup:
lumenfetch --doctorLewati sponsor dan simpan metadata:
lumenfetch "https://youtube.com/watch?v=..." -t video --sponsorblock sponsor intro --write-info-json -yv2.0.0 - Fokus YouTube MP4/MP3
English
v2.0.0 - YouTube-only MP4/MP3 pivot
Lumenfetch is now a focused YouTube downloader: MP4 video and MP3 audio, nothing else. The multi-platform code paths (Instagram/TikTok/Facebook galleries, image formats) and their heavy dependencies (instaloader, browser-cookie3) are removed.
✨ New features
- MP4 video: quality Best/1080p/720p/480p/360p/Worst with auto-embedded thumbnail.
- MP3 audio: bitrate Best/320kbps/192kbps/128kbps.
- English and Indonesian CLI (
--ui-lang en|id): menus, prompts, tables, error messages, and--helpare fully translatable. English is the new default, remembered afterwards. Also viaLUMENFETCH_LANGor theui_langconfig value. - Bilingual documentation:
README.mdandCONTRIBUTING.mdare in English, with Indonesian versions inREADME.id.mdandCONTRIBUTING.id.md.
⚠️ Changes to be aware of
- Only YouTube links are accepted (
youtube.com,youtu.be,music.youtube.com). Other platforms are rejected with a clear message instead of a misleading error. - Removed dependencies:
instaloaderandbrowser-cookie3are gone - install is lighter. Browser/file cookies for YouTube still work. - Output filenames follow
%(platform)s_%(title)s_%(year)s, e.g.YouTube_Lofi-Hip-Hop-Radio_2026.mp4.
🧱 Internal improvements
- New
i18n.pymodule: a pure dictionary of display text (en/id); all user-facing text goes throught("key"). - New
errors.pytaxonomy: every yt-dlp failure maps to a specific kind (bot-check, cookies, rate-limit, removed...) with an actionable message, including automatic retry without cookies when the cookie database is locked. curl_cffiis now a required dependency so YouTube bot-checks pass.- User config moved to the OS config dir (
%APPDATA%/~/.config), with one-time migration from the old location.
🧪 Testing
200 tests, all passing on Python 3.9 to 3.12 (CI runs pytest + ruff + an 80% coverage gate).
📦 Install
pip install lumenfetchThen:
lumenfetch "https://youtube.com/watch?v=..." -t video -q 720p -yBahasa Indonesia
v2.0.0 - Pivot ke YouTube-only MP4/MP3
Lumenfetch sekarang downloader YouTube yang fokus: video MP4 dan audio MP3, tidak yang lain. Jalur kode multi-platform (galeri Instagram/TikTok/Facebook, format gambar) beserta dependency beratnya (instaloader, browser-cookie3) dihapus.
✨ Fitur baru
- Video MP4: quality Best/1080p/720p/480p/360p/Worst dengan thumbnail ter-embed otomatis.
- Audio MP3: bitrate Best/320kbps/192kbps/128kbps.
- CLI English dan Indonesia (
--ui-lang en|id): menu, prompt, tabel, pesan error, dan--helpsepenuhnya bisa diterjemahkan. English menjadi default baru, diingat setelahnya. Juga viaLUMENFETCH_LANGatau nilaiui_langdi config. - Dokumentasi dua bahasa:
README.mddanCONTRIBUTING.mdberbahasa Inggris, dengan versi Indonesia diREADME.id.mddanCONTRIBUTING.id.md.
⚠️ Perubahan yang perlu diperhatikan
- Cuma link YouTube yang diterima (
youtube.com,youtu.be,music.youtube.com). Platform lain ditolak dengan pesan yang jelas, bukan error menyesatkan. - Dependency yang dihapus:
instaloaderdanbrowser-cookie3hilang - install jadi lebih ringan. Cookies browser/file untuk YouTube tetap jalan. - Nama file output mengikuti
%(platform)s_%(title)s_%(year)s, mis.YouTube_Lofi-Hip-Hop-Radio_2026.mp4.
🧱 Peningkatan internal
- Modul baru
i18n.py: kamus teks tampilan (en/id); semua teks user lewatt("key"). - Taxonomy baru
errors.py: setiap kegagalan yt-dlp dipetakan ke kind spesifik (bot-check, cookies, rate-limit, removed...) dengan pesan yang actionable, termasuk retry otomatis tanpa cookies kalau database cookies terkunci. curl_cffisekarang dependency wajib biar lolos bot-check YouTube.- Config user pindah ke folder config OS (
%APPDATA%/~/.config), dengan migrasi sekali dari lokasi lama.
🧪 Testing
200 test, semua lolos di Python 3.9 sampai 3.12 (CI menjalankan pytest + ruff + coverage gate 80%).
📦 Install
pip install lumenfetchLalu:
lumenfetch "https://youtube.com/watch?v=..." -t video -q 720p -y