Notebooks

Recomendaçoes de filmes por faixa etaria

recomenda filmes por faixa etaria a partir de uma estrutura de dados de Arvore de busca

Kernel inativo

Árvore de Busca + IMDb API

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.