Updated the metadata fetching script and wrote the first National Film Registry entry
This commit is contained in:
@@ -0,0 +1,271 @@
|
||||
# Blog Scripts
|
||||
|
||||
Automation scripts for The Double Lunch Dispatch blog.
|
||||
|
||||
## Quick Start
|
||||
|
||||
### Install Dependencies
|
||||
|
||||
```bash
|
||||
# Create virtual environment (if not already done)
|
||||
python3 -m venv .venv
|
||||
|
||||
# Activate it
|
||||
source .venv/bin/activate
|
||||
|
||||
# Install dependencies
|
||||
pip install -r requirements.txt
|
||||
```
|
||||
|
||||
### Required: TMDB API Key
|
||||
|
||||
All movie scripts require a TMDB API key.
|
||||
|
||||
```bash
|
||||
# Copy the example config
|
||||
cp scripts/config.example.py scripts/config.py
|
||||
|
||||
# Edit and add your TMDB API key
|
||||
# Get one at: https://www.themoviedb.org/settings/api
|
||||
```
|
||||
|
||||
## Scripts Overview
|
||||
|
||||
### National Film Registry (NFR) Series
|
||||
|
||||
**"Found in the Darkroom"** - A series covering the National Film Registry
|
||||
|
||||
#### Setup NFR Data (New!)
|
||||
|
||||
Automatically fetch and setup data for any NFR year:
|
||||
|
||||
```bash
|
||||
# Setup data for a specific year
|
||||
python3 scripts/setup_nfr.py 2023
|
||||
|
||||
# With a known URL
|
||||
python3 scripts/setup_nfr.py 2015 --url "https://newsroom.loc.gov/news/..."
|
||||
|
||||
# See full documentation
|
||||
cat scripts/NFR_AUTOMATION.md
|
||||
```
|
||||
|
||||
#### Create NFR Movie Post
|
||||
|
||||
Create a blog post for an NFR movie:
|
||||
|
||||
```bash
|
||||
# List 2024 NFR films
|
||||
python3 scripts/new_nfr.py --list-2024
|
||||
|
||||
# Create post by title
|
||||
python3 scripts/new_nfr.py "No Country for Old Men"
|
||||
|
||||
# Create post by IMDB ID
|
||||
python3 scripts/new_nfr.py tt0477348
|
||||
|
||||
# Specify NFR year
|
||||
python3 scripts/new_nfr.py "Terminator 2" --nfr-year 2023
|
||||
```
|
||||
|
||||
### Regular Movie Posts
|
||||
|
||||
**"Frank's Couch"** - Owen's dad from TV Glow who watches TV
|
||||
|
||||
#### Create Movie Post
|
||||
|
||||
Create a new movie post from IMDB ID:
|
||||
|
||||
```bash
|
||||
# From IMDB ID
|
||||
python3 scripts/new_movie.py tt1234567
|
||||
|
||||
# From IMDB URL
|
||||
python3 scripts/new_movie.py https://www.imdb.com/title/tt1234567/
|
||||
```
|
||||
|
||||
#### Import from Letterboxd
|
||||
|
||||
Import movies from your Letterboxd diary:
|
||||
|
||||
```bash
|
||||
# Interactive mode - pick from recent
|
||||
python3 scripts/import_letterboxd.py
|
||||
|
||||
# Import most recent entry
|
||||
python3 scripts/import_letterboxd.py --latest
|
||||
|
||||
# Just list recent entries
|
||||
python3 scripts/import_letterboxd.py --list
|
||||
|
||||
# Skip to theater/home questions
|
||||
python3 scripts/import_letterboxd.py --theater
|
||||
python3 scripts/import_letterboxd.py --home
|
||||
```
|
||||
|
||||
#### Update Movie Metadata
|
||||
|
||||
Fetch and update movie metadata (poster, director, runtime, etc.):
|
||||
|
||||
```bash
|
||||
# Update all posts with IMDB IDs
|
||||
python3 scripts/fetch_movie_data.py
|
||||
|
||||
# Dry run (preview changes)
|
||||
python3 scripts/fetch_movie_data.py --dry-run
|
||||
|
||||
# Force re-fetch even if data exists
|
||||
python3 scripts/fetch_movie_data.py --force
|
||||
```
|
||||
|
||||
### Beer Posts
|
||||
|
||||
#### Add Beer Call Entry
|
||||
|
||||
Add entries to the beer call yearly log:
|
||||
|
||||
```bash
|
||||
# Interactive mode
|
||||
python3 scripts/new_beercall.py
|
||||
|
||||
# Specific date
|
||||
python3 scripts/new_beercall.py --date 2024-12-19
|
||||
|
||||
# List recent Untappd checkins
|
||||
python3 scripts/new_beercall.py --list
|
||||
```
|
||||
|
||||
## Environment Variables
|
||||
|
||||
### Ollama (for NFR automation)
|
||||
|
||||
```bash
|
||||
# Ollama server (default: http://192.168.0.109:11434)
|
||||
export OLLAMA_HOST=http://localhost:11434
|
||||
|
||||
# Model to use (default: llama3.2)
|
||||
export OLLAMA_MODEL=llama3.2
|
||||
```
|
||||
|
||||
## Common Workflows
|
||||
|
||||
### Creating an NFR Movie Post
|
||||
|
||||
```bash
|
||||
# 1. Create the post
|
||||
python3 scripts/new_nfr.py "Beverly Hills Cop"
|
||||
|
||||
# 2. Update metadata (director, runtime, etc.)
|
||||
python3 scripts/fetch_movie_data.py
|
||||
|
||||
# 3. Edit the post
|
||||
# - Add viewing details (format, rating)
|
||||
# - Write your thoughts
|
||||
# - Add Letterboxd URL
|
||||
|
||||
# 4. Build and preview
|
||||
hugo server -D
|
||||
|
||||
# 5. Publish (remove draft: true)
|
||||
```
|
||||
|
||||
### Importing Theater Movie from Letterboxd
|
||||
|
||||
```bash
|
||||
# 1. Import from Letterboxd
|
||||
python3 scripts/import_letterboxd.py --theater
|
||||
|
||||
# 2. Script will:
|
||||
# - Fetch recent Letterboxd entries
|
||||
# - Let you pick one
|
||||
# - Ask for theater details (venue, time, crew, etc.)
|
||||
# - Download poster from TMDB
|
||||
# - Create draft post
|
||||
|
||||
# 3. Edit and publish
|
||||
```
|
||||
|
||||
### Setting Up a New NFR Year
|
||||
|
||||
```bash
|
||||
# 1. Find the LOC announcement URL for the year
|
||||
# Example: https://newsroom.loc.gov/news/...
|
||||
|
||||
# 2. Run setup script (with ollama for best results)
|
||||
python3 scripts/setup_nfr.py 2023 --url "https://newsroom.loc.gov/..."
|
||||
|
||||
# 3. Review generated file
|
||||
cat scripts/nfr_data/nfr_2023.py
|
||||
|
||||
# 4. Integrate into new_nfr.py
|
||||
# (Copy the dictionary into the main script)
|
||||
|
||||
# 5. Start creating posts!
|
||||
python3 scripts/new_nfr.py "Terminator 2" --nfr-year 2023
|
||||
```
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### "Module not found" errors
|
||||
|
||||
```bash
|
||||
# Make sure venv is activated
|
||||
source .venv/bin/activate
|
||||
|
||||
# Install/reinstall dependencies
|
||||
pip install -r requirements.txt
|
||||
```
|
||||
|
||||
### "TMDB API key" errors
|
||||
|
||||
```bash
|
||||
# Check config exists
|
||||
ls scripts/config.py
|
||||
|
||||
# If not, copy example and edit
|
||||
cp scripts/config.example.py scripts/config.py
|
||||
# Then add your API key
|
||||
```
|
||||
|
||||
### Ollama connection errors
|
||||
|
||||
```bash
|
||||
# Test ollama server
|
||||
curl http://192.168.0.109:11434/api/tags
|
||||
|
||||
# Use --no-ollama flag to skip
|
||||
python3 scripts/setup_nfr.py 2023 --no-ollama
|
||||
```
|
||||
|
||||
## Documentation
|
||||
|
||||
- **NFR Automation**: `scripts/NFR_AUTOMATION.md` - Detailed guide for NFR automation with ollama
|
||||
- **Config Example**: `scripts/config.example.py` - Template for API keys
|
||||
|
||||
## Directory Structure
|
||||
|
||||
```
|
||||
scripts/
|
||||
├── README.md # This file
|
||||
├── NFR_AUTOMATION.md # NFR automation guide
|
||||
├── config.example.py # Config template
|
||||
├── config.py # Your config (gitignored)
|
||||
├── nfr_data/ # Generated NFR data
|
||||
│ ├── nfr_2023.py
|
||||
│ └── nfr_2024.py
|
||||
├── venues.json # Beer venue database
|
||||
│
|
||||
├── setup_nfr.py # Setup NFR year data
|
||||
├── new_nfr.py # Create NFR movie post
|
||||
├── new_movie.py # Create movie post
|
||||
├── import_letterboxd.py # Import from Letterboxd
|
||||
├── fetch_movie_data.py # Update movie metadata
|
||||
├── new_beercall.py # Add beer call entry
|
||||
└── new_techpost.py # Create tech post
|
||||
```
|
||||
|
||||
## Getting Help
|
||||
|
||||
- Check the specific script's `--help`: `python3 scripts/new_nfr.py --help`
|
||||
- Read `NFR_AUTOMATION.md` for NFR details
|
||||
- Check error messages - they usually point to the issue
|
||||
Reference in New Issue
Block a user