Files
indir-fe/mds/2026-03-05-social-media-downloader.md
Fahri Can ce7702b1cb
All checks were successful
UI Deploy - indir.bilgich.com 🎨 / build-and-deploy (push) Successful in 4m8s
main
2026-03-06 15:44:44 +03:00

4.6 KiB
Raw Blame History

AI Session Log - 2026-03-05

Overview

Bu oturumda sosyal medya video indirici özelliği tasarlandı ve implemente edildi.

1. Mimari Planlama

İstek: Sosyal medya platformlarından (YouTube, Instagram, TikTok, X, Facebook) video indirme özelliği.

Kararlar:

  • Next.js API Routes kullanıldı (backend ayrı servis gereksinimi yok)
  • Cobalt API (public instance) entegrasyonu → Cobalt API v7 Kasım 2024'te kapatıldı
  • ab-downloader npm paketi entegre edildi (kullanıcının isteği üzerine)
  • Auth sistemi gereksiz (basit, herkes kullanabilir)
  • IP-based rate limiting (abuse önleme)

Plan Dosyası: plans/social-media-downloader-plan.md

2. Oluşturulan Dosyalar

Types

  • src/types/download.ts - TypeScript tip tanımları
  • src/types/ab-downloader.d.ts - ab-downloader için type declarations

Backend (API Routes)

  • src/app/api/download/route.ts - Ana download endpoint

Utilities

  • src/lib/download/platform-detector.ts - URL'den platform tespiti
  • src/lib/download/downloader.ts - ab-downloader wrapper (platform-specific fonksiyonlar)
  • src/lib/security/url-validator.ts - URL validation ve sanitization
  • src/lib/security/rate-limiter.ts - IP-based rate limiting

Frontend Components

  • src/components/site/download/download-form.tsx - URL input form
  • src/components/site/download/download-result.tsx - Sonuç görüntüleme
  • src/app/[locale]/page.tsx - Ana sayfa (download formu içeriyor)

i18n

  • messages/en.json - İngilizce çeviriler (download bölümü)
  • messages/tr.json - Türkçe çeviriler (download bölümü)

Navigation

  • src/config/navigation.ts - Basitleştirildi (sadece home linki)
  • src/proxy.ts - Auth gereksinimi kaldırıldı (herkes erişebilir)

3. ab-downloader Entegrasyonu

Paket Bilgisi

Desteklenen Platformlar

Platform Fonksiyon Notlar
Instagram igdl() Array döndürür
YouTube youtube() -
TikTok ttdl() -
Twitter/X twitter() -
Facebook fbdown() -
Generic aio() Auto-detect

Response Format

interface DownloadResult {
  url: string;          // Direct download URL
  title?: string;       // Video title
  thumbnail?: string;   // Thumbnail URL
  developer?: string;   // "AbroCodes"
  contactme?: string;   // "Telegram: abrocodes"
}

Örnek Kullanım

import { igdl } from 'ab-downloader';

const result = await igdl('https://www.instagram.com/reel/xxx/');
// result bir array: [{ url, thumbnail, ... }]
const downloadUrl = result[0].url;

4. API Endpoint

POST /api/download

Request:

{
  "url": "https://www.instagram.com/reel/xxx/"
}

Response (Success):

{
  "success": true,
  "data": {
    "downloadUrl": "https://d.rapidcdn.app/...",
    "filename": "instagram_1772720934409.mp4",
    "platform": "instagram",
    "thumbnail": "https://d.rapidcdn.app/thumb?..."
  }
}

Response (Error):

{
  "success": false,
  "error": {
    "code": "error.download.failed",
    "message": "Video indirilemedi"
  }
}

5. Güvenlik Önlemleri

  • URL Validation: Sadece desteklenen platformlardan URL'lere izin verilir
  • Rate Limiting: IP başına 10 istek/saat limiti
  • HTTPS Only: Sadece HTTPS URL'ler kabul edilir
  • Request Timeout: 30 saniye timeout

6. Test Sonuçları

Instagram Test

curl -X POST http://localhost:3001/api/download \
  -H "Content-Type: application/json" \
  -d '{"url":"https://www.instagram.com/reel/DVejgkGkUPU/"}'

Sonuç: Başarılı - Download URL ve thumbnail döndü

7. Önemli Notlar

  1. Cobalt API Kapatıldı: Cobalt API v7 Kasım 2024'te kapatıldığı için ab-downloader paketine geçildi
  2. Array Response: igdl() fonksiyonu array döndürüyor, bu yüzden getFirstResult() helper fonksiyonu kullanılıyor
  3. Type Declarations: Paket TypeScript support içermiyor, bu yüzden src/types/ab-downloader.d.ts oluşturuldu

8. Gelecek İyileştirmeler

  1. Video kalite seçimi
  2. Sadece ses indirme seçeneği
  3. Download progress indicator
  4. Video thumbnail gösterimi (önbellek ile)
  5. Çoklu dil desteği genişletme

Summary

Sosyal medya indirici özelliği başarıyla implemente edildi. Cobalt API'nin kapatılması nedeniyle ab-downloader npm paketi kullanıldı. Instagram videosu başarıyla indirildi ve test edildi. Tüm kod TypeScript ile strict modda yazıldı ve projenin mevcut mimarisine uygun şekilde geliştirildi.