#!/usr/bin/python
#if 0
# -----------------------------------------------------------------------
# $Id: __init__.py 382 2004-10-15 09:02:11Z dischi $
# -----------------------------------------------------------------------
# $Log$
# Revision 1.35  2004/10/15 09:02:11  dischi
# add ac3 parser
#
# Revision 1.34  2004/05/20 15:55:08  dischi
# add xml file detection
#
# Revision 1.33  2004/05/02 08:28:20  dischi
# dvd iso support
#
# Revision 1.32  2004/04/18 09:11:36  dischi
# improved lsdvd support
#
# Revision 1.31  2004/04/17 18:38:54  dischi
# add lsdvd parser to avoid problems with our own
#
# Revision 1.30  2004/01/31 12:24:39  dischi
# add basic matroska info
#
# Revision 1.29  2004/01/27 20:27:52  dischi
# remove cache, it does not belong in mmpython
#
# Revision 1.28  2004/01/03 17:44:04  dischi
# catch OSError in case the file is removed file scanning
#
# Revision 1.27  2003/11/24 20:30:17  dischi
# fix again, dvd may fail, but datadir may not
#
# Revision 1.26  2003/11/24 20:29:26  dischi
# resort to let dvd work again
#
# Revision 1.25  2003/11/07 13:58:52  dischi
# extra check for dvd
#
# Revision 1.24  2003/09/22 16:24:58  the_krow
# o added flac
# o try-except block around ioctl since it is not avaiable in all OS
#
# Revision 1.23  2003/09/14 13:50:42  dischi
# make it possible to scan extention based only
#
# Revision 1.22  2003/09/10 18:41:44  dischi
# add USE_NETWORK, maybe there is no network connection
#
# Revision 1.20  2003/08/26 13:16:41  outlyer
# Enabled m4a support
#
# Revision 1.19  2003/07/10 11:17:35  the_krow
# ogminfo is used to parse ogg files
#
# Revision 1.18  2003/07/01 21:07:42  dischi
# switch back to eyed3info
#
# Revision 1.17  2003/06/30 13:17:18  the_krow
# o Refactored mediainfo into factory, synchronizedobject
# o Parsers now register directly at mmpython not at mmpython.mediainfo
# o use mmpython.Factory() instead of mmpython.mediainfo.get_singleton()
# o Bugfix in PNG parser
# o Renamed disc.AudioInfo into disc.AudioDiscInfo
# o Renamed disc.DataInfo into disc.DataDiscInfo
#
# -----------------------------------------------------------------------
# MMPython - Media Metadata for Python
# Copyright (C) 2003 Thomas Schueppel, Dirk Meyer
#
# 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
# 
# -----------------------------------------------------------------------
#endif

# Do this stuff before importing the info instances since they 
# depend on this function

import factory

from synchronizedobject import SynchronizedObject

_factory = None

def Factory():
    global _factory

    # One-time init
    if _factory == None:
        _factory = SynchronizedObject(factory.Factory())
        
    return _factory

def registertype(mimetype,extensions,type,c):
    f = Factory()
    f.register(mimetype,extensions,type,c)    

def gettype(mimetype,extensions):
    f = Factory()
    return f.get(mimetype,extensions)    
    

# Okay Regular imports and code follow

import sys
import os
import mediainfo
#import audio.ogginfo
import audio.pcminfo
import audio.m4ainfo
import audio.ac3info
import video.riffinfo
import video.mpeginfo
import video.asfinfo
import video.movinfo
import image.jpginfo
import image.pnginfo
import image.tiffinfo
import image.ImageInfo
import video.vcdinfo
import video.realinfo
import video.ogminfo
import video.mkvinfo
import misc.xmlinfo

# import some disc modules (may fail)
try:
    import disc.discinfo
    import disc.vcdinfo
    import disc.audioinfo
except ImportError:
    pass

# find the best working DVD module
try:
    import disc.lsdvd
except ImportError:
    pass

try:
    import disc.dvdinfo
except ImportError:
    pass

# use fallback disc module
try:
    import disc.datainfo
except ImportError:
    pass

import audio.eyed3info
#import audio.mp3info
import audio.webradioinfo
import audio.flacinfo



USE_NETWORK     = 1


def parse(filename, ext_only = 0):
    """
    parse the file
    """
    return Factory().create(filename, ext_only)

