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
+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