Merge pull request #384 from pylast/deprecate-streamable
This commit is contained in:
commit
dd869b5183
|
@ -2,3 +2,5 @@
|
|||
filterwarnings =
|
||||
once::DeprecationWarning
|
||||
once::PendingDeprecationWarning
|
||||
|
||||
xfail_strict=true
|
||||
|
|
|
@ -29,6 +29,7 @@ import shelve
|
|||
import ssl
|
||||
import tempfile
|
||||
import time
|
||||
import warnings
|
||||
import xml.dom
|
||||
from http.client import HTTPSConnection
|
||||
from urllib.parse import quote_plus
|
||||
|
@ -1783,13 +1784,18 @@ class Artist(_Taggable):
|
|||
return self.listener_count
|
||||
|
||||
def is_streamable(self):
|
||||
"""Returns True if the artist is streamable."""
|
||||
|
||||
return bool(
|
||||
_number(
|
||||
_extract(self._request(self.ws_prefix + ".getInfo", True), "streamable")
|
||||
)
|
||||
"""Returns True if the artist is streamable: always False because Last.fm has
|
||||
deprecated the Radio API."""
|
||||
warnings.warn(
|
||||
"Always returns False. Last.fm has deprecated the Radio API and will "
|
||||
"it at some point. is_streamable() will be removed in pylast 5.0.0. "
|
||||
"See https://www.last.fm/api/radio and "
|
||||
"https://support.last.fm/t/"
|
||||
"is-the-streamable-attribute-broken-it-always-returns-0/39723/3",
|
||||
DeprecationWarning,
|
||||
stacklevel=2,
|
||||
)
|
||||
return False
|
||||
|
||||
def get_bio(self, section, language=None):
|
||||
"""
|
||||
|
@ -2130,18 +2136,32 @@ class Track(_Opus):
|
|||
return bool(loved)
|
||||
|
||||
def is_streamable(self):
|
||||
"""Returns True if the track is available at Last.fm."""
|
||||
|
||||
doc = self._request(self.ws_prefix + ".getInfo", True)
|
||||
return _extract(doc, "streamable") == "1"
|
||||
"""Returns True if the artist is streamable: always False because Last.fm has
|
||||
deprecated the Radio API."""
|
||||
warnings.warn(
|
||||
"Always returns False. Last.fm has deprecated the Radio API and will "
|
||||
"it at some point. is_streamable() will be removed in pylast 5.0.0. "
|
||||
"See https://www.last.fm/api/radio and "
|
||||
"https://support.last.fm/t/"
|
||||
"is-the-streamable-attribute-broken-it-always-returns-0/39723/3",
|
||||
DeprecationWarning,
|
||||
stacklevel=2,
|
||||
)
|
||||
return False
|
||||
|
||||
def is_fulltrack_available(self):
|
||||
"""Returns True if the full track is available for streaming."""
|
||||
|
||||
doc = self._request(self.ws_prefix + ".getInfo", True)
|
||||
return (
|
||||
doc.getElementsByTagName("streamable")[0].getAttribute("fulltrack") == "1"
|
||||
"""Returns True if the full track is available for streaming: always False
|
||||
because Last.fm has deprecated the Radio API."""
|
||||
warnings.warn(
|
||||
"Always returns False. Last.fm has deprecated the Radio API and will "
|
||||
"remove it at some point. is_fulltrack_available() will be removed in "
|
||||
"pylast 5.0.0. See https://www.last.fm/api/radio and "
|
||||
"https://support.last.fm/t/"
|
||||
"is-the-streamable-attribute-broken-it-always-returns-0/39723/3",
|
||||
DeprecationWarning,
|
||||
stacklevel=2,
|
||||
)
|
||||
return False
|
||||
|
||||
def get_album(self):
|
||||
"""Returns the album object of this track."""
|
||||
|
|
|
@ -229,6 +229,7 @@ class TestPyLastArtist(TestPyLastWithLastFm):
|
|||
mbid = artist1.get_mbid()
|
||||
|
||||
playcount = artist1.get_playcount()
|
||||
with pytest.warns(DeprecationWarning):
|
||||
streamable = artist1.is_streamable()
|
||||
name = artist1.get_name(properly_capitalized=False)
|
||||
name_cap = artist1.get_name(properly_capitalized=True)
|
||||
|
@ -267,7 +268,6 @@ class TestPyLastArtist(TestPyLastWithLastFm):
|
|||
# Assert
|
||||
assert corrected_artist_name == "Guns N' Roses"
|
||||
|
||||
@pytest.mark.xfail
|
||||
def test_get_userplaycount(self):
|
||||
# Arrange
|
||||
artist = pylast.Artist("John Lennon", self.network, username=self.username)
|
||||
|
@ -276,4 +276,4 @@ class TestPyLastArtist(TestPyLastWithLastFm):
|
|||
playcount = artist.get_userplaycount()
|
||||
|
||||
# Assert
|
||||
assert playcount >= 0 # whilst xfail: # pragma: no cover
|
||||
assert playcount >= 0
|
||||
|
|
|
@ -267,8 +267,6 @@ class TestPyLastNetwork(TestPyLastWithLastFm):
|
|||
assert isinstance(artist, pylast.Artist)
|
||||
assert artist.name in ("MusicBrainz Test Artist", "MusicBrainzz Test Artist")
|
||||
|
||||
@pytest.mark.xfail(reason="Broken at Last.fm: Track not found")
|
||||
# https://support.last.fm/t/track-getinfo-with-mbid-returns-6-track-not-found/47905
|
||||
def test_track_mbid(self):
|
||||
# Arrange
|
||||
mbid = "ebc037b1-cc9c-44f2-a21f-83c219f0e1e0"
|
||||
|
|
|
@ -123,6 +123,7 @@ class TestPyLastTrack(TestPyLastWithLastFm):
|
|||
track = pylast.Track("Nirvana", "Lithium", self.network)
|
||||
|
||||
# Act
|
||||
with pytest.warns(DeprecationWarning):
|
||||
streamable = track.is_streamable()
|
||||
|
||||
# Assert
|
||||
|
@ -133,6 +134,7 @@ class TestPyLastTrack(TestPyLastWithLastFm):
|
|||
track = pylast.Track("Nirvana", "Lithium", self.network)
|
||||
|
||||
# Act
|
||||
with pytest.warns(DeprecationWarning):
|
||||
fulltrack_available = track.is_fulltrack_available()
|
||||
|
||||
# Assert
|
||||
|
|
Loading…
Reference in a new issue