コード例 #1
0
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)
コード例 #2
0
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   
コード例 #3
0
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
コード例 #4
0
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))
コード例 #5
0
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)