# YouTube Video & MP3 Downloader - Electron.js Planı Bu proje, modern ve göz alıcı bir **Glassmorphic** (cam morfolojisi) tasarım diline sahip, YouTube videolarını yüksek çözünürlükte indiren ve bunları yüksek kaliteli MP3 formatlarına dönüştürebilen bir masaüstü Electron.js uygulamasıdır. ## Proje Mimarisi ve Teknoloji Seçimleri 1. **Arayüz (Renderer)**: - **Glassmorphic Tasarım**: `backdrop-filter: blur()`, yarı saydam sınırlar (semi-transparent borders), derin gölgeler, canlı degrade arka planlar (mesh gradients) ve akıcı mikro animasyonlar. - **HTML5 & Vanilla CSS**: Harici ağır CSS kütüphaneleri olmadan, maksimum esneklik ve performans için saf CSS. - **Font**: Google Fonts üzerinden modern ve premium bir görünüm sunan **Outfit** veya **Inter** fontu. - **Lucide Icons**: Modern ve minimalist ikonlar için SVG tabanlı kullanım. 2. **Ana Süreç (Electron Main & Preload)**: - **Güvenlik**: `nodeIntegration: false` ve `contextIsolation: true` kullanılarak güvenli IPC köprüsü oluşturulacaktır (`preload.js`). - **İndirme Motoru (`yt-dlp`)**: YouTube'un sürekli değişen altyapısına uyum sağlamak için en kararlı çözüm olan `yt-dlp` aracı bir Node.js `child_process` veya sarmalayıcı (wrapper) üzerinden yönetilecektir. - **Ses Dönüştürme (`ffmpeg`)**: İndirilen videoları veya doğrudan ses akışlarını yüksek kaliteli MP3'e (320kbps) dönüştürmek için `ffmpeg` entegrasyonu kurulacaktır. --- ## Kullanıcı İncelemesi Gereken Konular > [!IMPORTANT] > **İndirme Motoru Tercihi (`yt-dlp` vs `ytdl-core`)** > Standart `ytdl-core` gibi saf JS kütüphaneleri YouTube'un sık güncellemeleri nedeniyle çok çabuk bozulmaktadır. Bu nedenle projemizde arka planda bağımsız çalışan ve kendini güncelleyebilen **`yt-dlp`** binary motorunu kullanmayı öneriyoruz. Sisteminizde python kurulu olmasa bile çalışabilen standalone binary'ler indirilecek veya paketlenecektir. > [!TIP] > **FFmpeg Bağımlılığı** > MP3 dönüştürme ve yüksek çözünürlüklü (1080p+) video/ses birleştirme işlemleri için `ffmpeg` gereklidir. Uygulama ilk açılışta veya arka planda ffmpeg binary'lerinin varlığını kontrol edip gerekirse otomatik olarak temin edecek bir mekanizmaya sahip olacaktır. --- ## Önerilen Değişiklikler ve Dosya Yapısı Yeni oluşturulacak proje yapısı şu şekilde olacaktır: ### [Core App Directory](file:///d:/Works/2026/youtube-downloader) #### [NEW] [package.json](file:///d:/Works/2026/youtube-downloader/package.json) Uygulama bağımlılıklarını (`electron`, `fluent-ffmpeg`, vb.) ve başlatma scriptlerini içerecektir. #### [NEW] [main.js](file:///d:/Works/2026/youtube-downloader/main.js) Electron ana süreci. Pencere yönetimi, `yt-dlp` ve `ffmpeg` işlemlerini yürütecek IPC dinleyicilerini barındırır. #### [NEW] [preload.js](file:///d:/Works/2026/youtube-downloader/preload.js) Güvenli IPC köprüsü. Arayüzün işletim sistemi komutlarına ve indirme durumlarına güvenli bir şekilde erişmesini sağlar. #### [NEW] [index.html](file:///d:/Works/2026/youtube-downloader/src/index.html) Ana arayüz şablonu. Glassmorphic paneller, URL giriş alanı, indirme formatı seçimleri (MP4/MP3), kalite seçenekleri, indirme kuyruğu ve ilerleme barlarını barındırır. #### [NEW] [style.css](file:///d:/Works/2026/youtube-downloader/src/style.css) Premium Glassmorphic CSS tasarımı. Renk paleti (Canlı morlar, neon pembeler ve derin cam mavileri), blur efektleri, glow animasyonları ve şık kart tasarımları bu dosyada tanımlanacaktır. #### [NEW] [renderer.js](file:///d:/Works/2026/youtube-downloader/src/renderer.js) Arayüz mantığı. Kullanıcı etkileşimlerini yakalar, IPC aracılığıyla `main.js`'e indirme emirleri gönderir ve canlı ilerleme durumunu (`progress`) arayüzde günceller. #### [NEW] [downloader.js](file:///d:/Works/2026/youtube-downloader/utils/downloader.js) `yt-dlp` ve `ffmpeg` süreçlerini yöneten yardımcı sınıf (helper). İndirme yüzdesini parse edip IPC kanalı üzerinden arayüze aktarır. --- ## Doğrulama ve Test Planı ### Otomatik & Manuel Testler - **IPC Güvenlik Testi**: Geliştirici konsolundan doğrudan Node.js fonksiyonlarına erişimin engellendiğinin doğrulanması. - **İndirme Testleri**: - Farklı uzunluktaki YouTube video linklerinin analizi (video bilgisi çekme: başlık, küçük resim, süre). - MP4 (Video + Ses birleştirilmiş) formatında başarıyla indirme testi. - Sadece MP3 (En yüksek kalitede ses çıkarma ve ffmpeg ile dönüştürme) formatında indirme testi. - **Görsel/UI Testleri**: Farklı pencere boyutlarında Glassmorphism efektlerinin, arka plan degrade geçişlerinin ve responsive düzenin doğrulanması.