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.

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.

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 (e.g. "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

transformPerson(person) → {object}

Transform a BaseItemPerson (from a parent item's People array) to a JellyfinBaseItem node. BaseItemPerson has {Id, Name, Type: "Actor"/"Director"/etc, Role, PrimaryImageTag}. Note: PrimaryImageTag is set directly (NOT nested under ImageTags like a BaseItemDto). Subtitle is pre-computed: "as {Role}" for actors, "{Type}" for others.

Parameters:
NameTypeDescription
personobject

Raw BaseItemPerson assocarray from a parent item's People array

Returns:

JellyfinBaseItem node, or invalid if person is invalid

Type: 
object