From 12dd4ba40ae2fd5080966e492ce631f79c5a5758 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?N=C3=A9munaire?= Date: Sat, 21 Jun 2014 18:04:16 +0200 Subject: [PATCH] Add movie converter worker --- worker/convertMovie.py | 40 ++++++++++++++++++++++++++++++++++++++++ worker/musik.py | 10 ++++++++++ 2 files changed, 50 insertions(+) mode change 100644 => 100755 worker/convertMovie.py diff --git a/worker/convertMovie.py b/worker/convertMovie.py old mode 100644 new mode 100755 index e69de29..2115d96 --- a/worker/convertMovie.py +++ b/worker/convertMovie.py @@ -0,0 +1,40 @@ +#!/usr/bin/env python2 +# -*- coding: utf-8 -*- + +from gearman import GearmanWorker +from xml.dom.minidom import getDOMImplementation, parseString + +from musik import * + +def gen_response(filepath, wformat="best"): + impl = getDOMImplementation() + + newdoc = impl.createDocument(None, "gearman_musik", None) + root = newdoc.documentElement + + res = newdoc.createElement("response") + rest = newdoc.createTextNode(convert_file(filepath, wformat)) + res.appendChild(rest) + root.appendChild(res) + + return newdoc.toxml() + +gm_worker = GearmanWorker(['localhost:4730']) + +def convert_movie(worker, job): + inputdom = parseString(job.data) + + filenames = inputdom.documentElement.getElementsByTagName("filename") + wformat = inputdom.documentElement.getElementsByTagName("format") + + if len(wformat) <= 0: + wformat = "mp3" + + if len(filenames) > 0: + return gen_response(filenames[0].childNodes[0].data) + else: + return gen_error(0, "Pas de fichier à convertir") + +gm_worker.register_task('convertMovie', convert_movie) + +gm_worker.work() diff --git a/worker/musik.py b/worker/musik.py index a20a27c..07e033c 100644 --- a/worker/musik.py +++ b/worker/musik.py @@ -14,6 +14,16 @@ class ytd(youtube_dl.YoutubeDL): youtube_dl.YoutubeDL.__init__(self, params) +def convert_file(path, preferredcodec=None, preferredquality=u"5"): + y = ytd() + pp = youtube_dl.postprocessor.FFmpegExtractAudioPP(y, preferredcodec=preferredcodec, preferredquality=preferredquality) + try: + pp.run({'filepath': path}) + except Exception as e: + return e.msg + + return "" + def get_extractor(url): """Get first matching extractor for the given URL""" extractors = youtube_dl.extractor.gen_extractors()