media-sucker/src/encoder.py

52 lines
1.3 KiB
Python
Raw Normal View History

2022-02-26 08:05:20 -07:00
#! /usr/bin/python3
import os
import threading
import subprocess
import glob
import os
import json
import io
import shutil
import time
import re
2022-08-20 16:42:53 -06:00
import logging
2022-08-21 17:22:06 -06:00
import dvd
2022-02-26 08:05:20 -07:00
class Encoder(threading.Thread):
def __init__(self, directory=None, **kwargs):
self.status = {}
self.directory = directory
2022-08-21 17:22:06 -06:00
return super().__init__(**kwargs)
2022-02-26 08:05:20 -07:00
def run(self):
while True:
wait = True
self.status = {"type": "encoder", "state": "idle"}
2022-08-21 17:22:06 -06:00
for fn in glob.glob(os.path.join(self.directory, "*", "sucker.json")):
fdir = os.path.dirname(fn)
with open(fn) as f:
obj = json.load(f)
self.encode(fdir, obj)
wait = False
2022-02-26 08:05:20 -07:00
if wait:
time.sleep(12)
2022-08-21 17:22:06 -06:00
def encode(self, fdir, obj):
self.status["state"] = "encoding"
self.status["title"] = obj["title"]
if obj["type"] == "audio":
2022-02-26 08:05:20 -07:00
self.encode_audio(fdir, obj)
else:
self.encode_video(fdir, obj)
shutil.rmtree(fdir)
def encode_audio(self, fdir, obj):
2022-08-20 16:42:53 -06:00
logging.error("Not implemented")
2022-02-26 08:05:20 -07:00
def encode_video(self, fdir, obj):
2022-08-21 17:22:06 -06:00
enc = dvd.Encoder(fdir, self.status)
enc.encode(obj)
2022-02-26 08:05:20 -07:00
# vi: sw=4 ts=4 et ai