Exemplo n.º 1
0
    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)                          
Exemplo n.º 2
0
    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)
Exemplo n.º 3
0
    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']
        )
Exemplo n.º 5
0
 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)