feat: resolve AniList episodes through ZokoAnime
This commit is contained in:
@@ -91,17 +91,23 @@ struct ResolvedSource: Sendable {
|
||||
episode > 0 && episode <= Int(Int32.max)
|
||||
}
|
||||
|
||||
static func validAniListIdentity(mediaID: String, episode: Int) -> Bool {
|
||||
guard let id = Int32(mediaID), id > 0, String(id) == mediaID else { return false }
|
||||
return episode > 0 && episode <= Int(Int32.max)
|
||||
}
|
||||
|
||||
static func validated(_ document: Document) throws -> ResolvedSource {
|
||||
let id = document.identity
|
||||
guard document.version == 1, id.provider == "miruro",
|
||||
validIdentity(mediaID: id.media_id, episode: id.episode),
|
||||
guard document.version == 1,
|
||||
(id.provider == "miruro" && validIdentity(mediaID: id.media_id, episode: id.episode)) ||
|
||||
(id.provider == "anilist" && validAniListIdentity(mediaID: id.media_id, episode: id.episode)),
|
||||
validURL(document.url), validHeaders(document.headers),
|
||||
validText(document.title ?? "", limit: 4096),
|
||||
validSubtitles(document.subtitles) else { throw InvalidSource() }
|
||||
let headers = document.headers.sorted { $0.key < $1.key }
|
||||
.map { "\($0.key): \($0.value)\r\n" }.joined()
|
||||
return ResolvedSource(url: document.url, headers: headers,
|
||||
identity: "miruro:\(id.media_id):\(id.episode)", title: document.title ?? "Miruro episode \(id.episode)",
|
||||
identity: "\(id.provider):\(id.media_id):\(id.episode)", title: document.title ?? "\(id.provider == "anilist" ? "AniList \(id.media_id)" : "Miruro") episode \(id.episode)",
|
||||
subtitles: document.subtitles)
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user