Example #1
0
 def add_tag_m4a(self, fichero, name_cancion, parDir,
                 directorio):  # No Funciona
     patronMusicam4a = re.compile('.\.m4a')
     if patronMusicam4a.search(str(fichero)):
         name_cancion = name_cancion.rstrip(
             ".m4a"
         )  # ahora al nombre le quitamos la extension que queda fea.
         try:
             print(
                 "file", os.path.basename(str(fichero)), "directory_1",
                 os.path.basename(str(self.ruta)), "dir_2:",
                 os.path.basename(
                     os.path.dirname(os.path.normpath(str(self.ruta)))))
             EasyMP4Tags.RegisterTextKey("artist", "@ART")
             audioTag = EasyMP4(str(fichero))
             audioTag['title'] = name_cancion
             audioTag['artist'] = parDir
             audioTag['album'] = directorio
             EasyMP4.RegisterTextKey("album_artist", "TPE2")
             audioTag['album_artist'] = ""
             print(audioTag['title'], "nuevo")
             audioTag.save()
         except:
             audioTag = mutagen.File(fichero, easy=True)
             audioTag.add_tags()
             audioTag['title'] = name_cancion
             audioTag['album'] = directorio
             audioTag['artist'] = parDir
             print("No existe un tag previo")
             audioTag.save(v2_version=3)
             audioTag.save()
Example #2
0
def get_mutagen_audio_options():
    """Build the list of options to give mutagen.File for reading
    audio tags according to the supported formats in the config.
    """

    formats = settings.SUPPORTED_FORMATS

    from mutagen.easyid3 import EasyID3FileType
    audio_options = [EasyID3FileType]
    for fmt in formats:
        if fmt == 'mp3':
            from mutagen.mp3 import EasyMP3

            # Add a key for the ID3 tag holding cover art information
            def cover_get(id3, key):
                for k in id3.keys():
                    if re.match(r'APIC:.*', k):
                        return [id3[k].data]
                return [None]

            EasyMP3.ID3.RegisterKey('cover', cover_get)

            audio_options.append(EasyMP3)
        elif fmt == 'mp4' or fmt == 'm4a':
            from mutagen.easymp4 import EasyMP4

            # Add a key for the ID3 tag holding cover art information
            EasyMP4.RegisterTextKey('cover', 'covr')

            audio_options.append(EasyMP4)
        elif fmt == 'ogg':
            from mutagen.oggvorbis import OggVorbis
            from mutagen.oggspeex import OggSpeex
            from mutagen.oggflac import OggFLAC
            audio_options += [OggVorbis, OggSpeex, OggFLAC]
        elif fmt == 'flac':
            from mutagen.flac import FLAC
            audio_options.append(FLAC)
        elif fmt == 'wma':
            from mutagen.asf import ASF
            audio_options.append(ASF)
        else:
            LOGGER.info('"%s" support not implemented yet' % fmt)

    return audio_options
Example #3
0
File: scdl.py Project: 7x11x13/scdl
import time
import warnings
import math
import shutil
import requests
import re
import tempfile
import codecs
import shlex
import shutil

import configparser
import mutagen

from mutagen.easymp4 import EasyMP4
EasyMP4.RegisterTextKey('website', '\xa9cmt')

from docopt import docopt
from clint.textui import progress

from scdl import __version__, CLIENT_ID, ALT_CLIENT_ID
from scdl import client, utils

from datetime import datetime
import subprocess

logging.basicConfig(level=logging.INFO, format='%(message)s')
logging.getLogger('requests').setLevel(logging.WARNING)
logger = logging.getLogger(__name__)
logger.setLevel(logging.INFO)
logger.addFilter(utils.ColorizeFilter())
Example #4
0
import logging
import posixpath

import mutagen
from mutagen.easyid3 import EasyID3
from mutagen.easymp4 import EasyMP4
from PySide6.QtCore import *

from const import *
from utils import *

# can expand these if wanted
EasyMP4.RegisterTextKey("url", "purl")

logger = logging.getLogger(APPLICATION)


class Metadata:
    def __init__(self, song_path):
        self.pictures = []
        self.path = song_path
        self.tags = {}
        try:
            self.load_song(song_path)
        except Exception as err:
            logger.error(
                f"Could not load metadata for {song_path}: {err.__class__}: {err}"
            )

    def load_song(self, path):
        f = mutagen.File(path, easy=True)
Example #5
0
import os
import re
import shutil
import signal
import subprocess
import sys
import tempfile
import time
import warnings
from dataclasses import asdict
from datetime import datetime

import mutagen
from mutagen.easymp4 import EasyMP4

EasyMP4.RegisterTextKey("website", "\xa9cmt")
import requests
from clint.textui import progress
from docopt import docopt
from pathvalidate import sanitize_filename
from soundcloud import (AlbumPlaylist, BasicAlbumPlaylist, BasicTrack,
                        MiniTrack, SoundCloud, Track, User)

from scdl import (ALT_CLIENT_ID, CLIENT_ID, __version__, utils,
                  write_default_config)

logging.basicConfig(level=logging.INFO, format="%(message)s")
logging.getLogger("requests").setLevel(logging.WARNING)
logger = logging.getLogger(__name__)
logger.setLevel(logging.INFO)
logger.addFilter(utils.ColorizeFilter())