From 857c181d4038cfd0389915edc7f1de469a447928 Mon Sep 17 00:00:00 2001 From: "Yevhen Babiichuk (DustDFG)" Date: Fri, 30 Jan 2026 15:15:33 +0200 Subject: [PATCH 1/2] Use EnumSet instead of List for MediaCapabilities inside Service --- .../schabi/newpipe/extractor/StreamingService.java | 12 +++++++----- .../extractor/services/bandcamp/BandcampService.java | 4 ++-- .../services/media_ccc/MediaCCCService.java | 5 +++-- .../extractor/services/peertube/PeertubeService.java | 4 ++-- .../services/soundcloud/SoundcloudService.java | 4 ++-- .../extractor/services/youtube/YoutubeService.java | 4 ++-- 6 files changed, 18 insertions(+), 15 deletions(-) diff --git a/extractor/src/main/java/org/schabi/newpipe/extractor/StreamingService.java b/extractor/src/main/java/org/schabi/newpipe/extractor/StreamingService.java index e7d88c2379..6352b7076f 100644 --- a/extractor/src/main/java/org/schabi/newpipe/extractor/StreamingService.java +++ b/extractor/src/main/java/org/schabi/newpipe/extractor/StreamingService.java @@ -26,7 +26,9 @@ import javax.annotation.Nullable; import java.util.Collections; +import java.util.EnumSet; import java.util.List; +import java.util.Set; /* * Copyright (C) 2018 Christian Schabesberger @@ -54,23 +56,23 @@ public abstract class StreamingService { public static class ServiceInfo { private final String name; - private final List mediaCapabilities; + private final EnumSet mediaCapabilities; /** * Creates a new instance of a ServiceInfo * @param name the name of the service * @param mediaCapabilities the type of media this service can handle */ - public ServiceInfo(final String name, final List mediaCapabilities) { + public ServiceInfo(final String name, final EnumSet mediaCapabilities) { this.name = name; - this.mediaCapabilities = Collections.unmodifiableList(mediaCapabilities); + this.mediaCapabilities = mediaCapabilities; } public String getName() { return name; } - public List getMediaCapabilities() { + public Set getMediaCapabilities() { return mediaCapabilities; } @@ -104,7 +106,7 @@ public enum LinkType { */ public StreamingService(final int id, final String name, - final List capabilities) { + final EnumSet capabilities) { this.serviceId = id; this.serviceInfo = new ServiceInfo(name, capabilities); } diff --git a/extractor/src/main/java/org/schabi/newpipe/extractor/services/bandcamp/BandcampService.java b/extractor/src/main/java/org/schabi/newpipe/extractor/services/bandcamp/BandcampService.java index 92e171d65d..c1cb168ce1 100644 --- a/extractor/src/main/java/org/schabi/newpipe/extractor/services/bandcamp/BandcampService.java +++ b/extractor/src/main/java/org/schabi/newpipe/extractor/services/bandcamp/BandcampService.java @@ -47,12 +47,12 @@ import org.schabi.newpipe.extractor.subscription.SubscriptionExtractor; import org.schabi.newpipe.extractor.suggestion.SuggestionExtractor; -import java.util.Arrays; +import java.util.EnumSet; public class BandcampService extends StreamingService { public BandcampService(final int id) { - super(id, "Bandcamp", Arrays.asList(AUDIO, COMMENTS)); + super(id, "Bandcamp", EnumSet.of(AUDIO, COMMENTS)); } @Override diff --git a/extractor/src/main/java/org/schabi/newpipe/extractor/services/media_ccc/MediaCCCService.java b/extractor/src/main/java/org/schabi/newpipe/extractor/services/media_ccc/MediaCCCService.java index bb03a2c0b2..cacdd20b1b 100644 --- a/extractor/src/main/java/org/schabi/newpipe/extractor/services/media_ccc/MediaCCCService.java +++ b/extractor/src/main/java/org/schabi/newpipe/extractor/services/media_ccc/MediaCCCService.java @@ -2,7 +2,6 @@ import static org.schabi.newpipe.extractor.StreamingService.ServiceInfo.MediaCapability.AUDIO; import static org.schabi.newpipe.extractor.StreamingService.ServiceInfo.MediaCapability.VIDEO; -import static java.util.Arrays.asList; import org.schabi.newpipe.extractor.StreamingService; import org.schabi.newpipe.extractor.channel.ChannelExtractor; @@ -38,9 +37,11 @@ import org.schabi.newpipe.extractor.subscription.SubscriptionExtractor; import org.schabi.newpipe.extractor.suggestion.SuggestionExtractor; +import java.util.EnumSet; + public class MediaCCCService extends StreamingService { public MediaCCCService(final int id) { - super(id, "media.ccc.de", asList(AUDIO, VIDEO)); + super(id, "media.ccc.de", EnumSet.of(AUDIO, VIDEO)); } @Override diff --git a/extractor/src/main/java/org/schabi/newpipe/extractor/services/peertube/PeertubeService.java b/extractor/src/main/java/org/schabi/newpipe/extractor/services/peertube/PeertubeService.java index ddd9d5395e..d393f273df 100644 --- a/extractor/src/main/java/org/schabi/newpipe/extractor/services/peertube/PeertubeService.java +++ b/extractor/src/main/java/org/schabi/newpipe/extractor/services/peertube/PeertubeService.java @@ -2,7 +2,6 @@ import static org.schabi.newpipe.extractor.StreamingService.ServiceInfo.MediaCapability.COMMENTS; import static org.schabi.newpipe.extractor.StreamingService.ServiceInfo.MediaCapability.VIDEO; -import static java.util.Arrays.asList; import org.schabi.newpipe.extractor.StreamingService; import org.schabi.newpipe.extractor.channel.ChannelExtractor; @@ -38,6 +37,7 @@ import org.schabi.newpipe.extractor.subscription.SubscriptionExtractor; import org.schabi.newpipe.extractor.suggestion.SuggestionExtractor; +import java.util.EnumSet; import java.util.List; public class PeertubeService extends StreamingService { @@ -49,7 +49,7 @@ public PeertubeService(final int id) { } public PeertubeService(final int id, final PeertubeInstance instance) { - super(id, "PeerTube", asList(VIDEO, COMMENTS)); + super(id, "PeerTube", EnumSet.of(VIDEO, COMMENTS)); this.instance = instance; } diff --git a/extractor/src/main/java/org/schabi/newpipe/extractor/services/soundcloud/SoundcloudService.java b/extractor/src/main/java/org/schabi/newpipe/extractor/services/soundcloud/SoundcloudService.java index 4ec890d28f..40611ce5d5 100644 --- a/extractor/src/main/java/org/schabi/newpipe/extractor/services/soundcloud/SoundcloudService.java +++ b/extractor/src/main/java/org/schabi/newpipe/extractor/services/soundcloud/SoundcloudService.java @@ -2,7 +2,6 @@ import static org.schabi.newpipe.extractor.StreamingService.ServiceInfo.MediaCapability.AUDIO; import static org.schabi.newpipe.extractor.StreamingService.ServiceInfo.MediaCapability.COMMENTS; -import static java.util.Arrays.asList; import org.schabi.newpipe.extractor.StreamingService; import org.schabi.newpipe.extractor.channel.ChannelExtractor; @@ -38,12 +37,13 @@ import org.schabi.newpipe.extractor.stream.StreamExtractor; import org.schabi.newpipe.extractor.subscription.SubscriptionExtractor; +import java.util.EnumSet; import java.util.List; public class SoundcloudService extends StreamingService { public SoundcloudService(final int id) { - super(id, "SoundCloud", asList(AUDIO, COMMENTS)); + super(id, "SoundCloud", EnumSet.of(AUDIO, COMMENTS)); } @Override diff --git a/extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/YoutubeService.java b/extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/YoutubeService.java index 128fbfdb91..7127453fda 100644 --- a/extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/YoutubeService.java +++ b/extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/YoutubeService.java @@ -4,7 +4,6 @@ import static org.schabi.newpipe.extractor.StreamingService.ServiceInfo.MediaCapability.COMMENTS; import static org.schabi.newpipe.extractor.StreamingService.ServiceInfo.MediaCapability.LIVE; import static org.schabi.newpipe.extractor.StreamingService.ServiceInfo.MediaCapability.VIDEO; -import static java.util.Arrays.asList; import org.schabi.newpipe.extractor.StreamingService; import org.schabi.newpipe.extractor.channel.ChannelExtractor; @@ -57,6 +56,7 @@ import org.schabi.newpipe.extractor.subscription.SubscriptionExtractor; import org.schabi.newpipe.extractor.suggestion.SuggestionExtractor; +import java.util.EnumSet; import java.util.List; import javax.annotation.Nonnull; @@ -84,7 +84,7 @@ public class YoutubeService extends StreamingService { public YoutubeService(final int id) { - super(id, "YouTube", asList(AUDIO, VIDEO, LIVE, COMMENTS)); + super(id, "YouTube", EnumSet.of(AUDIO, VIDEO, LIVE, COMMENTS)); } @Override From a5aa7a09a374d6d19db7b2729ee4b34d4064395e Mon Sep 17 00:00:00 2001 From: tobigr Date: Sat, 21 Feb 2026 16:51:52 +0100 Subject: [PATCH 2/2] Don't specify implementation, just the interface --- .../org/schabi/newpipe/extractor/StreamingService.java | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/extractor/src/main/java/org/schabi/newpipe/extractor/StreamingService.java b/extractor/src/main/java/org/schabi/newpipe/extractor/StreamingService.java index 6352b7076f..0216ba3aa0 100644 --- a/extractor/src/main/java/org/schabi/newpipe/extractor/StreamingService.java +++ b/extractor/src/main/java/org/schabi/newpipe/extractor/StreamingService.java @@ -26,7 +26,6 @@ import javax.annotation.Nullable; import java.util.Collections; -import java.util.EnumSet; import java.util.List; import java.util.Set; @@ -56,14 +55,14 @@ public abstract class StreamingService { public static class ServiceInfo { private final String name; - private final EnumSet mediaCapabilities; + private final Set mediaCapabilities; /** * Creates a new instance of a ServiceInfo * @param name the name of the service * @param mediaCapabilities the type of media this service can handle */ - public ServiceInfo(final String name, final EnumSet mediaCapabilities) { + public ServiceInfo(final String name, final Set mediaCapabilities) { this.name = name; this.mediaCapabilities = mediaCapabilities; } @@ -106,7 +105,7 @@ public enum LinkType { */ public StreamingService(final int id, final String name, - final EnumSet capabilities) { + final Set capabilities) { this.serviceId = id; this.serviceInfo = new ServiceInfo(name, capabilities); }