Maintainerr v3 renamed `plexId` (number) to `mediaServerId` (string)
in their API response. The overlay context builder compared against the
old field, silently failing to match any media items so daysUntilAction
never populated.
Read `mediaServerId` with fallback to `plexId`, compare as strings.
Supports both Maintainerr v2 and v3.
Fixes#501
Co-authored-by: bitr8 <bitr8@users.noreply.github.com>
Plex returns seasons as Children.Directory (not Children.Metadata)
when using ?includeChildren=1. All placeholder detection code only
checked Children.Metadata, so isPlaceholderItem() always returned
false for TV shows — skipping title fixes and triggering false
cleanup of valid placeholders.
Added Metadata || Directory fallback across all detection paths,
type casts, and getChildrenMetadata() API helper.
Fixes#414
Co-authored-by: bitr8 <bitr8@users.noreply.github.com>
When an item isn't yet visible in Plex, indexOf returns -1 and
splice(-1, 1) removes the last element of the tracking array,
corrupting all subsequent move decisions.
Co-authored-by: bitr8 <bitr8@users.noreply.github.com>
lookupByMal() iterates all ~25k anime ID rows to find a MAL ID match.
MAL sources can fetch thousands of items, each calling lookupByMal(),
so preview requests time out before returning results.
Added a _byMal Map index built during loadAnimeIds(), matching the
existing _byAniDB pattern. Lookups are now O(1) instead of O(n).
Fixes#480
Co-authored-by: bitr8 <bitr8@users.noreply.github.com>
Collections require the /library/sections/{id}/all?type=18 endpoint for
metadata updates, not /library/metadata/{ratingKey}. This fixes dynamic
cycle titles (DYNAMIC_CYCLE_TITLE) not updating in Plex after first sync.
- Add libraryKey parameter to updateCollectionTitle()
- Use correct Plex API endpoint for collection metadata updates
- Lock title field to prevent Plex overwriting
- Propagate errors instead of swallowing them
Fixes#432
Co-authored-by: bitr8 <bitr8@users.noreply.github.com>
searchMulti returns all media types without known_for_department,
causing wrong person selection when names collide (e.g., actor
"Ingmar Bergman" chosen over the director). Switch to searchPerson
and rank results by department match, profile image, then popularity.
Relates to #443
Co-authored-by: bitr8 <bitr8@users.noreply.github.com>
Collections can now be created using the TMDB Discover Movie/TV endpoint, allowing for complex filters to create custom collections. Includes custom builder with dropdowns and search fields.
---------
Co-authored-by: Tom Wheeler <thomas.wheeler.tcw@gmail.com>
previously only missing items could have tags added, a new option in radarr/sonarr settings allows
the addition of tags to existing media, using the existing tags used in missing items. also extracts
and refactors tagging functions to remove duplication.
fix#248
ImdbRatingsAPI and FlixPatrolAPI were passing headers and nodeCache as the
second argument (params) instead of the third argument (options). This meant
nodeCache was being treated as URL query params rather than cache configuration,
so responses were never cached.
Fixed by passing empty object for params and moving options to third argument.
Co-authored-by: bitr8 <bitr8@users.noreply.github.com>
Adds support for IMDb's Top 250 English-language movies list as a new
collection source. The list is available at /chart/top-english-movies/.
- Added TOP_250_ENGLISH_MOVIES enum value and URL mapping
- Added 'top_250_english' subtype to collection sources
- Added UI options in CollectionTypeSection and MultiSourceConfigSection
- Added title presets for the new collection type
- Auto-sets mediaType to 'movie' when selecting this subtype
Closesagregarr/agregarr#330
Co-authored-by: bitr8 <bitr8@users.noreply.github.com>
When placeholders are cleaned up because real content arrived, Plex
wasn't notified and ghost entries remained in the library. This adds:
- New emptyTrash() method to PlexAPI
- Fire-and-forget scan + empty trash after placeholder cleanup
- New autoEmptyTrash setting (default: true) with UI toggle
- Setting in Plex settings page with "advanced" badge
The scan runs in the background so it doesn't block the sync process.
Co-authored-by: bitr8 <bitr8@users.noreply.github.com>
adds new source 'Plex Library' with Auto Director and Auto Actor collection sub-types, option to configure minimum items. utilises smart collections. adds new poster template. adds separators option.
---------
Co-authored-by: Tom Wheeler <thomas.wheeler.tcw@gmail.com>
plan for future expansion (hence location), likely including locale for i18n translation, and TMDB
metadata language with fallback (where possible)
re #144
adds migrations for collection and item metadata tables. posters (items + collections), wallpapers,
and themes now have a hash calculated based on their variables. adds check before generating poster,
comparing metadata slug to stored slug from previous sync, if both hash and slug are equal, then
generation/upload is skipped. will significantly reduce bloat from repeated uploads, and reduces
poster overlays re-run time significantly (e.g. 45 mins to 18 mins)
re #144
background/wallpaper can now be added to the config form which will be uploaded to plex during sync,
alongside file theme (music) for collections, and text summary
fix#63