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