106 lines
4.4 KiB
Python
106 lines
4.4 KiB
Python
__author__ = 'Wendell Jones'
|
|
import json
|
|
import progressbar
|
|
from url.process import Loadurl
|
|
|
|
class Jsonload():
|
|
def __init__(self):
|
|
pass
|
|
|
|
def load(self, rawdata):
|
|
jdata = {}
|
|
jdata = json.loads(rawdata)
|
|
newdata = self.dump(jdata)
|
|
return(newdata)
|
|
|
|
def dump(self, rawdata):
|
|
jdata = json.dumps(rawdata, indent=4)
|
|
return(jdata)
|
|
|
|
def jconvert(self, inputdata):
|
|
outputdata = json.loads(inputdata)
|
|
return(outputdata)
|
|
|
|
def populate_cache(self, jdata, jfile):
|
|
try:
|
|
with open(jfile, 'w') as datafile:
|
|
datafile.write(jdata)
|
|
except:
|
|
print('Unable to save cache file.')
|
|
else:
|
|
datafile.close()
|
|
|
|
def fetch_json(self, weburl, seriesid, cachefile):
|
|
uprocess = Loadurl()
|
|
try:
|
|
webdata = uprocess.get_data(weburl)
|
|
jdata = self.load(webdata)
|
|
except Exception as e:
|
|
print('Unable to get JSON data for ' + str(seriesid) + ': ' + str(e))
|
|
else:
|
|
if jdata == '[]':
|
|
pass
|
|
else:
|
|
self.populate_cache(jdata, cachefile)
|
|
|
|
def processSeriesJson(self, seriesdata):
|
|
seriesresults = {}
|
|
networkchannel = {}
|
|
webchannel = {}
|
|
country = {}
|
|
|
|
seriesresults['id'] = seriesdata['id']
|
|
seriesresults['url'] = seriesdata['url']
|
|
seriesresults['name'] = seriesdata['name']
|
|
seriesresults['type'] = seriesdata['type']
|
|
seriesresults['language'] = seriesdata['language']
|
|
seriesresults['genres'] = ', '.join(seriesdata['genres'])
|
|
seriesresults['status'] = seriesdata['status']
|
|
seriesresults['runtime'] = seriesdata['runtime']
|
|
seriesresults['premiered'] = seriesdata['premiered']
|
|
seriesresults['officalsite'] = seriesdata['officialSite']
|
|
if len(seriesdata['schedule']['days']) > 0:
|
|
seriesresults['days'] = seriesdata['schedule']['days'][0]
|
|
seriesresults['time'] = seriesdata['schedule']['time']
|
|
seriesresults['rating'] = seriesdata['rating']['average']
|
|
seriesresults['weight'] = seriesdata['weight']
|
|
seriesresults['networkid'] = seriesdata['id']
|
|
seriesresults['webchannel'] = seriesdata['id']
|
|
seriesresults['tvrage'] = seriesdata['externals']['tvrage']
|
|
seriesresults['thetvdb'] = seriesdata['externals']['thetvdb']
|
|
seriesresults['imdb'] = seriesdata['externals']['imdb']
|
|
if seriesdata['image']:
|
|
seriesresults['medium'] = seriesdata['image']['medium']
|
|
seriesresults['original'] = seriesdata['image']['original']
|
|
seriesresults['summary'] = seriesdata['summary']
|
|
seriesresults['serieslink'] = seriesdata['_links']['self']['href']
|
|
if 'previousepisode' in seriesdata['_links'].keys():
|
|
seriesresults['previousepisode'] = seriesdata['_links']['previousepisode']['href']
|
|
if 'nextepisode' in seriesdata['_links'].keys():
|
|
seriesresults['nextepisode'] = seriesdata['_links']['nextepisode']['href']
|
|
|
|
|
|
if seriesdata['network'] and seriesdata['network'] != None:
|
|
networkchannel['id'] = seriesdata['network']['id']
|
|
networkchannel['name'] = seriesdata['network']['name']
|
|
#networkchannel['countryid'] = country['id']
|
|
if seriesdata['network']['country']:
|
|
# country['id'] = "auto incremented id"
|
|
country['name'] = seriesdata['network']['country']['name']
|
|
country['code'] = seriesdata['network']['country']['code']
|
|
country['timezone'] = seriesdata['network']['country']['timezone']
|
|
if seriesdata['webChannel'] and seriesdata['webChannel'] != None:
|
|
webchannel['id'] = seriesdata['webChannel']['id']
|
|
webchannel['name'] = seriesdata['webChannel']['name']
|
|
#webchannel['countryid'] = country['id']
|
|
if seriesdata['webChannel']['country']:
|
|
# country['id'] = "auto incremented id"
|
|
country['name'] = seriesdata['webchannel']['country']['name']
|
|
country['code'] = seriesdata['webchannel']['country']['code']
|
|
country['timezone'] = seriesdata['webchannel']['country']['timezone']
|
|
|
|
return(seriesresults, networkchannel, country, webchannel)
|
|
|
|
def __del__(self):
|
|
pass
|