mirror of
https://github.com/libre-tube/LibreTube.git
synced 2025-04-29 08:20:32 +05:30
Add segment start and end variable.
This commit is contained in:
parent
7a34445ca9
commit
231fe0d503
@ -13,4 +13,6 @@ data class Segment(
|
||||
val userID: String? = null,
|
||||
val videoDuration: Double? = null,
|
||||
val votes: Int? = null
|
||||
)
|
||||
) {
|
||||
val segmentStartAndEnd = segment[0] to segment[1]
|
||||
}
|
||||
|
@ -484,8 +484,8 @@ object PlayerHelper {
|
||||
sponsorBlockConfig: MutableMap<String, SbSkipOptions>
|
||||
): Long? {
|
||||
for (segment in segments.filter { it.category != SPONSOR_HIGHLIGHT_CATEGORY }) {
|
||||
val segmentStart = (segment.segment[0] * 1000f).toLong()
|
||||
val segmentEnd = (segment.segment[1] * 1000f).toLong()
|
||||
val (start, end) = segment.segmentStartAndEnd
|
||||
val (segmentStart, segmentEnd) = (start * 1000f).toLong() to (end * 1000f).toLong()
|
||||
|
||||
// avoid seeking to the same segment multiple times, e.g. when the SB segment is at the end of the video
|
||||
if ((duration - currentPosition).absoluteValue < 500) continue
|
||||
@ -507,15 +507,12 @@ object PlayerHelper {
|
||||
return null
|
||||
}
|
||||
|
||||
fun ExoPlayer.isInSegment(
|
||||
segments: List<Segment>
|
||||
): Boolean {
|
||||
for (segment in segments) {
|
||||
val segmentStart = (segment.segment[0] * 1000f).toLong()
|
||||
val segmentEnd = (segment.segment[1] * 1000f).toLong()
|
||||
if (currentPosition in segmentStart..segmentEnd) return true
|
||||
fun ExoPlayer.isInSegment(segments: List<Segment>): Boolean {
|
||||
return segments.any {
|
||||
val (start, end) = it.segmentStartAndEnd
|
||||
val (segmentStart, segmentEnd) = (start * 1000f).toLong() to (end * 1000f).toLong()
|
||||
currentPosition in segmentStart..segmentEnd
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -1104,14 +1104,14 @@ class PlayerFragment : Fragment(), OnlinePlayerOptions {
|
||||
private fun updateDisplayedDuration() {
|
||||
if (exoPlayer.duration < 0 || streams.livestream || _binding == null) return
|
||||
|
||||
playerBinding.duration.text = DateUtils.formatElapsedTime(
|
||||
exoPlayer.duration.div(1000)
|
||||
)
|
||||
playerBinding.duration.text =
|
||||
DateUtils.formatElapsedTime(exoPlayer.duration / 1000)
|
||||
if (segments.isEmpty()) return
|
||||
|
||||
val durationWithSb = DateUtils.formatElapsedTime(
|
||||
exoPlayer.duration.div(1000) - segments.sumOf {
|
||||
it.segment[1] - it.segment[0]
|
||||
(exoPlayer.duration / 1000) - segments.sumOf {
|
||||
val (start, end) = it.segmentStartAndEnd
|
||||
end - start
|
||||
}.toInt()
|
||||
)
|
||||
playerBinding.duration.text = playerBinding.duration.text.toString() + " ($durationWithSb)"
|
||||
@ -1190,7 +1190,7 @@ class PlayerFragment : Fragment(), OnlinePlayerOptions {
|
||||
val highlightChapter = ChapterSegment(
|
||||
title = getString(R.string.chapters_videoHighlight),
|
||||
image = "",
|
||||
start = highlight.segment[0].toLong(),
|
||||
start = highlight.segmentStartAndEnd.first.toLong(),
|
||||
drawable = drawable
|
||||
)
|
||||
chapters.add(highlightChapter)
|
||||
|
@ -48,11 +48,13 @@ class MarkableTimeBar(
|
||||
val themeColor = ThemeHelper.getThemeColor(context, R.attr.colorOnSecondary)
|
||||
|
||||
segments.forEach {
|
||||
val (start, end) = it.segmentStartAndEnd
|
||||
|
||||
canvas.drawRect(
|
||||
Rect(
|
||||
it.segment.first().toLength() + horizontalOffset,
|
||||
start.toLength() + horizontalOffset,
|
||||
marginY,
|
||||
it.segment.last().toLength() + horizontalOffset,
|
||||
end.toLength() + horizontalOffset,
|
||||
canvas.height - marginY
|
||||
),
|
||||
Paint().apply {
|
||||
|
Loading…
x
Reference in New Issue
Block a user