--- /dev/null
+#!/usr/bin/python
+
+import os, sys, string
+import logging
+import datetime
+
+
+class Logger:
+ """A logging object"""
+
+ def __init__(self, file):
+ self.logger = logging.getLogger('myapp')
+ self.hdlr = logging.FileHandler(file)
+ self.formatter = logging.Formatter('%(asctime)s %(message)s')
+ self.hdlr.setFormatter(self.formatter)
+ self.logger.addHandler(self.hdlr)
+ self.logger.setLevel(logging.INFO)
+
+
+class TelemetaTranscode(object):
+ """docstring for TelemetaTranscode"""
+
+ source_formats = ['webm',]
+
+ dest_formats_nonv = {
+ 'mp3' : '-vn -acodec libmp3lame -aq 6',
+ 'mp4' : '-c:v libx264 -crf 17 -maxrate 1100k -bufsize 1835k -c:a aac -b:a 128k',
+ 'png' : '-ss 0:0:10',
+ }
+
+ date_limit = datetime.datetime(year=2021, month=6, day=24)
+
+ def __init__(self, args):
+ self.args = args
+ self.log_file = args[-1]
+ self.root_dir = args[-2]
+ self.logger = Logger(self.log_file)
+
+ def get_ext_in_dir(self, extension, root):
+ files = os.listdir(root)
+ exts = []
+ for f in files:
+ name, ext = os.path.splitext(f)
+ ext = ext[1:]
+ if not ext in exts:
+ exts.append(ext)
+ return extension in exts
+
+ def run(self):
+ for root, dirs, files in os.walk(self.root_dir):
+ for file in files:
+ path = os.path.abspath(root + os.sep + file)
+ name, ext = os.path.splitext(file)
+ ext = ext[1:]
+ date_dir = datetime.datetime.fromtimestamp(os.path.getmtime(path))
+ if ext in self.source_formats and date_dir > self.date_limit:
+ print(date_dir)
+ for format, ffmpeg_args in self.dest_formats.iteritems():
+ local_file = name + '.' + format
+ dest = os.path.abspath(root + os.sep + local_file)
+ local_files = os.listdir(root)
+ if not (local_file in local_files or self.get_ext_in_dir(format, root)) or '--force' in self.args:
+ if ext == 'webm' and format == 'ogg':
+ ffmpeg_args = '-vn -acodec copy'
+ if format == 'png':
+ command = '/usr/local/bin/ffmpeg -loglevel 0 ' + ffmpeg_args + ' -i "' + path + '" -frames:v 1 -y "' + dest + '"'
+ else:
+ command = '/usr/local/bin/ffmpeg -loglevel 0 -i "' + path + '" ' + ffmpeg_args + ' -y "' + dest + '"'
+ self.logger.logger.info(command)
+ if not '--dry-run' in self.args:
+ os.system(command)
+ print(command)
+
+
+if __name__ == '__main__':
+ t = TelemetaTranscode(sys.argv[1:])
+ t.run()
class TelemetaTranscode(object):
"""docstring for TelemetaTranscode"""
- threads = 4
- source_formats = ['webm', 'mp4']
+ source_formats = ['webm',]
dest_formats = {
'mp3' : '-vn -acodec libmp3lame -aq 6',
'mp4' : '-c:v h264_nvenc -maxrate 1100k -c:a aac -b:a 128k',
self.root_dir = args[-2]
self.logger = Logger(self.log_file)
-
def get_ext_in_dir(self, extension, root):
files = os.listdir(root)
exts = []
+++ /dev/null
-#!/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('%(asctime)s %(message)s')
- self.hdlr.setFormatter(self.formatter)
- self.logger.addHandler(self.hdlr)
- self.logger.setLevel(logging.INFO)
-
-
-class TelemetaTranscode(object):
- """docstring for TelemetaTranscode"""
-
- threads = 4
- source_formats = ['webm',]
- dest_formats = {
- 'mp3' : '-vn -acodec libmp3lame -aq 3',
- 'mp4' : '-c:v h264_nvenc -maxrate 1100k -c:a aac -b:a 96k',
- 'png' : '-ss 0:0:10',
- }
-
- def __init__(self, args):
- self.args = args
- self.log_file = args[-1]
- self.root_dir = args[-2]
- self.logger = Logger(self.log_file)
-
-
- def get_ext_in_dir(self, extension, root):
- files = os.listdir(root)
- exts = []
- for f in files:
- name, ext = os.path.splitext(f)
- ext = ext[1:]
- if not ext in exts:
- exts.append(ext)
- return extension in exts
-
- def run(self):
- for root, dirs, files in os.walk(self.root_dir):
- for file in files:
- path = os.path.abspath(root + os.sep + file)
- name, ext = os.path.splitext(file)
- ext = ext[1:]
- if ext in self.source_formats:
- for format, ffmpeg_args in self.dest_formats.iteritems():
- local_file = name + '.' + format
- dest = os.path.abspath(root + os.sep + local_file)
- local_files = os.listdir(root)
- if not (local_file in local_files or self.get_ext_in_dir(format, root)) or '--force' in self.args:
- if ext == 'webm' and format == 'ogg':
- ffmpeg_args = '-vn -acodec copy'
- if format == 'png':
- command = 'ffmpeg -loglevel 0 ' + ffmpeg_args + ' -i "' + path + '" -frames:v 1 -y "' + dest + '"'
- else:
- command = 'ffmpeg -loglevel 0 -i "' + path + '" ' + ffmpeg_args + ' -y "' + dest + '"'
- self.logger.logger.info(command)
- if not '--dry-run' in self.args:
- os.system(command)
- print(command)
-
-
-if __name__ == '__main__':
- t = TelemetaTranscode(sys.argv[1:])
- t.run()