2017-08-06 20:20:15 +00:00
|
|
|
package org.schabi.newpipe.extractor.services.youtube;
|
|
|
|
|
2021-12-27 20:08:08 +00:00
|
|
|
import org.junit.jupiter.api.BeforeAll;
|
|
|
|
import org.junit.jupiter.api.Test;
|
2022-08-07 11:58:21 +00:00
|
|
|
import org.junit.jupiter.params.ParameterizedTest;
|
|
|
|
import org.junit.jupiter.params.provider.CsvSource;
|
|
|
|
import org.junit.jupiter.params.provider.ValueSource;
|
2020-12-15 14:09:49 +00:00
|
|
|
import org.schabi.newpipe.downloader.DownloaderTestImpl;
|
2017-08-06 20:20:15 +00:00
|
|
|
import org.schabi.newpipe.extractor.NewPipe;
|
|
|
|
import org.schabi.newpipe.extractor.exceptions.FoundAdException;
|
|
|
|
import org.schabi.newpipe.extractor.exceptions.ParsingException;
|
2018-07-13 16:02:40 +00:00
|
|
|
import org.schabi.newpipe.extractor.services.youtube.linkHandler.YoutubeStreamLinkHandlerFactory;
|
2017-08-06 20:20:15 +00:00
|
|
|
|
|
|
|
import java.util.ArrayList;
|
|
|
|
import java.util.List;
|
|
|
|
|
2021-12-27 20:08:08 +00:00
|
|
|
import static org.junit.jupiter.api.Assertions.*;
|
2017-08-06 20:20:15 +00:00
|
|
|
|
|
|
|
/**
|
2018-07-13 16:02:40 +00:00
|
|
|
* Test for {@link YoutubeStreamLinkHandlerFactory}
|
2017-08-06 20:20:15 +00:00
|
|
|
*/
|
2018-07-13 16:02:40 +00:00
|
|
|
public class YoutubeStreamLinkHandlerFactoryTest {
|
2018-09-15 19:47:53 +00:00
|
|
|
private static YoutubeStreamLinkHandlerFactory linkHandler;
|
2017-08-06 20:20:15 +00:00
|
|
|
|
2021-12-27 20:08:08 +00:00
|
|
|
@BeforeAll
|
2018-02-12 16:29:36 +00:00
|
|
|
public static void setUp() {
|
2018-09-15 19:47:53 +00:00
|
|
|
linkHandler = YoutubeStreamLinkHandlerFactory.getInstance();
|
2019-04-28 20:03:16 +00:00
|
|
|
NewPipe.init(DownloaderTestImpl.getInstance());
|
2017-08-06 20:20:15 +00:00
|
|
|
}
|
|
|
|
|
2021-12-27 20:08:08 +00:00
|
|
|
@Test
|
2022-08-07 11:58:21 +00:00
|
|
|
void getIdWithNullAsUrl() {
|
|
|
|
assertThrows(NullPointerException.class, () -> linkHandler.fromId(null));
|
2017-08-06 20:20:15 +00:00
|
|
|
}
|
|
|
|
|
2021-12-27 20:08:08 +00:00
|
|
|
@Test
|
2022-08-07 11:58:21 +00:00
|
|
|
void getIdForAd() {
|
|
|
|
assertThrows(FoundAdException.class, () -> linkHandler.fromUrl(
|
|
|
|
"https://googleads.g.doubleclick.net/aclk?sa=l&ai=C-2IPgeVTWPf4GcOStgfOnIOADf78n61GvKmmobYDrgIQASDj-5MDKAJg9ZXOgeAEoAGgy_T-A8gBAakC2gkpmquIsT6oAwGqBJMBT9BgD5kVgbN0dX602bFFaDw9vsxq-We-S8VkrXVBi6W_e7brZ36GCz1WO3EPEeklYuJjXLUowwCOKsd-8xr1UlS_tusuFJv9iX35xoBHKTRvs8-0aDbfEIm6in37QDfFuZjqgEMB8-tg0Jn_Pf1RU5OzbuU40B4Gy25NUTnOxhDKthOhKBUSZEksCEerUV8GMu10iAXCxquwApIFBggDEAEYAaAGGsgGlIjthrUDgAfItIsBqAemvhvYBwHSCAUIgGEQAbgT6AE&num=1&sig=AOD64_1DybDd4qAm5O7o9UAbTNRdqXXHFQ&ctype=21&video_id=dMO_IXYPZew&client=ca-pub-6219811747049371&adurl=http://www.youtube.com/watch%3Fv%3DdMO_IXYPZew"));
|
2017-08-06 20:20:15 +00:00
|
|
|
}
|
|
|
|
|
2022-08-07 11:58:21 +00:00
|
|
|
@ParameterizedTest
|
|
|
|
@ValueSource(strings = {
|
|
|
|
"https://www.youtube.com/watch?v=jZViOEv90d",
|
|
|
|
"https://www.youtube.com/watchjZViOEv90d",
|
|
|
|
"https://www.youtube.com/",
|
|
|
|
"https://www.youtube.com/channel/UCBR8-60-B28hp2BmDPdntcQ",
|
|
|
|
"https://invidious.fdn.fr/channel/UCBR8-60-B28hp2BmDPdntcQ"
|
|
|
|
})
|
|
|
|
void getIdForInvalidUrls(final String invalidUrl) {
|
|
|
|
assertThrows(ParsingException.class, () -> linkHandler.fromUrl(invalidUrl).getId());
|
2017-08-06 20:20:15 +00:00
|
|
|
}
|
2017-08-08 15:01:50 +00:00
|
|
|
|
2022-08-07 11:58:21 +00:00
|
|
|
@ParameterizedTest
|
|
|
|
@ValueSource(strings = {
|
|
|
|
"https://www.youtube.com/watch?v=jZViOEv90dI",
|
|
|
|
"https://www.youtube.com/watch?v=jZViOEv90dI&t=100",
|
|
|
|
"https://WWW.YouTube.com/watch?v=jZViOEv90dI&t=100",
|
|
|
|
"HTTPS://www.youtube.com/watch?v=jZViOEv90dI&t=100",
|
|
|
|
"https://youtu.be/jZViOEv90dI?t=9s",
|
|
|
|
"HTTPS://Youtu.be/jZViOEv90dI?t=9s",
|
|
|
|
"https://www.youtube.com/embed/jZViOEv90dI",
|
|
|
|
"https://www.youtube-nocookie.com/embed/jZViOEv90dI",
|
|
|
|
"http://www.youtube.com/watch?v=jZViOEv90dI",
|
|
|
|
"http://youtube.com/watch?v=jZViOEv90dI",
|
|
|
|
"http://youtu.be/jZViOEv90dI?t=9s",
|
|
|
|
"http://www.youtube.com/embed/jZViOEv90dI",
|
|
|
|
"http://www.Youtube.com/embed/jZViOEv90dI",
|
|
|
|
"http://www.youtube-nocookie.com/embed/jZViOEv90dI",
|
|
|
|
"vnd.youtube://www.youtube.com/watch?v=jZViOEv90dI",
|
|
|
|
"vnd.youtube:jZViOEv90dI"
|
|
|
|
})
|
|
|
|
void getId_jZViOEv90dI_fromYt(final String url) throws Exception {
|
|
|
|
assertEquals("jZViOEv90dI", linkHandler.fromUrl(url).getId());
|
2018-02-12 16:29:36 +00:00
|
|
|
}
|
2017-08-06 20:20:15 +00:00
|
|
|
|
2022-08-07 11:58:21 +00:00
|
|
|
@ParameterizedTest
|
|
|
|
@ValueSource(strings = {
|
|
|
|
"https://www.youtube.com/shorts/IOS2fqxwYbA",
|
|
|
|
"http://www.youtube.com/shorts/IOS2fqxwYbA",
|
|
|
|
"http://www.youtube.com/v/IOS2fqxwYbA",
|
|
|
|
"https://www.youtube.com/w/IOS2fqxwYbA",
|
|
|
|
"https://www.youtube.com/watch/IOS2fqxwYbA"
|
|
|
|
})
|
|
|
|
void getId_IOS2fqxwYbA_fromYt(final String url) throws Exception {
|
|
|
|
assertEquals("IOS2fqxwYbA", linkHandler.fromUrl(url).getId());
|
2018-02-12 16:29:36 +00:00
|
|
|
}
|
2017-08-06 20:20:15 +00:00
|
|
|
|
2022-08-07 11:58:21 +00:00
|
|
|
@ParameterizedTest
|
|
|
|
@ValueSource(strings = {
|
|
|
|
"https://m.youtube.com/watch?v=-cdveCh1kQk)",
|
|
|
|
"https://www.youtube.com/watch?v=-cdveCh1kQk-",
|
|
|
|
"https://WWW.YouTube.com/watch?v=-cdveCh1kQkwhatever",
|
|
|
|
"https://youtu.be/-cdveCh1kQk)hello",
|
|
|
|
"HTTPS://youtu.be/-cdveCh1kQk)"
|
|
|
|
})
|
|
|
|
void getId_cdveCh1kQk_fromYt(final String url) throws Exception {
|
|
|
|
assertEquals("-cdveCh1kQk", linkHandler.fromUrl(url).getId());
|
2018-02-12 16:29:36 +00:00
|
|
|
}
|
|
|
|
|
2022-08-07 11:58:21 +00:00
|
|
|
@ParameterizedTest
|
|
|
|
@CsvSource({
|
|
|
|
"W-fFHeTX70Q,https://www.youtube.com/watch?v=W-fFHeTX70Q",
|
|
|
|
"uEJuoEs1UxY,http://www.youtube.com/watch_popup?v=uEJuoEs1UxY",
|
|
|
|
"uEJuoEs1UxY,http://www.Youtube.com/watch_popup?v=uEJuoEs1UxY",
|
|
|
|
"7_WWz2DSnT8,https://youtu.be/7_WWz2DSnT8",
|
|
|
|
"oy6NvWeVruY,https://m.youtube.com/watch?v=oy6NvWeVruY",
|
|
|
|
"EhxJLojIE_o,http://www.youtube.com/attribution_link?a=JdfC0C9V6ZI&u=%2Fwatch%3Fv%3DEhxJLojIE_o%26feature%3Dshare",
|
|
|
|
"n8X9_MgEdCg,vnd.youtube://n8X9_MgEdCg",
|
|
|
|
"O0EDx9WAelc,https://music.youtube.com/watch?v=O0EDx9WAelc",
|
|
|
|
"O0EDx9WAelc,HTTPS://www.youtube.com/watch?v=O0EDx9WAelc]",
|
|
|
|
"OGS7c0-CmRs,https://YouTu.be/OGS7c0-CmRswhatever)"
|
|
|
|
})
|
|
|
|
void getId_diverse_fromYt(final String expectedId, final String url) throws Exception {
|
|
|
|
assertEquals(expectedId, linkHandler.fromUrl(url).getId());
|
2018-02-12 16:29:36 +00:00
|
|
|
}
|
2020-02-08 22:58:46 +00:00
|
|
|
|
2022-08-07 11:58:21 +00:00
|
|
|
@ParameterizedTest
|
|
|
|
@ValueSource(strings = {
|
|
|
|
"https://www.youtube.com/watch?v=jZViOEv90dI",
|
|
|
|
"https://www.youtube.com/watch?v=jZViOEv90dI&t=100",
|
|
|
|
"https://WWW.YouTube.com/watch?v=jZViOEv90dI&t=100",
|
|
|
|
"HTTPS://www.youtube.com/watch?v=jZViOEv90dI&t=100",
|
|
|
|
"https://youtu.be/jZViOEv90dI?t=9s",
|
|
|
|
"https://www.youtube.com/embed/jZViOEv90dI",
|
|
|
|
"https://www.youtube-nocookie.com/embed/jZViOEv90dI",
|
|
|
|
"http://www.youtube.com/watch?v=jZViOEv90dI",
|
|
|
|
"http://youtu.be/jZViOEv90dI?t=9s",
|
|
|
|
"http://www.youtube.com/embed/jZViOEv90dI",
|
|
|
|
"http://www.youtube-nocookie.com/embed/jZViOEv90dI",
|
|
|
|
"http://www.youtube.com/attribution_link?a=JdfC0C9V6ZI&u=%2Fwatch%3Fv%3DEhxJLojIE_o%26feature%3Dshare",
|
|
|
|
"vnd.youtube://www.youtube.com/watch?v=jZViOEv90dI",
|
|
|
|
"vnd.youtube:jZViOEv90dI",
|
|
|
|
"vnd.youtube.launch:jZViOEv90dI",
|
|
|
|
"https://music.youtube.com/watch?v=O0EDx9WAelc",
|
|
|
|
"https://www.youtube.com/shorts/IOS2fqxwYbA",
|
|
|
|
"http://www.youtube.com/shorts/IOS2fqxwYbA",
|
|
|
|
"http://www.youtube.com/v/IOS2fqxwYbA",
|
|
|
|
"https://www.youtube.com/w/IOS2fqxwYbA",
|
|
|
|
"https://www.youtube.com/watch/IOS2fqxwYbA"
|
|
|
|
})
|
|
|
|
void acceptYtUrl(final String url) throws ParsingException {
|
|
|
|
assertTrue(linkHandler.acceptUrl(url));
|
2019-01-24 09:27:01 +00:00
|
|
|
}
|
2020-02-08 22:58:46 +00:00
|
|
|
|
2022-08-07 11:58:21 +00:00
|
|
|
@ParameterizedTest
|
|
|
|
@ValueSource(strings = {
|
|
|
|
"https://hooktube.com/watch?v=TglNG-yjabU",
|
|
|
|
"http://hooktube.com/watch?v=TglNG-yjabU",
|
|
|
|
"https://hooktube.com/watch?v=ocH3oSnZG3c&test=PLS2VU1j4vzuZwooPjV26XM9UEBY2CPNn2",
|
|
|
|
"hooktube.com/watch?v=3msbfr6pBNE",
|
|
|
|
"hooktube.com/watch/3msbfr6pBNE",
|
|
|
|
"hooktube.com/v/3msbfr6pBNE",
|
|
|
|
"hooktube.com/embed/3msbfr6pBNE"
|
|
|
|
})
|
|
|
|
void acceptHookUrl(final String url) throws ParsingException {
|
|
|
|
assertTrue(linkHandler.acceptUrl(url));
|
|
|
|
}
|
|
|
|
|
|
|
|
@ParameterizedTest
|
|
|
|
@CsvSource({
|
|
|
|
"TglNG-yjabU,https://hooktube.com/watch?v=TglNG-yjabU",
|
|
|
|
"TglNG-yjabU,http://hooktube.com/watch?v=TglNG-yjabU",
|
|
|
|
"ocH3oSnZG3c,https://hooktube.com/watch?v=ocH3oSnZG3c&test=PLS2VU1j4vzuZwooPjV26XM9UEBY2CPNn2",
|
|
|
|
"3msbfr6pBNE,hooktube.com/watch?v=3msbfr6pBNE",
|
|
|
|
"3msbfr6pBNE,hooktube.com/watch/3msbfr6pBNE",
|
|
|
|
"3msbfr6pBNE,hooktube.com/v/3msbfr6pBNE",
|
|
|
|
"3msbfr6pBNE,hooktube.com/w/3msbfr6pBNE",
|
|
|
|
"3msbfr6pBNE,hooktube.com/embed/3msbfr6pBNE"
|
|
|
|
})
|
|
|
|
void getHookIdfromUrl(final String expectedId, final String url) throws Exception {
|
|
|
|
assertEquals(expectedId, linkHandler.fromUrl(url).getId());
|
|
|
|
}
|
|
|
|
|
|
|
|
@ParameterizedTest
|
|
|
|
@ValueSource(strings = {
|
|
|
|
"https://invidious.fdn.fr/watch?v=TglNG-yjabU",
|
|
|
|
"http://www.invidio.us/watch?v=TglNG-yjabU",
|
|
|
|
"http://invidious.fdn.fr/watch?v=TglNG-yjabU",
|
|
|
|
"invidious.fdn.fr/watch?v=3msbfr6pBNE",
|
|
|
|
"https://invidious.fdn.fr/watch?v=ocH3oSnZG3c&test=PLS2VU1j4vzuZwooPjV26XM9UEBY2CPNn2",
|
|
|
|
"invidious.fdn.fr/embed/3msbfr6pBNE",
|
|
|
|
"invidious.fdn.fr/watch/3msbfr6pBNE",
|
|
|
|
"invidious.fdn.fr/v/3msbfr6pBNE",
|
|
|
|
"invidious.fdn.fr/w/3msbfr6pBNE"
|
|
|
|
})
|
|
|
|
void acceptInvidiousUrl(final String url) throws ParsingException {
|
|
|
|
assertTrue(linkHandler.acceptUrl(url));
|
|
|
|
}
|
|
|
|
|
|
|
|
@ParameterizedTest
|
|
|
|
@CsvSource({
|
|
|
|
"TglNG-yjabU,https://invidious.fdn.fr/watch?v=TglNG-yjabU",
|
|
|
|
"TglNG-yjabU,http://www.invidio.us/watch?v=TglNG-yjabU",
|
|
|
|
"TglNG-yjabU,http://invidious.fdn.fr/watch?v=TglNG-yjabU",
|
|
|
|
"ocH3oSnZG3c,https://invidious.fdn.fr/watch?v=ocH3oSnZG3c&test=PLS2VU1j4vzuZwooPjV26XM9UEBY2CPNn2",
|
|
|
|
"3msbfr6pBNE,invidious.fdn.fr/watch?v=3msbfr6pBNE",
|
|
|
|
"3msbfr6pBNE,invidious.fdn.fr/embed/3msbfr6pBNE",
|
|
|
|
"3msbfr6pBNE,invidious.fdn.fr/v/3msbfr6pBNE",
|
|
|
|
"3msbfr6pBNE,invidious.fdn.fr/w/3msbfr6pBNE",
|
|
|
|
"3msbfr6pBNE,invidious.fdn.fr/watch/3msbfr6pBNE"
|
|
|
|
})
|
|
|
|
void getInvidiousIdfromUrl(final String expectedId, final String url) throws Exception {
|
|
|
|
assertEquals(expectedId, linkHandler.fromUrl(url).getId());
|
2019-01-24 09:27:01 +00:00
|
|
|
}
|
2017-08-06 20:20:15 +00:00
|
|
|
}
|