[PR #8526] Overhaul content rating handling #11742

Closed
opened 2026-02-07 06:43:46 +03:00 by OVERLORD · 0 comments
Owner

Original Pull Request: https://github.com/jellyfin/jellyfin/pull/8526

State: closed
Merged: Yes


How content ratings are currently handled is a bit ominous and apparently incorrect (see #7637)

Changes
Align the country rating systems with:

Apply the following schema to all country rating systems:

null - Unrated Content (need to be explicitly excluded via user settings)
0 - 0+, Informational and Educational Content
1 - 1+
2 - 2+
3 - 3+
4 - 4+
5 - 5+
6 - 6+
7 - 7+
8 - 8+
9 - 9+
10 - 10+
11 - 11+
12 - 12+ 
13 - 13+
14 - 14+
15 - 15+
16 - 16+
17 - 17+
18 - 18+
1000 - Explicit Content
1001 - Prohibited/Not Approved/Banned Content

Furthermore another dummy content rating system was added with fallback values and arbitrary strings which take precedence over all others when matching against all available rating systems (this allows forcing specific behaviour if different systems use the same tag for different ratings)

Also keep in mind that the user specific setting in jellyfin-web sets the maximum allowed rating.
Since this setting is language specific some default values are added to ensure you're able to select common (US-based) ratings,

Additionally this PR solves some access control issues when blocking unrated content for specific item types and especially playlists.
The Playlist and UserLibrary endpoints now respect parental control when returning the items.
This prevents users from viewing items or playlists they have direct links or item ids for, they can only see and access their own playlists and only items which they have access to.

To make all this work a database migration is also included but due to inconsistencies in the current system it's impossible to properly map everything, so a full rescan of your media is required to make sure the values are set as intended.

Issues
Fixes #4363
Fixes #5939
Fixes #6046
Fixes #6514
Fixes #7637
Fixes #7733
Fixes #8263
Fixes #8950

**Original Pull Request:** https://github.com/jellyfin/jellyfin/pull/8526 **State:** closed **Merged:** Yes --- How content ratings are currently handled is a bit ominous and apparently incorrect (see #7637) **Changes** Align the country rating systems with: * [IMDB Certification](https://help.imdb.com/article/contribution/titles/certificates/GU757M8ZJ9ZPXB39) * [Wikipedia Motion Picture Content Rating Systems](https://en.wikipedia.org/wiki/Motion_picture_content_rating_system) * [Wikipedia TV Parental Guidelines](https://en.wikipedia.org/wiki/TV_Parental_Guidelines) Apply the following schema to all country rating systems: ``` null - Unrated Content (need to be explicitly excluded via user settings) 0 - 0+, Informational and Educational Content 1 - 1+ 2 - 2+ 3 - 3+ 4 - 4+ 5 - 5+ 6 - 6+ 7 - 7+ 8 - 8+ 9 - 9+ 10 - 10+ 11 - 11+ 12 - 12+ 13 - 13+ 14 - 14+ 15 - 15+ 16 - 16+ 17 - 17+ 18 - 18+ 1000 - Explicit Content 1001 - Prohibited/Not Approved/Banned Content ``` Furthermore another dummy content rating system was added with fallback values and arbitrary strings which take precedence over all others when matching against all available rating systems (this allows forcing specific behaviour if different systems use the same tag for different ratings) Also keep in mind that the user specific setting in jellyfin-web sets the **maximum** allowed rating. Since this setting is language specific some default values are added to ensure you're able to select common (US-based) ratings, Additionally this PR solves some access control issues when blocking unrated content for specific item types and especially playlists. The Playlist and UserLibrary endpoints now respect parental control when returning the items. This prevents users from viewing items or playlists they have direct links or item ids for, they can only see and access their own playlists and only items which they have access to. To make all this work a database migration is also included but due to inconsistencies in the current system it's impossible to properly map everything, so a full rescan of your media is required to make sure the values are set as intended. **Issues** Fixes #4363 Fixes #5939 Fixes #6046 Fixes #6514 Fixes #7637 Fixes #7733 Fixes #8263 Fixes #8950
OVERLORD added the pull-request label 2026-02-07 06:43:46 +03:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: starred/jellyfin#11742