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
|
## Version 0.7
|
||||||
|
|
||||||
* Tidal:
|
* 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://...).
|
* 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.
|
* 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.
|
* 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:
|
if text == "" or text == None:
|
||||||
raise ValueError("Text must be passed and should not be blank.")
|
raise ValueError("Text must be passed and should not be blank.")
|
||||||
log.debug("Retrieving data from Tidal...")
|
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"]
|
fieldtypes = ["artist", "album", "playlist"]
|
||||||
field = "track"
|
field = "track"
|
||||||
for i in fieldtypes:
|
for i in fieldtypes:
|
||||||
@ -114,6 +118,25 @@ class interface(base.baseInterface):
|
|||||||
self.results.append(s)
|
self.results.append(s)
|
||||||
log.debug("{0} results found.".format(len(self.results)))
|
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):
|
def format_number(self, number):
|
||||||
if number < 10:
|
if number < 10:
|
||||||
return "0%d" % (number)
|
return "0%d" % (number)
|
||||||
|
Loading…
Reference in New Issue
Block a user