Exemple #1
0
    def __init__(self, path):
        self.file = MP3(path, ID3=EasyID3)
        self.id3file = ID3(path)

        self.bitrateModeTable = {
            BitrateMode.UNKNOWN: "CBR",
            BitrateMode.CBR: "CBR",
            BitrateMode.VBR: "VBR",
            BitrateMode.ABR: "ABR"
        }

        EasyID3.RegisterTextKey("initialkey", "TKEY")
        EasyID3.RegisterTextKey("comment", "COMM")
        EasyID3.RegisterTextKey("modified", "TPE4")
        EasyID3.RegisterTXXXKey('tiktag', 'TikTag')
Exemple #2
0
    def __init__(self, stand_alone=False):
        self.data_dir = os.environ.get('KLANGBECKEN_DATA',
                                       '/var/lib/klangbecken')
        self.secret = os.environ['KLANGBECKEN_API_SECRET']
        self.url_map = Map()

        # register the TXXX key so that we can access it later as
        # mutagenfile['rg_track_gain']
        EasyID3.RegisterTXXXKey(key='track_gain', desc='REPLAYGAIN_TRACK_GAIN')
        EasyID3.RegisterTXXXKey(key='cue_in', desc='CUE_IN')
        EasyID3.RegisterTXXXKey(key='cue_out', desc='CUE_OUT')

        root_url = '/<any(' + ', '.join(PLAYLISTS) + '):category>/'

        mappings = [
            ('/login/', ('GET', 'POST'), 'login'),
            ('/logout/', ('POST', ), 'logout'),
            (root_url, ('GET', ), 'list'),
            (root_url + '<filename>', ('GET', ), 'get'),
            (root_url, ('POST', ), 'upload'),
            (root_url + '<filename>', ('PUT', ), 'update'),
            (root_url + '<filename>', ('DELETE', ), 'delete'),
        ]

        if stand_alone:
            # Serve html and prefix calls to api
            mappings = [('/api' + path, methods, endpoint)
                        for path, methods, endpoint in mappings]
            mappings.append(('/', ('GET', ), 'static'))
            mappings.append(('/<path:path>', ('GET', ), 'static'))
            cur_dir = os.path.dirname(os.path.realpath(__file__))
            dist_dir = open(pjoin(cur_dir, '.dist_dir')).read().strip()
            self.static_dir = pjoin(cur_dir, dist_dir)

        for path, methods, endpoint in mappings:
            self.url_map.add(Rule(path, methods=methods, endpoint=endpoint))
Exemple #3
0
    from collections.abc import MutableMapping
except ImportError:
    # Python 2
    from UserDict import DictMixin as MutableMapping

# Set up logging
logFormatter = logging.Formatter('%(asctime)s %(levelname)s: %(message)s')
logger = logging.getLogger(__name__)
logger.setLevel(logging.INFO)
logger.handlers = []
logger.addHandler(logging.StreamHandler())
for handler in logger.handlers:
    handler.setFormatter(logFormatter)

# Support checksums for MP3 and M4A/MP4
EasyID3.RegisterTXXXKey('transfercoder_src_checksum',
                        'TRANSFERCODER_SRC_CHECKSUM')
EasyMP4Tags.RegisterFreeformKey('transfercoder_src_checksum',
                                'Transfercoder Source Checksum')

def call_silent(cmd: Union[str, Sequence[str]], *args, **kwargs) -> int:
    """Like subprocess.call, but redirects stdin/out/err to null device."""
    nullsrc = open(os.devnull, "r")
    nullsink = open(os.devnull, "w")
    kwargs['stdin'] = nullsrc
    kwargs['stdout'] = nullsink
    kwargs['stderr'] = nullsink
    logger.debug("Calling command: %s", repr(cmd))
    return call(cmd, *args, **kwargs)

def del_hidden(paths: List[str]) -> None:
    """Remove hidden paths from list of paths
Exemple #4
0
    'Album': 'work_name',
    'Tags': 'ジャンル',
    'Series': 'シリーズ名',
    'Event': 'イベント',
}

for k in [
        'Content rating',
        'Original format',
        'Tags',
        'Series',
        'Year',
        'Illustrator',
        'Event',
]:
    EasyID3.RegisterTXXXKey(k, k)

brackets = '()[]{}<>【】『』「」()'


def opposite_of(bracket):
    index = brackets.find(bracket)
    if index % 2 == 0:
        return brackets[index + 1]
    return brackets[index - 1]


def get_relative_path_of(rjcode, folder=None):
    if folder is not None:
        y, m = localtime(os.path.getmtime(folder))[:2]
    else:
Exemple #5
0
# knowledge of the CeCILL license and that you accept its terms.

# Author: Guillaume Pellerin <*****@*****.**>

import os
import string
import datetime
from mutagen.easyid3 import EasyID3
from mutagen.mp3 import MP3, MPEGInfo
from mutagen import id3
from .utils import *

EasyID3.valid_keys["comment"] = "COMM::'XXX'"
EasyID3.valid_keys["copyright"] = "TCOP::'XXX'"
EasyID3.valid_keys["country"] = "TXXX:COUNTRY:'XXX'"
EasyID3.RegisterTXXXKey("country", "COUNTRY")


class Mp3(MediaBase):
    """A MP3 file object"""

    def __init__(self, newmedia):
        MediaBase.__init__(self)

        self.description = "MPEG audio Layer III"
        self.mime_type = 'audio/mpeg'
        self.extension = 'mp3'
        self.format = 'MP3'

        self.media = newmedia
        self.source = self.media