repo migration

This commit is contained in:
2025-05-20 12:02:07 -04:00
commit 29814092b7
54 changed files with 6690 additions and 0 deletions
View File
View File
+14
View File
@@ -0,0 +1,14 @@
class cast():
def __init__(self):
pass
def listcast(self, seriesid):
pass
def listcredits(self, seriesid):
pass
def __del__(self):
pass
+15
View File
@@ -0,0 +1,15 @@
class crew():
def __init__(self):
pass
def listcrew(self, seriesid):
pass
def listcredits(self, seriesid):
pass
def __del__(self):
pass
+18
View File
@@ -0,0 +1,18 @@
class episodes():
def __init__(self):
pass
def fulllisting(self, seriesid):
pass
def seasonlist(self, seriesid, seasonnumber):
pass
def eplist(self, seriesid, seasonnumber, episodenumber):
pass
def __del__(self):
pass
+256
View File
@@ -0,0 +1,256 @@
class show():
def __init__(self):
pass
def process(self, metadata, showload, seriesid):
dataresult = []
tableresult = []
if showload == None:
pass
else:
networkid = None
try:
network = {}
for key, value in showload['network'].items():
if key == 'country':
for key, value in showload['network']['country'].items():
if key == 'name':
newkey = 'country'
network[newkey] = showload['network']['country'][key]
else:
newkey = 'country' + key
network[newkey] = showload['network']['country'][key]
else:
newkey = 'network' + key
network[newkey] = showload['network'][key]
except:
#print('Failed to insert network information.')
showload['networkid'] = 0
else:
showload.pop('network')
showload['networkid'] = network['networkid']
dataresult.append(network)
tableresult.append(metadata.tables['[updates].tvnetworknewvals'])
#insertresult = insert_data(network, tables[4])
try:
webchannel = {}
for key, value in showload['webChannel'].items():
if key == 'country':
if showload['webChannel'][key] is None:
pass
else:
for key, value in showload['webChannel']['country'].items():
newkey = 'webChannelcountry'+ key
webchannel[newkey] = value
else:
webchannel[key] = value
if key == 'name':
newkey = 'webChannel' + key
webhchannel[newkey] = value
if key == 'timezone':
newkey = 'webChannelcountry'+ key
webchannel[newkey] = value
except:
#print('Failed to insert webchannel information.')
showload['webchannelid'] = '0'
else:
showload.pop('webChannel')
showload['webchannelid'] = webchannel['id']
webchannel['webchannelname'] = webchannel['name']
webchannel['networkid'] = webchannel['id']
try:
dataresult.append(webchannel)
tableresult.append(metadata.tables['[updates].tvwebchannelnewvals'])
#insertresult = insert_data(webchannel, tables[5])
except sqlalchemy.exc.IntegrityError as e:
pass
except Exception as e:
print('Failed to insert webchannel information.')
try:
showload['seriesid'] = showload['id']
except:
pass
#print('TV Show: ' + showload['seriesname'])
try:
if showload['image']:
for key, value in showload['image'].items():
newkey = key + 'image'
showload[newkey] = value
showload.pop('image')
else:
showload.pop('image')
except:
pass
try:
if showload['externals']:
for key, value in showload['externals'].items():
showload[key] = value
showload.pop('externals')
else:
showload.pop('externals')
except KeyError as e:
pass
try:
if showload['rating']:
for key, value in showload['rating'].items():
showload['rating'] = value
if showload['schedule']:
showload['time'] = showload['schedule']['time']
showload['days'] = ", ".join(showload['schedule']['days'])
showload.pop('schedule')
except KeyError as e:
pass
try:
for key, value in showload['_links']['self'].items():
showload[key] = value
showload.pop('_links')
except KeyError as e:
pass
else:
showload.pop('id')
showload['genres'] = ", ".join(showload['genres'])
# Finish transforming to match table columns
showload['seriesname'] = showload.pop('name')
showload['tvrageid'] = showload.pop('tvrage')
showload['tvdbid'] = showload.pop('thetvdb')
showload['imdbid'] = showload.pop('imdb')
showload['serieslanguage'] = showload.pop('language')
showload['seriesstatus'] = showload.pop('status')
showload['airdays'] = showload.pop('days')
showload['airtime'] = showload.pop('time')
showload['showtype'] = showload.pop('type')
showload['overview'] = showload.pop('summary')
showload['showurl'] = showload.pop('url')
showload['apilink'] = showload.pop('href')
showload['officialsite'] = showload.pop('officialSite')
results = []
results.append([dataresult, tableresult, showload])
#results.append(tableresult)
#results.append(showload)
return (results)
def __del__(self):
pass
class cast():
def __init__(self):
pass
def process(self, cdata, seriesid):
datalist = {}
datalist['actors'] = []
datalist['characters'] = []
try:
castload = json.loads(cdata)
for idx, castdata in enumerate(castload):
actordata = {}
characterdata = {}
tcharacterdata = castload[idx]['character']
tactordata = castload[idx]['person']
try:
for key, value in tactordata.items():
if tactordata[key] is None:
pass
else:
if key == 'image':
for key, value in tactordata['image'].items():
newkey = key + 'image'
actordata[newkey] = tactordata['image'][key]
elif key == '_links':
for key, value in tactordata['_links']['self'].items():
actordata['apilink'] = tactordata['_links']['self'][key]
elif key == 'country':
for key, value in tactordata['country'].items():
newkey = 'country' + key
actordata[newkey] = tactordata['country'][key]
else:
actordata[key] = tactordata[key]
actordata['actorid'] = tactordata['id']
actordata['actorname'] = tactordata['name']
except:
print('Unable to process actor information.')
else:
actordata.pop('id')
try:
if tcharacterdata:
for key, value in tcharacterdata.items():
if key is None:
pass
else:
if tcharacterdata['image']:
characterdata['mediumimage'] = tcharacterdata['image']['medium']
characterdata['originalimage'] = tcharacterdata['image']['original']
characterdata['apilink'] = tcharacterdata['_links']['self']['href']
characterdata['tvmazeilink'] = tcharacterdata['url']
characterdata['characterid'] = tcharacterdata['id']
characterdata['charactername'] = tcharacterdata['name']
characterdata['seriesid'] = seriesid
characterdata['actorid'] = actordata['actorid']
except Exception as e:
print('Unable to process character information. -> ' + str(e))
datalist['characters'].append(characterdata)
datalist['actors'].append(actordata)
linkdata = {}
linkdata['actorid'] = actordata['actorid']
linkdata['characterid'] = characterdata['characterid']
#return(datalist)
except Exception as e:
#print('Line 389: ' + str(e))
pass
else:
return(datalist)
def __del__(self):
pass
class Episode():
def __init__(self):
pass
def process(self, epload, seriesid):
if epload:
eplist = []
try:
for epdata in epload:
epdata['seriesid'] = seriesid
if epdata['image']:
for key, value in epdata['image'].items():
newkey = key + 'image'
epdata[newkey] = value
epdata.pop('image')
else:
epdata['mediumimage'] = 'None'
epdata['originalimage'] = 'None'
epdata.pop('image')
for key, value in epdata['_links']['self'].items():
epdata['eplink'] = value
epdata.pop('_links')
epdata['episodeid'] = epdata.pop('id')
epdata['episodename'] = epdata.pop('name')
epdata['episodesummary'] = epdata.pop('summary')
epdata['episodenumber'] = epdata.pop('number')
eplist.append(epdata)
return eplist
except:
print('Unable to import episode data for for seriesid: ' + str(seriesid))
else:
return None
def __del__(self):
pass
+18
View File
@@ -0,0 +1,18 @@
class series():
def __init__(self):
pass
def search(self, searchquery):
pass
def singlesearch(self, searchquery):
pass
def idsearch(self, searchid):
pass
def __del__(self):
pass
+231
View File
@@ -0,0 +1,231 @@
import requests
import json
class Processor():
def __init__(self):
global loginurl
global refreshurl
global seriesurl
global actorurl
global episodeurl
global episodequeryurl
global episodeparamurl
global episodesummaryurl
global filterurl
global filterparamurl
global imageurl
global imagequeryurl
global imageparamurl
global username
global apikey
global userkey
global jwtoken
global refreshtoken
loginurl = 'https://api.thetvdb.com/login'
refreshurl = 'https://api.thetvdb.com/refresh_token'
seriesurl = 'https://api.thetvdb.com/series/{id}'
episodeidurl = 'https://api.thetvdb.com/episodes/{id}'
actorurl='https://api.thetvdb.com/series/{id}/actors'
episodeurl='https://api.thetvdb.com/series/{id}/episodes'
episodequeryurl='https://api.thetvdb.com/series/{id}/episodes/query'
episodeparamurl='https://api.thetvdb.com/series/{id}/episodes/query/params'
episodesummaryurl='https://api.thetvdb.com/series/{id}/episodes/summary'
filterurl='https://api.thetvdb.com/series/{id}/filter'
filterparamurl='https://api.thetvdb.com/series/{id}/filter/params'
imageurl='https://api.thetvdb.com/series/{id}/images'
imagequeryurl='https://api.thetvdb.com/series/{id}/images/query'
imageparamurl='https://api.thetvdb.com/series/{id}/images/query/params'
username = 'wpjonesnhcjc'
apikey = 'NACCS2LUWCFEFABX'
userkey = 'UUSZHUQ8CY7N31CF'
#jwtoken = login.run(self)
def __del__(self):
pass
class login():
def __init__(self):
pass
def run(self):
with requests.post(loginurl, json={"username": username, "apikey": apikey, "userkey": userkey}) as r:
response = r.json()
jwtoken = response['token']
#refreshtoken = self.refresh(jwtoken)
return(jwtoken)
def refresh(self, token):
token= "Bearer " + token
with requests.get(refreshurl, headers={'Authorization': token}) as r:
response = r.json()
refreshtoken = response['token']
return(refreshtoken)
class loadjson():
def __init__(self):
pass
def loadseries(seriesid, token):
url = seriesurl.replace('{id}', seriesid)
#print(str(url))
seriesdata = loadjson.load(url, token)
return(seriesdata)
def loadepisodes(seriesid, token):
url = episodeurl.replace('{id}', seriesid)
#print(str(url))
seriesdata = loadjson.load(url, token)
return(seriesdata)
def load(url, token):
token= "Bearer " + token
with requests.get(url, headers={'Authorization': token}) as r:
response = r.json()
return(response)
def insert(self, updater, tablename):
for key, value in updater.items():
ins = tablename.insert().values( key = value )
print(str(ins))
result = engine.execute(ins)
def populate(self, jsonurl, seriesid):
try:
with urllib.request.urlopen(jsonurl) as response:
html = response.read()
jsoninput = html
return jsoninput
except:
pass
def __del__(self):
pass
class showprocess():
def __init__(self):
pass
def process(self, metadata, tempshowload):
dataresult = []
tableresult = []
if tempshowload == None:
pass
else:
showload = json.loads(tempshowload)
networkid = None
try:
network = {}
for key, value in showload['network'].items():
if key == 'country':
for key, value in showload['network']['country'].items():
if key == 'name':
newkey = 'country'
network[newkey] = showload['network']['country'][key]
else:
newkey = 'country' + key
network[newkey] = showload['network']['country'][key]
else:
newkey = 'network' + key
network[newkey] = showload['network'][key]
except:
#print('Failed to insert network information.')
showload['networkid'] = '0'
else:
showload.pop('network')
showload['networkid'] = network['networkid']
dataresult.append(network)
tableresult.append(metadata.tables['[updates].tvnetworknewvals'])
#insertresult = insert_data(network, tables[4])
try:
webchannel = {}
for key, value in showload['webChannel'].items():
if key == 'country':
if showload['webChannel'][key] is None:
pass
else:
for key, value in showload['webChannel']['country'].items():
newkey = 'webChannelcountry'+ key
webchannel[newkey] = value
else:
webchannel[key] = value
if key == 'name':
newkey = 'webChannel' + key
webhchannel[newkey] = value
if key == 'timezone':
newkey = 'webChannelcountry'+ key
webchannel[newkey] = value
except:
#print('Failed to insert webchannel information.')
showload['webchannelid'] = '0'
else:
showload.pop('webChannel')
showload['webchannelid'] = webchannel['id']
webchannel['webchannelname'] = webchannel['name']
try:
dataresult.append(webchannel)
tableresult.append(metadata.tables['[updates].tvwebchannelnewvals'])
#insertresult = insert_data(webchannel, tables[5])
except sqlalchemy.exc.IntegrityError as e:
pass
except Exception as e:
print('Failed to insert webchannel information.')
try:
showload['seriesid'] = showload['id']
except:
pass
#print('TV Show: ' + showload['seriesname'])
if showload['image']:
for key, value in showload['image'].items():
newkey = key + 'image'
showload[newkey] = value
showload.pop('image')
else:
showload.pop('image')
if showload['externals']:
for key, value in showload['externals'].items():
showload[key] = value
showload.pop('externals')
else:
showload.pop('externals')
if showload['rating']:
for key, value in showload['rating'].items():
showload['rating'] = value
if showload['schedule']:
showload['time'] = showload['schedule']['time']
showload['days'] = ", ".join(showload['schedule']['days'])
showload.pop('schedule')
for key, value in showload['_links']['self'].items():
showload[key] = value
showload.pop('_links')
showload.pop('id')
showload['genres'] = ", ".join(showload['genres'])
# Finish transforming to match table columns
showload['seriesname'] = showload.pop('name')
showload['tvrageid'] = showload.pop('tvrage')
showload['tvdbid'] = showload.pop('thetvdb')
showload['imdbid'] = showload.pop('imdb')
showload['serieslanguage'] = showload.pop('language')
showload['seriesstatus'] = showload.pop('status')
showload['airdays'] = showload.pop('days')
showload['airtime'] = showload.pop('time')
showload['showtype'] = showload.pop('type')
showload['overview'] = showload.pop('summary')
showload['showurl'] = showload.pop('url')
showload['apilink'] = showload.pop('href')
showload['officialsite'] = showload.pop('officialSite')
results = []
results.append(dataresult)
results.append(tableresult)
results.append(showload)
return (results)
View File
+105
View File
@@ -0,0 +1,105 @@
from sqlalchemy.sql.expression import false
class cast():
def __init__(self):
pass
def process(self, castdata, seriesid):
datalist = {}
linkdata = {}
datalist['actors'] = []
datalist['characters'] = []
linklist = []
for castmember in castdata:
actordata = {}
characterdata = {}
tcharacterdata = castmember['character']
tactordata = castmember['person']
tselfdata = castmember['self']
tvoicedata = castmember['voice']
try:
for key, value in tactordata.items():
if tactordata[key] is None:
pass
else:
if key == 'image':
for key, value in tactordata['image'].items():
newkey = key + 'image'
actordata[newkey] = tactordata['image'][key]
elif key == '_links':
for key, value in tactordata['_links']['self'].items():
actordata['apilink'] = tactordata['_links']['self'][key]
elif key == 'country':
for key, value in tactordata['country'].items():
newkey = 'country' + key
actordata[newkey] = tactordata['country'][key]
else:
actordata[key] = tactordata[key]
actordata['actorid'] = tactordata['id']
actordata['actorname'] = tactordata['name']
if tactordata['country'] == None:
actordata['countryname'] = None
actordata['countrytimezone'] = None
actordata['countrycode'] = None
if tactordata['birthday'] == None:
actordata['birthday'] = None
if tactordata['deathday'] == None:
actordata['deathday'] = None
if tactordata['gender'] == None:
actordata['gender'] = None
if tactordata['image'] == None:
actordata['mediumimage'] = None
actordata['originalimage'] = None
if tactordata['_links'] == None:
actordata['apilink'] = None
except:
print('Unable to process actor information.')
else:
actordata.pop('id')
try:
if tcharacterdata:
for key, value in tcharacterdata.items():
if key is None:
pass
else:
if tcharacterdata['image']:
characterdata['mediumimage'] = tcharacterdata['image']['medium']
characterdata['originalimage'] = tcharacterdata['image']['original']
characterdata['apilink'] = tcharacterdata['_links']['self']['href']
characterdata['tvmazeilink'] = tcharacterdata['url']
characterdata['characterid'] = tcharacterdata['id']
characterdata['charactername'] = tcharacterdata['name']
characterdata['seriesid'] = seriesid
characterdata['actorid'] = actordata['actorid']
if tcharacterdata['image'] == None:
characterdata['mediumimage'] = None
characterdata['originalimage'] = None
if tactordata['_links'] == None:
actordata['apilink'] = None
if not tselfdata:
characterdata['self'] = 0
else:
characterdata['self'] = 1
if not tvoicedata:
characterdata['voice'] = 0
else:
characterdata['voice'] = 1
except Exception as e:
print('Unable to process character information. -> ' + str(e))
datalist['characters'].append(characterdata)
datalist['actors'].append(actordata)
linkdata = {'actorid': actordata['actorid'], 'characterid': characterdata['characterid']}
linklist.append(linkdata)
return(datalist, linklist)
# except Exception as e:
# print('Unable to process cast data: ' + str(e))
# else:
# return(datalist, linklist)
def listcredits(self, seriesid):
pass
def __del__(self):
pass
+42
View File
@@ -0,0 +1,42 @@
class crew():
def __init__(self):
pass
def process(self, crewdata, seriesid):
crewlist = []
try:
for crewmember in crewdata:
cmember = {}
cmember['seriesid'] = seriesid
cmember['crewid'] = crewmember['person']['id']
cmember['type'] = crewmember['type']
cmember['url'] = crewmember['person']['url']
cmember['name'] = crewmember['person']['name']
cmember['countryid'] = '0'
cmember['birthday'] = crewmember['person']['birthday']
cmember['deathday'] = crewmember['person']['deathday']
cmember['gender'] = crewmember['person']['gender']
if crewmember['person']['image']:
cmember['medium'] = crewmember['person']['image']['medium']
cmember['original'] = crewmember['person']['image']['original']
else:
cmember['medium'] = None
cmember['original'] = None
if crewmember['person']['_links']:
cmember['apilink'] = crewmember['person']['_links']['self']['href']
else:
cmember['apilink'] = None
crewlist.append(cmember)
except Exception as e:
print('Unable to process crew information for seriesid: ' + str(seriesid))
else:
return(crewlist)
def listcredits(self, seriesid):
pass
def __del__(self):
pass
+77
View File
@@ -0,0 +1,77 @@
import csv
class episodes():
def __init__(self):
pass
def update_episodes(self, epload, seriesid):
if epload:
eplist = []
try:
for epdata in epload:
epdata['seriesid'] = seriesid
if epdata['image']:
for key, value in epdata['image'].items():
newkey = key + 'image'
epdata[newkey] = value
epdata.pop('image')
else:
epdata['mediumimage'] = 'None'
epdata['originalimage'] = 'None'
epdata.pop('image')
for key, value in epdata['_links']['self'].items():
epdata['eplink'] = value
epdata.pop('_links')
epdata['episodeid'] = epdata.pop('id')
epdata['episodename'] = epdata.pop('name')
epdata['episodesummary'] = epdata.pop('summary')
epdata['episodenumber'] = epdata.pop('number')
eplist.append(epdata)
except:
print('Unable to import episode data for for seriesid: ' + str(seriesid))
else:
return(eplist)
def fulllisting(self, seriesid):
pass
def seasonlist(self, seriesid, seasonnumber):
pass
def process_episodes(self, episoderesults, seriesid, rootdir):
queryrows = []
if episoderesults:
resultlength = len(episoderesults)
if resultlength > 0:
for idx, episode in enumerate(episoderesults):
if episoderesults[idx]['episodesummary'] is None:
episoderesults[idx]['episodesummary'] = 'No summary at this time.'
querylist = '''INSERT INTO updates.newepdata (episodeid, seriesid, season, episodenumber, episodename, airdate, airtime, episodesummary, airstamp, runtime, eplink, mediumimage, url, originalimage) VALUES\n'''
filename = rootdir + '/temp/' + str(seriesid) + '_episodes.sql'
sqlfile = open(filename, 'w', encoding="utf-8")
sqlfile.write(querylist)
try:
SQL = '''( '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s' )''' % (episoderesults[idx]['episodeid'],
episoderesults[idx]['seriesid'], episoderesults[idx]['season'], episoderesults[idx]['episodenumber'], episoderesults[idx]['episodename'].replace("'", "''"),
episoderesults[idx]['airdate'], episoderesults[idx]['airtime'], episoderesults[idx]['episodesummary'].replace("'", "''"), episoderesults[idx]['airstamp'],
episoderesults[idx]['runtime'], episoderesults[idx]['eplink'], episoderesults[idx]['mediumimage'], episoderesults[idx]['url'], episoderesults[idx]['originalimage'])
#tv.insert_data(engine, episode, metadata.tables['[updates].newepdata'])
queryrows.append(SQL)
except Exception as e:
lprint.logprint('info', 'Unable to process episodes for seriesid: ' + str(cseriesid))
else:
qlength = len(queryrows) - 1
for rowidx, queryrow in enumerate(queryrows):
if rowidx == qlength and idx == len(episoderesults) -1:
sqlfile.write(queryrow + ';\n')
else:
sqlfile.write(queryrow + ',\n')
sqlfile.close()
return(filename, resultlength, querylist)
def __del__(self):
pass
+256
View File
@@ -0,0 +1,256 @@
class show():
def __init__(self):
pass
def process(self, metadata, showload, seriesid):
dataresult = []
tableresult = []
if showload == None:
pass
else:
networkid = None
try:
network = {}
for key, value in showload['network'].items():
if key == 'country':
for key, value in showload['network']['country'].items():
if key == 'name':
newkey = 'country'
network[newkey] = showload['network']['country'][key]
else:
newkey = 'country' + key
network[newkey] = showload['network']['country'][key]
else:
newkey = 'network' + key
network[newkey] = showload['network'][key]
except:
#print('Failed to insert network information.')
showload['networkid'] = 0
else:
showload.pop('network')
showload['networkid'] = network['networkid']
dataresult.append(network)
tableresult.append(metadata.tables['[updates].tvnetworknewvals'])
#insertresult = insert_data(network, tables[4])
try:
webchannel = {}
for key, value in showload['webChannel'].items():
if key == 'country':
if showload['webChannel'][key] is None:
pass
else:
for key, value in showload['webChannel']['country'].items():
newkey = 'webChannelcountry'+ key
webchannel[newkey] = value
else:
webchannel[key] = value
if key == 'name':
newkey = 'webChannel' + key
webhchannel[newkey] = value
if key == 'timezone':
newkey = 'webChannelcountry'+ key
webchannel[newkey] = value
except:
#print('Failed to insert webchannel information.')
showload['webchannelid'] = '0'
else:
showload.pop('webChannel')
showload['webchannelid'] = webchannel['id']
webchannel['webchannelname'] = webchannel['name']
webchannel['networkid'] = webchannel['id']
try:
dataresult.append(webchannel)
tableresult.append(metadata.tables['[updates].tvwebchannelnewvals'])
#insertresult = insert_data(webchannel, tables[5])
except sqlalchemy.exc.IntegrityError as e:
pass
except Exception as e:
print('Failed to insert webchannel information.')
try:
showload['seriesid'] = showload['id']
except:
pass
#print('TV Show: ' + showload['seriesname'])
try:
if showload['image']:
for key, value in showload['image'].items():
newkey = key + 'image'
showload[newkey] = value
showload.pop('image')
else:
showload.pop('image')
except:
pass
try:
if showload['externals']:
for key, value in showload['externals'].items():
showload[key] = value
showload.pop('externals')
else:
showload.pop('externals')
except KeyError as e:
pass
try:
if showload['rating']:
for key, value in showload['rating'].items():
showload['rating'] = value
if showload['schedule']:
showload['time'] = showload['schedule']['time']
showload['days'] = ", ".join(showload['schedule']['days'])
showload.pop('schedule')
except KeyError as e:
pass
try:
for key, value in showload['_links']['self'].items():
showload[key] = value
showload.pop('_links')
except KeyError as e:
pass
else:
showload.pop('id')
showload['genres'] = ", ".join(showload['genres'])
# Finish transforming to match table columns
showload['seriesname'] = showload.pop('name')
showload['tvrageid'] = showload.pop('tvrage')
showload['tvdbid'] = showload.pop('thetvdb')
showload['imdbid'] = showload.pop('imdb')
showload['serieslanguage'] = showload.pop('language')
showload['seriesstatus'] = showload.pop('status')
showload['airdays'] = showload.pop('days')
showload['airtime'] = showload.pop('time')
showload['showtype'] = showload.pop('type')
showload['overview'] = showload.pop('summary')
showload['showurl'] = showload.pop('url')
showload['apilink'] = showload.pop('href')
showload['officialsite'] = showload.pop('officialSite')
results = []
results.append([dataresult, tableresult, showload])
#results.append(tableresult)
#results.append(showload)
return (results)
def __del__(self):
pass
class cast():
def __init__(self):
pass
def process(self, cdata, seriesid):
datalist = {}
datalist['actors'] = []
datalist['characters'] = []
try:
castload = json.loads(cdata)
for idx, castdata in enumerate(castload):
actordata = {}
characterdata = {}
tcharacterdata = castload[idx]['character']
tactordata = castload[idx]['person']
try:
for key, value in tactordata.items():
if tactordata[key] is None:
pass
else:
if key == 'image':
for key, value in tactordata['image'].items():
newkey = key + 'image'
actordata[newkey] = tactordata['image'][key]
elif key == '_links':
for key, value in tactordata['_links']['self'].items():
actordata['apilink'] = tactordata['_links']['self'][key]
elif key == 'country':
for key, value in tactordata['country'].items():
newkey = 'country' + key
actordata[newkey] = tactordata['country'][key]
else:
actordata[key] = tactordata[key]
actordata['actorid'] = tactordata['id']
actordata['actorname'] = tactordata['name']
except:
print('Unable to process actor information.')
else:
actordata.pop('id')
try:
if tcharacterdata:
for key, value in tcharacterdata.items():
if key is None:
pass
else:
if tcharacterdata['image']:
characterdata['mediumimage'] = tcharacterdata['image']['medium']
characterdata['originalimage'] = tcharacterdata['image']['original']
characterdata['apilink'] = tcharacterdata['_links']['self']['href']
characterdata['tvmazeilink'] = tcharacterdata['url']
characterdata['characterid'] = tcharacterdata['id']
characterdata['charactername'] = tcharacterdata['name']
characterdata['seriesid'] = seriesid
characterdata['actorid'] = actordata['actorid']
except Exception as e:
print('Unable to process character information. -> ' + str(e))
datalist['characters'].append(characterdata)
datalist['actors'].append(actordata)
linkdata = {}
linkdata['actorid'] = actordata['actorid']
linkdata['characterid'] = characterdata['characterid']
#return(datalist)
except Exception as e:
#print('Line 389: ' + str(e))
pass
else:
return(datalist)
def __del__(self):
pass
class Episode():
def __init__(self):
pass
def process(self, epload, seriesid):
if epload:
eplist = []
try:
for epdata in epload:
epdata['seriesid'] = seriesid
if epdata['image']:
for key, value in epdata['image'].items():
newkey = key + 'image'
epdata[newkey] = value
epdata.pop('image')
else:
epdata['mediumimage'] = 'None'
epdata['originalimage'] = 'None'
epdata.pop('image')
for key, value in epdata['_links']['self'].items():
epdata['eplink'] = value
epdata.pop('_links')
epdata['episodeid'] = epdata.pop('id')
epdata['episodename'] = epdata.pop('name')
epdata['episodesummary'] = epdata.pop('summary')
epdata['episodenumber'] = epdata.pop('number')
eplist.append(epdata)
return eplist
except:
print('Unable to import episode data for for seriesid: ' + str(seriesid))
else:
return None
def __del__(self):
pass
+156
View File
@@ -0,0 +1,156 @@
class tvshow():
def __init__(self):
pass
def process(self, metadata, seriesdata, seriesid):
webresult = []
networkresult = []
webworkchannel = []
networkchannel = []
if seriesdata == None:
pass
else:
networkid = None
try:
network = {}
for key, value in seriesdata['network'].items():
if key == 'country':
for key, value in seriesdata['network']['country'].items():
if key == 'name':
newkey = 'country'
network[newkey] = seriesdata['network']['country'][key]
else:
newkey = 'country' + key
network[newkey] = seriesdata['network']['country'][key]
else:
newkey = 'network' + key
network[newkey] = seriesdata['network'][key]
except:
#print('Failed to insert network information.')
#seriesdata['networkid'] = '0'
pass
else:
seriesdata.pop('network')
seriesdata['networkid'] = network['networkid']
networkresult.append(network)
networkchannel.append(metadata.tables['updates.tvnetworknewvals'])
#insertresult = insert_data(network, tables[4])
try:
webchannel = {}
if seriesdata['webChannel']:
for key, value in seriesdata['webChannel'].items():
if key == 'country':
if seriesdata['webChannel'][key] is None:
pass
else:
for key, value in seriesdata['webChannel']['country'].items():
newkey = 'webChannelcountry'+ key
webchannel[newkey] = value
else:
webchannel[key] = value
if key == 'name':
newkey = 'webChannel' + key
webchannel[newkey] = value
if key == 'timezone':
newkey = 'webChannelcountry'+ key
webchannel[newkey] = value
except:
#print('Failed to insert webchannel information.')
seriesdata['webchannelid'] = '0'
pass
else:
#seriesdata.pop('webChannel')
webchannel['id'] = '0'
seriesdata['webchannelid'] = webchannel['id']
webchannel['name'] = 'Not Applicable'
webchannel['webchannelname'] = webchannel['name']
#webchannel['networkid'] = webchannel['id']
try:
webresult.append(webchannel)
webworkchannel.append(metadata.tables['updates.tvwebchannelnewvals'])
#insertresult = insert_data(webchannel, tables[5])
except sqlalchemy.exc.IntegrityError as e:
pass
except Exception as e:
#print('Failed to insert webchannel information.')
pass
try:
seriesdata['seriesid'] = seriesdata['id']
except:
pass
#print('TV Show: ' + seriesdata['seriesname'])
try:
if seriesdata['image']:
for key, value in seriesdata['image'].items():
newkey = key + 'image'
seriesdata[newkey] = value
seriesdata.pop('image')
else:
seriesdata.pop('image')
except:
pass
try:
if seriesdata['externals']:
for key, value in seriesdata['externals'].items():
seriesdata[key] = value
seriesdata.pop('externals')
else:
seriesdata.pop('externals')
except KeyError as e:
pass
try:
if seriesdata['rating']:
for key, value in seriesdata['rating'].items():
seriesdata['rating'] = value
if seriesdata['schedule']:
seriesdata['time'] = seriesdata['schedule']['time']
seriesdata['days'] = ", ".join(seriesdata['schedule']['days'])
seriesdata.pop('schedule')
except KeyError as e:
pass
try:
for key, value in seriesdata['_links']['self'].items():
seriesdata[key] = value
seriesdata.pop('_links')
except KeyError as e:
pass
else:
seriesdata.pop('id')
if seriesdata['genres']:
seriesdata['genres'] = ", ".join(seriesdata['genres'])
# Finish transforming to match table columns
seriesdata['seriesname'] = seriesdata.pop('name')
seriesdata['tvrageid'] = seriesdata.pop('tvrage')
seriesdata['tvdbid'] = seriesdata.pop('thetvdb')
seriesdata['imdbid'] = seriesdata.pop('imdb')
seriesdata['serieslanguage'] = seriesdata.pop('language')
seriesdata['seriesstatus'] = seriesdata.pop('status')
seriesdata['airdays'] = seriesdata.pop('days')
seriesdata['airtime'] = seriesdata.pop('time')
seriesdata['showtype'] = seriesdata.pop('type')
seriesdata['overview'] = seriesdata.pop('summary')
seriesdata['showurl'] = seriesdata.pop('url')
seriesdata['apilink'] = seriesdata.pop('href')
seriesdata['officialsite'] = seriesdata.pop('officialSite')
results = {'networkdata': networkresult, 'networktable': networkchannel,
'webdata': webresult, 'webtable': webchannel,
'seriesdata': seriesdata}
#results.append(tableresult)
#results.append(seriesdata)
return (results)
def __del__(self):
pass