diff --git a/.idea/assetWizardSettings.xml b/.idea/assetWizardSettings.xml
index f70e7af4..41f999de 100644
--- a/.idea/assetWizardSettings.xml
+++ b/.idea/assetWizardSettings.xml
@@ -320,7 +320,7 @@
@@ -331,7 +331,7 @@
diff --git a/app/src/main/java/com/deniscerri/ytdlnis/DownloaderService.java b/app/src/main/java/com/deniscerri/ytdlnis/DownloaderService.java
index 17d0a6c3..20a58652 100644
--- a/app/src/main/java/com/deniscerri/ytdlnis/DownloaderService.java
+++ b/app/src/main/java/com/deniscerri/ytdlnis/DownloaderService.java
@@ -27,9 +27,11 @@ import java.io.FileOutputStream;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
+import java.util.HashSet;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
+import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@@ -315,6 +317,12 @@ public class DownloaderService extends Service {
video.setTitle(video.getTitle().replaceAll(":|'|\"|[.]|,", ""));
video.setAuthor(video.getAuthor().replaceAll(":|'|\"|[.]|,", ""));
+ String sponsorBlockFilters = sharedPreferences.getString("sponsorblock_filter", "");
+ Toast.makeText(context, sponsorBlockFilters, Toast.LENGTH_LONG).show();
+ if (!sponsorBlockFilters.isEmpty()){
+ request.addOption("--sponsorblock-remove", sponsorBlockFilters);
+ }
+
if (type.equals("audio")) {
request.addOption("-x");
String format = video.getAudioFormat();
@@ -337,11 +345,6 @@ public class DownloaderService extends Service {
}
}
- boolean removeNonMusic = sharedPreferences.getBoolean("remove_non_music", false);
- if(removeNonMusic){
- request.addOption("--sponsorblock-remove", "all");
- }
-
request.addCommands(Arrays.asList("--replace-in-metadata","title",".*.",video.getTitle()));
request.addCommands(Arrays.asList("--replace-in-metadata","uploader",".*.",video.getAuthor()));
diff --git a/app/src/main/java/com/deniscerri/ytdlnis/page/settings/SettingsFragment.java b/app/src/main/java/com/deniscerri/ytdlnis/page/settings/SettingsFragment.java
index 4d4b0f9a..8f256136 100644
--- a/app/src/main/java/com/deniscerri/ytdlnis/page/settings/SettingsFragment.java
+++ b/app/src/main/java/com/deniscerri/ytdlnis/page/settings/SettingsFragment.java
@@ -13,15 +13,19 @@ import androidx.activity.result.ActivityResultLauncher;
import androidx.activity.result.contract.ActivityResultContracts;
import androidx.preference.EditTextPreference;
import androidx.preference.ListPreference;
+import androidx.preference.MultiSelectListPreference;
import androidx.preference.Preference;
import androidx.preference.PreferenceFragmentCompat;
import androidx.preference.SeekBarPreference;
import androidx.preference.SwitchPreferenceCompat;
+
import com.deniscerri.ytdlnis.BuildConfig;
import com.deniscerri.ytdlnis.R;
import com.deniscerri.ytdlnis.util.UpdateUtil;
import java.nio.charset.StandardCharsets;
+import java.util.HashSet;
+import java.util.Set;
public class SettingsFragment extends PreferenceFragmentCompat {
@@ -36,7 +40,7 @@ public class SettingsFragment extends PreferenceFragmentCompat {
EditTextPreference limitRate;
SwitchPreferenceCompat aria2;
- SwitchPreferenceCompat removeNonMusic;
+ MultiSelectListPreference sponsorblockFilters;
SwitchPreferenceCompat embedSubtitles;
SwitchPreferenceCompat embedThumbnail;
SwitchPreferenceCompat addChapters;
@@ -82,7 +86,7 @@ public class SettingsFragment extends PreferenceFragmentCompat {
limitRate = findPreference("limit_rate");
aria2 = findPreference("aria2");
- removeNonMusic = findPreference("remove_non_music");
+ sponsorblockFilters = findPreference("sponsorblock_filter");
embedSubtitles = findPreference("embed_subtitles");
embedThumbnail = findPreference("embed_thumbnail");
addChapters = findPreference("add_chapters");
@@ -113,7 +117,7 @@ public class SettingsFragment extends PreferenceFragmentCompat {
editor.putInt("concurrent_fragments", concurrentFragments.getValue());
editor.putString("limit_rate", limitRate.getText());
editor.putBoolean("aria2", aria2.isChecked());
- editor.putBoolean("remove_non_music", removeNonMusic.isChecked());
+ editor.putString("sponsorblock_filter", String.join(",", sponsorblockFilters.getValues()));
editor.putBoolean("embed_subtitles", embedSubtitles.isChecked());
editor.putBoolean("embed_thumbnail", embedThumbnail.isChecked());
editor.putBoolean("add_chapters", addChapters.isChecked());
@@ -192,9 +196,9 @@ public class SettingsFragment extends PreferenceFragmentCompat {
return true;
});
- removeNonMusic.setOnPreferenceChangeListener((preference, newValue) -> {
- boolean remove = (Boolean) newValue;
- editor.putBoolean("remove_non_music", remove);
+ sponsorblockFilters.setOnPreferenceChangeListener((preference, newValue) -> {
+ sponsorblockFilters.setValues((Set) newValue);
+ editor.putString("sponsorblock_filter", String.join(",", (Set)newValue));
editor.apply();
return true;
});
diff --git a/app/src/main/res/drawable/ic_money.xml b/app/src/main/res/drawable/ic_money.xml
new file mode 100644
index 00000000..36601422
--- /dev/null
+++ b/app/src/main/res/drawable/ic_money.xml
@@ -0,0 +1,5 @@
+
+
+
diff --git a/app/src/main/res/values/arrays.xml b/app/src/main/res/values/arrays.xml
index d2f6c6f2..c5278db1 100644
--- a/app/src/main/res/values/arrays.xml
+++ b/app/src/main/res/values/arrays.xml
@@ -28,4 +28,29 @@
- Worst Quality
+
+ - @string/sponsorblock_nonmusic
+ - @string/sponsorblock_sponsors
+ - @string/sponsorblock_intro
+ - @string/sponsorblock_outro
+ - @string/sponsorblock_promos
+ - @string/sponsorblock_previews
+ - @string/sponsorblock_fillers
+ - @string/sponsorblock_reminders
+
+
+
+ - music_offtopic
+ - sponsor
+ - intro
+ - outro
+ - selfpromo
+ - preview
+ - filler
+ - interaction
+
+
+
+ - music_offtopic
+
\ 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 1294b68e..08df8285 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -139,4 +139,13 @@
This app needs File Permissions to save downloads on the device
Exit App
Warning
+ Non-Music and OffTopic portions
+ Sponsors
+ Intro
+ Outro
+ Self Promos
+ Previews
+ Fillers
+ Subscription Reminders
+ Select SponsorBlock Filtering
\ No newline at end of file
diff --git a/app/src/main/res/xml/root_preferences.xml b/app/src/main/res/xml/root_preferences.xml
index 72ebc0ae..a8fdd26a 100644
--- a/app/src/main/res/xml/root_preferences.xml
+++ b/app/src/main/res/xml/root_preferences.xml
@@ -74,12 +74,15 @@
-
+