Exemple #1
0
 def testGDynamicMethods(self):
     log.setLevel(llG)
     _log.info("------- Dynamic methods test --------")
     rmm = RichMetadataGenerator.getInstance()
     meta = rmm.getRichMetadata()
     meta.setProductionLocation("SI").setLanguage("Slovenian").setOriginator("JSI")
     meta.setCaptionLanguage("SI").setGenre("Code").setPublisher("p2p-next")
     meta.setMinimumAge("3").setProductionDate("2010-8-16").setCaptionLanguage("EN")
     meta.setReleaseDate("2010-8-17").setTitleSeriesTitle("P2P-Next code")
     meta.setTitleMain("Rich Metadata implementation")
     meta.setTitleEpisodeTitle("Rich Metadata v" + __revision__)
     meta.setDuration("0.75MM").setHorizontalSize("2").setVerticalSize("cca. 1300")
     meta.setVideoCoding("Generated").setAudioCoding("Manual").setFrameRate("1")
     meta.setNumOfChannels("2").setFileSize("cca. 56k").setBitRate("75")
     meta.setAspectRatio("Substantial")
     meta.setSynopsis("Initial study of RichMetadata API according to the P2P-Next project design")
     xml_tva = rmm.build(meta)
     _log.debug(rmm.prettyPrint(xml_tva))
     xml_mpeg7 = rmm.build(meta, metadata.TAG_MPEG7)
     _log.debug(rmm.prettyPrint(xml_mpeg7))
     self.crossBuildsCompareXML(xml_tva, xml_mpeg7)
     for m in metadata.METADATA_SETS:
         meta = rmm.getRichMetadata(None, m)
         out = ""
         apimethods = meta.getAPIMethods()
         apimethods.sort()
         for method in apimethods:
             out += method + ", "
         out = out.strip().rstrip(",")
         _log.debug(m.capitalize() + " metadata set current API methods: " + out)
Exemple #2
0
 def testIOptionalMetadata(self):
     log.setLevel(llI)
     _log.info("------- Optional metadata test --------")
     rmg = RichMetadataGenerator.getInstance()
     rm_tva_xml = dict()
     rm_mpeg7_xml = dict()
     mmap = self.metaMap()
     _log.debug("+ get RichMetadata instance")
     for k, v in mmap.items():
         _log.debug("\n" + v.toString())
     _log.debug("+ RichMetadata instance to XML")
     for k, v in mmap.items():
         xml = rmg.build(v)
         rm_tva_xml["tva_" + k] = xml
         _log.debug(rmg.prettyPrint(xml))
         xml = rmg.build(v, metadata.TAG_MPEG7)
         rm_mpeg7_xml["mpeg7_" + k] = xml
         _log.debug(rmg.prettyPrint(xml))
     _log.debug("+ XML back to RichMetadata instance")
     for k, v in rm_tva_xml.items():
         _log.debug("++ " + k + " to meta")
         m = rmg.getRichMetadata(v)
         orig = k.split("_")[1]
         self.metadataCrossCompare(mmap[orig], m)
     for k, v in rm_mpeg7_xml.items():
         _log.debug("++ " + k + " to meta")
         m = rmg.getRichMetadata(v)
         orig = k.split("_")[1]
         self.metadataCrossCompare(mmap[orig], m)
     _log.debug("+ RichMetadata instance TVA cross to MPEG7 XML")
     for k, v in mmap.items():
         xml_tva = rmg.build(v)
         xml_mpeg7 = rmg.build(v, metadata.TAG_MPEG7)
         self.crossBuildsCompareXML(xml_tva, xml_mpeg7)
Exemple #3
0
 def testCHelper(self):
     log.setLevel(llC)
     _log.info("------- Helper test --------")
     a = "{kuku}lala"
     helper = metadata.HELPER[metadata.GET_TAG]
     self.assertEqual(helper(a), "lala")
     helper = metadata.HELPER[metadata.SPLIT_TAG]
     self.assertEqual(helper(a), ["kuku", "lala"])
     e = Element('test', {'{a}b':'c','{d12}d':'{e}[]','{d?"?E#}f':'{}g'})
     helper = metadata.HELPER[metadata.SPLIT_ATTRIBS]
     res = helper(e)
     for k, v in e.attrib.items():
         t = k.split("}")[1]
         self.assertEqual(v,res[t])
     e.text = "    test\nlala    "
     helper = metadata.HELPER[metadata.GET_TEXT]
     self.assertEqual(helper(e), "    test\nlala    ")
     e.text = "    \n    "
     self.assertEqual(helper(e), "")
     e.text = ""
     c = SubElement(e, metadata.TAG_NAME)
     c.text = "This text describes the parent"
     helper = metadata.HELPER[metadata.TAG_SUPPRESS]
     self.assertEqual(helper(c, e), ('test', 'This text describes the parent'))
     inputData = StringIO("<root><Welookfor><Name>data</Name></Welookfor></root>")
     events = ("start", "end")
     iterator = iterparse(inputData, events=events)
     for event, elem in iterator:
         if event == "end":
             if elem.tag == "Name":
                 self.assertEqual(helper(elem, iterator.next()[1]), ('Welookfor', 'data'))
Exemple #4
0
 def testALearn(self):
     log.setLevel(llA)
     _log.info("------- Learn test --------")
     rmm = RichMetadataGenerator.getInstance()
     for m in rmm.knownMasters():
         master = rmm.getMaster(m)
         _log.debug("Learned from master: %s, %s", master.formatType, master.metadataType)
         _log.debug("\n" + master.root.toString())
Exemple #5
0
 def testECrossBuilds(self, tva_in=None, mpeg7_in=None):
     log.setLevel(llE)
     _log.info("------- Cross build --------")
     rmg = RichMetadataGenerator.getInstance()
     tva_xml = rmg.build(self.getMetaCore())
     mpeg7_xml = rmg.build(self.getMetaCore(), metadata.TAG_MPEG7)
     _log.debug(rmg.prettyPrint(tva_xml))
     _log.debug(rmg.prettyPrint(mpeg7_xml))
     self.crossBuildsCompareXML(tva_xml, mpeg7_xml)
Exemple #6
0
 def testDBuild(self):
     log.setLevel(llD)
     _log.info("------- Build test --------")
     rmm = RichMetadataGenerator.getInstance()
     tva = rmm.getRichMetadata(metadata.LEARN_BASE_CORE[metadata.TAG_TVA_MAIN])
     xml_tva = rmm.build(tva)
     _log.debug(rmm.prettyPrint(xml_tva))
     mpeg7 = rmm.getRichMetadata(metadata.LEARN_BASE_CORE[metadata.TAG_MPEG7])
     xml_mpeg7 = rmm.build(mpeg7, metadata.TAG_MPEG7)
     _log.debug(rmm.prettyPrint(xml_mpeg7))
Exemple #7
0
 def testBGetMetadata(self):
     log.setLevel(llB)
     _log.info("------- Get metadata --------")
     rmm = RichMetadataGenerator.getInstance()
     tva = rmm.getRichMetadata(metadata.LEARN_BASE_CORE[metadata.TAG_TVA_MAIN])
     _log.debug("\n" + tva.toString())
     mpeg7 = rmm.getRichMetadata(metadata.LEARN_BASE_CORE[metadata.TAG_MPEG7], metadata.TAG_MPEG7)
     _log.debug("\n" + mpeg7.toString())
     for k in tva.core:
         self.assertTrue(mpeg7.core.has_key(k))
     for k in tva.core:
         _tvaExists = False
         _mpeg7Exists = False
         if getattr(tva, k):
             _tvaExists = True
         if getattr(mpeg7, k):
             _mpeg7Exists = True
         if _tvaExists != _mpeg7Exists:
             _log.warn("Offending core key %s, TVA = %s, MPEG7 = %s", k, _tvaExists, _mpeg7Exists)
Exemple #8
0
 def testHSparseMetadata(self):
     log.setLevel(llH)
     _log.info("------- Sparse metadata test --------")
     rmm = RichMetadataGenerator.getInstance()
     meta = rmm.getRichMetadata()
     meta.setProductionLocation("SI").setLanguage("Slovenian").setOriginator("JSI")
     xml_tva = rmm.build(meta)
     xml_mpeg7 = rmm.build(meta, metadata.TAG_MPEG7)
     _log.debug(rmm.prettyPrint(xml_tva))
     _log.debug(rmm.prettyPrint(xml_mpeg7))
     self.crossBuildsCompareXML(xml_tva, xml_mpeg7)
     meta2 = rmm.getRichMetadata()
     meta2.setTitleMain("Rich Metadata implementation")
     meta2.setNumOfChannels("2").setFileSize("cca. 56k").setBitRate("75")
     meta2.setHorizontalSize("2").setVerticalSize("cca. 1300")
     xml_tva2 = rmm.build(meta2)
     _log.debug(rmm.prettyPrint(xml_tva2))
     xml_mpeg7_2 = rmm.build(meta2, metadata.TAG_MPEG7)
     _log.debug(rmm.prettyPrint(xml_mpeg7_2))
     self.crossBuildsCompareXML(xml_tva2, xml_mpeg7_2)
Exemple #9
0
 def testJDIDMetadata(self):
     log.setLevel(llJ)
     _log.info("------- DID metadata test --------")
     rmg = RichMetadataGenerator.getInstance()
     _rm = dict()
     _log.debug("+ Get DID RichMetadata instances")
     for k, v in self.didMap().items():
         _rm[k] = v
         _log.debug("\n" + v.toString())
     richm = list()
     richm.append(_rm["base"])
     richm.append(_rm["additional"])
     _log.debug("+ RichMetadata instance DID to XML")
     didxml = list()
     for m in richm:
         xml = rmg.build(m)
         didxml.append(xml)
         _log.debug(rmg.prettyPrint(xml))
     _log.debug("+ DID XML back to RichMetadata instance ")
     i = 0
     for v in didxml:
         m = rmg.getRichMetadata(v)
         self.metadataCrossCompare(richm[i], m)
         i += 1
Exemple #10
0
import os
import sys
from optparse import OptionParser, OptionGroup

from JSI.RichMetadata.RichMetadata import RichMetadataGenerator, __revision__
from JSI.RichMetadata.conf import metadata
from JSI.RichMetadata.utils import log

_log = log.getLog('metagen')
log.setLevel(log.ERROR)

class MetaGen(object):

    def __init__(self):
        self.rmm = RichMetadataGenerator.getInstance()
        self.parser = None
        self.options = None
        self.metadataType = None
        self.meta = None
        self.setValue = False

    def run(self):
        """
        Runs the metagen tool and returns generated rich metadata on std out
        """
        if options.payments:
            self.metadataType = metadata.METADATA_PAYMENT
        if options.advertising:
            self.metadataType = metadata.METADATA_ADVERTISING
        if options.scalability:
            self.metadataType = metadata.METADATA_SCALABILITY
Exemple #11
0
 def setUp(self):
     log.setLevel(loglevel)
Exemple #12
0
from xml.etree.ElementTree import Element, SubElement, iterparse
import unittest
from StringIO import StringIO

from JSI.RichMetadata.RichMetadata import RichMetadataGenerator, __revision__
from JSI.RichMetadata.conf import metadata
from JSI.RichMetadata.utils import log
from JSI.RichMetadata.utils.TimeSeries import StatisticTimeSeries

loglevel = log.INFO
runspeed = True

_log = log.getLog('RichMetadataTest')
log.setLevel(loglevel)

# For development purposes
llA = loglevel
llB = loglevel
llC = loglevel
llD = loglevel
llE = loglevel
llF = loglevel
llG = loglevel
llH = loglevel
llI = loglevel
llJ = loglevel

class RichMetadataTest(unittest.TestCase):
    """ 
    RichMetadata testing framework 
    """
Exemple #13
0
from xml.etree.cElementTree import Element, SubElement, iterparse, tostring
#from xml.etree.ElementTree import Element, SubElement, iterparse, tostring
from os import path
from threading import RLock
from cStringIO import StringIO

from JSI.RichMetadata.conf import metadata
from JSI.RichMetadata.utils import log

__author__ = 'D. Gabrijelcic ([email protected])'
__revision__ = '0.35'
__all__ = ['RichMetadataGenerator', '__revision__']

_log = log.getLog('RichMetadata')
log.setLevel(log.INFO, "RichMetadata")

class RichMetadataGenerator(object):

    __single = None
    __lock = RLock()

    def __init__(self):
        if RichMetadataGenerator.__single:
            raise RuntimeError, "RichMetadataGenerator is Singleton"
        RichMetadataGenerator.__single = self
        self.knownTypes = metadata.BASE_FORMAT_TYPES
        # Learn bases
        self.learnBase = metadata.LEARN_BASE_CORE
        self.learnBaseOptional = metadata.LEARN_BASE_OPTIONAL
        self.master = dict()
        # Tag sets