[Erp5-report] r45466 priscila.manhaes - in /erp5/trunk/utils/cloudooo.handler.ffmpeg/src/cl...

nobody at svn.erp5.org nobody at svn.erp5.org
Thu Apr 14 19:21:21 CEST 2011


Author: priscila.manhaes
Date: Thu Apr 14 19:21:21 2011
New Revision: 45466

URL: http://svn.erp5.org?rev=45466&view=rev
Log:
implemented setMetadata for ffmpeghandler

Modified:
    erp5/trunk/utils/cloudooo.handler.ffmpeg/src/cloudooo/handler/ffmpeg/handler.py
    erp5/trunk/utils/cloudooo.handler.ffmpeg/src/cloudooo/handler/ffmpeg/tests/testFFMPEGHandler.py
    erp5/trunk/utils/cloudooo.handler.ffmpeg/src/cloudooo/handler/ffmpeg/tests/testServer.py

Modified: erp5/trunk/utils/cloudooo.handler.ffmpeg/src/cloudooo/handler/ffmpeg/handler.py
URL: http://svn.erp5.org/erp5/trunk/utils/cloudooo.handler.ffmpeg/src/cloudooo/handler/ffmpeg/handler.py?rev=45466&r1=45465&r2=45466&view=diff
==============================================================================
--- erp5/trunk/utils/cloudooo.handler.ffmpeg/src/cloudooo/handler/ffmpeg/handler.py [utf8] (original)
+++ erp5/trunk/utils/cloudooo.handler.ffmpeg/src/cloudooo/handler/ffmpeg/handler.py [utf8] Thu Apr 14 19:21:21 2011
@@ -90,7 +90,7 @@ class Handler(object):
     for data in metadata:
       if len(data) != 0:
         key, value = data.split(':')
-        metadata_dict[key.strip()] = value.strip()
+        metadata_dict[key.strip().capitalize()] = value.strip()
     self.input.trash()
     return metadata_dict
 
@@ -99,5 +99,25 @@ class Handler(object):
     Keyword arguments:
     metadata -- expected an dictionary with metadata.
     """
-    raise NotImplementedError
-
+    output_url = mktemp(suffix=".%s" % self.input.source_format,
+                        dir=self.input.directory_name)
+    command = ["ffmpeg",
+               "-i",
+               self.input.getUrl(),
+               "-y",
+               output_url]
+    index = 3
+    for metadata in metadata_dict:
+      command.insert(index, "-metadata")
+      command.insert(index+1, "%s=%s"%(metadata, metadata_dict[metadata]))
+      index += 2
+    try:
+      stdout, stderr = Popen(command,
+                             stdout=PIPE,
+                             stderr=PIPE,
+                             close_fds=True,
+                             env=self.environment).communicate()
+      self.input.reload(output_url)
+      return self.input.getContent()
+    finally:
+      self.input.trash()

Modified: erp5/trunk/utils/cloudooo.handler.ffmpeg/src/cloudooo/handler/ffmpeg/tests/testFFMPEGHandler.py
URL: http://svn.erp5.org/erp5/trunk/utils/cloudooo.handler.ffmpeg/src/cloudooo/handler/ffmpeg/tests/testFFMPEGHandler.py?rev=45466&r1=45465&r2=45466&view=diff
==============================================================================
--- erp5/trunk/utils/cloudooo.handler.ffmpeg/src/cloudooo/handler/ffmpeg/tests/testFFMPEGHandler.py [utf8] (original)
+++ erp5/trunk/utils/cloudooo.handler.ffmpeg/src/cloudooo/handler/ffmpeg/tests/testFFMPEGHandler.py [utf8] Thu Apr 14 19:21:21 2011
@@ -30,29 +30,34 @@ from magic import Magic
 from cloudooo.handler.ffmpeg.handler import Handler
 from cloudooo.handler.tests.handlerTestCase import HandlerTestCase, make_suite
 
-file_detector = Magic(mime=True)
 
 class TestHandler(HandlerTestCase):
 
   def afterSetUp(self):
     self.data = open("./data/test.ogv").read()
-    kw = dict(env=dict(PATH=self.env_path))
-    self.input = Handler(self.tmp_url, self.data, "ogv", **kw)
+    self.kw = dict(env=dict(PATH=self.env_path))
+    self.input = Handler(self.tmp_url, self.data, "ogv", **self.kw)
+    self.file_detector = Magic(mime=True)
 
   def testConvertVideo(self):
     """Test coversion of video to another format"""
     output_data = self.input.convert("mpeg")
-    file_format = file_detector.from_buffer(output_data)
+    file_format = self.file_detector.from_buffer(output_data)
     self.assertEquals(file_format, 'video/mpeg')
 
   def testgetMetadata(self):
     """Test if metadata is extracted from"""
     output_metadata = self.input.getMetadata()
-    self.assertEquals(output_metadata, {'ENCODER': 'Lavf52.64.2'})
+    self.assertEquals(output_metadata, {'Encoder': 'Lavf52.64.2'})
 
   def testsetMetadata(self):
     """ Test if metadata are inserted correclty """
-    self.assertRaises(NotImplementedError, self.input.setMetadata)
+    metadata_dict = {"title": "Set Metadata Test", "creator": "cloudooo"}
+    output = self.input.setMetadata(metadata_dict)
+    handler = Handler(self.tmp_url, output, "ogv", **self.kw)
+    metadata = handler.getMetadata()
+    self.assertEquals(metadata["Title"], "Set Metadata Test")
+    self.assertEquals(metadata["Creator"], "cloudooo")
 
   def testConvertAudio(self):
     """Test coversion of audio to another format"""
@@ -60,7 +65,7 @@ class TestHandler(HandlerTestCase):
     kw = dict(env=dict(PATH=self.env_path))
     self.input = Handler(self.tmp_url, self.data, "ogg", **kw)
     output_data = self.input.convert("wav")
-    file_format = file_detector.from_buffer(output_data)
+    file_format = self.file_detector.from_buffer(output_data)
     # XXX this might expect 'audio/vnd.wave' but magic only got 'audio/x-wav'
     self.assertEquals(file_format, 'audio/x-wav')
 

Modified: erp5/trunk/utils/cloudooo.handler.ffmpeg/src/cloudooo/handler/ffmpeg/tests/testServer.py
URL: http://svn.erp5.org/erp5/trunk/utils/cloudooo.handler.ffmpeg/src/cloudooo/handler/ffmpeg/tests/testServer.py?rev=45466&r1=45465&r2=45466&view=diff
==============================================================================
--- erp5/trunk/utils/cloudooo.handler.ffmpeg/src/cloudooo/handler/ffmpeg/tests/testServer.py [utf8] (original)
+++ erp5/trunk/utils/cloudooo.handler.ffmpeg/src/cloudooo/handler/ffmpeg/tests/testServer.py [utf8] Thu Apr 14 19:21:21 2011
@@ -42,11 +42,11 @@ class TestServer(HandlerTestCase):
     """Creates a connection with cloudooo server"""
     self.proxy = ServerProxy("http://%s:%s/RPC2" % \
         (self.hostname, self.cloudooo_port), allow_none=True)
+    self.data = open(join('data', 'test.ogv'), 'r').read()
 
   def testConvertVideo(self):
     """Converts ogv video to mpeg format"""
-    data = open(join('data', 'test.ogv'), 'r').read()
-    video = self.proxy.convertFile(encodestring(data),
+    video = self.proxy.convertFile(encodestring(self.data),
                                       "ogv",
                                       "mpeg")
     mime = Magic(mime=True)
@@ -55,9 +55,17 @@ class TestServer(HandlerTestCase):
 
   def testGetMetadata(self):
     """test if metadata are extracted correctly"""
+    metadata = self.proxy.getFileMetadataItemList(encodestring(self.data), "ogv")
+    self.assertEquals(metadata["Encoder"], 'Lavf52.64.2')
 
   def testSetMetadata(self):
     """Test if metadata is inserted correctly"""
+    new_data = self.proxy.updateFileMetadata(encodestring(self.data),
+                                          "ogv",
+                                          {"title": "Server Set Metadata Test"})
+    metadata = self.proxy.getFileMetadataItemList(new_data, "ogv")
+    self.assertEquals(metadata["Encoder"], 'Lavf52.64.2')
+    self.assertEquals(metadata["Title"], 'Server Set Metadata Test')
 
 
 def test_suite():



More information about the Erp5-report mailing list