Add anime/kids content misclassification detection for Radarr and Sonarr

Overseerr lets users request content into the wrong root folder; these
new report-only scans classify every tracked movie/series (anime, kids,
regular) from metadata alone and flag mismatches against the actual
root folder, in both directions. Rules were validated against real
library data before being adopted — see the header comments in each
script and the master.conf notes above the curated lists.
This commit is contained in:
Gmer4Lfe
2026-07-17 11:49:23 -04:00
parent 6dc5c91f60
commit 9dbcdc0bd7
5 changed files with 521 additions and 0 deletions
+4
View File
@@ -436,6 +436,8 @@
HOSTN_SONARR_URL="http://localhost:8989"
HOSTN_SONARR_API_KEY=""
HOSTN_SONARR_TV_ROOT="/mnt/user/Tv_Shows"
HOSTN_SONARR_KIDS_ROOT="" # rootFolderPath literal, as reported by Sonarr API — leave blank if no dedicated kids root
HOSTN_SONARR_ANIME_ROOT="" # rootFolderPath literal, as reported by Sonarr API — leave blank if no dedicated anime root
declare -A HOSTN_SONARR_PATH_MAP=(
# ["/tv"]="/mnt/user/Tv_Shows"
@@ -446,6 +448,8 @@
HOSTN_RADARR_API_KEY=""
HOSTN_TMDB_API_KEY=""
HOSTN_RADARR_MOVIES_ROOT="/mnt/user/Movies"
HOSTN_RADARR_KIDS_ROOT="" # rootFolderPath literal, as reported by Radarr API — leave blank if no dedicated kids root
HOSTN_RADARR_ANIME_ROOT="" # rootFolderPath literal, as reported by Radarr API — leave blank if no dedicated anime root
declare -A HOSTN_RADARR_PATH_MAP=(
# ["/movies"]="/mnt/user/Movies"
+49
View File
@@ -1216,6 +1216,55 @@
RADARR_DROPPED_ADD_EXCLUSION=true # add removed movies to import exclusion list
SONARR_DROPPED_ADD_EXCLUSION=true # add removed series to import exclusion list
# ━━━ Arr Content Classification (radarr/sonarr_classification_scan.sh) ━━━
#
# Curated lists validated against real library data 2026-07-17 — every entry here was
# checked against the actual signal ratio (kids%/anime% of titles under that studio/network)
# before being added, specifically to avoid the false-positive traps found this session:
# general umbrella studios (Walt Disney Pictures, Paramount Pictures), general streaming
# platforms (Netflix, Disney+, Hulu), and networks that carry mixed content under one name
# (The WB, UPN) are deliberately excluded even though they produce plenty of kids/anime
# content — they also produce just as much non-kids/non-anime content under the same name.
#
# Anime always takes priority over kids when both signals could apply (explicit user rule).
#
RADARR_ANIME_STUDIOS=(
"Studio Ghibli" "ufotable" "Toei Company" "Toei Animation" "MAPPA" "Madhouse"
"Production I.G" "Wit Studio" "Bones" "Trigger" "Kyoto Animation" "CloverWorks"
"A-1 Pictures" "Sunrise" "J.C.Staff" "Shaft" "Studio Pierrot" "P.A. Works"
"David Production" "OLM Inc."
)
RADARR_KIDS_STUDIOS=(
"DreamWorks Animation" "Pixar" "Disney Television Animation"
"Walt Disney Animation Studios" "DisneyToon Studios" "Walt Disney Productions"
"Walt Disney Feature Animation" "Warner Bros. Animation" "Illumination"
"Sony Pictures Animation" "Blue Sky Studios" "Mattel" "Rankin/Bass Productions"
"Mainframe Entertainment" "DreamWorks Animation Television" "ZAG Entertainment"
"Paramount Animation" "Pacific Data Images" "Cinesite Animation"
"Cartoon Network Studios" "Nickelodeon Animation Studio" "Nelvana"
"Aardman Animations"
)
# Radarr's TMDb-vote/imdbId combo reliably flags bad metadata matches (proven live —
# caught 5 genuine junk entries: 2 fake X-Men "Wolverine" titles, Silent Hill: No Escape,
# Silent Hill 4: The Room, The Purge: Behind the Series — all hasFile=false, no imdbId,
# under this vote count). Do NOT reuse this threshold/approach for Sonarr — TheTVDB's
# ratings data is far sparser than TMDb's even for completely legitimate shows (confirmed
# live: "The Pussycat Dolls Present", a real 2007 MTV show, has ratings.votes=0), so the
# same heuristic there would flag real content for removal.
RADARR_JUNK_MIN_VOTES=15
SONARR_ANIME_NETWORKS=(
"Tokyo MX" "AT-X" "TV Tokyo" "Fuji TV" "Nippon TV" "TBS (JP)" "MBS" "TV Asahi"
"WOWOW" "NHK" "Animax" "tvk" "Teletama" "Kansai TV" "ABC (JP)"
)
SONARR_KIDS_NETWORKS=(
"Cartoon Network" "Cartoon Network (CA)" "Cartoon Network (Canada)" "Nickelodeon"
"Nick Jr." "Nicktoons" "Disney Channel" "Disney Jr." "Disney XD" "Toon Disney"
"PBS" "PBS KIDS" "CBeebies" "CBBC" "YTV" "TVOkids" "Discovery Kids"
"Discovery Family" "Boomerang" "ABC Kids" "Teletoon" "Télétoon" "Milkshake!"
"Tiny Pop" "Sprout" "Universal Kids" "BabyTV"
)
# ━━━ Arr Failed/Stalled Recovery ━━━
# Auto blocklist + re-search failed imports and stalled downloads.
# Runs every 6 hours — schedule: 0 */6 * * *