From 3656c7ee11ccfbe09fe0a5f9f9bf51ddb083a4e1 Mon Sep 17 00:00:00 2001
From: LagradOst <11805592+LagradOst@users.noreply.github.com>
Date: Fri, 3 Jun 2022 18:41:21 +0200
Subject: [PATCH] remove bloat and cc from subtitles
---
.../ui/player/CustomSubtitleDecoderFactory.kt | 33 +-
.../ui/player/PlayerSubtitleHelper.kt | 4 +
.../ui/subtitles/SubtitlesFragment.kt | 11 +
app/src/main/res/layout/subtitle_settings.xml | 295 ++++++++++--------
app/src/main/res/values/strings.xml | 2 +
5 files changed, 197 insertions(+), 148 deletions(-)
diff --git a/app/src/main/java/com/lagradost/cloudstream3/ui/player/CustomSubtitleDecoderFactory.kt b/app/src/main/java/com/lagradost/cloudstream3/ui/player/CustomSubtitleDecoderFactory.kt
index 29fe6e72..8cceec47 100644
--- a/app/src/main/java/com/lagradost/cloudstream3/ui/player/CustomSubtitleDecoderFactory.kt
+++ b/app/src/main/java/com/lagradost/cloudstream3/ui/player/CustomSubtitleDecoderFactory.kt
@@ -38,6 +38,7 @@ class CustomDecoder : SubtitleDecoder {
private const val TAG = "CustomDecoder"
private var overrideEncoding: String? = null
var regexSubtitlesToRemoveCaptions = false
+ var regexSubtitlesToRemoveBloat = false
val bloatRegex =
listOf(
Regex(
@@ -151,13 +152,15 @@ class CustomDecoder : SubtitleDecoder {
)
realDecoder?.let { decoder ->
decoder.dequeueInputBuffer()?.let { buff ->
- if (regexSubtitlesToRemoveCaptions && decoder::class.java != SsaDecoder::class.java) {
- captionRegex.forEach { rgx ->
- str = str.replace(rgx, "\n")
- }
- bloatRegex.forEach { rgx ->
- str = str.replace(rgx, "\n")
- }
+ if (decoder::class.java != SsaDecoder::class.java) {
+ if (regexSubtitlesToRemoveCaptions)
+ captionRegex.forEach { rgx ->
+ str = str.replace(rgx, "\n")
+ }
+ if (regexSubtitlesToRemoveBloat)
+ bloatRegex.forEach { rgx ->
+ str = str.replace(rgx, "\n")
+ }
}
buff.data = ByteBuffer.wrap(str.toByteArray(charset(UTF_8)))
@@ -177,13 +180,15 @@ class CustomDecoder : SubtitleDecoder {
if (!inputString.isNullOrBlank()) {
var str: String = inputString
- if (regexSubtitlesToRemoveCaptions && realDecoder!!::class.java != SsaDecoder::class.java) {
- captionRegex.forEach { rgx ->
- str = str.replace(rgx, "\n")
- }
- bloatRegex.forEach { rgx ->
- str = str.replace(rgx, "\n")
- }
+ if (realDecoder!!::class.java != SsaDecoder::class.java) {
+ if (regexSubtitlesToRemoveCaptions)
+ captionRegex.forEach { rgx ->
+ str = str.replace(rgx, "\n")
+ }
+ if (regexSubtitlesToRemoveBloat)
+ bloatRegex.forEach { rgx ->
+ str = str.replace(rgx, "\n")
+ }
}
inputBuffer.data = ByteBuffer.wrap(str.toByteArray(charset(UTF_8)))
}
diff --git a/app/src/main/java/com/lagradost/cloudstream3/ui/player/PlayerSubtitleHelper.kt b/app/src/main/java/com/lagradost/cloudstream3/ui/player/PlayerSubtitleHelper.kt
index 27d35228..5e443bfa 100644
--- a/app/src/main/java/com/lagradost/cloudstream3/ui/player/PlayerSubtitleHelper.kt
+++ b/app/src/main/java/com/lagradost/cloudstream3/ui/player/PlayerSubtitleHelper.kt
@@ -9,6 +9,8 @@ import com.google.android.exoplayer2.ui.SubtitleView
import com.google.android.exoplayer2.util.MimeTypes
import com.hippo.unifile.UniFile
import com.lagradost.cloudstream3.SubtitleFile
+import com.lagradost.cloudstream3.ui.player.CustomDecoder.Companion.regexSubtitlesToRemoveBloat
+import com.lagradost.cloudstream3.ui.player.CustomDecoder.Companion.regexSubtitlesToRemoveCaptions
import com.lagradost.cloudstream3.ui.subtitles.SaveCaptionStyle
import com.lagradost.cloudstream3.ui.subtitles.SubtitlesFragment.Companion.fromSaveToStyle
import com.lagradost.cloudstream3.utils.UIHelper.toPx
@@ -109,6 +111,8 @@ class PlayerSubtitleHelper {
}
fun setSubStyle(style: SaveCaptionStyle) {
+ regexSubtitlesToRemoveBloat = style.removeBloat
+ regexSubtitlesToRemoveCaptions = style.removeCaptions
subtitleView?.context?.let { ctx ->
subStyle = style
subtitleView?.setStyle(ctx.fromSaveToStyle(style))
diff --git a/app/src/main/java/com/lagradost/cloudstream3/ui/subtitles/SubtitlesFragment.kt b/app/src/main/java/com/lagradost/cloudstream3/ui/subtitles/SubtitlesFragment.kt
index a457d770..0430597b 100644
--- a/app/src/main/java/com/lagradost/cloudstream3/ui/subtitles/SubtitlesFragment.kt
+++ b/app/src/main/java/com/lagradost/cloudstream3/ui/subtitles/SubtitlesFragment.kt
@@ -57,6 +57,8 @@ data class SaveCaptionStyle(
@JsonProperty("elevation") var elevation: Int,
/**in sp**/
@JsonProperty("fixedTextSize") var fixedTextSize: Float?,
+ @JsonProperty("removeCaptions") var removeCaptions: Boolean = false,
+ @JsonProperty("removeBloat") var removeBloat: Boolean = true,
)
const val DEF_SUBS_ELEVATION = 20
@@ -397,6 +399,15 @@ class SubtitlesFragment : Fragment() {
}
}
+ subtitles_remove_bloat?.isChecked = state.removeBloat
+ subtitles_remove_bloat?.setOnCheckedChangeListener { _, b ->
+ state.removeBloat = b
+ }
+ subtitles_remove_captions?.isChecked = state.removeCaptions
+ subtitles_remove_captions?.setOnCheckedChangeListener { _, b ->
+ state.removeCaptions = b
+ }
+
subs_font_size.setOnLongClickListener { _ ->
state.fixedTextSize = null
//textView.context.updateState() // font size not changed
diff --git a/app/src/main/res/layout/subtitle_settings.xml b/app/src/main/res/layout/subtitle_settings.xml
index e1848ed1..3eef98d3 100644
--- a/app/src/main/res/layout/subtitle_settings.xml
+++ b/app/src/main/res/layout/subtitle_settings.xml
@@ -1,195 +1,222 @@
+ xmlns:app="http://schemas.android.com/apk/res-auto"
+ android:id="@+id/subs_root"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:background="?attr/primaryBlackBackground">
-
-
+ android:orientation="vertical">
+
+
+ android:layout_width="match_parent"
+ android:layout_height="75sp">
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:contentDescription="@string/preview_background_img_des"
+ android:scaleType="centerCrop"
+ android:src="@drawable/subtitles_preview_background" />
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:layout_gravity="center"
+ android:foregroundGravity="center" />
+ android:nextFocusRight="@id/cancel_btt"
+ android:nextFocusDown="@id/subs_font_size"
+ android:text="@string/subs_font" />
+ android:nextFocusUp="@id/subs_font"
+ android:nextFocusDown="@id/subs_text_color"
+ android:text="@string/subs_font_size" />
+ android:nextFocusUp="@id/subs_font_size"
+ android:nextFocusDown="@id/subs_outline_color"
+ android:text="@string/subs_text_color" />
+ android:nextFocusUp="@id/subs_text_color"
+ android:nextFocusDown="@id/subs_background_color"
+ android:text="@string/subs_outline_color" />
+ android:nextFocusUp="@id/subs_outline_color"
+ android:nextFocusDown="@id/subs_window_color"
+ android:text="@string/subs_background_color" />
+ android:nextFocusUp="@id/subs_background_color"
+ android:nextFocusDown="@id/subs_edge_type"
+ android:text="@string/subs_window_color" />
+ android:nextFocusUp="@id/subs_window_color"
+ android:nextFocusDown="@id/subs_subtitle_elevation"
+ android:text="@string/subs_edge_type" />
+ android:nextFocusUp="@id/subs_edge_type"
+ android:nextFocusDown="@id/subs_auto_select_language"
+ android:text="@string/subs_subtitle_elevation" />
+ android:nextFocusUp="@id/subs_subtitle_elevation"
+ android:nextFocusDown="@id/subs_download_languages"
+ android:text="@string/subs_auto_select_language" />
+ android:nextFocusUp="@id/subs_auto_select_language"
+ android:nextFocusDown="@id/subtitles_remove_bloat"
+ android:text="@string/subs_download_languages" />
+
+
+
+
+ android:gravity="center"
+ android:text="@string/subs_hold_to_reset_to_default"
+ android:textColor="?attr/textColor"
+ android:textSize="14sp" />
+ android:id="@+id/subs_import_text"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_rowWeight="1"
+ android:gravity="center"
+ android:text="@string/subs_import_text"
+ android:textColor="?attr/textColor"
+ android:textSize="14sp" />
+ android:layout_width="match_parent"
+ android:layout_height="60dp"
+ android:layout_gravity="bottom"
+ android:gravity="bottom|end"
+ android:orientation="horizontal">
+ android:id="@+id/apply_btt"
+ style="@style/WhiteButton"
+ android:layout_width="wrap_content"
+ android:layout_gravity="center_vertical|end"
+ android:nextFocusRight="@id/cancel_btt"
+ android:nextFocusUp="@id/subtitles_remove_captions"
+ android:text="@string/sort_apply"
+ android:visibility="visible">
+ android:id="@+id/cancel_btt"
+ style="@style/BlackButton"
+ android:layout_width="wrap_content"
+ android:layout_gravity="center_vertical|end"
+ android:nextFocusLeft="@id/apply_btt"
+ android:nextFocusUp="@id/subtitles_remove_captions"
+ android:text="@string/sort_cancel" />
\ No newline at end of file
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 22d7002b..02147386 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -523,4 +523,6 @@
Title
Resolution
Invalid id
+ Remove closed captions from subtitles
+ Remove bloat from subtitles