Spaces:
Sleeping
Sleeping
| from fastapi import APIRouter,Path,Request | |
| from dotenv import load_dotenv | |
| from typing import Optional | |
| from supabase import create_client | |
| from genre_dict import tmdb_movie_genres,tmdb_tv_genres | |
| import os | |
| import requests | |
| load_dotenv() | |
| project_url=os.getenv("project_url") | |
| api_key=os.getenv('api_key') | |
| tmdb_api_key=os.getenv('tmdb_api_key') | |
| supabase=create_client(project_url,api_key) | |
| def select_latest_one(season_id:str): | |
| id_list=[] | |
| response=supabase.table('user_exp').select('movie_id').eq('cookies',season_id).order("created_at", desc=True).limit(4).execute().data | |
| id_list=list(set([kk.get('movie_id') for kk in response])) | |
| result=get_like(id_list) | |
| return result | |
| def get_like(id_list: list): | |
| store_list = [] | |
| for tmdb_id in id_list: | |
| url_movie = f"https://api.themoviedb.org/3/movie/{tmdb_id}/recommendations?api_key={tmdb_api_key}&language=en-US&page=1" | |
| url_tv = f"https://api.themoviedb.org/3/tv/{tmdb_id}/recommendations?api_key={tmdb_api_key}&language=en-US&page=1" | |
| response = requests.get(url_movie) | |
| if response.status_code == 200: | |
| result = response.json().get("results", []) | |
| genre_map = tmdb_movie_genres | |
| else: | |
| response = requests.get(url_tv) | |
| if response.status_code == 200: | |
| result = response.json().get("results", []) | |
| genre_map = tmdb_tv_genres | |
| else: | |
| continue | |
| for rec in result[:2]: | |
| store_list.append({ | |
| "Id": rec.get("id"), | |
| "Title": rec.get("title") or rec.get("name"), | |
| "Release_date": rec.get("release_date") or rec.get("first_air_date"), | |
| 'Genre':'|'.join([ | |
| tmdb_movie_genres.get(genre_id, tmdb_tv_genres.get(genre_id, 'Unknown')) | |
| for genre_id in (rec.get('genre_ids') or []) | |
| ]) or 'None' | |
| , | |
| "Popularity": rec.get("popularity"), | |
| "Poster_path": f"https://image.tmdb.org/t/p/w500{rec.get('poster_path')}" if rec.get('poster_path') else None | |
| }) | |
| return store_list | |