diff --git a/src/goof.py b/src/goof.py index e0c2dbb..bcbaae3 100644 --- a/src/goof.py +++ b/src/goof.py @@ -1,19 +1,12 @@ import music_kraken as mk print(mk.__file__) -""" -from music_kraken.audio_source import ( - fetch_sources, - fetch_audios -) -print(fetch_sources) +song_list = mk.cache.get_custom_track([]) -from music_kraken.database import ( - cache -) -""" +print(mk.cache, len(song_list)) +print(song_list) -print(mk.cache, len(mk.cache.get_tracks_without_src())) - -mk.fetch_sources(mk.cache.get_tracks_without_src(), skip_existing_files=False) -mk.fetch_audios(mk.cache.get_tracks_to_download(), override_existing=True) +for song in song_list: + print() + print(song) + print(song.json_data) diff --git a/src/music_kraken/database/__init__.py b/src/music_kraken/database/__init__.py index 3a2685a..6958f2a 100644 --- a/src/music_kraken/database/__init__.py +++ b/src/music_kraken/database/__init__.py @@ -4,7 +4,8 @@ from . import ( artist, metadata, source, - target + target, + lyrics ) Song = song.Song @@ -12,5 +13,6 @@ Artist = artist.Artist Source = source.Source Target = target.Target Metadata = metadata.Metadata +Lyrics = lyrics.Lyrics cache = temp_database.TempDatabase() diff --git a/src/music_kraken/database/lyrics.py b/src/music_kraken/database/lyrics.py index 4a9ab0b..96ac06b 100644 --- a/src/music_kraken/database/lyrics.py +++ b/src/music_kraken/database/lyrics.py @@ -1,7 +1,4 @@ class Lyrics: - def __init__(self, text: str = None, language: str = None) -> None: + def __init__(self, text: str, language: str) -> None: self.text = text self.language = language - - def set_lyrics(self, text: str, language: str): - pass diff --git a/src/music_kraken/database/song.py b/src/music_kraken/database/song.py index 0922e29..cd3383e 100644 --- a/src/music_kraken/database/song.py +++ b/src/music_kraken/database/song.py @@ -47,6 +47,9 @@ class Song: def __str__(self) -> str: return f"\"{self.title}\" by {', '.join([str(a) for a in self.artists])}" + def __repr__(self) -> str: + return self.__str__() + def get_metadata(self): return self.metadata.get_all_metadata() diff --git a/src/music_kraken/lyrics/genius.py b/src/music_kraken/lyrics/genius.py index d95e13a..db4b8da 100644 --- a/src/music_kraken/lyrics/genius.py +++ b/src/music_kraken/lyrics/genius.py @@ -3,6 +3,9 @@ from typing import List from bs4 import BeautifulSoup import pycountry +from ..database import ( + Lyrics +) from ..utils.shared import * from ..utils import phonetic_compares from ..utils.object_handeling import get_elem_from_obj @@ -133,39 +136,6 @@ def search(artist: str, track: str) -> list: if __name__ == "__main__": logging.basicConfig(level=logging.DEBUG) - """ - song = Song( - {'highlights': [], 'index': 'song', 'type': 'song', - 'result': {'_type': 'song', 'annotation_count': 0, 'api_path': '/songs/6142483', - 'artist_names': 'Psychonaut 4', - 'full_title': 'Sana Sana Sana, Cura Cura Cura by\xa0Psychonaut\xa04', - 'header_image_thumbnail_url': 'https://images.genius.com/f9f67a3f9c801f697fbaf68c7efd3599.300x300x1.jpg', - 'header_image_url': 'https://images.genius.com/f9f67a3f9c801f697fbaf68c7efd3599.651x651x1.jpg', - 'id': 6142483, 'instrumental': False, 'language': 'en', 'lyrics_owner_id': 4443216, - 'lyrics_state': 'complete', 'lyrics_updated_at': 1604698709, - 'path': '/Psychonaut-4-sana-sana-sana-cura-cura-cura-lyrics', 'pyongs_count': None, - 'relationships_index_url': 'https://genius.com/Psychonaut-4-sana-sana-sana-cura-cura-cura-sample', - 'release_date_components': {'year': 2020, 'month': 7, 'day': 1}, - 'release_date_for_display': 'July 1, 2020', - 'release_date_with_abbreviated_month_for_display': 'Jul. 1, 2020', - 'song_art_image_thumbnail_url': 'https://images.genius.com/f9f67a3f9c801f697fbaf68c7efd3599.300x300x1.jpg', - 'song_art_image_url': 'https://images.genius.com/f9f67a3f9c801f697fbaf68c7efd3599.651x651x1.jpg', - 'stats': {'unreviewed_annotations': 0, 'hot': False}, 'title': 'Sana Sana Sana, Cura Cura Cura', - 'title_with_featured': 'Sana Sana Sana, Cura Cura Cura', 'updated_by_human_at': 1647353214, - 'url': 'https://genius.com/Psychonaut-4-sana-sana-sana-cura-cura-cura-lyrics', - 'featured_artists': [], 'primary_artist': {'_type': 'artist', 'api_path': '/artists/1108956', - 'header_image_url': 'https://images.genius.com/ff13efc74a043237cfca3fc0a6cb12dd.1000x563x1.jpg', - 'id': 1108956, - 'image_url': 'https://images.genius.com/25ff7cfdcb6d92a9f19ebe394a895736.640x640x1.jpg', - 'index_character': 'p', 'is_meme_verified': False, - 'is_verified': False, 'name': 'Psychonaut 4', - 'slug': 'Psychonaut-4', - 'url': 'https://genius.com/artists/Psychonaut-4'}}}, - {'artist': 'Psychonaut 4', 'track': 'Sana Sana Sana, Cura Cura Cura'} - ) - print(song.fetch_lyrics()) - """ - songs = search("Zombiez", "WALL OF Z") for song in songs: print(song) diff --git a/src/music_kraken/lyrics/lyrics.py b/src/music_kraken/lyrics/lyrics.py index 51e5215..f10eeb7 100644 --- a/src/music_kraken/lyrics/lyrics.py +++ b/src/music_kraken/lyrics/lyrics.py @@ -3,8 +3,10 @@ from mutagen.id3 import ID3, USLT from ..utils.shared import * from . import genius - -from ..database.temp_database import temp_database +from ..database import ( + Song, + cache +) logger = LYRICS_LOGGER @@ -32,8 +34,7 @@ I have written that Rhythmbox plugin: https://github.com/HeIIow2/rythmbox-id3-ly # https://code.activestate.com/recipes/577138-embed-lyrics-into-mp3-files-using-mutagen-uslt-tag/ -def add_lyrics(file_name, lyrics): - file_path = os.path.join(MUSIC_DIR, file_name) +def add_lyrics(file_path: str, lyrics): if not os.path.exists(file_path): return @@ -49,46 +50,20 @@ def add_lyrics(file_name, lyrics): tags.save(file_path) -def fetch_single_lyrics(row: dict): - artists = [artist['name'] for artist in row['artists']] - track = row['title'] - id_ = row['id'] - - logger.info(f"try fetching lyrics for \"{track}\" by \"{', '.join(artists)}") +def fetch_single_lyrics(song: Song): + logger.info(f"try fetching lyrics for {song}") lyrics = [] - for artist in artists: - lyrics.extend(genius.search(artist, track)) + for artist in song.get_artist_names(): + lyrics.extend(genius.search(artist, song.title)) if len(lyrics) == 0: return logger.info("found lyrics") - temp_database.add_lyrics(id_, lyrics=lyrics[0]) - add_lyrics(row['file'], lyrics[0]) + cache.add_lyrics(song.id, lyrics=lyrics[0]) + add_lyrics(song.target.file, lyrics[0]) def fetch_lyrics(): - for row in temp_database.get_tracks_for_lyrics(): - fetch_single_lyrics(row) - - -if __name__ == "__main__": - import tempfile - import os - - temp_folder = "music-downloader" - temp_dir = os.path.join(tempfile.gettempdir(), temp_folder) - if not os.path.exists(temp_dir): - os.mkdir(temp_dir) - - logging.basicConfig(level=logging.DEBUG) - db_logger = logging.getLogger("database") - db_logger.setLevel(logging.DEBUG) - - database = db.Database(os.path.join(temp_dir, "metadata.db"), - os.path.join(temp_dir, "database_structure.sql"), - "https://raw.githubusercontent.com/HeIIow2/music-downloader/new_metadata/assets/database_structure.sql", - db_logger, - reset_anyways=False) - - fetch_lyrics() + for song in cache.get_tracks_for_lyrics(): + fetch_single_lyrics(song)