def write_xml(self, rewrite=False): # A movie element is required by this library if "movie" not in self.D_ams: raise MissingElement("Package does not specify a movie element") # Over-write the given XML values with the ones determined by scanning # the video if needed #if rewrite: #self.check_files() # Root element doctype = b'<!DOCTYPE ADI SYSTEM "ADI.DTD">' ADI = etree.Element("ADI") # Package asset package_Metadata = etree.SubElement(ADI, "Metadata") package_AMS = etree.SubElement(package_Metadata, "AMS") for key, value in sorted( self.D_ams["package"].items(), key=lambda x: x[0] ): package_AMS.set(key, value) self._write_App_Data("package", package_Metadata) # Title asset title_Asset = etree.SubElement(ADI, "Asset") title_Metadata = etree.SubElement(title_Asset, "Metadata") title_AMS = etree.SubElement(title_Metadata, "AMS") for key, value in sorted( self.D_ams["title"].items(), key=lambda x: x[0] ): title_AMS.set(key, value) self._write_App_Data("title", title_Metadata) # Asset elements for ae_type in ("movie", "preview", "poster", "box cover"): if ae_type not in self.D_ams: continue ae_Asset = etree.SubElement(title_Asset, "Asset") ae_Metadata = etree.SubElement(ae_Asset, "Metadata") # AMS section ae_AMS = etree.SubElement(ae_Metadata, "AMS") for key, value in sorted( self.D_ams[ae_type].items(), key=lambda x: x[0] ): ae_AMS.set(key, value) self._write_App_Data(ae_type, ae_Metadata) # Content element, if it is present if ae_type in self.D_content: ae_Content = etree.SubElement(ae_Asset, "Content") ae_Content.set("Value", self.D_content[ae_type]) return tobytes(doctype, ADI)
def write_xml(self, rewrite=False): # A movie element is required by this library if "movie" not in self.D_ams: raise MissingElement("Package does not specify a movie element") # Over-write the given XML values with the ones determined by scanning # the video if needed if rewrite: self.check_files() # Root element doctype = b'<!DOCTYPE ADI SYSTEM "ADI.DTD">' ADI = etree.Element("ADI") # Package asset package_Metadata = etree.SubElement(ADI, "Metadata") package_AMS = etree.SubElement(package_Metadata, "AMS") for key, value in sorted(self.D_ams["package"].items(), key=lambda x: x[0]): package_AMS.set(key, value) self._write_App_Data("package", package_Metadata) # Title asset title_Asset = etree.SubElement(ADI, "Asset") title_Metadata = etree.SubElement(title_Asset, "Metadata") title_AMS = etree.SubElement(title_Metadata, "AMS") for key, value in sorted(self.D_ams["title"].items(), key=lambda x: x[0]): title_AMS.set(key, value) self._write_App_Data("title", title_Metadata) # Asset elements for ae_type in ("movie", "preview", "poster", "box cover"): if ae_type not in self.D_ams: continue ae_Asset = etree.SubElement(title_Asset, "Asset") ae_Metadata = etree.SubElement(ae_Asset, "Metadata") # AMS section ae_AMS = etree.SubElement(ae_Metadata, "AMS") for key, value in sorted(self.D_ams[ae_type].items(), key=lambda x: x[0]): ae_AMS.set(key, value) self._write_App_Data(ae_type, ae_Metadata) # Content element, if it is present if ae_type in self.D_content: ae_Content = etree.SubElement(ae_Asset, "Content") ae_Content.set("Value", self.D_content[ae_type]) return tobytes(doctype, ADI)
def test_custom_template(self): # Make a custom template file tree = etree.parse(default_template_path) doctype = b'<!DOCTYPE ADI SYSTEM "ADI.DTD">' ADI = tree.getroot() title_metadata = ADI.find("Asset").find("Metadata") for value in ("Scary", "Warning"): App_Data = etree.SubElement(title_metadata, "App_Data") App_Data.set("App", "MOD") App_Data.set("Name", "Advisories") App_Data.set("Value", value) template_path = join(self.temp_dir, "mytemplate.xml") with open(template_path, "wb") as outfile: outfile.write(tobytes(doctype, ADI)) # Ensure that the templates values are used vod_package = generate_metadata(reference_mp4, self.vod_config, template_path) self.assertEqual(vod_package.D_app["title"]["Advisories"], ["Scary", "Warning"])
def test_custom_template(self): # Make a custom template file tree = etree.parse(default_template_path) doctype = b'<!DOCTYPE ADI SYSTEM "ADI.DTD">' ADI = tree.getroot() title_metadata = ADI.find('Asset').find('Metadata') for value in ('Scary', 'Warning'): App_Data = etree.SubElement(title_metadata, "App_Data") App_Data.set("App", "MOD") App_Data.set("Name", "Advisories") App_Data.set("Value", value) template_path = join(self.temp_dir, 'mytemplate.xml') with open(template_path, 'wb') as outfile: outfile.write(tobytes(doctype, ADI)) # Ensure that the templates values are used vod_package = generate_metadata( reference_mp4, self.vod_config, template_path ) self.assertEqual( vod_package.D_app['title']['Advisories'], ['Scary', 'Warning'] )
def test_tobytes(self): actual = tobytes(b'<!DOCTYPE ADI SYSTEM "ADI.DTD">', self.zero) expected = b"".join(self.expected_lines) self.assertEqual(actual, expected)
def test_tobytes(self): actual = tobytes(b'<!DOCTYPE ADI SYSTEM "ADI.DTD">', self.zero) expected = b''.join(self.expected_lines) self.assertEqual(actual, expected)