โ† Back to Media & Streaming
Media & Streaming by @udiedrichsen

streaming-buddy

Personal streaming assistant with learning preferences

0
Source Code

Streaming Buddy ๐Ÿ“บ

Personal streaming assistant that learns your taste, tracks your watching habits, and suggests what to watch next.

Features

  • Search & Info: Find movies/TV shows with TMDB data
  • Watch Tracking: Track what you're currently watching with progress
  • Learning System: Learns your preferences from likes/dislikes/ratings
  • Smart Recommendations: Personalized suggestions based on your taste
  • Mood-Based Search: Find content by mood (exciting, relaxing, scary, etc.)
  • Availability Check: Shows which of your services has the content
  • Match Explanation: Explains why a title matches your preferences

Commands

Command Action
/stream Show status with all commands
/stream search <title> Search for movies/TV shows
/stream info <id> [tv|movie] Detailed info + availability
/stream watch <id> [tv|movie] Start tracking a title
/stream progress S01E05 Update progress on current show
/stream done [1-5] Mark as finished + rate (auto-learns)
/stream like [id] Mark as liked โ†’ learns preferences
/stream dislike [id] Mark as disliked โ†’ learns preferences
/stream suggest [service] [tv|movie] Personalized recommendations
/stream mood <mood> Search by mood
/stream surprise Random recommendation
/stream why <id> Explain why this matches you
/stream watchlist Show watchlist
/stream watchlist add <id> Add to watchlist
/stream history View watch history
/stream profile Show your taste profile
/stream services Manage streaming services
/stream services add <name> Add a service
/stream services remove <name> Remove a service

Mood Options

Mood Genres
exciting Action, Thriller, Sci-Fi, Adventure
relaxing Comedy, Animation, Family, Documentary
thoughtful Drama, Mystery, History
scary Horror, Thriller
romantic Romance, Drama
funny Comedy, Animation

Supported Services

  • netflix, amazon-prime, disney-plus, apple-tv-plus
  • youtube-premium, wow, paramount-plus, crunchyroll
  • joyn, rtl, magenta, mubi

Learning System

The skill learns your preferences from:

  1. Ratings: When you finish with /stream done [1-5]:

    • Rating 4-5: Adds genres/themes/actors to "liked"
    • Rating 1-2: Adds genres to "avoided"
  2. Explicit Feedback: /stream like and /stream dislike:

    • Extracts genres, themes, actors, directors
    • Updates preference weights
  3. Preference Profile includes:

    • Genre preferences (weighted scores)
    • Liked/disliked themes
    • Favorite actors & directors
    • Custom mood mappings

Handler Usage

# Core commands
handler.sh status $WORKSPACE
handler.sh search "severance" $WORKSPACE
handler.sh info 95396 tv $WORKSPACE
handler.sh watch 95396 tv $WORKSPACE
handler.sh progress S01E05 $WORKSPACE
handler.sh done 5 "Great show!" $WORKSPACE

# Learning commands
handler.sh like $WORKSPACE                    # Like current watching
handler.sh like 12345 movie $WORKSPACE        # Like specific title
handler.sh dislike $WORKSPACE
handler.sh why 95396 tv $WORKSPACE
handler.sh profile $WORKSPACE

# Recommendation commands
handler.sh suggest $WORKSPACE                 # All services, all types
handler.sh suggest prime movie $WORKSPACE     # Prime movies only
handler.sh mood exciting $WORKSPACE
handler.sh mood relaxing tv $WORKSPACE
handler.sh surprise $WORKSPACE

# List commands
handler.sh watchlist list $WORKSPACE
handler.sh watchlist add 12345 tv $WORKSPACE
handler.sh history $WORKSPACE

# Service management
handler.sh services list $WORKSPACE
handler.sh services add netflix $WORKSPACE
handler.sh services remove netflix $WORKSPACE

Data Files

All data stored in $WORKSPACE/memory/streaming-buddy/:

File Purpose
config.json TMDB API key, region, language
profile.json User profile metadata
services.json Active streaming services
preferences.json Learned taste preferences
watching.json Currently watching
watchlist.json Want to watch list
history.json Watched + ratings
cache/*.json API response cache (24h)

Setup

  1. Get TMDB API key: https://www.themoviedb.org/settings/api
  2. Store in memory/streaming-buddy/config.json:
    {
      "tmdbApiKey": "your_api_key",
      "region": "DE",
      "language": "de-DE"
    }
    
  3. Run /stream setup to configure services

Conversation Examples

Mood-based search:

User: I want something exciting tonight
Bot: ๐ŸŽฌ Exciting picks for you:
     1. Reacher S3 (Prime) โญ8.5
     2. Jack Ryan (Prime) โญ8.1
     ...

Learning from feedback:

User: /stream done 5
Bot: โœ… Severance marked as done (โญ5)
     ๐Ÿ“š Learned: +Drama, +Mystery, +Sci-Fi
     Actors: Adam Scott, Britt Lower saved to favorites

Explaining recommendations:

User: /stream why 95396
Bot: ๐ŸŽฏ Why Severance matches you:
     โœ“ Genre "Drama" (you like this, +2)
     โœ“ Genre "Mystery" (you like this, +2)
     โœ“ Theme "office" in your preferences
     โœ“ With Adam Scott (your favorite)
     Similar to: Fallout โญ5

Language Support

  • Language detected from config.json (language: "de-DE" or "en")
  • All output adapts to configured language
  • Commands work in any language

Requirements

  • jq (JSON processor)
  • curl (HTTP client)
  • bash 4.0+
  • TMDB API key (free)

References