Skip to content

Commit

Permalink
Fix #163
Browse files Browse the repository at this point in the history
  • Loading branch information
arekf committed Jul 4, 2022
1 parent beace00 commit 625b3dc
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 9 deletions.
36 changes: 28 additions & 8 deletions Model/Player/PlayerSponsorBlock.swift
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import CoreMedia
import AVFAudio
import Defaults
import Foundation

Expand All @@ -18,23 +19,42 @@ extension PlayerModel {
var nextSegments = [firstSegment]

while let segment = sponsorBlock.segments.first(where: {
$0.timeInSegment(.secondsInDefaultTimescale(nextSegments.last!.end + 2))
!nextSegments.contains($0) &&
$0.timeInSegment(.secondsInDefaultTimescale(nextSegments.last!.end + 2))
}) {
nextSegments.append(segment)
}

if let segmentToSkip = nextSegments.last(where: { $0.endTime <= playerItemDuration ?? .zero }),
shouldSkip(segmentToSkip, at: time)
{
if let segmentToSkip = nextSegments.last, shouldSkip(segmentToSkip, at: time) {
skip(segmentToSkip, at: time)
}
}

private func skip(_ segment: Segment, at time: CMTime) {
guard segment.endTime.seconds <= playerItemDuration?.seconds ?? .infinity else {
logger.error(
"segment end time is: \(segment.end) when player item duration is: \(playerItemDuration?.seconds ?? .infinity)"
)
if let duration = playerItemDuration, segment.endTime.seconds >= duration.seconds - 3 {
logger.error("segment end time is: \(segment.end) when player item duration is: \(duration.seconds)")


DispatchQueue.main.async { [weak self] in
guard let self = self else {
return
}

self.prepareCurrentItemForHistory(finished: true)
self.pause()

if self.queue.isEmpty {
#if !os(macOS)
try? AVAudioSession.sharedInstance().setActive(false)
#endif

self.resetQueue()
self.hide()
} else {
self.advanceToNextItem()
}
}

return
}

Expand Down
2 changes: 1 addition & 1 deletion Model/Segment.swift
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ class Segment: ObservableObject, Hashable {
}

var endTime: CMTime {
CMTime(seconds: end, preferredTimescale: 1000)
.secondsInDefaultTimescale(end)
}

init(category: String, segment: [Double], uuid: String, videoDuration: Int) {
Expand Down

0 comments on commit 625b3dc

Please sign in to comment.