コード例 #1
0
ファイル: song.py プロジェクト: MrRikkert/PyMusic
def get(title: str, artists: List[str]) -> SongDb:
    """Get song from database. Case insensitive

    ## Arguments:
    - `title`: `str`:
        - Title of the song
    - `artists`: `List[str]`:
        - Artists of the song

    ## Returns:
    - `SongDb`:
        - The song, Returns `None` when no album is found
    """
    query = orm.select(s for s in SongDb if s.title == title.lower())
    for artist in artists:
        _artist = artist_logic.get_by_name(artist)
        if _artist:
            query = query.filter(lambda s: _artist in s.artists)
    query = query.filter(lambda s: orm.count(s.artists) == len(artists))
    return query.first()
コード例 #2
0
ファイル: test_artist.py プロジェクト: MrRikkert/PyMusic
def test_get_artist_by_name_existing_reversed():
    db_artist = mixer.blend(ArtistDb, name="first second")
    artist = artist_logic.get_by_name(name="second first")
    assert artist is not None
    assert db_artist.name == artist.name
コード例 #3
0
ファイル: test_artist.py プロジェクト: MrRikkert/PyMusic
def test_get_artist_by_name_non_existing():
    artist = artist_logic.get_by_name(name="hallo")
    assert artist is None
コード例 #4
0
ファイル: test_artist.py プロジェクト: MrRikkert/PyMusic
def test_get_artist_by_name_case_difference():
    db_artist = artist_logic.add("Artist")
    artist = artist_logic.get_by_name(name="artist")
    assert artist is not None
    assert db_artist.name == artist.name
コード例 #5
0
ファイル: test_artist.py プロジェクト: MrRikkert/PyMusic
def test_get_artist_by_name_cleaned_name():
    db_artist = mixer.blend(ArtistDb, name="test")
    artist = artist_logic.get_by_name(name="test (cv. test1)")
    assert artist is not None
    assert db_artist.name == artist.name
コード例 #6
0
ファイル: test_artist.py プロジェクト: MrRikkert/PyMusic
def test_get_artist_by_name_existing():
    db_artist = mixer.blend(ArtistDb)
    artist = artist_logic.get_by_name(name=db_artist.name)
    assert artist is not None
    assert db_artist.name == artist.name