Files
m3u-restream-hdmi/epg_create.py
T
2026-03-17 08:55:29 +01:00

58 lines
1.9 KiB
Python
Executable File

import subprocess
from flask import Flask, request, jsonify
from lxml import etree
from datetime import datetime, timedelta
app = Flask(__name__)
EPG_FILE = "sky_epg.xml"
@app.route('/update_sky', methods=['POST'])
def update_sky():
data = request.json
channel_name = data.get('channel', 'Unbekannt')
content_title = data.get('content', 'Keine Information')
# Zeitstempel für XMLTV (Start jetzt, Ende in 1 Std als Platzhalter)
now = datetime.now()
start_time = now.strftime("%Y%m%d%H%M%S +0100")
stop_time = (now + timedelta(hours=12)).strftime("%Y%m%d%H%M%S +0100")
# XML Struktur aufbauen
root = etree.Element("tv")
# Kanal Info
channel = etree.SubElement(root, "channel", id="cftv")
etree.SubElement(channel, "display-name").text = "cftv" #+ channel_name
# Programm Info
prog = etree.SubElement(root, "programme",
start=start_time,
stop=stop_time,
channel="cftv") #channel_name.replace(" ", ""))
etree.SubElement(prog, "title").text = content_title
if data.get('image'):
etree.SubElement(prog, "icon", src=data['image'])
# Datei speichern
tree = etree.ElementTree(root)
tree.write(EPG_FILE, pretty_print=True, xml_declaration=True, encoding="utf-8")
print(f"EPG aktualisiert: {channel_name} - {content_title}")
script_path = "/home/sandro/m3u/aktualisiere_epg.py"
try:
# Wir rufen es asynchron auf, damit die API sofort "success" an HA zurückgeben kann
subprocess.Popen(["python3", script_path])
print(f"Externes Skript gestartet: {script_path}")
except Exception as e:
print(f"Fehler beim Aufruf des EPG-Skripts: {e}")
return jsonify({"status": "XML erstellt, Sync gestartet"}), 200
return jsonify({"status": "xml_updated"}), 200
if __name__ == '__main__':
app.run(host='0.0.0.0', port=5000)