telegram.video.summary.bot/README.md

121 lines
4.0 KiB
Markdown

# Video Summary Bot
Bot Telegram który nasłuchuje wiadomości z linkami do YouTube, pobiera transkrypcje filmów, streszcza je i zapisuje w bazie danych PostgreSQL.
## Funkcjonalności
- Automatyczne wykrywanie linków YouTube w wiadomościach
- Pobieranie transkrypcji filmów (obsługuje filmy w różnych językach, priorytetyzując polski i angielski)
- Generowanie streszczeń transkrypcji za pomocą OpenAI API
- Przechowywanie streszczeń, transkrypcji i informacji o filmach w bazie danych PostgreSQL
- Wysyłanie streszczeń z powrotem do czatu
## Wymagania
- Python 3.9+
- Serwer PostgreSQL
- Token bota Telegram (uzyskany przez BotFather)
- Klucz API OpenAI
- Token API youtube-transcript.io (do pobierania transkrypcji)
## Instalacja
1. Sklonuj repozytorium:
```
git clone <url-repozytorium>
cd video.summary.bot
```
2. Utwórz plik `.env` na podstawie `.env.example` i dodaj swoje klucze API i dane dostępowe:
```
TELEGRAM_BOT_TOKEN=twój_token_bota_telegram
OPENAI_API_KEY=twój_klucz_api_openai
DATABASE_URL=postgresql://użytkownik:hasło@host:port/nazwa_bazy
YOUTUBE_TRANSCRIPT_API_TOKEN=twój_token_api_youtube_transcript
```
3. Utwórz i aktywuj wirtualne środowisko (opcjonalnie, ale zalecane):
```
python -m venv venv
source venv/bin/activate # Linux/macOS
venv\Scripts\activate # Windows
```
4. Zainstaluj projekt w trybie deweloperskim:
```
pip install -e .
```
## Uruchomienie za pomocą tox
Najłatwiejszy sposób uruchomienia bota to użycie tox:
```
pip install tox
tox -e run
```
## Uruchomienie ręczne
Alternatywnie, możesz uruchomić bota bezpośrednio:
```
python -m src.bot.main
```
Lub po instalacji pakietu:
```
video-summary-bot
```
## Migracja z youtube-transcript-api na youtube-transcript.io API
W wersji 0.2.0 dokonaliśmy migracji z biblioteki `youtube-transcript-api` na oficjalne API `youtube-transcript.io`. Zmiana ta daje następujące korzyści:
- **Większa stabilność**: youtube-transcript.io to oficjalne API, które nie jest zależne od zmian w interfejsie YouTube
- **Wyższe limity**: Możliwość pobierania transkrypcji dla większej liczby filmów
- **Lepsze wsparcie językowe**: Dokładniejsze informacje o dostępnych językach
- **Możliwość zapytań zbiorczych**: API pozwala pobierać transkrypcje dla wielu filmów w jednym żądaniu
### Zmiany w konfiguracji
Migracja wymaga dodania nowego tokenu API w pliku `.env`:
```
YOUTUBE_TRANSCRIPT_API_TOKEN=twój_token_api_youtube_transcript
```
Token można uzyskać rejestrując się na stronie [youtube-transcript.io](https://www.youtube-transcript.io/).
## Struktura projektu
```
video.summary.bot/
├── src/
│ ├── bot/
│ │ ├── __init__.py
│ │ ├── config.py # Konfiguracja (API keys, DB)
│ │ ├── db.py # Interakcja z bazą danych PostgreSQL
│ │ ├── handlers.py # Logika obsługi wiadomości
│ │ ├── main.py # Punkt startowy bota
│ │ ├── openai_utils.py # Funkcje związane z OpenAI API
│ │ └── youtube_utils.py # Funkcje do pracy z YouTube
│ └── __init__.py
├── .env # Plik z sekretami (ignorowany przez Git)
├── .env.example # Przykładowy plik konfiguracyjny
├── pyproject.toml # Definicja projektu i zależności
├── tox.ini # Konfiguracja tox
└── README.md # Ten plik
```
## Uwagi dotyczące użycia
- **Koszty OpenAI API**: API OpenAI jest płatne. Monitoruj swoje zużycie, aby uniknąć niespodziewanych kosztów.
- **Koszty youtube-transcript.io API**: API youtube-transcript.io może być płatne w zależności od wybranego planu. Sprawdź aktualne ceny na stronie usługi.
- **Dostępność transkrypcji**: Nie wszystkie filmy na YouTube mają dostępne transkrypcje.
- **Limity API**: Upewnij się, że uwzględniasz limity API w przypadku intensywnego użytkowania.
## Licencja
Ten projekt jest dostępny na licencji MIT.