372ed6401b54e4815ad60c7f06ec24025b7e17b2
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)
# 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:
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:
# 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
Batch Mode (Manuel Çalıştırma)
# Tek seferlik çalıştırma
docker-compose run --rm yttranscriptrss python main.py
Yerel Geliştirme
# 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:
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:
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
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 - Detaylı API dokümantasyonu, endpoint'ler, örnekler
- SECURITY.md - Güvenlik önlemleri, best practices
- 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
Description
Languages
Python
94.7%
Shell
4.7%
Dockerfile
0.6%