Skip to content

Repository files navigation

TV Time Rescue

Recover your TV Time movies, series and watch history from a local iPhone or iPad backup, and browse them again on a simple web page with posters.

TV Time shut down in July 2026 and a lot of people lost access to years of tracking. If the app is still installed on your phone with its data, there is a good chance you can get most of it back. This tool reads a normal iTunes/Finder/iMazing backup of your device and pulls the TV Time data out of it.

Polish version of this guide: README.pl.md

Note: this is a small project put together quickly with the help of AI to help people rescue their TV Time data after the shutdown. It is not affiliated with TV Time or its owners. It only reads your backup, it never changes your phone or the backup. Use it on data you own.

Can I still get my data back?

Read this first, because timing matters.

  • If TV Time is STILL installed on your phone and you have NOT deleted it, reset the phone, or reinstalled the app, your data is very likely still on the device. Make a backup now and this tool can probably recover most or all of it.
  • If you already have a computer backup of the phone from before the app was removed, you can use that backup directly.
  • If you deleted the app, wiped the phone, or restored it, the local data is probably gone and this tool cannot help. There is nothing to read.

The data comes from the app's local cache, so it reflects what the app had last loaded (your library, series progress, watch history). It is usually complete or close to complete, but it is not a guaranteed full account export.

What you get

  • TVTime.html - one file you open in your browser to look through everything: posters, titles, descriptions, genres, watched dates, and episode progress for every series. Has search, sorting, filters (Movies, Series, Watchlist, Favorites, Archived), and an Episodes tab that lists the individual episodes with a watched / not watched marker where the backup kept them.
  • movies.csv, series.csv, watch_history.csv, episodes.csv - spreadsheets you can open in Excel or import somewhere else (for example Trakt or Serializd).
  • TVTime-Recovered-Data.md - a short readable report.
  • exports/ - ready-to-import files for Trakt, Letterboxd and Simkl, so you can rebuild your history on a service that is still running (see below).
  • raw_files/ - the actual app files taken from the backup (the database and preferences), in case you want them.

What you need

  • Your iPhone or iPad with TV Time still installed, OR an existing backup of it.
  • A computer (Windows, Mac, or Linux).
  • A free tool to make the backup: Finder (Mac), Apple Devices or iTunes (Windows), or iMazing (Windows and Mac).
  • About 15 minutes.

Making the backup UNENCRYPTED is the easy path and needs no password. Encrypted backups also work, you just type the backup password when the tool asks. See "Make a backup" below.

Quick start

There are two ways to run it. Pick one.

Option A: download the ready-made program (no Python needed)

  1. Go to the Releases page and download the file for your system:
    • Windows: tvtime-rescue-windows.exe
    • Mac: tvtime-rescue-macos
    • Linux: tvtime-rescue-linux
  2. Make a backup of your device (see below).
  3. Double-click the program and follow the questions on screen. It will find your backup, ask where to save, do the work, and tell you which file to open.

On Mac the first time, right-click the file and choose Open, then confirm, because it is not signed by Apple. On Linux, run chmod +x tvtime-rescue-linux first.

Option B: run from the Python source

You need Python 3.9 or newer from python.org.

git clone https://github.com/Marak123/tvtime-rescue.git
cd tvtime-rescue
pip install -r requirements.txt
python run.py

python run.py with no options walks you through everything. If you prefer to type the paths yourself:

python run.py --backup "PATH_TO_BACKUP_FOLDER" --output "PATH_TO_RESULTS_FOLDER"

The double-click launchers in the scripts/ folder do the same thing: START-HERE-Windows.bat, START-HERE-Mac.command, START-HERE-Linux.sh.

Make a backup (step by step)

Full guides with screenshots-style steps:

Short version:

  1. Connect the phone by cable and trust the computer.
  2. Choose "back up to this computer" (not iCloud).
  3. Recommended: leave "encrypt local backup" turned OFF. This makes recovery simplest.
  4. Start the backup and wait for it to finish completely.
  5. Point this tool at the backup folder (it contains a file called Manifest.db). The tool can also find it for you automatically in the standard locations.

If your backup is encrypted, that is fine too. The tool detects it and asks for the backup password. For that case you also need the decryption support installed: pip install iphone-backup-decrypt (it is already in requirements.txt, and the downloaded program has it built in).

Optional: fuller data from TheTVDB (free API key)

The backup contains your library, your real watched status, and per-series counts, but TV Time did not store series descriptions or the full list of episodes for each show. If you add a free TheTVDB API key, the tool fills those gaps: it fetches series descriptions and genres and the complete season and episode list for every show, then overlays the real watched status from your backup on top. Episodes you actually watched stay marked as watched; episodes the backup never recorded a status for are shown as unknown rather than guessed.

This is completely optional. Without a key everything still works, you just get whatever the backup itself contained.

How to set it up:

  1. Get a free v4 API key at thetvdb.com/api-information.
  2. Copy the file .env.example to a file named .env in the folder you run the tool from.
  3. Put your key in it: TVDB_API_KEY=your_key_here
  4. Run the tool as usual. It will use the key automatically.

You can instead pass it on the command line with --tvdb-key YOUR_KEY, or set a TVDB_API_KEY environment variable. Use --no-tvdb to skip it even if a key is present. Responses are cached in a tvdb_cache folder inside your output, so running again is fast and does not re-download. Never commit your .env or share your key.

Export to Trakt, Letterboxd and Simkl

Every recovery also writes import files into an exports folder, one subfolder per platform, each with its own short README. You can rebuild them any time from an existing recovery without touching the backup again:

python run.py export --input "PATH_TO_RECOVERED_FOLDER"
  • Letterboxd (films only): a diary CSV and a watchlist CSV.
  • Simkl (movies and series): one CSV in Simkl's format. This is the best target for TV, because Simkl uses the same count-based episode model TV Time did, so each show gets a status and a last-episode-watched.
  • Trakt (movies, series, episodes): a sync-API JSON plus per-list CSV files.
  • IMDb (films): ratings and watchlist CSVs in IMDb's layout, which also work as a universal "IMDb CSV" import source for the other services.
  • Universal JSON: one clean, documented JSON of everything, for building your own importer.

Movies transfer cleanly (IMDb id, watched date, rating). For series, only Simkl receives full progress; Trakt gets your shows on the watchlist plus the specific episodes the backup recorded. Full details and per-platform steps are in docs/exporting.md.

Where backups live (if you want to find the folder yourself)

  • Windows (Apple Devices / iTunes): %APPDATA%\Apple Computer\MobileSync\Backup or %USERPROFILE%\Apple\MobileSync\Backup
  • Mac (Finder): ~/Library/Application Support/MobileSync/Backup
  • iMazing: set your own folder when backing up, or use iMazing's "reveal in Finder/Explorer" on the backup.

Each backup is a folder named with a long device id. The right folder is the one that contains Manifest.db and Info.plist.

Privacy

Everything runs on your own computer. Nothing is uploaded. The results contain your personal viewing history, so keep them to yourself. Do not commit the raw_files/ folder, the CSVs, or profile.json to a public place. The web page loads poster images from thetvdb.com, which means your browser fetches those images over the internet the first time you open it; the page itself stays on your machine.

How it works (short version)

TV Time is a Flutter app. It stores a local cache of the server responses in a small SQLite database called DioCache.db (Dio is the HTTP client it uses). Those responses are plain JSON and include your library, your per-series episode progress, and your watch history. The tool copies DioCache.db out of the backup, reads that JSON, and turns it into spreadsheets and a web page. For unencrypted backups it reads the files directly; for encrypted backups it uses the backup password to decrypt them.

Project layout

The code is split into three self-contained tools under tvtime_rescue:

  • extract/ - reads the backup, parses DioCache.db, and optionally enriches from TheTVDB. Produces library.json and the CSVs.
  • viewer/ - turns library.json into the single-file HTML page.
  • exporters/ - converts library.json into import files for other platforms (letterboxd.py, simkl.py, trakt.py).

They talk to each other only through library.json, so the viewer and the exporters run on their own:

python run.py recover   # read a backup, build everything (this is the default)
python run.py export     --input RECOVERED_FOLDER   # rebuild the import files
python run.py site       --input RECOVERED_FOLDER   # rebuild the HTML page

Build the program yourself

If you would rather build the standalone executable instead of downloading it:

pip install -r requirements.txt pyinstaller
python scripts/build_exe.py

The file appears in dist/. You can only build for the system you are on (build the Windows exe on Windows, and so on). The GitHub Actions workflow in this repo builds all three automatically when a release tag is pushed.

Limitations

  • iOS and iPadOS only for now. Android stores this data differently and is not supported yet.
  • The data is from the app cache, so very recent changes that never loaded might be missing. Numbers are usually complete or close to it.
  • TV Time did not keep series descriptions in the cache. Without a TheTVDB key, series show a poster, title and episode progress, while movies also have full descriptions. Add a key (see above) to fill in series descriptions and genres.
  • Per-episode watched/not-watched detail from the backup alone is only partial. TV Time stored the total watched and aired count for every series, but it kept individual episodes only around your current position (the up-next queue and recently watched). With a TheTVDB key the tool pulls the full episode list for each show and overlays your real watched status on it, so you can browse every season and episode; episodes the backup had no status for are shown as unknown rather than guessed.
  • The recovered data is a snapshot for your own records. This is not a way to restore data back into TV Time.

Credits

Built quickly with the help of AI to help the community after the TV Time shutdown. Based on the well-understood structure of iOS backups and the app's local cache. Uses iphone-backup-decrypt for encrypted backups. Not affiliated with TV Time. All trademarks belong to their owners.

License

MIT. See LICENSE.

About

Recover your TV Time movies, series and watch history from a local iPhone or iPad backup, and browse them again on a simple web page with posters.

Topics

Resources

Stars

Watchers

Forks

Releases

Used by

Contributors

Languages