Files
Youtube2Feed/README.md
2025-11-13 03:40:05 +03:00

171 lines
4.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# YouTube Transcript RSS Feed Generator
YouTube video transkriptlerini otomatik olarak çıkarıp, tam metin içeren RSS feed'ine dönüştüren Docker tabanlı sistem.
## Özellikler
-**RSS-Bridge benzeri URL template** - Kanal adı/linki ile direkt feed
-**Web Server Modu** - Flask ile RESTful API
-**API Key Authentication** - Tüm endpoint'ler API key gerektirir
-**Güvenlik Önlemleri** - SQL injection, XSS, rate limiting koruması
- ✅ RSS-Bridge entegrasyonu (100+ video desteği)
- ✅ Async rate limiting (AIOLimiter)
- ✅ SpaCy ile Sentence Boundary Detection
- ✅ SQLite veritabanı (durum yönetimi)
- ✅ Full-text RSS feed (`<content:encoded>`)
- ✅ Channel handle → Channel ID otomatik dönüştürme
- ✅ Atom ve RSS format desteği
## Hızlı Başlangıç
### Docker ile Web Server Modu (Önerilen)
```bash
# Build
docker-compose build
# Web server'ı başlat (port 5000)
docker-compose up -d
# Logları izle
docker-compose logs -f
```
### API Key Yapılandırması
**ÖNEMLİ:** Tüm endpoint'ler API key gerektirir!
API key'leri `config/security.yaml` dosyasından yönetin:
```yaml
security:
require_api_key: true
api_keys:
demo_key_12345:
name: "Demo API Key"
rate_limit: 100
enabled: true
```
### URL Template Kullanımı
RSS-Bridge benzeri URL template sistemi:
```bash
# Channel ID ile (API key header'da)
curl -H "X-API-Key: demo_key_12345" \
"http://localhost:5000/?channel_id=UC9h8BDcXwkhZtnqoQJ7PggA&format=Atom"
# Channel Handle ile (API key query parametresi)
curl "http://localhost:5000/?channel=@tavakfi&format=Atom&api_key=demo_key_12345"
# Channel URL ile
curl -H "X-API-Key: demo_key_12345" \
"http://localhost:5000/?channel_url=https://www.youtube.com/@tavakfi&format=Atom&max_items=100"
```
**Detaylı API dokümantasyonu için:** [API.md](API.md)
### Batch Mode (Manuel Çalıştırma)
```bash
# Tek seferlik çalıştırma
docker-compose run --rm yttranscriptrss python main.py
```
### Yerel Geliştirme
```bash
# Virtual environment oluştur
python -m venv venv
source venv/bin/activate # Linux/Mac
# veya
venv\Scripts\activate # Windows
# Bağımlılıkları kur
pip install -r requirements.txt
# SpaCy modelini indir
python -m spacy download en_core_web_sm
# Çalıştır
python main.py
```
## Yapılandırma
### Ana Yapılandırma
`config/config.yaml` dosyasını düzenleyin:
```yaml
channel:
id: "UC9h8BDcXwkhZtnqoQJ7PggA" # veya handle: "@username"
name: "Channel Name"
language: "tr"
rss_bridge:
base_url: "https://rss-bridge.org/bridge01"
format: "Atom"
max_items: 100
```
### Güvenlik Yapılandırması
`config/security.yaml` dosyasından API key'leri ve güvenlik ayarlarını yönetin:
```yaml
security:
require_api_key: true
api_keys:
your_api_key_here:
name: "Your API Key"
rate_limit: 100
enabled: true
default_rate_limit: 60
```
**Detaylı güvenlik dokümantasyonu için:** [SECURITY.md](SECURITY.md)
## Proje Yapısı
```
yttranscriptrss/
├── src/
│ ├── database.py # SQLite yönetimi
│ ├── video_fetcher.py # RSS-Bridge entegrasyonu
│ ├── transcript_extractor.py # Transcript çıkarımı
│ ├── transcript_cleaner.py # NLP ve temizleme
│ └── rss_generator.py # RSS feed oluşturma
├── config/
│ └── config.yaml # Yapılandırma
├── data/
│ └── videos.db # SQLite veritabanı
├── output/
│ └── transcript_feed.xml # RSS feed çıktısı
├── Dockerfile
├── docker-compose.yml
└── main.py
```
## Dokümantasyon
- **[API.md](API.md)** - Detaylı API dokümantasyonu, endpoint'ler, örnekler
- **[SECURITY.md](SECURITY.md)** - Güvenlik önlemleri, best practices
- **[development_plan.md](development_plan.md)** - Geliştirme planı ve roadmap
## Endpoints
- `GET /` - RSS/Atom feed oluştur (API key gerekli)
- `GET /health` - Health check (API key gerekmez)
- `GET /info` - API bilgileri (API key gerekli)
## Geliştirme Planı
Detaylı geliştirme planı için `development_plan.md` dosyasına bakın.
## Lisans
MIT