Skip to main content

## MediaItem

# Struct MediaItem

Source

    pub struct MediaItem {Show 35 fields
        pub id: String,
        pub name: String,
        pub item_type: String,
        pub kind: MediaKind,
        pub is_folder: bool,
        pub server_id: String,
        pub parent_id: Option<String>,
        pub library_id: Option<String>,
        pub overview: Option<String>,
        pub genres: Option<Vec<String>>,
        pub production_year: Option<i32>,
        pub premiere_date: Option<String>,
        pub community_rating: Option<f64>,
        pub official_rating: Option<String>,
        pub runtime_ticks: Option<i64>,
        pub duration_ms: Option<i64>,
        pub primary_image_tag: Option<String>,
        pub image_id: Option<String>,
        pub backdrop_image_tags: Option<Vec<String>>,
        pub parent_backdrop_image_tags: Option<Vec<String>>,
        pub album_id: Option<String>,
        pub album_name: Option<String>,
        pub album_artist: Option<String>,
        pub artists: Option<Vec<String>>,
        pub artist_items: Option<Vec<ArtistItem>>,
        pub index_number: Option<i32>,
        pub parent_index_number: Option<i32>,
        pub series_id: Option<String>,
        pub series_name: Option<String>,
        pub season_id: Option<String>,
        pub season_name: Option<String>,
        pub user_data: Option<UserData>,
        pub media_streams: Option<Vec<MediaStream>>,
        pub media_sources: Option<Vec<MediaSource>>,
        pub people: Option<Vec<Person>>,
    }

Expand description

Media item

## Fields§

§ `id: String` § `name: String` § `item_type: String`

Legacy Jellyfin item-type string (`"Audio"`, `"MusicAlbum"`, …).

Dual-carry migration (docs/specs/frontend-domain-model.md): `kind` below is the neutral replacement. This field stays while the frontend migrates off it, then is removed in a later phase. New Rust code should read `kind`, not this.

§ `kind: MediaKind`

Provider-neutral classification — the replacement for `item_type`. Populated by the Jellyfin mapping; defaults to `Other` for the handful of construction sites that have not been migrated yet.

§ `is_folder: bool`

Whether this item is a folder/container (vs a playable leaf). Used to decide whether a channel item drills into a list or plays directly.

§ `server_id: String` § `parent_id: Option<String>` § `library_id: Option<String>` § `overview: Option<String>` § `genres: Option<Vec<String>>` § `production_year: Option<i32>` § `premiere_date: Option<String>`

ISO-8601 release/air date (Jellyfin `PremiereDate`). Used to sort podcast episodes by release date.

§ `community_rating: Option<f64>` § `official_rating: Option<String>` § `runtime_ticks: Option<i64>`

Legacy Jellyfin duration in ticks (100 ns units). Being replaced by `duration_ms`; dual-carried while the frontend migrates (docs/specs/frontend-domain-model.md). New code should read `duration_ms`.

§ `duration_ms: Option<i64>`

Duration in milliseconds — the neutral replacement for `runtime_ticks`. Ticks never reach the frontend; this does.

§ `primary_image_tag: Option<String>`

Legacy Jellyfin primary image tag. Being replaced by `image_id`; dual-carried while the frontend migrates. New code should read `image_id`.

§ `image_id: Option<String>`

Neutral image identifier the frontend resolves to a URL via the image command — the replacement for `primary_image_tag`. Same value today (Jellyfin’s tag is the id); the rename removes the provider term.

§ `backdrop_image_tags: Option<Vec<String>>` § `parent_backdrop_image_tags: Option<Vec<String>>` § `album_id: Option<String>` § `album_name: Option<String>` § `album_artist: Option<String>` § `artists: Option<Vec<String>>` § `artist_items: Option<Vec<ArtistItem>>` § `index_number: Option<i32>` § `parent_index_number: Option<i32>` § `series_id: Option<String>` § `series_name: Option<String>` § `season_id: Option<String>` § `season_name: Option<String>` § `user_data: Option<UserData>` § `media_streams: Option<Vec<MediaStream>>` § `media_sources: Option<Vec<MediaSource>>` § `people: Option<Vec<Person>>`

## Trait Implementations§

Source §

### impl Clone for MediaItem

Source §

#### fn clone(&self) -> MediaItem

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source §

#### fn clone_from(&mut self, source: &Self)

Performs copy-assignment from `source`. Read more
Source §

### impl Debug for MediaItem

Source §

#### fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source §

### impl Default for MediaItem

Source §

#### fn default() -> MediaItem

Returns the “default value” for a type. Read more
Source §

### impl<'de> Deserialize<'de> for MediaItem

Source §

#### fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source §

### impl ExcludeHidden for MediaItem

Source §

#### fn without_excluded(self) -> Self

A single item fetched by id is never hidden.

Exclusion hides things from browsing. An item asked for by id was navigated to deliberately, or is being resolved by the player or a download — answering “not found” there would break playback of anything inside a hidden folder rather than merely tidying a listing.

Source §

### impl From<&MediaItem> for AlbumTrack

Source §

#### fn from(item: &MediaItem) -> Self

Converts to this type from the input type.
Source §

### impl MeaningfulContent for MediaItem

Source §

#### fn has_content(&self) -> bool

Source §

### impl NamedType for MediaItem

Source §

#### fn sid() -> SpectaID

Source §

#### fn named_data_type( type_map: &mut TypeCollection, generics: &[DataType], ) -> NamedDataType

this is equivalent to [Type::inline] but returns a [NamedDataType] instead.
Source §

#### fn definition_named_data_type(type_map: &mut TypeCollection) -> NamedDataType

this is equivalent to [Type::definition] but returns a [NamedDataType] instead.
Source §

### impl Serialize for MediaItem

Source §

#### fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
Source §

### impl Type for MediaItem

Source §

#### fn inline(type_map: &mut TypeCollection, generics: Generics<'_>) -> DataType

Returns the definition of a type using the provided generics. Read more
Source §

#### fn reference(type_map: &mut TypeCollection, generics: &[DataType]) -> Reference

Generates a datatype corresponding to a reference to this type, as determined by its category. Getting a reference to a type implies that it should belong in the type map (since it has to be referenced from somewhere), so the output of `definition` will be put into the type map.
Source §

### impl Flatten for MediaItem

## Auto Trait Implementations§

§

### impl Freeze for MediaItem

§

### impl RefUnwindSafe for MediaItem

§

### impl Send for MediaItem

§

### impl Sync for MediaItem

§

### impl Unpin for MediaItem

§

### impl UnsafeUnpin for MediaItem

§

### impl UnwindSafe for MediaItem

## Blanket Implementations§

Source §

### impl<T> Any for T
where T: 'static + ?Sized,

Source §

#### fn type_id(&self) -> TypeId

Gets the `TypeId` of `self`. Read more
Source §

### impl<T> Borrow<T> for T
where T: ?Sized,

Source §

#### fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source §

### impl<T> BorrowMut<T> for T
where T: ?Sized,

Source §

#### fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source §

### impl<T> CloneToUninit for T
where T: Clone,

Source §

#### unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (`clone_to_uninit`)
Performs copy-assignment from `self` to `dest`. Read more
§

### impl<'de, D, R> CommandArg<'de, R> for D
where D: Deserialize<'de>, R: Runtime,

§

#### fn from_command(command: CommandItem<'de, R>) -> Result<D, InvokeError>

Derives an instance of `Self` from the [`CommandItem`]. Read more
Source §

### impl<T> From<T> for T

Source §

#### fn from(t: T) -> T

Returns the argument unchanged.

§

### impl<T> FunctionArg for T
where T: Type,

§

#### fn to_datatype(type_map: &mut TypeCollection) -> Option<DataType>

Gets the type of an argument as a [`DataType`]. Read more
§

### impl<T> Instrument for T

§

#### fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [`Span`], returning an `Instrumented` wrapper. Read more
§

#### fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current `Span`, returning an `Instrumented` wrapper. Read more
Source §

### impl<T, U> Into<U> for T
where U: From<T>,

Source §

#### fn into(self) -> U

Calls `U::from(self)`.

That is, this conversion is whatever the implementation of `From<T> for U` chooses to do.

§

### impl<T> IpcResponse for T
where T: Serialize,

§

#### fn body(self) -> Result<InvokeResponseBody, Error>

Resolve the IPC response body.
§

### impl<T> NoneValue for T
where T: Default,

§

#### type NoneType = T

§

#### fn null_value() -> T

The none-equivalent value.
§

### impl<T> PolicyExt for T
where T: ?Sized,

§

#### fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new `Policy` that returns [`Action::Follow`] only if `self` and `other` return `Action::Follow`. Read more
§

#### fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new `Policy` that returns [`Action::Follow`] if either `self` or `other` returns `Action::Follow`. Read more
Source §

### impl<T> Same for T

Source §

#### type Output = T

Should always be `Self`
§

### impl<T> ScopeObject for T
where T: Send + Sync + Debug + DeserializeOwned + 'static,

§

#### type Error = Error

The error type.
§

#### fn deserialize<R>( _app: &AppHandle<R>, raw: Value, ) -> Result<T, <T as ScopeObject>::Error>
where R: Runtime,

Deserialize the raw scope value.
Source §

### impl<T> Serialize for T
where T: Serialize + ?Sized,

Source §

#### fn erased_serialize(&self, serializer: &mut dyn Serializer) -> Result<(), Error>

Source §

#### fn do_erased_serialize( &self, serializer: &mut dyn Serializer, ) -> Result<(), ErrorImpl>

Source §

### impl<T> ToOwned for T
where T: Clone,

Source §

#### type Owned = T

The resulting type after obtaining ownership.
Source §

#### fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source §

#### fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source §

### impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source §

#### type Error = Infallible

The type returned in the event of a conversion error.
Source §

#### fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source §

### impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source §

#### type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source §

#### fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

### impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

#### fn vzip(self) -> V

§

### impl<T> WithSubscriber for T

§

#### fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided `Subscriber` to this type, returning a [`WithDispatch`] wrapper. Read more
§

#### fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default `Subscriber` to this type, returning a [`WithDispatch`] wrapper. Read more
Source §

### impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,

§

### impl<T> UserEvent for T
where T: Debug + Clone + Send + 'static,