Jump to content

Segment Reporting - Dashboard, bulk editing, and custom queries for your intro/credits markers


Recommended Posts

sydlexius
Posted (edited)

If you use intro detection or EmbyCredits, you've probably wondered: how many of my episodes actually have markers? Which seasons are missing credits? Did detection run on that library I just added?

Emby doesn't give you an easy way to answer those questions. Segment Reporting is a plugin that fills that gap. It gives you a dashboard view of your segment coverage, lets you browse and edit markers, and provides bulk operations so you're not fixing things one episode at a time.

 

Dashboard - see your coverage at a glance

The dashboard shows segment coverage across all your libraries with summary stats and a per-library breakdown chart. You can see exactly how many items have intros, credits, both, or neither.

dashboard-crop.thumb.png.3ffef8145746a8ed1096d4c367a2d2de.png

 

Browse and drill down

Click into any library to see per-series coverage stats, then drill into a series to see every episode laid out by season. Charts show intro and credits coverage per season so gaps jump out immediately.

library-browse.thumb.png.f86a67b1a29dc08c7e2a2584bec1f003.png

 

series-detail.thumb.png.f4862596ee96bab6e7f258ed8763cfeb.png

 

Edit timestamps inline

Click any timestamp to edit it directly in the table. No need to navigate away or open a separate editor. Changes are saved to Emby immediately.

inline-editing.thumb.png.944b98c001d9590954546505f860aa37.png

Bulk operations

Select episodes and apply operations in bulk:

  • Copy segments from one episode to others (useful when a show has a consistent intro across a season)
  • Set credits to end for selected episodes (for shows where credits run to the end of the file)
  • Bulk delete intros or credits
  • Detect credits for selected items (requires EmbyCredits)

 

Custom query builder

For anything the built-in views don't cover, there's a visual query builder with autocomplete, multi-value filters, drag-to-reorder columns, and sortable/exportable results. You can save queries for reuse. The builder generates SQL under the hood, so power users can see exactly what's running.

query-builder.thumb.png.8a4af1221c9f6f3d76af9d24c75272e0.png

 

Fields autocomplete from your actual library data:

query-autocomplete.thumb.png.577e630fd2b3b183a9f9d756fa01db3d.png

 

Query results support inline editing, row selection, bulk actions, playback links, and CSV export:

query-results.thumb.png.cc24b3d5d2af97f858b5ec75f47d3c2d.png

 

Settings

Choose from several chart color palettes (or define your own), toggle table styling, hide libraries from the dashboard, and manage the sync cache. The theme defaults to matching your Emby accent color.

 

How it works

The plugin maintains a lightweight SQLite cache of your segment data. A scheduled task syncs it daily (configurable via Emby's Scheduled Tasks). All reads come from the cache for speed; all edits write through to Emby first, then update the cache. Your Emby data is always the source of truth.

 

Installation

  1. Download the DLL from GitHub Releases
  2. Drop it in your Emby plugins folder
  3. Restart Emby
  4. Run the initial sync from Scheduled Tasks

Full documentation: User Guide | Release Notes | GitHub

 

Built on patterns from @TeamB's Playback Reporting and ChapterAPI plugins, and integrates with @yocker's EmbyCredits for credits detection. Feedback, bug reports, and feature requests welcome here or on GitHub Issues.

custom-query.png

Edited by sydlexius
Updated pitch and provided two addl. screenshots.
  • Like 2
Neminem
Posted (edited)

Just trying this beast 😁

I did run the scheduled task to sync.

When clicking the plugin I get this error.

And it looks like its running behind the plugin page.

Using Edge, also tried in Firefox.

image.thumb.png.1542039d325bf4decbb9f1bf808f44f8.png

Logs rotated with Debugging.

embyserver (4).txt

Guess there is something missing.

*** Error Report ***
Version: 4.9.3.0
Command line: /system/EmbyServer.dll -programdata /config -ffdetect /bin/ffdetect -ffmpeg /bin/ffmpeg -ffprobe /bin/ffprobe -restartexitcode 3
Operating system: Linux version 6.12.54-Unraid (root@Develop) (gcc (GCC) 15.2.0, GNU ld version 2.45-slack151) #1 SMP PREEMPT_DYNAMIC Tue Oct 21 15:58:46 PDT 2025
OS/Process: x64/x64
Framework: .NET 8.0.22
Runtime: system/System.Private.CoreLib.dll
Processor count: 6
Data path: /config
Application path: /system
System.IO.FileNotFoundException: System.IO.FileNotFoundException: File not found: segment_dashboard.v1_0_1_2.v1_0_1_2.js
File name: 'segment_dashboard.v1_0_1_2.v1_0_1_2.js'

at Emby.Web.Api.WebAppService.Get(GetDashboardConfigurationPage request)
at Emby.Server.Implementations.Services.ServiceHandler.ProcessRequestAsync(HttpListenerHost httpHost, IServerApplicationHost appHost, IRequest httpReq, IResponse httpRes, IStreamHelper streamHelper, RestPath restPath, String responseContentType, CancellationToken cancellationToken)
at Emby.Server.Implementations.HttpServer.HttpListenerHost.RequestHandler(IRequest httpReq, RestPath restPath, String urlString, String localPath, String contentTypeInPath, CancellationToken cancellationToken)
Source: Emby.Web
TargetSite: System.Threading.Tasks.Task`1[System.Object] Get(Emby.Web.Api.GetDashboardConfigurationPage)

Edited by Neminem
  • Thanks 1
sydlexius
Posted
15 hours ago, Neminem said:

Just trying this beast 😁

I did run the scheduled task to sync.

When clicking the plugin I get this error.

And it looks like its running behind the plugin page.

Using Edge, also tried in Firefox.

image.thumb.png.1542039d325bf4decbb9f1bf808f44f8.png

Logs rotated with Debugging.

embyserver (4).txt 37.48 kB · 0 downloads

 

Okay, I fed the log to Claude and it seems to have identified and "fixed" the root cause.  Please download this release and let me know if that fixes it for you. 

Neminem
Posted
10 hours ago, sydlexius said:

Please download this release and let me know if that fixes it for you. 

That fixed 👍 

Thank you 😁

  • Like 1
sydlexius
Posted

I've added a couple of Quality-of-Life improvements since the last post:

https://github.com/sydlexius/Segment_Reporting/releases/tag/v1.0.3.0

v1.0.3.0 - Per-Library Visibility Controls

Added

  • Exclude individual libraries from the dashboard (#52) — The Library Visibility section on the Settings page now shows a checkbox for every library in your server. Uncheck any library to hide it from the dashboard charts and tables. This works alongside the existing "Hide Movie libraries" and "Hide Mixed libraries" options, giving full control over which libraries appear in your reports.

v1.0.2.1 - Fix Missing Intros/Credits Filter for Series

Fixed

  • "Missing Intros" and "Missing Credits" filters now show the full series — Previously, filtering by missing intros or credits on the Library page only counted episodes that lacked the marker, producing incorrect totals and coverage percentages. Now any series with at least one episode missing intros (or credits) is included in the results with accurate stats for the entire series.
sydlexius
Posted

The User Guide is now live.  If it makes sense to clean up the initial post, then I'll oblige.

  • Like 1
sydlexius
Posted

New release is out (minor changes to the Actions menu UX):

https://github.com/sydlexius/Segment_Reporting/releases/tag/v1.2.0.4

Improved

  • Unified Actions dropdown menu (#58) — Each episode and query result row now has a single "Actions ▼" button that opens a clean dropdown menu with Edit, Copy, Delete, and Set Credits to End options, replacing the previous row of individual buttons.
  • Type-selective Copy and Delete (#58) — The Copy and Delete menu items now expand into submenus letting you choose Intros, Credits, or Both, so you can copy or delete just the segment type you need.
  • Shared dropdown menu infrastructure (#58) — The menu system is built on reusable helpers in the shared library (theme-aware colors, submenu positioning, click-outside dismissal), keeping the code consistent across the Series and Custom Query pages.
  • Like 1
eltioares
Posted (edited)
 
 
 
 
 
 
 
 
84
 
¡Genial! Thx ^^
Edited by eltioares
Posted

New release is up with some housekeeping, re-theming, and some normalization around the "actions" button/submenu.

https://github.com/sydlexius/Segment_Reporting/releases/tag/v1.3.0.0

Release notes:

Improved

  • Theme-aware chart palettes (#77) - All five built-in color palettes now adapt to your Emby theme automatically. Light themes get darker, high-contrast colors while dark themes get vibrant ones. The old palettes (Ocean Breeze, Sunshine Blue Dream, etc.) are replaced by five new palettes named after their accent color: Green (Default), Blue, Red, Pink, and Purple. Each palette was designed to pass WCAG AA contrast requirements on both light and dark backgrounds.
  • Actions dropdown menus everywhere (#63, #69, #78) - Series rows, movie rows, and season headers throughout the Library and Series pages now use a single "Actions" dropdown that consolidates Edit, Delete (Intros/Credits/Both), Set Credits to End, Apply Source, and EmbyCredits detection into one tidy menu. Menu items are greyed out when the item has no markers of that type. The previous standalone bulk buttons on the season header have been replaced by the dropdown.
  • Separate Intro % and Credits % on the Dashboard (#61) - The library table now shows independent percentage columns for intro and credits coverage instead of a single combined value, making it clear at a glance which segment type needs attention.
  • Shared inline editor (#67) - All three editing pages (Series, Library, Custom Query) now use a single inline editing component from the shared helpers, removing about 360 lines of duplicated code while ensuring consistent save/cancel behavior everywhere.
  • Shared bulk operation helpers (#68) - Bulk delete, set-credits-to-end, and detect-credits logic extracted into reusable server-side helpers with shared ID parsing, count validation, and error handling.
  • Auto-reload on plugin update (#64) - The web UI now detects when the plugin DLL has been updated and prompts to reload, preventing stale cached JavaScript from running against a newer backend.

Fixed

  • Action buttons no longer fire twice (#70) - All action buttons across every page are now guarded against double-submission during async operations.
  • Database deadlock prevention (#66) - Reorganized internal lock ordering in SegmentRepository so Dispose(), RemoveOrphanedRows(), and DeleteAllData() can no longer deadlock under concurrent access.
  • Hardened custom query endpoint (#64) - Added defense-in-depth keyword rejection (semicolons, ATTACH, load_extension) and a PRAGMA whitelist limiting queries to safe read-only pragmas.
  • Marker type whitelist validation (#65) - Column name lookups now reject unexpected marker type strings, preventing arbitrary values from reaching SQL queries.
  • Movie delete menu now theme-aware (#69) - Replaced hardcoded dark-theme colors with the shared menu helper infrastructure so the dropdown adapts to light Emby themes.
  • HTML escaping for season labels (#71) - Season names are now escaped before innerHTML insertion.
  • Memory leak in CSV export (#75) - Blob URLs are now revoked after CSV download completes.
  • Database filename centralized (#72) - Removed duplicate filename constants across API and task files.
  • First-run guard for cleanup task (#73) - The weekly cleanup task no longer errors if the database file hasn't been created yet.
  • Dead code removal (#74) - Removed unused navigation function and fixed copyright year.
  • Like 1
Posted
4 hours ago, sydlexius said:

New release is up with some housekeeping, re-theming, and some normalization around the "actions" button/submenu.

https://github.com/sydlexius/Segment_Reporting/releases/tag/v1.3.0.0

Release notes:

Improved

  • Theme-aware chart palettes (#77) - All five built-in color palettes now adapt to your Emby theme automatically. Light themes get darker, high-contrast colors while dark themes get vibrant ones. The old palettes (Ocean Breeze, Sunshine Blue Dream, etc.) are replaced by five new palettes named after their accent color: Green (Default), Blue, Red, Pink, and Purple. Each palette was designed to pass WCAG AA contrast requirements on both light and dark backgrounds.
  • Actions dropdown menus everywhere (#63, #69, #78) - Series rows, movie rows, and season headers throughout the Library and Series pages now use a single "Actions" dropdown that consolidates Edit, Delete (Intros/Credits/Both), Set Credits to End, Apply Source, and EmbyCredits detection into one tidy menu. Menu items are greyed out when the item has no markers of that type. The previous standalone bulk buttons on the season header have been replaced by the dropdown.
  • Separate Intro % and Credits % on the Dashboard (#61) - The library table now shows independent percentage columns for intro and credits coverage instead of a single combined value, making it clear at a glance which segment type needs attention.
  • Shared inline editor (#67) - All three editing pages (Series, Library, Custom Query) now use a single inline editing component from the shared helpers, removing about 360 lines of duplicated code while ensuring consistent save/cancel behavior everywhere.
  • Shared bulk operation helpers (#68) - Bulk delete, set-credits-to-end, and detect-credits logic extracted into reusable server-side helpers with shared ID parsing, count validation, and error handling.
  • Auto-reload on plugin update (#64) - The web UI now detects when the plugin DLL has been updated and prompts to reload, preventing stale cached JavaScript from running against a newer backend.

Fixed

  • Action buttons no longer fire twice (#70) - All action buttons across every page are now guarded against double-submission during async operations.
  • Database deadlock prevention (#66) - Reorganized internal lock ordering in SegmentRepository so Dispose(), RemoveOrphanedRows(), and DeleteAllData() can no longer deadlock under concurrent access.
  • Hardened custom query endpoint (#64) - Added defense-in-depth keyword rejection (semicolons, ATTACH, load_extension) and a PRAGMA whitelist limiting queries to safe read-only pragmas.
  • Marker type whitelist validation (#65) - Column name lookups now reject unexpected marker type strings, preventing arbitrary values from reaching SQL queries.
  • Movie delete menu now theme-aware (#69) - Replaced hardcoded dark-theme colors with the shared menu helper infrastructure so the dropdown adapts to light Emby themes.
  • HTML escaping for season labels (#71) - Season names are now escaped before innerHTML insertion.
  • Memory leak in CSV export (#75) - Blob URLs are now revoked after CSV download completes.
  • Database filename centralized (#72) - Removed duplicate filename constants across API and task files.
  • First-run guard for cleanup task (#73) - The weekly cleanup task no longer errors if the database file hasn't been created yet.
  • Dead code removal (#74) - Removed unused navigation function and fixed copyright year.

I'm planning to release the new version of Embycredits tonight if you want to include the API

  • Thanks 1

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...