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()
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
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())
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)
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())