Skip to content
Snippets Groups Projects
Commit 333450cc authored by Andreas Romeyke's avatar Andreas Romeyke
Browse files

- to avoid code dublettes and inconsistencies, getSupportedAttributeNames()...

- to avoid code dublettes and inconsistencies, getSupportedAttributeNames() uses xpath to extract attributeNames from XSD itself
- refactoring, extracted create_temp_xsd_file()
parent abe07172
No related branches found
No related tags found
No related merge requests found
......@@ -186,27 +186,7 @@ public class SLUBTechnicalMetadataExtractorMediaConchPlugin implements MDExtract
}
private void transform_mediainfo_output(File temp_media_outputfile, File temp_media_transformed_outputfile) throws Exception {
/* write xsd */
File temp_xsdfile = File.createTempFile("mediainfo_style", ".xsd");
InputStream stylestream = getClass().getResourceAsStream(TRANSFORMER_XSL);
if (stylestream == null) {
throw new Exception("stylestream not found!");
}
/*
OutputStream out = new FileOutputStream(temp_xsdfile);
int read = 0;
byte[] buffer = new byte[8192];
assert(stylestream != null);
stylestream.read( buffer );
while((read =stylestream.read( buffer)) != -1) {
out.write(buffer, 0, read);
}
out.flush();
out.close();
*/
Files.copy(stylestream, Path.of(String.valueOf(temp_xsdfile)), StandardCopyOption.REPLACE_EXISTING);
stylestream.close();
File temp_xsdfile = create_temp_xsd_file();
/* xslt transform */
String exec_xsltproc_string = xsltproc_binary_path + " -o " + temp_media_transformed_outputfile + " " + temp_xsdfile + " " + temp_media_outputfile;
System.out.println("executing: " + exec_xsltproc_string);
......@@ -224,6 +204,18 @@ public class SLUBTechnicalMetadataExtractorMediaConchPlugin implements MDExtract
}
}
private File create_temp_xsd_file() throws Exception {
/* write xsd */
File temp_xsdfile = File.createTempFile("mediainfo_style", ".xsd");
InputStream stylestream = getClass().getResourceAsStream(TRANSFORMER_XSL);
if (stylestream == null) {
throw new Exception("stylestream not found!");
}
Files.copy(stylestream, Path.of(String.valueOf(temp_xsdfile)), StandardCopyOption.REPLACE_EXISTING);
stylestream.close();
return temp_xsdfile;
}
private void extract_attributes_of_transformed_result(File temp_media_transformed_outputfile) throws Exception {
checkFileExists(String.valueOf(temp_media_transformed_outputfile));
XPathFactory xPathfactory = XPathFactory.newInstance();
......@@ -361,112 +353,25 @@ public class SLUBTechnicalMetadataExtractorMediaConchPlugin implements MDExtract
public List<String> getSupportedAttributeNames() {
//return new ArrayList<String>(attributes.keySet());
List<String> available = new ArrayList<>();
available.add("mediainfo.track.Audio.BitDepth");
available.add("mediainfo.track.Audio.BitRate");
available.add("mediainfo.track.Audio.BitRate_Mode");
available.add("mediainfo.track.Audio.Channels");
available.add("mediainfo.track.Audio.CodecID");
available.add("mediainfo.track.Audio.Commercial_Name");
available.add("mediainfo.track.Audio.Compression_Mode");
available.add("mediainfo.track.Audio.Default");
available.add("mediainfo.track.Audio.Duration");
available.add("mediainfo.track.Audio.encoded_library");
available.add("mediainfo.track.Audio.Forced");
available.add("mediainfo.track.Audio.Format");
available.add("mediainfo.track.Audio.Format_Profile");
available.add("mediainfo.track.Audio.Format_Settings_Wrapping");
available.add("mediainfo.track.Audio.Format_Settings_Sign");
available.add("mediainfo.track.Audio.Format_Version");
available.add("mediainfo.track.Audio.FrameRate");
available.add("mediainfo.track.Audio.ID");
available.add("mediainfo.track.Audio.SamplingRate");
available.add("mediainfo.track.Audio.ServiceKind");
available.add("mediainfo.track.Audio.StreamSize");
available.add("mediainfo.track.Audio.Title");
available.add("mediainfo.track.General.AudioCount");
available.add("mediainfo.track.General.CodecID");
available.add("mediainfo.track.General.CompleteName");
available.add("mediainfo.track.General.Description");
available.add("mediainfo.track.General.Duration");
available.add("mediainfo.track.General.Encoded_Application");
available.add("mediainfo.track.General.Encoded_Application_CompanyName");
available.add("mediainfo.track.General.Encoded_Application_Name");
available.add("mediainfo.track.General.Encoded_Application_Version");
available.add("mediainfo.track.General.Encoded_Date");
available.add("mediainfo.track.General.Encoded_Library");
available.add("mediainfo.track.General.Encoded_Library_Name");
available.add("mediainfo.track.General.Encoded_Library_Version");
available.add("mediainfo.track.General.extra.ErrorDetectionType");
available.add("mediainfo.track.General.extra.IsTruncated");
available.add("mediainfo.track.General.extra.bext_Present");
available.add("mediainfo.track.General.FileSize");
available.add("mediainfo.track.General.Format");
available.add("mediainfo.track.General.Format_Profile");
available.add("mediainfo.track.General.Format_Settings");
available.add("mediainfo.track.General.Format_Version");
available.add("mediainfo.track.General.IsStreamable");
available.add("mediainfo.track.General.MenuCount");
available.add("mediainfo.track.General.OtherCount");
available.add("mediainfo.track.General.OverallBitRate");
available.add("mediainfo.track.General.OverallBitRateMode");
available.add("mediainfo.track.General.PackageName");
available.add("mediainfo.track.General.Producer");
available.add("mediainfo.track.General.StreamSize");
available.add("mediainfo.track.General.TextCount");
available.add("mediainfo.track.General.Title");
available.add("mediainfo.track.General.UniqueID");
available.add("mediainfo.track.General.VideoCount");
available.add("mediainfo.track.Image.BitDepth");
available.add("mediainfo.track.Image.ColorSpace");
available.add("mediainfo.track.Image.colour_primaries");
available.add("mediainfo.track.Image.Compression_Mode");
available.add("mediainfo.track.Image.DisplayAspectRatio");
available.add("mediainfo.track.Image.Encoded_Date");
available.add("mediainfo.track.Image.Encoded_Library");
available.add("mediainfo.track.Image.Format");
available.add("mediainfo.track.Image.Format_Version");
available.add("mediainfo.track.Image.FrameRate");
available.add("mediainfo.track.Image.Height");
available.add("mediainfo.track.Image.StreamSize");
available.add("mediainfo.track.Image.transfer_characteristics");
available.add("mediainfo.track.Image.Width");
available.add("mediainfo.track.Video.BitDepth");
available.add("mediainfo.track.Video.BitRate");
available.add("mediainfo.track.Video.BitRate_Mode");
available.add("mediainfo.track.Video.ChromaSubsampling");
available.add("mediainfo.track.Video.CodecID");
available.add("mediainfo.track.Video.ColorSpace");
available.add("mediainfo.track.Video.BitsPixel_Frame");
available.add("mediainfo.track.Video.Compression_Mode");
available.add("mediainfo.track.Video.Default");
available.add("mediainfo.track.Video.DisplayAspectRatio");
available.add("mediainfo.track.Video.Duration");
available.add("mediainfo.track.Video.Encoded_Library");
available.add("mediainfo.track.Video.extra.coder_type");
available.add("mediainfo.track.Video.extra.ErrorDetectionType");
available.add("mediainfo.track.Video.extra.MaxSlicesCount");
available.add("mediainfo.track.Video.extra.OriginalSourceMedium");
available.add("mediainfo.track.Video.Forced");
available.add("mediainfo.track.Video.Format");
available.add("mediainfo.track.Video.Format_Profile");
available.add("mediainfo.track.Video.Format_Settings_GOP");
available.add("mediainfo.track.Video.Format_Settings_Wrapping");
available.add("mediainfo.track.Video.Format_Version");
available.add("mediainfo.track.Video.FrameCount");
available.add("mediainfo.track.Video.FrameRate");
available.add("mediainfo.track.Video.Height");
available.add("mediainfo.track.Video.ID");
available.add("mediainfo.track.Video.PixelAspectRatio");
available.add("mediainfo.track.Video.PixelAspectRatioOriginal");
available.add("mediainfo.track.Video.ScanOrder");
available.add("mediainfo.track.Video.ScanType");
available.add("mediainfo.track.Video.Standard");
available.add("mediainfo.track.Video.StreamSize");
available.add("mediainfo.track.Video.TimeCode_FirstFrame");
available.add("mediainfo.track.Video.TimeCode_Source");
available.add("mediainfo.track.Video.Title");
available.add("mediainfo.track.Video.transfer_characteristics");
available.add("mediainfo.track.Video.Width");
try {
XPathFactory xPathfactory = XPathFactory.newInstance();
XPath xpath = xPathfactory.newXPath();
XPathExpression expr = xpath.compile("//*[local-name()='properties']/*[local-name()='property']");
//XPathExpression expr = xpath.compile("//text()");
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
InputStream stylestream = getClass().getResourceAsStream(TRANSFORMER_XSL);
Document temp_property_list_xml = db.parse(stylestream);
NodeList nl = (NodeList) expr.evaluate(temp_property_list_xml, XPathConstants.NODESET);
int len = nl.getLength();
for (int i = 0; i < len; i++) {
Node node = nl.item(i);
String value = node.getTextContent();
available.add(value);
}
} catch (Exception e) {
System.out.println("error in getSupportedAttributeNaes, " + e.getMessage());
}
return available;
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment