@@ 36,6 36,22 @@ def usage():
print(f'usage: {argv0} <host> <port> <srcdir>', file=stderr)
exit(-1)
+class JobError(Exception):
+ pass
+def send_cmd(reader, writer, cmd):
+ lines = []
+
+ writer.write(cmd.encode()+b'\n')
+ writer.flush()
+ while True:
+ line = reader.readline()
+ if line == '?\n':
+ raise JobError(cmd)
+ elif line == 'OKAY\n':
+ return lines
+ else:
+ lines.append(line.strip())
+
@dataclass
class Episode:
@@ 65,7 81,7 @@ class Episode:
inparg = shlex.quote(str(self.file))
outarg = shlex.quote(str(outpath))
dirarg = shlex.quote(str(outpath.parent))
- return '#!/bin/sh\n' f'mkdir -p {dirarg}\n' f'ffmpeg -loglevel quiet -i {inparg} -map 0 -c:a copy -c:s ass -c:v h264 -s {wid}x{hei} {outarg}\n'
+ return '#!/bin/sh\n' f'mkdir -p {dirarg}\n' f'ffmpeg -loglevel error -i {inparg} -map 0 -c:a copy -c:s ass -c:v h264 -s {wid}x{hei} {outarg}\n'
def slug(self):
if self.season == 0:
@@ 210,14 226,9 @@ def queue_job(reader, writer, show, res, episode):
jid = int(jid)
reader.readline()
- writer.write(f'META name IS {jobname}\n'.encode())
- writer.flush()
- reader.readline()
+ send_cmd(reader, writer, f'META name IS {jobname}')
+ send_cmd(reader, writer, 'MARK AS available')
- writer.write(f'MARK AS available\n'.encode())
- writer.flush()
- reader.readline()
-
print(f'{jobname} queued as {jid}')