Skip to content

Commit c190a30

Browse files
committed
Consider protocol as base url when it is a custom one (e.g. vnd.youtube)
1 parent bcc01b9 commit c190a30

5 files changed

Lines changed: 17 additions & 33 deletions

File tree

extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/YoutubeParsingHelper.java

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -55,12 +55,6 @@ public class YoutubeParsingHelper {
5555
private YoutubeParsingHelper() {
5656
}
5757

58-
/**
59-
* The official youtube app supports intents in this format, where after the ':' is the videoId.
60-
* Accordingly there are other apps sharing streams in this format.
61-
*/
62-
public final static String BASE_YOUTUBE_INTENT_URL = "vnd.youtube";
63-
6458
private static final String HARDCODED_CLIENT_VERSION = "2.20200214.04.00";
6559
private static String clientVersion;
6660

extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/linkHandler/YoutubeCommentsLinkHandlerFactory.java

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,7 @@
11
package org.schabi.newpipe.extractor.services.youtube.linkHandler;
22

3-
import static org.schabi.newpipe.extractor.services.youtube.YoutubeParsingHelper.BASE_YOUTUBE_INTENT_URL;
4-
53
import org.schabi.newpipe.extractor.exceptions.FoundAdException;
64
import org.schabi.newpipe.extractor.exceptions.ParsingException;
7-
import org.schabi.newpipe.extractor.linkhandler.ListLinkHandler;
85
import org.schabi.newpipe.extractor.linkhandler.ListLinkHandlerFactory;
96

107
import java.util.List;
@@ -17,15 +14,6 @@ public static YoutubeCommentsLinkHandlerFactory getInstance() {
1714
return instance;
1815
}
1916

20-
@Override
21-
public ListLinkHandler fromUrl(String url) throws ParsingException {
22-
if (url.startsWith(BASE_YOUTUBE_INTENT_URL)){
23-
return super.fromUrl(url, BASE_YOUTUBE_INTENT_URL);
24-
} else {
25-
return super.fromUrl(url);
26-
}
27-
}
28-
2917
@Override
3018
public String getUrl(String id) {
3119
return "https://m.youtube.com/watch?v=" + id;

extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/linkHandler/YoutubeStreamLinkHandlerFactory.java

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
import org.schabi.newpipe.extractor.exceptions.FoundAdException;
44
import org.schabi.newpipe.extractor.exceptions.ParsingException;
5-
import org.schabi.newpipe.extractor.linkhandler.LinkHandler;
65
import org.schabi.newpipe.extractor.linkhandler.LinkHandlerFactory;
76
import org.schabi.newpipe.extractor.services.youtube.YoutubeParsingHelper;
87
import org.schabi.newpipe.extractor.utils.Utils;
@@ -15,8 +14,6 @@
1514
import java.util.regex.Matcher;
1615
import java.util.regex.Pattern;
1716

18-
import static org.schabi.newpipe.extractor.services.youtube.YoutubeParsingHelper.BASE_YOUTUBE_INTENT_URL;
19-
2017
/*
2118
* Created by Christian Schabesberger on 02.02.16.
2219
*
@@ -67,15 +64,6 @@ private static String assertIsId(@Nullable final String id) throws ParsingExcept
6764
}
6865
}
6966

70-
@Override
71-
public LinkHandler fromUrl(String url) throws ParsingException {
72-
if (url.startsWith(BASE_YOUTUBE_INTENT_URL)) {
73-
return super.fromUrl(url, BASE_YOUTUBE_INTENT_URL);
74-
} else {
75-
return super.fromUrl(url);
76-
}
77-
}
78-
7967
@Override
8068
public String getUrl(String id) {
8169
return "https://www.youtube.com/watch?v=" + id;

extractor/src/main/java/org/schabi/newpipe/extractor/utils/Utils.java

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -182,13 +182,18 @@ public static String removeUTF8BOM(String s) {
182182
}
183183

184184
public static String getBaseUrl(String url) throws ParsingException {
185-
URL uri;
186185
try {
187-
uri = stringToURL(url);
186+
final URL uri = stringToURL(url);
187+
return uri.getProtocol() + "://" + uri.getAuthority();
188188
} catch (MalformedURLException e) {
189+
final String message = e.getMessage();
190+
if (message.startsWith("unknown protocol: ")) {
191+
System.out.println(message.substring(18));
192+
return message.substring(18); // return just the protocol (e.g. vnd.youtube)
193+
}
194+
189195
throw new ParsingException("Malformed url: " + url, e);
190196
}
191-
return uri.getProtocol() + "://" + uri.getAuthority();
192197
}
193198

194199
public static boolean isNullOrEmpty(final String str) {

extractor/src/test/java/org/schabi/newpipe/extractor/utils/UtilsTest.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,4 +21,13 @@ public void testMixedNumberWordToLong() throws ParsingException {
2121
public void testJoin() {
2222
assertEquals("some,random,stuff", Utils.join(",", Arrays.asList("some", "random", "stuff")));
2323
}
24+
25+
@Test
26+
public void testGetBaseUrl() throws ParsingException {
27+
assertEquals("https://www.youtube.com", Utils.getBaseUrl("https://www.youtube.com/watch?v=Hu80uDzh8RY"));
28+
assertEquals("vnd.youtube", Utils.getBaseUrl("vnd.youtube://www.youtube.com/watch?v=jZViOEv90dI"));
29+
assertEquals("vnd.youtube", Utils.getBaseUrl("vnd.youtube:jZViOEv90dI"));
30+
assertEquals("vnd.youtube", Utils.getBaseUrl("vnd.youtube://n8X9_MgEdCg"));
31+
assertEquals("https://music.youtube.com", Utils.getBaseUrl("https://music.youtube.com/watch?v=O0EDx9WAelc"));
32+
}
2433
}

0 commit comments

Comments
 (0)