コード例 #1
0
    def __init__(self, threads=None, delete=False, debug=False):
        MusaThreadManager.__init__(self, 'sync', threads)
        self.delete = delete
        self.debug = debug

        if not debug:
            self.log = SoundforestLogger('sync').register_file_handler(
                'sync', MUSA_USER_DIR)
            SoundforestLogger('sync').set_level('INFO')

        else:
            self.log = SoundforestLogger().default_stream
コード例 #2
0
    def __init__(self,
                 name=None,
                 description=None,
                 epilog=None,
                 debug_flag=True):
        self.db = ConfigDB()
        self.name = os.path.basename(sys.argv[0])

        reload(sys)
        sys.setdefaultencoding('utf-8')

        setproctitle('%s %s' % (self.name, ' '.join(sys.argv[1:])))
        signal.signal(signal.SIGINT, self.SIGINT)

        if name is None:
            name = self.name

        self.logger = SoundforestLogger()
        self.log = self.logger.default_stream

        self.parser = argparse.ArgumentParser(
            prog=name,
            description=description,
            epilog=epilog,
            add_help=True,
            conflict_handler='resolve',
        )
        self.subcommand_parser = None
        self.subcommands = None

        if debug_flag:
            self.parser.add_argument('--debug',
                                     action='store_true',
                                     help='Show debug messages')
コード例 #3
0
 def __init__(self, name, threads=None):
     self.log = SoundforestLogger().default_stream
     self.db = ConfigDB()
     if threads is None:
         threads = self.db.get('threads')
         if threads is None:
             threads = 1
     else:
         threads = int(threads)
     self.threads = threads
コード例 #4
0
    def __init__(self, name, description='', epilog='', mode_flags=[]):
        self.script = None
        self.name = name
        self.description = description
        self.epilog = epilog

        self.logger = SoundforestLogger()
        self.log = self.logger.default_stream

        if not isinstance(mode_flags, list):
            raise ScriptError('Mode flags must be a list')

        self.mode_flags = mode_flags
        self.selected_mode_flags = []
コード例 #5
0
ファイル: config.py プロジェクト: pombreda/soundforest
        def __init__(self, path):
            self.log = SoundforestLogger().default_stream
            models.SoundforestDB.__init__(self, path=path)

            treetypes = self.session.query(models.TreeTypeModel).all()
            if not treetypes:
                treetypes = []

                for name, description in DEFAULT_TREE_TYPES.items():
                    treetypes.append(
                        models.TreeTypeModel(name=name,
                                             description=description))

                self.add(treetypes)
                self.commit()

            self.codecs = CodecConfiguration(db=self)
            self.sync = SyncConfiguration(db=self)
コード例 #6
0
    def __init__(self, path, extensions=[]):
        self.log = SoundforestLogger().default_stream
        self.path = path.rstrip(os.sep)

        if not isinstance(extensions, list):
            raise PrefixError('Extensions must be a list')

        self.extensions = []
        for ext in extensions:
            if hasattr(ext, 'extension'):
                ext = ext.extension

            elif not isinstance(ext, basestring):
                raise PrefixError('Extensions must be a list of strings')

            if not isinstance(ext, unicode):
                ext = unicode(ext, 'utf-8')

            if self.extensions.count(ext)==0:
                self.extensions.append(ext)
コード例 #7
0
        def __init__(self):
            self.log = SoundforestLogger().default_stream
            list.__init__(self)
            self.db = ConfigDB()

            common_prefixes = set(DEFAULT_PATHS + [prefix.path for prefix in self.db.prefixes])

            for path in common_prefixes:
                for name, codec in self.db.codecs.items():
                    prefix_path = os.path.join(path, name)
                    prefix = MusicTreePrefix(prefix_path, [codec.name] + codec.extensions)
                    self.register_prefix(prefix)

                if 'm4a' in self.db.codecs.keys():
                    prefix_path = os.path.join(path, 'm4a')
                    prefix = MusicTreePrefix(prefix_path, self.db.codecs.extensions('m4a'))
                    self.register_prefix(prefix)

            itunes_prefix = MusicTreePrefix(ITUNES_MUSIC, self.db.codecs.extensions('m4a'))
            self.register_prefix(itunes_prefix)
            self.load_user_config()
コード例 #8
0
ファイル: formats.py プロジェクト: pombreda/soundforest
    def __init__(self, path):
        self.log =  SoundforestLogger().default_stream
        self.path = path_string(path)
        self.codec = None
        self.description = None
        self.is_metadata = False

        self.codec = match_codec(path)
        if self.codec is not None:
            self.description = self.codec.description.lower()

        else:
            m = match_metadata(path)
            if m:
                self.is_metadata = True
                self.description = m.description.lower()

            elif os.path.isdir(path):
                self.description = 'unknown directory'

            else:
                self.description = 'unknown file format'
コード例 #9
0
 def __init__(self, name):
     threading.Thread.__init__(self)
     self.log = SoundforestLogger().default_stream
     self.status = 'not running'
     self.setDaemon(True)
     self.setName(name)
コード例 #10
0
ファイル: formats.py プロジェクト: pombreda/soundforest
Guessing of supported file formats and codecs based on extensions

"""

import os
import tempfile

from subprocess import Popen, PIPE

from soundforest import normalized, SoundforestError, CommandPathCache
from soundforest.config import ConfigDB
from soundforest.defaults import SOUNDFOREST_CACHE_DIR
from soundforest.log import SoundforestLogger
from soundforest.metadata import Metadata

logger = SoundforestLogger().default_stream

TAG_PARSERS = {
    'm4a':      'soundforest.tags.formats.aac.aac',
    'm4r':      'soundforest.tags.formats.aac.aac',
    'mp3':      'soundforest.tags.formats.mp3.mp3',
    'flac':     'soundforest.tags.formats.flac.flac',
    'vorbis':   'soundforest.tags.formats.vorbis.vorbis',
}

PATH_CACHE = CommandPathCache()
PATH_CACHE.update()

db = ConfigDB()

def filter_available_command_list(commands):
コード例 #11
0
ファイル: config.py プロジェクト: pombreda/soundforest
 def __init__(self, db):
     self.log = SoundforestLogger().default_stream
     self.db = db