Convert back to Swift objects

This commit is contained in:
ronaldheft 2022-07-09 15:18:15 -04:00
parent 2ca9ce797d
commit 16ca7460f4

View file

@ -29,91 +29,99 @@ struct LibraryItem: Codable {
var mediaType: String var mediaType: String
var media: MediaType var media: MediaType
var libraryFiles: [LibraryFile] var libraryFiles: [LibraryFile]
var userMediaProgress:MediaProgress? var userMediaProgress: MediaProgress?
} }
class MediaType: Object, Codable {
var libraryItemId: String? = "" struct MediaType: Codable {
var metadata: Metadata? var libraryItemId: String?
var coverPath: String? = "" var metadata: Metadata
var tags: List<String?> var coverPath: String?
var audioFiles: List<AudioFile> var tags: [String]?
var chapters: List<Chapter> var audioFiles: [AudioTrack]?
var tracks: List<AudioTrack> var chapters: [Chapter]?
var size: Int64? = nil var tracks: [AudioTrack]?
var duration: Double? = nil var size: Int64?
var episodes: List<PodcastEpisode> var duration: Double?
var autoDownloadEpisodes: Bool? = nil var episodes: [PodcastEpisode]?
var autoDownloadEpisodes: Bool?
} }
class Metadata: Object, Codable {
struct Metadata: Codable {
var title: String var title: String
var subtitle: String? = "" var subtitle: String?
var authors: List<Author> var authors: [Author]?
var narrators: List<String?> var narrators: [String]?
var genres: List<String?> var genres: [String]
var publishedYear: String? = "" var publishedYear: String?
var publishedDate: String? = "" var publishedDate: String?
var publisher: String? = "" var publisher: String?
// I think calling the below variable description conflicts with some public variables declared in some of the Pods we use, so it's desc. ¯\_()_/¯ var description: String?
final var description: String var isbn: String?
var isbn: String? = "" var asin: String?
var asin: String? = "" var language: String?
var language: String? = ""
var explicit: Bool var explicit: Bool
var authorName: String? = "" var authorName: String?
var authorNameLF: String? = "" var authorNameLF: String?
var narratorName: String? = "" var narratorName: String?
var seriesName: String? = "" var seriesName: String?
var feedUrl: String? = "" var feedUrl: String?
} }
class PodcastEpisode: Object, Codable {
struct PodcastEpisode: Codable {
var id: String var id: String
var index: Int var index: Int
var episode: String? = "" var episode: String?
var episodeType: String? = "" var episodeType: String?
var title: String var title: String
var subtitle: String? = "" var subtitle: String?
var escription: String? = "" var description: String?
var audioFile: AudioFile? = nil var audioFile: AudioFile?
var audioTrack: AudioTrack? = nil var audioTrack: AudioTrack?
var duration: Double var duration: Double
var size: Int64 var size: Int64
// var serverEpisodeId: String? // var serverEpisodeId: String?
} }
class AudioFile: Object, Codable {
@Persisted var index: Int struct AudioFile: Codable {
@Persisted var ino: String var index: Int
@Persisted var metadata: FileMetadata? var ino: String
var metadata: FileMetadata
} }
class Author: Object, Codable {
@Persisted var id: String struct Author: Codable {
@Persisted var name: String var id: String
@Persisted var coverPath: String? = "" var name: String
var coverPath: String?
} }
class Chapter: Object, Codable {
@Persisted var id: Int struct Chapter: Codable {
@Persisted var start: Double var id: Int
@Persisted var end: Double var start: Double
@Persisted var title: String? = nil var end: Double
var title: String?
} }
struct AudioTrack: Codable { struct AudioTrack: Codable {
var index: Int? = nil var index: Int?
var startOffset: Double? = nil var startOffset: Double?
var duration: Double var duration: Double
var title: String? = "" var title: String?
var contentUrl: String? = "" var contentUrl: String?
var mimeType: String var mimeType: String
var metadata: FileMetadata? = nil var metadata: FileMetadata?
var isLocal: Bool // var isLocal: Bool
var localFileId: String? = "" // var localFileId: String?
// var audioProbeResult: AudioProbeResult? // Needed for local playback. Requires local FFMPEG? Not sure how doable this is on iOS // var audioProbeResult: AudioProbeResult? Needed for local playback
var serverIndex: Int? = nil var serverIndex: Int?
} }
class FileMetadata: Object, Codable {
@Persisted var filename: String struct FileMetadata: Codable {
@Persisted var ext: String var filename: String
@Persisted var path: String var ext: String
@Persisted var relPath: String var path: String
var relPath: String
} }
struct Library: Codable { struct Library: Codable {
var id: String var id: String
var name: String var name: String
@ -121,31 +129,36 @@ struct Library: Codable {
var icon: String var icon: String
var mediaType: String var mediaType: String
} }
struct Folder: Codable { struct Folder: Codable {
var id: String var id: String
var fullPath: String var fullPath: String
} }
struct LibraryFile: Codable { struct LibraryFile: Codable {
var ino: String var ino: String
var metadata: FileMetadata? var metadata: FileMetadata
} }
struct MediaProgress: Codable {
var id: String struct MediaProgress:Codable {
var libraryItemId: String var id:String
var episodeId: String? var libraryItemId:String
var duration: Double var episodeId:String?
var progress: Double var duration:Double
var currentTime: Double var progress:Double
var isFinished: Bool var currentTime:Double
var lastUpdate: Int64 var isFinished:Bool
var startedAt: Int64 var lastUpdate:Int64
var finishedAt: Int64? var startedAt:Int64
var finishedAt:Int64?
} }
struct PlaybackMetadata: Codable { struct PlaybackMetadata: Codable {
var duration: Double var duration: Double
var currentTime: Double var currentTime: Double
var playerState: PlayerState var playerState: PlayerState
} }
enum PlayerState: Codable { enum PlayerState: Codable {
case IDLE case IDLE
case BUFFERING case BUFFERING