completed the refactored and improved version of the metadata search module :3
This commit is contained in:
parent
994726e09c
commit
9a771b6673
@ -50,6 +50,12 @@ class Search:
|
|||||||
|
|
||||||
self.options_history.append(new_choices)
|
self.options_history.append(new_choices)
|
||||||
|
|
||||||
|
def get_previous_options(self):
|
||||||
|
self.options_history.pop(-1)
|
||||||
|
print()
|
||||||
|
for i, choice in enumerate(self.options_history[-1]):
|
||||||
|
print(f"{str(i).zfill(2)}) {choice}")
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def fetch_new_options_from_artist(artist: Option):
|
def fetch_new_options_from_artist(artist: Option):
|
||||||
"""
|
"""
|
||||||
@ -160,7 +166,7 @@ class Search:
|
|||||||
"""
|
"""
|
||||||
results = []
|
results = []
|
||||||
|
|
||||||
result = musicbrainzngs.get_recording_by_id(recording.id,includes=["artists", "releases"])
|
result = musicbrainzngs.get_recording_by_id(recording.id, includes=["artists", "releases"])
|
||||||
recording_data = result['recording']
|
recording_data = result['recording']
|
||||||
release_datas = get_elem_from_obj(recording_data, ['release-list'])
|
release_datas = get_elem_from_obj(recording_data, ['release-list'])
|
||||||
artist_datas = get_elem_from_obj(recording_data, ['artist-credit'], return_if_none={})
|
artist_datas = get_elem_from_obj(recording_data, ['artist-credit'], return_if_none={})
|
||||||
@ -233,6 +239,7 @@ class Search:
|
|||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def search_artist_from_text(artist: str = None):
|
def search_artist_from_text(artist: str = None):
|
||||||
|
print(artist)
|
||||||
result = musicbrainzngs.search_artists(artist=artist)
|
result = musicbrainzngs.search_artists(artist=artist)
|
||||||
artist_list = get_elem_from_obj(result, ['artist-list'], return_if_none=[])
|
artist_list = get_elem_from_obj(result, ['artist-list'], return_if_none=[])
|
||||||
|
|
||||||
@ -248,6 +255,8 @@ class Search:
|
|||||||
self.logger.error("either artist, release group or recording has to be set")
|
self.logger.error("either artist, release group or recording has to be set")
|
||||||
return -1
|
return -1
|
||||||
|
|
||||||
|
print()
|
||||||
|
|
||||||
if recording is not None:
|
if recording is not None:
|
||||||
results = self.search_recording_from_text(artist=artist, release_group=release_group, recording=recording)
|
results = self.search_recording_from_text(artist=artist, release_group=release_group, recording=recording)
|
||||||
elif release_group is not None:
|
elif release_group is not None:
|
||||||
@ -257,7 +266,6 @@ class Search:
|
|||||||
|
|
||||||
self.append_new_choices(results)
|
self.append_new_choices(results)
|
||||||
|
|
||||||
|
|
||||||
def search_from_query(self, query: str):
|
def search_from_query(self, query: str):
|
||||||
"""
|
"""
|
||||||
mit # wird ein neuer Parameter gestartet
|
mit # wird ein neuer Parameter gestartet
|
||||||
@ -281,7 +289,7 @@ class Search:
|
|||||||
for parameter in parameters:
|
for parameter in parameters:
|
||||||
splitted = parameter.split(" ")
|
splitted = parameter.split(" ")
|
||||||
type_ = splitted[0]
|
type_ = splitted[0]
|
||||||
input_ = " ".join(splitted[:1]).strip()
|
input_ = " ".join(splitted[1:]).strip()
|
||||||
|
|
||||||
if type_ == "a":
|
if type_ == "a":
|
||||||
artist = input_
|
artist = input_
|
||||||
@ -290,10 +298,11 @@ class Search:
|
|||||||
release_group = input_
|
release_group = input_
|
||||||
continue
|
continue
|
||||||
if type_ == "t":
|
if type_ == "t":
|
||||||
release_group = input_
|
recording = input_
|
||||||
continue
|
continue
|
||||||
|
|
||||||
self.search_recording_from_text(artist=artist, release_group=release_group, recording=recording)
|
self.search_from_text(artist=artist, release_group=release_group, recording=recording)
|
||||||
|
|
||||||
|
|
||||||
def automated_demo():
|
def automated_demo():
|
||||||
search = Search(logger=logger_)
|
search = Search(logger=logger_)
|
||||||
@ -308,9 +317,28 @@ def automated_demo():
|
|||||||
# choose a recording
|
# choose a recording
|
||||||
search.choose(4)
|
search.choose(4)
|
||||||
|
|
||||||
|
|
||||||
|
def interactive_demo():
|
||||||
|
search = Search(logger=logger_)
|
||||||
|
while True:
|
||||||
|
input_ = input("q to quit, .. for previous options, int for this element, str to search for query, ok to download: ")
|
||||||
|
input_.strip()
|
||||||
|
if input_.lower() == "ok":
|
||||||
|
break
|
||||||
|
if input_.lower() == "q":
|
||||||
|
break
|
||||||
|
if input_.lower() == "..":
|
||||||
|
search.get_previous_options()
|
||||||
|
continue
|
||||||
|
if input_.isdigit():
|
||||||
|
search.choose(int(input_))
|
||||||
|
continue
|
||||||
|
search.search_from_query(input_)
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
logging.basicConfig(level=logging.DEBUG)
|
logging.basicConfig(level=logging.DEBUG)
|
||||||
logger_ = logging.getLogger("test")
|
logger_ = logging.getLogger("test")
|
||||||
|
|
||||||
search = Search(logger=logger_)
|
interactive_demo()
|
||||||
search.search_from_query("#a Psychonaut 4 #r Tired, Numb and #t Drop by Drop")
|
|
||||||
|
Loading…
Reference in New Issue
Block a user