66 lines
1.8 KiB
Swift
66 lines
1.8 KiB
Swift
//
|
|
// Swiftfin is subject to the terms of the Mozilla Public
|
|
// License, v2.0. If a copy of the MPL was not distributed with this
|
|
// file, you can obtain one at https://mozilla.org/MPL/2.0/.
|
|
//
|
|
// Copyright (c) 2025 Jellyfin & Jellyfin Contributors
|
|
//
|
|
|
|
import Foundation
|
|
import MediaPlayer
|
|
|
|
struct NowPlayableStaticMetadata {
|
|
|
|
let mediaType: MPNowPlayingInfoMediaType
|
|
let isLiveStream: Bool
|
|
|
|
let title: String
|
|
let artist: String?
|
|
let artwork: MPMediaItemArtwork?
|
|
|
|
let albumArtist: String?
|
|
let albumTitle: String?
|
|
|
|
init(
|
|
mediaType: MPNowPlayingInfoMediaType,
|
|
isLiveStream: Bool = false,
|
|
title: String,
|
|
artist: String? = nil,
|
|
artwork: MPMediaItemArtwork? = nil,
|
|
albumArtist: String? = nil,
|
|
albumTitle: String? = nil
|
|
) {
|
|
self.mediaType = mediaType
|
|
self.isLiveStream = isLiveStream
|
|
self.title = title
|
|
self.artist = artist
|
|
self.artwork = artwork
|
|
self.albumArtist = albumArtist
|
|
self.albumTitle = albumTitle
|
|
}
|
|
}
|
|
|
|
struct NowPlayableDynamicMetadata {
|
|
|
|
let rate: Float
|
|
let position: Duration
|
|
let duration: Duration
|
|
|
|
let currentLanguageOptions: [MPNowPlayingInfoLanguageOption]
|
|
let availableLanguageOptionGroups: [MPNowPlayingInfoLanguageOptionGroup]
|
|
|
|
init(
|
|
rate: Float = 1,
|
|
position: Duration,
|
|
duration: Duration,
|
|
currentLanguageOptions: [MPNowPlayingInfoLanguageOption] = [],
|
|
availableLanguageOptionGroups: [MPNowPlayingInfoLanguageOptionGroup] = []
|
|
) {
|
|
self.rate = rate
|
|
self.position = position
|
|
self.duration = duration
|
|
self.currentLanguageOptions = currentLanguageOptions
|
|
self.availableLanguageOptionGroups = availableLanguageOptionGroups
|
|
}
|
|
}
|