feat: batch processing, keyword prefix, Plex webhooks#1
Merged
ttlequals0 merged 28 commits intomainfrom Apr 10, 2026
Merged
Conversation
feature: Enhanced Labelarr with Radarr/Sonarr Integration and Keyword Normalization
- Integrate Docker publishing directly into release workflow - Remove separate docker-publish.yml workflow to eliminate conflicts - Ensure exact version matching between GitHub releases and GHCR packages - Publish both versioned tag (e.g., v1.1.4) and latest tag simultaneously - This resolves the issue where packages weren't published after releases
fix: consolidate release and Docker publishing workflows
fix readme badges
add mode to export specific file labels
…for-txt bug: only create directories on txt export
when DATA_DIR not set
…ntainer bug: fix ephemeral container state when DATA_DIR is not set
bug: fix the label export for skipped labels
add mac and windows builds
- Pinned Alpine to 3.21 instead of latest (more stable) - Removed apk update && apk upgrade (unnecessary and flaky under QEMU) - Removed busybox-extras (not needed) - Simplified the RUN command (removed debug echo statements)
Added step to set up QEMU in the release workflow.
…uild-and-avoid-errors-due-to-flaky-network Fixing build actions with flaky errors under QEMU
- Batch processing (BATCH_SIZE, BATCH_DELAY, ITEM_DELAY) to prevent API flooding on large libraries - Keyword prefix (KEYWORD_PREFIX) to separate TMDb keywords from real genres in Plex dropdown - Plex webhook server (WEBHOOK_ENABLED, WEBHOOK_PORT, WEBHOOK_DEBOUNCE) for real-time processing on media add events - Remove all emoji from Go source, replace with bracketed tags - Rewrite README with table of contents and accurate feature docs - Clean up CHANGELOG to remove AI writing patterns - Refactor: Clients struct, keyword cache, batch helpers, forEachLibrary, graceful shutdown, concurrency safety
Keep feature branch versions for all three conflicted files (CHANGELOG.md, README.md, processor.go). The origin/main content was the old pre-cleanup version that our branch replaces.
- Remove remaining emoji and unicode arrows from processor.go and tmdb/client.go - Expand webhook payload struct to match Plex spec - Use LibrarySectionType for correct media type resolution - Note Plex Pass requirement for webhooks in README
- Cache GetAllMovies/GetAllSeries results per client instance to eliminate thousands of redundant API calls per processing cycle - Add bidirectional title matching (either string contains the other) - Add CleanTitle matching (strips all punctuation for fuzzy matching) Fixes movies like "(500) Days of Summer" where Plex strips parens - Clear Radarr/Sonarr caches alongside keyword cache each cycle - Apply same improvements to both Radarr and Sonarr clients
Replace globe and timer emojis in verbose Plex API logging with bracketed tags [API] and [TIMING].
- Replace [ERROR] with [SKIP] for expected lookup misses (not found in Radarr/Sonarr, no TMDb ID in path). Keep [ERROR] only for real API/fetch failures. - Collapse duplicate file path iteration: check both API path match and TMDb ID regex in a single pass instead of listing paths twice. - Cap file path logging at 3 paths with "and N more" summary. - Consolidate episode fetching in TV show extraction to a single call instead of fetching twice (once for Sonarr, again for regex). - Shorter, more scannable log format for lookup results.
…ions Add build/test/deploy commands (Docker + Portainer webhook), architecture overview, coding conventions, key patterns, and gotchas.
- Create internal/version/version.go as single source of truth - Log version at startup before config loading - Tag Docker images with version (1.2.0 + latest) - Update CHANGELOG with 1.2.0 release date
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Docker Image
ttlequals0/labelarr:latestpushed to Docker Hub.Test plan