Files
ratebubble/doc/overview.md
2026-02-28 02:44:41 +03:00

2.9 KiB
Raw Permalink Blame History

Netflix Scraper API - Proje Özeti

Proje Hakkında

Netflix Scraper API, Netflix içerik sayfalarından film/dizi bilgilerini çeken bir backend servisidir. URL gönderilerek içerik bilgileri çekilir, önbelleğe alınır ve geri döndürülür.

Neden Oluşturuldu?

  • Otomatik İçerik Toplama: Netflix URL'lerinden otomatik olarak içerik bilgisi çekmek
  • Performans: Redis cache ile tekrarlayan isteklerde hızlı yanıt
  • Kalıcılık: PostgreSQL ile verilerin kalıcı olarak saklanması
  • Gerçek Zamanlı: Socket.IO ile canlı ilerleme bildirimleri

Teknoloji Yığını

Katman Teknoloji
Runtime Node.js 20+
Framework Express.js
Database PostgreSQL 16
Cache Redis 7
Real-time Socket.IO
Scraper Cheerio
ORM Prisma

Mimari

┌─────────────────┐
│    Frontend     │
│  (Web/Mobile)   │
└────────┬────────┘
         │ HTTP + API Key
         ▼
┌─────────────────┐     ┌─────────────┐
│   Express API   │────▶│    Redis    │
│   (Port 3000)   │     │   (Cache)   │
└────────┬────────┘     └─────────────┘
         │
         ▼
┌─────────────────┐     ┌─────────────┐
│ Scraper Service │────▶│  PostgreSQL │
│   (Cheerio)     │     │   (Data)    │
└─────────────────┘     └─────────────┘

Veri Akışı

  1. İstek Alınır: POST /api/getinfo endpoint'ine URL gönderilir
  2. Cache Kontrolü: Redis'te veri var mı diye bakılır
  3. DB Kontrolü: PostgreSQL'de veri var mı diye bakılır
  4. Scraping: Netflix'ten veri çekilir (cache/DB'de yoksa)
  5. Kaydetme: Veri DB'ye ve cache'e yazılır
  6. Yanıt: JSON formatında veri döndürülür

Önemli Kararlar

ADR-001: Cheerio Seçimi

Playwright yerine Cheerio seçildi. Başlangıç için yeterli, daha hafif ve hızlı. Gerekirse Playwright'a geçiş yapılabilir.

ADR-002: Hybrid Cache Stratejisi

Cache → DB → Netflix sıralaması ile veri alınır. Bu sayede:

  • En hızlı yanıt cache'ten gelir
  • Cache'te yoksa DB'den gelir
  • İlk istek hariç Netflix'e istek atılmaz

ADR-003: Named API Keys

Her frontend için ayrı API key kullanılır. Bu sayede:

  • Hangi frontend'in istek attığı takip edilebilir
  • Gerekirse tek bir frontend'in erişimi kapatılabilir

Güncellemeler

Tarih Güncelleme
2025-02-27 Proje oluşturuldu

İlgili Dokümanlar