]> git.parisson.com Git - teleforma.git/commitdiff
fix conf import, add tools
authoryomguy <yomguy@parisson.com>
Mon, 4 Feb 2013 11:13:56 +0000 (12:13 +0100)
committeryomguy <yomguy@parisson.com>
Mon, 4 Feb 2013 11:13:56 +0000 (12:13 +0100)
teleforma/management/commands/teleforma-import-conferences.py
tools/trans/create_thumbs.py [new file with mode: 0644]
tools/trans/transcode.py [new file with mode: 0755]
tools/trans/transcode_preview_alpha.py [new file with mode: 0644]

index 87034b361667c0b420e22669c0f6560bdbc12deb..7e399a60ee2589cbfa96976b30efe36beb9616fe 100644 (file)
@@ -31,6 +31,10 @@ class Command(BaseCommand):
     original_format = 'webm'
     transcoded_formats = ['mp4', 'ogg', 'mp3']
     image_formats = ['png', 'jpg']
+    ffmpeg_args = {'mp3' : ' -vn -acodec libmp3lame -aq 6 -ac 2 ',
+                    'ogg' : ' -vn -acodec copy ',
+                    'mp4' : ' -vcodec libx264 -r 24 -b 512k -threads 4 -acodec libfaac -ar 48000 -ab 96k -ac 2 ',
+              }
 
     def cleanup(self):
         medias = Media.objects.all()
@@ -59,7 +63,6 @@ class Command(BaseCommand):
         self.media_dir = settings.MEDIA_ROOT + organization.name
         file_list = []
         all_conferences = Conference.objects.all()
-        i = 1
 
 #        self.cleanup()
 
@@ -109,7 +112,7 @@ class Command(BaseCommand):
                             else:
                                 collection = collections[0]
 
-                            id = '_'.join([collection_id, public_id, ext, str(i)])
+                            id = '_'.join([collection_id, public_id, ext])
 
                             items = MediaItem.objects.filter(collection=collection, code=id)
                             if not items:
@@ -134,14 +137,22 @@ class Command(BaseCommand):
                                     related.save()
                                     break
 
+                            for format in ffmpeg_args.keys():
+                                filename = name + '.' + format
+                                dest = os.path.abspath(root + os.sep + filename)
+                                r_path = dir + os.sep + filename
+                                if not os.path.exists(dest):
+                                    command = 'ffmpeg -i ' + path + ffmpeg_args[format] + ' -y ' + dest
+                                    os.system(command)
+                                    t, c = MediaItemTranscoded.objects.get_or_create(item=item, file=r_path)
+
                             media = Media(conference=conference)
                             media.item = item
                             media.course = conference.course
                             media.course_type = conference.course_type
+                            media.period = conference.period
                             media.type = ext
                             media.set_mime_type()
                             media.save()
                             conference.save()
                             logger.logger.info(path)
-                            i += 1
-
diff --git a/tools/trans/create_thumbs.py b/tools/trans/create_thumbs.py
new file mode 100644 (file)
index 0000000..dc3fd20
--- /dev/null
@@ -0,0 +1,42 @@
+#!/usr/bin/python
+
+import os, sys, string
+import logging
+
+class Logger:
+    """A logging object"""
+
+    def __init__(self, file):
+        self.logger = logging.getLogger('myapp')
+        self.hdlr = logging.FileHandler(file)
+        self.formatter = logging.Formatter('%(message)s')
+        self.hdlr.setFormatter(self.formatter)
+        self.logger.addHandler(self.hdlr)
+        self.logger.setLevel(logging.INFO)
+
+log_file = 'thumbs.log'
+logger = Logger(log_file)
+root_dir = sys.argv[-1]
+args = sys.argv[1:-1]
+source_format = 'webm'
+done = []
+preview_tc = '00:00:05'
+
+if os.path.exists(log_file):
+    f = open(log_file, 'r')
+    for line in f.readlines():
+        done.append(line[:-1])
+    f.close()
+
+for root, dirs, files in os.walk(root_dir):
+    for file in files:
+        path = os.path.abspath(root + os.sep + file)
+        name, ext = os.path.splitext(file)
+        if ext[1:] == source_format:
+            dest = os.path.abspath(root + os.sep + name + '.png')
+            if not dest in done or '--force' in args:
+                command = 'ffmpeg -ss '+ preview_tc + ' -i ' + path + '  -y ' + dest
+                os.system(command)
+                logger.logger.info(dest)
+
+print "DONE!"
diff --git a/tools/trans/transcode.py b/tools/trans/transcode.py
new file mode 100755 (executable)
index 0000000..2abc712
--- /dev/null
@@ -0,0 +1,46 @@
+#!/usr/bin/python
+
+import os, sys, string
+import logging
+
+class Logger:
+    """A logging object"""
+
+    def __init__(self, file):
+        self.logger = logging.getLogger('myapp')
+        self.hdlr = logging.FileHandler(file)
+        self.formatter = logging.Formatter('%(message)s')
+        self.hdlr.setFormatter(self.formatter)
+        self.logger.addHandler(self.hdlr)
+        self.logger.setLevel(logging.INFO)
+
+log_file = 'transcoding.log'
+logger = Logger(log_file)
+root_dir = sys.argv[-1]
+args = sys.argv[1:-1]
+source_format = 'webm'
+done = []
+ffmpeg_args = {'mp3' : ' -vn -acodec libmp3lame -aq 6 -ac 1 ',
+               'ogg' : ' -vn -acodec copy ',
+               'mp4' : ' -vcodec libx264 -r 24 -b 512k -threads 6 -acodec libfaac -ar 48000 -ab 96k -ac 1 ',
+              }
+
+if os.path.exists(log_file):
+    f = open(log_file, 'r')
+    for line in f.readlines():
+        done.append(line[:-1])
+    f.close()
+
+for root, dirs, files in os.walk(root_dir):
+    for file in files:
+        path = os.path.abspath(root + os.sep + file)
+        name, ext = os.path.splitext(file)
+        if ext[1:] == source_format:
+            for format in ffmpeg_args.keys():
+                dest = os.path.abspath(root + os.sep + name + '.' + format)
+                if not dest in done or '--force' in args:
+                    command = 'ffmpeg -i ' + path + ffmpeg_args[format] + ' -y ' + dest
+                    os.system(command)
+                    logger.logger.info(dest)
+
+print "DONE!"
diff --git a/tools/trans/transcode_preview_alpha.py b/tools/trans/transcode_preview_alpha.py
new file mode 100644 (file)
index 0000000..9efbf7c
--- /dev/null
@@ -0,0 +1,53 @@
+#!/usr/bin/python
+
+import os, sys, string
+import logging
+
+class Logger:
+    """A logging object"""
+
+    def __init__(self, file):
+        self.logger = logging.getLogger('myapp')
+        self.hdlr = logging.FileHandler(file)
+        self.formatter = logging.Formatter('%(message)s')
+        self.hdlr.setFormatter(self.formatter)
+        self.logger.addHandler(self.hdlr)
+        self.logger.setLevel(logging.INFO)
+
+log_file = 'preview.log'
+logger = Logger(log_file)
+root_dir = sys.argv[-1]
+args = sys.argv[1:-1]
+source_format = ['webm', 'mp4', 'ogg', 'mp3']
+done = []
+preview_tc_in = '00:00:00'
+preview_tc_out = '00:03:00'
+vfilter = "fade=out:4270:50"
+preview_dir = 'preview'
+ffmpeg_args = {'mp3' : ' -vn -acodec libmp3lame -aq 6 -ac 1 ',
+               'ogg' : ' -vn -acodec copy ',
+               'mp4' : ' -vcodec libx264 -r 24 -b 512k -threads 6 -acodec libfaac -ar 48000 -ab 96k -ac 1 ',
+              }
+
+if os.path.exists(log_file):
+    f = open(log_file, 'r')
+    for line in f.readlines():
+        done.append(line[:-1])
+    f.close()
+
+for root, dirs, files in os.walk(root_dir):
+    for file in files:
+        path = os.path.abspath(root + os.sep + file)
+        name, ext = os.path.splitext(file)
+        if ext[1:] in source_format and not preview_dir in root:
+            dest_dir = root + os.sep + preview_dir
+            if not os.path.exists(dest_dir):
+                os.mkdir(dest_dir)
+            dest = os.path.abspath(dest_dir + os.sep + name + '.preview' + ext)
+            if not dest in done or '--force' in args:
+                command = 'ffmpeg -ss '+ preview_tc_in + ' -t ' + preview_tc_out + \
+                          ' -i ' + path + ' -vcodec copy -acodec copy -y ' + dest
+                os.system(command)
+                logger.logger.info(dest)
+
+print "DONE!"