FIX: (#2228) Fix for ExpatError being returned when CV is not responding

This commit is contained in:
evilhero 2019-04-01 11:03:17 -04:00
parent 39cb550cb6
commit ead7e2349c
2 changed files with 31 additions and 21 deletions

View File

@ -24,6 +24,7 @@ import lib.feedparser
import mylar import mylar
import platform import platform
from bs4 import BeautifulSoup as Soup from bs4 import BeautifulSoup as Soup
from xml.parsers.expat import ExpatError
import httplib import httplib
import requests import requests
@ -96,10 +97,19 @@ def pulldetails(comicid, type, issueid=None, offset=1, arclist=None, comicidlist
return return
#logger.fdebug('cv status code : ' + str(r.status_code)) #logger.fdebug('cv status code : ' + str(r.status_code))
dom = parseString(r.content) try:
dom = parseString(r.content)
return dom except ExpatError:
if u'<title>Abnormal Traffic Detected' in r.content:
logger.error('ComicVine has banned this server\'s IP address because it exceeded the API rate limit.')
else:
logger.warn('[WARNING] ComicVine is not responding correctly at the moment. This is usually due to some problems on their end. If you re-try things again in a few moments, things might work')
return
except Exception as e:
logger.warn('[ERROR] Error returned from CV: %s' % e)
return
else:
return dom
def getComic(comicid, type, issueid=None, arc=None, arcid=None, arclist=None, comicidlist=None): def getComic(comicid, type, issueid=None, arc=None, arcid=None, arclist=None, comicidlist=None):
if type == 'issue': if type == 'issue':

View File

@ -21,6 +21,7 @@ import threading
import platform import platform
import urllib, urllib2 import urllib, urllib2
from xml.dom.minidom import parseString, Element from xml.dom.minidom import parseString, Element
from xml.parsers.expat import ExpatError
import requests import requests
import mylar import mylar
@ -70,8 +71,8 @@ def pullsearch(comicapi, comicquery, offset, type):
try: try:
r = requests.get(PULLURL, params=payload, verify=mylar.CONFIG.CV_VERIFY, headers=mylar.CV_HEADERS) r = requests.get(PULLURL, params=payload, verify=mylar.CONFIG.CV_VERIFY, headers=mylar.CV_HEADERS)
except Exception, e: except Exception as e:
logger.warn('Error fetching data from ComicVine: %s' % (e)) logger.warn('Error fetching data from ComicVine: %s' % e)
return return
try: try:
@ -82,8 +83,11 @@ def pullsearch(comicapi, comicquery, offset, type):
else: else:
logger.warn('[WARNING] ComicVine is not responding correctly at the moment. This is usually due to some problems on their end. If you re-try things again in a few moments, it might work properly.') logger.warn('[WARNING] ComicVine is not responding correctly at the moment. This is usually due to some problems on their end. If you re-try things again in a few moments, it might work properly.')
return return
except Exception as e:
return dom logger.warn('[ERROR] Error returned from CV: %s' % e)
return
else:
return dom
def findComic(name, mode, issue, limityear=None, type=None): def findComic(name, mode, issue, limityear=None, type=None):
@ -459,24 +463,20 @@ def storyarcinfo(xmlid):
try: try:
r = requests.get(ARCPULL_URL, params=payload, verify=mylar.CONFIG.CV_VERIFY, headers=mylar.CV_HEADERS) r = requests.get(ARCPULL_URL, params=payload, verify=mylar.CONFIG.CV_VERIFY, headers=mylar.CV_HEADERS)
except Exception, e: except Exception as e:
logger.warn('Error fetching data from ComicVine: %s' % (e)) logger.warn('While parsing data from ComicVine, got exception: %s' % e)
return return
# try:
# file = urllib2.urlopen(ARCPULL_URL)
# except urllib2.HTTPError, err:
# logger.error('err : ' + str(err))
# logger.error('There was a major problem retrieving data from ComicVine - on their end.')
# return
# arcdata = file.read()
# file.close()
try: try:
arcdom = parseString(r.content) #(arcdata) arcdom = parseString(r.content)
except ExpatError: except ExpatError:
if u'<title>Abnormal Traffic Detected' in r.content: if u'<title>Abnormal Traffic Detected' in r.content:
logger.error("ComicVine has banned this server's IP address because it exceeded the API rate limit.") logger.error('ComicVine has banned this server\'s IP address because it exceeded the API rate limit.')
else: else:
logger.warn('While parsing data from ComicVine, got exception: %s for data: %s' % (str(e), r.content)) logger.warn('While parsing data from ComicVine, got exception: %s for data: %s' % (e, r.content))
return
except Exception as e:
logger.warn('While parsing data from ComicVine, got exception: %s for data: %s' % (e, r.content))
return return
try: try: