diff --git a/extractor/src/main/java/org/schabi/newpipe/extractor/linkhandler/LinkHandlerFactory.java b/extractor/src/main/java/org/schabi/newpipe/extractor/linkhandler/LinkHandlerFactory.java index 60a65f5ef..b9e60ce0d 100644 --- a/extractor/src/main/java/org/schabi/newpipe/extractor/linkhandler/LinkHandlerFactory.java +++ b/extractor/src/main/java/org/schabi/newpipe/extractor/linkhandler/LinkHandlerFactory.java @@ -2,6 +2,7 @@ package org.schabi.newpipe.extractor.linkhandler; import org.schabi.newpipe.extractor.exceptions.FoundAdException; import org.schabi.newpipe.extractor.exceptions.ParsingException; +import org.schabi.newpipe.extractor.utils.Utils; /* * Created by Christian Schabesberger on 26.07.16. @@ -33,26 +34,41 @@ public abstract class LinkHandlerFactory { public abstract String getUrl(String id) throws ParsingException; public abstract boolean onAcceptUrl(final String url) throws ParsingException; + public String getUrl(String id, String baseUrl) throws ParsingException{ + return getUrl(id); + } + /////////////////////////////////// // Logic /////////////////////////////////// public LinkHandler fromUrl(String url) throws ParsingException { + final String baseUrl = Utils.getBaseUrl(url); + return fromUrl(url, baseUrl); + } + + public LinkHandler fromUrl(String url, String baseUrl) throws ParsingException { if(url == null) throw new IllegalArgumentException("url can not be null"); if(!acceptUrl(url)) { throw new ParsingException("Malformed unacceptable url: " + url); } final String id = getId(url); - return new LinkHandler(url, getUrl(id), id); + return new LinkHandler(url, getUrl(id,baseUrl), id); } - + public LinkHandler fromId(String id) throws ParsingException { if(id == null) throw new IllegalArgumentException("id can not be null"); final String url = getUrl(id); return new LinkHandler(url, url, id); } + public LinkHandler fromId(String id, String baseUrl) throws ParsingException { + if(id == null) throw new IllegalArgumentException("id can not be null"); + final String url = getUrl(id, baseUrl); + return new LinkHandler(url, url, id); + } + /** * When a VIEW_ACTION is caught this function will test if the url delivered within the calling * Intent was meant to be watched with this Service. @@ -65,4 +81,5 @@ public abstract class LinkHandlerFactory { throw fe; } } + } diff --git a/extractor/src/main/java/org/schabi/newpipe/extractor/linkhandler/ListLinkHandlerFactory.java b/extractor/src/main/java/org/schabi/newpipe/extractor/linkhandler/ListLinkHandlerFactory.java index a9c4e51aa..83955265c 100644 --- a/extractor/src/main/java/org/schabi/newpipe/extractor/linkhandler/ListLinkHandlerFactory.java +++ b/extractor/src/main/java/org/schabi/newpipe/extractor/linkhandler/ListLinkHandlerFactory.java @@ -1,10 +1,11 @@ package org.schabi.newpipe.extractor.linkhandler; -import org.schabi.newpipe.extractor.exceptions.ParsingException; - import java.util.ArrayList; import java.util.List; +import org.schabi.newpipe.extractor.exceptions.ParsingException; +import org.schabi.newpipe.extractor.utils.Utils; + public abstract class ListLinkHandlerFactory extends LinkHandlerFactory { /////////////////////////////////// @@ -14,23 +15,37 @@ public abstract class ListLinkHandlerFactory extends LinkHandlerFactory { public List getContentFilter(String url) throws ParsingException { return new ArrayList<>(0);} public String getSortFilter(String url) throws ParsingException {return ""; } public abstract String getUrl(String id, List contentFilter, String sortFilter) throws ParsingException; + + public String getUrl(String id, List contentFilter, String sortFilter, String baseUrl) throws ParsingException { + return getUrl(id, contentFilter, sortFilter); + } /////////////////////////////////// // Logic /////////////////////////////////// - - + @Override public ListLinkHandler fromUrl(String url) throws ParsingException { + String baseUrl = Utils.getBaseUrl(url); + return fromUrl(url, baseUrl); + } + + @Override + public ListLinkHandler fromUrl(String url, String baseUrl) throws ParsingException { if(url == null) throw new IllegalArgumentException("url may not be null"); - return new ListLinkHandler(super.fromUrl(url), getContentFilter(url), getSortFilter(url)); + return new ListLinkHandler(super.fromUrl(url, baseUrl), getContentFilter(url), getSortFilter(url)); } @Override public ListLinkHandler fromId(String id) throws ParsingException { return new ListLinkHandler(super.fromId(id), new ArrayList(0), ""); } + + @Override + public ListLinkHandler fromId(String id, String baseUrl) throws ParsingException { + return new ListLinkHandler(super.fromId(id, baseUrl), new ArrayList(0), ""); + } public ListLinkHandler fromQuery(String id, List contentFilters, @@ -38,8 +53,15 @@ public abstract class ListLinkHandlerFactory extends LinkHandlerFactory { final String url = getUrl(id, contentFilters, sortFilter); return new ListLinkHandler(url, url, id, contentFilters, sortFilter); } + + public ListLinkHandler fromQuery(String id, + List contentFilters, + String sortFilter, String baseUrl) throws ParsingException { + final String url = getUrl(id, contentFilters, sortFilter, baseUrl); + return new ListLinkHandler(url, url, id, contentFilters, sortFilter); + } - + /** * For makeing ListLinkHandlerFactory compatible with LinkHandlerFactory we need to override this, * however it should not be overridden by the actual implementation. @@ -50,6 +72,11 @@ public abstract class ListLinkHandlerFactory extends LinkHandlerFactory { return getUrl(id, new ArrayList(0), ""); } + @Override + public String getUrl(String id, String baseUrl) throws ParsingException { + return getUrl(id, new ArrayList(0), "", baseUrl); + } + /** * Will returns content filter the corresponding extractor can handle like "channels", "videos", "music", etc. * diff --git a/extractor/src/main/java/org/schabi/newpipe/extractor/services/peertube/extractors/PeertubeChannelExtractor.java b/extractor/src/main/java/org/schabi/newpipe/extractor/services/peertube/extractors/PeertubeChannelExtractor.java index ae6591faf..70965f5b4 100644 --- a/extractor/src/main/java/org/schabi/newpipe/extractor/services/peertube/extractors/PeertubeChannelExtractor.java +++ b/extractor/src/main/java/org/schabi/newpipe/extractor/services/peertube/extractors/PeertubeChannelExtractor.java @@ -17,6 +17,7 @@ import org.schabi.newpipe.extractor.stream.StreamInfoItemsCollector; import org.schabi.newpipe.extractor.utils.JsonUtils; import org.schabi.newpipe.extractor.utils.Parser; import org.schabi.newpipe.extractor.utils.Parser.RegexException; +import org.schabi.newpipe.extractor.utils.Utils; import com.grack.nanojson.JsonArray; import com.grack.nanojson.JsonObject; @@ -89,10 +90,11 @@ public class PeertubeChannelExtractor extends ChannelExtractor { throw new ParsingException("unable to extract channel streams", e); } + String baseUrl = Utils.getBaseUrl(getUrl()); for(Object c: contents) { if(c instanceof JsonObject) { final JsonObject item = (JsonObject) c; - PeertubeStreamInfoItemExtractor extractor = new PeertubeStreamInfoItemExtractor(item); + PeertubeStreamInfoItemExtractor extractor = new PeertubeStreamInfoItemExtractor(item, baseUrl); collector.commit(extractor); } } diff --git a/extractor/src/main/java/org/schabi/newpipe/extractor/services/peertube/extractors/PeertubeCommentsInfoItemExtractor.java b/extractor/src/main/java/org/schabi/newpipe/extractor/services/peertube/extractors/PeertubeCommentsInfoItemExtractor.java index f97836e44..13a8a6311 100644 --- a/extractor/src/main/java/org/schabi/newpipe/extractor/services/peertube/extractors/PeertubeCommentsInfoItemExtractor.java +++ b/extractor/src/main/java/org/schabi/newpipe/extractor/services/peertube/extractors/PeertubeCommentsInfoItemExtractor.java @@ -9,6 +9,7 @@ import org.schabi.newpipe.extractor.localization.DateWrapper; import org.schabi.newpipe.extractor.services.peertube.PeertubeParsingHelper; import org.schabi.newpipe.extractor.services.peertube.linkHandler.PeertubeChannelLinkHandlerFactory; import org.schabi.newpipe.extractor.utils.JsonUtils; +import org.schabi.newpipe.extractor.utils.Utils; import com.grack.nanojson.JsonObject; @@ -97,7 +98,8 @@ public class PeertubeCommentsInfoItemExtractor implements CommentsInfoItemExtrac public String getAuthorEndpoint() throws ParsingException { String name = JsonUtils.getString(item, "account.name"); String host = JsonUtils.getString(item, "account.host"); - return PeertubeChannelLinkHandlerFactory.getInstance().fromId(name + "@" + host).getUrl(); + String baseUrl = Utils.getBaseUrl(url); + return ServiceList.PeerTube.getChannelLHFactory().fromId(name + "@" + host, baseUrl).getUrl(); } } \ No newline at end of file diff --git a/extractor/src/main/java/org/schabi/newpipe/extractor/services/peertube/extractors/PeertubeSearchExtractor.java b/extractor/src/main/java/org/schabi/newpipe/extractor/services/peertube/extractors/PeertubeSearchExtractor.java index dc6cd43b1..ec8786deb 100644 --- a/extractor/src/main/java/org/schabi/newpipe/extractor/services/peertube/extractors/PeertubeSearchExtractor.java +++ b/extractor/src/main/java/org/schabi/newpipe/extractor/services/peertube/extractors/PeertubeSearchExtractor.java @@ -17,6 +17,7 @@ import org.schabi.newpipe.extractor.search.SearchExtractor; import org.schabi.newpipe.extractor.utils.JsonUtils; import org.schabi.newpipe.extractor.utils.Parser; import org.schabi.newpipe.extractor.utils.Parser.RegexException; +import org.schabi.newpipe.extractor.utils.Utils; import com.grack.nanojson.JsonArray; import com.grack.nanojson.JsonObject; @@ -58,10 +59,11 @@ public class PeertubeSearchExtractor extends SearchExtractor { throw new ParsingException("unable to extract search info", e); } + String baseUrl = Utils.getBaseUrl(getUrl()); for(Object c: contents) { if(c instanceof JsonObject) { final JsonObject item = (JsonObject) c; - PeertubeStreamInfoItemExtractor extractor = new PeertubeStreamInfoItemExtractor(item); + PeertubeStreamInfoItemExtractor extractor = new PeertubeStreamInfoItemExtractor(item, baseUrl); collector.commit(extractor); } } 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 692210b59..bfd8cd93e 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 @@ -19,7 +19,6 @@ import org.schabi.newpipe.extractor.exceptions.ReCaptchaException; import org.schabi.newpipe.extractor.linkhandler.LinkHandler; import org.schabi.newpipe.extractor.localization.DateWrapper; import org.schabi.newpipe.extractor.services.peertube.PeertubeParsingHelper; -import org.schabi.newpipe.extractor.services.peertube.linkHandler.PeertubeChannelLinkHandlerFactory; import org.schabi.newpipe.extractor.services.peertube.linkHandler.PeertubeSearchQueryHandlerFactory; import org.schabi.newpipe.extractor.stream.AudioStream; import org.schabi.newpipe.extractor.stream.Stream; @@ -30,6 +29,7 @@ import org.schabi.newpipe.extractor.stream.StreamType; import org.schabi.newpipe.extractor.stream.SubtitlesStream; import org.schabi.newpipe.extractor.stream.VideoStream; import org.schabi.newpipe.extractor.utils.JsonUtils; +import org.schabi.newpipe.extractor.utils.Utils; import com.grack.nanojson.JsonArray; import com.grack.nanojson.JsonObject; @@ -115,7 +115,8 @@ public class PeertubeStreamExtractor extends StreamExtractor { public String getUploaderUrl() throws ParsingException { String name = JsonUtils.getString(json, "account.name"); String host = JsonUtils.getString(json, "account.host"); - return PeertubeChannelLinkHandlerFactory.getInstance().fromId(name + "@" + host).getUrl(); + String baseUrl = Utils.getBaseUrl(getUrl()); + return getService().getChannelLHFactory().fromId(name + "@" + host, baseUrl).getUrl(); } @Override @@ -266,10 +267,11 @@ public class PeertubeStreamExtractor extends StreamExtractor { throw new ParsingException("unable to extract related videos", e); } + String baseUrl = Utils.getBaseUrl(getUrl()); for(Object c: contents) { if(c instanceof JsonObject) { final JsonObject item = (JsonObject) c; - PeertubeStreamInfoItemExtractor extractor = new PeertubeStreamInfoItemExtractor(item); + PeertubeStreamInfoItemExtractor extractor = new PeertubeStreamInfoItemExtractor(item, baseUrl); //do not add the same stream in related streams if(!extractor.getUrl().equals(getUrl())) collector.commit(extractor); } diff --git a/extractor/src/main/java/org/schabi/newpipe/extractor/services/peertube/extractors/PeertubeStreamInfoItemExtractor.java b/extractor/src/main/java/org/schabi/newpipe/extractor/services/peertube/extractors/PeertubeStreamInfoItemExtractor.java index 49c19be07..3de68edaf 100644 --- a/extractor/src/main/java/org/schabi/newpipe/extractor/services/peertube/extractors/PeertubeStreamInfoItemExtractor.java +++ b/extractor/src/main/java/org/schabi/newpipe/extractor/services/peertube/extractors/PeertubeStreamInfoItemExtractor.java @@ -15,15 +15,17 @@ import com.grack.nanojson.JsonObject; public class PeertubeStreamInfoItemExtractor implements StreamInfoItemExtractor { protected final JsonObject item; + private final String baseUrl; - public PeertubeStreamInfoItemExtractor(JsonObject item) { + public PeertubeStreamInfoItemExtractor(JsonObject item, String baseUrl) { this.item = item; + this.baseUrl = baseUrl; } @Override public String getUrl() throws ParsingException { String uuid = JsonUtils.getString(item, "uuid"); - return PeertubeStreamLinkHandlerFactory.getInstance().fromId(uuid).getUrl(); + return ServiceList.PeerTube.getStreamLHFactory().fromId(uuid, baseUrl).getUrl(); } @Override @@ -52,7 +54,7 @@ public class PeertubeStreamInfoItemExtractor implements StreamInfoItemExtractor public String getUploaderUrl() throws ParsingException { String name = JsonUtils.getString(item, "account.name"); String host = JsonUtils.getString(item, "account.host"); - return PeertubeChannelLinkHandlerFactory.getInstance().fromId(name + "@" + host).getUrl(); + return ServiceList.PeerTube.getChannelLHFactory().fromId(name + "@" + host, baseUrl).getUrl(); } @Override diff --git a/extractor/src/main/java/org/schabi/newpipe/extractor/services/peertube/extractors/PeertubeTrendingExtractor.java b/extractor/src/main/java/org/schabi/newpipe/extractor/services/peertube/extractors/PeertubeTrendingExtractor.java index e481d89bc..df0fb2437 100644 --- a/extractor/src/main/java/org/schabi/newpipe/extractor/services/peertube/extractors/PeertubeTrendingExtractor.java +++ b/extractor/src/main/java/org/schabi/newpipe/extractor/services/peertube/extractors/PeertubeTrendingExtractor.java @@ -15,6 +15,7 @@ import org.schabi.newpipe.extractor.stream.StreamInfoItemsCollector; import org.schabi.newpipe.extractor.utils.JsonUtils; import org.schabi.newpipe.extractor.utils.Parser; import org.schabi.newpipe.extractor.utils.Parser.RegexException; +import org.schabi.newpipe.extractor.utils.Utils; import com.grack.nanojson.JsonArray; import com.grack.nanojson.JsonObject; @@ -53,10 +54,11 @@ public class PeertubeTrendingExtractor extends KioskExtractor { throw new ParsingException("unable to extract kiosk info", e); } + String baseUrl = Utils.getBaseUrl(getUrl()); for(Object c: contents) { if(c instanceof JsonObject) { final JsonObject item = (JsonObject) c; - PeertubeStreamInfoItemExtractor extractor = new PeertubeStreamInfoItemExtractor(item); + PeertubeStreamInfoItemExtractor extractor = new PeertubeStreamInfoItemExtractor(item, baseUrl); collector.commit(extractor); } } diff --git a/extractor/src/main/java/org/schabi/newpipe/extractor/services/peertube/linkHandler/PeertubeChannelLinkHandlerFactory.java b/extractor/src/main/java/org/schabi/newpipe/extractor/services/peertube/linkHandler/PeertubeChannelLinkHandlerFactory.java index 2d93b9f58..640f99e59 100644 --- a/extractor/src/main/java/org/schabi/newpipe/extractor/services/peertube/linkHandler/PeertubeChannelLinkHandlerFactory.java +++ b/extractor/src/main/java/org/schabi/newpipe/extractor/services/peertube/linkHandler/PeertubeChannelLinkHandlerFactory.java @@ -23,8 +23,14 @@ public class PeertubeChannelLinkHandlerFactory extends ListLinkHandlerFactory { } @Override - public String getUrl(String id, List contentFilters, String searchFilter) { + public String getUrl(String id, List contentFilters, String searchFilter) throws ParsingException { String baseUrl = ServiceList.PeerTube.getBaseUrl(); + return getUrl(id, contentFilters, searchFilter, baseUrl); + } + + @Override + public String getUrl(String id, List contentFilter, String sortFilter, String baseUrl) + throws ParsingException { return baseUrl + ACCOUNTS_ENDPOINT + id; } diff --git a/extractor/src/main/java/org/schabi/newpipe/extractor/services/peertube/linkHandler/PeertubeCommentsLinkHandlerFactory.java b/extractor/src/main/java/org/schabi/newpipe/extractor/services/peertube/linkHandler/PeertubeCommentsLinkHandlerFactory.java index dcd0c3256..9faa3492b 100644 --- a/extractor/src/main/java/org/schabi/newpipe/extractor/services/peertube/linkHandler/PeertubeCommentsLinkHandlerFactory.java +++ b/extractor/src/main/java/org/schabi/newpipe/extractor/services/peertube/linkHandler/PeertubeCommentsLinkHandlerFactory.java @@ -18,12 +18,6 @@ public class PeertubeCommentsLinkHandlerFactory extends ListLinkHandlerFactory { return instance; } - @Override - public String getUrl(String id) { - String baseUrl = ServiceList.PeerTube.getBaseUrl(); - return baseUrl + String.format(COMMENTS_ENDPOINT, id); - } - @Override public String getId(String url) throws ParsingException, IllegalArgumentException { return Parser.matchGroup(ID_PATTERN, url, 2); @@ -36,6 +30,13 @@ public class PeertubeCommentsLinkHandlerFactory extends ListLinkHandlerFactory { @Override public String getUrl(String id, List contentFilter, String sortFilter) throws ParsingException { - return getUrl(id); + String baseUrl = ServiceList.PeerTube.getBaseUrl(); + return getUrl(id, contentFilter, sortFilter, baseUrl); } + + @Override + public String getUrl(String id, List contentFilter, String sortFilter, String baseUrl) throws ParsingException { + return baseUrl + String.format(COMMENTS_ENDPOINT, id); + } + } diff --git a/extractor/src/main/java/org/schabi/newpipe/extractor/services/peertube/linkHandler/PeertubePlaylistLinkHandlerFactory.java b/extractor/src/main/java/org/schabi/newpipe/extractor/services/peertube/linkHandler/PeertubePlaylistLinkHandlerFactory.java index fa6413589..64e291a54 100644 --- a/extractor/src/main/java/org/schabi/newpipe/extractor/services/peertube/linkHandler/PeertubePlaylistLinkHandlerFactory.java +++ b/extractor/src/main/java/org/schabi/newpipe/extractor/services/peertube/linkHandler/PeertubePlaylistLinkHandlerFactory.java @@ -21,9 +21,14 @@ public class PeertubePlaylistLinkHandlerFactory extends ListLinkHandlerFactory { @Override public String getUrl(String id, List contentFilters, String sortFilter) { String baseUrl = ServiceList.PeerTube.getBaseUrl(); + return getUrl(id, contentFilters, sortFilter, baseUrl); + } + + @Override + public String getUrl(String id, List contentFilters, String sortFilter, String baseUrl) { return baseUrl + VIDEO_CHANNELS_ENDPOINT + id; } - + @Override public String getId(String url) throws ParsingException { return Parser.matchGroup1(ID_PATTERN, url); diff --git a/extractor/src/main/java/org/schabi/newpipe/extractor/services/peertube/linkHandler/PeertubeSearchQueryHandlerFactory.java b/extractor/src/main/java/org/schabi/newpipe/extractor/services/peertube/linkHandler/PeertubeSearchQueryHandlerFactory.java index 19a5ba26f..695911670 100644 --- a/extractor/src/main/java/org/schabi/newpipe/extractor/services/peertube/linkHandler/PeertubeSearchQueryHandlerFactory.java +++ b/extractor/src/main/java/org/schabi/newpipe/extractor/services/peertube/linkHandler/PeertubeSearchQueryHandlerFactory.java @@ -21,6 +21,11 @@ public class PeertubeSearchQueryHandlerFactory extends SearchQueryHandlerFactory @Override public String getUrl(String searchString, List contentFilters, String sortFilter) throws ParsingException { String baseUrl = ServiceList.PeerTube.getBaseUrl(); + return getUrl(searchString, contentFilters, sortFilter, baseUrl); + } + + @Override + public String getUrl(String searchString, List contentFilters, String sortFilter, String baseUrl) throws ParsingException { try { final String url = baseUrl + SEARCH_ENDPOINT + "?search=" + URLEncoder.encode(searchString, CHARSET_UTF_8); diff --git a/extractor/src/main/java/org/schabi/newpipe/extractor/services/peertube/linkHandler/PeertubeStreamLinkHandlerFactory.java b/extractor/src/main/java/org/schabi/newpipe/extractor/services/peertube/linkHandler/PeertubeStreamLinkHandlerFactory.java index 880c4d937..3ee7744cb 100644 --- a/extractor/src/main/java/org/schabi/newpipe/extractor/services/peertube/linkHandler/PeertubeStreamLinkHandlerFactory.java +++ b/extractor/src/main/java/org/schabi/newpipe/extractor/services/peertube/linkHandler/PeertubeStreamLinkHandlerFactory.java @@ -22,6 +22,11 @@ public class PeertubeStreamLinkHandlerFactory extends LinkHandlerFactory { @Override public String getUrl(String id) { String baseUrl = ServiceList.PeerTube.getBaseUrl(); + return getUrl(id, baseUrl); + } + + @Override + public String getUrl(String id, String baseUrl) { return baseUrl + VIDEO_ENDPOINT + id; } diff --git a/extractor/src/main/java/org/schabi/newpipe/extractor/services/peertube/linkHandler/PeertubeTrendingLinkHandlerFactory.java b/extractor/src/main/java/org/schabi/newpipe/extractor/services/peertube/linkHandler/PeertubeTrendingLinkHandlerFactory.java index c481a1992..906af5830 100644 --- a/extractor/src/main/java/org/schabi/newpipe/extractor/services/peertube/linkHandler/PeertubeTrendingLinkHandlerFactory.java +++ b/extractor/src/main/java/org/schabi/newpipe/extractor/services/peertube/linkHandler/PeertubeTrendingLinkHandlerFactory.java @@ -37,9 +37,15 @@ public class PeertubeTrendingLinkHandlerFactory extends ListLinkHandlerFactory { public static PeertubeTrendingLinkHandlerFactory getInstance() { return instance; } - + + @Override public String getUrl(String id, List contentFilters, String sortFilter) { String baseUrl = ServiceList.PeerTube.getBaseUrl(); + return getUrl(id, contentFilters, sortFilter, baseUrl); + } + + @Override + public String getUrl(String id, List contentFilters, String sortFilter, String baseUrl) { return String.format(KIOSK_MAP.get(id), baseUrl); } diff --git a/extractor/src/main/java/org/schabi/newpipe/extractor/utils/Utils.java b/extractor/src/main/java/org/schabi/newpipe/extractor/utils/Utils.java index 1f8da13b2..fd06d40f5 100644 --- a/extractor/src/main/java/org/schabi/newpipe/extractor/utils/Utils.java +++ b/extractor/src/main/java/org/schabi/newpipe/extractor/utils/Utils.java @@ -144,9 +144,9 @@ public class Utils { try { return new URL(url); } catch (MalformedURLException e) { - // if no protocol is given try prepending "http://" + // if no protocol is given try prepending "https://" if (e.getMessage().equals("no protocol: " + url)) { - return new URL(HTTP + url); + return new URL(HTTPS + url); } throw e; @@ -175,4 +175,15 @@ public class Utils { } return s; } + + public static String getBaseUrl(String url) throws ParsingException { + URL uri; + try { + uri = stringToURL(url); + } catch (MalformedURLException e) { + throw new ParsingException("Malformed url: " + url, e); + } + return uri.getProtocol() + "://" + uri.getAuthority(); + } + } \ No newline at end of file