Skip to content

About

Rescue your TV Time data before shutdown: a dependency-free CLI to export your follows, watch history, ratings, lists and favorites via your own login, plus an offline viewer.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

10 Commits

Folders and files

Repository files navigation

tvtime-export

A command-line tool that downloads your own TV Time data — follows, watch history, ratings, lists, and favorites — to JSON files on your machine, using the login token from your browser.

TV Time is shutting down, and its official export is limited. This grabs the full picture the app itself sees so you can keep it or move it elsewhere.

No account, no server, no database, no dependencies. Just Node and your token.

Requirements

  • Node.js 22.6+ (runs TypeScript and fetch directly, no build step)
  • A TV Time account you can log into

Get your token

The tool authenticates as you, using the token your browser already holds after you log in. It lives in local storage under the key flutter.jwtToken.

Fastest way (copies it without showing it):

  1. Open app.tvtime.com and log in.
  2. Open DevTools: F12 (or Ctrl+Shift+I; Cmd+Option+I on Mac).
  3. Go to the Console tab and run:
    copy(localStorage.getItem('flutter.jwtToken'))
    The token is now on your clipboard — nothing is printed to the screen.

Clicking through instead: in DevTools, open Application (Chrome/Edge) or Storage (Firefox) → Local Storage → https://app.tvtime.com, find the flutter.jwtToken row, and copy its value.

Then put it in a local .env file so it stays out of your shell history:

cp .env.example .env   # then paste the token into TVTIME_BEARER_TOKEN

Treat the token like a password — it grants access to your account. It expires when your session does, so you may need to grab a fresh one for a later run. If the tool returns InvalidJWTToken, your token is stale; repeat the steps above from a logged-in session.

Your user id is the numeric id inside that token. If you don't know it, run export with any number — it decodes the token and prints your real id.

Usage

npm install                                   # dev tooling only; no runtime deps

npm run export -- <user_id>                   # download everything
npm run analyze -- <path/to/raw-sidecar-export.json>       # print a summary
npm run build-import -- <path/to/raw-sidecar-export.json>  # normalize + validate

Exports land in out/tvtime-export/<user_id>/. Full flag reference in docs/cli.md.

build-import also checks the raw watch counts against TV Time's own stats and labels the result green (match), yellow (small/unverifiable gap), or red (large gap), so you know how much to trust the watched-episode data.

Viewer

Open viewer/index.html in a browser and load your raw-sidecar-export.json or import.json. It renders your library and stats locally — nothing is uploaded. Search, filter (series / movies / favorites), sort (most watched, recently watched, A–Z), and click any title to see how many episodes you watched and when you last watched it.

Posters need no API key: TV Time embeds public TheTVDB artwork URLs in the export, and the viewer loads them straight from TheTVDB's CDN.

TV Time export viewer

Notes

  • .env, out/, and exports are git-ignored, so you won't commit your token or data by accident.
  • By default the tool only fetches the account matching your token. It's for your own data; don't point it at anyone else's.
  • Not affiliated with TV Time / Whip Media.

Credits

The reverse engineering and the design of this tool are my own work. I used AI coding assistants (OpenAI Codex and Anthropic's Claude) to help implement it and move faster.

License

MIT. Do whatever you want with it.

About

Rescue your TV Time data before shutdown: a dependency-free CLI to export your follows, watch history, ratings, lists and favorites via your own login, plus an offline viewer.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages