def mp3tagGrabber(tag, filename, tagName, language, tagNameAlt=None, force=False): #try mutagen first t = None if tagNameAlt != None: tagNameMut = tagNameAlt else: tagNameMut = tagName if tag != None: t = mutagenGrabber(tag, tagNameMut, language) else: force = True if (t is None or len(t) == 0) and force == True: try: #then tagv2 tagv2 = ID3v2.ID3v2(filename, language) t = tagv2.__dict__[tagName].decode('utf-8') except: pass try: #else, tagv1 if t is None or len(t) == 0: try: tagv1 = ID3.ID3(filename) t = tagv1.__dict__[tagName].decode('utf-8') except: pass except: pass return t
def save(self, output_file_path): """Saves this file to an output location Args: output_file_path: string path to the output location. May be the same location as the file to overwrite. Returns: None """ def extract_track_data(file_path): """Returns the actual MP3 data from a file, without tags Args: file_path: string path to the music file. Returns: A byte array of the track MP3 data """ with open(file_path, "rb") as f: v1_tag_size = ID3v1.calculate_tag_size(f) v2_tag_size = ID3v2.calculate_tag_size(f) track_data = f.read() if v2_tag_size > 0: track_data = track_data[v1_tag_size:-v2_tag_size] else: track_data = track_data[v1_tag_size:] return track_data track_data = extract_track_data(self.file_path) id3v1_tag = ID3v1.create_tag_string(self.final) id3v2_tag = ID3v2.create_tag_string(self.final, self.file_path) with open(output_file_path, "wb") as f: f.write(id3v2_tag + track_data + id3v1_tag)
def load_all_data(self): """ Loads TrackData for the file from all available sources. Returns: None """ self.fp = FilePathParser.read_file_path_data(self.file_path, self.cleaned_filename) self.v1 = ID3v1.read_tag_data(self.file_path) self.v2 = ID3v2.read_tag_data(self.file_path)
def extract_track_data(file_path): """Returns the actual MP3 data from a file, without tags Args: file_path: string path to the music file. Returns: A byte array of the track MP3 data """ with open(file_path, "rb") as f: v1_tag_size = ID3v1.calculate_tag_size(f) v2_tag_size = ID3v2.calculate_tag_size(f) track_data = f.read() if v2_tag_size > 0: track_data = track_data[v1_tag_size:-v2_tag_size] else: track_data = track_data[v1_tag_size:] return track_data
def __init__(self): self.ID3v1 = ID3v1() self.ID3v2 = ID3v2()