mirror of
https://github.com/cranci1/Sora.git
synced 2026-01-11 20:10:24 +00:00
Fixed Novels fetching
This commit is contained in:
parent
9271c3e122
commit
df9bc6db67
1 changed files with 18 additions and 3 deletions
|
|
@ -128,7 +128,6 @@ extension JSController {
|
|||
airdate: item["airdate"] as? String ?? ""
|
||||
)
|
||||
}
|
||||
Logger.shared.log("Successfully extracted \(resultItems.count) details", type: "Info")
|
||||
} else {
|
||||
Logger.shared.log("Failed to parse JSON of extractDetails", type: "Error")
|
||||
}
|
||||
|
|
@ -162,12 +161,27 @@ extension JSController {
|
|||
promiseDetails.invokeMethod("catch", withArguments: [catchFunctionDetails as Any])
|
||||
|
||||
dispatchGroup.enter()
|
||||
let promiseValueEpisodes = extractEpisodesFunction.call(withArguments: [url.absoluteString])
|
||||
|
||||
var hasLeftEpisodesGroup = false
|
||||
let episodesGroupQueue = DispatchQueue(label: "episodes.group")
|
||||
|
||||
let promiseValueEpisodes = extractEpisodesFunction.call(withArguments: [url.absoluteString])
|
||||
let timeoutWorkItem = DispatchWorkItem {
|
||||
Logger.shared.log("Timeout for extractEpisodes", type: "Warning")
|
||||
episodesGroupQueue.sync {
|
||||
guard !hasLeftEpisodesGroup else {
|
||||
Logger.shared.log("extractEpisodes: timeout called but group already left", type: "Debug")
|
||||
return
|
||||
}
|
||||
hasLeftEpisodesGroup = true
|
||||
dispatchGroup.leave()
|
||||
}
|
||||
}
|
||||
DispatchQueue.main.asyncAfter(deadline: .now() + 15.0, execute: timeoutWorkItem)
|
||||
|
||||
guard let promiseEpisodes = promiseValueEpisodes else {
|
||||
Logger.shared.log("extractEpisodes did not return a Promise", type: "Error")
|
||||
timeoutWorkItem.cancel()
|
||||
episodesGroupQueue.sync {
|
||||
guard !hasLeftEpisodesGroup else { return }
|
||||
hasLeftEpisodesGroup = true
|
||||
|
|
@ -178,6 +192,7 @@ extension JSController {
|
|||
}
|
||||
|
||||
let thenBlockEpisodes: @convention(block) (JSValue) -> Void = { result in
|
||||
timeoutWorkItem.cancel()
|
||||
episodesGroupQueue.sync {
|
||||
guard !hasLeftEpisodesGroup else {
|
||||
Logger.shared.log("extractEpisodes: thenBlock called but group already left", type: "Debug")
|
||||
|
|
@ -197,7 +212,6 @@ extension JSController {
|
|||
duration: nil
|
||||
)
|
||||
}
|
||||
Logger.shared.log("Successfully extracted \(episodeLinks.count) episodes", type: "Info")
|
||||
} else {
|
||||
Logger.shared.log("Failed to parse JSON of extractEpisodes", type: "Error")
|
||||
}
|
||||
|
|
@ -212,6 +226,7 @@ extension JSController {
|
|||
}
|
||||
|
||||
let catchBlockEpisodes: @convention(block) (JSValue) -> Void = { error in
|
||||
timeoutWorkItem.cancel()
|
||||
episodesGroupQueue.sync {
|
||||
guard !hasLeftEpisodesGroup else {
|
||||
Logger.shared.log("extractEpisodes: catchBlock called but group already left", type: "Debug")
|
||||
|
|
|
|||
Loading…
Reference in a new issue