Co-authored-by: TBS093A <zukkamil.44@gmail.com> Reviewed-on: https://git.00x097.com/tbs093a/telegram.video.summary.bot/pulls/2 |
||
|---|---|---|
| k8s.manifests | ||
| src | ||
| tests | ||
| .env.example | ||
| .gitignore | ||
| Jenkinsfile | ||
| README.md | ||
| __init__.py | ||
| docker.compose.sh | ||
| main.py | ||
| pyproject.toml | ||
| set.envs.sh | ||
| tox.ini | ||
README.md
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
-
Sklonuj repozytorium:
git clone <url-repozytorium> cd video.summary.bot -
Utwórz plik
.envna podstawie.env.examplei 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 -
Utwórz i aktywuj wirtualne środowisko (opcjonalnie, ale zalecane):
python -m venv venv source venv/bin/activate # Linux/macOS venv\Scripts\activate # Windows -
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.
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.