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