A random movie selector for your Letterboxd watchlist
I had a problem, as a Letterboxd user with 800+ of films on my watchlist, I often found myself paralyzed by choice. This tool solves the "what should I watch?" problem by adding an element of chance while still providing intelligent recommendations for what to watch next. This tool randomly selects a film from your exported Letterboxd watchlist and recommends similar movies using AI-powered semantic analysis. This is a personal project and not meant as any infringement on Letterboxd's copyright.
- One-Click Randomizer: Instantly pick a random movie from your Letterboxd watchlist
- AI Recommendations: Get 3 similar movie suggestions using semantic analysis
- Full Movie Details: Poster, runtime, genre, rating, and plot summary
- OMDB Integration: Automatic fetching of movie metadata
- Python 3.8+
- OMDB API key (free)
- Letterboxd account with watchlist
- Go to your Letterboxd profile → "Watchlist"
- Click the ••• (More) button
- Select "Export" → "CSV"
- Save the file as
watchlist.csv
- Visit OMDB API
- Sign up for a free API key
- Copy your key - you'll need it in Step 4
# Clone the repository
git clone https://github.com/sarah-eid/watchlist-roulette.git
cd watchlist-roulette
# Install dependencies
pip install -r requirements.txtOpen app.py in any text editor and replace the API key on line 8:
# In app.py, line 8, change this:
OMDB_API_KEY = "YOUR_ACTUAL_KEY_HERE" # ← Paste your OMDB key hereSave the file after making this change.
streamlit run app.py- Upload your exported
watchlist.csv - Click "INITIATE_RANDOM_SCAN"
- Let fate decide your next movie!
- Upload your Letterboxd CSV export
- Click the scan button to randomly select a film
- View full movie details
- Get AI-powered recommendations for similar films
- Repeat when you can't decide what to watch next!
watchlist-roulette/
├── app.py # Main Streamlit application
├── requirements.txt # Python dependencies
├── .gitignore # Excludes cache files
├── LICENSE # MIT License
└── README.md # This documentation file
Powered by:
sentence-transformers- For semantic embeddingsscikit-learn (cosine similarity)- For finding similar moviesOMDB API- For movie metadataStreamlit- For the web interface
The Algorithm:
- Converts movie plots into vector embeddings
- Uses cosine similarity to find closest matches
- Excludes the selected movie from recommendations
- Returns top 3 most similar films
- Requires an active internet connection for OMDB API calls
- Free OMDB tier allows 1,000 requests per day
- Works with standard Letterboxd CSV export format
- Recommendation quality depends on available plot summaries
"No intelligence found for this entry"
- Check your OMDB API key in
app.py - Ensure the movie exists in OMDB database
- Verify your CSV has correct "Name" and "Year" columns
"VISUAL_REDACTED"
- Some movies don't have posters in OMDB
- This doesn't affect functionality
Slow loading?
- First run caches embeddings for faster future use
- Large watchlists take longer to process initially
MIT License
Created by Sarah Eid - A fellow Letterboxd user tired of decision paralysis.
