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 userID: String? = null,
|
||||||
val videoDuration: Double? = null,
|
val videoDuration: Double? = null,
|
||||||
val votes: Int? = null
|
val votes: Int? = null
|
||||||
)
|
) {
|
||||||
|
val segmentStartAndEnd = segment[0] to segment[1]
|
||||||
|
}
|
||||||
|
@ -484,8 +484,8 @@ object PlayerHelper {
|
|||||||
sponsorBlockConfig: MutableMap<String, SbSkipOptions>
|
sponsorBlockConfig: MutableMap<String, SbSkipOptions>
|
||||||
): Long? {
|
): Long? {
|
||||||
for (segment in segments.filter { it.category != SPONSOR_HIGHLIGHT_CATEGORY }) {
|
for (segment in segments.filter { it.category != SPONSOR_HIGHLIGHT_CATEGORY }) {
|
||||||
val segmentStart = (segment.segment[0] * 1000f).toLong()
|
val (start, end) = segment.segmentStartAndEnd
|
||||||
val segmentEnd = (segment.segment[1] * 1000f).toLong()
|
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
|
// 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
|
if ((duration - currentPosition).absoluteValue < 500) continue
|
||||||
@ -507,15 +507,12 @@ object PlayerHelper {
|
|||||||
return null
|
return null
|
||||||
}
|
}
|
||||||
|
|
||||||
fun ExoPlayer.isInSegment(
|
fun ExoPlayer.isInSegment(segments: List<Segment>): Boolean {
|
||||||
segments: List<Segment>
|
return segments.any {
|
||||||
): Boolean {
|
val (start, end) = it.segmentStartAndEnd
|
||||||
for (segment in segments) {
|
val (segmentStart, segmentEnd) = (start * 1000f).toLong() to (end * 1000f).toLong()
|
||||||
val segmentStart = (segment.segment[0] * 1000f).toLong()
|
currentPosition in segmentStart..segmentEnd
|
||||||
val segmentEnd = (segment.segment[1] * 1000f).toLong()
|
|
||||||
if (currentPosition in segmentStart..segmentEnd) return true
|
|
||||||
}
|
}
|
||||||
return false
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1104,14 +1104,14 @@ class PlayerFragment : Fragment(), OnlinePlayerOptions {
|
|||||||
private fun updateDisplayedDuration() {
|
private fun updateDisplayedDuration() {
|
||||||
if (exoPlayer.duration < 0 || streams.livestream || _binding == null) return
|
if (exoPlayer.duration < 0 || streams.livestream || _binding == null) return
|
||||||
|
|
||||||
playerBinding.duration.text = DateUtils.formatElapsedTime(
|
playerBinding.duration.text =
|
||||||
exoPlayer.duration.div(1000)
|
DateUtils.formatElapsedTime(exoPlayer.duration / 1000)
|
||||||
)
|
|
||||||
if (segments.isEmpty()) return
|
if (segments.isEmpty()) return
|
||||||
|
|
||||||
val durationWithSb = DateUtils.formatElapsedTime(
|
val durationWithSb = DateUtils.formatElapsedTime(
|
||||||
exoPlayer.duration.div(1000) - segments.sumOf {
|
(exoPlayer.duration / 1000) - segments.sumOf {
|
||||||
it.segment[1] - it.segment[0]
|
val (start, end) = it.segmentStartAndEnd
|
||||||
|
end - start
|
||||||
}.toInt()
|
}.toInt()
|
||||||
)
|
)
|
||||||
playerBinding.duration.text = playerBinding.duration.text.toString() + " ($durationWithSb)"
|
playerBinding.duration.text = playerBinding.duration.text.toString() + " ($durationWithSb)"
|
||||||
@ -1190,7 +1190,7 @@ class PlayerFragment : Fragment(), OnlinePlayerOptions {
|
|||||||
val highlightChapter = ChapterSegment(
|
val highlightChapter = ChapterSegment(
|
||||||
title = getString(R.string.chapters_videoHighlight),
|
title = getString(R.string.chapters_videoHighlight),
|
||||||
image = "",
|
image = "",
|
||||||
start = highlight.segment[0].toLong(),
|
start = highlight.segmentStartAndEnd.first.toLong(),
|
||||||
drawable = drawable
|
drawable = drawable
|
||||||
)
|
)
|
||||||
chapters.add(highlightChapter)
|
chapters.add(highlightChapter)
|
||||||
|
@ -48,11 +48,13 @@ class MarkableTimeBar(
|
|||||||
val themeColor = ThemeHelper.getThemeColor(context, R.attr.colorOnSecondary)
|
val themeColor = ThemeHelper.getThemeColor(context, R.attr.colorOnSecondary)
|
||||||
|
|
||||||
segments.forEach {
|
segments.forEach {
|
||||||
|
val (start, end) = it.segmentStartAndEnd
|
||||||
|
|
||||||
canvas.drawRect(
|
canvas.drawRect(
|
||||||
Rect(
|
Rect(
|
||||||
it.segment.first().toLength() + horizontalOffset,
|
start.toLength() + horizontalOffset,
|
||||||
marginY,
|
marginY,
|
||||||
it.segment.last().toLength() + horizontalOffset,
|
end.toLength() + horizontalOffset,
|
||||||
canvas.height - marginY
|
canvas.height - marginY
|
||||||
),
|
),
|
||||||
Paint().apply {
|
Paint().apply {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user