JellyfinDataTransformer. JellyfinDataTransformer

Transforms Jellyfin API responses to JellyfinBaseItem content nodes. Follows the type defaults pattern: fields have XML-declared defaults ("", 0, false). See JellyfinBaseItem.xml for field documentation and the full defaults pattern description.

Constructor

new JellyfinDataTransformer() → {JellyfinDataTransformer}

Returns:
Type: 
JellyfinDataTransformer

Methods

populateLyrics(item, response) → {void}

Populate lyrics from a separate API call result.

Parameters:
NameTypeDescription
itemobject

JellyfinBaseItem node (already transformed)

responseobject

LyricDto response from GET /Audio/{itemId}/Lyrics

Returns:
Type: 
void

populateMediaSegments(item, segmentsResponse) → {void}

Populate media segments from a separate API call result. This is a sanctioned post-transformation mutation: data arrives via a separate API call.

Parameters:
NameTypeDescription
itemobject

JellyfinBaseItem node (already transformed)

segmentsResponseobject

Response body from GET /MediaSegments/{itemId}

Returns:
Type: 
void

populateThemeSongs(item, response) → {void}

Populate theme songs from a separate API call result. bsc-disable-next-line dead-code keep: planned: theme songs and videos, #1070

Parameters:
NameTypeDescription
itemobject

JellyfinBaseItem node (already transformed)

responseobject

Response from GET /Items/{id}/ThemeSongs

Returns:
Type: 
void

populateThemeVideos(item, response) → {void}

Populate theme videos from a separate API call result. bsc-disable-next-line dead-code keep: planned: theme songs and videos, #1070

Parameters:
NameTypeDescription
itemobject

JellyfinBaseItem node (already transformed)

responseobject

Response from GET /Items/{id}/ThemeVideos

Returns:
Type: 
void

transformBaseItem(apiData, serverVersionopt, preferredSubtitleLanguageopt) → {object}

Transform a BaseItemDto to a JellyfinBaseItem content node.

Parameters:
NameTypeAttributesDefaultDescription
apiDataobject

Raw BaseItemDto assocarray from the Jellyfin API

serverVersionstring<optional>
""

Server version string (auto-detected from global session if omitted)

preferredSubtitleLanguagestring<optional>
""

BCP-47 language code for subtitle sort priority (for example "eng")

Returns:

JellyfinBaseItem node, or invalid if apiData is invalid

Type: 
object

transformBaseItemArray(apiArray, serverVersionopt, preferredSubtitleLanguageopt) → {object}

Transform an array of BaseItemDto objects. Skips invalid entries silently.

Parameters:
NameTypeAttributesDefaultDescription
apiArrayobject

Array of BaseItemDto assocArrays

serverVersionstring<optional>
""

Server version (auto-detected if omitted)

preferredSubtitleLanguagestring<optional>
""

Language code for subtitle sort preference

Returns:

Array of JellyfinBaseItem nodes (may be shorter than input if entries were invalid)

Type: 
object

transformPersonCard(spec) → {object}

Build a Cast & Crew card node from one spec produced by castCardSpecs().

Takes a SPEC rather than a raw BaseItemPerson because a card is not a person entry: the server sends one entry per credit, so the merge and the label both have to happen over the whole array before any node exists. people.bs owns that rule; this owns the node. primaryImageTag is set directly, not nested under ImageTags like a BaseItemDto.

Parameters:
NameTypeDescription
specobject

one { id, name, primaryImageTag, subtitle } from castCardSpecs()

Returns:

JellyfinBaseItem node, or invalid if spec is invalid

Type: 
object