feat(telegram client): adjustments for run application with telegram

-
pull/2/head
TBS093A 2025-05-14 15:42:27 +02:00
parent 5279b99e39
commit b4ae19aefb
3 changed files with 35 additions and 25 deletions

20
docker.compose.sh 100755
View File

@ -0,0 +1,20 @@
#!/bin/bash
# Zmienne środowiskowe
DB_NAME="telegram_bot"
DB_USER="telegram_user"
DB_PASSWORD="telegram_pass"
DB_PORT="5432"
VOLUME_NAME="telegram_bot_pgdata"
export DATABASE_URL="postgresql://${DB_USER}:${DB_PASSWORD}@localhost:${DB_PORT}/${DB_NAME}"
docker run \
--name "${CONTAINER_NAME}" \
-e POSTGRES_DB="${DB_NAME}" \
-e POSTGRES_USER="${DB_USER}" \
-e POSTGRES_PASSWORD="${DB_PASSWORD}" \
-p "${DB_PORT}:5432" \
--restart unless-stopped \
-d \
postgres:14-alpine

View File

@ -2,9 +2,9 @@ import asyncio
import logging import logging
from telegram import Update from telegram import Update
from telegram.ext import ApplicationBuilder, MessageHandler, filters, CommandHandler from telegram.ext import ApplicationBuilder, MessageHandler, filters, CommandHandler
from .src.config import TELEGRAM_BOT_TOKEN, logger # Import logger z config from src.config import TELEGRAM_BOT_TOKEN, logger # Import logger z config
from .src.handlers import handle_message, error_handler from src.handlers import handle_message, error_handler
from .src.db import init_db, close_db from src.db import init_db, close_db
async def post_init(application): async def post_init(application):
"""Funkcja wykonywana po inicjalizacji aplikacji bota.""" """Funkcja wykonywana po inicjalizacji aplikacji bota."""

View File

@ -3,7 +3,7 @@ import re
from telegram import Update from telegram import Update
from telegram.ext import ContextTypes from telegram.ext import ContextTypes
from telegram.constants import ParseMode from telegram.constants import ParseMode
from .youtube_utils import extract_youtube_urls, extract_video_id, get_transcript, get_video_title from .youtube_utils import extract_youtube_urls, extract_video_id, get_transcript
from .openai_utils import summarize_text from .openai_utils import summarize_text
from .db import save_video_summary, check_if_url_exists from .db import save_video_summary, check_if_url_exists
from .config import TRANSCRIPT_LANGUAGES from .config import TRANSCRIPT_LANGUAGES
@ -52,27 +52,17 @@ async def handle_message(update: Update, context: ContextTypes.DEFAULT_TYPE):
await context.bot.send_chat_action(chat_id=chat_id, action='typing') await context.bot.send_chat_action(chat_id=chat_id, action='typing')
# 1. Pobierz tytuł # Pobierz transkrypcję i tytuł
title = await get_video_title(url) try:
if not title: transcript, title = await get_transcript(video_id, TRANSCRIPT_LANGUAGES)
logger.warning(f"Nie udało się pobrać tytułu dla ID filmu: {video_id}") if not title:
logger.warning(f"Nie udało się pobrać tytułu dla ID filmu: {video_id}")
title = f"Film YouTube {video_id}" # Użyj zastępczego tytułu
except Exception as e:
logger.warning(f"Nie udało się pobrać transkrypcji dla ID filmu: {video_id}: {str(e)}")
await context.bot.send_message( await context.bot.send_message(
chat_id=chat_id, chat_id=chat_id,
text=f"Nie udało się pobrać tytułu dla filmu: {url}", text=f"Nie udało się pobrać transkrypcji dla filmu: {url}",
disable_web_page_preview=True
)
processed_urls_in_message.add(url)
continue # Potrzebujemy tytułu
await context.bot.send_chat_action(chat_id=chat_id, action='typing')
# 2. Pobierz transkrypcję
transcript = await get_transcript(video_id, TRANSCRIPT_LANGUAGES)
if not transcript:
logger.warning(f"Nie udało się pobrać transkrypcji dla ID filmu: {video_id}")
await context.bot.send_message(
chat_id=chat_id,
text=f"Nie udało się pobrać transkrypcji dla filmu: {title} ({url})",
disable_web_page_preview=True disable_web_page_preview=True
) )
processed_urls_in_message.add(url) processed_urls_in_message.add(url)
@ -80,7 +70,7 @@ async def handle_message(update: Update, context: ContextTypes.DEFAULT_TYPE):
await context.bot.send_chat_action(chat_id=chat_id, action='typing') await context.bot.send_chat_action(chat_id=chat_id, action='typing')
# 3. Wygeneruj streszczenie # Wygeneruj streszczenie
summary = await summarize_text(transcript) summary = await summarize_text(transcript)
if not summary: if not summary:
logger.error(f"Nie udało się wygenerować streszczenia dla ID filmu: {video_id}") logger.error(f"Nie udało się wygenerować streszczenia dla ID filmu: {video_id}")
@ -92,7 +82,7 @@ async def handle_message(update: Update, context: ContextTypes.DEFAULT_TYPE):
processed_urls_in_message.add(url) processed_urls_in_message.add(url)
continue continue
# 4. Zapisz do bazy danych # Zapisz do bazy danych
saved = await save_video_summary(url, title, transcript, summary) saved = await save_video_summary(url, title, transcript, summary)
if saved: if saved:
logger.info(f"Pomyślnie przetworzono i zapisano film: {title} ({url})") logger.info(f"Pomyślnie przetworzono i zapisano film: {title} ({url})")