Author: dmeyer
Date: Fri Dec 15 15:13:47 2006
New Revision: 2236
Added:
trunk/metadata/src/audio/ID3.py
- copied unchanged from r2235, /trunk/metadata/src/audio/id3.py
trunk/metadata/src/audio/ac3.py
- copied, changed from r2235, /trunk/metadata/src/audio/ac3info.py
trunk/metadata/src/audio/adts.py
- copied, changed from r2235, /trunk/metadata/src/audio/adtsinfo.py
trunk/metadata/src/audio/core.py
trunk/metadata/src/audio/flac.py
- copied, changed from r2235, /trunk/metadata/src/audio/flacinfo.py
trunk/metadata/src/audio/m4a.py
- copied, changed from r2235, /trunk/metadata/src/audio/m4ainfo.py
trunk/metadata/src/audio/mp3.py
- copied, changed from r2235, /trunk/metadata/src/audio/eyed3info.py
trunk/metadata/src/audio/ogg.py
- copied, changed from r2235, /trunk/metadata/src/audio/ogginfo.py
trunk/metadata/src/audio/pcm.py
- copied, changed from r2235, /trunk/metadata/src/audio/pcminfo.py
trunk/metadata/src/audio/webradio.py
- copied, changed from r2235, /trunk/metadata/src/audio/webradioinfo.py
Removed:
trunk/metadata/src/audio/ac3info.py
trunk/metadata/src/audio/adtsinfo.py
trunk/metadata/src/audio/eyed3info.py
trunk/metadata/src/audio/flacinfo.py
trunk/metadata/src/audio/id3.py
trunk/metadata/src/audio/m4ainfo.py
trunk/metadata/src/audio/ogginfo.py
trunk/metadata/src/audio/pcminfo.py
trunk/metadata/src/audio/webradioinfo.py
Modified:
trunk/metadata/src/disc/audioinfo.py
trunk/metadata/src/factory.py
trunk/metadata/src/mediainfo.py
Log:
Cleanup audio subdir
o rename fooinfo.py to foo.py
o rename FooInfo class to Foo
o create core module
Copied: trunk/metadata/src/audio/ac3.py (from r2235,
/trunk/metadata/src/audio/ac3info.py)
==============================================================================
--- /trunk/metadata/src/audio/ac3info.py (original)
+++ trunk/metadata/src/audio/ac3.py Fri Dec 15 15:13:47 2006
@@ -1,6 +1,6 @@
# -*- coding: iso-8859-1 -*-
# -----------------------------------------------------------------------------
-# ac3info.py - AC3 file parser
+# ac3.py - AC3 file parser
# -----------------------------------------------------------------------------
# $Id$
#
@@ -32,9 +32,8 @@
# python imports
import struct
-# kaa imports
-from kaa.metadata import mediainfo
-from kaa.metadata import factory
+# import kaa.metadata.audio core
+import core
# http://www.atsc.org/standards/a_52a.pdf
# fscod: Sample rate code, 2 bits
@@ -111,9 +110,9 @@
FRMSIZCOD = [ 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192,
224, 256, 320, 384, 448, 512, 576, 640 ]
-class AC3Info(mediainfo.MusicInfo):
+class AC3(core.Music):
def __init__(self,file):
- mediainfo.MusicInfo.__init__(self)
+ core.Music.__init__(self)
if file.name.endswith('.ac3'):
# when the ending is ac3, force the detection. It may not be
# necessary the the header is at the beginning but in the first
@@ -125,7 +124,7 @@
if file.read(2) == '\x0b\x77':
break
else:
- raise mediainfo.KaaMetadataParseError()
+ raise core.ParseError()
info = struct.unpack('<HBBBB',file.read(6))
self.samplerate = FSCOD[info[1] >> 6]
@@ -158,4 +157,4 @@
self.mime = 'audio/ac3'
-factory.register( 'audio/ac3', ('ac3',), AC3Info )
+core.register( 'audio/ac3', ('ac3',), AC3 )
Copied: trunk/metadata/src/audio/adts.py (from r2235,
/trunk/metadata/src/audio/adtsinfo.py)
==============================================================================
--- /trunk/metadata/src/audio/adtsinfo.py (original)
+++ trunk/metadata/src/audio/adts.py Fri Dec 15 15:13:47 2006
@@ -1,6 +1,6 @@
# -*- coding: iso-8859-1 -*-
# -----------------------------------------------------------------------------
-# pcminfo.py - pcm file parser
+# adts.py - pcm file parser
# -----------------------------------------------------------------------------
# $Id$
#
@@ -33,9 +33,8 @@
import struct
-# kaa imports
-from kaa.metadata import mediainfo
-from kaa.metadata import factory
+# import kaa.metadata.audio core
+import core
# ADTS Fixed header: these don't change from frame to frame
#
@@ -64,17 +63,17 @@
#
# crc_check 16 only if protection_absent == 0
#
-class ADTSInfo(mediainfo.AudioInfo):
+class ADTS(core.Music):
def __init__(self,file):
- mediainfo.AudioInfo.__init__(self)
+ core.Music.__init__(self)
if not file.name.endswith('aac'):
# we have a bad detection here, so if the filename does
# not match, we skip.
- raise mediainfo.KaaMetadataParseError()
+ raise core.ParseError()
header = struct.unpack('>7B', file.read(7))
if header[0] != 255 or (header[1] >> 4) != 15:
- raise mediainfo.KaaMetadataParseError()
+ raise core.ParseError()
self.mime = 'audio/aac'
-factory.register( 'application/adts', ('aac',), ADTSInfo )
+core.register( 'application/adts', ('aac',), ADTS )
Added: trunk/metadata/src/audio/core.py
==============================================================================
--- (empty file)
+++ trunk/metadata/src/audio/core.py Fri Dec 15 15:13:47 2006
@@ -0,0 +1,57 @@
+# -*- coding: iso-8859-1 -*-
+# -----------------------------------------------------------------------------
+# core.py - basic audio class
+# -----------------------------------------------------------------------------
+# $Id: core.py 2216 2006-12-10 20:32:21Z dmeyer $
+#
+# -----------------------------------------------------------------------------
+# kaa-Metadata - Media Metadata for Python
+# Copyright (C) 2003-2006 Thomas Schueppel, Dirk Meyer
+#
+# First Edition: Thomas Schueppel <[EMAIL PROTECTED]>
+# Maintainer: Dirk Meyer <[EMAIL PROTECTED]>
+#
+# Please see the file AUTHORS for a complete list of authors.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of MER-
+# CHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
+# Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#
+# -----------------------------------------------------------------------------
+
+from kaa.metadata import mediainfo
+from kaa.metadata.factory import register
+
+ParseError = mediainfo.KaaMetadataParseError
+EXTENSION_STREAM = mediainfo.EXTENSION_STREAM
+
+class Music(mediainfo.AudioInfo):
+ """
+ Digital Music.
+ """
+ _keys = mediainfo.AudioInfo._keys + mediainfo.MUSICCORE
+
+ def _finalize(self):
+ """
+ Correct same data based on specific rules
+ """
+ mediainfo.AudioInfo._finalize(self)
+ if self.trackof:
+ try:
+ # XXX Why is this needed anyway?
+ if int(self.trackno) < 10:
+ self.trackno = u'0%s' % int(self.trackno)
+ except (KeyboardInterrupt, SystemExit):
+ sys.exit(0)
+ except:
+ pass
Copied: trunk/metadata/src/audio/flac.py (from r2235,
/trunk/metadata/src/audio/flacinfo.py)
==============================================================================
--- /trunk/metadata/src/audio/flacinfo.py (original)
+++ trunk/metadata/src/audio/flac.py Fri Dec 15 15:13:47 2006
@@ -1,6 +1,6 @@
# -*- coding: iso-8859-1 -*-
# -----------------------------------------------------------------------------
-# flacinfo.py - flac file parser
+# flac.py - flac file parser
# -----------------------------------------------------------------------------
# $Id$
#
@@ -34,21 +34,19 @@
import re
import logging
-# kaa imports
-from kaa.metadata import mediainfo
-from kaa.metadata import factory
-import ogginfo
+# import kaa.metadata.audio core
+import core
# get logging object
log = logging.getLogger('metadata')
# See: http://flac.sourceforge.net/format.html
-class FlacInfo(mediainfo.MusicInfo):
+class Flac(core.Music):
def __init__(self,file):
- mediainfo.MusicInfo.__init__(self)
+ core.Music.__init__(self)
if file.read(4) != 'fLaC':
- raise mediainfo.KaaMetadataParseError()
+ raise core.ParseError()
while 1:
(blockheader,) = struct.unpack('>I',file.read(4))
@@ -116,4 +114,4 @@
return (len+4,unicode(header[4:4+len], 'utf-8'))
-factory.register( 'application/flac', ('flac',), FlacInfo )
+core.register( 'application/flac', ('flac',), Flac )
Copied: trunk/metadata/src/audio/m4a.py (from r2235,
/trunk/metadata/src/audio/m4ainfo.py)
==============================================================================
--- /trunk/metadata/src/audio/m4ainfo.py (original)
+++ trunk/metadata/src/audio/m4a.py Fri Dec 15 15:13:47 2006
@@ -1,6 +1,6 @@
# -*- coding: iso-8859-1 -*-
# -----------------------------------------------------------------------------
-# m4ainfo.py - m4a file parser
+# m4a.py - m4a file parser
# -----------------------------------------------------------------------------
# $Id$
#
@@ -36,20 +36,23 @@
import struct
import logging
-# kaa imports
-from kaa.metadata import mediainfo
-from kaa.metadata import factory
+# import kaa.metadata.audio core
+import core
# get logging object
log = logging.getLogger('metadata')
-class Mpeg4(mediainfo.MusicInfo):
- def __init__(self, file):
- self.containerTags = ('moov', 'udta', 'trak', 'mdia', 'minf', 'dinf',
- 'stbl', 'meta', 'ilst', '----')
- self.skipTags = {'meta':4 }
- mediainfo.MusicInfo.__init__(self)
+CONTAINER_TAGS = ('moov', 'udta', 'trak', 'mdia', 'minf',
+ 'dinf', 'stbl', 'meta', 'ilst', '----')
+
+SKIP_TAGS = {'meta':4 }
+
+
+class Mpeg4Audio(core.Music):
+
+ def __init__(self, file):
+ core.Music.__init__(self)
self.valid = 0
returnval = 0
while returnval == 0:
@@ -58,7 +61,7 @@
except ValueError:
returnval = 1
if not self.valid:
- raise mediainfo.KaaMetadataParseError()
+ raise core.ParseError()
def readNextTag(self, file):
@@ -67,8 +70,8 @@
if length < 0 or length > 1000:
raise ValueError, "Oops?"
- if name in self.containerTags:
- self.read(self.skipTags.get(name, 0), file)
+ if name in CONTAINER_TAGS:
+ self.read(SKIP_TAGS.get(name, 0), file)
data = '[container tag]'
else:
data = self.read(length, file)
@@ -103,4 +106,4 @@
return struct.unpack('>I', self.read(4, file))[0]
-factory.register( 'application/m4a', ('m4a',), Mpeg4)
+core.register( 'application/m4a', ('m4a',), Mpeg4Audio)
Copied: trunk/metadata/src/audio/mp3.py (from r2235,
/trunk/metadata/src/audio/eyed3info.py)
==============================================================================
--- /trunk/metadata/src/audio/eyed3info.py (original)
+++ trunk/metadata/src/audio/mp3.py Fri Dec 15 15:13:47 2006
@@ -1,6 +1,6 @@
# -*- coding: iso-8859-1 -*-
# -----------------------------------------------------------------------------
-# eyed3info.py - mp3 file parser using eyeD3
+# mp3.py - mp3 file parser using eyeD3
# -----------------------------------------------------------------------------
# $Id$
#
@@ -36,15 +36,14 @@
import logging
import struct
-# kaa imports
-from kaa.metadata import mediainfo
-from kaa.metadata import factory
+# import kaa.metadata.audio core
+import core
+import ID3 as ID3
# eyeD3 imports
from eyeD3 import tag as eyeD3_tag
from eyeD3 import frames as eyeD3_frames
-import id3 as id3info
# get logging object
log = logging.getLogger('metadata')
@@ -92,19 +91,19 @@
_MP3_HEADER_SEEK_LIMIT = 4096
-class eyeD3Info(mediainfo.MusicInfo):
+class MP3(core.Music):
fileName = str();
fileSize = int();
def __init__(self, file, tagVersion = eyeD3_tag.ID3_ANY_VERSION):
- mediainfo.MusicInfo.__init__(self)
+ core.Music.__init__(self)
self.fileName = file.name;
self.codec = 0x0055 # fourcc code of mp3
self.mime = 'audio/mp3'
if not eyeD3_tag.isMp3File(file.name):
- raise mediainfo.KaaMetadataParseError()
+ raise core.ParseError()
id3 = None
try:
@@ -114,7 +113,7 @@
id3 = eyeD3_tag.Mp3AudioFile(file.name)
except eyeD3_tag.InvalidAudioFormatException:
# File is not an MP3
- raise mediainfo.KaaMetadataParseError()
+ raise core.ParseError()
except (KeyboardInterrupt, SystemExit):
sys.exit(0)
except:
@@ -139,7 +138,7 @@
# again, not good
if not re.compile(r'0*\xFF\xFA\xB0\x04$').search(s):
# that's it, it is no mp3 at all
- raise mediainfo.KaaMetadataParseError()
+ raise core.ParseError()
try:
if id3 and id3.tag:
@@ -200,7 +199,7 @@
genre = tcon
if genre is not None:
try:
- self.genre = id3info.GENRE_LIST[genre]
+ self.genre = ID3.GENRE_LIST[genre]
except KeyError:
self.genre = str(genre)
# and some tools store it as trackno/trackof in TRCK
@@ -300,4 +299,4 @@
self._set('mode', _modes[mode])
-factory.register( 'audio/mp3', ('mp3',), eyeD3Info )
+core.register( 'audio/mp3', ('mp3',), MP3 )
Copied: trunk/metadata/src/audio/ogg.py (from r2235,
/trunk/metadata/src/audio/ogginfo.py)
==============================================================================
--- /trunk/metadata/src/audio/ogginfo.py (original)
+++ trunk/metadata/src/audio/ogg.py Fri Dec 15 15:13:47 2006
@@ -1,6 +1,6 @@
# -*- coding: iso-8859-1 -*-
# -----------------------------------------------------------------------------
-# ogginfo.py - ogg file parser
+# ogg.py - ogg file parser
# -----------------------------------------------------------------------------
# $Id$
#
@@ -36,9 +36,8 @@
import struct
import logging
-# kaa imports
-from kaa.metadata import mediainfo
-from kaa.metadata import factory
+# import kaa.metadata.audio core
+import core
# get logging object
log = logging.getLogger('metadata')
@@ -47,13 +46,13 @@
VORBIS_PACKET_HEADER = '\03vorbis'
VORBIS_PACKET_SETUP = '\05vorbis'
-class OggInfo(mediainfo.MusicInfo):
+class Ogg(core.Music):
def __init__(self,file):
- mediainfo.MusicInfo.__init__(self)
+ core.Music.__init__(self)
h = file.read(4+1+1+20+1)
if h[:5] != "OggS\00":
log.info("Invalid header")
- raise mediainfo.KaaMetadataParseError()
+ raise core.ParseError()
if ord(h[5]) != 2:
log.info("Invalid header type flag (trying to go ahead anyway)")
self.pageSegCount = ord(h[-1])
@@ -62,7 +61,7 @@
h = file.read(7)
if h != VORBIS_PACKET_INFO:
log.info("Wrong vorbis header type, giving up.")
- raise mediainfo.KaaMetadataParseError()
+ raise core.ParseError()
self.mime = 'application/ogg'
header = {}
@@ -138,4 +137,4 @@
return (granule_position / self.samplerate)
-factory.register( 'application/ogg', ('ogg',), OggInfo)
+core.register( 'application/ogg', ('ogg',), Ogg)
Copied: trunk/metadata/src/audio/pcm.py (from r2235,
/trunk/metadata/src/audio/pcminfo.py)
==============================================================================
--- /trunk/metadata/src/audio/pcminfo.py (original)
+++ trunk/metadata/src/audio/pcm.py Fri Dec 15 15:13:47 2006
@@ -1,6 +1,6 @@
# -*- coding: iso-8859-1 -*-
# -----------------------------------------------------------------------------
-# pcminfo.py - pcm file parser
+# pcm.py - pcm file parser
# -----------------------------------------------------------------------------
# $Id$
#
@@ -32,21 +32,20 @@
# python imports
import sndhdr
-# kaa imports
-from kaa.metadata import mediainfo
-from kaa.metadata import factory
+# import kaa.metadata.audio core
+import core
-class PCMInfo(mediainfo.AudioInfo):
+class PCM(core.Music):
def __init__(self,file):
- mediainfo.AudioInfo.__init__(self)
+ core.Music.__init__(self)
t = self._what(file)
if not t:
- raise mediainfo.KaaMetadataParseError()
+ raise core.ParseError()
(self.type, self.samplerate, self.channels, self.bitrate, \
self.samplebits) = t
if self.bitrate == -1:
# doesn't look right
- raise mediainfo.KaaMetadataParseError()
+ raise core.ParseError()
self.mime = "audio/%s" % self.type
def _what(self,f):
@@ -59,4 +58,4 @@
return None
-factory.register( 'application/pcm', ('wav','aif','voc','au'), PCMInfo )
+core.register( 'application/pcm', ('wav','aif','voc','au'), PCM )
Copied: trunk/metadata/src/audio/webradio.py (from r2235,
/trunk/metadata/src/audio/webradioinfo.py)
==============================================================================
--- /trunk/metadata/src/audio/webradioinfo.py (original)
+++ trunk/metadata/src/audio/webradio.py Fri Dec 15 15:13:47 2006
@@ -1,6 +1,6 @@
# -*- coding: iso-8859-1 -*-
# -----------------------------------------------------------------------------
-# webradioinfo.py - read webradio attributes
+# webradio.py - read webradio attributes
# -----------------------------------------------------------------------------
# $Id$
#
@@ -34,9 +34,9 @@
import string
import urllib
-# kaa imports
-from kaa.metadata import mediainfo
-from kaa.metadata import factory
+# import kaa.metadata.audio core
+import core
+
# http://205.188.209.193:80/stream/1006
@@ -46,16 +46,16 @@
'icy-url': 'caption'
}
-class WebRadioInfo(mediainfo.MusicInfo):
+class WebRadio(core.Music):
table_mapping = { 'ICY' : ICY }
def __init__(self, url):
- mediainfo.MusicInfo.__init__(self)
+ core.Music.__init__(self)
tup = urlparse.urlsplit(url)
scheme, location, path, query, fragment = tup
if scheme != 'http':
- raise mediainfo.KaaMetadataParseError()
+ raise core.ParseError()
# Open an URL Connection
fi = urllib.urlopen(url)
@@ -71,7 +71,7 @@
if statuslist[1] != "200":
if fi:
fi.close()
- raise mediainfo.KaaMetadataParseError()
+ raise core.ParseError()
self.type = 'audio'
self.subtype = 'mp3'
@@ -95,8 +95,8 @@
def _finalize(self):
- mediainfo.MusicInfo._finalize(self)
+ core.Music._finalize(self)
self.bitrate = string.atoi(self.bitrate)*1000
-factory.register( 'text/plain', mediainfo.EXTENSION_STREAM, WebRadioInfo )
+core.register( 'text/plain', core.EXTENSION_STREAM, WebRadio )
Modified: trunk/metadata/src/disc/audioinfo.py
==============================================================================
--- trunk/metadata/src/disc/audioinfo.py (original)
+++ trunk/metadata/src/disc/audioinfo.py Fri Dec 15 15:13:47 2006
@@ -37,6 +37,7 @@
import kaa.metadata
from kaa.metadata import mediainfo
from kaa.metadata import factory
+from kaa.audio.core import Music as MusicInfo
# disc imports
import discinfo
@@ -104,7 +105,7 @@
if read_stat == 210:
for i in range(0, disc_id[1]):
- mi = mediainfo.MusicInfo()
+ mi = MusicInfo()
mi.title = read_info['TTITLE' + `i`]
mi.album = self.title
mi.artist = self.artist
@@ -129,7 +130,7 @@
log.error("failure getting disc info, status %i" % query_stat)
self.no_caching = 1
for i in range(0, disc_id[1]):
- mi = mediainfo.MusicInfo()
+ mi = MusicInfo()
mi.title = 'Track %s' % (i+1)
mi.codec = 'PCM'
mi.samplerate = 44.1
Modified: trunk/metadata/src/factory.py
==============================================================================
--- trunk/metadata/src/factory.py (original)
+++ trunk/metadata/src/factory.py Fri Dec 15 15:13:47 2006
@@ -112,11 +112,11 @@
This functions imports all known parser.
"""
import mediainfo
- import audio.ogginfo
- import audio.m4ainfo
- import audio.ac3info
- import audio.pcminfo
- import audio.adtsinfo
+ import audio.ogg
+ import audio.m4a
+ import audio.ac3
+ import audio.pcm
+ import audio.adts
import video.riffinfo
import video.mpeginfo
import video.asfinfo
@@ -156,9 +156,9 @@
if log.level < 30:
log.error(e)
- import audio.eyed3info
- import audio.webradioinfo
- import audio.flacinfo
+ import audio.mp3
+ import audio.webradio
+ import audio.flac
import games.gameboy
import games.snes
Modified: trunk/metadata/src/mediainfo.py
==============================================================================
--- trunk/metadata/src/mediainfo.py (original)
+++ trunk/metadata/src/mediainfo.py Fri Dec 15 15:13:47 2006
@@ -302,28 +302,6 @@
self.fourcc, self.codec = fourcc.resolve(self.codec)
-class MusicInfo(AudioInfo):
- """
- Digital Music.
- """
- _keys = AudioInfo._keys + MUSICCORE
-
- def _finalize(self):
- """
- Correct same data based on specific rules
- """
- AudioInfo._finalize(self)
- if self.trackof:
- try:
- # XXX Why is this needed anyway?
- if int(self.trackno) < 10:
- self.trackno = u'0%s' % int(self.trackno)
- except (KeyboardInterrupt, SystemExit):
- sys.exit(0)
- except:
- pass
-
-
class VideoInfo(MediaInfo):
"""
Video Tracks in a Multiplexed Container.
-------------------------------------------------------------------------
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