gremlin/gremlin.in: Refactor content-type guessing.
[autoys] / gremlin / gremlin.in
index 79c0ea9..0a76641 100644 (file)
@@ -718,6 +718,10 @@ def link_elements(elts):
   "Link the elements ELTS together, in order."
   GS.element_link_many(*elts)
 
+def bin_children(bin):
+  "Iterate over the (direct) children of a BIN."
+  for elt in bin.elements(): yield elt
+
 class GStreamerProgressEyecandy (ProgressEyecandy):
   """
   Provide amusement while GStreamer is busy doing something.
@@ -830,7 +834,7 @@ class AudioIdentifier (object):
       if pad.get_caps()[0].get_name().startswith('audio/'):
         elt.link_pads(pad.get_name(), sink, 'sink')
     dpaid = decoder.connect('pad-added', decoder_pad_arrived)
-    me._pipe.add(source, decoder, sink)
+    for i in [source, decoder, sink]: me._pipe.add(i)
     link_elements([source, decoder])
 
     ## Arrange to collect tags from the pipeline's bus as they're reported.
@@ -859,7 +863,7 @@ class AudioIdentifier (object):
     ## things from being too awful.)
     me.cap = None
     me.dcap = None
-    for e in decoder.elements():
+    for e in bin_children(decoder):
       if e.get_factory().get_name() == 'typefind':
         tfelt = e
         break
@@ -994,7 +998,7 @@ class AudioFormat (BaseFormat):
     """
     elts = me.encoder_chain()
     bin = GS.Bin()
-    bin.add(*elts)
+    for i in elts: bin.add(i)
     link_elements(elts)
     bin.add_pad(GS.GhostPad('sink', elts[0].get_pad('sink')))
     bin.add_pad(GS.GhostPad('src', elts[-1].get_pad('src')))
@@ -1031,7 +1035,7 @@ class AudioFormat (BaseFormat):
     convert = make_element('audioconvert', 'convert')
     encoder = me.encoder()
     sink = make_element('filesink', 'sink', location = new)
-    pipe.add(source, decoder, convert, encoder, sink)
+    for i in [source, decoder, convert, encoder, sink]: pipe.add(i)
     link_elements([source, decoder])
     link_elements([convert, encoder, sink])
 
@@ -1509,8 +1513,9 @@ def grobble(master, targets, noact = False):
           ## the appropriate categories.  Later, we'll apply policy to the
           ## files, by category, and work out what to do with them all.
           else:
-            gf = GIO.File(masterfile)
-            mime = gf.query_info('standard::content-type').get_content_type()
+            mime = GIO.File(masterfile) \
+                      .query_info('standard::content-type') \
+                      .get_content_type()
             cats = []
             for cat in pmap.iterkeys():
               id = cat.identify(masterfile, mime)