LeoVasanko 2a39e1f0ea Fix scanner rescan bugs and wasted work
Bugs fixed:
- Partial rescans no longer replace whole index entries: Upsert events now
  carry the scanned torrent paths and IndexStore merges partial rebuilds,
  so touching one season no longer drops the others from listings.
- Deleted torrents are now detected: discovery reports the full candidate
  set via a new Sync event after each completed scan, and the store prunes
  file entries/episodes/seasons/items whose torrents vanished.
- Seen mtimes are committed only after a scan completes successfully, so
  cancelled/failed scans retry their items.
- Showreel worker no longer rebroadcasts stale whole items; it sends narrow
  MovieShowreel/EpisodeReel events that update only reel fields.
- Permanently failing reel generations (e.g. DoVi/libplacebo on GPU-less
  machines) and short-video re-queueing are no longer retried every scan:
  reel outcomes persist in reel-state.json with exponential backoff.

Optimizations:
- Persist scan state (scan-state.json) and ffmpeg probe results
  (probe-cache.json, keyed by mtime+size, failures included) under
  .mediahive/, written only when changed. A warm restart over an unchanged
  library drops from ~57 s + 467 queued reel tasks to ~0.2 s with an empty
  queue (measured on a 163-item root).
- Bounded parallelism (semaphores + gather) for cast-profile downloads,
  TMDb title lookups, and season-detail fetches.
- Incremental TMDb-id index bookkeeping instead of rebuilding per upsert;
  removed dead trigger_scan.

See docs/scanning-review.md for the full findings/fixes/measurements report.
2026-09-04 00:00:53 +00:00
2026-05-13 00:37:02 +00:00
2026-06-03 00:41:52 +00:00
2026-05-25 02:37:51 +00:00

MediaHive

MediaHive

Netflix style browsing of your local media archive. Supports keyboard, mouse and gamepad navigation. Uses your favorite movie player.

Windows and Mac portable ZIP downloads

Getting Started

  • Windows and macOS: Download the portable ZIP from the releases page, extract it anywhere, and run MediaHive.
  • Linux and other platforms: Install UV and run directly with uvx --from mediahive[gui] mediahive.

What It Does

  • Scans your chosen media folder for all movies and series that can be found
  • Produces preview video clips and downloads metadata
  • Search on names and other metadata, not just titles
  • Hand off playback to your preferred system player

Windows and macOS builds are currently portable-only (no installer). On first startup, the app asks for your media folder, which you can later change using the in-app folder icon.

Note that .mediahive folder is created in your media folder to hold all the metadata and preview clips, avoiding the lengthy processing that you will see on initial startup.

Controls

MediaHive is designed to work with a mouse, keyboard, or gamepad.

Input Controls
Mouse Click posters, rows, search, play, and folder actions directly.
Keyboard Arrow keys move focus, Enter activates the focused item, Escape goes back, and / jumps to search.
Gamepad D-pad or left stick moves focus, A selects or plays, and B goes back. RB/LB browses adjacent items, and the Search bar has an OSD keyboard. Player controls during playback.

MediaHive opens files with the OS default player, but one specific player may be configured via settings. You are of course free to use any player instead.

  • A toggles play and pause.
  • B closes the player.
  • Y toggles mute.
  • D-pad up and down change volume.
  • D-pad left and right seek during playback, or step frames while paused.

Background

This project started as a personal project that I have used for browsing my warez for some time now. It is still in early development, but I have just now made it public for a wider audience.

S
Description
No description provided
Readme
5.1 MiB
2026-09-24 00:37:25 +00:00
Languages
Python 50.3%
Vue 33.1%
TypeScript 14.7%
CSS 1.7%
JavaScript 0.1%