def updateLibrary(asinlist=False): asins = '' if not asinlist: asinlist = common.SCRAP_ASINS(common.movielib % common.lib) MOVIE_ASINS = getMoviedbAsins(0, True) for asin in asinlist: found, MOVIE_ASINS = common.compasin(MOVIE_ASINS, asin) if not found: asins += asin + ',' deleteremoved(MOVIE_ASINS) else: asins = ','.join(asinlist) if not asins: return titles = appfeed.ASIN_LOOKUP(asins)['message']['body']['titles'] for title in titles: ASIN_ADD(title)
def ASIN_ADD(titles, asins=None): count = 0 if asins: titles = appfeed.ASIN_LOOKUP(asins)['message']['body']['titles'] for title in titles: stars = votes = seriesasin = mpaa = premiered = year = genres = poster = None seasontotal = episodetotal = season = 0 contentType = 'SERIES' if asins else title['contentType'] asin, isHD, isPrime, audio = GET_ASINS(title) plot = title.get('synopsis') studio = title.get('studioOrNetwork') actors = title.get('starringCast') fanart = title.get('heroUrl') isAdult = 'ageVerificationRequired' in str(title.get('restrictions')) if 'images' in title['formats'][0].keys(): try: thumbnailUrl = title['formats'][0]['images'][0]['uri'] thumbnailFilename = thumbnailUrl.split('/')[-1] thumbnailBase = thumbnailUrl.replace(thumbnailFilename, '') poster = thumbnailBase + thumbnailFilename.split( '.')[0] + '.jpg' except: pass if 'releaseOrFirstAiringDate' in title: premiered = title['releaseOrFirstAiringDate'][ 'valueFormatted'].split('T')[0] year = int(premiered.split('-')[0]) if 'regulatoryRating' in title: if title['regulatoryRating'] == 'not_checked': mpaa = getString(30171) else: mpaa = 'FSK ' + title['regulatoryRating'] if 'genres' in title.keys(): genres = ' / '.join(title['genres']).replace('_', ' & ').replace( 'Musikfilm & Tanz', 'Musikfilm, Tanz') if 'customerReviewCollection' in title: stars = float( title['customerReviewCollection']['customerReviewSummary'] ['averageOverallRating']) * 2 votes = title['customerReviewCollection']['customerReviewSummary'][ 'totalReviewCount'] elif 'amazonRating' in title: stars = float(title['amazonRating']['rating'] ) * 2 if 'rating' in title['amazonRating'] else None votes = title['amazonRating']['count'] if 'count' in title[ 'amazonRating'] else 0 if contentType == 'SERIES': seriestitle = title['title'] if 'childTitles' in title: seasontotal = title['childTitles'][0]['size'] showdata = [ cleanData(x) for x in [ asin, checkCase(seriestitle), plot, studio, mpaa, genres, actors, premiered, year, stars, votes, seasontotal, 0, audio, isHD, isPrime, None, None, None, poster, None, fanart ] ] count += addDB('shows', showdata) elif contentType == 'SEASON': season = title['number'] if title['ancestorTitles']: try: seriestitle = title['ancestorTitles'][0]['title'] seriesasin = title['ancestorTitles'][0]['titleId'] except: pass else: seriesasin = asin.split(',')[0] seriestitle = title['title'] if 'childTitles' in title: episodetotal = title['childTitles'][0]['size'] imdburl = title.get('imdbUrl') seasondata = [ cleanData(x) for x in [ asin, seriesasin, season, checkCase(seriestitle), plot, actors, studio, mpaa, genres, premiered, year, stars, votes, episodetotal, audio, None, None, isHD, isPrime, imdburl, poster, None, fanart, False ] ] count += addDB('seasons', seasondata) elif contentType == 'EPISODE': episodetitle = title['title'] seasontitle = '' if 'ancestorTitles' in title: for content in title['ancestorTitles']: if content['contentType'] == 'SERIES': seriesasin = content.get('titleId') seriestitle = content.get('title', '') elif content['contentType'] == 'SEASON': season = content.get('number') seasonasin = content.get('titleId') seasontitle = content.get('title', '') if not seriesasin: seriesasin = seasonasin seriestitle = seasontitle episode = title.get('number', 0) runtime = title['runtime'][ 'valueMillis'] / 1000 if 'runtime' in title else None episodedata = [ cleanData(x) for x in [ asin, seasonasin, seriesasin, checkCase(seriestitle), season, episode, poster, mpaa, actors, genres, checkCase( episodetitle), studio, stars, votes, fanart, plot, premiered, year, runtime, isHD, isPrime, isAdult, audio ] ] count += addDB('episodes', episodedata) return count
def ASIN_ADD(ASINLIST, isPrime=True): titles = appfeed.ASIN_LOOKUP(ASINLIST)['message']['body']['titles'] for title in titles: asin = title['titleId'] movietitle = title['title'] url = common.BASE_URL + '/gp/product/' + asin if title['formats'][0].has_key('images'): try: thumbnailUrl = title['formats'][0]['images'][0]['uri'] thumbnailFilename = thumbnailUrl.split('/')[-1] thumbnailBase = thumbnailUrl.replace(thumbnailFilename, '') poster = thumbnailBase + thumbnailFilename.split( '.')[0] + '.jpg' except: poster = None if title.has_key('synopsis'): plot = title['synopsis'] else: plot = None if title.has_key('director'): director = title['director'] else: director = None if title.has_key('runtime'): runtime = str(title['runtime']['valueMillis'] / 1000) else: runtime = None if title.has_key('releaseOrFirstAiringDate'): premiered = title['releaseOrFirstAiringDate'][ 'valueFormatted'].split('T')[0] year = int(premiered.split('-')[0]) else: premiered = None year = None if title.has_key('studioOrNetwork'): studio = title['studioOrNetwork'] else: studio = None if title.has_key('regulatoryRating'): mpaa = title['regulatoryRating'] else: mpaa = '' if title.has_key('starringCast'): actors = title['starringCast'] else: actors = None if title.has_key('genres'): genres = ','.join(title['genres']) else: genres = '' if title.has_key('customerReviewCollection'): stars = float( title['customerReviewCollection']['customerReviewSummary'] ['averageOverallRating']) * 2 votes = str(title['customerReviewCollection'] ['customerReviewSummary']['totalReviewCount']) else: stars = None votes = None isHD = False hd_asin = None for format in title['formats']: if format['videoFormatType'] == 'HD': isHD = True for offer in format['offers']: if offer['offerType'] == 'PURCHASE': hd_asin = offer['asin'] elif offer['offerType'] == 'RENTAL': hd_asin = offer['asin'] #for offer in format['offers']: # if offer['offerType'] == 'SUBSCRIPTION': # isPrime = True #Add Movie moviedata = [ asin, hd_asin, movietitle, url, poster, plot, director, None, runtime, year, premiered, studio, mpaa, actors, genres, stars, votes, None, None, None, isPrime, isHD, False, False, None ] addMoviedb(moviedata) return [asin, hd_asin]
def ASIN_ADD(ASINLIST, url=False, isPrime=True, isHD=False, single=False, addSeries=False): if url: titles = appfeed.URL_LOOKUP(url)['message']['body']['titles'] else: titles = appfeed.ASIN_LOOKUP(ASINLIST)['message']['body']['titles'] for title in titles: isHD = False isPrime = True if title['contentType'] == 'SERIES': asin = title['titleId'] seriestitle = title['title'] for format in title['formats']: if format['videoFormatType'] == 'HD': isHD = True for offer in format['offers']: if offer['offerType'] == 'SUBSCRIPTION': isPrime = True if title['formats'][0].has_key('images'): try: thumbnailUrl = title['formats'][0]['images'][0]['uri'] thumbnailFilename = thumbnailUrl.split('/')[-1] thumbnailBase = thumbnailUrl.replace(thumbnailFilename, '') poster = thumbnailBase + thumbnailFilename.split( '.')[0] + '.jpg' except: poster = None else: poster = None if title.has_key('synopsis'): plot = title['synopsis'] else: plot = None if title.has_key('childTitles'): seasontotal = title['childTitles'][0]['size'] seasonFeed = title['childTitles'][0]['feedUrl'] else: seasontotal = 0 seasonFeed = None if title.has_key('releaseOrFirstAiringDate'): premiered = title['releaseOrFirstAiringDate'][ 'valueFormatted'].split('T')[0] year = int(premiered.split('-')[0]) else: premiered = None year = None if title.has_key('studioOrNetwork'): studio = title['studioOrNetwork'] else: studio = None if title.has_key('regulatoryRating'): mpaa = title['regulatoryRating'] else: mpaa = None if title.has_key('starringCast'): actors = title['starringCast'] else: actors = None if title.has_key('genres'): genres = ','.join(title['genres']) else: genres = None if title.has_key('amazonRating'): stars = float(title['amazonRating']['rating']) * 2 votes = str(title['amazonRating']['count']) else: stars = None votes = None # asin,feed ,seriestitle,poster,plot,studio,mpaa,genres,actors,premiered,year,stars,votes,seasontotal,episodetotal,watched,unwatched,isHD,isprime,favor,TVDBbanner,TVDBposter,TVDBfanart addShowdb([ asin, None, seasonFeed, seriestitle, poster, plot, studio, mpaa, genres, actors, premiered, year, stars, votes, seasontotal, 0, 0, 0, isHD, isPrime, False, None, None, None, None ]) if single: return asin, ASINLIST elif title['contentType'] == 'SEASON': asin = title['titleId'] season = title['number'] if title.has_key('ancestorTitles'): if len(title['ancestorTitles']) > 0: try: seriestitle = title['ancestorTitles'][0]['title'] seriesasin = title['ancestorTitles'][0]['titleId'] except: pass if addSeries: ASIN_ADD(seriesasin) if title['formats'][0].has_key('images'): try: thumbnailUrl = title['formats'][0]['images'][0]['uri'] thumbnailFilename = thumbnailUrl.split('/')[-1] thumbnailBase = thumbnailUrl.replace(thumbnailFilename, '') poster = thumbnailBase + thumbnailFilename.split( '.')[0] + '.jpg' except: poster = None else: poster = None if title.has_key('synopsis'): plot = title['synopsis'] else: plot = None if title.has_key('childTitles'): episodetotal = title['childTitles'][0]['size'] episodeFeed = title['childTitles'][0]['feedUrl'] else: episodetotal = 0 episodeFeed = None if title.has_key('releaseOrFirstAiringDate'): premiered = title['releaseOrFirstAiringDate'][ 'valueFormatted'].split('T')[0] year = int(premiered.split('-')[0]) else: premiered = None year = None if title.has_key('starringCast'): actors = title['starringCast'] else: actors = None if title.has_key('studioOrNetwork'): studio = title['studioOrNetwork'] else: studio = None if title.has_key('regulatoryRating'): mpaa = title['regulatoryRating'] else: mpaa = None if title.has_key('genres'): genres = ','.join(title['genres']) else: genres = None if title.has_key('amazonRating'): stars = float(title['amazonRating']['rating']) * 2 votes = str(title['amazonRating']['count']) else: stars = None votes = None for format in title['formats']: if format['videoFormatType'] == 'HD': for offer in format['offers']: if offer['offerType'] == 'SUBSCRIPTION': isPrime = True isHD = True for offer in format['offers']: if offer['offerType'] == 'SEASON_PURCHASE' or offer[ 'offerType'] == 'TV_PASS': hd_asin = offer['asin'] addSeasondb([ hd_asin, seriesasin, episodeFeed, poster, season, seriestitle, plot, actors, studio, mpaa, genres, premiered, year, stars, votes, episodetotal, 0, episodetotal, isHD, isPrime ]) #if hd_asin not in episodeFeed: # ASIN_FEED(episodeFeed.replace(asin,hd_asin)) if format['videoFormatType'] == 'SD': for offer in format['offers']: if offer['offerType'] == 'SUBSCRIPTION': isPrime = True isHD = False for offer in format['offers']: if offer['offerType'] == 'SEASON_PURCHASE' or offer[ 'offerType'] == 'TV_PASS': sd_asin = offer['asin'] addSeasondb([ sd_asin, seriesasin, episodeFeed, poster, season, seriestitle, plot, actors, studio, mpaa, genres, premiered, year, stars, votes, episodetotal, 0, episodetotal, isHD, isPrime ]) # asin,episodeFeed,poster,season,seriestitle,plot,actors,studio,mpaa,genres,premiered,year,stars,votes,episodetotal,watched,unwatched,isHD,isprime elif title['contentType'] == 'EPISODE': asin = title['titleId'] episodetitle = title['title'] if title.has_key('ancestorTitles'): if len(title['ancestorTitles']) > 0: seriestitle = title['ancestorTitles'][0]['title'] seriesasin = title['ancestorTitles'][0]['titleId'] seasonasin = title['ancestorTitles'][1]['titleId'] season = title['ancestorTitles'][1]['number'] if title.has_key('number'): episode = title['number'] else: episode = 0 url = common.BASE_URL + '/gp/product/' + asin if title['formats'][0].has_key('images'): try: thumbnailUrl = title['formats'][0]['images'][0]['uri'] thumbnailFilename = thumbnailUrl.split('/')[-1] thumbnailBase = thumbnailUrl.replace(thumbnailFilename, '') poster = thumbnailBase + thumbnailFilename.split( '.')[0] + '.jpg' except: poster = None else: poster = None if title.has_key('synopsis'): plot = title['synopsis'] else: plot = None if title.has_key('runtime'): runtime = str(title['runtime']['valueMillis'] / 1000) else: runtime = None if title.has_key('releaseOrFirstAiringDate'): premiered = title['releaseOrFirstAiringDate'][ 'valueFormatted'].split('T')[0] year = int(premiered.split('-')[0]) else: premiered = None year = None if title.has_key('studioOrNetwork'): studio = title['studioOrNetwork'] else: studio = None if title.has_key('regulatoryRating'): mpaa = title['regulatoryRating'] else: mpaa = None if title.has_key('starringCast'): actors = title['starringCast'] else: actors = None if title.has_key('genres'): genres = ','.join(title['genres']) else: genres = None if title.has_key('customerReviewCollection'): stars = float( title['customerReviewCollection']['customerReviewSummary'] ['averageOverallRating']) * 2 votes = str(title['customerReviewCollection'] ['customerReviewSummary']['totalReviewCount']) else: stars = None votes = None for format in title['formats']: if format['videoFormatType'] == 'HD': for offer in format['offers']: if offer['offerType'] == 'PURCHASE': isHD = True hd_asin = offer['asin'] hd_url = common.BASE_URL + '/gp/product/' + hd_asin for offer in format['offers']: if offer['offerType'] == 'SUBSCRIPTION': isPrime = True # asin,seriestitle,season,episode,poster,mpaa,actors,genres,episodetitle,studio,stars,votes,url,plot,airdate,year,runtime,isHD,isprime,watched if isHD: addEpisodedb([ hd_asin, seasonasin, seriesasin, seriestitle, season, episode, poster, mpaa, actors, genres, episodetitle, studio, stars, votes, hd_url, plot, premiered, year, runtime, isHD, isPrime, False ]) addEpisodedb([ asin, seasonasin, seriesasin, seriestitle, season, episode, poster, mpaa, actors, genres, episodetitle, studio, stars, votes, url, plot, premiered, year, runtime, False, isPrime, False ]) else: addEpisodedb([ asin, seasonasin, seriesasin, seriestitle, season, episode, poster, mpaa, actors, genres, episodetitle, studio, stars, votes, url, plot, premiered, year, runtime, isHD, isPrime, False ])
def ASIN_ADD(titles, asins=False, url=False, single=False): if asins: titles = appfeed.ASIN_LOOKUP(asins)['message']['body']['titles'] count = 0 for title in titles: poster = plot = premiered = year = studio = mpaa = fanart = imdburl = None actors = genres = stars = votes = seriesasin = runtime = banner = None seasontotal = episodetotal = episode = 0 isAdult = False if asins: contentType = 'SERIES' else: contentType = title['contentType'] asin, isHD, isPrime, audio = common.GET_ASINS(title) if title['formats'][0].has_key('images'): try: thumbnailUrl = title['formats'][0]['images'][0]['uri'] thumbnailFilename = thumbnailUrl.split('/')[-1] thumbnailBase = thumbnailUrl.replace(thumbnailFilename, '') poster = thumbnailBase + thumbnailFilename.split( '.')[0] + '.jpg' except: pass if title.has_key('synopsis'): plot = title['synopsis'] if title.has_key('releaseOrFirstAiringDate'): premiered = title['releaseOrFirstAiringDate'][ 'valueFormatted'].split('T')[0] year = int(premiered.split('-')[0]) if title.has_key('studioOrNetwork'): studio = title['studioOrNetwork'] if title.has_key('regulatoryRating'): if title['regulatoryRating'] == 'not_checked': mpaa = common.getString(30171) else: mpaa = common.getString(30170) + title['regulatoryRating'] if title.has_key('starringCast'): actors = title['starringCast'] if title.has_key('genres'): genres = ' / '.join(title['genres']).replace('_', ' & ').replace( 'Musikfilm & Tanz', 'Musikfilm, Tanz') if title.has_key('customerReviewCollection'): stars = float( title['customerReviewCollection']['customerReviewSummary'] ['averageOverallRating']) * 2 votes = str(title['customerReviewCollection'] ['customerReviewSummary']['totalReviewCount']) elif title.has_key('amazonRating'): if title['amazonRating'].has_key('rating'): stars = float(title['amazonRating']['rating']) * 2 if title['amazonRating'].has_key('count'): votes = str(title['amazonRating']['count']) if title.has_key('heroUrl'): fanart = title['heroUrl'] if contentType == 'SERIES': seriestitle = title['title'] if title.has_key('childTitles'): seasontotal = title['childTitles'][0]['size'] showdata = [ common.cleanData(x) for x in [ asin, common.checkCase( seriestitle), plot, studio, mpaa, genres, actors, premiered, year, stars, votes, seasontotal, 0, audio, isHD, isPrime, None, None, None, poster, None, fanart ] ] count += addDB('shows', showdata) if single: return asin, ASINLIST elif contentType == 'SEASON': season = title['number'] if title['ancestorTitles']: try: seriestitle = title['ancestorTitles'][0]['title'] seriesasin = title['ancestorTitles'][0]['titleId'] except: pass else: seriesasin = asin.split(',')[0] seriestitle = title['title'] if title.has_key('childTitles'): episodetotal = title['childTitles'][0]['size'] #if title.has_key('drakeUrl'): # imdburl = title['drakeUrl'] if title.has_key('imdbUrl'): imdburl = title['imdbUrl'] seasondata = [ common.cleanData(x) for x in [ asin, seriesasin, season, common.checkCase(seriestitle), plot, actors, studio, mpaa, genres, premiered, year, stars, votes, episodetotal, audio, None, None, isHD, isPrime, imdburl, poster, None, fanart ] ] count += addDB('seasons', seasondata) elif contentType == 'EPISODE': episodetitle = title['title'] if title.has_key('ancestorTitles'): for content in title['ancestorTitles']: if content['contentType'] == 'SERIES': if content.has_key('titleId'): seriesasin = content['titleId'] if content.has_key('title'): seriestitle = content['title'] elif content['contentType'] == 'SEASON': if content.has_key('number'): season = content['number'] if content.has_key('titleId'): seasonasin = content['titleId'] if content.has_key('title'): seasontitle = content['title'] if not seriesasin: seriesasin = seasonasin seriestitle = seasontitle if title.has_key('number'): episode = title['number'] if title.has_key('runtime'): runtime = str(title['runtime']['valueMillis'] / 60000) if title.has_key('restrictions'): for rest in title['restrictions']: if rest['action'] == 'playback': if rest['type'] == 'ageVerificationRequired': isAdult = True episodedata = [ common.cleanData(x) for x in [ asin, seasonasin, seriesasin, common.checkCase(seriestitle), season, episode, poster, mpaa, actors, genres, common.checkCase( episodetitle), studio, stars, votes, fanart, plot, premiered, year, runtime, isHD, isPrime, isAdult, audio ] ] count += addDB('episodes', episodedata) return count