Skip to content

Releases: nekonaru/lumenfetch

v2.1.2 - YouTube SABR and download robustness fixes

Choose a tag to compare

@nekonaru nekonaru released this 14 Oct 08:59

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_client override: 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 lumenfetch

Or 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_client yang 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 lumenfetch

Atau download lumenfetch.exe di bawah - tanpa perlu Python.

v2.1.1 - English-first UI and PyPI refresh

Choose a tag to compare

@nekonaru nekonaru released this 13 Oct 14:29

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 remembered ui_lang setting.

⚠️ Changes to be aware of

  • The default display language is now English. Run lumenfetch --ui-lang id once to get Indonesian back; it is remembered afterwards.

📦 Install / Update

pip install --upgrade lumenfetch

Or 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 setting ui_lang yang diingat.

⚠️ Perubahan yang perlu diperhatikan

  • Bahasa tampilan default sekarang English. Jalankan lumenfetch --ui-lang id sekali untuk kembali ke Indonesia; pilihannya diingat.

📦 Install / Update

pip install --upgrade lumenfetch

Atau download lumenfetch.exe di bawah - tanpa perlu Python.

v2.1.0 - Doctor, self-update, SponsorBlock

Choose a tag to compare

@nekonaru nekonaru released this 13 Oct 13:20

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.json next to the file.
  • Auto .m3u: audio playlists (--playlist all) now also write an .m3u file.

⚡ 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 to lumenfetch.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) and core/doctor.py (diagnostics) modules; main.py slimmed down.
  • Coverage gate (80%) and trusted-publishing workflow (publish.yml) in CI.
  • Windows lumenfetch.exe attached 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 lumenfetch

No new required dependencies.

🚀 Usage examples

Diagnose your setup:

lumenfetch --doctor

Skip sponsors and save metadata:

lumenfetch "https://youtube.com/watch?v=..." -t video --sponsorblock sponsor intro --write-info-json -y



Bahasa 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.json di sebelah file.
  • .m3u otomatis: 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 ke lumenfetch.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) dan core/doctor.py (diagnostik); main.py dirampingkan.
  • Coverage gate (80%) dan workflow trusted-publishing (publish.yml) di CI.
  • lumenfetch.exe Windows 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 lumenfetch

Tidak ada dependency wajib baru.

🚀 Contoh pakai

Diagnosa setup:

lumenfetch --doctor

Lewati sponsor dan simpan metadata:

lumenfetch "https://youtube.com/watch?v=..." -t video --sponsorblock sponsor intro --write-info-json -y

v2.0.0 - Fokus YouTube MP4/MP3

Choose a tag to compare

@nekonaru nekonaru released this 13 Oct 03:53

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 --help are fully translatable. English is the new default, remembered afterwards. Also via LUMENFETCH_LANG or the ui_lang config value.
  • Bilingual documentation: README.md and CONTRIBUTING.md are in English, with Indonesian versions in README.id.md and CONTRIBUTING.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: instaloader and browser-cookie3 are 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.py module: a pure dictionary of display text (en/id); all user-facing text goes through t("key").
  • New errors.py taxonomy: 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_cffi is 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 lumenfetch

Then:

lumenfetch "https://youtube.com/watch?v=..." -t video -q 720p -y



Bahasa 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 --help sepenuhnya bisa diterjemahkan. English menjadi default baru, diingat setelahnya. Juga via LUMENFETCH_LANG atau nilai ui_lang di config.
  • Dokumentasi dua bahasa: README.md dan CONTRIBUTING.md berbahasa Inggris, dengan versi Indonesia di README.id.md dan CONTRIBUTING.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: instaloader dan browser-cookie3 hilang - 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 lewat t("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_cffi sekarang 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 lumenfetch

Lalu:

lumenfetch "https://youtube.com/watch?v=..." -t video -q 720p -y