73 lines
2.2 KiB
Python
73 lines
2.2 KiB
Python
import logging
|
|
import socket
|
|
import sys
|
|
from contextlib import ExitStack
|
|
|
|
from epg2xml.config import Config
|
|
from epg2xml.providers import EPGHandler
|
|
|
|
############################################################
|
|
# INIT
|
|
############################################################
|
|
|
|
# load initial config
|
|
conf = Config()
|
|
|
|
# load config file
|
|
conf.load()
|
|
|
|
# logger
|
|
log = logging.getLogger("MAIN")
|
|
|
|
############################################################
|
|
# MAIN
|
|
############################################################
|
|
|
|
|
|
def main():
|
|
log.debug("Loading providers...")
|
|
h = EPGHandler(conf.configs)
|
|
|
|
if (cmd := conf.args["cmd"]) in ["run", "fromdb"]:
|
|
with ExitStack() as stack:
|
|
# redirecting stdout to...
|
|
if xmlfile := conf.settings["xmlfile"]:
|
|
sys.stdout = stack.enter_context(open(xmlfile, "w", encoding="utf-8"))
|
|
elif xmlsock := conf.settings["xmlsock"]:
|
|
sock = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
|
|
sock.connect(xmlsock)
|
|
sys.stdout = stack.enter_context(sock.makefile("w"))
|
|
|
|
if cmd == "fromdb":
|
|
log.debug("Importing from dbfile...")
|
|
h.from_db(conf.settings["dbfile"])
|
|
else:
|
|
log.debug("Loading service channels...")
|
|
h.load_channels(conf.settings["channelfile"], conf.settings["parallel"])
|
|
|
|
log.debug("Loading requested channels...")
|
|
h.load_req_channels()
|
|
|
|
log.debug("Getting EPG...")
|
|
h.get_programs(conf.settings["parallel"])
|
|
|
|
if (dbfile := conf.settings["dbfile"]) is not None:
|
|
log.debug("Exporting to dbfile...")
|
|
h.to_db(dbfile)
|
|
|
|
log.info("Writing xmltv.dtd header...")
|
|
h.to_xml()
|
|
|
|
log.info("Done")
|
|
elif cmd == "update_channels":
|
|
h.load_channels(conf.settings["channelfile"], conf.settings["parallel"])
|
|
else:
|
|
raise NotImplementedError(f"Unknown command: {cmd}")
|
|
|
|
|
|
if __name__ == "__main__":
|
|
try:
|
|
main()
|
|
except KeyboardInterrupt:
|
|
sys.exit(0)
|