Barış Keser ffdb5e8162 v1.1.0: dil destegi (TR + EN)
- Yeni justmusic/web/i18n.js: kaynak-string cevirisi (gettext tarzi). Ic mantik/veri
  TURKCE kalir (mood etiketleri, korumali liste adlari, durum eslesmeleri) — yalniz
  GOSTERIMDE T() Ingilizce'ye cevirir. Boylece veri gocu yok, kutuphane bozulmaz.
- Sablon yedegi: exact anahtar yoksa degisken run'lar placeholder'a cevrilir —
  "5 sarki" -> "{n} sarki" -> "5 songs"; "“Foo” silinsin mi?" -> "Delete “Foo”?".
- showToast(t) iceride T() uyguladigi icin tum toast'lar (Python dahil) otomatik cevrilir;
  durum eslesmeleri (indexOf) Turkce kaynakta kaldigi icin bozulmaz.
- Ust bara dil secici (#langSel); secim settings.lang'e kaydedilir (setLanguage slotu),
  acilista initFromState uygular. index.html statik metinler data-i18n / title / placeholder
  ile applyStaticI18n'de cevrilir. Dil degisince gorunum + sidebar + sag panel + dile bagli
  select'ler (tema/uyku) yeniden cizilir.
- app.js render literalleri T() ile sarildi (butonlar, menuler, basliklar, bos-durumlar,
  komut paleti, karaoke menu, klip, stats, kisayollar, mood chip).
- Dogrulama: harness TR<->EN<->TR (statik kabuk, sidebar korumali adlar, sayisal sablon,
  toast, effects/home/palet gorunumleri, sag panel, select'ler) hepsi cevriliyor, 0 JS hatasi.
2026-09-20 13:01:30 +03:00
2026-09-20 13:01:30 +03:00
2026-09-20 13:01:30 +03:00

Just Music Premium

🎵 Just Music Premium

Windows için profesyonel müzik çalar — Spotify tarzı QtWebEngine arayüzü + yerli DSP ses motoru (gerçek zamanlı EQ & efektler) + gömülü yt-dlp/ffmpeg + htdemucs stüdyo karaoke.

sürüm indir indirme platform python tanıtım

📸 Ekran Görüntüleri

Klip modu — ekranı kaplamaz, ana alana gömülür; zaman kodlu sözler klibin üstünde senkron akar:

Klip modu

Kalıcı mini oynatıcı — sekme değiştirince klip köşeye iner ve çalmaya devam eder (akış kesilmez):

Mini oynatıcı

⬇ İndir & Kur (Windows)

⬇ JustMusic-Setup.msi indir  ·  Tüm sürümler  ·  🌐 Tanıtım sayfası

  • .msi kullanıcı bazlı kurar (yönetici/UAC gerekmez); Başlat menüsü + masaüstü kısayolu ekler.
  • Otomatik güncelleme: uygulama açılışta GitHub'da yeni sürüm arar; varsa .msi'yi arka planda sessizce indirir ve kapanışta kurup yeniden başlatır (istersen "Şimdi yeniden başlat" ile hemen).
  • .msi GitHub Actions'ta bulutta derlenir (bkz. .github/workflows/build.yml): v* etiketi push edilince ffmpeg/yt-dlp/deno indirilir, PyInstaller derler, WiX ile .msi paketlenir ve Release'e yüklenir.

🆕 v1.1.0

  • 🌍 Dil desteği (TR + EN) — üst bardaki dil seçicisinden anında geçiş; seçim kaydedilir. İç veri (mood, korumalı liste adları) Türkçe kalır, yalnız arayüz çevrilir — kütüphanen bozulmaz.

🆕 v1.0.4

  • 📃 Playlist toplu indirme — YouTube playlist URL'si → önizle, seç, X/Y sayaçlı toplu indir.
  • ⬅➡ Geri / İleri gezinme — üst bardaki oklar artık görünüm geçmişinde dolaşıyor.
  • Düzeltmeler: komut paletinden karaoke menüsü artık kapanmıyor; arama/akıllı-liste görünümünde yanlışlıkla sürükle-sırala kaldırıldı; indirme/ayırma bildirimleri üst üste binmiyor.
  • Bakım: yt-dlp güncellendi (YouTube tarafı değişince indirmedeki HTTP 403 düzeldi).

📚 Geliştirici Belgeleri

docs/ altında — projeyi hızlı kavramak için: Mimari · Köprü Sinyalleri · Bilinen Sorunlar · Geliştirici Rehberi + TR→EN sözlük. Kod grafiği: graphify-out/ (graphify query "...").

🏗 Mimari

  • Arayüz: HTML/CSS/JS (justmusic/web/), QWebEngineView içinde render edilir → gerçek Spotify seviyesi görsel (gradyan başlıklar, kartlar, animasyonlar).
  • Ses & tüm mantık: yerli Python (engine.py DSP motoru, library.py, downloader.py, covers.py, naming.py). Arayüz ↔ Python QWebChannel köprüsüyle konuşur (bridge.py).
  • Sunucu / port YOK: her şey in-process. Varlıklar ve kapaklar özel app:// şemasıyla servis edilir (scheme.py). Eski pywebview sürümündeki port çakışması / sonsuz kilitlenme burada imkânsız.

✨ Özellikler

  • Spotify düzeni: üstte arama, solda kütüphane (kapaklı çalma listeleri), ortada gradyanlı liste görünümü + sütunlu şarkı tablosu, sağda "çalınıyor" paneli, altta player bar, ana sayfa kartları, şarkı sözleri görünümü.
  • Gerçek DSP ses motoru (numpy/scipy + sounddevice): 30 EQ preset + 10 bant özel EQ + 🤖 Oto EQ + efekt paneli (Preamp, Bass Boost, Echo, Reverb, 8D Spatial) — çalarken anında. Gerçek FFT görselleştirici.
  • yt-dlp Python kütüphanesi + gömülü ffmpeg.exe/deno.exe: kurulum gerekmez. Ara → 20 sonucu kapaklarıyla gör → satıra tıkla, anında insin (tek tık = tek indirme); dilersen checkbox ile seçip toplu indir; ya da bağlantı yapıştır → direkt mp3.
  • 📃 Playlist toplu indirme: YouTube playlist URL'si yapıştır → tüm parçalar kapaklarıyla önizlenir, seç ve indir; ilerleme X/Y sayacıyla gösterilir, hepsi "İndirilenler" listesine düşer. (v1.0.4)
  • 🎤 Stüdyo karaoke (htdemucs / Demucs, YALNIZCA CPU): şarkıyı gerçekten vokal + enstrüman olarak ayırır. Player'daki mikrofon düğmesi bir menü açar: Enstrümantal (karaoke), Akapella (sadece vokal), ⚡ Hızlı karaoke (anında mid-side, motor gerektirmez) ve Kapat. Ayrılan stem'ler ~/Music/JustMusic/stems/ altında önbelleğe alınır → aynı şarkı bir daha ayrılmaz (anında geçiş). CPU'da ilk ayırma şarkı başına ~4-5 dk sürer, ilerleme gösterilir; geçiş çaldığın saniyeyi koruyarak yapılır.
  • Akıllı isim & kapak: dağınık MP3 adları temizlenip "Sanatçı - Başlık"a ayrıştırılır, bu temiz adla YouTube kapağı çekilir. "🖼 İsim & Kapak" ile toplu senkron.
  • Otomatik kütüphane: ~/Music taranır, her alt klasör bir çalma listesi.
  • Kuyruk (Sıradaki): sıraya ekle / sıradaki çal, kuyruk sayfası.
  • Tam ekran "Şimdi Çalıyor": kapak renginden gradyan + canlı görselleştirici.
  • İstatistik sayfası: toplam parça/liste/süre + en çok dinlenenler (grafik).
  • Genel arama: kütüphanede anında arar (şarkı+liste), Enter → YouTube indirme.
  • Kapak mozaiği (2×2), özel vurgu rengi seçici, gerçek şarkı süreleri (ffmpeg ile), indirme göstergesi, sürükle-bırak ile listeye ekleme, klavye kısayolları penceresi, alt bar mini görselleştirici.
  • Premium tipografi: gömülü Sora (başlıklar) + Manrope (gövde) fontları.

🚀 Çağ açıcı (bize özel DSP) özellikler

  • 🎙 Karaoke / Vokal Azaltma: gerçek zamanlı merkez-kanal iptaliyle vokali kısar.
  • 🌈 Ruh Hali Motoru: sesin enerji + parlaklığını analiz edip parçanın "ruh halini" (Enerjik/Sakin/Güçlü…) bulur, isteğe bağlı arayüz rengini ona uydurur.
  • 🌊 Şarkı DNA'sı: parçanın tüm dalga formu (SoundCloud tarzı) — tıklayarak seek.
  • 🔁 A-B Döngü / Pratik Modu: iki nokta arasında döngü (öğrenmek/çalışmak için).
  • 💡 Ambiyans Işığı: pencere kenarları müziğin rengi + bası ile titreşir.
  • 🌊 Odak Sesleri: DSP ile üretilen yağmur / beyaz / kahverengi gürültü (müzikle veya tek başına — odak/uyku için).
  • 🎬 Klip Modu (akış — indirme yok): alt bardaki film tuşu, çalan parçanın klibini yt-dlp ile çözüp internetten oynatır (playVideo → VideoStreamThread). Ekranı kaplamaz: Spotify gibi ana alana gömülür, kenar çubuğu + alt bar durur ve alt bar klibi sürer (oynat/duraklat, seek, ses). "Sese geç" ile müziğe dönülür — müzik varsayılan dinleme biçimidir. Zaman kodlu sözler varsa klibin üstünde senkron akar. YouTube'dan inen parçalarda kayıt birebir aynı olduğu için konum iki yönde devredilir (müziğin 40. sn'si → klip 40. sn'den).
    • Kalıcı mini oynatıcı: klip açıkken sekme/menü değiştirmek akışı KESMEZ — video, YouTube/Spotify gibi köşedeki bir mini oynatıcıya iner ve çalmaya devam eder; film tuşuna basınca yeniden büyür. Video/ses elementleri bir kez kurulup DOM'da yalnızca taşınır (yeniden yaratılmaz), böylece yt-dlp'yi her seferinde tekrar beklemek gerekmez.
    • Not: QtWebEngine H.264/AAC oynatamaz ve YouTube muxed webm vermez → VP9 video + Opus ses ayrı akış olarak gelir ve arayüzde senkron tutulur.

Ayrıca: 3 durumlu tekrar, liste sıralama, kompakt mod, dosya konumunu aç, kalp animasyonu ve daha fazlası. Ses işleme tamamen yerli DspEngine'de.

🎤 Otomatik şarkı sözleri (Lyrica API)

  • Bir parça çalınca sözü yoksa otomatik olarak Lyrica servisinden çekilir (/lyrics/?artist=…&song=…&timestamps=true&fast=true).
  • Sözler zaman kodlu (LRC) gelir → satırlar çalarken senkron vurgulanır, satıra tıklayınca o ana atlar. Sanatçı bilgisi yoksa önce /suggestion ile bulunur.
  • Sağ paneldeki "Getir" butonuyla elle de çekilebilir; kaynak (lrclib, Genius, Musixmatch…) bildirilir. Sözler kütüphaneye kaydedilir.

🧬 Daha da radikal (analiz + üretim)

  • BPM/tempo tespiti, ses eşitleme (loudness normalize), spektrogram, zaman kodlu (LRC) şarkı sözleri senkronu, Komut Paleti (Ctrl+K), Ruh Hali Radyosu, reverb ortam presetleri (Oda/Salon/Katedral…), parça kırpma & dışa aktarma (A-B ile), akıllı çalma listeleri.
  • Ayrıca: liste içi sürükle-sırala, özel liste kapağı, M3U dışa aktar, tekrarları kaldır, tümünü kuyruğa ekle, 12 tema, sıradaki önizleme.

🔧 İndirme mimarisi (ve düzeltmesi)

  • Arama/indirme yt-dlp'nin PYTHON kütüphanesiyle yapılır (exe değil): gerçek ilerleme kancaları, dönüşüm sonrası kesin dosya yolu (requested_downloads[].filepath) ve anlaşılır hatalar.
  • Modern yt-dlp, YouTube nsig korumasını çözmek için bir JS çalışma zamanı ister → Deno (bin/deno.exe) gömüldü; config.py bin/'i sürecin PATH'ine ekler, kütüphane Deno'yu otomatik bulur.
  • Sonuç: "sonuç bulunamadı / indirme başarısız" giderildi (gerçek müzik videosu indirmesiyle doğrulandı).

🎨 İkonlar

Emoji tuşlar FontAwesome (gömülü) ile değiştirildi — renk ve arka plan tema ile kontrol edilebilir.

  • Sürükle-bırak, favoriler, künye düzenleme, listeler arası kopyalama, hız (0.5x–2x), ses boost (100+), uyku zamanlayıcı, 6 tema, JSON yedek.
  • Klavye: Boşluk · ←/→ 10 sn · ↑/↓ ses · S karışık · L tekrar · N/P.

Veriler ~/Music/JustMusic/ altında (library.json, downloads/, covers/).

🛠 Kullanılan Araçlar

Katman Araç Neden
Arayüz kabuğu PyQt6 + PyQt6-WebEngine (QWebEngineView, QWebChannel) Chromium tabanlı web arayüzü + JS↔Python köprüsü, sunucusuz
Web arayüzü Saf HTML/CSS/JS (framework yok) Spotify seviyesi görsel, tam kontrol
Ses motoru NumPy · SciPy (sosfilt, lfilter) · sounddevice Gerçek zamanlı DSP: EQ, efektler, karaoke, FFT — QMediaPlayer'ın yapamadığı
İndirme yt-dlp (Python kütüphanesi) İlerleme kancaları + kesin dosya yolu + anlaşılır hata
Kod çözme / MP3 FFmpeg (gömülü ffmpeg.exe) Her biçimi f32 PCM'e çöz, mp3 dönüştür
JS çalışma zamanı Deno (gömülü deno.exe) YouTube nsig korumasını çözmek için şart
Şarkı sözleri Lyrica API Zaman kodlu (LRC) senkron sözler
İkonlar Font Awesome Free (gömülü, çevrimdışı) SVG ikon — rengi/arka planı tema ile değişir
Tipografi Sora + Manrope (gömülü) Başlık + gövde fontları (latin-ext = Türkçe)
Paketleme PyInstaller Tek dist\JustMusic\ klasörü (WebEngine + bin + web gömülü)
Logo OpenRouter → Google Nano Banana Pro (Gemini Image) logo.png + logo.ico üretimi

Ses tarayıcıda değil, tamamen yerli DspEngine'de (sounddevice) çalınır; QtWebEngine yalnızca görseldir. Böylece EQ/efekt kalitesi ve "sunucu yok" garantisi korunur.

🧩 Kurulum & Çalıştırma

setup.bat      REM .venv + bağımlılıklar (PyQt6, PyQt6-WebEngine, numpy, scipy, sounddevice, yt-dlp)
run.bat        REM çalıştır
build.bat      REM dist\JustMusic\JustMusic.exe üret (~880 MB; WebEngine+ffmpeg gömülü)

Gömülü ikili araçlar depoda yok (GitHub 100 MB/dosya sınırı). Çalıştırmadan önce bin/ klasörüne şunları koyun: ffmpeg.exe (indir), yt-dlp.exe (indir), deno.exe (indir). (yt-dlp Python kütüphane olarak da requirements.txt üzerinden kurulur; bin/'deki exe yalnızca yedektir. ffmpeg ve deno zorunludur.)

📁 Yapı

main.py                # QtWebEngine giriş noktası (şema + köprü + pencere)
justmusic/
  bridge.py            # JS↔Python köprüsü (KONTROLÖR): ses, kütüphane, indirme, EQ
  scheme.py            # app:// özel şema (web varlıkları + kapaklar)
  engine.py            # DSP motoru (EQ+efekt+hız+FFT) — projenin kalbi
  eqpresets.py         # 30 EQ profili + bant/efekt tanımları
  library.py           # veri modeli + JSON + müzik klasörü tarama
  downloader.py        # yt-dlp PYTHON kütüphanesi ile indirme (+ffmpeg mp3)
  covers.py            # yt-dlp PYTHON kütüphanesi ile kapak arama/önbellek
  naming.py            # MP3 adı temizleme
  config.py            # yollar, gömülü bin/web çözümleme
  web/                 # index.html, app.css, app.js, qwebchannel.js + fontawesome/ + fonts/
  assets/logo.png
bin/ffmpeg.exe  bin/deno.exe  bin/yt-dlp.exe   # depoda YOK — kendiniz indirin (deno: nsig/JS çözümü)
docs/                  # README ekran görüntüleri
setup.bat  run.bat  build.bat  build.py  requirements.txt

ℹ️ Not

Ses tarayıcıda değil, tamamen yerli DspEngine'de (sounddevice) çalınır; QtWebEngine yalnızca görseldir. Hız artışı pitch'i değiştirir (nightcore); reverb çok-taplı "oda" hissidir.

S
Description
🎵 Spotify tarzı QtWebEngine müzik çalar — yerli DSP ses motoru (EQ/efekt), htdemucs stüdyo karaoke, crossfade/gapless, Discord Rich Presence, cam arayüz + kelime-kelime söz adası, gömülü yt-dlp/ffmpeg, klip akışı, playlist toplu indirme, TR/EN, otomatik güncelleme (.msi). Windows.
Readme
2.4 MiB
Languages
Python 40.5%
JavaScript 35.2%
CSS 13%
HTML 11.1%
Batchfile 0.2%