MovieSphere_backend / may_like.py
humza7656's picture
Update may_like.py
ab19527 verified
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