From b09b638dcad8c68aa135cf66c885b4cc799c149d Mon Sep 17 00:00:00 2001 From: Marcus Date: Wed, 24 Dec 2025 17:14:39 -0600 Subject: [PATCH] Trying to automate the movie review pages --- .gitignore | 30 +++ archetypes/movie.md | 7 + content/posts/lethal-tender.md | 40 ++++ hugo.yml | 4 +- layouts/shortcodes/imdbposter.html | 39 +++- scripts/build.sh | 20 ++ scripts/fetch_movie_data.py | 271 ++++++++++++++++++++++ scripts/import_letterboxd.py | 285 ++++++++++++++++++++++++ scripts/new_movie.py | 229 +++++++++++++++++++ scripts/remote_publish.sh | 136 +++++++++++ static/images/posters/lethal-tender.jpg | Bin 0 -> 84401 bytes 11 files changed, 1053 insertions(+), 8 deletions(-) create mode 100644 .gitignore create mode 100644 content/posts/lethal-tender.md create mode 100755 scripts/build.sh create mode 100755 scripts/fetch_movie_data.py create mode 100755 scripts/import_letterboxd.py create mode 100755 scripts/new_movie.py create mode 100755 scripts/remote_publish.sh create mode 100644 static/images/posters/lethal-tender.jpg diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..f8a8a69 --- /dev/null +++ b/.gitignore @@ -0,0 +1,30 @@ +# Build output +public/ +resources/_gen/ + +# Hugo lock file +.hugo_build.lock + +# Editor/IDE +.vscode/ +.idea/ +*.swp +*.swo +*~ + +# OS files +.DS_Store +Thumbs.db + +# Environment/secrets +.env +*.env + +# Python +__pycache__/ +*.pyc +.venv/ +venv/ + +# Claude Code +.claude/ diff --git a/archetypes/movie.md b/archetypes/movie.md index e8a794a..ab216c2 100644 --- a/archetypes/movie.md +++ b/archetypes/movie.md @@ -4,7 +4,14 @@ date: {{ .Date }} draft: true series: "Frank's Couch" summary: "" +# Fill in IMDB ID, then run: python scripts/fetch_movie_data.py imdb: "" +# Auto-filled by fetch_movie_data.py: +poster: "" +year: +runtime: +director: "" +genres: [] tags: - gucci - ghost theater diff --git a/content/posts/lethal-tender.md b/content/posts/lethal-tender.md new file mode 100644 index 0000000..c5217a9 --- /dev/null +++ b/content/posts/lethal-tender.md @@ -0,0 +1,40 @@ +--- +title: 'Lethal Tender' +date: 2025-12-24T22:47:20Z +draft: true +series: "Frank's Couch" +summary: "" +imdb: "tt0119520" +poster: "/images/posters/lethal-tender.jpg" +year: 1997 +runtime: 94 +director: "John Bradshaw" +genres: + - Action + - Thriller +tags: + - gucci + - ghost theater + - marcel + - amc-south + - amc-lakeline + - anticipated + - no-expectations + - had pizza +--- +{{< imdbposter >}} + +| Date watched | | +|---------------------|-------------------| +| Show Time | | +| Theater | | +| Theater Number | | +| Pizza | | +| Tickets | | +| Letterboxd Rating | | +| Crew | | + +{{< /imdbposter >}} + +Write your review here... + diff --git a/hugo.yml b/hugo.yml index 7f86fee..b8f6301 100644 --- a/hugo.yml +++ b/hugo.yml @@ -5,15 +5,13 @@ languageCode: en DefaultContentLanguage: en theme: poison publishDir: /sdf/arpa/gm/m/mnw/html -preserveTaxonomyNames: true paginate: 10 favicon: favicon.ico -pluralizelisttitles: false +pluralizeListTitles: false params: brand: Double Lunch Dispatch #remote_brand_image: https://mnw.sdf.org/blog/images/circular-me.png brand_image: "/images/circular-me-250.png" - description: There's still time to blog ... dark_mode: true description: "A blog about watching movies, drinking beers, and using technology." keywords: "blog, movies, beers, technology, life experiences" diff --git a/layouts/shortcodes/imdbposter.html b/layouts/shortcodes/imdbposter.html index 9ec5cd3..a0f7b75 100644 --- a/layouts/shortcodes/imdbposter.html +++ b/layouts/shortcodes/imdbposter.html @@ -1,17 +1,46 @@ {{- $imdb := .Page.Params.imdb -}} -{{- $poster := printf "https://img.omdbapi.com/?i=%s&apikey=d9641e70" $imdb -}} +{{- $localPoster := .Page.Params.poster -}} +{{- $year := .Page.Params.year -}} +{{- $runtime := .Page.Params.runtime -}} +{{- $director := .Page.Params.director -}} +{{- $poster := "" -}} + +{{- if $localPoster -}} + {{- $poster = $localPoster -}} +{{- else if $imdb -}} + {{- $poster = printf "https://img.omdbapi.com/?i=%s&apikey=d9641e70" $imdb -}} +{{- end -}}
- +
{{ .Inner | markdownify }}
- - -
+ + +
+ {{- if $imdb -}} Movie Poster + {{- else if $poster -}} + Movie Poster + {{- end -}} + {{- if or $year $runtime $director -}} +
+ {{- if $year -}}
{{ $year }}
{{- end -}} + {{- if $runtime -}}
{{ $runtime }} min
{{- end -}} + {{- if $director -}} +
+ {{- if reflect.IsSlice $director -}} + {{ delimit $director ", " }} + {{- else -}} + {{ $director }} + {{- end -}} +
+ {{- end -}} +
+ {{- end -}}
diff --git a/scripts/build.sh b/scripts/build.sh new file mode 100755 index 0000000..a5df9f4 --- /dev/null +++ b/scripts/build.sh @@ -0,0 +1,20 @@ +#!/bin/bash +# Build script for marcus-web +# Fetches movie data, then builds Hugo site + +set -e + +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +PROJECT_ROOT="$(dirname "$SCRIPT_DIR")" + +cd "$PROJECT_ROOT" + +echo "=== Fetching movie data ===" +python3 scripts/fetch_movie_data.py + +echo "" +echo "=== Building Hugo site ===" +hugo "$@" + +echo "" +echo "=== Done ===" diff --git a/scripts/fetch_movie_data.py b/scripts/fetch_movie_data.py new file mode 100755 index 0000000..f42c2e5 --- /dev/null +++ b/scripts/fetch_movie_data.py @@ -0,0 +1,271 @@ +#!/usr/bin/env python3 +""" +Fetch movie data for Hugo posts based on IMDB ID in frontmatter. + +Scans all posts with an `imdb` field and fetches missing data: +- Poster (downloaded locally) +- Runtime +- Year +- Director +- Genres + +Usage: + python scripts/fetch_movie_data.py # Process all movie posts + python scripts/fetch_movie_data.py --dry-run # Show what would be updated + python scripts/fetch_movie_data.py --force # Re-fetch even if data exists +""" + +import argparse +import os +import re +import sys +from pathlib import Path + +import requests +import yaml + +# Configuration +TMDB_API_KEY = "9e36fdcf70a4918e0dce327acc437dff" + +# Paths +SCRIPT_DIR = Path(__file__).parent +PROJECT_ROOT = SCRIPT_DIR.parent +CONTENT_DIR = PROJECT_ROOT / "content" / "posts" +IMAGES_DIR = PROJECT_ROOT / "static" / "images" / "posters" + +# Regex to split frontmatter from content +FRONTMATTER_RE = re.compile(r'^---\s*\n(.*?)\n---\s*\n', re.DOTALL) + + +def find_movie_by_imdb(imdb_id): + """Find TMDB movie by IMDB ID.""" + url = f"https://api.themoviedb.org/3/find/{imdb_id}" + params = { + "api_key": TMDB_API_KEY, + "external_source": "imdb_id" + } + resp = requests.get(url, params=params, timeout=10) + resp.raise_for_status() + data = resp.json() + + results = data.get("movie_results", []) + if results: + return results[0] + return None + + +def get_movie_details(tmdb_id): + """Get full movie details from TMDB.""" + url = f"https://api.themoviedb.org/3/movie/{tmdb_id}" + params = { + "api_key": TMDB_API_KEY, + "append_to_response": "credits" + } + resp = requests.get(url, params=params, timeout=10) + resp.raise_for_status() + return resp.json() + + +def get_directors(credits): + """Extract director names from credits.""" + crew = credits.get("crew", []) + directors = [p["name"] for p in crew if p.get("job") == "Director"] + return directors + + +def slugify(title): + """Convert title to URL-friendly slug.""" + slug = title.lower() + slug = re.sub(r"[^a-z0-9\s-]", "", slug) + slug = re.sub(r"[\s_]+", "-", slug) + slug = re.sub(r"-+", "-", slug) + return slug.strip("-") + + +def download_poster(poster_path, filename): + """Download poster from TMDB.""" + if not poster_path: + return None + + url = f"https://image.tmdb.org/t/p/w500{poster_path}" + resp = requests.get(url, timeout=10) + resp.raise_for_status() + + IMAGES_DIR.mkdir(parents=True, exist_ok=True) + filepath = IMAGES_DIR / filename + filepath.write_bytes(resp.content) + return f"/images/posters/{filename}" + + +def parse_post(filepath): + """Parse a markdown post into frontmatter dict and content string.""" + text = filepath.read_text() + match = FRONTMATTER_RE.match(text) + if not match: + return None, text + + fm_text = match.group(1) + content = text[match.end():] + + try: + frontmatter = yaml.safe_load(fm_text) + except yaml.YAMLError: + return None, text + + return frontmatter, content + + +def write_post(filepath, frontmatter, content): + """Write frontmatter and content back to markdown file.""" + # Use default_flow_style=False for readable YAML + # Use allow_unicode=True for proper character handling + fm_text = yaml.dump( + frontmatter, + default_flow_style=False, + allow_unicode=True, + sort_keys=False + ) + text = f"---\n{fm_text}---\n{content}" + filepath.write_text(text) + + +def process_post(filepath, dry_run=False, force=False): + """Process a single post, fetching missing movie data.""" + frontmatter, content = parse_post(filepath) + if frontmatter is None: + return False + + imdb_id = frontmatter.get("imdb") + if not imdb_id: + return False + + # Check what's missing + has_poster = bool(frontmatter.get("poster")) + has_runtime = bool(frontmatter.get("runtime")) + has_year = bool(frontmatter.get("year")) + has_director = bool(frontmatter.get("director")) + + needs_update = not (has_poster and has_runtime and has_year and has_director) + + if not needs_update and not force: + return False + + print(f"\nProcessing: {filepath.name}") + print(f" IMDB: {imdb_id}") + + if dry_run: + missing = [] + if not has_poster: + missing.append("poster") + if not has_runtime: + missing.append("runtime") + if not has_year: + missing.append("year") + if not has_director: + missing.append("director") + print(f" Would fetch: {', '.join(missing)}") + return True + + # Find movie on TMDB + print(" Finding movie on TMDB...") + movie = find_movie_by_imdb(imdb_id) + if not movie: + print(f" ERROR: Movie not found for IMDB ID: {imdb_id}") + return False + + tmdb_id = movie["id"] + print(f" Found: {movie.get('title')} (TMDB: {tmdb_id})") + + # Get full details + print(" Fetching details...") + details = get_movie_details(tmdb_id) + + updated = False + + # Update poster + if not has_poster or force: + poster_path = details.get("poster_path") + if poster_path: + title = frontmatter.get("title", "movie") + filename = f"{slugify(title)}.jpg" + print(f" Downloading poster...") + poster_url = download_poster(poster_path, filename) + if poster_url: + frontmatter["poster"] = poster_url + print(f" Poster saved: {poster_url}") + updated = True + + # Update runtime + if not has_runtime or force: + runtime = details.get("runtime") + if runtime: + frontmatter["runtime"] = runtime + print(f" Runtime: {runtime} minutes") + updated = True + + # Update year + if not has_year or force: + release_date = details.get("release_date", "") + if release_date: + year = release_date.split("-")[0] + frontmatter["year"] = int(year) + print(f" Year: {year}") + updated = True + + # Update director + if not has_director or force: + credits = details.get("credits", {}) + directors = get_directors(credits) + if directors: + # Store as string if single, list if multiple + if len(directors) == 1: + frontmatter["director"] = directors[0] + else: + frontmatter["director"] = directors + print(f" Director: {', '.join(directors)}") + updated = True + + # Update genres (bonus) + if "genres" not in frontmatter or force: + genres = [g["name"] for g in details.get("genres", [])] + if genres: + frontmatter["genres"] = genres + updated = True + + if updated: + write_post(filepath, frontmatter, content) + print(" Updated!") + + return updated + + +def main(): + parser = argparse.ArgumentParser(description="Fetch movie data for Hugo posts") + parser.add_argument("--dry-run", action="store_true", help="Show what would be updated") + parser.add_argument("--force", action="store_true", help="Re-fetch even if data exists") + parser.add_argument("file", nargs="?", help="Specific file to process") + args = parser.parse_args() + + if args.file: + filepath = Path(args.file) + if not filepath.is_absolute(): + filepath = PROJECT_ROOT / filepath + if not filepath.exists(): + print(f"File not found: {filepath}") + sys.exit(1) + files = [filepath] + else: + files = list(CONTENT_DIR.glob("**/*.md")) + + print(f"Scanning {len(files)} posts for movie data...") + + updated = 0 + for filepath in files: + if process_post(filepath, dry_run=args.dry_run, force=args.force): + updated += 1 + + print(f"\n{'Would update' if args.dry_run else 'Updated'}: {updated} posts") + + +if __name__ == "__main__": + main() diff --git a/scripts/import_letterboxd.py b/scripts/import_letterboxd.py new file mode 100755 index 0000000..ddbf3da --- /dev/null +++ b/scripts/import_letterboxd.py @@ -0,0 +1,285 @@ +#!/usr/bin/env python3 +""" +Import movies from Letterboxd diary to Hugo draft posts. + +Usage: + python scripts/import_letterboxd.py # Interactive mode - pick from recent + python scripts/import_letterboxd.py --latest # Import most recent entry + python scripts/import_letterboxd.py --list # Just list recent entries +""" + +import argparse +import os +import re +import sys +from datetime import datetime +from pathlib import Path +from urllib.parse import urlparse +import xml.etree.ElementTree as ET + +import requests + +# Configuration +LETTERBOXD_USER = "marcusEID" +TMDB_API_KEY = "9e36fdcf70a4918e0dce327acc437dff" # From get_posters.py +RSS_URL = f"https://letterboxd.com/{LETTERBOXD_USER}/rss/" + +# Paths (relative to script location) +SCRIPT_DIR = Path(__file__).parent +PROJECT_ROOT = SCRIPT_DIR.parent +CONTENT_DIR = PROJECT_ROOT / "content" / "posts" +IMAGES_DIR = PROJECT_ROOT / "static" / "images" / "posters" + +# XML namespaces in Letterboxd RSS +NAMESPACES = { + "letterboxd": "https://letterboxd.com", + "tmdb": "https://themoviedb.org", + "dc": "http://purl.org/dc/elements/1.1/", +} + + +def fetch_rss(): + """Fetch and parse Letterboxd RSS feed.""" + resp = requests.get(RSS_URL, timeout=10) + resp.raise_for_status() + return ET.fromstring(resp.content) + + +def parse_movies(root): + """Extract movie entries from RSS (skip lists).""" + movies = [] + for item in root.findall(".//item"): + # Skip lists (they don't have tmdb:movieId) + tmdb_id = item.find("tmdb:movieId", NAMESPACES) + if tmdb_id is None: + continue + + title = item.find("letterboxd:filmTitle", NAMESPACES) + year = item.find("letterboxd:filmYear", NAMESPACES) + rating = item.find("letterboxd:memberRating", NAMESPACES) + watched = item.find("letterboxd:watchedDate", NAMESPACES) + rewatch = item.find("letterboxd:rewatch", NAMESPACES) + link = item.find("link") + + movies.append({ + "tmdb_id": tmdb_id.text, + "title": title.text if title is not None else "Unknown", + "year": year.text if year is not None else "", + "rating": rating.text if rating is not None else "", + "watched_date": watched.text if watched is not None else "", + "rewatch": rewatch.text if rewatch is not None else "No", + "letterboxd_url": link.text if link is not None else "", + }) + + return movies + + +def get_tmdb_details(tmdb_id): + """Fetch movie details from TMDB including IMDB ID and poster.""" + url = f"https://api.themoviedb.org/3/movie/{tmdb_id}" + params = {"api_key": TMDB_API_KEY} + resp = requests.get(url, params=params, timeout=10) + resp.raise_for_status() + data = resp.json() + + return { + "imdb_id": data.get("imdb_id", ""), + "poster_path": data.get("poster_path", ""), + "overview": data.get("overview", ""), + } + + +def download_poster(poster_path, filename): + """Download poster from TMDB to static/images/posters/.""" + if not poster_path: + print(" No poster available") + return None + + # Use w500 size for good quality without being huge + url = f"https://image.tmdb.org/t/p/w500{poster_path}" + resp = requests.get(url, timeout=10) + resp.raise_for_status() + + IMAGES_DIR.mkdir(parents=True, exist_ok=True) + filepath = IMAGES_DIR / filename + filepath.write_bytes(resp.content) + print(f" Poster saved: {filepath.relative_to(PROJECT_ROOT)}") + return f"/images/posters/{filename}" + + +def slugify(title): + """Convert title to URL-friendly slug.""" + slug = title.lower() + slug = re.sub(r"[^a-z0-9\s-]", "", slug) + slug = re.sub(r"[\s_]+", "-", slug) + slug = re.sub(r"-+", "-", slug) + return slug.strip("-") + + +def rating_to_stars(rating): + """Convert numeric rating to star display.""" + if not rating: + return "" + r = float(rating) + full = int(r) + half = r - full >= 0.5 + stars = "*" * full + if half: + stars += " 1/2" + return f"{stars} ({rating})" + + +def create_draft_post(movie, tmdb_details, poster_url): + """Create a Hugo draft post for the movie.""" + slug = slugify(movie["title"]) + filename = f"{slug}.md" + filepath = CONTENT_DIR / filename + + if filepath.exists(): + print(f" Post already exists: {filepath.relative_to(PROJECT_ROOT)}") + return None + + # Format the date for Hugo + now = datetime.utcnow().strftime("%Y-%m-%dT%H:%M:%SZ") + + # Format watched date nicely + watched = movie["watched_date"] + if watched: + try: + dt = datetime.strptime(watched, "%Y-%m-%d") + watched_display = dt.strftime("%B %d, %Y") + except ValueError: + watched_display = watched + else: + watched_display = "" + + imdb_id = tmdb_details.get("imdb_id", "") + rating_display = rating_to_stars(movie["rating"]) + + # Build the frontmatter and content + content = f'''--- +title: '{movie["title"]}' +date: {now} +draft: true +series: "Frank's Couch" +summary: "" +imdb: "{imdb_id}" +poster: "{poster_url or ''}" +tags: + - gucci + - ghost theater + - marcel + - amc-south + - amc-lakeline + - anticipated + - no-expectations + - had pizza +--- +{{{{< imdbposter >}}}} + +| Date watched | {watched_display} | +|---------------------|-------------------| +| Show Time | | +| Theater | | +| Theater Number | | +| Pizza | | +| Tickets | | +| Letterboxd Rating | {rating_display} | +| Crew | | + +{{{{< /imdbposter >}}}} + +Write your review here... + +''' + + filepath.write_text(content) + print(f" Draft created: {filepath.relative_to(PROJECT_ROOT)}") + return filepath + + +def display_movies(movies, limit=10): + """Display a list of recent movies.""" + print(f"\nRecent movies from Letterboxd ({LETTERBOXD_USER}):\n") + for i, m in enumerate(movies[:limit], 1): + rewatch = " (rewatch)" if m["rewatch"] == "Yes" else "" + rating = f" - {m['rating']}*" if m["rating"] else "" + print(f" {i}. {m['title']} ({m['year']}){rating}{rewatch}") + print(f" Watched: {m['watched_date']}") + print() + + +def import_movie(movie): + """Import a single movie: fetch details, download poster, create post.""" + print(f"\nImporting: {movie['title']} ({movie['year']})") + + # Get TMDB details + print(" Fetching TMDB details...") + tmdb = get_tmdb_details(movie["tmdb_id"]) + + # Download poster + poster_url = None + if tmdb["poster_path"]: + print(" Downloading poster...") + poster_filename = f"{slugify(movie['title'])}.jpg" + poster_url = download_poster(tmdb["poster_path"], poster_filename) + + # Create draft post + print(" Creating draft post...") + filepath = create_draft_post(movie, tmdb, poster_url) + + if filepath: + print(f"\nDone! Edit your draft at: {filepath.relative_to(PROJECT_ROOT)}") + if tmdb.get("imdb_id"): + print(f"IMDB: https://www.imdb.com/title/{tmdb['imdb_id']}/") + + return filepath + + +def main(): + parser = argparse.ArgumentParser(description="Import Letterboxd movies to Hugo") + parser.add_argument("--latest", action="store_true", help="Import most recent entry") + parser.add_argument("--list", action="store_true", help="Just list recent entries") + parser.add_argument("--count", type=int, default=10, help="Number of entries to show") + args = parser.parse_args() + + print("Fetching Letterboxd RSS feed...") + try: + root = fetch_rss() + except Exception as e: + print(f"Error fetching RSS: {e}") + sys.exit(1) + + movies = parse_movies(root) + if not movies: + print("No movies found in feed.") + sys.exit(1) + + if args.list: + display_movies(movies, args.count) + sys.exit(0) + + if args.latest: + import_movie(movies[0]) + sys.exit(0) + + # Interactive mode + display_movies(movies, args.count) + + try: + choice = input("Enter number to import (or 'q' to quit): ").strip() + if choice.lower() == 'q': + sys.exit(0) + idx = int(choice) - 1 + if 0 <= idx < len(movies): + import_movie(movies[idx]) + else: + print("Invalid selection") + sys.exit(1) + except (ValueError, KeyboardInterrupt): + print("\nCancelled") + sys.exit(1) + + +if __name__ == "__main__": + main() diff --git a/scripts/new_movie.py b/scripts/new_movie.py new file mode 100755 index 0000000..6f17c66 --- /dev/null +++ b/scripts/new_movie.py @@ -0,0 +1,229 @@ +#!/usr/bin/env python3 +""" +Create a new movie post from an IMDB ID. + +Usage: + python scripts/new_movie.py tt1234567 + python scripts/new_movie.py tt1234567 --title "Custom Title" + python scripts/new_movie.py https://www.imdb.com/title/tt1234567/ + +This fetches all metadata (title, year, runtime, director, poster) and creates +a ready-to-edit draft post. +""" + +import argparse +import re +import subprocess +import sys +from datetime import datetime, timezone +from pathlib import Path + +import requests + +# Configuration +TMDB_API_KEY = "9e36fdcf70a4918e0dce327acc437dff" + +# Paths +SCRIPT_DIR = Path(__file__).parent +PROJECT_ROOT = SCRIPT_DIR.parent +CONTENT_DIR = PROJECT_ROOT / "content" / "posts" +IMAGES_DIR = PROJECT_ROOT / "static" / "images" / "posters" + + +def extract_imdb_id(input_str): + """Extract IMDB ID from URL or raw ID.""" + match = re.search(r'(tt\d+)', input_str) + if match: + return match.group(1) + return None + + +def find_movie_by_imdb(imdb_id): + """Find TMDB movie by IMDB ID.""" + url = f"https://api.themoviedb.org/3/find/{imdb_id}" + params = { + "api_key": TMDB_API_KEY, + "external_source": "imdb_id" + } + resp = requests.get(url, params=params, timeout=10) + resp.raise_for_status() + data = resp.json() + + results = data.get("movie_results", []) + if results: + return results[0] + return None + + +def get_movie_details(tmdb_id): + """Get full movie details from TMDB.""" + url = f"https://api.themoviedb.org/3/movie/{tmdb_id}" + params = { + "api_key": TMDB_API_KEY, + "append_to_response": "credits" + } + resp = requests.get(url, params=params, timeout=10) + resp.raise_for_status() + return resp.json() + + +def get_directors(credits): + """Extract director names from credits.""" + crew = credits.get("crew", []) + directors = [p["name"] for p in crew if p.get("job") == "Director"] + return directors + + +def slugify(title): + """Convert title to URL-friendly slug.""" + slug = title.lower() + slug = re.sub(r"[^a-z0-9\s-]", "", slug) + slug = re.sub(r"[\s_]+", "-", slug) + slug = re.sub(r"-+", "-", slug) + return slug.strip("-") + + +def download_poster(poster_path, filename): + """Download and save poster. Returns local path.""" + if not poster_path: + return "" + + # w500 = 500px wide, good for 200px display on retina + url = f"https://image.tmdb.org/t/p/w500{poster_path}" + resp = requests.get(url, timeout=10) + resp.raise_for_status() + + IMAGES_DIR.mkdir(parents=True, exist_ok=True) + filepath = IMAGES_DIR / filename + filepath.write_bytes(resp.content) + + return f"/images/posters/{filename}" + + +def create_post(imdb_id, details, poster_path, custom_title=None): + """Create the Hugo post with all metadata.""" + title = custom_title or details.get("title", "Untitled") + slug = slugify(title) + filename = f"{slug}.md" + filepath = CONTENT_DIR / filename + + if filepath.exists(): + print(f"Post already exists: {filepath}") + return None + + # Download poster + poster_url = "" + if details.get("poster_path"): + poster_filename = f"{slug}.jpg" + print(f"Downloading poster...") + poster_url = download_poster(details["poster_path"], poster_filename) + + # Extract metadata + release_date = details.get("release_date", "") + year = int(release_date.split("-")[0]) if release_date else "" + runtime = details.get("runtime", "") + + credits = details.get("credits", {}) + directors = get_directors(credits) + director_str = directors[0] if len(directors) == 1 else directors if directors else "" + + genres = [g["name"] for g in details.get("genres", [])] + + now = datetime.now(timezone.utc).strftime("%Y-%m-%dT%H:%M:%SZ") + + # Build frontmatter + # Using manual formatting to control output + genres_yaml = "\n".join(f" - {g}" for g in genres) if genres else "[]" + if isinstance(director_str, list): + director_yaml = "\n".join(f" - {d}" for d in director_str) + director_yaml = f"\n{director_yaml}" + else: + director_yaml = f' "{director_str}"' if director_str else ' ""' + + content = f'''--- +title: '{title}' +date: {now} +draft: true +series: "Frank's Couch" +summary: "" +imdb: "{imdb_id}" +poster: "{poster_url}" +year: {year} +runtime: {runtime} +director:{director_yaml} +genres: +{genres_yaml} +tags: + - gucci + - ghost theater + - marcel + - amc-south + - amc-lakeline + - anticipated + - no-expectations + - had pizza +--- +{{{{< imdbposter >}}}} + +| Date watched | | +|---------------------|-------------------| +| Show Time | | +| Theater | | +| Theater Number | | +| Pizza | | +| Tickets | | +| Letterboxd Rating | | +| Crew | | + +{{{{< /imdbposter >}}}} + +Write your review here... + +''' + + filepath.write_text(content) + return filepath + + +def main(): + parser = argparse.ArgumentParser( + description="Create a new movie post from IMDB ID", + epilog="Example: python scripts/new_movie.py tt1234567" + ) + parser.add_argument("imdb", help="IMDB ID or URL (e.g., tt1234567)") + parser.add_argument("--title", help="Custom title (default: from TMDB)") + args = parser.parse_args() + + # Extract IMDB ID + imdb_id = extract_imdb_id(args.imdb) + if not imdb_id: + print(f"Invalid IMDB ID: {args.imdb}") + print("Expected format: tt1234567 or https://www.imdb.com/title/tt1234567/") + sys.exit(1) + + print(f"Looking up {imdb_id}...") + + # Find on TMDB + movie = find_movie_by_imdb(imdb_id) + if not movie: + print(f"Movie not found for IMDB ID: {imdb_id}") + sys.exit(1) + + tmdb_id = movie["id"] + print(f"Found: {movie.get('title')} ({movie.get('release_date', '')[:4]})") + + # Get full details + print("Fetching details...") + details = get_movie_details(tmdb_id) + + # Create post + filepath = create_post(imdb_id, details, details.get("poster_path"), args.title) + + if filepath: + print(f"\nCreated: {filepath.relative_to(PROJECT_ROOT)}") + print(f"IMDB: https://www.imdb.com/title/{imdb_id}/") + print(f"\nEdit your post, then run: ./scripts/build.sh") + + +if __name__ == "__main__": + main() diff --git a/scripts/remote_publish.sh b/scripts/remote_publish.sh new file mode 100755 index 0000000..816e790 --- /dev/null +++ b/scripts/remote_publish.sh @@ -0,0 +1,136 @@ +#!/bin/bash +# Remote publish script for marcus-web +# Pushes local changes if needed, then builds on SDF + +set -e + +SDF_HOST="mnw@sdf.org" +REMOTE_DIR="~/marcus-web" + +# Colors for output +RED='\033[0;31m' +GREEN='\033[0;32m' +YELLOW='\033[1;33m' +NC='\033[0m' # No Color + +echo -e "${GREEN}=== Remote Publish ===${NC}" +echo "" + +# Check if we're in a git repo +if ! git rev-parse --git-dir > /dev/null 2>&1; then + echo -e "${RED}Error: Not in a git repository${NC}" + exit 1 +fi + +# Fetch latest from remote to compare +echo "Checking repository status..." +git fetch origin 2>/dev/null || true + +# Check for uncommitted changes (staged or unstaged) +if ! git diff-index --quiet HEAD -- 2>/dev/null || [ -n "$(git ls-files --others --exclude-standard)" ]; then + echo -e "${YELLOW}You have uncommitted changes:${NC}" + git status --short + echo "" + read -p "Would you like to commit these changes? (y/n) " -n 1 -r + echo "" + if [[ $REPLY =~ ^[Yy]$ ]]; then + # Stage all changes + git add -A + + read -p "Custom commit message? (y/n) " -n 1 -r + echo "" + if [[ $REPLY =~ ^[Yy]$ ]]; then + read -p "Enter commit message: " COMMIT_MSG + else + # Try to find a post title from recently modified markdown files + COMMIT_MSG="" + RECENT_MD=$(git diff --cached --name-only | grep '\.md$' | head -1) + if [ -n "$RECENT_MD" ] && [ -f "$RECENT_MD" ]; then + # Extract title from frontmatter + TITLE=$(grep -m1 "^title:" "$RECENT_MD" 2>/dev/null | sed "s/^title:[[:space:]]*['\"]*//" | sed "s/['\"].*$//") + if [ -n "$TITLE" ]; then + COMMIT_MSG="Remote Publish Auto Commit - $TITLE" + fi + fi + # Fallback to date-based message + if [ -z "$COMMIT_MSG" ]; then + COMMIT_MSG="Auto Commit - $(date '+%Y-%m-%d %H:%M')" + fi + echo "Using commit message: $COMMIT_MSG" + fi + + git commit -m "$COMMIT_MSG" + echo -e "${GREEN}Changes committed${NC}" + echo "" + else + echo -e "${YELLOW}Continuing without committing...${NC}" + read -p "Are you sure? Remote will not have these changes. (y/n) " -n 1 -r + echo "" + if [[ ! $REPLY =~ ^[Yy]$ ]]; then + echo "Aborted." + exit 1 + fi + fi +fi + +# Check if local is ahead of remote +LOCAL=$(git rev-parse HEAD 2>/dev/null) +REMOTE=$(git rev-parse @{u} 2>/dev/null || echo "") +BASE=$(git merge-base HEAD @{u} 2>/dev/null || echo "") + +if [ -z "$REMOTE" ]; then + echo -e "${YELLOW}Warning: No upstream branch configured${NC}" +elif [ "$LOCAL" != "$REMOTE" ]; then + if [ "$LOCAL" = "$BASE" ]; then + echo -e "${YELLOW}Local is behind remote. You may want to pull first.${NC}" + elif [ "$REMOTE" = "$BASE" ]; then + echo -e "${YELLOW}Local commits not pushed to remote:${NC}" + git log --oneline @{u}..HEAD + echo "" + read -p "Push changes before publishing? (y/n) " -n 1 -r + echo "" + if [[ $REPLY =~ ^[Yy]$ ]]; then + echo "Pushing..." + git push + echo -e "${GREEN}Pushed successfully${NC}" + else + echo -e "${YELLOW}Skipping push. Remote will not have latest changes.${NC}" + read -p "Continue anyway? (y/n) " -n 1 -r + echo "" + if [[ ! $REPLY =~ ^[Yy]$ ]]; then + echo "Aborted." + exit 1 + fi + fi + else + echo -e "${YELLOW}Warning: Local and remote have diverged${NC}" + read -p "Continue anyway? (y/n) " -n 1 -r + echo "" + if [[ ! $REPLY =~ ^[Yy]$ ]]; then + echo "Aborted." + exit 1 + fi + fi +else + echo -e "${GREEN}Repository is up to date with remote${NC}" +fi + +echo "" +echo -e "${GREEN}=== Connecting to SDF ===${NC}" +echo "" + +# Build the remote command +REMOTE_CMD="cd $REMOTE_DIR && git pull && hugo && mkhomepage -p" + +# Try SSH with key auth first, fall back to password prompt +if ssh -o BatchMode=yes -o ConnectTimeout=5 "$SDF_HOST" "echo 'SSH key auth successful'" 2>/dev/null; then + echo "Using SSH key authentication..." + ssh "$SDF_HOST" "$REMOTE_CMD" +else + echo "SSH key auth failed or not configured, using password..." + ssh "$SDF_HOST" "$REMOTE_CMD" +fi + +echo "" +echo -e "${GREEN}=== Published successfully! ===${NC}" +echo "Site is live at: https://mnw.sdf.org/" diff --git a/static/images/posters/lethal-tender.jpg b/static/images/posters/lethal-tender.jpg new file mode 100644 index 0000000000000000000000000000000000000000..5a51e052e6e858a21d241addbb9cb676fcf1f277 GIT binary patch literal 84401 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 literal 0 HcmV?d00001