From 1e2e0029fc701326802612a328adb8433e725e47 Mon Sep 17 00:00:00 2001
From: litetex <40789489+litetex@users.noreply.github.com>
Date: Mon, 27 Dec 2021 16:49:12 +0100
Subject: [PATCH] [StreamExtractor] Deduplicated a ton of code by using default
methods
---
.../BandcampRadioStreamExtractor.java | 9 +-
.../extractors/BandcampStreamExtractor.java | 118 --------------
.../MediaCCCLiveStreamExtractor.java | 143 ----------------
.../extractors/MediaCCCStreamExtractor.java | 120 --------------
.../extractors/PeertubeStreamExtractor.java | 28 ----
.../extractors/SoundcloudStreamExtractor.java | 86 ----------
.../extractors/YoutubeStreamExtractor.java | 30 ----
.../extractor/stream/StreamExtractor.java | 154 ++++++++++++------
8 files changed, 109 insertions(+), 579 deletions(-)
diff --git a/extractor/src/main/java/org/schabi/newpipe/extractor/services/bandcamp/extractors/BandcampRadioStreamExtractor.java b/extractor/src/main/java/org/schabi/newpipe/extractor/services/bandcamp/extractors/BandcampRadioStreamExtractor.java
index ba24c4a7..edd7c33f 100644
--- a/extractor/src/main/java/org/schabi/newpipe/extractor/services/bandcamp/extractors/BandcampRadioStreamExtractor.java
+++ b/extractor/src/main/java/org/schabi/newpipe/extractor/services/bandcamp/extractors/BandcampRadioStreamExtractor.java
@@ -149,27 +149,24 @@ public class BandcampRadioStreamExtractor extends BandcampStreamExtractor {
@Nonnull
@Override
public String getLicence() {
+ // Contrary to other Bandcamp streams, radio streams don't have a license
return "";
}
@Nonnull
@Override
public String getCategory() {
+ // Contrary to other Bandcamp streams, radio streams don't have categories
return "";
}
@Nonnull
@Override
public List getTags() {
+ // Contrary to other Bandcamp streams, radio streams don't have tags
return Collections.emptyList();
}
- @Nonnull
- @Override
- public Privacy getPrivacy() {
- return Privacy.PUBLIC;
- }
-
@Override
public PlaylistInfoItemsCollector getRelatedItems() {
// Contrary to other Bandcamp streams, radio streams don't have related items
diff --git a/extractor/src/main/java/org/schabi/newpipe/extractor/services/bandcamp/extractors/BandcampStreamExtractor.java b/extractor/src/main/java/org/schabi/newpipe/extractor/services/bandcamp/extractors/BandcampStreamExtractor.java
index e2be2251..530c182b 100644
--- a/extractor/src/main/java/org/schabi/newpipe/extractor/services/bandcamp/extractors/BandcampStreamExtractor.java
+++ b/extractor/src/main/java/org/schabi/newpipe/extractor/services/bandcamp/extractors/BandcampStreamExtractor.java
@@ -98,11 +98,6 @@ public class BandcampStreamExtractor extends StreamExtractor {
return albumJson.getString("artist");
}
- @Override
- public boolean isUploaderVerified() throws ParsingException {
- return false;
- }
-
@Nullable
@Override
public String getTextualUploadDate() {
@@ -132,24 +127,6 @@ public class BandcampStreamExtractor extends StreamExtractor {
}
}
- @Nonnull
- @Override
- public String getSubChannelUrl() {
- return "";
- }
-
- @Nonnull
- @Override
- public String getSubChannelName() {
- return "";
- }
-
- @Nonnull
- @Override
- public String getSubChannelAvatarUrl() {
- return "";
- }
-
@Nonnull
@Override
public Description getDescription() {
@@ -164,48 +141,6 @@ public class BandcampStreamExtractor extends StreamExtractor {
return new Description(s, Description.PLAIN_TEXT);
}
- @Override
- public int getAgeLimit() {
- return NO_AGE_LIMIT;
- }
-
- @Override
- public long getLength() {
- return 0;
- }
-
- @Override
- public long getTimeStamp() {
- return 0;
- }
-
- @Override
- public long getViewCount() {
- return -1;
- }
-
- @Override
- public long getLikeCount() {
- return -1;
- }
-
- @Override
- public long getDislikeCount() {
- return -1;
- }
-
- @Nonnull
- @Override
- public String getDashMpdUrl() {
- return "";
- }
-
- @Nonnull
- @Override
- public String getHlsUrl() {
- return "";
- }
-
@Override
public List getAudioStreams() {
final List audioStreams = new ArrayList<>();
@@ -228,18 +163,6 @@ public class BandcampStreamExtractor extends StreamExtractor {
return Collections.emptyList();
}
- @Nonnull
- @Override
- public List getSubtitlesDefault() {
- return Collections.emptyList();
- }
-
- @Nonnull
- @Override
- public List getSubtitles(MediaFormat format) {
- return Collections.emptyList();
- }
-
@Override
public StreamType getStreamType() {
return StreamType.AUDIO_STREAM;
@@ -259,23 +182,6 @@ public class BandcampStreamExtractor extends StreamExtractor {
return collector;
}
- @Override
- public String getErrorMessage() {
- return null;
- }
-
- @Nonnull
- @Override
- public String getHost() {
- return "";
- }
-
- @Nonnull
- @Override
- public Privacy getPrivacy() {
- return Privacy.PUBLIC;
- }
-
@Nonnull
@Override
public String getCategory() {
@@ -315,12 +221,6 @@ public class BandcampStreamExtractor extends StreamExtractor {
}
}
- @Nullable
- @Override
- public Locale getLanguageInfo() {
- return null;
- }
-
@Nonnull
@Override
public List getTags() {
@@ -334,22 +234,4 @@ public class BandcampStreamExtractor extends StreamExtractor {
return tags;
}
-
- @Nonnull
- @Override
- public String getSupportInfo() {
- return "";
- }
-
- @Nonnull
- @Override
- public List getStreamSegments() throws ParsingException {
- return Collections.emptyList();
- }
-
- @Nonnull
- @Override
- public List getMetaInfo() throws ParsingException {
- return Collections.emptyList();
- }
}
diff --git a/extractor/src/main/java/org/schabi/newpipe/extractor/services/media_ccc/extractors/MediaCCCLiveStreamExtractor.java b/extractor/src/main/java/org/schabi/newpipe/extractor/services/media_ccc/extractors/MediaCCCLiveStreamExtractor.java
index ef555e94..bd02d648 100644
--- a/extractor/src/main/java/org/schabi/newpipe/extractor/services/media_ccc/extractors/MediaCCCLiveStreamExtractor.java
+++ b/extractor/src/main/java/org/schabi/newpipe/extractor/services/media_ccc/extractors/MediaCCCLiveStreamExtractor.java
@@ -60,18 +60,6 @@ public class MediaCCCLiveStreamExtractor extends StreamExtractor {
return room.getString("display");
}
- @Nullable
- @Override
- public String getTextualUploadDate() throws ParsingException {
- return null;
- }
-
- @Nullable
- @Override
- public DateWrapper getUploadDate() throws ParsingException {
- return null;
- }
-
@Nonnull
@Override
public String getThumbnailUrl() throws ParsingException {
@@ -84,36 +72,11 @@ public class MediaCCCLiveStreamExtractor extends StreamExtractor {
return new Description(conference.getString("description") + " - " + group, Description.PLAIN_TEXT);
}
- @Override
- public int getAgeLimit() {
- return 0;
- }
-
- @Override
- public long getLength() {
- return 0;
- }
-
- @Override
- public long getTimeStamp() throws ParsingException {
- return 0;
- }
-
@Override
public long getViewCount() {
return -1;
}
- @Override
- public long getLikeCount() {
- return -1;
- }
-
- @Override
- public long getDislikeCount() {
- return -1;
- }
-
@Nonnull
@Override
public String getUploaderUrl() throws ParsingException {
@@ -126,41 +89,6 @@ public class MediaCCCLiveStreamExtractor extends StreamExtractor {
return conference.getString("conference");
}
- @Override
- public boolean isUploaderVerified() throws ParsingException {
- return false;
- }
-
- @Nonnull
- @Override
- public String getUploaderAvatarUrl() {
- return "";
- }
-
- @Nonnull
- @Override
- public String getSubChannelUrl() {
- return "";
- }
-
- @Nonnull
- @Override
- public String getSubChannelName() {
- return "";
- }
-
- @Nonnull
- @Override
- public String getSubChannelAvatarUrl() {
- return "";
- }
-
- @Nonnull
- @Override
- public String getDashMpdUrl() throws ParsingException {
- return "";
- }
-
@Nonnull
@Override
public String getHlsUrl() {
@@ -221,85 +149,14 @@ public class MediaCCCLiveStreamExtractor extends StreamExtractor {
return null;
}
- @Nonnull
- @Override
- public List getSubtitlesDefault() {
- return Collections.emptyList();
- }
-
- @Nonnull
- @Override
- public List getSubtitles(MediaFormat format) {
- return Collections.emptyList();
- }
-
@Override
public StreamType getStreamType() throws ParsingException {
return StreamType.LIVE_STREAM; // TODO: video and audio only streams are both available
}
- @Nullable
- @Override
- public StreamInfoItemsCollector getRelatedItems() {
- return null;
- }
-
- @Override
- public String getErrorMessage() {
- return null;
- }
-
- @Nonnull
- @Override
- public String getHost() {
- return "";
- }
-
- @Nonnull
- @Override
- public Privacy getPrivacy() {
- return Privacy.PUBLIC;
- }
-
@Nonnull
@Override
public String getCategory() {
return group;
}
-
- @Nonnull
- @Override
- public String getLicence() {
- return "";
- }
-
- @Nullable
- @Override
- public Locale getLanguageInfo() {
- return null;
- }
-
- @Nonnull
- @Override
- public List getTags() {
- return Collections.emptyList();
- }
-
- @Nonnull
- @Override
- public String getSupportInfo() {
- return "";
- }
-
- @Nonnull
- @Override
- public List getStreamSegments() {
- return Collections.emptyList();
- }
-
- @Nonnull
- @Override
- public List getMetaInfo() {
- return Collections.emptyList();
- }
}
diff --git a/extractor/src/main/java/org/schabi/newpipe/extractor/services/media_ccc/extractors/MediaCCCStreamExtractor.java b/extractor/src/main/java/org/schabi/newpipe/extractor/services/media_ccc/extractors/MediaCCCStreamExtractor.java
index 3251ca43..a1b09f88 100644
--- a/extractor/src/main/java/org/schabi/newpipe/extractor/services/media_ccc/extractors/MediaCCCStreamExtractor.java
+++ b/extractor/src/main/java/org/schabi/newpipe/extractor/services/media_ccc/extractors/MediaCCCStreamExtractor.java
@@ -58,36 +58,16 @@ public class MediaCCCStreamExtractor extends StreamExtractor {
return new Description(data.getString("description"), Description.PLAIN_TEXT);
}
- @Override
- public int getAgeLimit() {
- return 0;
- }
-
@Override
public long getLength() {
return data.getInt("length");
}
- @Override
- public long getTimeStamp() {
- return 0;
- }
-
@Override
public long getViewCount() {
return data.getInt("view_count");
}
- @Override
- public long getLikeCount() {
- return -1;
- }
-
- @Override
- public long getDislikeCount() {
- return -1;
- }
-
@Nonnull
@Override
public String getUploaderUrl() {
@@ -101,47 +81,12 @@ public class MediaCCCStreamExtractor extends StreamExtractor {
.replaceFirst("https://(api\\.)?media\\.ccc\\.de/public/conferences/", "");
}
- @Override
- public boolean isUploaderVerified() throws ParsingException {
- return false;
- }
-
@Nonnull
@Override
public String getUploaderAvatarUrl() {
return conferenceData.getString("logo_url");
}
- @Nonnull
- @Override
- public String getSubChannelUrl() {
- return "";
- }
-
- @Nonnull
- @Override
- public String getSubChannelName() {
- return "";
- }
-
- @Nonnull
- @Override
- public String getSubChannelAvatarUrl() {
- return "";
- }
-
- @Nonnull
- @Override
- public String getDashMpdUrl() {
- return "";
- }
-
- @Nonnull
- @Override
- public String getHlsUrl() {
- return "";
- }
-
@Override
public List getAudioStreams() throws ExtractionException {
final JsonArray recordings = data.getArray("recordings");
@@ -200,34 +145,11 @@ public class MediaCCCStreamExtractor extends StreamExtractor {
return Collections.emptyList();
}
- @Nonnull
- @Override
- public List getSubtitlesDefault() {
- return Collections.emptyList();
- }
-
- @Nonnull
- @Override
- public List getSubtitles(final MediaFormat format) {
- return Collections.emptyList();
- }
-
@Override
public StreamType getStreamType() {
return StreamType.VIDEO_STREAM;
}
- @Nullable
- @Override
- public StreamInfoItemsCollector getRelatedItems() {
- return null;
- }
-
- @Override
- public String getErrorMessage() {
- return null;
- }
-
@Override
public void onFetchPage(@Nonnull final Downloader downloader)
throws IOException, ExtractionException {
@@ -253,30 +175,6 @@ public class MediaCCCStreamExtractor extends StreamExtractor {
return data.getString("frontend_link");
}
- @Nonnull
- @Override
- public String getHost() {
- return "";
- }
-
- @Nonnull
- @Override
- public Privacy getPrivacy() {
- return Privacy.PUBLIC;
- }
-
- @Nonnull
- @Override
- public String getCategory() {
- return "";
- }
-
- @Nonnull
- @Override
- public String getLicence() {
- return "";
- }
-
@Override
public Locale getLanguageInfo() throws ParsingException {
return Localization.getLocaleFromThreeLetterCode(data.getString("original_language"));
@@ -287,22 +185,4 @@ public class MediaCCCStreamExtractor extends StreamExtractor {
public List getTags() {
return JsonUtils.getStringListFromJsonArray(data.getArray("tags"));
}
-
- @Nonnull
- @Override
- public String getSupportInfo() {
- return "";
- }
-
- @Nonnull
- @Override
- public List getStreamSegments() {
- return Collections.emptyList();
- }
-
- @Nonnull
- @Override
- public List getMetaInfo() {
- return Collections.emptyList();
- }
}
diff --git a/extractor/src/main/java/org/schabi/newpipe/extractor/services/peertube/extractors/PeertubeStreamExtractor.java b/extractor/src/main/java/org/schabi/newpipe/extractor/services/peertube/extractors/PeertubeStreamExtractor.java
index 16f46bc0..4902bff3 100644
--- a/extractor/src/main/java/org/schabi/newpipe/extractor/services/peertube/extractors/PeertubeStreamExtractor.java
+++ b/extractor/src/main/java/org/schabi/newpipe/extractor/services/peertube/extractors/PeertubeStreamExtractor.java
@@ -149,11 +149,6 @@ public class PeertubeStreamExtractor extends StreamExtractor {
return JsonUtils.getString(json, "account.displayName");
}
- @Override
- public boolean isUploaderVerified() throws ParsingException {
- return false;
- }
-
@Nonnull
@Override
public String getUploaderAvatarUrl() {
@@ -190,12 +185,6 @@ public class PeertubeStreamExtractor extends StreamExtractor {
return baseUrl + value;
}
- @Nonnull
- @Override
- public String getDashMpdUrl() {
- return "";
- }
-
@Nonnull
@Override
public String getHlsUrl() {
@@ -329,18 +318,6 @@ public class PeertubeStreamExtractor extends StreamExtractor {
}
}
- @Nonnull
- @Override
- public List getStreamSegments() {
- return Collections.emptyList();
- }
-
- @Nonnull
- @Override
- public List getMetaInfo() {
- return Collections.emptyList();
- }
-
private String getRelatedItemsUrl(final List tags) throws UnsupportedEncodingException {
final String url = baseUrl + PeertubeSearchQueryHandlerFactory.SEARCH_ENDPOINT;
final StringBuilder params = new StringBuilder();
@@ -386,11 +363,6 @@ public class PeertubeStreamExtractor extends StreamExtractor {
}
}
- @Override
- public String getErrorMessage() {
- return null;
- }
-
@Override
public void onFetchPage(final Downloader downloader) throws IOException, ExtractionException {
final Response response = downloader.get(baseUrl + PeertubeStreamLinkHandlerFactory.VIDEO_API_ENDPOINT + getId());
diff --git a/extractor/src/main/java/org/schabi/newpipe/extractor/services/soundcloud/extractors/SoundcloudStreamExtractor.java b/extractor/src/main/java/org/schabi/newpipe/extractor/services/soundcloud/extractors/SoundcloudStreamExtractor.java
index 82bf6706..3343d2b2 100644
--- a/extractor/src/main/java/org/schabi/newpipe/extractor/services/soundcloud/extractors/SoundcloudStreamExtractor.java
+++ b/extractor/src/main/java/org/schabi/newpipe/extractor/services/soundcloud/extractors/SoundcloudStreamExtractor.java
@@ -102,11 +102,6 @@ public class SoundcloudStreamExtractor extends StreamExtractor {
return new Description(track.getString("description"), Description.PLAIN_TEXT);
}
- @Override
- public int getAgeLimit() {
- return NO_AGE_LIMIT;
- }
-
@Override
public long getLength() {
return track.getLong("duration") / 1000L;
@@ -127,11 +122,6 @@ public class SoundcloudStreamExtractor extends StreamExtractor {
return track.getLong("favoritings_count", -1);
}
- @Override
- public long getDislikeCount() {
- return -1;
- }
-
@Nonnull
@Override
public String getUploaderUrl() {
@@ -155,36 +145,6 @@ public class SoundcloudStreamExtractor extends StreamExtractor {
return SoundcloudParsingHelper.getAvatarUrl(track);
}
- @Nonnull
- @Override
- public String getSubChannelUrl() {
- return "";
- }
-
- @Nonnull
- @Override
- public String getSubChannelName() {
- return "";
- }
-
- @Nonnull
- @Override
- public String getSubChannelAvatarUrl() {
- return "";
- }
-
- @Nonnull
- @Override
- public String getDashMpdUrl() {
- return "";
- }
-
- @Nonnull
- @Override
- public String getHlsUrl() {
- return "";
- }
-
@Override
public List getAudioStreams() throws ExtractionException {
final List audioStreams = new ArrayList<>();
@@ -343,18 +303,6 @@ public class SoundcloudStreamExtractor extends StreamExtractor {
return Collections.emptyList();
}
- @Override
- @Nonnull
- public List getSubtitlesDefault() {
- return Collections.emptyList();
- }
-
- @Override
- @Nonnull
- public List getSubtitles(MediaFormat format) {
- return Collections.emptyList();
- }
-
@Override
public StreamType getStreamType() {
return StreamType.AUDIO_STREAM;
@@ -372,17 +320,6 @@ public class SoundcloudStreamExtractor extends StreamExtractor {
return collector;
}
- @Override
- public String getErrorMessage() {
- return null;
- }
-
- @Nonnull
- @Override
- public String getHost() {
- return "";
- }
-
@Override
public Privacy getPrivacy() {
return track.getString("sharing").equals("public") ? Privacy.PUBLIC : Privacy.PRIVATE;
@@ -400,11 +337,6 @@ public class SoundcloudStreamExtractor extends StreamExtractor {
return track.getString("license");
}
- @Override
- public Locale getLanguageInfo() {
- return null;
- }
-
@Nonnull
@Override
public List getTags() {
@@ -432,22 +364,4 @@ public class SoundcloudStreamExtractor extends StreamExtractor {
}
return tags;
}
-
- @Nonnull
- @Override
- public String getSupportInfo() {
- return "";
- }
-
- @Nonnull
- @Override
- public List getStreamSegments() {
- return Collections.emptyList();
- }
-
- @Nonnull
- @Override
- public List getMetaInfo() {
- return Collections.emptyList();
- }
}
diff --git a/extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/extractors/YoutubeStreamExtractor.java b/extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/extractors/YoutubeStreamExtractor.java
index 252e17c8..8148072c 100644
--- a/extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/extractors/YoutubeStreamExtractor.java
+++ b/extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/extractors/YoutubeStreamExtractor.java
@@ -458,24 +458,6 @@ public class YoutubeStreamExtractor extends StreamExtractor {
return fixThumbnailUrl(url);
}
- @Nonnull
- @Override
- public String getSubChannelUrl() {
- return "";
- }
-
- @Nonnull
- @Override
- public String getSubChannelName() {
- return "";
- }
-
- @Nonnull
- @Override
- public String getSubChannelAvatarUrl() {
- return "";
- }
-
@Nonnull
@Override
public String getDashMpdUrl() throws ParsingException {
@@ -1257,12 +1239,6 @@ public class YoutubeStreamExtractor extends StreamExtractor {
}
}
- @Nonnull
- @Override
- public String getHost() {
- return "";
- }
-
@Nonnull
@Override
public Privacy getPrivacy() {
@@ -1304,12 +1280,6 @@ public class YoutubeStreamExtractor extends StreamExtractor {
.getArray("keywords"));
}
- @Nonnull
- @Override
- public String getSupportInfo() {
- return "";
- }
-
@Nonnull
@Override
public List getStreamSegments() throws ParsingException {
diff --git a/extractor/src/main/java/org/schabi/newpipe/extractor/stream/StreamExtractor.java b/extractor/src/main/java/org/schabi/newpipe/extractor/stream/StreamExtractor.java
index 849e9772..12cd5d34 100644
--- a/extractor/src/main/java/org/schabi/newpipe/extractor/stream/StreamExtractor.java
+++ b/extractor/src/main/java/org/schabi/newpipe/extractor/stream/StreamExtractor.java
@@ -63,7 +63,9 @@ public abstract class StreamExtractor extends Extractor {
* @see #getUploadDate()
*/
@Nullable
- public abstract String getTextualUploadDate() throws ParsingException;
+ public String getTextualUploadDate() throws ParsingException {
+ return null;
+ }
/**
* A more general {@code Calendar} instance set to the date provided by the service.
@@ -77,7 +79,9 @@ public abstract class StreamExtractor extends Extractor {
* @see #getTextualUploadDate()
*/
@Nullable
- public abstract DateWrapper getUploadDate() throws ParsingException;
+ public DateWrapper getUploadDate() throws ParsingException {
+ return null;
+ }
/**
* This will return the url to the thumbnail of the stream. Try to return the medium resolution here.
@@ -95,7 +99,9 @@ public abstract class StreamExtractor extends Extractor {
* @throws ParsingException
*/
@Nonnull
- public abstract Description getDescription() throws ParsingException;
+ public Description getDescription() throws ParsingException {
+ return Description.emptyDescription;
+ }
/**
* Get the age limit.
@@ -103,52 +109,64 @@ public abstract class StreamExtractor extends Extractor {
* @return The age which limits the content or {@value NO_AGE_LIMIT} if there is no limit
* @throws ParsingException if an error occurs while parsing
*/
- public abstract int getAgeLimit() throws ParsingException;
+ public int getAgeLimit() throws ParsingException {
+ return NO_AGE_LIMIT;
+ }
/**
* This should return the length of a video in seconds.
*
- * @return The length of the stream in seconds.
+ * @return The length of the stream in seconds or 0 when it has no length (e.g. a livestream).
* @throws ParsingException
*/
- public abstract long getLength() throws ParsingException;
+ public long getLength() throws ParsingException {
+ return 0;
+ }
/**
* If the url you are currently handling contains a time stamp/seek, you can return the
* position it represents here.
* If the url has no time stamp simply return zero.
*
- * @return the timestamp in seconds
+ * @return the timestamp in seconds or 0 when there is no timestamp
* @throws ParsingException
*/
- public abstract long getTimeStamp() throws ParsingException;
+ public long getTimeStamp() throws ParsingException {
+ return 0;
+ }
/**
* The count of how many people have watched the video/listened to the audio stream.
* If the current stream has no view count or its not available simply return -1
*
- * @return amount of views.
+ * @return amount of views or -1 if not available.
* @throws ParsingException
*/
- public abstract long getViewCount() throws ParsingException;
+ public long getViewCount() throws ParsingException {
+ return -1;
+ }
/**
* The amount of likes a video/audio stream got.
* If the current stream has no likes or its not available simply return -1
*
- * @return the amount of likes the stream got
+ * @return the amount of likes the stream got or -1 if not available.
* @throws ParsingException
*/
- public abstract long getLikeCount() throws ParsingException;
+ public long getLikeCount() throws ParsingException {
+ return -1;
+ }
/**
* The amount of dislikes a video/audio stream got.
* If the current stream has no dislikes or its not available simply return -1
*
- * @return the amount of likes the stream got
+ * @return the amount of likes the stream got or -1 if not available.
* @throws ParsingException
*/
- public abstract long getDislikeCount() throws ParsingException;
+ public long getDislikeCount() throws ParsingException {
+ return -1;
+ }
/**
* The Url to the page of the creator/uploader of the stream. This must not be a homepage,
@@ -157,7 +175,7 @@ public abstract class StreamExtractor extends Extractor {
* so be sure to implement that one before you return a value here, otherwise NewPipe will crash if one selects
* this url.
*
- * @return the url to the page of the creator/uploader of the stream or an empty String
+ * @return the url to the page of the creator/uploader of the stream or an empty string
* @throws ParsingException
*/
@Nonnull
@@ -167,7 +185,7 @@ public abstract class StreamExtractor extends Extractor {
* The name of the creator/uploader of the stream.
* If the name is not available you can simply return an empty string.
*
- * @return the name of the creator/uploader of the stream or an empty String
+ * @return the name of the creator/uploader of the stream or an empty tring
* @throws ParsingException
*/
@Nonnull
@@ -180,7 +198,9 @@ public abstract class StreamExtractor extends Extractor {
* @return whether the uploader has been verified by the service's provider
* @throws ParsingException
*/
- public abstract boolean isUploaderVerified() throws ParsingException;
+ public boolean isUploaderVerified() throws ParsingException {
+ return false;
+ }
/**
* The url to the image file/profile picture/avatar of the creator/uploader of the stream.
@@ -190,7 +210,9 @@ public abstract class StreamExtractor extends Extractor {
* @throws ParsingException
*/
@Nonnull
- public abstract String getUploaderAvatarUrl() throws ParsingException;
+ public String getUploaderAvatarUrl() throws ParsingException {
+ return "";
+ }
/**
* The Url to the page of the sub-channel of the stream. This must not be a homepage,
@@ -203,7 +225,9 @@ public abstract class StreamExtractor extends Extractor {
* @throws ParsingException
*/
@Nonnull
- public abstract String getSubChannelUrl() throws ParsingException;
+ public String getSubChannelUrl() throws ParsingException {
+ return "";
+ }
/**
* The name of the sub-channel of the stream.
@@ -213,7 +237,9 @@ public abstract class StreamExtractor extends Extractor {
* @throws ParsingException
*/
@Nonnull
- public abstract String getSubChannelName() throws ParsingException;
+ public String getSubChannelName() throws ParsingException {
+ return "";
+ }
/**
* The url to the image file/profile picture/avatar of the sub-channel of the stream.
@@ -223,17 +249,21 @@ public abstract class StreamExtractor extends Extractor {
* @throws ParsingException
*/
@Nonnull
- public abstract String getSubChannelAvatarUrl() throws ParsingException;
+ public String getSubChannelAvatarUrl() throws ParsingException {
+ return "";
+ }
/**
* Get the dash mpd url. If you don't know what a dash MPD is you can read about it
* here.
*
- * @return the url as a string or an empty string
+ * @return the url as a string or an empty string or an empty string if not available
* @throws ParsingException if an error occurs while reading
*/
@Nonnull
- public abstract String getDashMpdUrl() throws ParsingException;
+ public String getDashMpdUrl() throws ParsingException {
+ return "";
+ }
/**
* I am not sure if this is in use, and how this is used. However the frontend is missing support
@@ -241,11 +271,13 @@ public abstract class StreamExtractor extends Extractor {
* issue,
* or fix this description if you know whats up with this.
*
- * @return The Url to the hls stream.
+ * @return The Url to the hls stream or an empty string if not available.
* @throws ParsingException
*/
@Nonnull
- public abstract String getHlsUrl() throws ParsingException;
+ public String getHlsUrl() throws ParsingException {
+ return "";
+ }
/**
* This should return a list of available
@@ -298,7 +330,9 @@ public abstract class StreamExtractor extends Extractor {
* @throws ExtractionException
*/
@Nonnull
- public abstract List getSubtitlesDefault() throws IOException, ExtractionException;
+ public List getSubtitlesDefault() throws IOException, ExtractionException {
+ return Collections.emptyList();
+ }
/**
* This will return a list of available
@@ -312,7 +346,9 @@ public abstract class StreamExtractor extends Extractor {
* @throws ExtractionException
*/
@Nonnull
- public abstract List getSubtitles(MediaFormat format) throws IOException, ExtractionException;
+ public List getSubtitles(MediaFormat format) throws IOException, ExtractionException {
+ return Collections.emptyList();
+ }
/**
* Get the StreamType.
@@ -334,13 +370,15 @@ public abstract class StreamExtractor extends Extractor {
* @throws ExtractionException
*/
@Nullable
- public abstract InfoItemsCollector extends InfoItem, ? extends InfoItemExtractor>
- getRelatedItems() throws IOException, ExtractionException;
+ public InfoItemsCollector extends InfoItem, ? extends InfoItemExtractor>
+ getRelatedItems() throws IOException, ExtractionException {
+ return null;
+ }
/**
* @deprecated Use {@link #getRelatedItems()}. May be removed in a future version.
* @return The result of {@link #getRelatedItems()} if it is a
- * StreamInfoItemsCollector, null otherwise
+ * StreamInfoItemsCollector, null
otherwise
* @throws IOException
* @throws ExtractionException
*/
@@ -367,9 +405,11 @@ public abstract class StreamExtractor extends Extractor {
/**
* Should analyse the webpage's document and extracts any error message there might be.
*
- * @return Error message; null if there is no error message.
+ * @return Error message; null
if there is no error message.
*/
- public abstract String getErrorMessage();
+ public String getErrorMessage() {
+ return null;
+ }
//////////////////////////////////////////////////////////////////
/// Helper
@@ -435,30 +475,35 @@ public abstract class StreamExtractor extends Extractor {
* a federated system, but a centralised system,
* you can simply return an empty string.
*
- * @return the host of the stream or an empty String.
+ * @return the host of the stream or an empty string.
* @throws ParsingException
*/
@Nonnull
- public abstract String getHost() throws ParsingException;
+ public String getHost() throws ParsingException {
+ return "";
+ }
/**
* The privacy of the stream (Eg. Public, Private, Unlisted…).
- * If the privacy is not available you can simply return an empty string.
*
- * @return the privacy of the stream or an empty String.
+ * @return the privacy of the stream.
* @throws ParsingException
*/
- public abstract Privacy getPrivacy() throws ParsingException;
+ public Privacy getPrivacy() throws ParsingException {
+ return Privacy.PUBLIC;
+ }
/**
* The name of the category of the stream.
* If the category is not available you can simply return an empty string.
*
- * @return the category of the stream or an empty String.
+ * @return the category of the stream or an empty string.
* @throws ParsingException
*/
@Nonnull
- public abstract String getCategory() throws ParsingException;
+ public String getCategory() throws ParsingException {
+ return "";
+ }
/**
* The name of the licence of the stream.
@@ -468,7 +513,9 @@ public abstract class StreamExtractor extends Extractor {
* @throws ParsingException
*/
@Nonnull
- public abstract String getLicence() throws ParsingException;
+ public String getLicence() throws ParsingException {
+ return "";
+ }
/**
* The locale language of the stream.
@@ -476,11 +523,13 @@ public abstract class StreamExtractor extends Extractor {
* If the language is provided by a language code, you can return
* new Locale(language_code);
*
- * @return the locale language of the stream or null.
+ * @return the locale language of the stream or null
.
* @throws ParsingException
*/
@Nullable
- public abstract Locale getLanguageInfo() throws ParsingException;
+ public Locale getLanguageInfo() throws ParsingException {
+ return null;
+ }
/**
* The list of tags of the stream.
@@ -490,7 +539,9 @@ public abstract class StreamExtractor extends Extractor {
* @throws ParsingException
*/
@Nonnull
- public abstract List getTags() throws ParsingException;
+ public List getTags() throws ParsingException {
+ return Collections.emptyList();
+ }
/**
* The support information of the stream.
@@ -499,11 +550,13 @@ public abstract class StreamExtractor extends Extractor {
* If the support information are not available,
* you can simply return an empty String.
*
- * @return the support information of the stream or an empty String.
+ * @return the support information of the stream or an empty string.
* @throws ParsingException
*/
@Nonnull
- public abstract String getSupportInfo() throws ParsingException;
+ public String getSupportInfo() throws ParsingException {
+ return "";
+ }
/**
* The list of stream segments by timestamps for the stream.
@@ -513,7 +566,9 @@ public abstract class StreamExtractor extends Extractor {
* @throws ParsingException
*/
@Nonnull
- public abstract List getStreamSegments() throws ParsingException;
+ public List getStreamSegments() throws ParsingException {
+ return Collections.emptyList();
+ }
/**
* Meta information about the stream.
@@ -524,11 +579,14 @@ public abstract class StreamExtractor extends Extractor {
*
* The meta information often contains links to external sources like Wikipedia or the WHO.
*
- * @return The meta info of the stream or an empty List if not provided.
+ * @return The meta info of the stream or an empty list if not provided.
* @throws ParsingException
*/
@Nonnull
- public abstract List getMetaInfo() throws ParsingException;
+ public List getMetaInfo() throws ParsingException {
+ return Collections.emptyList();
+ }
+
public enum Privacy {
PUBLIC,
UNLISTED,