Author: tack
Date: Thu Mar 22 14:16:50 2007
New Revision: 2581
Modified:
trunk/metadata/src/__init__.py
trunk/metadata/src/audio/ac3.py
trunk/metadata/src/audio/adts.py
trunk/metadata/src/audio/flac.py
trunk/metadata/src/audio/m4a.py
trunk/metadata/src/audio/mp3.py
trunk/metadata/src/audio/ogg.py
trunk/metadata/src/audio/pcm.py
trunk/metadata/src/audio/webradio.py
trunk/metadata/src/disc/audio.py
trunk/metadata/src/disc/data.py
trunk/metadata/src/disc/dvd.py
trunk/metadata/src/disc/vcd.py
trunk/metadata/src/factory.py
trunk/metadata/src/games/gameboy.py
trunk/metadata/src/games/snes.py
trunk/metadata/src/image/bmp.py
trunk/metadata/src/image/gif.py
trunk/metadata/src/image/jpg.py
trunk/metadata/src/image/png.py
trunk/metadata/src/image/tiff.py
trunk/metadata/src/misc/directory.py
trunk/metadata/src/misc/xmlfile.py
trunk/metadata/src/video/asf.py
trunk/metadata/src/video/flv.py
trunk/metadata/src/video/mkv.py
trunk/metadata/src/video/mp4.py
trunk/metadata/src/video/mpeg.py
trunk/metadata/src/video/ogm.py
trunk/metadata/src/video/real.py
trunk/metadata/src/video/riff.py
trunk/metadata/src/video/vcd.py
Log:
Call each parser class Parser and import that specifically when loading a
parser. Do not import disc.dvd when determining scheme from an info
object; replace tabs with spaces in gameboy parser; use exec() instead
of __import__() when importing the parser modules (lame, but __import__
didn't work with relative imports); add a FIXME about KeyboardInterrupt
and SystemExit exceptions.
Modified: trunk/metadata/src/__init__.py
==============================================================================
--- trunk/metadata/src/__init__.py (original)
+++ trunk/metadata/src/__init__.py Thu Mar 22 14:16:50 2007
@@ -41,45 +41,48 @@
USE_NETWORK = 1
# Audio parsers
-register('audio/mpeg', ('mp3',), 'audio.mp3.MP3')
-register('audio/ac3', ('ac3',), 'audio.ac3.AC3')
-register('application/adts', ('aac',), 'audio.adts.ADTS')
-register('application/flac', ('flac',), 'audio.flac.Flac')
-register('audio/m4a', ('m4a',), 'audio.m4a.Mpeg4Audio')
-register('application/ogg', ('ogg',), 'audio.ogg.Ogg')
-register('application/pcm', ('aif','voc','au'), 'audio.pcm.PCM')
-register('text/plain', EXTENSION_STREAM, 'audio.webradio.WebRadio')
+register('audio/mpeg', ('mp3',), 'audio.mp3')
+register('audio/ac3', ('ac3',), 'audio.ac3')
+register('application/adts', ('aac',), 'audio.adts')
+register('audio/m4a', ('m4a',), 'audio.m4a')
+register('application/ogg', ('ogg',), 'audio.ogg')
+register('application/pcm', ('aif','voc','au'), 'audio.pcm')
# Video parsers
-register('video/asf', ('asf','wmv','wma'), 'video.asf.Asf')
-register('video/flv', ('flv',), 'video.flv.FlashVideo')
-register('application/mkv', ('mkv', 'mka'), 'video.mkv.Matroska')
-register('video/quicktime', ('mov', 'qt', 'mp4', 'mp4a', '3gp', '3gp2',
'mk2'), 'video.mp4.MPEG4')
-register('video/mpeg', ('mpeg','mpg','mp4', 'ts'), 'video.mpeg.MPEG')
-register('application/ogg', ('ogm', 'ogg'), 'video.ogm.Ogm')
-register('video/real', ('rm', 'ra', 'ram'), 'video.real.RealVideo')
-register('video/avi', ('wav','avi'), 'video.riff.Riff')
-register('video/vcd', ('cue',), 'video.vcd.VCDFile')
+register('video/asf', ('asf','wmv','wma'), 'video.asf')
+register('video/flv', ('flv',), 'video.flv')
+register('application/mkv', ('mkv', 'mka'), 'video.mkv')
+register('video/quicktime', ('mov', 'qt', 'mp4', 'mp4a', '3gp', '3gp2',
'mk2'), 'video.mp4')
+register('video/mpeg', ('mpeg','mpg','mp4', 'ts'), 'video.mpeg')
+register('application/ogg', ('ogm', 'ogg'), 'video.ogm')
+register('video/real', ('rm', 'ra', 'ram'), 'video.real')
+register('video/avi', ('wav','avi'), 'video.riff')
+register('video/vcd', ('cue',), 'video.vcd')
# Disc parsers
-register('audio/cd', EXTENSION_DEVICE, 'disc.audio.AudioDisc')
-register('cd/unknown', EXTENSION_DEVICE, 'disc.data.DataDisc')
-register('video/dvd', EXTENSION_DEVICE, 'disc.dvd.DVDInfo')
-register('video/dvd', EXTENSION_DIRECTORY, 'disc.dvd.DVDInfo')
-register('video/dvd', ('iso',), 'disc.dvd.DVDInfo')
-register('video/vcd', EXTENSION_DEVICE, 'disc.vcd.VCD')
+register('audio/cd', EXTENSION_DEVICE, 'disc.audio')
+register('cd/unknown', EXTENSION_DEVICE, 'disc.data')
+register('video/dvd', EXTENSION_DEVICE, 'disc.dvd')
+register('video/dvd', EXTENSION_DIRECTORY, 'disc.dvd')
+register('video/dvd', ('iso',), 'disc.dvd')
+register('video/vcd', EXTENSION_DEVICE, 'disc.vcd')
# Image parsers
-register('image/bmp', ('bmp', ), 'image.bmp.BMP')
-register('image/gif', ('gif', ), 'image.gif.GIF')
-register('image/jpeg', ('jpg','jpeg'), 'image.jpg.JPG')
-register('image/png', ('png',), 'image.png.PNG')
-register('image/tiff', ('tif','tiff'), 'image.tiff.TIFF')
+register('image/bmp', ('bmp', ), 'image.bmp')
+register('image/gif', ('gif', ), 'image.gif')
+register('image/jpeg', ('jpg','jpeg'), 'image.jpg')
+register('image/png', ('png',), 'image.png')
+register('image/tiff', ('tif','tiff'), 'image.tiff')
# Games parsers
-register('games/gameboy', ('gba', 'gb', 'gbc'), 'games.gameboy.Gameboy')
-register('games/snes', ('smc', 'sfc', 'fig'), 'games.snes.SNES')
+register('games/gameboy', ('gba', 'gb', 'gbc'), 'games.gameboy')
+register('games/snes', ('smc', 'sfc', 'fig'), 'games.snes')
# Misc parsers
-register('directory', EXTENSION_DIRECTORY, 'misc.directory.Directory')
-register('text/xml', ('xml', 'fxd', 'html', 'htm'), 'misc.xmlfile.XML')
+register('directory', EXTENSION_DIRECTORY, 'misc.directory')
+register('text/xml', ('xml', 'fxd', 'html', 'htm'), 'misc.xmlfile')
+
+# These parsers are prone to producing false positives, so we use them
+# last. They should be fixed.
+register('text/plain', EXTENSION_STREAM, 'audio.webradio')
+register('application/flac', ('flac',), 'audio.flac')
Modified: trunk/metadata/src/audio/ac3.py
==============================================================================
--- trunk/metadata/src/audio/ac3.py (original)
+++ trunk/metadata/src/audio/ac3.py Thu Mar 22 14:16:50 2007
@@ -29,6 +29,8 @@
#
# -----------------------------------------------------------------------------
+__all__ = ['Parser']
+
# python imports
import struct
@@ -155,3 +157,6 @@
self.channels += 1
self.codec = 0x2000 # fourcc code of ac3
self.mime = 'audio/ac3'
+
+
+Parser = AC3
Modified: trunk/metadata/src/audio/adts.py
==============================================================================
--- trunk/metadata/src/audio/adts.py (original)
+++ trunk/metadata/src/audio/adts.py Thu Mar 22 14:16:50 2007
@@ -31,6 +31,8 @@
#
# -----------------------------------------------------------------------------
+__all__ = ['Parser']
+
import struct
# import kaa.metadata.audio core
@@ -74,3 +76,5 @@
if header[0] != 255 or (header[1] >> 4) != 15:
raise core.ParseError()
self.mime = 'audio/aac'
+
+Parser = ADTS
Modified: trunk/metadata/src/audio/flac.py
==============================================================================
--- trunk/metadata/src/audio/flac.py (original)
+++ trunk/metadata/src/audio/flac.py Thu Mar 22 14:16:50 2007
@@ -29,6 +29,8 @@
#
# -----------------------------------------------------------------------------
+__all__ = ['Parser']
+
# python imports
import struct
import re
@@ -112,3 +114,6 @@
def _extractHeaderString(self,header):
len = struct.unpack( '<I', header[:4] )[0]
return (len+4,unicode(header[4:4+len], 'utf-8'))
+
+
+Parser = Flac
Modified: trunk/metadata/src/audio/m4a.py
==============================================================================
--- trunk/metadata/src/audio/m4a.py (original)
+++ trunk/metadata/src/audio/m4a.py Thu Mar 22 14:16:50 2007
@@ -32,6 +32,8 @@
#
# -----------------------------------------------------------------------------
+__all__ = ['Parser']
+
# python imports
import logging
@@ -180,3 +182,5 @@
returnval = 1
if not self.valid:
raise core.ParseError()
+
+Parser = Mpeg4Audio
Modified: trunk/metadata/src/audio/mp3.py
==============================================================================
--- trunk/metadata/src/audio/mp3.py (original)
+++ trunk/metadata/src/audio/mp3.py Thu Mar 22 14:16:50 2007
@@ -29,6 +29,8 @@
#
# -----------------------------------------------------------------------------
+__all__ = ['Parser']
+
# python imports
import os
import re
@@ -301,3 +303,6 @@
return
self._set('mode', _modes[mode])
+
+
+Parser = MP3
Modified: trunk/metadata/src/audio/ogg.py
==============================================================================
--- trunk/metadata/src/audio/ogg.py (original)
+++ trunk/metadata/src/audio/ogg.py Thu Mar 22 14:16:50 2007
@@ -29,6 +29,8 @@
#
# -----------------------------------------------------------------------------
+__all__ = ['Parser']
+
# python imports
import re
import os
@@ -136,3 +138,6 @@
log.debug("granule = %d / %d" % (granule_position, absPos))
# the last one is the one we are interested in
return (granule_position / self.samplerate)
+
+
+Parser = Ogg
Modified: trunk/metadata/src/audio/pcm.py
==============================================================================
--- trunk/metadata/src/audio/pcm.py (original)
+++ trunk/metadata/src/audio/pcm.py Thu Mar 22 14:16:50 2007
@@ -29,6 +29,8 @@
#
# -----------------------------------------------------------------------------
+__all__ = ['Parser']
+
# python imports
import sndhdr
@@ -56,3 +58,6 @@
if res:
return res
return None
+
+
+Parser = PCM
Modified: trunk/metadata/src/audio/webradio.py
==============================================================================
--- trunk/metadata/src/audio/webradio.py (original)
+++ trunk/metadata/src/audio/webradio.py Thu Mar 22 14:16:50 2007
@@ -29,6 +29,8 @@
#
# -----------------------------------------------------------------------------
+__all__ = ['Parser']
+
# python imports
import urlparse
import string
@@ -97,3 +99,6 @@
def _finalize(self):
core.Music._finalize(self)
self.bitrate = string.atoi(self.bitrate)*1000
+
+
+Parser = WebRadio
Modified: trunk/metadata/src/disc/audio.py
==============================================================================
--- trunk/metadata/src/disc/audio.py (original)
+++ trunk/metadata/src/disc/audio.py Thu Mar 22 14:16:50 2007
@@ -29,6 +29,8 @@
#
# -----------------------------------------------------------------------------
+__all__ = ['Parser']
+
# python imports
import logging
@@ -171,3 +173,6 @@
t.title = t.title[len(self.title):].lstrip('/ \t-_')
cdromfd.close()
+
+
+Parser = AudioDisc
Modified: trunk/metadata/src/disc/data.py
==============================================================================
--- trunk/metadata/src/disc/data.py (original)
+++ trunk/metadata/src/disc/data.py Thu Mar 22 14:16:50 2007
@@ -29,6 +29,8 @@
#
# -----------------------------------------------------------------------------
+__all__ = ['Parser']
+
# kaa.metadata.disc imports
import core
@@ -42,3 +44,5 @@
self.type = 'CD'
self.subtype = 'data'
+
+Parser = DataDisc
Modified: trunk/metadata/src/disc/dvd.py
==============================================================================
--- trunk/metadata/src/disc/dvd.py (original)
+++ trunk/metadata/src/disc/dvd.py Thu Mar 22 14:16:50 2007
@@ -31,6 +31,8 @@
#
# -----------------------------------------------------------------------------
+__all__ = ['Parser']
+
# python imports
import os
import logging
@@ -207,3 +209,6 @@
# OK, try libdvdread
self._parse(f.name)
+
+
+Parser = DVDInfo
Modified: trunk/metadata/src/disc/vcd.py
==============================================================================
--- trunk/metadata/src/disc/vcd.py (original)
+++ trunk/metadata/src/disc/vcd.py Thu Mar 22 14:16:50 2007
@@ -29,6 +29,8 @@
#
# -----------------------------------------------------------------------------
+__all__ = ['Parser']
+
# kaa.metadata.disc imports
import core
import cdrom
@@ -93,3 +95,6 @@
num += 1
lmin, lsec = min, sec
device.close()
+
+
+Parser = VCD
Modified: trunk/metadata/src/factory.py
==============================================================================
--- trunk/metadata/src/factory.py (original)
+++ trunk/metadata/src/factory.py Thu Mar 22 14:16:50 2007
@@ -115,21 +115,20 @@
def get_class(self, name):
if name not in self.classmap:
# Import the parser class for the given name.
- modname, clsname = name.rsplit('.', 1)
- # FIXME: why aren't relative imports working?
try:
- module = __import__('kaa.metadata.' + modname, [], [],
[clsname])
- self.classmap[name] = getattr(module, clsname)
+ exec('from %s import Parser' % name)
+ self.classmap[name] = Parser
except:
- log.exception('Error importing parser')
+ # Something failed while trying to import this parser. Rather
+ # than bail altogher, just log the error and use NullParser.
+ log.exception('Error importing parser %s' % name)
self.classmap[name] = NullParser
return self.classmap[name]
def get_scheme_from_info(self, info):
- import disc.dvd
- if isinstance(info, disc.dvd.DVDInfo):
+ if info.__class__.__name__ == 'DVDInfo':
return 'dvd'
else:
return 'file'
@@ -151,6 +150,10 @@
except core.ParseError:
pass
except (KeyboardInterrupt, SystemExit):
+ # FIXME: kaa.metadata is a library, and it is not its place
+ # to institute behaviour on these exceptions. Rather it
+ # should bubble up these exceptions and let the caller
+ # deal with them.
sys.exit(0)
except:
log.exception('parse error')
Modified: trunk/metadata/src/games/gameboy.py
==============================================================================
--- trunk/metadata/src/games/gameboy.py (original)
+++ trunk/metadata/src/games/gameboy.py Thu Mar 22 14:16:50 2007
@@ -29,6 +29,8 @@
#
# -----------------------------------------------------------------------------
+__all__ = ['Parser']
+
# python imports
import struct
import logging
@@ -51,10 +53,10 @@
def __init__(self,file):
core.Game.__init__(self)
- # Determine if the ROM is a Gameboy Advance ROM.
- # Compare the Logo Code. All GBA Roms have this code.
- file.seek(4)
- if file.read(156) != GBA_LOGOCODE:
+ # Determine if the ROM is a Gameboy Advance ROM.
+ # Compare the Logo Code. All GBA Roms have this code.
+ file.seek(4)
+ if file.read(156) != GBA_LOGOCODE:
# Determine if the ROM is a Standard Gameboy ROM
# Compare the Logo Code. All GB Roms have this code.
@@ -74,7 +76,7 @@
self.mime = 'games/gb'
self.type = 'GameBoy game'
- else:
+ else:
self.mime = 'games/gba'
self.type = 'GameBoyAdvance game'
@@ -93,3 +95,6 @@
# Check that the Fized Value is 0x96, if not then error.
if file.read(1) != '\x96':
raise core.ParseError()
+
+
+Parser = Gameboy
Modified: trunk/metadata/src/games/snes.py
==============================================================================
--- trunk/metadata/src/games/snes.py (original)
+++ trunk/metadata/src/games/snes.py Thu Mar 22 14:16:50 2007
@@ -29,6 +29,8 @@
#
# -----------------------------------------------------------------------------
+__all__ = ['Parser']
+
# python imports
import struct
import logging
@@ -94,3 +96,5 @@
# not detected as rom
raise core.ParseError()
self.title = romName.strip()
+
+Parser = SNES
Modified: trunk/metadata/src/image/bmp.py
==============================================================================
--- trunk/metadata/src/image/bmp.py (original)
+++ trunk/metadata/src/image/bmp.py Thu Mar 22 14:16:50 2007
@@ -29,6 +29,8 @@
#
# -----------------------------------------------------------------------------
+__all__ = ['Parser']
+
# python imports
import struct
import logging
@@ -56,3 +58,6 @@
if bfType != 'BM' or bfSize != file.tell():
raise core.ParseError()
+
+
+Parser = BMP
Modified: trunk/metadata/src/image/gif.py
==============================================================================
--- trunk/metadata/src/image/gif.py (original)
+++ trunk/metadata/src/image/gif.py Thu Mar 22 14:16:50 2007
@@ -29,6 +29,8 @@
#
# -----------------------------------------------------------------------------
+__all__ = ['Parser']
+
# python imports
import struct
import logging
@@ -55,3 +57,6 @@
raise core.ParseError()
self.type = gifType.lower()
+
+
+Parser = GIF
Modified: trunk/metadata/src/image/jpg.py
==============================================================================
--- trunk/metadata/src/image/jpg.py (original)
+++ trunk/metadata/src/image/jpg.py Thu Mar 22 14:16:50 2007
@@ -29,6 +29,8 @@
#
# -----------------------------------------------------------------------------
+__all__ = ['Parser']
+
# python imports
import struct
import logging
@@ -169,3 +171,6 @@
for key, value in self.meta.items():
if key.startswith('Thumb:') or key == 'Software':
self._set(key, value)
+
+
+Parser = JPG
Modified: trunk/metadata/src/image/png.py
==============================================================================
--- trunk/metadata/src/image/png.py (original)
+++ trunk/metadata/src/image/png.py Thu Mar 22 14:16:50 2007
@@ -29,6 +29,8 @@
#
# -----------------------------------------------------------------------------
+__all__ = ['Parser']
+
# python imports
import struct
import zlib
@@ -122,3 +124,6 @@
if key is not None and key.lower() == "comment":
self.comment = self.meta[key]
return 1
+
+
+Parser = PNG
Modified: trunk/metadata/src/image/tiff.py
==============================================================================
--- trunk/metadata/src/image/tiff.py (original)
+++ trunk/metadata/src/image/tiff.py Thu Mar 22 14:16:50 2007
@@ -29,6 +29,8 @@
#
# -----------------------------------------------------------------------------
+__all__ = ['Parser']
+
# python imports
import struct
import zlib
@@ -110,3 +112,6 @@
if iptc:
self._appendtable('IPTC', iptc)
+
+
+Parser = TIFF
Modified: trunk/metadata/src/misc/directory.py
==============================================================================
--- trunk/metadata/src/misc/directory.py (original)
+++ trunk/metadata/src/misc/directory.py Thu Mar 22 14:16:50 2007
@@ -29,6 +29,8 @@
#
# -----------------------------------------------------------------------------
+__all__ = ['Parser']
+
# python imports
import os
import logging
@@ -81,3 +83,5 @@
self._set('image', image)
continue
self._set(key, value)
+
+Parser = Directory
Modified: trunk/metadata/src/misc/xmlfile.py
==============================================================================
--- trunk/metadata/src/misc/xmlfile.py (original)
+++ trunk/metadata/src/misc/xmlfile.py Thu Mar 22 14:16:50 2007
@@ -29,6 +29,8 @@
#
# -----------------------------------------------------------------------------
+__all__ = ['Parser']
+
# python imports
import os
import logging
@@ -87,3 +89,6 @@
else:
self.type = 'XML file'
raise Identified
+
+
+Parser = XML
Modified: trunk/metadata/src/video/asf.py
==============================================================================
--- trunk/metadata/src/video/asf.py (original)
+++ trunk/metadata/src/video/asf.py Thu Mar 22 14:16:50 2007
@@ -32,6 +32,8 @@
#
# -----------------------------------------------------------------------------
+__all__ = ['Parser']
+
# python imports
import re
import struct
@@ -370,3 +372,6 @@
u = "%.8X-%.4X-%.4X-%.2X%.2X-%s" % guid
log.debug("unknown: %s [%d]" % (u, objsize))
return r
+
+
+Parser = Asf
Modified: trunk/metadata/src/video/flv.py
==============================================================================
--- trunk/metadata/src/video/flv.py (original)
+++ trunk/metadata/src/video/flv.py Thu Mar 22 14:16:50 2007
@@ -29,6 +29,8 @@
#
# -----------------------------------------------------------------------------
+__all__ = ['Parser']
+
# python imports
import struct
import string
@@ -175,3 +177,6 @@
log.info('unknown code: %x. Stop metadata parser', ord(data[0]))
return 0, None
+
+
+Parser = FlashVideo
Modified: trunk/metadata/src/video/mkv.py
==============================================================================
--- trunk/metadata/src/video/mkv.py (original)
+++ trunk/metadata/src/video/mkv.py Thu Mar 22 14:16:50 2007
@@ -28,6 +28,8 @@
#
# -----------------------------------------------------------------------------
+__all__ = ['Parser']
+
# python imports
import struct
import re
@@ -604,3 +606,6 @@
self.thumbnail = data
log.debug('Attachment "%s" found' % name)
+
+
+Parser = Matroska
Modified: trunk/metadata/src/video/mp4.py
==============================================================================
--- trunk/metadata/src/video/mp4.py (original)
+++ trunk/metadata/src/video/mp4.py Thu Mar 22 14:16:50 2007
@@ -29,6 +29,8 @@
#
# -----------------------------------------------------------------------------
+__all__ = ['Parser']
+
# python imports
import re
import struct
@@ -358,3 +360,6 @@
return 0
return atomsize
+
+
+Parser = MPEG4
Modified: trunk/metadata/src/video/mpeg.py
==============================================================================
--- trunk/metadata/src/video/mpeg.py (original)
+++ trunk/metadata/src/video/mpeg.py Thu Mar 22 14:16:50 2007
@@ -29,6 +29,8 @@
#
# -----------------------------------------------------------------------------
+__all__ = ['Parser']
+
# python imports
import re
import os
@@ -856,3 +858,6 @@
file.close()
log.debug('done scanning file')
+
+
+Parser = MPEG
Modified: trunk/metadata/src/video/ogm.py
==============================================================================
--- trunk/metadata/src/video/ogm.py (original)
+++ trunk/metadata/src/video/ogm.py Thu Mar 22 14:16:50 2007
@@ -29,6 +29,8 @@
#
# -----------------------------------------------------------------------------
+__all__ = ['Parser']
+
# python imports
import struct
import re
@@ -304,3 +306,5 @@
except (KeyError, IndexError, UnicodeDecodeError):
return (len+4,None)
+
+Parser = Ogm
Modified: trunk/metadata/src/video/real.py
==============================================================================
--- trunk/metadata/src/video/real.py (original)
+++ trunk/metadata/src/video/real.py Thu Mar 22 14:16:50 2007
@@ -29,6 +29,8 @@
#
# -----------------------------------------------------------------------------
+__all__ = ['Parser']
+
# python imports
import struct
import string
@@ -106,3 +108,6 @@
pos += copyright_len+2
(comment_len,) = struct.unpack('>H', s[pos:pos+2])
self.comment = s[pos+2:pos+comment_len+2]
+
+
+Parser = RealVideo
Modified: trunk/metadata/src/video/riff.py
==============================================================================
--- trunk/metadata/src/video/riff.py (original)
+++ trunk/metadata/src/video/riff.py Thu Mar 22 14:16:50 2007
@@ -29,6 +29,8 @@
#
# -----------------------------------------------------------------------------
+__all__ = ['Parser']
+
# python imports
import re
import os
@@ -567,3 +569,6 @@
log.debug("Bad or broken avi")
return False
return True
+
+
+Parser = Riff
Modified: trunk/metadata/src/video/vcd.py
==============================================================================
--- trunk/metadata/src/video/vcd.py (original)
+++ trunk/metadata/src/video/vcd.py Thu Mar 22 14:16:50 2007
@@ -29,6 +29,8 @@
#
# -----------------------------------------------------------------------------
+__all__ = ['Parser']
+
# python imports
import os
@@ -90,3 +92,6 @@
else:
vi.codec = 'MPEG2'
self.tracks.append(vi)
+
+
+Parser = VCDFile
-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys-and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
Freevo-cvslog mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/freevo-cvslog