Go to file
TBS093A bdb909bd48 feat(customization): prepare func for too large transcripts and too large responses from ai
-
2025-05-14 16:29:40 +02:00
k8s.manifests feat(init): prepare full working yt-transcript-api integration with tests 2025-05-14 13:45:27 +02:00
src feat(customization): prepare func for too large transcripts and too large responses from ai 2025-05-14 16:29:40 +02:00
tests feat/openai (#1) 2025-05-14 13:20:21 +00:00
.env.example feat(init): prepare full working yt-transcript-api integration with tests 2025-05-14 13:45:27 +02:00
.gitignore feat(init): prepare full working yt-transcript-api integration with tests 2025-05-14 13:45:27 +02:00
Jenkinsfile feat(init): prepare full working yt-transcript-api integration with tests 2025-05-14 13:45:27 +02:00
README.md feat(init): prepare full working yt-transcript-api integration with tests 2025-05-14 13:45:27 +02:00
__init__.py feat(init): prepare full working yt-transcript-api integration with tests 2025-05-14 13:45:27 +02:00
docker.compose.sh feat(telegram client): adjustments for run application with telegram 2025-05-14 15:42:27 +02:00
main.py feat(telegram client): adjustments for run application with telegram 2025-05-14 15:42:27 +02:00
pyproject.toml feat(init): prepare full working yt-transcript-api integration with tests 2025-05-14 13:45:27 +02:00
set.envs.sh feat(init): prepare full working yt-transcript-api integration with tests 2025-05-14 13:45:27 +02:00
tox.ini feat/openai (#1) 2025-05-14 13:20:21 +00:00

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

  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.

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.