YnM Napi Film Ajánló py

import sqlite3
import random
import time
import schedule
from sopel import plugin
from datetime import datetime

# Jellyfin adatbázis elérési útvonala
JELLYFIN_DB_PATH = "/home/ai/.sopel/library.db"

def convert_ticks_to_time(ticks):
    """
    Konvertálja a tick értéket HH:MM:SS formátumba.
    1 tick = 100 nanosekundum, tehát 10_000_000 tick = 1 másodperc.
    """
    seconds = ticks / 10_000_000
    hours = int(seconds // 3600)
    minutes = int((seconds % 3600) // 60)
    sec = int(seconds % 60)
    return f"{hours:02d}:{minutes:02d}:{sec:02d}"

def get_random_movie_info():
    """
    Véletlenszerű filmet választ az adatbázisból és visszaadja a címét, áttekintését és futásidőjét.
    """
    try:
        conn = sqlite3.connect(JELLYFIN_DB_PATH)
        cursor = conn.cursor()
        cursor.execute(
            """
            SELECT Name, CleanName, OriginalTitle, RunTimeTicks, Overview 
            FROM TypedBaseItems 
            WHERE type = 'MediaBrowser.Controller.Entities.Movies.Movie'
            """
        )
        movies = cursor.fetchall()
        conn.close()
    except sqlite3.Error as e:
        return None

    if movies:
        # Véletlenszerű film választása
        movie = random.choice(movies)
        name, _, original_title, runtime_ticks, overview = movie
        runtime_str = convert_ticks_to_time(runtime_ticks) if runtime_ticks else "Ismeretlen"
        return original_title, overview, runtime_str
    return None

def send_daily_movie(bot):
    """
    Napi film ajánlat küldése 18:00-kor.
    """
    movie_info = get_random_movie_info()
    if movie_info is None:
        bot.say("Nincs elérhető film az adatbázisban!")
    else:
        original_title, overview, runtime_str = movie_info
        bot.say(f"Napi film ajánlat: {original_title}")
        time.sleep(1)
        bot.say(f"*Lejátszási idő*: {runtime_str}")
        time.sleep(1)
        bot.say(f"*Áttekintés*: {overview}")

# Programozott ütemezés: minden nap 18:00-kor
schedule.every().day.at("18:00").do(send_daily_movie, bot=None)

@plugin.command('start_daily_movie')
def start_daily_movie_command(bot, trigger):
    """
    Elindítja az ütemezést.
    """
    while True:
        schedule.run_pending()
        time.sleep(60)