cinematch 0.1.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- app/__init__.py +2 -0
- app/cli.py +97 -0
- app/config.py +38 -0
- app/data/generate_starter.py +365 -0
- app/data/starter_catalog.json +3621 -0
- app/database.py +188 -0
- app/main.py +1090 -0
- app/models/schemas.py +124 -0
- app/services/embeddings.py +115 -0
- app/services/orchestrator.py +1433 -0
- app/services/seeder.py +61 -0
- app/services/taste_dossier.py +276 -0
- app/services/tmdb.py +472 -0
- app/static/css/cinematch.css +296 -0
- app/static/images/placeholder_poster.svg +8 -0
- app/templates/base.html +258 -0
- app/templates/chat.html +282 -0
- app/templates/components/chat_message.html +72 -0
- app/templates/components/deck_card.html +258 -0
- app/templates/components/for_you_results.html +78 -0
- app/templates/components/search_results.html +43 -0
- app/templates/deck.html +20 -0
- app/templates/for_you.html +37 -0
- app/templates/library.html +156 -0
- app/templates/search.html +29 -0
- cinematch-0.1.0.dist-info/METADATA +173 -0
- cinematch-0.1.0.dist-info/RECORD +30 -0
- cinematch-0.1.0.dist-info/WHEEL +5 -0
- cinematch-0.1.0.dist-info/entry_points.txt +2 -0
- cinematch-0.1.0.dist-info/top_level.txt +1 -0
app/__init__.py
ADDED
app/cli.py
ADDED
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
"""Command-line entry point for an installed CineMatch application."""
|
|
2
|
+
|
|
3
|
+
import argparse
|
|
4
|
+
import getpass
|
|
5
|
+
import os
|
|
6
|
+
import sys
|
|
7
|
+
from pathlib import Path
|
|
8
|
+
|
|
9
|
+
from dotenv import load_dotenv, set_key
|
|
10
|
+
|
|
11
|
+
DEFAULT_OPENROUTER_MODEL = "openai/gpt-4o"
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
def default_data_dir() -> Path:
|
|
15
|
+
if sys.platform == "win32":
|
|
16
|
+
root = os.environ.get("LOCALAPPDATA") or os.environ.get("APPDATA")
|
|
17
|
+
return Path(root) / "CineMatch" if root else Path.home() / "CineMatch"
|
|
18
|
+
if sys.platform == "darwin":
|
|
19
|
+
return Path.home() / "Library" / "Application Support" / "CineMatch"
|
|
20
|
+
return Path(os.environ.get("XDG_DATA_HOME", Path.home() / ".local" / "share")) / "cinematch"
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
def build_parser() -> argparse.ArgumentParser:
|
|
24
|
+
parser = argparse.ArgumentParser(description="Run the CineMatch web application.")
|
|
25
|
+
parser.add_argument("--host", default="127.0.0.1", help="Address to listen on.")
|
|
26
|
+
parser.add_argument("--port", type=int, help="Port to listen on (default: APP_PORT or 8000).")
|
|
27
|
+
parser.add_argument("--reload", action="store_true", help="Reload when source files change.")
|
|
28
|
+
parser.add_argument(
|
|
29
|
+
"--configure",
|
|
30
|
+
action="store_true",
|
|
31
|
+
help="Prompt for the OpenRouter API key and model before starting.",
|
|
32
|
+
)
|
|
33
|
+
parser.add_argument(
|
|
34
|
+
"--data-dir",
|
|
35
|
+
type=Path,
|
|
36
|
+
help="Directory for cinematch.db (default: the operating system's user data directory).",
|
|
37
|
+
)
|
|
38
|
+
return parser
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
def openrouter_is_configured() -> bool:
|
|
42
|
+
api_key = os.environ.get("OPENROUTER_API_KEY", "").strip()
|
|
43
|
+
model = os.environ.get("OPENROUTER_MODEL", "").strip()
|
|
44
|
+
return bool(api_key and not api_key.startswith("your_") and model)
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
def configure_openrouter(env_path: Path) -> None:
|
|
48
|
+
if not sys.stdin.isatty():
|
|
49
|
+
raise SystemExit(
|
|
50
|
+
"OpenRouter is not configured. Run 'cinematch --configure' in an interactive "
|
|
51
|
+
"terminal, or set OPENROUTER_API_KEY and OPENROUTER_MODEL."
|
|
52
|
+
)
|
|
53
|
+
|
|
54
|
+
print("\nCineMatch first-run setup")
|
|
55
|
+
print("Create an API key at https://openrouter.ai/settings/keys")
|
|
56
|
+
api_key = getpass.getpass("OpenRouter API key (input is hidden): ").strip()
|
|
57
|
+
if not api_key:
|
|
58
|
+
raise SystemExit("An OpenRouter API key is required.")
|
|
59
|
+
|
|
60
|
+
current_model = os.environ.get("OPENROUTER_MODEL", DEFAULT_OPENROUTER_MODEL)
|
|
61
|
+
model = input(f"OpenRouter model [{current_model}]: ").strip() or current_model
|
|
62
|
+
|
|
63
|
+
env_path.touch(exist_ok=True)
|
|
64
|
+
set_key(env_path, "OPENROUTER_API_KEY", api_key)
|
|
65
|
+
set_key(env_path, "OPENROUTER_MODEL", model)
|
|
66
|
+
os.environ["OPENROUTER_API_KEY"] = api_key
|
|
67
|
+
os.environ["OPENROUTER_MODEL"] = model
|
|
68
|
+
print(f"Configuration saved to {env_path}\n")
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
def main() -> None:
|
|
72
|
+
args = build_parser().parse_args()
|
|
73
|
+
data_dir = args.data_dir or default_data_dir()
|
|
74
|
+
data_dir.mkdir(parents=True, exist_ok=True)
|
|
75
|
+
user_env_path = data_dir / ".env"
|
|
76
|
+
|
|
77
|
+
# A project-specific .env takes precedence over the saved user configuration.
|
|
78
|
+
load_dotenv(Path.cwd() / ".env")
|
|
79
|
+
load_dotenv(user_env_path)
|
|
80
|
+
if args.configure or not openrouter_is_configured():
|
|
81
|
+
configure_openrouter(user_env_path)
|
|
82
|
+
|
|
83
|
+
os.environ.setdefault("DATABASE_PATH", str(data_dir / "cinematch.db"))
|
|
84
|
+
|
|
85
|
+
from app.config import settings
|
|
86
|
+
import uvicorn
|
|
87
|
+
|
|
88
|
+
uvicorn.run(
|
|
89
|
+
"app.main:app",
|
|
90
|
+
host=args.host,
|
|
91
|
+
port=args.port or settings.APP_PORT,
|
|
92
|
+
reload=args.reload,
|
|
93
|
+
)
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
if __name__ == "__main__":
|
|
97
|
+
main()
|
app/config.py
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import os
|
|
2
|
+
from pathlib import Path
|
|
3
|
+
from typing import Literal
|
|
4
|
+
from pydantic_settings import BaseSettings, SettingsConfigDict
|
|
5
|
+
from pydantic import Field
|
|
6
|
+
|
|
7
|
+
BASE_DIR = Path(__file__).resolve().parent.parent
|
|
8
|
+
|
|
9
|
+
class Settings(BaseSettings):
|
|
10
|
+
# OpenRouter
|
|
11
|
+
OPENROUTER_API_KEY: str = Field(default="", description="OpenRouter API Key")
|
|
12
|
+
OPENROUTER_BASE_URL: str = Field(default="https://openrouter.ai/api/v1", description="OpenRouter Base URL")
|
|
13
|
+
OPENROUTER_MODEL: str = Field(default="openai/gpt-4o", description="Model for reasoning and chat")
|
|
14
|
+
|
|
15
|
+
# Embeddings
|
|
16
|
+
EMBEDDING_PROVIDER: Literal["openrouter", "local"] = "openrouter"
|
|
17
|
+
EMBEDDING_MODEL: str = Field(default="openai/text-embedding-3-small", description="Model for text embeddings")
|
|
18
|
+
EMBEDDING_DIM: int = Field(default=1536, gt=0, description="Dimension of embedding vectors")
|
|
19
|
+
|
|
20
|
+
# TMDB API
|
|
21
|
+
TMDB_API_KEY: str = Field(default="", description="The Movie Database API Key")
|
|
22
|
+
TMDB_BASE_URL: str = Field(default="https://api.themoviedb.org/3", description="TMDB API Base URL")
|
|
23
|
+
TMDB_IMAGE_BASE_URL: str = Field(default="https://image.tmdb.org/t/p/w500", description="TMDB Poster CDN Base URL")
|
|
24
|
+
|
|
25
|
+
# Database
|
|
26
|
+
DATABASE_PATH: Path = Field(default=BASE_DIR / "cinematch.db", description="Path to SQLite database")
|
|
27
|
+
|
|
28
|
+
# App Settings
|
|
29
|
+
APP_PORT: int = Field(default=8000)
|
|
30
|
+
DEBUG: bool = Field(default=True)
|
|
31
|
+
|
|
32
|
+
model_config = SettingsConfigDict(
|
|
33
|
+
env_file=BASE_DIR / ".env",
|
|
34
|
+
env_file_encoding="utf-8",
|
|
35
|
+
extra="ignore"
|
|
36
|
+
)
|
|
37
|
+
|
|
38
|
+
settings = Settings()
|
|
@@ -0,0 +1,365 @@
|
|
|
1
|
+
import json
|
|
2
|
+
from pathlib import Path
|
|
3
|
+
|
|
4
|
+
# Script to generate a rich starter catalog of famous movies and TV series
|
|
5
|
+
titles = [
|
|
6
|
+
# Sci-Fi / Thriller / Mind-Bending
|
|
7
|
+
{
|
|
8
|
+
"tmdb_id": 157336, "media_type": "movie", "title": "Interstellar", "release_year": 2014,
|
|
9
|
+
"genres": ["Adventure", "Drama", "Science Fiction"], "director_or_creator": "Christopher Nolan",
|
|
10
|
+
"cast_top": ["Matthew McConaughey", "Anne Hathaway", "Jessica Chastain", "Michael Caine"],
|
|
11
|
+
"poster_path": "/yQvGrMoipbRoddT0ZR8tPoR7NfX.jpg", "vote_average": 8.4, "vote_count": 34000, "popularity": 180.0,
|
|
12
|
+
"overview": "The adventures of a group of explorers who make use of a newly discovered wormhole to surpass the limitations on human space travel and conquer the vast distances involved in an interstellar voyage."
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
"tmdb_id": 27205, "media_type": "movie", "title": "Inception", "release_year": 2010,
|
|
16
|
+
"genres": ["Action", "Science Fiction", "Adventure"], "director_or_creator": "Christopher Nolan",
|
|
17
|
+
"cast_top": ["Leonardo DiCaprio", "Joseph Gordon-Levitt", "Elliot Page", "Tom Hardy"],
|
|
18
|
+
"poster_path": "/xlaY2zyzMfkhk0HSC5VUwzoZPU1.jpg", "vote_average": 8.4, "vote_count": 36000, "popularity": 150.0,
|
|
19
|
+
"overview": "Cobb, a skilled thief who commits corporate espionage by infiltrating the subconscious of his targets is offered a chance to regain his old life as payment for a task considered to be impossible: inception."
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
"tmdb_id": 603, "media_type": "movie", "title": "The Matrix", "release_year": 1999,
|
|
23
|
+
"genres": ["Action", "Science Fiction"], "director_or_creator": "Lana Wachowski",
|
|
24
|
+
"cast_top": ["Keanu Reeves", "Laurence Fishburne", "Carrie-Anne Moss", "Hugo Weaving"],
|
|
25
|
+
"poster_path": "/dXNAPwY7VrqMAo51EKhhCJfaGb5.jpg", "vote_average": 8.2, "vote_count": 25000, "popularity": 110.0,
|
|
26
|
+
"overview": "Set in the 22nd century, The Matrix tells the story of a computer hacker who joins a group of underground insurgents fighting the vast and powerful computers who now rule the earth."
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
"tmdb_id": 335984, "media_type": "movie", "title": "Blade Runner 2049", "release_year": 2017,
|
|
30
|
+
"genres": ["Science Fiction", "Drama"], "director_or_creator": "Denis Villeneuve",
|
|
31
|
+
"cast_top": ["Ryan Gosling", "Harrison Ford", "Ana de Armas", "Sylvia Hoeks"],
|
|
32
|
+
"poster_path": "/gajva2L0rPYkEWjzgFlBXCAVBE5.jpg", "vote_average": 7.6, "vote_count": 13000, "popularity": 95.0,
|
|
33
|
+
"overview": "Thirty years after the events of the first film, a new blade runner, LAPD Officer K, unearths a long-buried secret that has the potential to plunge what's left of society into chaos."
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
"tmdb_id": 438631, "media_type": "movie", "title": "Dune", "release_year": 2021,
|
|
37
|
+
"genres": ["Science Fiction", "Adventure"], "director_or_creator": "Denis Villeneuve",
|
|
38
|
+
"cast_top": ["Timothée Chalamet", "Rebecca Ferguson", "Oscar Isaac", "Zendaya"],
|
|
39
|
+
"poster_path": "/v1tRXZ4JtD2Iv6fjkPvT4GiwslV.jpg", "vote_average": 7.8, "vote_count": 11500, "popularity": 140.0,
|
|
40
|
+
"overview": "Paul Atreides, a brilliant and gifted young man born into a great destiny beyond his understanding, must travel to the most dangerous planet in the universe to ensure the future of his family and his people."
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
"tmdb_id": 693134, "media_type": "movie", "title": "Dune: Part Two", "release_year": 2024,
|
|
44
|
+
"genres": ["Science Fiction", "Adventure"], "director_or_creator": "Denis Villeneuve",
|
|
45
|
+
"cast_top": ["Timothée Chalamet", "Zendaya", "Rebecca Ferguson", "Javier Bardem"],
|
|
46
|
+
"poster_path": "/6izwz7rsy95ARzTR3poZ8H6c5pp.jpg", "vote_average": 8.2, "vote_count": 5500, "popularity": 190.0,
|
|
47
|
+
"overview": "Follow the mythic journey of Paul Atreides as he unites with Chani and the Fremen while on a path of revenge against the conspirators who destroyed his family."
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
"tmdb_id": 329865, "media_type": "movie", "title": "Arrival", "release_year": 2016,
|
|
51
|
+
"genres": ["Drama", "Science Fiction", "Mystery"], "director_or_creator": "Denis Villeneuve",
|
|
52
|
+
"cast_top": ["Amy Adams", "Jeremy Renner", "Forest Whitaker", "Michael Stuhlbarg"],
|
|
53
|
+
"poster_path": "/pEzNVQfdzYDzVK0XqxERIw2x2se.jpg", "vote_average": 7.6, "vote_count": 17000, "popularity": 75.0,
|
|
54
|
+
"overview": "Taking place after alien crafts land around the world, an expert linguist is recruited by the military to determine whether they come in peace or are a threat."
|
|
55
|
+
},
|
|
56
|
+
# Romance / Drama / Vibe
|
|
57
|
+
{
|
|
58
|
+
"tmdb_id": 313369, "media_type": "movie", "title": "La La Land", "release_year": 2016,
|
|
59
|
+
"genres": ["Comedy", "Drama", "Romance", "Music"], "director_or_creator": "Damien Chazelle",
|
|
60
|
+
"cast_top": ["Ryan Gosling", "Emma Stone", "John Legend", "Rosemarie DeWitt"],
|
|
61
|
+
"poster_path": "/uDO8zWDhfWwoFdKS4fzkUJt0Rf0.jpg", "vote_average": 7.9, "vote_count": 16000, "popularity": 85.0,
|
|
62
|
+
"overview": "Mia, an aspiring actress, and Sebastian, a dedicated jazz musician, are struggling to make ends meet in a city known for crushing hopes and breaking hearts. Set in modern-day Los Angeles, this original musical about everyday life explores the joy and pain of pursuing your dreams."
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
"tmdb_id": 38, "media_type": "movie", "title": "Eternal Sunshine of the Spotless Mind", "release_year": 2004,
|
|
66
|
+
"genres": ["Science Fiction", "Drama", "Romance"], "director_or_creator": "Michel Gondry",
|
|
67
|
+
"cast_top": ["Jim Carrey", "Kate Winslet", "Kirsten Dunst", "Mark Ruffalo"],
|
|
68
|
+
"poster_path": "/5MwkWH9tYHv3mV9OdYTMR5qreIz.jpg", "vote_average": 8.1, "vote_count": 14500, "popularity": 65.0,
|
|
69
|
+
"overview": "Joel Barish, heartbroken that his girlfriend Clementine underwent a procedure to erase him from her memory, decides to do the same. However, as he watches his memories of her fade away, he realizes he still loves her, and may be too late to correct his mistake."
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
"tmdb_id": 76, "media_type": "movie", "title": "Before Sunrise", "release_year": 1995,
|
|
73
|
+
"genres": ["Drama", "Romance"], "director_or_creator": "Richard Linklater",
|
|
74
|
+
"cast_top": ["Ethan Hawke", "Julie Delpy", "Andrea Eckert", "Hanno Pöschl"],
|
|
75
|
+
"poster_path": "/kf1Jb1c2JAOqjuzA3H4oDM263uB.jpg", "vote_average": 8.0, "vote_count": 4200, "popularity": 45.0,
|
|
76
|
+
"overview": "On a train from Budapest to Vienna, Jesse meets Céline, a student returning to Paris. After chatting, Jesse convinces Céline to get off the train with him in Vienna so they can spend the night walking through the city talking about love and life before he catches a flight home."
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
"tmdb_id": 80, "media_type": "movie", "title": "Before Sunset", "release_year": 2004,
|
|
80
|
+
"genres": ["Drama", "Romance"], "director_or_creator": "Richard Linklater",
|
|
81
|
+
"cast_top": ["Ethan Hawke", "Julie Delpy", "Vernon Dobtcheff", "Louise Lemoine Torrès"],
|
|
82
|
+
"poster_path": "/4sW5XH9ZfYXpvFzev00S1IGAEbg.jpg", "vote_average": 7.9, "vote_count": 3400, "popularity": 38.0,
|
|
83
|
+
"overview": "Nine years after their brief encounter in Vienna, Jesse and Céline meet again in Paris during Jesse's book tour. With only a few hours before Jesse's plane departs, they roam the streets of Paris examining their past choices and lingering chemistry."
|
|
84
|
+
},
|
|
85
|
+
{
|
|
86
|
+
"tmdb_id": 666277, "media_type": "movie", "title": "Past Lives", "release_year": 2023,
|
|
87
|
+
"genres": ["Drama", "Romance"], "director_or_creator": "Celine Song",
|
|
88
|
+
"cast_top": ["Greta Lee", "Teo Yoo", "John Magaro", "Moon Seung-ah"],
|
|
89
|
+
"poster_path": "/k3waqVXSnvCZWfJYNtdamTgTtTA.jpg", "vote_average": 7.8, "vote_count": 1800, "popularity": 60.0,
|
|
90
|
+
"overview": "Nora and Hae Sung, two deeply connected childhood friends, are wrested apart after Nora's family emigrates from South Korea. Two decades later, they are reunited in New York for one fateful week as they confront notions of destiny, love, and the choices that make a life."
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
"tmdb_id": 152601, "media_type": "movie", "title": "Her", "release_year": 2013,
|
|
94
|
+
"genres": ["Romance", "Science Fiction", "Drama"], "director_or_creator": "Spike Jonze",
|
|
95
|
+
"cast_top": ["Joaquin Phoenix", "Scarlett Johansson", "Amy Adams", "Rooney Mara"],
|
|
96
|
+
"poster_path": "/eCOtqtfvn7mxGl6nfmq4b1exJRc.jpg", "vote_average": 7.9, "vote_count": 13900, "popularity": 55.0,
|
|
97
|
+
"overview": "In the near future, a lonely writer develops an unlikely relationship with an operating system designed to meet his every need."
|
|
98
|
+
},
|
|
99
|
+
{
|
|
100
|
+
"tmdb_id": 597, "media_type": "movie", "title": "Titanic", "release_year": 1997,
|
|
101
|
+
"genres": ["Drama", "Romance"], "director_or_creator": "James Cameron",
|
|
102
|
+
"cast_top": ["Leonardo DiCaprio", "Kate Winslet", "Billy Zane", "Kathy Bates"],
|
|
103
|
+
"poster_path": "/9xjZS2rlVxm8SFx8kPC3aIGCOYQ.jpg", "vote_average": 7.9, "vote_count": 24800, "popularity": 135.0,
|
|
104
|
+
"overview": "101-year-old Rose DeWitt Bukater tells the story of her life aboard the Titanic, 84 years later. A young Rose boards the ship with her mother and fiance. Meanwhile, Jack Dawson and Fabrizio De Rossi win third-class tickets aboard the ship."
|
|
105
|
+
},
|
|
106
|
+
{
|
|
107
|
+
"tmdb_id": 4348, "media_type": "movie", "title": "Pride & Prejudice", "release_year": 2005,
|
|
108
|
+
"genres": ["Drama", "Romance"], "director_or_creator": "Joe Wright",
|
|
109
|
+
"cast_top": ["Keira Knightley", "Matthew Macfadyen", "Brenda Blethyn", "Donald Sutherland"],
|
|
110
|
+
"poster_path": "/o8UhmEbWPHmTUxP0lMuCoqNkbB3.jpg", "vote_average": 8.1, "vote_count": 8200, "popularity": 62.0,
|
|
111
|
+
"overview": "Sparks fly when spirited Elizabeth Bennet meets single, rich, and proud Mr. Darcy. But Mr. Darcy reluctantly finds himself falling in love with a woman beneath his class."
|
|
112
|
+
},
|
|
113
|
+
{
|
|
114
|
+
"tmdb_id": 19913, "media_type": "movie", "title": "(500) Days of Summer", "release_year": 2009,
|
|
115
|
+
"genres": ["Comedy", "Drama", "Romance"], "director_or_creator": "Marc Webb",
|
|
116
|
+
"cast_top": ["Joseph Gordon-Levitt", "Zooey Deschanel", "Geoffrey Arend", "Chloë Grace Moretz"],
|
|
117
|
+
"poster_path": "/qXAuQ9hF30sQRsXf40OfRVl0MJZ.jpg", "vote_average": 7.3, "vote_count": 9800, "popularity": 45.0,
|
|
118
|
+
"overview": "Tom, greeting-card writer and hopeless romantic, is caught completely off-guard when his girlfriend, Summer, suddenly dumps him. He reflects on their 500 days together to try to figure out where their love affair went sour."
|
|
119
|
+
},
|
|
120
|
+
# Holiday / Christmas Vibes
|
|
121
|
+
{
|
|
122
|
+
"tmdb_id": 1585, "media_type": "movie", "title": "It's a Wonderful Life", "release_year": 1946,
|
|
123
|
+
"genres": ["Drama", "Family", "Fantasy"], "director_or_creator": "Frank Capra",
|
|
124
|
+
"cast_top": ["James Stewart", "Donna Reed", "Lionel Barrymore", "Thomas Mitchell"],
|
|
125
|
+
"poster_path": "/bSqt9rhDZx1Q7UZ86dBPKdNomp2.jpg", "vote_average": 8.3, "vote_count": 4200, "popularity": 50.0,
|
|
126
|
+
"overview": "A holiday favourite for generations... George Bailey has spent his entire life giving to the people of Bedford Falls. All that prevents rich skinflint Mr. Potter from taking over the town is George's modest building and loan company. But on Christmas Eve the business's $8,000 is lost and George's troubles begin."
|
|
127
|
+
},
|
|
128
|
+
{
|
|
129
|
+
"tmdb_id": 771, "media_type": "movie", "title": "Home Alone", "release_year": 1990,
|
|
130
|
+
"genres": ["Comedy", "Family"], "director_or_creator": "Chris Columbus",
|
|
131
|
+
"cast_top": ["Macaulay Culkin", "Joe Pesci", "Daniel Stern", "John Heard"],
|
|
132
|
+
"poster_path": "/onTSipZ8R3bliBdKfPtsDuHTdlL.jpg", "vote_average": 7.4, "vote_count": 11500, "popularity": 90.0,
|
|
133
|
+
"overview": "Eight-year-old Kevin McCallister makes the most of the situation after his family unwittingly leaves him behind when they go on Christmas vacation. But when a pair of bungling burglars try to break in, Kevin must defend his home."
|
|
134
|
+
},
|
|
135
|
+
{
|
|
136
|
+
"tmdb_id": 562, "media_type": "movie", "title": "Die Hard", "release_year": 1988,
|
|
137
|
+
"genres": ["Action", "Thriller"], "director_or_creator": "John McTiernan",
|
|
138
|
+
"cast_top": ["Bruce Willis", "Alan Rickman", "Bonnie Bedelia", "Reginald VelJohnson"],
|
|
139
|
+
"poster_path": "/7Bjd8kfmDSOzpmhySpEhkUyK2oH.jpg", "vote_average": 7.8, "vote_count": 11000, "popularity": 70.0,
|
|
140
|
+
"overview": "NYPD cop John McClane's plan to reconcile with his estranged wife is thrown into serious jeopardy when, after he arrives at her office's Christmas Eve party, the building is overtaken by a group of terrorists."
|
|
141
|
+
},
|
|
142
|
+
{
|
|
143
|
+
"tmdb_id": 5255, "media_type": "movie", "title": "The Polar Express", "release_year": 2004,
|
|
144
|
+
"genres": ["Animation", "Family", "Adventure", "Fantasy"], "director_or_creator": "Robert Zemeckis",
|
|
145
|
+
"cast_top": ["Tom Hanks", "Leslie Zemeckis", "Eddie Deezen", "Nona Gaye"],
|
|
146
|
+
"poster_path": "/eOoCzH0MqeGr2taUZO4SwG416PF.jpg", "vote_average": 6.7, "vote_count": 6200, "popularity": 58.0,
|
|
147
|
+
"overview": "When a doubting young boy takes an extraordinary train ride to the North Pole, he embarks on a journey of self-discovery that shows him that the wonder of life never fades for those who believe."
|
|
148
|
+
},
|
|
149
|
+
{
|
|
150
|
+
"tmdb_id": 5825, "media_type": "movie", "title": "National Lampoon's Christmas Vacation", "release_year": 1989,
|
|
151
|
+
"genres": ["Comedy"], "director_or_creator": "Jeremiah S. Chechik",
|
|
152
|
+
"cast_top": ["Chevy Chase", "Beverly D'Angelo", "Juliette Lewis", "Johnny Galecki"],
|
|
153
|
+
"poster_path": "/oat42hUw8XzKYUmfy0YLAxYd484.jpg", "vote_average": 7.3, "vote_count": 2700, "popularity": 48.0,
|
|
154
|
+
"overview": "It's Christmas time and the Griswolds are preparing for a family seasonal celebration, but things never run smoothly for Clark, his wife Ellen and their two kids."
|
|
155
|
+
},
|
|
156
|
+
# Psychological Thriller / Crime / Drama
|
|
157
|
+
{
|
|
158
|
+
"tmdb_id": 550, "media_type": "movie", "title": "Fight Club", "release_year": 1999,
|
|
159
|
+
"genres": ["Drama"], "director_or_creator": "David Fincher",
|
|
160
|
+
"cast_top": ["Brad Pitt", "Edward Norton", "Helena Bonham Carter", "Meat Loaf"],
|
|
161
|
+
"poster_path": "/jSziioSwPVrOy9Yow3XhWIBDjq1.jpg", "vote_average": 8.4, "vote_count": 29000, "popularity": 110.0,
|
|
162
|
+
"overview": "A ticking-time-bomb insomniac and a slippery soap salesman channel primal male aggression into a shocking new form of therapy. Their concept catches on, with underground 'fight clubs' forming in every town, until an eccentric gets in the way and ignites an out-of-control spiral toward oblivion."
|
|
163
|
+
},
|
|
164
|
+
{
|
|
165
|
+
"tmdb_id": 807, "media_type": "movie", "title": "Se7en", "release_year": 1995,
|
|
166
|
+
"genres": ["Crime", "Mystery", "Thriller"], "director_or_creator": "David Fincher",
|
|
167
|
+
"cast_top": ["Brad Pitt", "Morgan Freeman", "Gwyneth Paltrow", "Kevin Spacey"],
|
|
168
|
+
"poster_path": "/191nKfP0ehp3uIvWqgPbFmI4lv9.jpg", "vote_average": 8.4, "vote_count": 20800, "popularity": 92.0,
|
|
169
|
+
"overview": "Two homicide detectives are on a desperate hunt for a serial killer whose crimes are based on the 'seven deadly sins' in this dark and haunting film that takes viewers from the tortured remains of one victim to the next."
|
|
170
|
+
},
|
|
171
|
+
{
|
|
172
|
+
"tmdb_id": 278, "media_type": "movie", "title": "The Shawshank Redemption", "release_year": 1994,
|
|
173
|
+
"genres": ["Drama", "Crime"], "director_or_creator": "Frank Darabont",
|
|
174
|
+
"cast_top": ["Tim Robbins", "Morgan Freeman", "Bob Gunton", "William Sadler"],
|
|
175
|
+
"poster_path": "/9cqNxx0GxF0bflZmeSMuL5tnGzr.jpg", "vote_average": 8.7, "vote_count": 27000, "popularity": 165.0,
|
|
176
|
+
"overview": "Imprisoned in the 1940s for the double murder of his wife and her lover, upstanding banker Andy Dufresne begins a new life at the Shawshank prison, where he puts his accounting skills to work for an amoral warden."
|
|
177
|
+
},
|
|
178
|
+
{
|
|
179
|
+
"tmdb_id": 238, "media_type": "movie", "title": "The Godfather", "release_year": 1972,
|
|
180
|
+
"genres": ["Drama", "Crime"], "director_or_creator": "Francis Ford Coppola",
|
|
181
|
+
"cast_top": ["Marlon Brando", "Al Pacino", "James Caan", "Robert Duvall"],
|
|
182
|
+
"poster_path": "/3bhkrj58Vtu7enYsRolD1fZdja1.jpg", "vote_average": 8.7, "vote_count": 20400, "popularity": 140.0,
|
|
183
|
+
"overview": "Spanning the years 1945 to 1955, a chronicle of the fictional Italian-American Corleone crime family. When organized crime family patriarch, Vito Corleone barely survives an attempt on his life, his youngest son, Michael steps in to take care of the would-be killers."
|
|
184
|
+
},
|
|
185
|
+
{
|
|
186
|
+
"tmdb_id": 680, "media_type": "movie", "title": "Pulp Fiction", "release_year": 1994,
|
|
187
|
+
"genres": ["Thriller", "Crime"], "director_or_creator": "Quentin Tarantino",
|
|
188
|
+
"cast_top": ["John Travolta", "Samuel L. Jackson", "Uma Thurman", "Bruce Willis"],
|
|
189
|
+
"poster_path": "/vQWk5YBFWF4bZaofAbv0tShwBvQ.jpg", "vote_average": 8.5, "vote_count": 27500, "popularity": 125.0,
|
|
190
|
+
"overview": "A burger-loving hit man, his philosophical partner, a drug-addled gangster's moll and a washed-up boxer converge in this sprawling, comedic crime caper. Their adventures unfurl in three stories that ingeniously trip back and forth in time."
|
|
191
|
+
},
|
|
192
|
+
{
|
|
193
|
+
"tmdb_id": 496243, "media_type": "movie", "title": "Parasite", "release_year": 2019,
|
|
194
|
+
"genres": ["Comedy", "Thriller", "Drama"], "director_or_creator": "Bong Joon-ho",
|
|
195
|
+
"cast_top": ["Song Kang-ho", "Lee Sun-kyun", "Cho Yeo-jeong", "Choi Woo-shik"],
|
|
196
|
+
"poster_path": "/7IiTTgloJzvGI1TAYymCfbfl3vT.jpg", "vote_average": 8.5, "vote_count": 18000, "popularity": 105.0,
|
|
197
|
+
"overview": "All unemployed, Ki-taek's family takes peculiar interest in the wealthy and glamorous Parks for their livelihood until they get entangled in an unexpected incident."
|
|
198
|
+
},
|
|
199
|
+
{
|
|
200
|
+
"tmdb_id": 244786, "media_type": "movie", "title": "Whiplash", "release_year": 2014,
|
|
201
|
+
"genres": ["Drama", "Music"], "director_or_creator": "Damien Chazelle",
|
|
202
|
+
"cast_top": ["Miles Teller", "J.K. Simmons", "Paul Reiser", "Melissa Benoist"],
|
|
203
|
+
"poster_path": "/7fn624j5lj3xTme2SgiLCeuedmO.jpg", "vote_average": 8.4, "vote_count": 14700, "popularity": 88.0,
|
|
204
|
+
"overview": "Under the direction of a ruthless instructor, a talented young drummer begins to pursue perfection at any cost, pushing himself to the brink of both his ability and his sanity."
|
|
205
|
+
},
|
|
206
|
+
{
|
|
207
|
+
"tmdb_id": 11324, "media_type": "movie", "title": "Shutter Island", "release_year": 2010,
|
|
208
|
+
"genres": ["Drama", "Thriller", "Mystery"], "director_or_creator": "Martin Scorsese",
|
|
209
|
+
"cast_top": ["Leonardo DiCaprio", "Mark Ruffalo", "Ben Kingsley", "Max von Sydow"],
|
|
210
|
+
"poster_path": "/nrmXQ0zcZUL8jFLrakWc90IR8z9.jpg", "vote_average": 8.2, "vote_count": 23500, "popularity": 95.0,
|
|
211
|
+
"overview": "World War II soldier-turned-U.S. Marshal Teddy Daniels investigates the disappearance of a patient from Boston's Shutter Island Ashecliffe Hospital, uncovering sinister truths about the facility."
|
|
212
|
+
},
|
|
213
|
+
{
|
|
214
|
+
"tmdb_id": 77, "media_type": "movie", "title": "Memento", "release_year": 2000,
|
|
215
|
+
"genres": ["Mystery", "Thriller"], "director_or_creator": "Christopher Nolan",
|
|
216
|
+
"cast_top": ["Guy Pearce", "Carrie-Anne Moss", "Joe Pantoliano", "Mark Boone Junior"],
|
|
217
|
+
"poster_path": "/nzlv62aC0octS5AklAiWpXLX9Z0.jpg", "vote_average": 8.2, "vote_count": 14500, "popularity": 55.0,
|
|
218
|
+
"overview": "Leonard Shelby is tracking down the man who raped and murdered his wife. The difficulty of locating his wife's killer, however, is compounded by the fact that he suffers from a rare, untreatable form of short-term memory loss."
|
|
219
|
+
},
|
|
220
|
+
{
|
|
221
|
+
"tmdb_id": 1422, "media_type": "movie", "title": "The Departed", "release_year": 2006,
|
|
222
|
+
"genres": ["Drama", "Thriller", "Crime"], "director_or_creator": "Martin Scorsese",
|
|
223
|
+
"cast_top": ["Leonardo DiCaprio", "Matt Damon", "Jack Nicholson", "Mark Wahlberg"],
|
|
224
|
+
"poster_path": "/nT97ifVT2J1yMQmeq20Qblg61T.jpg", "vote_average": 8.2, "vote_count": 14500, "popularity": 75.0,
|
|
225
|
+
"overview": "To take down South Boston's Irish Mafia, the police send in one of their own to infiltrate the underworld, not realizing the syndicate has done likewise."
|
|
226
|
+
},
|
|
227
|
+
{
|
|
228
|
+
"tmdb_id": 87101, "media_type": "movie", "title": "Oppenheimer", "release_year": 2023,
|
|
229
|
+
"genres": ["Drama", "History"], "director_or_creator": "Christopher Nolan",
|
|
230
|
+
"cast_top": ["Cillian Murphy", "Emily Blunt", "Matt Damon", "Robert Downey Jr."],
|
|
231
|
+
"poster_path": "/oZRVDpNtmHk8M1VYy1aeOWUXgbC.jpg", "vote_average": 8.1, "vote_count": 9200, "popularity": 130.0,
|
|
232
|
+
"overview": "The story of J. Robert Oppenheimer's role in the development of the atomic bomb during World War II, examining the political, personal, and moral ramifications of his creation."
|
|
233
|
+
},
|
|
234
|
+
{
|
|
235
|
+
"tmdb_id": 155, "media_type": "movie", "title": "The Dark Knight", "release_year": 2008,
|
|
236
|
+
"genres": ["Drama", "Action", "Crime", "Thriller"], "director_or_creator": "Christopher Nolan",
|
|
237
|
+
"cast_top": ["Christian Bale", "Heath Ledger", "Michael Caine", "Gary Oldman"],
|
|
238
|
+
"poster_path": "/qJ2tW6WMUDux911r6m7haRef0WH.jpg", "vote_average": 8.5, "vote_count": 32000, "popularity": 130.0,
|
|
239
|
+
"overview": "Batman raises the stakes in his war on crime. With the help of Lt. Jim Gordon and District Attorney Harvey Dent, Batman sets out to dismantle the remaining criminal organizations that plague the streets. The partnership proves to be effective, but they soon find themselves prey to a reign of chaos unleashed by a rising criminal mastermind known to the terrified citizens of Gotham as the Joker."
|
|
240
|
+
},
|
|
241
|
+
# TV Series Masterpieces
|
|
242
|
+
{
|
|
243
|
+
"tmdb_id": 1396, "media_type": "tv", "title": "Breaking Bad", "release_year": 2008,
|
|
244
|
+
"genres": ["Drama", "Crime"], "director_or_creator": "Vince Gilligan",
|
|
245
|
+
"cast_top": ["Bryan Cranston", "Aaron Paul", "Anna Gunn", "Dean Norris"],
|
|
246
|
+
"poster_path": "/anFx9aTOOYqgS3v7x3R84Kz67ly.jpg", "vote_average": 8.9, "vote_count": 14200, "popularity": 220.0,
|
|
247
|
+
"overview": "Walter White, a New Mexico chemistry teacher diagnosed with terminal lung cancer, teams up with a former student to cook and sell methamphetamine to secure his family's financial future before he dies."
|
|
248
|
+
},
|
|
249
|
+
{
|
|
250
|
+
"tmdb_id": 60059, "media_type": "tv", "title": "Better Call Saul", "release_year": 2015,
|
|
251
|
+
"genres": ["Crime", "Drama"], "director_or_creator": "Vince Gilligan, Peter Gould",
|
|
252
|
+
"cast_top": ["Bob Odenkirk", "Rhea Seehorn", "Jonathan Banks", "Patrick Fabian"],
|
|
253
|
+
"poster_path": "/zjg4jpK1Wp2kiRvtt5ND0kznako.jpg", "vote_average": 8.7, "vote_count": 5200, "popularity": 110.0,
|
|
254
|
+
"overview": "Six years before he begins to represent Albuquerque's most notorious criminal, Jimmy McGill is a small-time attorney hustling to champion his underdog clients and make a name for himself."
|
|
255
|
+
},
|
|
256
|
+
{
|
|
257
|
+
"tmdb_id": 1399, "media_type": "tv", "title": "Game of Thrones", "release_year": 2011,
|
|
258
|
+
"genres": ["Sci-Fi & Fantasy", "Drama", "Action & Adventure"], "director_or_creator": "David Benioff, D.B. Weiss",
|
|
259
|
+
"cast_top": ["Peter Dinklage", "Kit Harington", "Emilia Clarke", "Lena Headey"],
|
|
260
|
+
"poster_path": "/1XS1oqL89opfnbLl8WnZY1O1uJx.jpg", "vote_average": 8.4, "vote_count": 23500, "popularity": 210.0,
|
|
261
|
+
"overview": "Seven noble families fight for control of the mythical land of Westeros. Friction between the houses leads to full-scale war. All while a very ancient evil awakens in the farthest north."
|
|
262
|
+
},
|
|
263
|
+
{
|
|
264
|
+
"tmdb_id": 87108, "media_type": "tv", "title": "Chernobyl", "release_year": 2019,
|
|
265
|
+
"genres": ["Drama", "History"], "director_or_creator": "Craig Mazin",
|
|
266
|
+
"cast_top": ["Jared Harris", "Stellan Skarsgård", "Emily Watson", "Paul Ritter"],
|
|
267
|
+
"poster_path": "/hlLXt2tOPT6RRnjiUmoxyG1LTFi.jpg", "vote_average": 8.7, "vote_count": 6100, "popularity": 85.0,
|
|
268
|
+
"overview": "The true story of one of the worst man-made catastrophes in history: the catastrophic nuclear accident at Chernobyl. A tale of the brave men and women who sacrificed to save Europe from unimaginable disaster."
|
|
269
|
+
},
|
|
270
|
+
{
|
|
271
|
+
"tmdb_id": 94997, "media_type": "tv", "title": "House of the Dragon", "release_year": 2022,
|
|
272
|
+
"genres": ["Drama", "Action & Adventure", "Sci-Fi & Fantasy"], "director_or_creator": "Ryan J. Condal, George R.R. Martin",
|
|
273
|
+
"cast_top": ["Matt Smith", "Emma D'Arcy", "Olivia Cooke", "Rhys Ifans"],
|
|
274
|
+
"poster_path": "/7V0Ebks0GgpKvQ7QbLAIdX5dos4.jpg", "vote_average": 8.4, "vote_count": 4800, "popularity": 160.0,
|
|
275
|
+
"overview": "The Targaryen dynasty is at the absolute apex of its power, with more than 15 dragons under their yoke. Most empires crumble from such heights. In the case of the Targaryens, their slow fall begins when King Viserys breaks with a century of tradition by naming his daughter Rhaenyra heir to the Iron Throne."
|
|
276
|
+
},
|
|
277
|
+
{
|
|
278
|
+
"tmdb_id": 76479, "media_type": "tv", "title": "The Boys", "release_year": 2019,
|
|
279
|
+
"genres": ["Sci-Fi & Fantasy", "Action & Adventure"], "director_or_creator": "Eric Kripke",
|
|
280
|
+
"cast_top": ["Karl Urban", "Jack Quaid", "Antony Starr", "Erin Moriarty"],
|
|
281
|
+
"poster_path": "/in1R2dDc421JxsoRWaIIAqVI2KE.jpg", "vote_average": 8.4, "vote_count": 10200, "popularity": 170.0,
|
|
282
|
+
"overview": "A fun and irreverent take on what happens when superheroes—who are as popular as celebrities, as influential as politicians, and as revered as gods—abuse their superpowers rather than use them for good. Intent on stopping the corrupt superheroes, a group of vigilantes known informally as 'The Boys' embark on a heroic quest to expose the truth."
|
|
283
|
+
},
|
|
284
|
+
{
|
|
285
|
+
"tmdb_id": 66732, "media_type": "tv", "title": "Stranger Things", "release_year": 2016,
|
|
286
|
+
"genres": ["Sci-Fi & Fantasy", "Drama", "Mystery"], "director_or_creator": "The Duffer Brothers",
|
|
287
|
+
"cast_top": ["Millie Bobby Brown", "Finn Wolfhard", "Winona Ryder", "David Harbour"],
|
|
288
|
+
"poster_path": "/uOOtwVbSr4QDjAGIifLDwpb2Pdl.jpg", "vote_average": 8.6, "vote_count": 17000, "popularity": 195.0,
|
|
289
|
+
"overview": "When a young boy vanishes, a small town uncovers a mystery involving secret experiments, terrifying supernatural forces and one strange little girl."
|
|
290
|
+
},
|
|
291
|
+
{
|
|
292
|
+
"tmdb_id": 119051, "media_type": "tv", "title": "Wednesday", "release_year": 2022,
|
|
293
|
+
"genres": ["Sci-Fi & Fantasy", "Mystery", "Comedy"], "director_or_creator": "Alfred Gough, Miles Millar",
|
|
294
|
+
"cast_top": ["Jenna Ortega", "Gwendoline Christie", "Riki Lindhome", "Jamie McShane"],
|
|
295
|
+
"poster_path": "/9PFonBhy4cQy7Jz20NpMygczOkv.jpg", "vote_average": 8.4, "vote_count": 8300, "popularity": 145.0,
|
|
296
|
+
"overview": "A sleuthing, supernaturally infused mystery charting Wednesday Addams' years as a student at Nevermore Academy, as she attempts to master her emerging psychic ability, thwart a monstrous killing spree, and solve the murder mystery that embroiled her parents 25 years ago."
|
|
297
|
+
},
|
|
298
|
+
{
|
|
299
|
+
"tmdb_id": 100088, "media_type": "tv", "title": "The Last of Us", "release_year": 2023,
|
|
300
|
+
"genres": ["Drama", "Sci-Fi & Fantasy", "Action & Adventure"], "director_or_creator": "Craig Mazin, Neil Druckmann",
|
|
301
|
+
"cast_top": ["Pedro Pascal", "Bella Ramsey", "Gabriel Luna", "Anna Torv"],
|
|
302
|
+
"poster_path": "/dmo6TYuuJgaYinXBPjrgG9mB5od.jpg", "vote_average": 8.6, "vote_count": 5200, "popularity": 135.0,
|
|
303
|
+
"overview": "Twenty years after modern civilization has been destroyed, Joel, a hardened survivor, is hired to smuggle Ellie, a 14-year-old girl, out of an oppressive quarantine zone. What starts as a small job soon becomes a brutal, heartbreaking journey, as they both must traverse the U.S. and depend on each other for survival."
|
|
304
|
+
},
|
|
305
|
+
{
|
|
306
|
+
"tmdb_id": 70523, "media_type": "tv", "title": "Dark", "release_year": 2017,
|
|
307
|
+
"genres": ["Sci-Fi & Fantasy", "Drama", "Mystery"], "director_or_creator": "Baran bo Odar, Jantje Friese",
|
|
308
|
+
"cast_top": ["Louis Hofmann", "Oliver Masucci", "Jördis Triebel", "Maja Schöne"],
|
|
309
|
+
"poster_path": "/apbrbWs8M9lyOpJYU5WXrpFbk1Z.jpg", "vote_average": 8.4, "vote_count": 6200, "popularity": 95.0,
|
|
310
|
+
"overview": "A missing child sets four families on a frantic hunt for answers as they unearth a mind-bending mystery that spans three generations in a small German town."
|
|
311
|
+
},
|
|
312
|
+
{
|
|
313
|
+
"tmdb_id": 85552, "media_type": "tv", "title": "Euphoria", "release_year": 2019,
|
|
314
|
+
"genres": ["Drama"], "director_or_creator": "Sam Levinson",
|
|
315
|
+
"cast_top": ["Zendaya", "Hunter Schafer", "Sydney Sweeney", "Jacob Elordi"],
|
|
316
|
+
"poster_path": "/ypmtwojDd751Peszi62DVLytqqC.jpg", "vote_average": 8.3, "vote_count": 9400, "popularity": 120.0,
|
|
317
|
+
"overview": "A group of high school students navigate love and friendships in a world of drugs, sex, trauma, and social media."
|
|
318
|
+
},
|
|
319
|
+
{
|
|
320
|
+
"tmdb_id": 71446, "media_type": "tv", "title": "Money Heist", "release_year": 2017,
|
|
321
|
+
"genres": ["Crime", "Drama"], "director_or_creator": "Álex Pina",
|
|
322
|
+
"cast_top": ["Úrsula Corberó", "Álvaro Morte", "Itziar Ituño", "Pedro Alonso"],
|
|
323
|
+
"poster_path": "/reEMJA1uzscCbkpeRJeTT2bjqUp.jpg", "vote_average": 8.2, "vote_count": 18200, "popularity": 115.0,
|
|
324
|
+
"overview": "To carry out the biggest heist in history, a mysterious man called The Professor recruits a band of eight robbers who have a single characteristic: none of them has anything to lose."
|
|
325
|
+
},
|
|
326
|
+
# Animation & Studio Ghibli & Pixar
|
|
327
|
+
{
|
|
328
|
+
"tmdb_id": 129, "media_type": "movie", "title": "Spirited Away", "release_year": 2001,
|
|
329
|
+
"genres": ["Animation", "Family", "Fantasy"], "director_or_creator": "Hayao Miyazaki",
|
|
330
|
+
"cast_top": ["Rumi Hiiragi", "Miyu Irino", "Mari Natsuki", "Takashi Naito"],
|
|
331
|
+
"poster_path": "/39wmItIWsg5sZMyRUHLkWBcuVCM.jpg", "vote_average": 8.5, "vote_count": 16200, "popularity": 95.0,
|
|
332
|
+
"overview": "A young girl, Chihiro, becomes trapped in a strange new world of spirits. When her parents undergo a mysterious transformation, she must call upon the courage she never knew she had to free her family."
|
|
333
|
+
},
|
|
334
|
+
{
|
|
335
|
+
"tmdb_id": 493529, "media_type": "movie", "title": "Spider-Man: Into the Spider-Verse", "release_year": 2018,
|
|
336
|
+
"genres": ["Action", "Adventure", "Animation", "Science Fiction"], "director_or_creator": "Bob Persichetti, Peter Ramsey",
|
|
337
|
+
"cast_top": ["Shameik Moore", "Jake Johnson", "Hailee Steinfeld", "Mahershala Ali"],
|
|
338
|
+
"poster_path": "/v7UF7ypAqjsFZFdjksjQ7IUpXdn.jpg", "vote_average": 8.4, "vote_count": 15000, "popularity": 95.0,
|
|
339
|
+
"overview": "Teen Miles Morales becomes the new Spider-Man, while crossing paths with five counterparts from other dimensions to stop a threat for all realities."
|
|
340
|
+
},
|
|
341
|
+
{
|
|
342
|
+
"tmdb_id": 569094, "media_type": "movie", "title": "Spider-Man: Across the Spider-Verse", "release_year": 2023,
|
|
343
|
+
"genres": ["Animation", "Action", "Adventure", "Science Fiction"], "director_or_creator": "Joaquim Dos Santos, Kemp Powers",
|
|
344
|
+
"cast_top": ["Shameik Moore", "Hailee Steinfeld", "Oscar Isaac", "Jake Johnson"],
|
|
345
|
+
"poster_path": "/8Vt6mWEReuy4Of61Lnj5Xj704m8.jpg", "vote_average": 8.4, "vote_count": 6800, "popularity": 130.0,
|
|
346
|
+
"overview": "After reuniting with Gwen Stacy, Brooklyn's full-time, friendly neighborhood Spider-Man is catapulted across the Multiverse, where he encounters the Spider Society, a team of Spider-People charged with protecting the Multiverse's very existence."
|
|
347
|
+
},
|
|
348
|
+
{
|
|
349
|
+
"tmdb_id": 372058, "media_type": "movie", "title": "Your Name.", "release_year": 2016,
|
|
350
|
+
"genres": ["Animation", "Romance", "Drama"], "director_or_creator": "Makoto Shinkai",
|
|
351
|
+
"cast_top": ["Ryunosuke Kamiki", "Mone Kamishiraishi", "Ryo Narita", "Aoi Yuki"],
|
|
352
|
+
"poster_path": "/vfJFJPepRKapMd5G2ro7klIRysq.jpg", "vote_average": 8.5, "vote_count": 11000, "popularity": 80.0,
|
|
353
|
+
"overview": "High schoolers Mitsuha and Taki are complete strangers living separate lives in different parts of Japan. But when they suddenly begin swapping bodies in their dreams, a bizarre connection forms between them that defies space and time."
|
|
354
|
+
}
|
|
355
|
+
]
|
|
356
|
+
|
|
357
|
+
def export():
|
|
358
|
+
output_path = Path(__file__).resolve().parent.parent / "data" / "starter_catalog.json"
|
|
359
|
+
output_path.parent.mkdir(parents=True, exist_ok=True)
|
|
360
|
+
with open(output_path, "w", encoding="utf-8") as f:
|
|
361
|
+
json.dump(titles, f, indent=2, ensure_ascii=False)
|
|
362
|
+
print(f"Exported {len(titles)} curated titles to {output_path}")
|
|
363
|
+
|
|
364
|
+
if __name__ == "__main__":
|
|
365
|
+
export()
|