Handle FreeDB server errors gracefully (#304)
* handle FreeDB server errors gracefully In my repeated tests, I ended up upsetting freedb.org, which started issuing 502 errors. Those errors are not correctly caught by the program which just crashes with a backtrace. Instead, we handle those like any other API error, which can already be generated by perform_lookup (but not handled). The visible result for the user is that the CD is simply not found on FreeDB, an acceptable compromise, in my opinion. Closes: #206 * harmonize an error message with other warnings ... which are all capitalized.
This commit is contained in:
16
whipper/extern/freedb.py
vendored
16
whipper/extern/freedb.py
vendored
@@ -169,8 +169,9 @@ def freedb_command(freedb_server, freedb_port, cmd, *args):
|
||||
|
||||
try:
|
||||
from urllib.request import urlopen
|
||||
from urllib.error import URLError
|
||||
except ImportError:
|
||||
from urllib2 import urlopen
|
||||
from urllib2 import urlopen, URLError
|
||||
try:
|
||||
from urllib.parse import urlencode
|
||||
except ImportError:
|
||||
@@ -203,11 +204,14 @@ def freedb_command(freedb_server, freedb_port, cmd, *args):
|
||||
|
||||
POST.append((u"proto", u"6"))
|
||||
|
||||
# get Request object from post
|
||||
request = urlopen(
|
||||
"http://{}:{:d}/~cddb/cddb.cgi".format(freedb_server, freedb_port),
|
||||
urlencode(POST).encode("UTF-8") if (version_info[0] >= 3) else
|
||||
urlencode(POST))
|
||||
try:
|
||||
# get Request object from post
|
||||
request = urlopen(
|
||||
"http://{}:{:d}/~cddb/cddb.cgi".format(freedb_server, freedb_port),
|
||||
urlencode(POST).encode("UTF-8") if (version_info[0] >= 3) else
|
||||
urlencode(POST))
|
||||
except URLError as e:
|
||||
raise ValueError(str(e))
|
||||
try:
|
||||
# yield lines of output
|
||||
line = request.readline()
|
||||
|
||||
Reference in New Issue
Block a user