added support for invidio.us links
This commit is contained in:
parent
91b1efc97e
commit
060d77ce34
|
@ -47,7 +47,7 @@ public class YoutubeChannelLinkHandlerFactory extends ListLinkHandlerFactory {
|
|||
|
||||
@Override
|
||||
public boolean onAcceptUrl(String url) {
|
||||
return (url.contains("youtube") || url.contains("youtu.be") || url.contains("hooktube.com"))
|
||||
return (url.contains("youtube") || url.contains("youtu.be") || url.contains("hooktube.com") || url.contains("invidio.us"))
|
||||
&& (url.contains("/user/") || url.contains("/channel/"));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -34,7 +34,7 @@ public class YoutubePlaylistLinkHandlerFactory extends ListLinkHandlerFactory {
|
|||
@Override
|
||||
public boolean onAcceptUrl(final String url) {
|
||||
final boolean hasNotEmptyUrl = url != null && !url.isEmpty();
|
||||
final boolean isYoutubeDomain = hasNotEmptyUrl && (url.contains("youtube") || url.contains("youtu.be"));
|
||||
return isYoutubeDomain && url.contains("list=");
|
||||
final boolean isValidDomain = hasNotEmptyUrl && (url.contains("youtube") || url.contains("youtu.be") || url.contains("invidio.us"));
|
||||
return isValidDomain && url.contains("list=");
|
||||
}
|
||||
}
|
||||
|
|
|
@ -109,6 +109,15 @@ public class YoutubeStreamLinkHandlerFactory extends LinkHandlerFactory {
|
|||
return Parser.matchGroup1("watch/" + ID_PATTERN, url);
|
||||
}
|
||||
}
|
||||
if (lowercaseUrl.contains("invidio.us")) {
|
||||
if (lowercaseUrl.contains("&v=")
|
||||
|| lowercaseUrl.contains("?v=")) {
|
||||
return Parser.matchGroup1("[?&]v=" + ID_PATTERN, url);
|
||||
}
|
||||
if (url.contains("/embed/")) {
|
||||
return Parser.matchGroup1("embed/" + ID_PATTERN, url);
|
||||
}
|
||||
}
|
||||
throw new ParsingException("Error no suitable url: " + url);
|
||||
}
|
||||
|
||||
|
@ -117,7 +126,8 @@ public class YoutubeStreamLinkHandlerFactory extends LinkHandlerFactory {
|
|||
final String lowercaseUrl = url.toLowerCase();
|
||||
if (!lowercaseUrl.contains("youtube") &&
|
||||
!lowercaseUrl.contains("youtu.be") &&
|
||||
!lowercaseUrl.contains("hooktube")) {
|
||||
!lowercaseUrl.contains("hooktube") &&
|
||||
!lowercaseUrl.contains("invidio.us")) {
|
||||
return false;
|
||||
// bad programming I know <-- nice meme
|
||||
}
|
||||
|
|
|
@ -37,6 +37,12 @@ public class YoutubeChannelLinkHandlerFactoryTest {
|
|||
|
||||
assertTrue(linkHandler.acceptUrl("https://hooktube.com/channel/UClq42foiSgl7sSpLupnugGA"));
|
||||
assertTrue(linkHandler.acceptUrl("https://hooktube.com/channel/UClq42foiSgl7sSpLupnugGA/videos?disable_polymer=1"));
|
||||
|
||||
assertTrue(linkHandler.acceptUrl("https://invidio.us/user/Gronkh"));
|
||||
assertTrue(linkHandler.acceptUrl("https://invidio.us/user/Netzkino/videos"));
|
||||
|
||||
assertTrue(linkHandler.acceptUrl("https://invidio.us/channel/UClq42foiSgl7sSpLupnugGA"));
|
||||
assertTrue(linkHandler.acceptUrl("https://invidio.us/channel/UClq42foiSgl7sSpLupnugGA/videos?disable_polymer=1"));
|
||||
}
|
||||
|
||||
@Test
|
||||
|
@ -53,5 +59,12 @@ public class YoutubeChannelLinkHandlerFactoryTest {
|
|||
|
||||
assertEquals("channel/UClq42foiSgl7sSpLupnugGA", linkHandler.fromUrl("https://hooktube.com/channel/UClq42foiSgl7sSpLupnugGA").getId());
|
||||
assertEquals("channel/UClq42foiSgl7sSpLupnugGA", linkHandler.fromUrl("https://hooktube.com/channel/UClq42foiSgl7sSpLupnugGA/videos?disable_polymer=1").getId());
|
||||
|
||||
|
||||
assertEquals("user/Gronkh", linkHandler.fromUrl("https://invidio.us/user/Gronkh").getId());
|
||||
assertEquals("user/Netzkino", linkHandler.fromUrl("https://invidio.us/user/Netzkino/videos").getId());
|
||||
|
||||
assertEquals("channel/UClq42foiSgl7sSpLupnugGA", linkHandler.fromUrl("https://invidio.us/channel/UClq42foiSgl7sSpLupnugGA").getId());
|
||||
assertEquals("channel/UClq42foiSgl7sSpLupnugGA", linkHandler.fromUrl("https://invidio.us/channel/UClq42foiSgl7sSpLupnugGA/videos?disable_polymer=1").getId());
|
||||
}
|
||||
}
|
||||
|
|
|
@ -121,4 +121,20 @@ public class YoutubeStreamLinkHandlerFactoryTest {
|
|||
assertEquals("3msbfr6pBNE", linkHandler.fromUrl("hooktube.com/v/3msbfr6pBNE").getId());
|
||||
assertEquals("3msbfr6pBNE", linkHandler.fromUrl("hooktube.com/embed/3msbfr6pBNE").getId());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testAcceptInvidioUrl() throws ParsingException {
|
||||
assertTrue(linkHandler.acceptUrl("https://invidio.us/watch?v=TglNG-yjabU"));
|
||||
assertTrue(linkHandler.acceptUrl("invidio.us/watch?v=3msbfr6pBNE"));
|
||||
assertTrue(linkHandler.acceptUrl("https://invidio.us/watch?v=ocH3oSnZG3c&list=PLS2VU1j4vzuZwooPjV26XM9UEBY2CPNn2"));
|
||||
assertTrue(linkHandler.acceptUrl("invidio.us/embed/3msbfr6pBNE"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetInvidioIdfromUrl() throws ParsingException {
|
||||
assertEquals("TglNG-yjabU", linkHandler.fromUrl("https://invidio.us/watch?v=TglNG-yjabU").getId());
|
||||
assertEquals("3msbfr6pBNE", linkHandler.fromUrl("invidio.us/watch?v=3msbfr6pBNE").getId());
|
||||
assertEquals("ocH3oSnZG3c", linkHandler.fromUrl("https://invidio.us/watch?v=ocH3oSnZG3c&list=PLS2VU1j4vzuZwooPjV26XM9UEBY2CPNn2").getId());
|
||||
assertEquals("3msbfr6pBNE", linkHandler.fromUrl("invidio.us/embed/3msbfr6pBNE").getId());
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue