BingeWatch
This project consists of developing a command-line tool that stores and tracks favorite TV series in a local database, monitors new episodes, checks YouTube for related trailers/uploads, and notifies the user based on preferences and scores.
Phase 1: Database Design and Command Parsing
Implement persistent storage and basic command parsing.
- Create DB schema (name, IMDB link, last episode, last watch date, score, snooze flag)
- Implement commands: add, delete, update score, snooze/unsnooze
- Validate inputs and log errors
Functional Output: Valid commands update the database successfully.
Phase 2: IMDB Episode Fetching Logic
Retrieve episode lists from IMDB without external libraries beyond urllib/html.parser.
- Fetch IMDB HTML
- Extract episode numbers and dates
- Detect new episodes vs. last watched
Functional Output: Tool identifies which episodes are new for each series.
Phase 3: Episode Ranking and Filtering by Score
Filter and sort new episodes based on user-defined scores.
- Assign priority by score
- Exclude snoozed series
- Sort new episodes descending by score
Functional Output: List of new episodes ordered by relevance.
Phase 4: YouTube Trailer & Upload Discovery
Search YouTube pages (HTML only) for trailers or uploads related to specific episodes.
- Build search queries
- Parse HTML results
- Extract video titles/URLs
Functional Output: Episode-specific trailer/upload list is generated.
Phase 5: Notifications and Change Detection
Track previously found videos and notify on new uploads.
- Compare new vs previous YouTube results
- Generate notifications for new items
- Log findings and timestamp them
Functional Output: User receives notifications only for newly discovered videos.
Phase 6: Full Listing, Logging, and CLI Refinement
Finalize listing output and improve logs/UX.
- Implement
listto show all new episodes (excluding snoozed) - Add detailed logs for operations
- Polish CLI messages and error handling
Functional Output: The tool lists all new episodes, applies filters, logs operations, and behaves reliably.