示例#1
0
def test_book_title_fallback_is_parent_directory_name(discoverer_mocks):
    from cozy.media.tag_reader import TagReader

    tag_reader = TagReader("file://abc/def hij/a nice file.mp3",
                           discoverer_mocks.info)

    assert tag_reader._get_book_name_fallback() == "def hij"
示例#2
0
def test_track_name_fallback_is_filename(discoverer_mocks):
    from cozy.media.tag_reader import TagReader

    tag_reader = TagReader("file://abc/def/a nice file.mp3",
                           discoverer_mocks.info)

    assert tag_reader._get_track_name_fallback() == "a nice file"
示例#3
0
def test_default_disk_number(discoverer_mocks):
    from cozy.media.tag_reader import TagReader

    discoverer_mocks.tags.get_uint_index.return_value = False, 999

    tag_reader = TagReader("uri", discoverer_mocks.info)

    assert tag_reader._get_disk() == 1
示例#4
0
def test_multiple_readers_returned_as_separated_list(discoverer_mocks):
    from cozy.media.tag_reader import TagReader

    discoverer_mocks.tags.get_string_index.side_effect = get_true_and_numbered_string
    discoverer_mocks.tags.get_tag_size.return_value = 2

    tag_reader = TagReader("uri", discoverer_mocks.info)
    assert tag_reader._get_reader() == "string 0; string 1"
示例#5
0
def test_author_reader_fallback(mocker, discoverer_mocks):
    from cozy.media.tag_reader import TagReader

    discoverer_mocks.tags.get_string_index.return_value = False, []

    tag_reader = TagReader("uri", discoverer_mocks.info)

    assert tag_reader._get_author() == "Unknown"
    assert tag_reader._get_reader() == "Unknown"
示例#6
0
def test_get_m4b_chapters_creates_single_chapter_if_none_present(mocker, discoverer_mocks):
    discoverer_mocks.info.get_duration = lambda: 10 * (10 ** 9)
    discoverer_mocks.tags.get_string_index.return_value = True, "a nice file"
    discoverer_mocks.tags.get_uint_index.return_value = True, 1

    from cozy.media.tag_reader import TagReader

    tag_reader = TagReader("file://abc/def/01 a nice file.m4b", discoverer_mocks.info)
    chapters = tag_reader._get_m4b_chapters(M4B([]))

    assert len(chapters) == 1
    assert chapters[0].name == "a nice file"
    assert chapters[0].position == 0
    assert chapters[0].length == 10
    assert chapters[0].number == 1
示例#7
0
def test_get_m4b_chapters(mocker, discoverer_mocks):
    discoverer_mocks.info.get_duration = lambda: 10 * (10 ** 9)

    from cozy.media.tag_reader import TagReader

    tag_reader = TagReader("file://abc/def/01 a nice file.m4b", discoverer_mocks.info)
    chapters = tag_reader._get_m4b_chapters(M4B([M4BChapter("test", 0), M4BChapter("testa", 1)]))

    assert len(chapters) == 2
    assert chapters[0].name == "test"
    assert chapters[0].position == 0
    assert chapters[0].length == 1
    assert chapters[0].number == 1
    assert chapters[1].name == "testa"
    assert chapters[1].position == 1 * (10 ** 9)
    assert chapters[1].length == 9
    assert chapters[1].number == 2
示例#8
0
    def get_media_data(self) -> MediaFile:
        if not self._has_audio_file_ending():
            raise NotAnAudioFile

        try:
            discoverer_info: GstPbutils.DiscovererInfo = self.discoverer.discover_uri(
                self.uri)
        except Exception as e:
            log.info(
                "Skipping file because it couldn't be detected: {}".format(
                    self.uri))
            raise AudioFileCouldNotBeDiscovered(self.uri)

        if self._is_valid_audio_file(discoverer_info):
            tag_reader = TagReader(self.uri, discoverer_info)
            return tag_reader.get_tags()
        else:
            raise AudioFileCouldNotBeDiscovered(self.uri)
示例#9
0
    def get_media_data(self) -> MediaFile:
        if not self.uri.lower().endswith(
            ('.mp3', '.ogg', '.flac', '.m4a', '.m4b', '.wav', '.opus')):
            raise NotAnAudioFile

        try:
            discoverer_info: GstPbutils.DiscovererInfo = self.discoverer.discover_uri(
                self.uri)
        except Exception as e:
            log.info(
                "Skipping file because it couldn't be detected: {}".format(
                    self.uri))
            raise AudioFileCouldNotBeDiscovered(self.uri)

        if self._is_valid_audio_file(discoverer_info):
            tag_reader = TagReader(self.uri, discoverer_info)
            return tag_reader.get_tags()
        else:
            raise AudioFileCouldNotBeDiscovered(self.uri)