mirror of
https://github.com/advplyr/audiobookshelf-app.git
synced 2025-07-08 13:04:41 +02:00
137 lines
3 KiB
Swift
137 lines
3 KiB
Swift
//
|
|
// DataClasses.swift
|
|
// App
|
|
//
|
|
// Created by Benonymity on 4/20/22.
|
|
//
|
|
|
|
import Foundation
|
|
import CoreMedia
|
|
|
|
struct LibraryItem: Codable {
|
|
var id: String
|
|
var ino:String
|
|
var libraryId: String
|
|
var folderId: String
|
|
var path: String
|
|
var relPath: String
|
|
var mtimeMs: Int64
|
|
var ctimeMs: Int64
|
|
var birthtimeMs: Int64
|
|
var addedAt: Int64
|
|
var updatedAt: Int64
|
|
var lastScan: Int64?
|
|
var scanVersion: String?
|
|
var isMissing: Bool
|
|
var isInvalid: Bool
|
|
var mediaType: String
|
|
// var media: MediaType
|
|
var libraryFiles: [LibraryFile]
|
|
}
|
|
struct Book: Codable {
|
|
var libraryItemId: String?
|
|
var metadata: BookMetadata
|
|
var coverPath: String?
|
|
var tags: [String]
|
|
var audioFiles: [AudioTrack]?
|
|
var chapters: [Chapter]?
|
|
var tracks: [AudioTrack]?
|
|
var size: Int64?
|
|
var duration: Double?
|
|
}
|
|
struct BookMetadata: Codable {
|
|
var title:String
|
|
var subtitle: String?
|
|
var authors: [Author]?
|
|
var narrators: [String]?
|
|
var genres: [String]
|
|
var publishedYear: String?
|
|
var publishedDate: String?
|
|
var publisher: String?
|
|
var description: String?
|
|
var isbn: String?
|
|
var asin: String?
|
|
var language: String?
|
|
var explicit: Bool
|
|
var authorName: String?
|
|
var authorNameLF: String?
|
|
var narratorName: String?
|
|
var seriesName: String?
|
|
}
|
|
struct Podcast: Codable {
|
|
var metadata: PodcastMetadata
|
|
var coverPath: String?
|
|
var tags: [String]
|
|
var episodes: [PodcastEpisode]
|
|
var autoDownloadEpisodes: Bool
|
|
}
|
|
struct PodcastMetadata: Codable {
|
|
var title: String
|
|
var author: String?
|
|
var feedUrl: String?
|
|
var genres: [String]
|
|
}
|
|
struct PodcastEpisode: Codable {
|
|
var id: String
|
|
var index: Int
|
|
var episode: String?
|
|
var episodeType: String?
|
|
var title: String?
|
|
var subtitle: String?
|
|
var description: String?
|
|
var audioFile: AudioFile?
|
|
var audioTrack: AudioTrack?
|
|
var duration: Double
|
|
var size: Int64
|
|
// var serverEpisodeId: String?
|
|
}
|
|
struct AudioFile: Codable {
|
|
var index: Int
|
|
var ino: String
|
|
var metadata: FileMetadata
|
|
}
|
|
struct Author: Codable {
|
|
var id: String
|
|
var name: String
|
|
var coverPath: String?
|
|
}
|
|
struct Chapter: Codable {
|
|
var id: Int
|
|
var start: Double
|
|
var end: Double
|
|
var title: String?
|
|
}
|
|
struct AudioTrack: Codable {
|
|
var index: Int?
|
|
var startOffset: Double
|
|
var duration: Double
|
|
var title: String
|
|
var contentUrl: String
|
|
var mimeType: String
|
|
var metadata: FileMetadata?
|
|
// var isLocal: Bool
|
|
// var localFileId: String?
|
|
// var audioProbeResult: AudioProbeResult? Needed for local playback
|
|
var serverIndex: Int?
|
|
}
|
|
struct FileMetadata: Codable {
|
|
var filename: String
|
|
var ext: String
|
|
var path: String
|
|
var relPath: String
|
|
}
|
|
struct Library: Codable {
|
|
var id: String
|
|
var name: String
|
|
var folders: [Folder]
|
|
var icon: String
|
|
var mediaType: String
|
|
}
|
|
struct Folder: Codable {
|
|
var id: String
|
|
var fullPath: String
|
|
}
|
|
struct LibraryFile: Codable {
|
|
var ino: String
|
|
var metadata: FileMetadata
|
|
}
|