def create_match_genre_tvseries(tv_series_id): series_details = get_details_tmdb_tv_series(tv_series_id, language) tv_json = replace_none_with_empty_str(series_details) genres = tv_json['genres'] for g in genres: genre = g params = {} if 'id' in tv_json: params['id'] = str(tv_json['id']) if 'name' in genre: params['name'] = genre['name'] if 'id' in genre: params['genre_id'] = str(genre['id']) #print(params) payload={"query" : "MERGE(n:Genre{name:{name},genre_id:{genre_id}}) RETURN n"} payload['params'] = params response_json = callNeo4j(payload, headers) if response_json is not None: payload={"query" :"MATCH (t:TvSeries),(n:Genre) WHERE t.id ={id} AND n.genre_id = {genre_id} MERGE (t)-[r:OF_GENRE]->(n) RETURN r"} params = {} params['id'] = str(tv_json['id']) params['genre_id'] = str(genre['id']) tv_series_id = str(tv_json['id']) genre_id = str(genre['id']) payload['params'] = params #print(params) match_response_json = callNeo4j(payload, headers)
def last_episode(tv_series_id): #tv_series_id = '40075' tvseries = get_details_tmdb_tv_series(str(tv_series_id), language) tv_json = replace_none_with_empty_str(tvseries) last_episode_to_air = tv_json['last_episode_to_air'] params = {} if str(last_episode_to_air) != '': if 'id' in tv_json: params['id'] = str(tv_json['id']) if 'air_date' in last_episode_to_air: params['last_episode_to_air_air_date'] = last_episode_to_air['air_date'] if 'episode_number' in last_episode_to_air: params['last_episode_to_air_episode_number'] = last_episode_to_air['episode_number'] if 'id' in last_episode_to_air: params['last_episode_to_air_id'] = str(last_episode_to_air['id']) if 'name' in last_episode_to_air: params['last_episode_to_air_name'] = last_episode_to_air['name'] if 'overview' in last_episode_to_air: params['last_episode_to_air_overview'] = last_episode_to_air['overview'] if 'production_code' in last_episode_to_air: params['last_episode_to_air_production_code'] = last_episode_to_air['production_code'] if 'season_number' in last_episode_to_air: params['last_episode_to_air_season_number'] = last_episode_to_air['season_number'] if 'show_id' in last_episode_to_air: params['last_episode_to_air_show_id'] = str(last_episode_to_air['show_id']) if 'still_path' in last_episode_to_air: params['last_episode_to_air_still_path'] = last_episode_to_air['still_path'] if 'vote_average' in last_episode_to_air: params['last_episode_to_air_vote_average'] = last_episode_to_air['vote_average'] if 'vote_count' in last_episode_to_air: params['last_episode_to_air_vote_count'] = last_episode_to_air['vote_count'] payload = {"query":"MATCH(t:TvSeries{id:{id}}) SET t += {last_episode_to_air_air_date:{last_episode_to_air_air_date},last_episode_to_air_episode_number:{last_episode_to_air_episode_number},last_episode_to_air_id:{last_episode_to_air_id},last_episode_to_air_name:{last_episode_to_air_name},last_episode_to_air_overview:{last_episode_to_air_overview},last_episode_to_air_production_code:{last_episode_to_air_production_code},last_episode_to_air_season_number:{last_episode_to_air_season_number},last_episode_to_air_show_id:{last_episode_to_air_show_id},last_episode_to_air_still_path:{last_episode_to_air_still_path},last_episode_to_air_vote_average:{last_episode_to_air_vote_average},last_episode_to_air_vote_count:{last_episode_to_air_vote_count}} RETURN t"} payload['params'] = params response_json = callNeo4j(payload, headers) #print(response_json) else: if last_episode_to_air == '': if 'id' in tv_json: params['id'] = str(tv_json['id']) if 'last_episode_to_air' in tv_json: params['last_episode_to_air'] = tv_json['last_episode_to_air'] payload={"query" : "MATCH(t:TvSeries{id:{id}})SET t += {last_episode_to_air:{last_episode_to_air}}RETURN t"} payload['params'] = params response_json = callNeo4j(payload, headers)
def tvseries_to_neo4j(tv_series_id): tvseries = get_details_tmdb_tv_series(str(tv_series_id), language) tv_json = replace_none_with_empty_str(tvseries) params = {} if 'backdrop_path' in tv_json: params['backdrop_path'] = tv_json['backdrop_path'] if 'first_air_date' in tv_json: params['first_air_date'] = tv_json['first_air_date'] if 'homepage' in tv_json: params['homepage'] = tv_json['homepage'] if 'id' in tv_json: params['id'] = str(tv_json['id']) if 'in_production' in tv_json: params['in_production'] = tv_json['in_production'] if 'name' in tv_json: params['name'] = tv_json['name'] if 'number_of_episodes' in tv_json: params['number_of_episodes'] = tv_json['number_of_episodes'] if 'number_of_seasons' in tv_json: params['number_of_seasons'] = tv_json['number_of_seasons'] if 'original_language' in tv_json: params['original_language'] = tv_json['original_language'] if 'original_name' in tv_json: params['original_name'] = tv_json['original_name'] if 'overview' in tv_json: params['overview'] = tv_json['overview'] if 'popularity' in tv_json: params['popularity'] = tv_json['popularity'] if 'poster_path' in tv_json: params['poster_path'] = tv_json['poster_path'] if 'status' in tv_json: params['status'] = tv_json['status'] if 'type' in tv_json: params['type'] = tv_json['type'] if 'vote_average' in tv_json: params['vote_average'] = tv_json['vote_average'] if 'vote_count' in tv_json: params['vote_count'] = tv_json['vote_count'] #print(params) payload={"query" : "MERGE(t:TvSeries {backdrop_path:{backdrop_path},first_air_date:{first_air_date},homepage:{homepage},id:{id},in_production:{in_production},name:{name},number_of_episodes:{number_of_episodes},number_of_seasons: {number_of_seasons},original_language: {original_language},original_name: {original_name},overview: {overview},popularity: {popularity},poster_path: {poster_path},status: {status},type: {type},vote_average:{vote_average} ,vote_count: {vote_count}}) RETURN t"} payload['params'] = params response_json = callNeo4j(payload, headers) next_episode_props = next_episode(tv_series_id) last_episode_props = last_episode(tv_series_id)
def tv_series_season_payload(tv_series_id, language): series_details = get_details_tmdb_tv_series(tv_series_id, language) #print(series_details) series_details["seasons"] = [ dict(id=k1["id"], air_date=k1["air_date"], episode_count=k1["episode_count"], name=k1["name"], overview=k1["overview"], poster_path=k1["poster_path"], season_number=k1["season_number"]) for k1 in series_details["seasons"] ] season_ids = series_details["seasons"] #season_ids = list({v['id']:v for v in season_id}.values()) #print(season_ids) for s_id in season_ids: #print(s_id) series_id = series_details['id'] season_id = replace_none_with_empty_str(s_id) #print(series_id) #print(season_id) params = {} if 'id' in series_details: params['id'] = str(series_details['id']) #print(params) if 'air_date' in season_id: params['air_date'] = season_id['air_date'] if 'episode_count' in season_id: params['episode_count'] = season_id['episode_count'] if 'id' in season_id: params['tvseason_id'] = str(season_id['id']) if 'name' in season_id: params['name'] = season_id['name'] if 'overview' in season_id: params['overview'] = season_id['overview'] if 'poster_path' in season_id: params['poster_path'] = season_id['poster_path'] if 'season_number' in season_id: params['season_number'] = season_id['season_number'] #print(params) payload = { "query": "MERGE (t:TvSeasons{ air_date :{air_date},episode_count : {episode_count},tvseason_id:{tvseason_id},name:{name},overview:{overview},poster_path:{poster_path},season_number:{season_number}}) RETURN t" } payload['params'] = params # create or update production company response_json = callNeo4j(payload, headers) if response_json is not None: payload = { "query": "MATCH (t:TvSeries),(n:TvSeasons) WHERE t.id ={id} AND n.tvseason_id = {tvseason_id} MERGE (t)-[r:HAS_SEASON]->(n) RETURN r" } params = {} params['id'] = str(series_details['id']) params['tvseason_id'] = str(season_id['id']) payload['params'] = params #print(params) match_response_json = callNeo4j(payload, headers) print(match_response_json)
def tv_series_season_episodes_payload(tv_series_id, language): series_details = get_details_tmdb_tv_series(tv_series_id, language) series_details["seasons"] = [ dict(id=k1["id"], season_number=k1["season_number"]) for k1 in series_details["seasons"] ] season_ids = series_details["seasons"] s_id = [d for d in season_ids if d.get('id') != 0] #print(s_id) s = season_ids[:] season_ids[:] = [d for d in season_ids if d.get('season_number') != 0] s = season_ids[:] list = [ids for ids in s] #print(list) season_no = [] for value in list: season_no.append(value['season_number']) s_number = season_no for season_number in s_number: seasons_details = get_details_tv_seasons(tv_series_id, season_number) #print(seasons_details) seasons_details["episodes"] = [ dict(air_date=k1["air_date"], episode_number=k1["episode_number"], id=k1["id"], name=k1["name"], overview=k1["overview"], production_code=k1["production_code"], season_number=k1["season_number"], show_id=k1["show_id"], still_path=k1["still_path"], vote_average=k1["vote_average"], vote_count=k1["vote_count"]) for k1 in seasons_details["episodes"] ] seasons = seasons_details["episodes"] for season_data in seasons: season = replace_none_with_empty_str(season_data) params = {} if 'id' in seasons_details: params['tvseason_id'] = str(seasons_details['id']) #print(params) if 'air_date' in season: params['air_date'] = season['air_date'] if 'episode_number' in season: params['episode_number'] = season['episode_number'] if 'id' in season: params['episode_id'] = str(season['id']) if 'name' in season: params['name'] = season['name'] if 'overview' in season: params['overview'] = season['overview'] if 'production_code' in season: params['production_code'] = season['production_code'] if 'season_number' in season: params['season_number'] = season['season_number'] if 'still_path' in season: params['still_path'] = season['still_path'] if 'vote_average' in season: params['vote_average'] = season['vote_average'] if 'show_id' in season: params['show_id'] = str(season['show_id']) if 'vote_count' in season: params['vote_count'] = season['vote_count'] payload = { "query": "MERGE(n:TvEpisodes{air_date :{air_date},episode_number : {episode_number},episode_id:{episode_id},name:{name},overview:{overview},production_code:{production_code},season_number:{season_number},still_path:{still_path},vote_average:{vote_average},show_id:{show_id},vote_count:{vote_count}}) RETURN n" } payload['params'] = params response_json = callNeo4j(payload, headers) if response_json is not None: payload = { "query": "MATCH (n:TvSeasons),(e:TvEpisodes) WHERE n.tvseason_id = {tvseason_id} AND e.episode_id = {episode_id} MERGE (n)-[r:HAS_EPISODE]->(e) RETURN r" } params = {} params['tvseason_id'] = str(seasons_details['id']) params['episode_id'] = str(season['id']) payload['params'] = params #print(episode_id) match_response_json = callNeo4j(payload, headers)
import requests import json import Fetch_Tmdb_Persons_Details from Fetch_Tmdb_Persons_Details import get_person_details from Tmdbtvseries import get_details_tmdb_tv_series, get_details_tv_seasons, get_details_tv_episodes_details api_key_counter = 0 error_status = False #tv_series_id = '13916' language = 'en-US' headers = {"Authorization": "Basic bmVvNGo6dm9ubnVl"} tv_series_id = '1396' language = 'en-US' neo4j_base_url = 'http://localhost:7474/db/data/cypher' tv_json = get_details_tmdb_tv_series(tv_series_id, language) with open('config.json') as json_file: config = json.load(json_file) api_keys = config["api_keys"] language = config["language"] tmdb_tv_series_base_url = config["tmdb_tv_series_base_url"] tmdb_person_base_url = config["tmdb_person_base_url"] def get_random_api_key(): # calls the global variable in the function global api_keys global api_key_counter api_key = api_keys[api_key_counter] api_key_counter += 1 if api_key_counter == len(api_keys):