Recomendaçoes de filmes por faixa etaria
recomenda filmes por faixa etaria a partir de uma estrutura de dados de Arvore de busca
Notebook de exemplo com estrutura para consumir API e recomendar filmes por idade.
from dataclasses import dataclass
from typing import List, Optional
import requests
@dataclass
class Movie:
title:str
year:str
rated:str
class Node:
def __init__(self,key):
self.key=key
self.movies=[]
self.left=None
self.right=None
class AgeBST:
def __init__(self):
self.root=None
def insert(self,key,movie):
def _ins(n,key,m):
if n is None:
x=Node(key); x.movies.append(m); return x
if key<n.key: n.left=_ins(n.left,key,m)
elif key>n.key: n.right=_ins(n.right,key,m)
else: n.movies.append(m)
return n
self.root=_ins(self.root,key,movie)
def recommend(self,age):
best=None
n=self.root
while n:
if age<n.key:
n=n.left
else:
best=n
n=n.right
return [] if best is None else best.movies
RATING_TO_AGE={"G":0,"PG":10,"PG-13":13,"R":17,"NC-17":18}
def fetch_movies(api_key, titles):
movies=[]
for t in titles:
r=requests.get("https://www.omdbapi.com/",params={"apikey":api_key,"t":t},timeout=15)
d=r.json()
if d.get("Response")=="True":
movies.append(Movie(d["Title"],d["Year"],d.get("Rated","NR")))
return movies
[Movie(title='The Matrix', year='1999', rated='R'), Movie(title='Deadpool', year='2016', rated='R')]
# Exemplo:
api_key="40f59522"
filmes=fetch_movies(api_key,["Toy Story","The Matrix","Deadpool"])
tree=AgeBST()
for f in filmes:
tree.insert(RATING_TO_AGE.get(f.rated,0),f)
print(tree.recommend(55))# Exemplo:
api_key="40f59522"
filmes=fetch_movies(api_key,["Toy Story","The Matrix","Deadpool"])
tree=AgeBST()
for f in filmes:
tree.insert(RATING_TO_AGE.get(f.rated,0),f)
print(tree.recommend(15))Execução em Python roda no seu navegador via Pyodide (WebAssembly). Pacotes como numpy, pandas e matplotlib são suportados; outros exigem wheels puro-Python via micropip.