예제 #1
0
def input_file_metadata(ingestLogBoilerplate, processingVars):
    pymmFunctions.ingest_log(
        # message
        "The input file MD5 hash is: " +
        makeMetadata.hash_file(processingVars['inputPath']),
        # status
        'OK',
        # ingest boilerplate
        **ingestLogBoilerplate)

    mediainfo = makeMetadata.get_mediainfo_report(
        processingVars['inputPath'], processingVars['packageMetadataObjects'])
    if mediainfo:
        pymmFunctions.ingest_log(
            # message
            "mediainfo XML report for input file written to metadata directory for package.",
            # status
            'OK',
            # ingest boilerplate
            **ingestLogBoilerplate)

    frameMD5 = makeMetadata.make_frame_md5(
        processingVars['inputPath'], processingVars['packageMetadataObjects'])
    if frameMD5 != False:
        pymmFunctions.ingest_log(
            # message
            "frameMD5 report for input file written to metadata directory for package",
            # status
            "OK",
            # ingest boilerplate
            **ingestLogBoilerplate)
예제 #2
0
def get_profiles(input_list):
    # BUILD A DICT OF PROFILES TO COMPARE FOR CONCATENATION
    print("*" * 100)
    profiles = {}
    for sourceFile in input_list:
        profiles[sourceFile] = {'video': '', 'audio': ''}
        videoProfile, audioProfile = makeMetadata.get_track_profiles(
            makeMetadata.get_mediainfo_report(sourceFile, '', _JSON=True))
        profiles[sourceFile]['video'] = json.loads(videoProfile)
        profiles[sourceFile]['audio'] = json.loads(audioProfile)

    print(profiles)
    return profiles
예제 #3
0
def get_file_metadata(CurrentIngest, objectCategoryDetail=None):
    _object = CurrentIngest.currentTargetObject
    inputPath = _object.inputPath
    basename = os.path.basename(inputPath)
    mdDest = _object.metadataDirectory

    mediainfoPath = makeMetadata.get_mediainfo_report(inputPath,
                                                      mdDest,
                                                      _JSON=None,
                                                      altFileName=basename)
    if os.path.isfile(mediainfoPath):
        event = 'metadata extraction'
        outcome = ("mediainfo XML report for input file "
                   "written to metadata directory for package.")
        CurrentIngest.caller = '`mediainfo --Output=XML`'
        loggers.short_log(CurrentIngest, event, outcome, status='OK')
        CurrentIngest.caller = None
        _object.mediainfoPath = mediainfoPath
    else:
        event = 'metadata extraction'
        outcome = ("Could/did not mediainfo XML report "
                   " for input file to metadata directory for package.")
        CurrentIngest.caller = '`mediainfo --Output=XML`'
        loggers.short_log(CurrentIngest, event, outcome, status='FAIL')

    if not objectCategoryDetail == 'access file':
        # don't bother calculating frame md5 for derivs....
        frameMD5 = makeMetadata.make_frame_md5(inputPath,
                                               _object.metadataDirectory)
        if frameMD5 != False:
            event = 'message digest calculation'
            outcome = ("frameMD5 report for input file "
                       "written to metadata directory for package")
            CurrentIngest.caller = \
             CurrentIngest.ProcessArguments.ffmpegVersion\
             +' with option `-f frameMD5`'
            loggers.short_log(CurrentIngest, event, outcome, status='OK')
        else:
            event = 'message digest calculation'
            outcome = ("Could/did not write frameMD5 report "
                       "for input file to metadata directory for package")
            CurrentIngest.caller = \
             CurrentIngest.ProcessArguments.ffmpegVersion\
             +' with option `-f frameMD5`'
            loggers.short_log(CurrentIngest, event, outcome, status='FAIL')
        CurrentIngest.caller = None

    return mediainfoPath
예제 #4
0
def is_dpx_sequence(inputPath):
    '''
	run mediainfo on the 'dpx' folder
	if there's anything other than dpx files in there
	the result will not parse as json and it indicates
	noncompliance with expected structure
	(PS-this is a hack)
	'''
    _is_dpx_av = False
    try:
        mediainfo = makeMetadata.get_mediainfo_report(inputPath,
                                                      '',
                                                      _JSON=True)
        mediainfo = json.loads(mediainfo)
    except:
        _is_dpx_av = False
    if mediainfo:
        _is_dpx_av = True

    return _is_dpx_av
예제 #5
0
def make_derivs(processingVars):
    '''
	Make derivatives based on options declared in config...
	'''
    inputPath = processingVars['inputPath']
    packageObjectDir = processingVars['packageObjectDir']
    packageLogDir = processingVars['packageLogDir']
    packageMetadataObjects = processingVars['packageMetadataObjects']
    makeProres = processingVars['makeProres']
    ingestType = processingVars['ingestType']

    # we'll always output a resourcespace access file for video ingests,
    # so init the derivtypes list with `resourcespace`
    if ingestType in ('film scan', 'video transfer'):
        derivTypes = ['resourcespace']
    deliveredDerivPaths = {}

    if pymmFunctions.boolean_answer(
            config['deriv delivery options']['proresHQ']):
        derivTypes.append('proresHQ')
    elif makeProres == True:
        derivTypes.append('proresHQ')
    else:
        pass

    for derivType in derivTypes:
        sys.argv = [
            '', '-i' + inputPath, '-o' + packageObjectDir, '-d' + derivType,
            '-r' + packageLogDir
        ]
        deliveredDeriv = makeDerivs.main()
        deliveredDerivPaths[derivType] = deliveredDeriv

    for key, value in deliveredDerivPaths.items():
        mdDest = os.path.join(packageMetadataObjects, key)
        if not os.path.isdir(mdDest):
            os.mkdir(mdDest)
        mediainfo = makeMetadata.get_mediainfo_report(value, mdDest)