- redesign main app screen to dark card-based layout - add half-star drag/tap rating with haptic feedback - add in-app comments list and composer interactions
Netflix Scraper API
Netflix içerik sayfalarından film/dizi bilgilerini çeken yüksek performanslı bir backend API servisi.
Özellikler
- Scraping: Netflix URL'lerinden otomatik içerik bilgisi çekme
- Cache: Redis ile 7 günlük önbellek (yapılandırılabilir)
- Kalıcılık: PostgreSQL ile verilerin kalıcı saklanması
- Real-time: Socket.IO ile canlı ilerleme bildirimleri
- Güvenlik: API Key authentication ve rate limiting
- Docker: Tek komut ile ayağa kalkma
Hızlı Başlangıç
# .env dosyasını oluştur
cp .env.example .env
# API key'leri düzenle
nano .env
# Başlat (tek komut!)
docker compose -f docker-compose.dev.yml up --build
API şu adreste çalışacak: http://localhost:3000
Frontend şu adreste çalışacak: http://localhost:5173
API Kullanımı
İstek Örneği
curl -X POST http://localhost:3000/api/getinfo \
-H "Content-Type: application/json" \
-H "X-API-Key: web-dev-key-change-me" \
-d '{"url": "https://www.netflix.com/tr/title/81616256"}'
Yanıt Örneği
{
"success": true,
"data": {
"title": "Hayata Röveşata Çeken Adam",
"year": 2022,
"plot": "Dünyaya karşı duyduğu öfke...",
"genres": ["18+", "Komedi"],
"cast": ["Tom Hanks", "Mariana Treviño", "Rachel Keller"],
"backdrop": "https://occ-0-7335-..."
}
}
Endpoints
| Method | Endpoint | Açıklama |
|---|---|---|
GET |
/health |
Sağlık kontrolü |
GET |
/ready |
Bağımlılık kontrolü |
POST |
/api/getinfo |
İçerik bilgisi getir |
POST |
/api/getinfo/async |
Asenkron job oluştur |
GET |
/api/jobs/:jobId |
Job durumu sorgula |
Socket.IO Events
| Event | Yön | Açıklama |
|---|---|---|
job:subscribe |
Client → Server | Job'a abone ol |
job:progress |
Server → Client | İlerleme güncellemesi |
job:completed |
Server → Client | İşlem tamamlandı |
job:error |
Server → Client | Hata oluştu |
Environment Değişkenleri
| Değişken | Açıklama | Varsayılan |
|---|---|---|
PORT |
Sunucu portu | 3000 |
NODE_ENV |
Ortam | development |
POSTGRES_* |
PostgreSQL ayarları | - |
REDIS_* |
Redis ayarları | - |
REDIS_TTL_SECONDS |
Cache süresi | 604800 (7 gün) |
RATE_LIMIT_* |
Rate limit ayarları | - |
API_KEY_* |
API anahtarları | - |
Migration
Migration'lar otomatik olarak container başlatılırken çalışır.
# Manuel migration
docker compose exec app npx prisma migrate deploy
Teknoloji Yığını
| Katman | Teknoloji |
|---|---|
| Runtime | Node.js 20+ |
| Framework | Express.js |
| Database | PostgreSQL 16 |
| Cache | Redis 7 |
| Real-time | Socket.IO 4 |
| Scraper | Cheerio |
| ORM | Prisma |
Proje Yapısı
.
├── src/
│ ├── config/ # Yapılandırma (env, database, redis, socket)
│ ├── middleware/ # Express middleware (auth, rate-limit, validation)
│ ├── routes/ # API rotaları
│ ├── services/ # İş mantığı (scraper, cache, content, job)
│ ├── types/ # TypeScript tipleri
│ └── utils/ # Yardımcı fonksiyonlar
├── prisma/
│ ├── schema.prisma # Veritabanı şeması
│ └── seed.ts # Başlangıç verileri
├── doc/
│ ├── overview.md # Proje özeti
│ ├── api.md # API dokümantasyonu
│ ├── ops.md # Operasyon notları
│ └── socket-events.md # Socket.IO events
├── docker-compose.dev.yml
├── docker-compose.yml
├── Dockerfile
└── package.json
Dokümantasyon
- Proje Özeti:
doc/overview.md - API Dokümantasyonu:
doc/api.md - Operasyon:
doc/ops.md - Socket Events:
doc/socket-events.md
Geliştirme
Local Development
# Bağımlılıkları yükle
npm install
# Prisma client oluştur
npx prisma generate
# Development modda çalıştır
npm run dev
Production Build
npm run build
npm start
Güvenlik
- API Key Authentication: Tüm istekler API key gerektirir
- Rate Limiting: Dakikada max 30 istek (yapılandırılabilir)
- Non-root Container: Production container'ları root olmayan kullanıcı ile çalışır
- Input Validation: Tüm girdiler Zod ile doğrulanır
Lisans
MIT
Description
Languages
TypeScript
69%
Swift
24.2%
CSS
4.4%
Shell
0.9%
Dockerfile
0.9%
Other
0.6%