media-sucker/src/encoder.py

53 lines
1.2 KiB
Python

#! /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