[SCM] morituri/master: * examples/readtoc.py: Extract and print TOC.

js at users.alioth.debian.org js at users.alioth.debian.org
Sun Oct 19 20:08:49 UTC 2014


The following commit has been merged in the master branch:
commit f8b76ae95cb2c7105f2e52f2ea848f254a781926
Author: Thomas Vander Stichele <thomas (at) apestaart (dot) org>
Date:   Mon Apr 27 23:24:24 2009 +0000

    	* examples/readtoc.py:
    	  Extract and print TOC.

diff --git a/ChangeLog b/ChangeLog
index 78e0206..33da34d 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,10 @@
 2009-04-28  Thomas Vander Stichele  <thomas at apestaart dot org>
 
+	* examples/readtoc.py:
+	  Extract and print TOC.
+
+2009-04-28  Thomas Vander Stichele  <thomas at apestaart dot org>
+
 	* morituri/test/test_image_toc.py (added):
 	* morituri/image/toc.py (added):
 	  Add first stab at .toc parsing.
diff --git a/examples/readtoc.py b/examples/readtoc.py
index 898a7c1..791268b 100644
--- a/examples/readtoc.py
+++ b/examples/readtoc.py
@@ -7,6 +7,7 @@ import subprocess
 import tempfile
 
 from morituri.common import task
+from morituri.image import toc
 from morituri.extern import asyncsub
 
 states = ['START', 'TRACK', 'LEADOUT', 'DONE']
@@ -48,6 +49,9 @@ class ReadTOCTask(task.Task):
         self._frames = None # number of frames
         self._starts = [] # start of each track, in frames
         self._track = None # which track are we analyzing?
+        self._toc = None # path to temporary .toc file
+
+        self.toc = None # result
 
     def start(self, runner):
         task.Task.start(self, runner)
@@ -68,17 +72,8 @@ class ReadTOCTask(task.Task):
     def _read(self, runner):
         ret = self._popen.recv_err()
         if not ret:
-            # FIXME: handle done
-            self.setProgress(1.0)
-            retcode = self._popen.wait()
-            if retcode != 0:
-                if self._errors:
-                    print "\n".join(self._errors)
-                else:
-                    print 'ERROR: exit code %r' % retcode
-            else:
-                print 'done'
-            self.stop()
+            # could be finished now
+            self.runner.schedule(1.0, self._poll, runner)
             return
 
         self._buffer += ret
@@ -114,6 +109,28 @@ class ReadTOCTask(task.Task):
 
         self.runner.schedule(1.0, self._read, runner)
 
+    def _poll(self, runner):
+        if self._popen.poll() is None:
+            self.runner.schedule(1.0, self._poll, runner)
+            return
+
+        self._done()
+
+    def _done(self):
+            self.setProgress(1.0)
+            if self._popen.returncode != 0:
+                if self._errors:
+                    print "\n".join(self._errors)
+                else:
+                    print 'ERROR: exit code %r' % self._popen.returncode
+            else:
+                self.toc = toc.TOC(self._toc)
+                self.toc.parse()
+                os.unlink(self._toc)
+                
+            self.stop()
+            return
+
     def _parse(self, lines):
         for line in lines:
             #print 'parsing', len(line), line
@@ -157,5 +174,10 @@ def main():
     runner = task.SyncRunner()
     t = ReadTOCTask()
     runner.run(t)
+    print 'runner done', t.toc
+
+    for track in t.toc.tracks:
+        print track._indexes
+        
 
 main()

-- 
morituri packaging



More information about the pkg-multimedia-commits mailing list