def append_tar_media_xml_element(doc, filepath, domain, media_id): mediaElement = doc.createElement(domain) mediaElement.setAttribute('_id', media_id) mediaElement.setAttribute('md5', ltoUtil.get_md5_hash(filepath)) mediaElement.setAttribute('size', str(ltoUtil.get_filesize(filepath))) mediaElement.setAttribute('filename', ltoUtil.get_filename(filepath)) doc.documentElement.appendChild(mediaElement) par2TarElement = doc.createElement('par2Tar') par2TarElement.setAttribute('md5', ltoUtil.get_md5_hash(filepath+'.par2.tar')) par2TarElement.setAttribute('size', str(ltoUtil.get_filesize(filepath+'.par2.tar'))) par2TarElement.setAttribute('filename', ltoUtil.get_filename(filepath)+'.par2.tar') mediaElement.appendChild(par2TarElement)
def get_id_from_filename(filepath, domain, config): fn = ltoUtil.get_filename(filepath) id = string.lower(fn[:fn.rfind('.')]) if re.match('^[a-z]{1,3}-?[0-9]+$', id): alpha = re.search('^[a-z]+', id) alpha_index = alpha.end() num = re.search('[0-9]+$', id) num_index = num.start() alpha_part = id[:alpha_index] #This is to remove any leading zeros (which will prevent ids from matching) num_part = int(id[num_index:]) if num_part == 0: print 'Media filename cannot have a zero digit component.' print ltoUtil.get_script_name()+' script terminated.' sys.exit(2) #Insert hyphen if un-hyphenated id = alpha_part+'-'+str(num_part) if db_media_id_exists(domain, id, config): print 'The '+domain+' media id: '+id+' has already been used.' print ltoUtil.get_script_name()+' script terminated.' sys.exit(2) else: print 'Wrong format for media filename: '+fn print ltoUtil.get_script_name()+' script terminated.' sys.exit(2) return id
def get_autosplit(media_path): file = ltoUtil.get_filename(media_path) path = ltoUtil.get_path(media_path) extn = ltoUtil.get_file_extn(media_path) suffix = int(media_path[-6:-4]) next_suffix = '%02d' % (suffix +1) new_file = file[:-6]+next_suffix+'.'+extn new_path = path[:-2]+next_suffix new_media_path = new_path + '/' + new_file if os.path.exists(new_media_path): return True return False
def generate_par2_tar(config, new_filepath): par2_redundancy = config.getint('Par2', 'redundancy') par2_numfiles = config.getint('Par2', 'num_files') par2_memory = config.getint('Par2', 'memory') fn = ltoUtil.get_filename(new_filepath) path = ltoUtil.get_path(new_filepath) print 'Generating PAR2 files for '+fn+'\n' p = subprocess.Popen('par2 create -r'+str(par2_redundancy)+' -m'+str(par2_memory)+' -n'+str(par2_numfiles)+' '+new_filepath, shell=True) sts = os.waitpid(p.pid, 0) par2files = [] for f in os.listdir(path): if str(f).startswith(fn) and str(f).endswith('.par2'): par2files.append(f) par2filesstr = string.join(par2files, ' ') p = subprocess.Popen('tar -c --format='+ltoUtil.get_tar_format(config)+' -C '+path+' -f '+new_filepath+'.par2.tar '+par2filesstr, shell=True) sts = os.waitpid(p.pid, 0) for p in par2files: os.remove(os.path.join(path, p))
def generate_proxy(config, domain, filepath): proxy_dir = ltoUtil.get_proxy_dir(config) thumb_dir = ltoUtil.get_thumb_dir(config) proxy_suffix = 'proxy' thumb_suffix = 'thumb' if os.path.exists(proxy_dir+'/'+domain): if (domain =='image' or domain == 'video'): if os.path.exists(thumb_dir+'/'+domain): if (domain == 'video'): video_type = get_video_type(filepath) if video_type == 'DV_PAL' or video_type == 'DV_NTSC' or video_type == 'MPEG2_H-14': proxy_size = '384x288' thumb_size = '96x72' elif video_type == 'MPEG2_HL': proxy_size = '512x288' thumb_size = '128x72' fn = ltoUtil.get_filename(filepath) fn_proxy = fn[0:-4]+'_'+proxy_suffix+'.mp4' fn_thumb = fn[0:-4]+'_'+thumb_suffix+'.jpg' p = subprocess.Popen('ffmpeg -y -i '+filepath+' -pass 1 -vcodec libx264 -coder 1 -flags +loop -cmp +chroma -partitions -parti8x8-parti4x4-partp8x8-partp4x4-partb8x8 -me_method dia -subq 1 -me_range 16 -g 25 -keyint_min 25 -sc_threshold 40 -i_qfactor 0.71 -b_strategy 1 -qcomp 0.6 -qmin 10 -qmax 51 -qdiff 4 -bf 4 -refs 1 -directpred 3 -trellis 0 -flags2 -bpyramid-wpred-mixed_refs-dct8x8+fastpskip -s '+proxy_size+' -b 512k -bt 512k -threads 0 -f mp4 -an /dev/null && ffmpeg -y -i '+filepath+' -pass 2 -acodec libfaac -ar 44100 -ab 96k -vcodec libx264 -coder 1 -flags +loop -cmp +chroma -partitions +parti8x8+parti4x4+partp8x8+partb8x8 -me_method umh -subq 8 -me_range 16 -g 25 -keyint_min 25 -sc_threshold 40 -i_qfactor 0.71 -b_strategy 2 -qcomp 0.6 -qmin 10 -qmax 51 -qdiff 4 -bf 4 -refs 4 -directpred 3 -trellis 1 -flags2 +bpyramid+wpred+mixed_refs+dct8x8+fastpskip -s '+proxy_size+' -b 512k -bt 512k -g 25 -threads 0 -f mp4 '+proxy_dir+'/video/'+fn_proxy, shell=True) sts = os.waitpid(p.pid, 0) os.remove('ffmpeg2pass-0.log') os.remove('x264_2pass.log') p = subprocess.Popen('ffmpeg -y -i '+proxy_dir+'/video/'+fn_proxy+' -vcodec mjpeg -vframes 1 -an -f rawvideo -s '+thumb_size+' '+thumb_dir+'/video/'+fn_thumb, shell=True) sts = os.waitpid(p.pid, 0) elif (domain =='image'): orientation = get_orientation(filepath) file_type = ltoUtil.get_file_extn(filepath) if orientation in [0,1,2,3,4] and file_type == 'jpg': proxy_size = '1024x680' thumb_size = '128x85' elif orientation in [0,1,2,3,4] and file_type in ['nef', 'cr2']: proxy_size = '1024x680' thumb_size = '128x85' elif orientation in [5,6,7,8] and file_type == 'jpg': proxy_size = '1024x680' thumb_size = '128x85' #We need to do this since we are extracting the embedded image from the raw files - which has no EXIF data elif orientation in [5,6,7,8] and file_type in ['nef', 'cr2']: proxy_size = '680x1024' thumb_size = '85x128' fn = ltoUtil.get_filename(filepath) fn_proxy = fn[0:-4]+'_'+proxy_suffix+'.jpg' fn_thumb = fn[0:-4]+'_'+thumb_suffix+'.jpg' if string.lower(file_type) == 'jpg': p = subprocess.Popen('convert -thumbnail '+proxy_size+' -auto-orient -unsharp 0x.5 -quality 92 '+filepath+' '+proxy_dir+'/image/'+fn_proxy, shell=True) sts = os.waitpid(p.pid, 0) #Much faster to extract the embedded image from the RAW file instead of resizing elif string.lower(file_type) == 'nef' or string.lower(file_type) == 'cr2': p = subprocess.Popen('dcraw -ce '+filepath+' | convert -thumbnail '+proxy_size+' -auto-orient -unsharp 0x.5 -quality 92 - '+proxy_dir+'/image/'+fn_proxy, shell=True) sts = os.waitpid(p.pid, 0) p = subprocess.Popen('convert -thumbnail '+thumb_size+' -auto-orient '+proxy_dir+'/image/'+fn_proxy+' '+thumb_dir+'/image/'+fn_thumb, shell=True) sts = os.waitpid(p.pid, 0) else: print 'thumbnail directory '+thumb_dir+'/'+domain+' does not exist.' print ltoUtil.get_script_name()+' script terminated.' sys.exit(2) elif (domain =='audio'): fn = ltoUtil.get_filename(filepath) fn_proxy = fn[0:-4]+'_'+proxy_suffix+'.mp4' p = subprocess.Popen('ffmpeg -y -i '+filepath+' -acodec libfaac -ar 44100 -ab 96k -ac 1 -f mp4 '+proxy_dir+'/audio/'+fn_proxy, shell=True) sts = os.waitpid(p.pid, 0) else: print 'proxy directory '+proxy_dir+'/'+domain+' does not exist.' print ltoUtil.get_script_name()+' script terminated.' sys.exit(2)