All three post creation scripts now ask whether to publish to gopher phlog and include the phlog field in generated frontmatter.
Blog Scripts
Automation scripts for The Double Lunch Dispatch blog.
Quick Start
Install Dependencies
# 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.
# 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:
# 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:
# 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:
# 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:
# 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.):
# 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:
# 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)
# 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
# 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
# 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
# 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
# Make sure venv is activated
source .venv/bin/activate
# Install/reinstall dependencies
pip install -r requirements.txt
"TMDB API key" errors
# 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
# 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.mdfor NFR details - Check error messages - they usually point to the issue