def test(self, path, audio_file): mt = guessMimetype(path) if mt and mt.startswith("image/"): name, ext = os.path.splitext(os.path.basename(path)) if name not in VALID_ARTWORK_NAMES: return [(-10, "Artwork file not in %s" % str(VALID_ARTWORK_NAMES))] return None
def test(self, path, audio_file): mt = guessMimetype(path) for name in os.path.split(path): if name.startswith('.'): return [(-100, "Hidden file type")] if mt not in VALID_MIME_TYPES: return [(-100, "Unsupported file type: %s" % mt)] return None
def _compute(self, file, audio_file): mt = guessMimetype(file) if audio_file: self[self.SUPPORTED_AUDIO] += 1 elif mt and mt.startswith("audio/"): self[self.UNSUPPORTED_AUDIO] += 1 elif os.path.basename(file).startswith('.'): self[self.HIDDEN_FILES] += 1 else: self[self.OTHER_FILES] += 1
def set_mp3_album_tags(data: Dict[str, str], tag: id3.Tag, episode_num: int): # set album title and cover image tag.album = data["album"] image_type = id3.frames.ImageFrame.FRONT_COVER image_file = os.path.join("/srv", data["cover"].lstrip("/")) image_mime = mimetype.guessMimetype(image_file) # set cover image with open(image_file, "rb") as f: tag.images.set(image_type, f.read(), image_mime, "") # set various meta info tag.artist = data["artist"] tag.track_num = (episode_num, episode_num) tag.title = Template(data["title"]).substitute(episode_num=episode_num) tag.release_date = str(date.today()) tag.genre = "Podcast"
def find_mp3_files_in_input_directory(self): mp3files = [] mp3_file_by_track_num = dict() sort_order_index = 0 for input_file in natsort.natsorted(listdir(self.input_directory)): file_path = join(self.input_directory, input_file) if isfile(file_path): mime_type = guessMimetype(file_path) if mime_type in MP3_MIME_TYPES: sort_order_index = sort_order_index + 1 mp3_file_object = eyed3.load(file_path) # using sort order index as track number can't be relied # upon especially if multiple albums in the same directory" mp3_file_object_track_num = sort_order_index try: self.album = mp3_file_object.tag.album except AttributeError: fallback_album = os.path.basename(self.input_directory) print( f"{file_path} does not have a valid album - using {fallback_album} instead" ) self.album = fallback_album try: self.artist = mp3_file_object.tag.artist except AttributeError: fallback_artist = os.path.basename(self.input_directory) print( f"{file_path} does not have a valid artist - using {fallback_artist} instead" ) self.artist = fallback_artist mp3_file_by_track_num[mp3_file_object_track_num] = file_path sorted_track_nums = sorted(mp3_file_by_track_num.keys()) for sorted_track_num in sorted_track_nums: mp3files.append(mp3_file_by_track_num[sorted_track_num]) return mp3files
def handleFile(self, f, *args, **kwargs): self._num_visited += 1 if self.args.parse_files: try: super().handleFile(f) except Exception as ex: log.critical(ex, exc_info=ex) else: self._num_loaded += 1 if self.magic == "pymagic": mtype = _python_magic.guess_type(f) else: mtype = guessMimetype(f) self.mime_types[mtype] += 1 if not self.args.hide_notfound: if mtype is None and Path(f).suffix.lower() in (".mp3", ): print("None mimetype:", f) if self.args.status: print(".", end="", flush=True)
def mime_type(self): if self._mime_type: return self._mime_type self._mime_type = guessMimetype(self.file_path) return self._mime_type
def _compute(self, file, audio_file): mt = guessMimetype(file) self[mt] += 1
def testSampleMimeTypes(ext, valid_types): guessed = mimetype.guessMimetype(os.path.join(DATA_D, "sample.%s" % ext)) assert guessed in valid_types