From babc6f9e753cfeb6f95c12f7f55dfde877fdc2b9 Mon Sep 17 00:00:00 2001 From: caneleex Date: Fri, 18 Jun 2021 14:46:55 +0200 Subject: [PATCH] add preview category (#17) --- .../java/pl/jakubweg/PlayerController.java | 4 ++-- .../SponsorBlockPreferenceFragment.java | 2 +- .../pl/jakubweg/SponsorBlockSettings.java | 20 ++++++++++--------- .../java/pl/jakubweg/SponsorBlockUtils.java | 18 ++++++++++------- app/src/main/res/values/strings.xml | 3 +++ 5 files changed, 28 insertions(+), 19 deletions(-) diff --git a/app/src/main/java/pl/jakubweg/PlayerController.java b/app/src/main/java/pl/jakubweg/PlayerController.java index c06d0e5..9dc1a2f 100644 --- a/app/src/main/java/pl/jakubweg/PlayerController.java +++ b/app/src/main/java/pl/jakubweg/PlayerController.java @@ -269,7 +269,7 @@ public class PlayerController { @Override public void run() { if (SponsorBlockSettings.countSkips && - segment.category != SponsorBlockSettings.SegmentInfo.Preview && + segment.category != SponsorBlockSettings.SegmentInfo.Unsubmitted && millis - segment.start < 2000) { // Only skips from the start should count as a view SponsorBlockUtils.sendViewCountRequest(segment); @@ -508,7 +508,7 @@ public class PlayerController { skipToMillisecond(segment.end + 2); SkipSegmentView.hide(); - if (segment.category == SponsorBlockSettings.SegmentInfo.Preview) { + if (segment.category == SponsorBlockSettings.SegmentInfo.Unsubmitted) { SponsorSegment[] newSegments = new SponsorSegment[sponsorSegmentsOfCurrentVideo.length - 1]; int i = 0; for (SponsorSegment sponsorSegment : sponsorSegmentsOfCurrentVideo) { diff --git a/app/src/main/java/pl/jakubweg/SponsorBlockPreferenceFragment.java b/app/src/main/java/pl/jakubweg/SponsorBlockPreferenceFragment.java index e29c651..fb3f667 100644 --- a/app/src/main/java/pl/jakubweg/SponsorBlockPreferenceFragment.java +++ b/app/src/main/java/pl/jakubweg/SponsorBlockPreferenceFragment.java @@ -158,7 +158,7 @@ public class SponsorBlockPreferenceFragment extends PreferenceFragment implement entryValues[i] = behaviour.key; } - for (SponsorBlockSettings.SegmentInfo segmentInfo : SponsorBlockSettings.SegmentInfo.valuesWithoutPreview()) { + for (SponsorBlockSettings.SegmentInfo segmentInfo : SponsorBlockSettings.SegmentInfo.valuesWithoutUnsubmitted()) { ListPreference preference = new ListPreference(context); preference.setTitle(segmentInfo.getTitleWithDot()); preference.setSummary(segmentInfo.description.toString()); diff --git a/app/src/main/java/pl/jakubweg/SponsorBlockSettings.java b/app/src/main/java/pl/jakubweg/SponsorBlockSettings.java index d2a0f12..770b179 100644 --- a/app/src/main/java/pl/jakubweg/SponsorBlockSettings.java +++ b/app/src/main/java/pl/jakubweg/SponsorBlockSettings.java @@ -106,7 +106,7 @@ public class SponsorBlockSettings { SegmentBehaviour[] possibleBehaviours = SegmentBehaviour.values(); final ArrayList enabledCategories = new ArrayList<>(possibleBehaviours.length); - for (SegmentInfo segment : SegmentInfo.valuesWithoutPreview()) { + for (SegmentInfo segment : SegmentInfo.valuesWithoutUnsubmitted()) { SegmentBehaviour behaviour = null; String value = preferences.getString(segment.key, null); if (value == null) @@ -127,7 +127,7 @@ public class SponsorBlockSettings { enabledCategories.add(segment.key); } - //"[%22sponsor%22,%22outro%22,%22music_offtopic%22,%22intro%22,%22selfpromo%22,%22interaction%22]"; + //"[%22sponsor%22,%22outro%22,%22music_offtopic%22,%22intro%22,%22selfpromo%22,%22interaction%22,%22preview%22]"; if (enabledCategories.size() == 0) sponsorBlockUrlCategories = "[]"; else @@ -179,21 +179,23 @@ public class SponsorBlockSettings { Interaction("interaction", sf("segments_subscribe"), sf("skipped_subscribe"), sf("segments_subscribe_sum"), null, 0xFFcc00ff), SelfPromo("selfpromo", sf("segments_selfpromo"), sf("skipped_selfpromo"), sf("segments_selfpromo_sum"), null, 0xFFffff00), MusicOfftopic("music_offtopic", sf("segments_nomusic"), sf("skipped_nomusic"), sf("segments_nomusic_sum"), null, 0xFFff9900), - Preview("preview", StringRef.empty, sf("skipped_preview"), StringRef.empty, SegmentBehaviour.SkipAutomatically, 0xFF000000), + Preview("preview", sf("segments_preview"), sf("skipped_preview"), sf("segments_preview_sum"), null, 0xFF0b9d65), + Unsubmitted("unsubmitted", StringRef.empty, sf("skipped_unsubmitted"), StringRef.empty, SegmentBehaviour.SkipAutomatically, 0xFFFFFFFF), ; - private static SegmentInfo[] mValuesWithoutPreview = new SegmentInfo[]{ + private static SegmentInfo[] mValuesWithoutUnsubmitted = new SegmentInfo[]{ Sponsor, Intro, Outro, Interaction, SelfPromo, - MusicOfftopic + MusicOfftopic, + Preview }; - private static Map mValuesMap = new HashMap<>(7); + private static Map mValuesMap = new HashMap<>(8); static { - for (SegmentInfo value : valuesWithoutPreview()) + for (SegmentInfo value : valuesWithoutUnsubmitted()) mValuesMap.put(value.key, value); } @@ -223,8 +225,8 @@ public class SponsorBlockSettings { paint.setColor(color); } - public static SegmentInfo[] valuesWithoutPreview() { - return mValuesWithoutPreview; + public static SegmentInfo[] valuesWithoutUnsubmitted() { + return mValuesWithoutUnsubmitted; } public static SegmentInfo byCategoryKey(String key) { diff --git a/app/src/main/java/pl/jakubweg/SponsorBlockUtils.java b/app/src/main/java/pl/jakubweg/SponsorBlockUtils.java index 1175729..299992f 100644 --- a/app/src/main/java/pl/jakubweg/SponsorBlockUtils.java +++ b/app/src/main/java/pl/jakubweg/SponsorBlockUtils.java @@ -27,6 +27,7 @@ import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Arrays; import java.util.Date; +import java.util.List; import java.util.Locale; import java.util.Objects; import java.util.TimeZone; @@ -96,7 +97,7 @@ public abstract class SponsorBlockUtils { private static final DialogInterface.OnClickListener segmentTypeListener = new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { - SponsorBlockSettings.SegmentInfo segmentType = SponsorBlockSettings.SegmentInfo.valuesWithoutPreview()[which]; + SponsorBlockSettings.SegmentInfo segmentType = SponsorBlockSettings.SegmentInfo.valuesWithoutUnsubmitted()[which]; boolean enableButton; if (!segmentType.behaviour.showOnTimeBar) { Toast.makeText( @@ -126,7 +127,7 @@ public abstract class SponsorBlockUtils { Context context = ((AlertDialog) dialog).getContext(); dialog.dismiss(); - SponsorBlockSettings.SegmentInfo[] values = SponsorBlockSettings.SegmentInfo.valuesWithoutPreview(); + SponsorBlockSettings.SegmentInfo[] values = SponsorBlockSettings.SegmentInfo.valuesWithoutUnsubmitted(); CharSequence[] titles = new CharSequence[values.length]; for (int i = 0; i < values.length; i++) { // titles[i] = values[i].title; @@ -366,9 +367,12 @@ public abstract class SponsorBlockUtils { return; } int segmentAmount = sponsorSegmentsOfCurrentVideo.length; - CharSequence[] titles = new CharSequence[segmentAmount]; + List titles = new ArrayList<>(segmentAmount); // I've replaced an array with a list to prevent null elements in the array as unsubmitted segments get filtered out for (int i = 0; i < segmentAmount; i++) { SponsorSegment segment = sponsorSegmentsOfCurrentVideo[i]; + if (segment.category == SponsorBlockSettings.SegmentInfo.Unsubmitted) { + continue; + } String start = dateFormatter.format(new Date(segment.start)); String end = dateFormatter.format(new Date(segment.end)); @@ -377,16 +381,16 @@ public abstract class SponsorBlockUtils { segment.category.color, segment.category.title, start, end)); if (i + 1 != segmentAmount) // prevents trailing new line after last segment htmlBuilder.append("
"); - titles[i] = Html.fromHtml(htmlBuilder.toString()); + titles.add(Html.fromHtml(htmlBuilder.toString())); } new AlertDialog.Builder(context) - .setItems(titles, segmentVoteClickListener) + .setItems(titles.toArray(new CharSequence[0]), segmentVoteClickListener) .show(); } private static void onNewCategorySelect(final SponsorSegment segment, Context context) { - final SponsorBlockSettings.SegmentInfo[] values = SponsorBlockSettings.SegmentInfo.valuesWithoutPreview(); + final SponsorBlockSettings.SegmentInfo[] values = SponsorBlockSettings.SegmentInfo.valuesWithoutUnsubmitted(); CharSequence[] titles = new CharSequence[values.length]; for (int i = 0; i < values.length; i++) { titles[i] = values[i].getTitleWithDot(); @@ -414,7 +418,7 @@ public abstract class SponsorBlockUtils { final SponsorSegment[] segments = original == null ? new SponsorSegment[1] : Arrays.copyOf(original, original.length + 1); segments[segments.length - 1] = new SponsorSegment(newSponsorSegmentStartMillis, newSponsorSegmentEndMillis, - SponsorBlockSettings.SegmentInfo.Preview, null); + SponsorBlockSettings.SegmentInfo.Unsubmitted, null); Arrays.sort(segments); sponsorSegmentsOfCurrentVideo = segments; diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 05b7a05..7b1d5fe 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -167,6 +167,8 @@ Similar to "sponsor" except for unpaid or self promotion. This includes sections about merchandise, donations, or information about who they collaborated with Music: Non-Music Section Only for use in music videos. This includes introductions or outros in music videos + Preview/Recap + Quick recap of previous episodes, or a preview of what\'s coming up later in the current video. Meant for edited together clips, not for spoken summaries. Skipped sponsor Skipped intro Skipped outro @@ -174,6 +176,7 @@ Skipped self promotion Skipped silence Skipped preview + Skipped unsubmitted segment Skip automatically Show a skip button Don\'t do anything