mirror of
https://github.com/cranci1/Sora.git
synced 2026-01-11 20:10:24 +00:00
I'm going to sleep
This commit is contained in:
parent
e30de77ad7
commit
1d50bc9985
2 changed files with 52 additions and 7 deletions
|
|
@ -162,7 +162,8 @@ extension JSController {
|
|||
showTitle: animeTitle,
|
||||
season: season,
|
||||
episode: episode,
|
||||
showPosterURL: showPosterURL // Main show poster
|
||||
showPosterURL: showPosterURL, // Main show poster
|
||||
isFiller: isFiller
|
||||
)
|
||||
|
||||
// Create the download ID now so we can use it for notifications
|
||||
|
|
@ -1224,15 +1225,43 @@ extension JSController: AVAssetDownloadDelegate {
|
|||
|
||||
// If there's a subtitle URL, download it now that the video is saved
|
||||
// Also fetch OP/ED skip timestamps in parallel and save simple sidecar JSON next to the video
|
||||
if download.metadata?.episode != nil && download.type == .episode {
|
||||
fetchSkipTimestampsFor(request: download, persistentURL: persistentURL) { ok in
|
||||
if ok {
|
||||
Logger.shared.log("[SkipSidecar] Saved OP/ED sidecar for episode \(download.metadata?.episode ?? -1) at: \(persistentURL.path)", type: "Download")
|
||||
} else {
|
||||
Logger.shared.log("[SkipSidecar] Failed to save sidecar for episode \(download.metadata?.episode ?? -1)", type: "Download")
|
||||
|
||||
if download.metadata?.episode != nil && download.type == .episode {
|
||||
// Ensure we have MAL ID just like the streaming path (CustomPlayer)
|
||||
if download.malID == nil, let aid = download.aniListID {
|
||||
AniListMutation().fetchMalID(animeId: aid) { [weak self] result in
|
||||
switch result {
|
||||
case .success(let mal):
|
||||
// Update the active download in-place with MAL ID
|
||||
if let idx = self?.activeDownloads.firstIndex(where: { $0.id == download.id }) {
|
||||
var updated = self?.activeDownloads[idx]
|
||||
updated?.malID = mal
|
||||
if let up = updated { self?.activeDownloads[idx] = up }
|
||||
self?.fetchSkipTimestampsFor(request: up, persistentURL: persistentURL) { ok in
|
||||
if ok {
|
||||
Logger.shared.log("[SkipSidecar] Saved OP/ED sidecar for episode \(up.metadata?.episode ?? -1) at: \(persistentURL.path)", type: "Download")
|
||||
} else {
|
||||
Logger.shared.log("[SkipSidecar] Failed to save sidecar for episode \(up.metadata?.episode ?? -1)", type: "Download")
|
||||
}
|
||||
}
|
||||
}
|
||||
case .failure(let error):
|
||||
Logger.shared.log("Unable to fetch MAL ID: \(error)", type: "Error")
|
||||
Logger.shared.log("[SkipSidecar] Missing MAL ID for AniSkip v2 request", type: "Download")
|
||||
}
|
||||
}
|
||||
} else {
|
||||
fetchSkipTimestampsFor(request: download, persistentURL: persistentURL) { ok in
|
||||
if ok {
|
||||
Logger.shared.log("[SkipSidecar] Saved OP/ED sidecar for episode \(download.metadata?.episode ?? -1) at: \(persistentURL.path)", type: "Download")
|
||||
} else {
|
||||
Logger.shared.log("[SkipSidecar] Failed to save sidecar for episode \(download.metadata?.episode ?? -1)", type: "Download")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if let subtitleURL = download.subtitleURL {
|
||||
downloadSubtitle(subtitleURL: subtitleURL, assetID: newAsset.id.uuidString)
|
||||
|
|
|
|||
|
|
@ -1392,6 +1392,22 @@ struct EnhancedEpisodeRow: View {
|
|||
VStack(alignment: .leading) {
|
||||
Text("Episode \(asset.metadata?.episode ?? 0)")
|
||||
.font(.system(size: 15))
|
||||
|
||||
if asset.metadata?.isFiller == true {
|
||||
Text("Filler")
|
||||
.font(.system(size: 12, weight: .semibold))
|
||||
.padding(.horizontal, 8)
|
||||
.padding(.vertical, 4)
|
||||
.background(
|
||||
Capsule()
|
||||
.fill(Color.red.opacity(colorScheme == .dark ? 0.20 : 0.10))
|
||||
)
|
||||
.overlay(
|
||||
Capsule()
|
||||
.stroke(Color.red.opacity(0.24), lineWidth: 0.6)
|
||||
)
|
||||
.foregroundColor(.red)
|
||||
}
|
||||
if let title = asset.metadata?.title {
|
||||
Text(title)
|
||||
.font(.system(size: 13))
|
||||
|
|
|
|||
Loading…
Reference in a new issue