Skip to content

Commit bf30d70

Browse files
committed
[YouTube] Add descriptive audio test
This test uses video TjxC-evzxdk. Also improve a bit YoutubeStreamExtractorDefaultTest.AudioTrackLanguage test.
1 parent 76b7c19 commit bf30d70

8 files changed

Lines changed: 1657 additions & 11 deletions

File tree

extractor/src/test/java/org/schabi/newpipe/extractor/services/youtube/stream/YoutubeStreamExtractorDefaultTest.java

Lines changed: 30 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
package org.schabi.newpipe.extractor.services.youtube.stream;
2222

2323
import static org.junit.jupiter.api.Assertions.assertEquals;
24+
import static org.junit.jupiter.api.Assertions.assertFalse;
2425
import static org.junit.jupiter.api.Assertions.assertNotNull;
2526
import static org.junit.jupiter.api.Assertions.assertThrows;
2627
import static org.junit.jupiter.api.Assertions.assertTrue;
@@ -546,24 +547,42 @@ public static void setUp() throws Exception {
546547

547548
@Test
548549
void testCheckAudioStreams() throws Exception {
549-
assertTrue(extractor.getAudioStreams().size() > 0);
550+
assertFalse(extractor.getAudioStreams().isEmpty());
550551

551552
for (final AudioStream audioStream : extractor.getAudioStreams()) {
552553
assertNotNull(audioStream.getAudioTrackName());
553554
}
554555

555-
assertTrue(
556-
extractor.getAudioStreams()
557-
.stream()
558-
.anyMatch(audioStream -> audioStream.getAudioTrackName().equals("English"))
559-
);
556+
assertTrue(extractor.getAudioStreams()
557+
.stream()
558+
.anyMatch(audioStream -> "English".equals(audioStream.getAudioTrackName())));
560559

561-
assertTrue(
562-
extractor.getAudioStreams()
563-
.stream()
564-
.anyMatch(audioStream -> audioStream.getAudioTrackName().equals("Hindi"))
565-
);
560+
assertTrue(extractor.getAudioStreams()
561+
.stream()
562+
.anyMatch(audioStream -> "Hindi".equals(audioStream.getAudioTrackName())));
563+
}
564+
}
565+
566+
public static class DescriptiveAudio {
567+
private static final String ID = "TjxC-evzxdk";
568+
private static final String URL = BASE_URL + ID;
569+
private static StreamExtractor extractor;
570+
571+
@BeforeAll
572+
public static void setUp() throws Exception {
573+
YoutubeTestsUtils.ensureStateless();
574+
NewPipe.init(DownloaderFactory.getDownloader(RESOURCE_PATH + "descriptiveAudio"));
575+
extractor = YouTube.getStreamExtractor(URL);
576+
extractor.fetchPage();
566577
}
567578

579+
@Test
580+
void testCheckDescriptiveAudio() throws Exception {
581+
assertFalse(extractor.getAudioStreams().isEmpty());
582+
583+
assertTrue(extractor.getAudioStreams()
584+
.stream()
585+
.anyMatch(AudioStream::isDescriptive));
586+
}
568587
}
569588
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
{
2+
"request": {
3+
"httpMethod": "GET",
4+
"url": "https://www.youtube.com/iframe_api",
5+
"headers": {
6+
"Accept-Language": [
7+
"en-GB, en;q\u003d0.9"
8+
]
9+
},
10+
"localization": {
11+
"languageCode": "en",
12+
"countryCode": "GB"
13+
}
14+
},
15+
"response": {
16+
"responseCode": 200,
17+
"responseMessage": "",
18+
"responseHeaders": {
19+
"alt-svc": [
20+
"h3\u003d\":443\"; ma\u003d2592000,h3-29\u003d\":443\"; ma\u003d2592000"
21+
],
22+
"cache-control": [
23+
"private, max-age\u003d0"
24+
],
25+
"content-security-policy-report-only": [
26+
"base-uri \u0027self\u0027;default-src \u0027self\u0027 https: blob:;font-src https: data:;img-src https: data: android-webview-video-poster:;media-src blob: https:;object-src \u0027none\u0027;script-src \u0027nonce-n5UoXCJvOauVo_kO_mAFJg\u0027 \u0027unsafe-inline\u0027 \u0027strict-dynamic\u0027 https: http: \u0027unsafe-eval\u0027;style-src https: \u0027unsafe-inline\u0027;report-uri /cspreport"
27+
],
28+
"content-type": [
29+
"text/javascript; charset\u003dutf-8"
30+
],
31+
"cross-origin-opener-policy-report-only": [
32+
"same-origin; report-to\u003d\"youtube_main\""
33+
],
34+
"cross-origin-resource-policy": [
35+
"cross-origin"
36+
],
37+
"date": [
38+
"Mon, 30 Jan 2023 18:31:11 GMT"
39+
],
40+
"expires": [
41+
"Mon, 30 Jan 2023 18:31:11 GMT"
42+
],
43+
"p3p": [
44+
"CP\u003d\"This is not a P3P policy! See http://support.google.com/accounts/answer/151657?hl\u003den-GB for more info.\""
45+
],
46+
"permissions-policy": [
47+
"ch-ua-arch\u003d*, ch-ua-bitness\u003d*, ch-ua-full-version\u003d*, ch-ua-full-version-list\u003d*, ch-ua-model\u003d*, ch-ua-wow64\u003d*, ch-ua-platform\u003d*, ch-ua-platform-version\u003d*"
48+
],
49+
"report-to": [
50+
"{\"group\":\"youtube_main\",\"max_age\":2592000,\"endpoints\":[{\"url\":\"https://csp.withgoogle.com/csp/report-to/youtube_main\"}]}"
51+
],
52+
"server": [
53+
"ESF"
54+
],
55+
"set-cookie": [
56+
"YSC\u003dDcMnDslDdHw; Domain\u003d.youtube.com; Path\u003d/; Secure; HttpOnly; SameSite\u003dnone",
57+
"DEVICE_INFO\u003dChxOekU1TkRVeE5EWXlOVFkwTkRBNE16QXlNZz09EO+Z4J4GGO+Z4J4G; Domain\u003d.youtube.com; Expires\u003dSat, 29-Jul-2023 18:31:11 GMT; Path\u003d/; Secure; HttpOnly; SameSite\u003dnone",
58+
"VISITOR_INFO1_LIVE\u003dx01Dzzf4XZk; Domain\u003d.youtube.com; Expires\u003dSat, 29-Jul-2023 18:31:11 GMT; Path\u003d/; Secure; HttpOnly; SameSite\u003dnone",
59+
"CONSENT\u003dPENDING+527; expires\u003dWed, 29-Jan-2025 18:31:11 GMT; path\u003d/; domain\u003d.youtube.com; Secure"
60+
],
61+
"strict-transport-security": [
62+
"max-age\u003d31536000"
63+
],
64+
"x-content-type-options": [
65+
"nosniff"
66+
],
67+
"x-frame-options": [
68+
"SAMEORIGIN"
69+
],
70+
"x-xss-protection": [
71+
"0"
72+
]
73+
},
74+
"responseBody": "var scriptUrl \u003d \u0027https:\\/\\/www.youtube.com\\/s\\/player\\/4248d311\\/www-widgetapi.vflset\\/www-widgetapi.js\u0027;try{var ttPolicy\u003dwindow.trustedTypes.createPolicy(\"youtube-widget-api\",{createScriptURL:function(x){return x}});scriptUrl\u003dttPolicy.createScriptURL(scriptUrl)}catch(e){}var YT;if(!window[\"YT\"])YT\u003d{loading:0,loaded:0};var YTConfig;if(!window[\"YTConfig\"])YTConfig\u003d{\"host\":\"https://www.youtube.com\"};\nif(!YT.loading){YT.loading\u003d1;(function(){var l\u003d[];YT.ready\u003dfunction(f){if(YT.loaded)f();else l.push(f)};window.onYTReady\u003dfunction(){YT.loaded\u003d1;for(var i\u003d0;i\u003cl.length;i++)try{l[i]()}catch(e$0){}};YT.setConfig\u003dfunction(c){for(var k in c)if(c.hasOwnProperty(k))YTConfig[k]\u003dc[k]};var a\u003ddocument.createElement(\"script\");a.type\u003d\"text/javascript\";a.id\u003d\"www-widgetapi-script\";a.src\u003dscriptUrl;a.async\u003dtrue;var c\u003ddocument.currentScript;if(c){var n\u003dc.nonce||c.getAttribute(\"nonce\");if(n)a.setAttribute(\"nonce\",n)}var b\u003d\ndocument.getElementsByTagName(\"script\")[0];b.parentNode.insertBefore(a,b)})()};\n",
75+
"latestUrl": "https://www.youtube.com/iframe_api"
76+
}
77+
}

extractor/src/test/resources/org/schabi/newpipe/extractor/services/youtube/extractor/stream/descriptiveAudio/generated_mock_1.json

Lines changed: 71 additions & 0 deletions
Large diffs are not rendered by default.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
{
2+
"request": {
3+
"httpMethod": "GET",
4+
"url": "https://www.youtube.com/sw.js",
5+
"headers": {
6+
"Referer": [
7+
"https://www.youtube.com"
8+
],
9+
"Origin": [
10+
"https://www.youtube.com"
11+
],
12+
"Accept-Language": [
13+
"en-GB, en;q\u003d0.9"
14+
]
15+
},
16+
"localization": {
17+
"languageCode": "en",
18+
"countryCode": "GB"
19+
}
20+
},
21+
"response": {
22+
"responseCode": 200,
23+
"responseMessage": "",
24+
"responseHeaders": {
25+
"access-control-allow-credentials": [
26+
"true"
27+
],
28+
"access-control-allow-origin": [
29+
"https://www.youtube.com"
30+
],
31+
"alt-svc": [
32+
"h3\u003d\":443\"; ma\u003d2592000,h3-29\u003d\":443\"; ma\u003d2592000"
33+
],
34+
"cache-control": [
35+
"private, max-age\u003d0"
36+
],
37+
"content-type": [
38+
"text/javascript; charset\u003dutf-8"
39+
],
40+
"cross-origin-opener-policy-report-only": [
41+
"same-origin; report-to\u003d\"youtube_main\""
42+
],
43+
"date": [
44+
"Mon, 30 Jan 2023 18:31:14 GMT"
45+
],
46+
"expires": [
47+
"Mon, 30 Jan 2023 18:31:14 GMT"
48+
],
49+
"p3p": [
50+
"CP\u003d\"This is not a P3P policy! See http://support.google.com/accounts/answer/151657?hl\u003den-GB for more info.\""
51+
],
52+
"permissions-policy": [
53+
"ch-ua-arch\u003d*, ch-ua-bitness\u003d*, ch-ua-full-version\u003d*, ch-ua-full-version-list\u003d*, ch-ua-model\u003d*, ch-ua-wow64\u003d*, ch-ua-platform\u003d*, ch-ua-platform-version\u003d*"
54+
],
55+
"report-to": [
56+
"{\"group\":\"youtube_main\",\"max_age\":2592000,\"endpoints\":[{\"url\":\"https://csp.withgoogle.com/csp/report-to/youtube_main\"}]}"
57+
],
58+
"server": [
59+
"ESF"
60+
],
61+
"set-cookie": [
62+
"YSC\u003dlneu_eWU8iY; Domain\u003d.youtube.com; Path\u003d/; Secure; HttpOnly; SameSite\u003dnone",
63+
"VISITOR_INFO1_LIVE\u003d; Domain\u003d.youtube.com; Expires\u003dTue, 05-May-2020 18:31:14 GMT; Path\u003d/; Secure; HttpOnly; SameSite\u003dnone",
64+
"CONSENT\u003dPENDING+588; expires\u003dWed, 29-Jan-2025 18:31:14 GMT; path\u003d/; domain\u003d.youtube.com; Secure"
65+
],
66+
"strict-transport-security": [
67+
"max-age\u003d31536000"
68+
],
69+
"x-content-type-options": [
70+
"nosniff"
71+
],
72+
"x-frame-options": [
73+
"SAMEORIGIN"
74+
],
75+
"x-xss-protection": [
76+
"0"
77+
]
78+
},
79+
"responseBody": "\n self.addEventListener(\u0027install\u0027, event \u003d\u003e {\n event.waitUntil(self.skipWaiting());\n });\n self.addEventListener(\u0027activate\u0027, event \u003d\u003e {\n event.waitUntil(\n self.clients.claim().then(() \u003d\u003e self.registration.unregister()));\n });\n ",
80+
"latestUrl": "https://www.youtube.com/sw.js"
81+
}
82+
}

extractor/src/test/resources/org/schabi/newpipe/extractor/services/youtube/extractor/stream/descriptiveAudio/generated_mock_3.json

Lines changed: 76 additions & 0 deletions
Large diffs are not rendered by default.

0 commit comments

Comments
 (0)