MCPcopy Create free account
hub / github.com/MediaArea/MediaInfoLib / ExternalMetadata

Function ExternalMetadata

Source/MediaInfo/OutputHelpers.cpp:436–471  ·  view source on GitHub ↗

---------------------------------------------------------------------------

Source from the content-addressed store, hash-verified

434
435//---------------------------------------------------------------------------
436bool ExternalMetadata(const Ztring& FileName, const Ztring& ExternalMetadata, const Ztring& ExternalMetaDataConfig, const ZtringList& Parents, const Ztring& PlaceHolder, Node* Main, Node* MI_Info)
437{
438 if (ExternalMetaDataConfig.empty()) // ExternalMetadata is used in export only if there is ExternalMetadata config (= else it is another format)
439 return true;
440
441 ZtringListList CSV;
442 CSV.Separator_Set(0, EOL);
443 CSV.Separator_Set(1, __T(";"));
444 CSV.Write(ExternalMetadata);
445
446 //Check if the CSV contains at least the header + one entry
447 if (CSV.size()<2)
448 {
449 MediaInfoLib::Config.Log_Send(0xC0, 0xFF, 0, "Invalid CSV for external metadata");
450 return false;
451 }
452
453 //Check if the file is present in the CSV
454 if (CSV.FindValue(FileName, 0, 0, 1).empty())
455 {
456 MediaInfoLib::Config.Log_Send(0xC0, 0xFF, 0, "File name not found in external metadata file");
457 return false;
458 }
459
460 //Parse XML template
461 XMLDocument Template;
462 if (Template.Parse(ExternalMetaDataConfig.To_UTF8().c_str()) != XML_SUCCESS)
463 {
464 MediaInfoLib::Config.Log_Send(0xC0, 0xFF, 0, "Invalid XML template for external metadata");
465 return false;
466 }
467
468 Parse_XML(Parents, PlaceHolder, Template.RootElement(), Main, &MI_Info, FileName, CSV);
469
470 return true;
471}
472
473//---------------------------------------------------------------------------
474#if defined(MEDIAINFO_EBUCORE_YES) || defined(MEDIAINFO_FIMS_YES) || defined(MEDIAINFO_MPEG7_YES)

Callers 2

TransformMethod · 0.85
TransformMethod · 0.85

Calls 7

Parse_XMLFunction · 0.85
emptyMethod · 0.45
WriteMethod · 0.45
sizeMethod · 0.45
Log_SendMethod · 0.45
ParseMethod · 0.45
c_strMethod · 0.45

Tested by

no test coverage detected