first commit
This commit is contained in:
@@ -0,0 +1,82 @@
|
||||
import Foundation
|
||||
|
||||
/// 电影/视频数据模型 - 对应 Android 版 Movie.java
|
||||
struct Movie: Codable {
|
||||
var videoList: [Video] = []
|
||||
var pagecount: Int = 0
|
||||
var page: Int = 0
|
||||
var total: Int = 0
|
||||
var limit: Int = 0
|
||||
|
||||
/// 单个视频条目
|
||||
struct Video: Codable, Identifiable, Hashable {
|
||||
var id: String
|
||||
var name: String = ""
|
||||
var pic: String = ""
|
||||
var note: String = "" // 备注(如"更新至第20集")
|
||||
var year: String = ""
|
||||
var area: String = ""
|
||||
var type: String = "" // 类型/分类名
|
||||
var director: String = ""
|
||||
var actor: String = ""
|
||||
var des: String = "" // 简介
|
||||
var sourceKey: String = "" // 来源站点 key
|
||||
var tid: String = "" // 分类 ID
|
||||
var last: String = "" // 最后更新
|
||||
var dt: String = "" // 日期
|
||||
|
||||
init(id: String = UUID().uuidString, name: String = "", pic: String = "",
|
||||
note: String = "", sourceKey: String = "") {
|
||||
self.id = id
|
||||
self.name = name
|
||||
self.pic = pic
|
||||
self.note = note
|
||||
self.sourceKey = sourceKey
|
||||
}
|
||||
|
||||
enum CodingKeys: String, CodingKey {
|
||||
case id = "vod_id"
|
||||
case name = "vod_name"
|
||||
case pic = "vod_pic"
|
||||
case note = "vod_remarks"
|
||||
case year = "vod_year"
|
||||
case area = "vod_area"
|
||||
case type = "type_name"
|
||||
case director = "vod_director"
|
||||
case actor = "vod_actor"
|
||||
case des = "vod_content"
|
||||
case tid = "type_id"
|
||||
case last = "vod_time"
|
||||
case dt = "vod_play_from"
|
||||
case sourceKey
|
||||
}
|
||||
|
||||
init(from decoder: Decoder) throws {
|
||||
let container = try decoder.container(keyedBy: CodingKeys.self)
|
||||
// 支持 String 或 Int 类型的 id
|
||||
if let intId = try? container.decode(Int.self, forKey: .id) {
|
||||
self.id = String(intId)
|
||||
} else {
|
||||
self.id = (try? container.decode(String.self, forKey: .id)) ?? UUID().uuidString
|
||||
}
|
||||
self.name = (try? container.decode(String.self, forKey: .name)) ?? ""
|
||||
self.pic = (try? container.decode(String.self, forKey: .pic)) ?? ""
|
||||
self.note = (try? container.decode(String.self, forKey: .note)) ?? ""
|
||||
self.year = (try? container.decode(String.self, forKey: .year)) ?? ""
|
||||
self.area = (try? container.decode(String.self, forKey: .area)) ?? ""
|
||||
self.type = (try? container.decode(String.self, forKey: .type)) ?? ""
|
||||
self.director = (try? container.decode(String.self, forKey: .director)) ?? ""
|
||||
self.actor = (try? container.decode(String.self, forKey: .actor)) ?? ""
|
||||
self.des = (try? container.decode(String.self, forKey: .des)) ?? ""
|
||||
self.tid = {
|
||||
if let intTid = try? container.decode(Int.self, forKey: .tid) {
|
||||
return String(intTid)
|
||||
}
|
||||
return (try? container.decode(String.self, forKey: .tid)) ?? ""
|
||||
}()
|
||||
self.last = (try? container.decode(String.self, forKey: .last)) ?? ""
|
||||
self.dt = (try? container.decode(String.self, forKey: .dt)) ?? ""
|
||||
self.sourceKey = (try? container.decode(String.self, forKey: .sourceKey)) ?? ""
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user