Files
plezy/lib/services/plex_mappers.g.dart
T
edde746 42b6710f04 fix(player): stop letting item metadata language override the audio track
The audio ladder still carried a per-item language tier between the
server's selected stream and the account preference. For Jellyfin and
Emby the value mapped to it was `PreferredMetadataLanguage`, which is the
library's metadata-scraping language - it inherits from the parent, the
library options, or the server config and says nothing about playback -
so on any source whose selected/default stream did not map to a native
track it silently picked audio in the scraping language instead of the
user's preferred one. Plex's item-level `audioLanguage` reached the same
tier, after 2dfebf32b and 7ae293631 had already settled that the server
folds every preference level into the stream `selected` flags.

Drop the tier and the plumbing that only fed it:
TrackSelectionPriority.perMedia, MediaItem.audioLanguage and
subtitleLanguage, PlexMetadataDto.audioLanguage/subtitleLanguage/
subtitleMode, and the Jellyfin PreferredMetadataLanguage mapping. The
order is now carried selection, server-selected or default source
stream, account preference, native default. Persisted cache entries
holding the old keys decode unchanged.
2026-09-03 13:08:46 +02:00

223 lines
9.6 KiB
Dart

// GENERATED CODE - DO NOT MODIFY BY HAND
part of 'plex_mappers.dart';
// **************************************************************************
// JsonSerializableGenerator
// **************************************************************************
PlexRoleDto _$PlexRoleDtoFromJson(Map<String, dynamic> json) => PlexRoleDto(
id: flexibleInt(json['id']),
filter: json['filter'] as String?,
tag: json['tag'] as String,
tagKey: json['tagKey'] as String?,
role: json['role'] as String?,
thumb: json['thumb'] as String?,
count: flexibleInt(json['count']),
);
PlexRatingDto _$PlexRatingDtoFromJson(Map<String, dynamic> json) =>
PlexRatingDto(
image: json['image'] as String?,
type: json['type'] as String?,
value: flexibleDouble(json['value']),
);
PlexMediaVersionDto _$PlexMediaVersionDtoFromJson(Map<String, dynamic> json) =>
PlexMediaVersionDto(
id: flexibleIntOrZero(json['id']),
videoResolution: readStringField(json, 'videoResolution') as String?,
videoCodec: readStringField(json, 'videoCodec') as String?,
bitrate: flexibleInt(json['bitrate']),
width: flexibleInt(json['width']),
height: flexibleInt(json['height']),
container: readStringField(json, 'container') as String?,
partKey: _readPartKey(json, 'partKey') as String,
accessible: _readPartAccessible(json, 'accessible') as bool?,
exists: _readPartExists(json, 'exists') as bool?,
parts: _readMediaParts(json, 'parts') == null
? const []
: _mediaPartsFromReadValue(_readMediaParts(json, 'parts')),
);
PlexLibraryDto _$PlexLibraryDtoFromJson(Map<String, dynamic> json) =>
PlexLibraryDto(
key: readStringField(json, 'key') as String? ?? '',
title: json['title'] as String? ?? '',
type: json['type'] as String? ?? '',
subtype: json['subtype'] as String?,
agent: json['agent'] as String?,
scanner: json['scanner'] as String?,
language: json['language'] as String?,
uuid: json['uuid'] as String?,
updatedAt: flexibleInt(json['updatedAt']),
createdAt: flexibleInt(json['createdAt']),
hidden: flexibleInt(json['hidden']),
);
PlexPlaylistDto _$PlexPlaylistDtoFromJson(Map<String, dynamic> json) =>
PlexPlaylistDto(
ratingKey: readStringField(json, 'ratingKey') as String? ?? '',
key: json['key'] as String? ?? '',
type: json['type'] as String? ?? '',
title: json['title'] as String? ?? '',
summary: json['summary'] as String?,
smart: json['smart'] as bool? ?? false,
playlistType: json['playlistType'] as String? ?? '',
duration: flexibleInt(json['duration']),
leafCount: flexibleInt(json['leafCount']),
composite: json['composite'] as String?,
addedAt: flexibleInt(json['addedAt']),
updatedAt: flexibleInt(json['updatedAt']),
lastViewedAt: flexibleInt(json['lastViewedAt']),
viewCount: flexibleInt(json['viewCount']),
content: json['content'] as String?,
guid: json['guid'] as String?,
thumb: json['thumb'] as String?,
);
PlexHubDto _$PlexHubDtoFromJson(Map<String, dynamic> json) => PlexHubDto(
hubKey: readStringField(json, 'key') as String? ?? '',
title: _hubTitleFromJson(json['title']),
type: json['type'] as String? ?? 'hub',
hubIdentifier: json['hubIdentifier'] as String?,
size: flexibleIntOrZero(json['size']),
more: flexibleBool(json['more']),
items: _hubItemsFromJson(_readHubItems(json, 'items')),
);
PlexMetadataDto _$PlexMetadataDtoFromJson(Map<String, dynamic> json) =>
PlexMetadataDto(
ratingKey: _readMetadataRatingKey(json, 'ratingKey') as String? ?? '',
key: json['key'] as String?,
guid: json['guid'] as String?,
studio: json['studio'] as String?,
type: json['type'] as String?,
title: json['title'] as String?,
titleSort: json['titleSort'] as String?,
contentRating: json['contentRating'] as String?,
summary: json['summary'] as String?,
rating: flexibleDouble(json['rating']),
audienceRating: flexibleDouble(json['audienceRating']),
userRating: flexibleDouble(json['userRating']),
year: flexibleInt(json['year']),
parentYear: flexibleInt(json['parentYear']),
originallyAvailableAt: json['originallyAvailableAt'] as String?,
thumb: json['thumb'] as String?,
art: json['art'] as String?,
duration: flexibleInt(json['duration']),
addedAt: flexibleInt(json['addedAt']),
updatedAt: flexibleInt(json['updatedAt']),
lastViewedAt: flexibleInt(json['lastViewedAt']),
grandparentTitle: json['grandparentTitle'] as String?,
grandparentThumb: json['grandparentThumb'] as String?,
grandparentArt: json['grandparentArt'] as String?,
grandparentRatingKey:
readStringField(json, 'grandparentRatingKey') as String?,
parentTitle: json['parentTitle'] as String?,
parentThumb: json['parentThumb'] as String?,
parentRatingKey: readStringField(json, 'parentRatingKey') as String?,
parentIndex: flexibleInt(json['parentIndex']),
index: flexibleInt(json['index']),
grandparentTheme: json['grandparentTheme'] as String?,
viewOffset: flexibleInt(json['viewOffset']),
viewCount: flexibleInt(json['viewCount']),
leafCount: flexibleInt(json['leafCount']),
viewedLeafCount: flexibleInt(json['viewedLeafCount']),
childCount: flexibleInt(json['childCount']),
role: (json['Role'] as List<dynamic>?)
?.map((e) => PlexRoleDto.fromJson(e as Map<String, dynamic>))
.toList(),
mediaVersions: (json['Media'] as List<dynamic>?)
?.map((e) => PlexMediaVersionDto.fromJson(e as Map<String, dynamic>))
.toList(),
ratingSources: (json['Rating'] as List<dynamic>?)
?.map((e) => PlexRatingDto.fromJson(e as Map<String, dynamic>))
.toList(),
imdbRatingCount: flexibleInt(json['imdbRatingCount']),
genre: _tagListFromJson(json['Genre']),
director: _tagListFromJson(json['Director']),
writer: _tagListFromJson(json['Writer']),
producer: _tagListFromJson(json['Producer']),
country: _tagListFromJson(json['Country']),
collection: _tagListFromJson(json['Collection']),
label: _tagListFromJson(json['Label']),
style: _tagListFromJson(json['Style']),
mood: _tagListFromJson(json['Mood']),
format: _tagListFromJson(json['Format']),
subformat: _tagListFromJson(json['Subformat']),
playlistItemID: flexibleInt(json['playlistItemID']),
playQueueItemID: flexibleInt(json['playQueueItemID']),
librarySectionID: flexibleInt(json['librarySectionID']),
librarySectionTitle: json['librarySectionTitle'] as String?,
ratingImage: json['ratingImage'] as String?,
audienceRatingImage: json['audienceRatingImage'] as String?,
tagline: json['tagline'] as String?,
originalTitle: json['originalTitle'] as String?,
editionTitle: json['editionTitle'] as String?,
subtype: json['subtype'] as String?,
extraType: flexibleInt(json['extraType']),
primaryExtraKey: json['primaryExtraKey'] as String?,
clearLogo: json['clearLogo'] as String?,
backgroundSquare: json['backgroundSquare'] as String?,
skipChildren: flexibleBoolNullable(json['skipChildren']),
flattenSeasons: flexibleInt(json['flattenSeasons']),
);
Map<String, dynamic> _$PlexMetadataDtoToJson(PlexMetadataDto instance) =>
<String, dynamic>{
'ratingKey': instance.ratingKey,
'key': ?instance.key,
'guid': ?instance.guid,
'studio': ?instance.studio,
'type': ?instance.type,
'title': ?instance.title,
'titleSort': ?instance.titleSort,
'contentRating': ?instance.contentRating,
'summary': ?instance.summary,
'rating': ?instance.rating,
'audienceRating': ?instance.audienceRating,
'userRating': ?instance.userRating,
'year': ?instance.year,
'parentYear': ?instance.parentYear,
'originallyAvailableAt': ?instance.originallyAvailableAt,
'thumb': ?instance.thumb,
'art': ?instance.art,
'duration': ?instance.duration,
'addedAt': ?instance.addedAt,
'updatedAt': ?instance.updatedAt,
'lastViewedAt': ?instance.lastViewedAt,
'grandparentTitle': ?instance.grandparentTitle,
'grandparentThumb': ?instance.grandparentThumb,
'grandparentArt': ?instance.grandparentArt,
'grandparentRatingKey': ?instance.grandparentRatingKey,
'parentTitle': ?instance.parentTitle,
'parentThumb': ?instance.parentThumb,
'parentRatingKey': ?instance.parentRatingKey,
'parentIndex': ?instance.parentIndex,
'index': ?instance.index,
'grandparentTheme': ?instance.grandparentTheme,
'viewOffset': ?instance.viewOffset,
'viewCount': ?instance.viewCount,
'leafCount': ?instance.leafCount,
'viewedLeafCount': ?instance.viewedLeafCount,
'childCount': ?instance.childCount,
'imdbRatingCount': ?instance.imdbRatingCount,
'playlistItemID': ?instance.playlistItemID,
'playQueueItemID': ?instance.playQueueItemID,
'librarySectionID': ?instance.librarySectionID,
'librarySectionTitle': ?instance.librarySectionTitle,
'ratingImage': ?instance.ratingImage,
'audienceRatingImage': ?instance.audienceRatingImage,
'tagline': ?instance.tagline,
'originalTitle': ?instance.originalTitle,
'editionTitle': ?instance.editionTitle,
'subtype': ?instance.subtype,
'extraType': ?instance.extraType,
'primaryExtraKey': ?instance.primaryExtraKey,
'clearLogo': ?instance.clearLogo,
'backgroundSquare': ?instance.backgroundSquare,
'skipChildren': ?instance.skipChildren,
'flattenSeasons': ?instance.flattenSeasons,
};