121 lines
4.0 KiB
Markdown
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. |