diff --git a/plexapi/client.py b/plexapi/client.py index c0740a69..a6dd72eb 100644 --- a/plexapi/client.py +++ b/plexapi/client.py @@ -5,7 +5,7 @@ import requests from plexapi import BASE_HEADERS, CONFIG, TIMEOUT, log, logfilter, utils from plexapi.base import PlexObject from plexapi.compat import ElementTree -from plexapi.exceptions import BadRequest, Unauthorized, Unsupported +from plexapi.exceptions import BadRequest, NotFound, Unauthorized, Unsupported from plexapi.playqueue import PlayQueue from requests.status_codes import _codes as codes @@ -163,6 +163,8 @@ class PlexClient(PlexObject): message = '(%s) %s; %s %s' % (response.status_code, codename, response.url, errtext) if response.status_code == 401: raise Unauthorized(message) + elif response.status_code == 404: + raise NotFound(message) else: raise BadRequest(message) data = response.text.encode('utf8') diff --git a/plexapi/myplex.py b/plexapi/myplex.py index 14c8726a..b6dc9173 100644 --- a/plexapi/myplex.py +++ b/plexapi/myplex.py @@ -185,6 +185,8 @@ class MyPlexAccount(PlexObject): message = '(%s) %s; %s %s' % (response.status_code, codename, response.url, errtext) if response.status_code == 401: raise Unauthorized(message) + elif response.status_code == 404: + raise NotFound(message) else: raise BadRequest(message) data = response.text.encode('utf8') diff --git a/plexapi/server.py b/plexapi/server.py index d6b7bb3e..53fc4883 100644 --- a/plexapi/server.py +++ b/plexapi/server.py @@ -427,6 +427,8 @@ class PlexServer(PlexObject): message = '(%s) %s; %s %s' % (response.status_code, codename, response.url, errtext) if response.status_code == 401: raise Unauthorized(message) + elif response.status_code == 404: + raise NotFound(message) else: raise BadRequest(message) data = response.text.encode('utf8') diff --git a/tests/test_server.py b/tests/test_server.py index 01d7aa5d..bc807384 100644 --- a/tests/test_server.py +++ b/tests/test_server.py @@ -90,6 +90,11 @@ def _detect_color_image(file, thumb_size=150, MSE_cutoff=22, adjust_color_bias=T return 'blackandwhite' +def test_server_fetchitem_notfound(plex): + with pytest.raises(NotFound): + plex.fetchItem(123456789) + + def test_server_search(plex, movie): title = movie.title # this search seem to fail on my computer but not at travis, wtf.