mirror of
https://github.com/advplyr/audiobookshelf-app.git
synced 2025-07-09 05:24:44 +02:00
New Data Classes
This commit is contained in:
parent
b72aba36b8
commit
4d0d1eb88f
3 changed files with 143 additions and 27 deletions
|
@ -30,6 +30,7 @@
|
||||||
504EC3121FED79650016851F /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 504EC3101FED79650016851F /* LaunchScreen.storyboard */; };
|
504EC3121FED79650016851F /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 504EC3101FED79650016851F /* LaunchScreen.storyboard */; };
|
||||||
50B271D11FEDC1A000F3C39B /* public in Resources */ = {isa = PBXBuildFile; fileRef = 50B271D01FEDC1A000F3C39B /* public */; };
|
50B271D11FEDC1A000F3C39B /* public in Resources */ = {isa = PBXBuildFile; fileRef = 50B271D01FEDC1A000F3C39B /* public */; };
|
||||||
A084ECDBA7D38E1E42DFC39D /* Pods_App.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF277DCFFFF123FFC6DF26C7 /* Pods_App.framework */; };
|
A084ECDBA7D38E1E42DFC39D /* Pods_App.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF277DCFFFF123FFC6DF26C7 /* Pods_App.framework */; };
|
||||||
|
C4D0677528106D0C00B8F875 /* DataClasses.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4D0677428106D0C00B8F875 /* DataClasses.swift */; };
|
||||||
/* End PBXBuildFile section */
|
/* End PBXBuildFile section */
|
||||||
|
|
||||||
/* Begin PBXFileReference section */
|
/* Begin PBXFileReference section */
|
||||||
|
@ -60,6 +61,7 @@
|
||||||
50B271D01FEDC1A000F3C39B /* public */ = {isa = PBXFileReference; lastKnownFileType = folder; path = public; sourceTree = "<group>"; };
|
50B271D01FEDC1A000F3C39B /* public */ = {isa = PBXFileReference; lastKnownFileType = folder; path = public; sourceTree = "<group>"; };
|
||||||
AF277DCFFFF123FFC6DF26C7 /* Pods_App.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_App.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
AF277DCFFFF123FFC6DF26C7 /* Pods_App.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_App.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||||
AF51FD2D460BCFE21FA515B2 /* Pods-App.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-App.release.xcconfig"; path = "Pods/Target Support Files/Pods-App/Pods-App.release.xcconfig"; sourceTree = "<group>"; };
|
AF51FD2D460BCFE21FA515B2 /* Pods-App.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-App.release.xcconfig"; path = "Pods/Target Support Files/Pods-App/Pods-App.release.xcconfig"; sourceTree = "<group>"; };
|
||||||
|
C4D0677428106D0C00B8F875 /* DataClasses.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DataClasses.swift; sourceTree = "<group>"; };
|
||||||
FC68EB0AF532CFC21C3344DD /* Pods-App.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-App.debug.xcconfig"; path = "Pods/Target Support Files/Pods-App/Pods-App.debug.xcconfig"; sourceTree = "<group>"; };
|
FC68EB0AF532CFC21C3344DD /* Pods-App.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-App.debug.xcconfig"; path = "Pods/Target Support Files/Pods-App/Pods-App.debug.xcconfig"; sourceTree = "<group>"; };
|
||||||
/* End PBXFileReference section */
|
/* End PBXFileReference section */
|
||||||
|
|
||||||
|
@ -118,6 +120,7 @@
|
||||||
children = (
|
children = (
|
||||||
3AD4FCE828043FD7006DB301 /* ServerConnectionConfig.swift */,
|
3AD4FCE828043FD7006DB301 /* ServerConnectionConfig.swift */,
|
||||||
3ABF580828059BAE005DFBE5 /* PlaybackSession.swift */,
|
3ABF580828059BAE005DFBE5 /* PlaybackSession.swift */,
|
||||||
|
C4D0677428106D0C00B8F875 /* DataClasses.swift */,
|
||||||
3A90295E280968E700E1D427 /* PlaybackReport.swift */,
|
3A90295E280968E700E1D427 /* PlaybackReport.swift */,
|
||||||
);
|
);
|
||||||
path = models;
|
path = models;
|
||||||
|
@ -309,6 +312,7 @@
|
||||||
3AD4FCE528043E50006DB301 /* AbsDatabase.swift in Sources */,
|
3AD4FCE528043E50006DB301 /* AbsDatabase.swift in Sources */,
|
||||||
3AF197102806E3DC0096F747 /* AbsAudioPlayer.m in Sources */,
|
3AF197102806E3DC0096F747 /* AbsAudioPlayer.m in Sources */,
|
||||||
3AF1970C2806E2590096F747 /* ApiClient.swift in Sources */,
|
3AF1970C2806E2590096F747 /* ApiClient.swift in Sources */,
|
||||||
|
C4D0677528106D0C00B8F875 /* DataClasses.swift in Sources */,
|
||||||
3AB34055280832720039308B /* PlayerEvents.swift in Sources */,
|
3AB34055280832720039308B /* PlayerEvents.swift in Sources */,
|
||||||
);
|
);
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
|
|
137
ios/App/Shared/models/DataClasses.swift
Normal file
137
ios/App/Shared/models/DataClasses.swift
Normal file
|
@ -0,0 +1,137 @@
|
||||||
|
//
|
||||||
|
// 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
|
||||||
|
}
|
|
@ -25,33 +25,8 @@ struct PlaybackSession: Decodable, Encodable {
|
||||||
var timeListening: Double
|
var timeListening: Double
|
||||||
var audioTracks: [AudioTrack]
|
var audioTracks: [AudioTrack]
|
||||||
var currentTime: Double
|
var currentTime: Double
|
||||||
// var libraryItem: LibraryItem?
|
var libraryItem: LibraryItem
|
||||||
// var localLibraryItem: LocalLibraryItem?
|
// var localLibraryItem: LocalLibraryItem?
|
||||||
var serverConnectionConfigId: String?
|
var serverConnectionConfigId: String?
|
||||||
var serverAddress: String?
|
var serverAddress: String?
|
||||||
}
|
}
|
||||||
struct Chapter: Decodable, Encodable {
|
|
||||||
var id: Int
|
|
||||||
var start: Double
|
|
||||||
var end: Double
|
|
||||||
var title: String?
|
|
||||||
}
|
|
||||||
struct AudioTrack: Decodable, Encodable {
|
|
||||||
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: Decodable, Encodable {
|
|
||||||
var filename: String
|
|
||||||
var ext: String
|
|
||||||
var path: String
|
|
||||||
var relPath: String
|
|
||||||
}
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue