#! /usr/bin/python3 import os import subprocess import glob import os import json import io import shutil import time import re import logging import dvd import cd import worker class Encoder(worker.Worker): def __init__(self, directory=None): self.status = {} self.directory = directory return super().__init__(directory) def run(self): while True: wait = True self.status = {"type": "encoder", "state": "idle"} for fn in glob.glob(self.workdir("*", "state.json")): self.encode(os.path.dirname(fn), obj) wait = False if wait: time.sleep(12) def encode(self, directory, obj): self.status["state"] = "encoding" state = self.read_state(directory) self.status["title"] = state["title"] if state["video"]: media = dvd else: media = cd logging.info("Encoding %s (%s)" % (directory, state["title"])) for pct in media.encode(state, directory): self.status["complete"] = pct media.clean(state, directory) logging.info("Finished encoding") # vi: sw=4 ts=4 et ai