diff --git a/docs/implementation-plan.md b/docs/implementation-plan.md index daf8493..115623d 100644 --- a/docs/implementation-plan.md +++ b/docs/implementation-plan.md @@ -7,6 +7,7 @@ | **Ağ İletişimi** | `shelf` (Local HTTP Server) | TV tarafında raw TCP socket yerine küçük bir REST API (HTTP Server) kurmak hata yönetimini ve loglamayı inanılmaz kolaylaştırır. | | **Video Oynatıcı** | `media_kit` | *Chewie/Video_player yerine kesinlikle bunu kullanmalısın.* libmpv tabanlıdır. HLS (.m3u8), MKV ve özel codec'leri Android TV'de kusursuz oynatır. | | **Link Yakalama** | `receive_sharing_intent` | Mobil cihazda tarayıcıdan "Paylaş" aksiyonunu dinlemek için. | +| **Video Extraction** | `flutter_inappwebview` & `html` | Sayfa içindeki gizli `.m3u8` veya `.mp4` linklerini headless (gizli) bir tarayıcıda yakalamak için. | | **Lokal Depolama** | `shared_preferences` | Cihazın "TV" mi yoksa "Mobil" mi olduğunu ilk seçimden sonra hatırlamak için. | --- @@ -61,6 +62,15 @@ Raw Socket'ler veriyi bölebilir veya bağlantı kopmalarında sorun yaratabilir ``` * **TV'nin Yanıtı:** `200 OK` (Başarıyla aldım, oynatmaya başlıyorum). +#### D. Video Linki Ayrıştırma (Video Extraction) +Tarayıcıdan paylaşılan link bir web sayfası olduğunda, içindeki asıl videoyu bulmak için şu hiyerarşi uygulanır: + +1. **Headless WebView (En Garanti Yöntem):** Kullanıcı linki paylaştığında, arka planda gizli bir `InAppWebView` açılır. `onLoadResource` veya `shouldInterceptRequest` metodları ile ağ trafiği dinlenir. `.m3u8` veya `.mp4` uzantılı bir istek yakalandığı an sayfa kapatılır ve link TV'ye gönderilir. +2. **Open Graph & Meta Tags:** Sayfa HTML'i `html` paketi ile indirilir. `` veya `