예제 #1
0
    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
예제 #2
0
    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
예제 #3
0
    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
예제 #4
0
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"
예제 #5
0
    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
예제 #6
0
파일: mimetype.py 프로젝트: peppy0510/eyeD3
    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)
예제 #7
0
 def mime_type(self):
     if self._mime_type:
         return self._mime_type
     self._mime_type = guessMimetype(self.file_path)
     return self._mime_type
예제 #8
0
 def _compute(self, file, audio_file):
     mt = guessMimetype(file)
     self[mt] += 1
예제 #9
0
def testSampleMimeTypes(ext, valid_types):
    guessed = mimetype.guessMimetype(os.path.join(DATA_D, "sample.%s" % ext))
    assert guessed in valid_types