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 list to 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.