mirror of
https://github.com/cranci1/Sora.git
synced 2026-04-20 16:12:50 +00:00
added the user request stuff idk
This commit is contained in:
parent
85bca0447a
commit
d85ca35a7d
1 changed files with 43 additions and 16 deletions
|
|
@ -268,34 +268,61 @@ struct MediaInfoView: View {
|
||||||
}
|
}
|
||||||
|
|
||||||
private var startWatchingText: String {
|
private var startWatchingText: String {
|
||||||
for ep in episodeLinks {
|
let (finished, unfinished) = finishedAndUnfinishedIndices()
|
||||||
let lastPlayedTime = UserDefaults.standard.double(forKey: "lastPlayedTime_\(ep.href)")
|
|
||||||
let totalTime = UserDefaults.standard.double(forKey: "totalTime_\(ep.href)")
|
if let finishedIndex = finished, finishedIndex < episodeLinks.count - 1 {
|
||||||
let progress = totalTime > 0 ? lastPlayedTime / totalTime : 0
|
let nextEp = episodeLinks[finishedIndex + 1]
|
||||||
if progress >= 0.1 && (totalTime - lastPlayedTime) > (totalTime * 0.1) {
|
return "Start Watching Episode \(nextEp.number)"
|
||||||
return "Continue Watching Episode \(ep.number)"
|
} else if let unfinishedIndex = unfinished {
|
||||||
}
|
return "Continue Watching Episode \(episodeLinks[unfinishedIndex].number)"
|
||||||
}
|
}
|
||||||
|
|
||||||
return "Start Watching"
|
return "Start Watching"
|
||||||
}
|
}
|
||||||
|
|
||||||
private func playFirstUnwatchedEpisode() {
|
private func playFirstUnwatchedEpisode() {
|
||||||
for ep in episodeLinks {
|
let (finished, unfinished) = finishedAndUnfinishedIndices()
|
||||||
let lastPlayedTime = UserDefaults.standard.double(forKey: "lastPlayedTime_\(ep.href)")
|
|
||||||
let totalTime = UserDefaults.standard.double(forKey: "totalTime_\(ep.href)")
|
if let finishedIndex = finished, finishedIndex < episodeLinks.count - 1 {
|
||||||
let progress = totalTime > 0 ? lastPlayedTime / totalTime : 0
|
let nextEp = episodeLinks[finishedIndex + 1]
|
||||||
if progress >= 0.1 && (totalTime - lastPlayedTime) > (totalTime * 0.1) {
|
selectedEpisodeNumber = nextEp.number
|
||||||
selectedEpisodeNumber = ep.number
|
fetchStream(href: nextEp.href)
|
||||||
fetchStream(href: ep.href)
|
return
|
||||||
return
|
} else if let unfinishedIndex = unfinished {
|
||||||
}
|
let ep = episodeLinks[unfinishedIndex]
|
||||||
|
selectedEpisodeNumber = ep.number
|
||||||
|
fetchStream(href: ep.href)
|
||||||
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if let firstEpisode = episodeLinks.first {
|
if let firstEpisode = episodeLinks.first {
|
||||||
selectedEpisodeNumber = firstEpisode.number
|
selectedEpisodeNumber = firstEpisode.number
|
||||||
fetchStream(href: firstEpisode.href)
|
fetchStream(href: firstEpisode.href)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private func finishedAndUnfinishedIndices() -> (finished: Int?, unfinished: Int?) {
|
||||||
|
var finishedIndex: Int? = nil
|
||||||
|
var firstUnfinishedIndex: Int? = nil
|
||||||
|
|
||||||
|
for (index, ep) in episodeLinks.enumerated() {
|
||||||
|
let keyLast = "lastPlayedTime_\(ep.href)"
|
||||||
|
let keyTotal = "totalTime_\(ep.href)"
|
||||||
|
let lastPlayedTime = UserDefaults.standard.double(forKey: keyLast)
|
||||||
|
let totalTime = UserDefaults.standard.double(forKey: keyTotal)
|
||||||
|
|
||||||
|
guard totalTime > 0 else { continue }
|
||||||
|
|
||||||
|
let remainingFraction = (totalTime - lastPlayedTime) / totalTime
|
||||||
|
if remainingFraction <= 0.1 {
|
||||||
|
finishedIndex = index
|
||||||
|
} else if firstUnfinishedIndex == nil {
|
||||||
|
firstUnfinishedIndex = index
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return (finishedIndex, firstUnfinishedIndex)
|
||||||
|
}
|
||||||
|
|
||||||
private func generateRanges() -> [Range<Int>] {
|
private func generateRanges() -> [Range<Int>] {
|
||||||
let chunkSize = episodeChunkSize
|
let chunkSize = episodeChunkSize
|
||||||
let totalEpisodes = episodeLinks.count
|
let totalEpisodes = episodeLinks.count
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue