markus
1
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)