cstrap
6/23/2016 - 10:21 AM

Video processing handler http://pastebin.com/GkvVCcQC

Video processing handler http://pastebin.com/GkvVCcQC

#!/usr/bin/env python
#Frank's Video Processing Magic
from multiprocessing import Process, Queue, log_to_stderr
from os import path, popen
from subprocess import call
import logging, pyinotify

config = {
	'IN_FOLDER':	'/home/media/Uploads',
	'OUT_FOLDER':	'/home/media/MoviesToProcess',
	'HANDBRAKE':	'HandBrakeCLI -i "{input_file}" -o "{output_file}" -ex264 -Ecopy:aac'
}

def ConversionEngine(queue):
	log = log_to_stderr()
	log.setLevel(logging.INFO)
	while True:
		event = queue.get()
		input_file = event.pathname
		log.info("Starting processing for %s" % input_file)
		filename = "%s.mp4" % path.splitext(path.basename(input_file))[0]
		output_file = path.join(config['OUT_FOLDER'], filename)
		cli = config['HANDBRAKE'].format(input_file = input_file, output_file=output_file)
		log.info(cli)
		call(cli, shell=True)

class NotifyHandler(pyinotify.ProcessEvent):
	def my_init(self, queue):
		self.queue = queue
		self.log = log_to_stderr()
		self.log.setLevel(logging.INFO)
	def process_IN_CLOSE_WRITE(self, event):
		self.log.info("Got file: %s" % event.pathname)
		self.queue.put(event)

if __name__ == '__main__':
	queue = Queue()
	Process(target = ConversionEngine, args=(queue,)).start()
	handler = NotifyHandler(queue = queue)
	wm = pyinotify.WatchManager()
	notifier = pyinotify.Notifier(wm, handler)
	wm.add_watch(config['IN_FOLDER'], pyinotify.IN_CLOSE_WRITE)
	notifier.loop()