mirror of
https://github.com/cranci1/Sora.git
synced 2026-04-21 16:42:01 +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 ?? ""
|
airdate: item["airdate"] as? String ?? ""
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
Logger.shared.log("Successfully extracted \(resultItems.count) details", type: "Info")
|
|
||||||
} else {
|
} else {
|
||||||
Logger.shared.log("Failed to parse JSON of extractDetails", type: "Error")
|
Logger.shared.log("Failed to parse JSON of extractDetails", type: "Error")
|
||||||
}
|
}
|
||||||
|
|
@ -162,12 +161,27 @@ extension JSController {
|
||||||
promiseDetails.invokeMethod("catch", withArguments: [catchFunctionDetails as Any])
|
promiseDetails.invokeMethod("catch", withArguments: [catchFunctionDetails as Any])
|
||||||
|
|
||||||
dispatchGroup.enter()
|
dispatchGroup.enter()
|
||||||
|
let promiseValueEpisodes = extractEpisodesFunction.call(withArguments: [url.absoluteString])
|
||||||
|
|
||||||
var hasLeftEpisodesGroup = false
|
var hasLeftEpisodesGroup = false
|
||||||
let episodesGroupQueue = DispatchQueue(label: "episodes.group")
|
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 {
|
guard let promiseEpisodes = promiseValueEpisodes else {
|
||||||
Logger.shared.log("extractEpisodes did not return a Promise", type: "Error")
|
Logger.shared.log("extractEpisodes did not return a Promise", type: "Error")
|
||||||
|
timeoutWorkItem.cancel()
|
||||||
episodesGroupQueue.sync {
|
episodesGroupQueue.sync {
|
||||||
guard !hasLeftEpisodesGroup else { return }
|
guard !hasLeftEpisodesGroup else { return }
|
||||||
hasLeftEpisodesGroup = true
|
hasLeftEpisodesGroup = true
|
||||||
|
|
@ -178,6 +192,7 @@ extension JSController {
|
||||||
}
|
}
|
||||||
|
|
||||||
let thenBlockEpisodes: @convention(block) (JSValue) -> Void = { result in
|
let thenBlockEpisodes: @convention(block) (JSValue) -> Void = { result in
|
||||||
|
timeoutWorkItem.cancel()
|
||||||
episodesGroupQueue.sync {
|
episodesGroupQueue.sync {
|
||||||
guard !hasLeftEpisodesGroup else {
|
guard !hasLeftEpisodesGroup else {
|
||||||
Logger.shared.log("extractEpisodes: thenBlock called but group already left", type: "Debug")
|
Logger.shared.log("extractEpisodes: thenBlock called but group already left", type: "Debug")
|
||||||
|
|
@ -197,7 +212,6 @@ extension JSController {
|
||||||
duration: nil
|
duration: nil
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
Logger.shared.log("Successfully extracted \(episodeLinks.count) episodes", type: "Info")
|
|
||||||
} else {
|
} else {
|
||||||
Logger.shared.log("Failed to parse JSON of extractEpisodes", type: "Error")
|
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
|
let catchBlockEpisodes: @convention(block) (JSValue) -> Void = { error in
|
||||||
|
timeoutWorkItem.cancel()
|
||||||
episodesGroupQueue.sync {
|
episodesGroupQueue.sync {
|
||||||
guard !hasLeftEpisodesGroup else {
|
guard !hasLeftEpisodesGroup else {
|
||||||
Logger.shared.log("extractEpisodes: catchBlock called but group already left", type: "Debug")
|
Logger.shared.log("extractEpisodes: catchBlock called but group already left", type: "Debug")
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue