Music_Player3/MusicPlayer/MP/MPPositive/Models/JsonStructs/MPPositive_JsonPlayer.swift
2024-05-11 09:48:37 +08:00

120 lines
4.6 KiB
Swift
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

//
// MPPositive_JsonPlayer.swift
// MusicPlayer
//
// Created by Mr.Zhou on 2024/4/30.
//
import Foundation
///
struct JsonPlayer: Codable {
///
let streamingData:StreamingData?
////
let videoDetails:VideoDetails?
enum CodingKeys: String, CodingKey {
case streamingData = "streamingData"
case videoDetails = "videoDetails"
}
init(from decoder: Decoder) throws {
let values = try decoder.container(keyedBy: CodingKeys.self)
streamingData = try values.decodeIfPresent(StreamingData.self, forKey: .streamingData)
videoDetails = try values.decodeIfPresent(VideoDetails.self, forKey: .videoDetails)
}
//MARK: -
struct StreamingData: Codable {
///访
let expiresInSeconds:String?
///
let formats:[Format]?
///
let adaptiveFormats:[Format]?
enum CodingKeys: String, CodingKey {
case expiresInSeconds = "expiresInSeconds"
case formats = "formats"
case adaptiveFormats = "adaptiveFormats"
}
init(from decoder: Decoder) throws {
let values = try decoder.container(keyedBy: CodingKeys.self)
expiresInSeconds = try values.decodeIfPresent(String.self, forKey: .expiresInSeconds)
formats = try values.decodeIfPresent([Format].self, forKey: .formats)
adaptiveFormats = try values.decodeIfPresent([Format].self, forKey: .adaptiveFormats)
}
///
struct Format: Codable {
///
let itag: Int?
///
let mimeType:String?
///
let qualityLabel:String?
///
let signatureCipher:String?
enum CodingKeys: String, CodingKey {
case itag = "itag"
case mimeType = "mimeType"
case qualityLabel = "qualityLabel"
case signatureCipher = "signatureCipher"
}
init(from decoder: Decoder) throws {
let values = try decoder.container(keyedBy: CodingKeys.self)
itag = try values.decodeIfPresent(Int.self, forKey: .itag)
mimeType = try values.decodeIfPresent(String.self, forKey: .mimeType)
qualityLabel = try values.decodeIfPresent(String.self, forKey: .qualityLabel)
signatureCipher = try values.decodeIfPresent(String.self, forKey: .signatureCipher)
}
}
}
//MARK: - /
struct VideoDetails: Codable {
////videoId
let videoId:String?
///
let title:String?
///
let thumbnail:Thumbnail?
///
let author:String?
enum CodingKeys: String, CodingKey {
case videoId = "videoId"
case title = "title"
case thumbnail = "thumbnail"
case author = "author"
}
init(from decoder: Decoder) throws {
let values = try decoder.container(keyedBy: CodingKeys.self)
videoId = try values.decodeIfPresent(String.self, forKey: .videoId)
title = try values.decodeIfPresent(String.self, forKey: .title)
thumbnail = try values.decodeIfPresent(Thumbnail.self, forKey: .thumbnail)
author = try values.decodeIfPresent(String.self, forKey: .author)
}
///
struct Thumbnail: Codable {
///
let thumbnails:[Thumbnails]?
enum CodingKeys: String, CodingKey {
case thumbnails = "thumbnails"
}
init(from decoder: Decoder) throws {
let values = try decoder.container(keyedBy: CodingKeys.self)
thumbnails = try values.decodeIfPresent([Thumbnails].self, forKey: .thumbnails)
}
struct Thumbnails: Codable {
///
let url:String?
enum CodingKeys: String, CodingKey {
case url = "url"
}
init(from decoder: Decoder) throws {
let values = try decoder.container(keyedBy: CodingKeys.self)
url = try values.decodeIfPresent(String.self, forKey: .url)
}
}
}
}
}