| #!/usr/bin/env python | |
| # -*- Mode: Python -*- | |
| # vi:si:et:sw=4:sts=4:ts=4 | |
| # gstfile.py | |
| # (c) 2005 Edward Hervey <edward at fluendo dot com> | |
| # Discovers and prints out multimedia information of files | |
| # This example shows how to use gst-python: | |
| # _ in an object-oriented way (Discoverer class) | |
| # _ subclassing a gst.Pipeline | |
| # _ and overidding existing methods (do_iterate()) | |
| import os | |
| import sys | |
| import gobject | |
| gobject.threads_init() | |
| import pygst | |
| pygst.require('0.10') | |
| from gst.extend.discoverer import Discoverer | |
| class GstFile: | |
| """ | |
| Analyses one or more files and prints out the multimedia information of | |
| each file. | |
| """ | |
| def __init__(self, files): | |
| self.files = files | |
| self.mainloop = gobject.MainLoop() | |
| self.current = None | |
| def run(self): | |
| gobject.idle_add(self._discover_one) | |
| self.mainloop.run() | |
| def _discovered(self, discoverer, ismedia): | |
| discoverer.print_info() | |
| self.current = None | |
| if len(self.files): | |
| print "\n" | |
| gobject.idle_add(self._discover_one) | |
| def _discover_one(self): | |
| if not len(self.files): | |
| gobject.idle_add(self.mainloop.quit) | |
| return False | |
| filename = self.files.pop(0) | |
| if not os.path.isfile(filename): | |
| gobject.idle_add(self._discover_one) | |
| return False | |
| print "Running on", filename | |
| # create a discoverer for that file | |
| self.current = Discoverer(filename) | |
| # connect a callback on the 'discovered' signal | |
| self.current.connect('discovered', self._discovered) | |
| # start the discovery | |
| self.current.discover() | |
| return False | |
| def main(args): | |
| if len(args) < 2: | |
| print 'usage: %s files...' % args[0] | |
| return 2 | |
| gstfile = GstFile(args[1:]) | |
| gstfile.run() | |
| if __name__ == '__main__': | |
| sys.exit(main(sys.argv)) |