Tidal: Added top:// command to retrieve the top rated tracks for a provided artist. [Skip CI]
This commit is contained in:
parent
96af01279a
commit
12a4ee65c3
@ -3,6 +3,7 @@
|
||||
## Version 0.7
|
||||
|
||||
* Tidal:
|
||||
* Added a new search mode for the service to retrieve the top rated tracks of a provided artist. The sintax is top://artist.
|
||||
* In the settings dialog, you can control wether Albums, compilations and singles will be added when searching by artist (by using artist://...).
|
||||
* When searching by artists, results that belong to an album will be numbered.
|
||||
* Downloads will be tagged with title, album, artist and track number provided by tidal.
|
||||
|
@ -66,6 +66,10 @@ class interface(base.baseInterface):
|
||||
if text == "" or text == None:
|
||||
raise ValueError("Text must be passed and should not be blank.")
|
||||
log.debug("Retrieving data from Tidal...")
|
||||
# Check for top:// protocol.
|
||||
if text.startswith("top://"):
|
||||
text = text.replace("top://", "")
|
||||
return self.search_for_top(text)
|
||||
fieldtypes = ["artist", "album", "playlist"]
|
||||
field = "track"
|
||||
for i in fieldtypes:
|
||||
@ -114,6 +118,25 @@ class interface(base.baseInterface):
|
||||
self.results.append(s)
|
||||
log.debug("{0} results found.".format(len(self.results)))
|
||||
|
||||
def search_for_top(self, artist):
|
||||
search_response = self.session.search(value=artist, field="artist")
|
||||
self.results = []
|
||||
artist = search_response.artists[0].id
|
||||
results = self.session.get_artist_top_tracks(artist)
|
||||
for search_result in results:
|
||||
s = base.song(self)
|
||||
s.title = search_result.name
|
||||
s.artist = search_result.artist.name
|
||||
s.duration = seconds_to_string(search_result.duration)
|
||||
s.url = search_result.id
|
||||
s.tracknumber = str(search_result.track_num)
|
||||
s.album = search_result.album.name
|
||||
if search_result.album.num_tracks == None:
|
||||
s.single = True
|
||||
s.info = search_result
|
||||
self.results.append(s)
|
||||
log.debug("{0} results found.".format(len(self.results)))
|
||||
|
||||
def format_number(self, number):
|
||||
if number < 10:
|
||||
return "0%d" % (number)
|
||||
|
Loading…
Reference in New Issue
Block a user