Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

Netflix Narc 🕵️‍♂️🍿

Netflix Narc Hero Art

Your automated, terminal-based snitch.

Netflix Narc is a fast, beautiful Terminal UI built to ingest your family's Netflix viewing history, cross-reference it with the Common Sense Media API, and gently narc on anyone watching something they shouldn't.

Whether it's too violent, contains sketchy language, or is just completely devoid of educational value, you decide the criteria, and Netflix Narc tells you who's been watching it.

✨ Features

  • 🍿 Netflix History Integration: Ingest your profile's NetflixViewingHistory.csv to analyze watching habits.
  • 📋 Onboarding Wizard: First-run setup to configure child age ranges, content weightings, and scoring modes with a live Weight Impact Preview.
  • 🔍 The Lineup & Interrogation Room: A Steam-inspired priority review queue (l) and manual data entry room (i) to score niche titles across Common Sense Media categories (0–5), attach cover art via macOS clipboard, and track dossier completeness.
  • 🧠 Common Sense Intel: Automatically fetches age ratings, quality scores, and granular category breakdowns (Violence, Language, Educational Value, etc.) from API providers (OMDb, CSM, TMDB) or your local Evidence Locker.
  • 📊 Suitability Sub-bars & Scoring Modes: Expand any show to view rich sub-bar breakdowns across Base Quality, Age Suitability, Educational Suitability, Positive Content, and Content Safety under Quality Focus or Balanced scoring modes.
  • ⚖️ Weighted Justice: Customize how strictly you want to judge different content categories.
  • ☁️ Storage & Sync (BYOS): Sync preferences and Evidence Locker manual dossiers across devices using your own local drive, Cloudflare R2, AWS S3, or Nextcloud/WebDAV.
  • ❓ Contextual Help Screen: Built-in keyboard shortcut reference and scoring mode guide available anywhere via h or ?.
  • 🖥️ Reactive TUI: A responsive, modern terminal UI built with Textual.

📸 App in Action

Netflix Narc TUI Mockup

🚀 Getting Started

Prerequisites

  • Python 3.13+
  • uv (recommended for package management and local development; optional if installing via pipx or pip)

Quick Install (recommended)

Via uv tool (PyPI)

uv tool install netflix-narc
netflix-narc --help

Via pipx or pip

pipx install netflix-narc
# or
pip install netflix-narc

From GitHub

uv tool install git+https://github.com/Kilo59/netflix-narc

Development Install

  1. Clone the repository and navigate into the netflix-narc directory.
  2. Install dependencies with uv sync.
  3. Run via uv run netflix-narc.

Prerequisites & Setup

  • Python 3.13+
  • Your exported NetflixViewingHistory.csv (Netflix Account Settings → Profile & Parental Controls → Viewing activity → Download all)
  • (Optional) An OMDb API Key — grab a free key at omdbapi.com

Running the Application

# Point to your history file explicitly (recommended)
uv run netflix-narc --csv /path/to/NetflixViewingHistory.csv

# Or drop the file in the current directory as NetflixViewingHistory.csv and run
uv run netflix-narc

On first launch, Netflix Narc automatically starts the Onboarding Wizard to configure child age targets and content weightings. At any time, press s to open Preferences or h / ? for Help.

☁️ Storage & Multi-Device Sync (BYOS)

Netflix Narc operates 100% local-first with zero central tracking. If you want to synchronize your Evidence Locker dossiers and preference settings across multiple computers, you can enable Bring-Your-Own-Storage (BYOS):

1. Setup via TUI (Recommended)

  1. Press s in the app to open Preferences & Storage Configuration.
  2. Select your preferred Sync Storage Backend from the dropdown.
  3. Fill in your credentials/paths and click Test Connection.
  4. Click Save Settings to persist your setup.

2. Setup via Environment Variables (~/.config/netflix-narc/.env)

You can also configure sync directly in your environment or ~/.config/netflix-narc/.env:

  • Local Folder / Cloud Drive (iCloud Drive, Dropbox, Syncthing, shared network drive):

    SYNC_BACKEND=local_folder
    SYNC_LOCAL_PATH=/Users/username/Library/Mobile Documents/com~apple~CloudDocs/netflix-narc-sync
    
  • S3-Compatible Object Storage (Cloudflare R2, AWS S3, MinIO, Wasabi):

    SYNC_BACKEND=s3
    SYNC_S3_ENDPOINT_URL=https://<account_id>.r2.cloudflarestorage.com
    SYNC_S3_BUCKET=my-narc-bucket
    SYNC_S3_ACCESS_KEY_ID=your_access_key_id
    SYNC_S3_SECRET_ACCESS_KEY=your_secret_access_key
    
  • WebDAV / Nextcloud / ownCloud:

    SYNC_BACKEND=webdav
    SYNC_WEBDAV_URL=https://nextcloud.example.com/remote.php/dav/files/username/netflix-narc
    SYNC_WEBDAV_USERNAME=your_username
    SYNC_WEBDAV_PASSWORD=your_app_password
    

⌨️ Keybindings

  • l: Open The Lineup (priority review queue)
  • i: Open Interrogation Room (manual data entry for selected title)
  • s: Open Preferences (settings, weights, API provider & BYOS sync)
  • a: Open Advanced Options (Load CSV, Evaluate API)
  • h / ?: Contextual Help Overlay
  • Enter: Expand/Collapse show episodes and suitability sub-bars
  • q: Quit Application

📜 How it Works

  1. You provide your Netflix viewing history CSV.
  2. The Onboarding Wizard aligns your target child age and content sensitivity thresholds.
  3. Netflix Narc cross-references titles against API metadata or your local Evidence Locker.
  4. Use The Lineup (l) and Interrogation Room (i) to manually score missing or unrated titles.
  5. Expand any row in the main table to inspect granular suitability sub-bars and exact violation flags.

Built with ❤️ (and a healthy dose of parental suspicion) using Python and Textual.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

netflix_narc-0.1.0a2.tar.gz (83.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

netflix_narc-0.1.0a2-py3-none-any.whl (68.7 kB view details)

Uploaded Python 3

File details

Details for the file netflix_narc-0.1.0a2.tar.gz.

File metadata

  • Download URL: netflix_narc-0.1.0a2.tar.gz
  • Upload date:
  • Size: 83.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.12.1 {"installer":{"name":"uv","version":"0.12.1","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for netflix_narc-0.1.0a2.tar.gz
Algorithm Hash digest
SHA256 6500274f51fdeef6af111e9525cc360b97fa7428cd4683447a0df084dca70682
MD5 a456a7fe4616aa465321430b68ae507d
BLAKE2b-256 3a39966cdb3aac19c3373e2ffa3c65cdbbcc738b58358bc2c4d0c28b65010bc3

See more details on using hashes here.

File details

Details for the file netflix_narc-0.1.0a2-py3-none-any.whl.

File metadata

  • Download URL: netflix_narc-0.1.0a2-py3-none-any.whl
  • Upload date:
  • Size: 68.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.12.1 {"installer":{"name":"uv","version":"0.12.1","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for netflix_narc-0.1.0a2-py3-none-any.whl
Algorithm Hash digest
SHA256 48079383c39580bf5ebeb264417aa564623baf78bb0bb25329fab669f3e95708
MD5 d935015c7b584660182c41773145d9d5
BLAKE2b-256 760550e7c0b87efa26f60c40d881eaefc23f756c9a6377838a167b39060e21ea

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page