refactor(playout): init mimetypes only once

This commit is contained in:
jo 2023-03-01 17:07:17 +01:00 committed by Kyle Robbertze
parent c7c3dba712
commit 0a9848efdd
1 changed files with 17 additions and 10 deletions

View File

@ -3,6 +3,7 @@ import logging
import mimetypes
import os
import time
from pathlib import Path
from queue import Empty, Queue
from subprocess import PIPE, Popen
from threading import Thread, Timer
@ -22,6 +23,17 @@ from .schedule import get_schedule
logger = logging.getLogger(__name__)
here = Path(__file__).parent
mimetypes.init([str(here / "mime.types")])
def mime_guess_extension(mime: str) -> str:
extension = mimetypes.guess_extension(mime, strict=False)
if extension is None:
logger.warning("could not determine file extension from mime: %s", mime)
return ""
return extension
class PypoFetch(Thread):
name = "fetch"
@ -230,9 +242,8 @@ class PypoFetch(Thread):
start = event_key_to_datetime(event["start"])
end = event_key_to_datetime(event["end"])
mime = event["metadata"]["mime"]
mimetypes.init(["%s/mime.types" % os.path.dirname(os.path.realpath(__file__))])
mime_ext = mimetypes.guess_extension(mime, strict=False)
file_ext = mime_guess_extension(event["metadata"]["mime"])
event["file_ext"] = file_ext
length1 = (end - start).total_seconds()
length2 = event["cue_out"] - event["cue_in"]
@ -242,9 +253,7 @@ class PypoFetch(Thread):
logger.error("cue_out - cue_in length: %s", length2)
logger.error("Two lengths are not equal!!!")
event["file_ext"] = mime_ext
return mime_ext
return file_ext
def is_file_opened(self, path):
# Capture stderr to avoid polluting py-interpreter.log
@ -264,10 +273,8 @@ class PypoFetch(Thread):
for key in events:
item = events[key]
if item["type"] == EventKind.FILE:
if "file_ext" not in item.keys():
item["file_ext"] = mimetypes.guess_extension(
item["metadata"]["mime"], strict=False
)
if "file_ext" not in item:
item["file_ext"] = mime_guess_extension(item["metadata"]["mime"])
scheduled_file_set.add("{}{}".format(item["id"], item["file_ext"]))
expired_files = cached_file_set - scheduled_file_set