Skip to content

Commit b16e608

Browse files
committed
Add test for audio stream languages.
1 parent 30909da commit b16e608

7 files changed

Lines changed: 1563 additions & 0 deletions

File tree

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

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
import static org.junit.jupiter.api.Assertions.assertEquals;
2424
import static org.junit.jupiter.api.Assertions.assertNotNull;
2525
import static org.junit.jupiter.api.Assertions.assertThrows;
26+
import static org.junit.jupiter.api.Assertions.assertTrue;
2627
import static org.schabi.newpipe.extractor.ServiceList.YouTube;
2728

2829
import org.junit.jupiter.api.BeforeAll;
@@ -42,6 +43,7 @@
4243
import org.schabi.newpipe.extractor.services.DefaultStreamExtractorTest;
4344
import org.schabi.newpipe.extractor.services.youtube.YoutubeTestsUtils;
4445
import org.schabi.newpipe.extractor.services.youtube.extractors.YoutubeStreamExtractor;
46+
import org.schabi.newpipe.extractor.stream.AudioStream;
4547
import org.schabi.newpipe.extractor.stream.Description;
4648
import org.schabi.newpipe.extractor.stream.StreamExtractor;
4749
import org.schabi.newpipe.extractor.stream.StreamSegment;
@@ -464,4 +466,35 @@ void testGetLicence() throws ParsingException {
464466
assertEquals("Creative Commons Attribution licence (reuse allowed)", extractor.getLicence());
465467
}
466468
}
469+
470+
public static class AudioTrackLanguage {
471+
472+
private static final String ID = "kX3nB4PpJko";
473+
private static final String URL = BASE_URL + ID;
474+
private static StreamExtractor extractor;
475+
476+
@BeforeAll
477+
public static void setUp() throws Exception {
478+
YoutubeTestsUtils.ensureStateless();
479+
NewPipe.init(DownloaderFactory.getDownloader(RESOURCE_PATH + "audioTrack"));
480+
extractor = YouTube.getStreamExtractor(URL);
481+
extractor.fetchPage();
482+
}
483+
484+
@Test
485+
void testCheckAudioStreams() throws Exception {
486+
assertTrue(extractor.getAudioStreams().size() > 0);
487+
488+
for (final AudioStream audioStream : extractor.getAudioStreams()) {
489+
assertNotNull(audioStream.getAudioTrackName());
490+
}
491+
492+
assertTrue(
493+
extractor.getAudioStreams()
494+
.stream()
495+
.anyMatch(audioStream -> audioStream.getAudioTrackName().equals("English"))
496+
);
497+
}
498+
499+
}
467500
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
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,h3-Q050\u003d\":443\"; ma\u003d2592000,h3-Q046\u003d\":443\"; ma\u003d2592000,h3-Q043\u003d\":443\"; ma\u003d2592000,quic\u003d\":443\"; ma\u003d2592000; v\u003d\"46,43\""
21+
],
22+
"cache-control": [
23+
"private, max-age\u003d0"
24+
],
25+
"content-type": [
26+
"text/javascript; charset\u003dutf-8"
27+
],
28+
"cross-origin-opener-policy-report-only": [
29+
"same-origin; report-to\u003d\"youtube_main\""
30+
],
31+
"cross-origin-resource-policy": [
32+
"cross-origin"
33+
],
34+
"date": [
35+
"Sun, 13 Nov 2022 23:10:02 GMT"
36+
],
37+
"expires": [
38+
"Sun, 13 Nov 2022 23:10:02 GMT"
39+
],
40+
"p3p": [
41+
"CP\u003d\"This is not a P3P policy! See http://support.google.com/accounts/answer/151657?hl\u003den-GB for more info.\""
42+
],
43+
"permissions-policy": [
44+
"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*"
45+
],
46+
"report-to": [
47+
"{\"group\":\"youtube_main\",\"max_age\":2592000,\"endpoints\":[{\"url\":\"https://csp.withgoogle.com/csp/report-to/youtube_main\"}]}"
48+
],
49+
"server": [
50+
"ESF"
51+
],
52+
"set-cookie": [
53+
"YSC\u003dvUst81-3DYY; Domain\u003d.youtube.com; Path\u003d/; Secure; HttpOnly; SameSite\u003dnone",
54+
"VISITOR_INFO1_LIVE\u003dvcz7Oi5zbD4; Domain\u003d.youtube.com; Expires\u003dFri, 12-May-2023 23:10:02 GMT; Path\u003d/; Secure; HttpOnly; SameSite\u003dnone"
55+
],
56+
"strict-transport-security": [
57+
"max-age\u003d31536000"
58+
],
59+
"x-content-type-options": [
60+
"nosniff"
61+
],
62+
"x-frame-options": [
63+
"SAMEORIGIN"
64+
],
65+
"x-xss-protection": [
66+
"0"
67+
]
68+
},
69+
"responseBody": "var scriptUrl \u003d \u0027https:\\/\\/www.youtube.com\\/s\\/player\\/c4225c42\\/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",
70+
"latestUrl": "https://www.youtube.com/iframe_api"
71+
}
72+
}

extractor/src/test/resources/org/schabi/newpipe/extractor/services/youtube/extractor/stream/audioTrack/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,81 @@
1+
{
2+
"request": {
3+
"httpMethod": "GET",
4+
"url": "https://www.youtube.com/sw.js",
5+
"headers": {
6+
"Origin": [
7+
"https://www.youtube.com"
8+
],
9+
"Referer": [
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,h3-Q050\u003d\":443\"; ma\u003d2592000,h3-Q046\u003d\":443\"; ma\u003d2592000,h3-Q043\u003d\":443\"; ma\u003d2592000,quic\u003d\":443\"; ma\u003d2592000; v\u003d\"46,43\""
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+
"Sun, 13 Nov 2022 23:10:02 GMT"
45+
],
46+
"expires": [
47+
"Sun, 13 Nov 2022 23:10:02 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\u003d8QJHmiDUsVQ; Domain\u003d.youtube.com; Path\u003d/; Secure; HttpOnly; SameSite\u003dnone",
63+
"VISITOR_INFO1_LIVE\u003dLgXpj5tjdyE; Domain\u003d.youtube.com; Expires\u003dFri, 12-May-2023 23:10:02 GMT; Path\u003d/; Secure; HttpOnly; SameSite\u003dnone"
64+
],
65+
"strict-transport-security": [
66+
"max-age\u003d31536000"
67+
],
68+
"x-content-type-options": [
69+
"nosniff"
70+
],
71+
"x-frame-options": [
72+
"SAMEORIGIN"
73+
],
74+
"x-xss-protection": [
75+
"0"
76+
]
77+
},
78+
"responseBody": "/** 1356105402039626639 */self.document \u003d self; self.window \u003d self;var ytcfg\u003d{d:function(){return window.yt\u0026\u0026yt.config_||ytcfg.data_||(ytcfg.data_\u003d{})},get:function(k,o){return k in ytcfg.d()?ytcfg.d()[k]:o},set:function(){var a\u003darguments;if(a.length\u003e1)ytcfg.d()[a[0]]\u003da[1];else for(var k in a[0])ytcfg.d()[k]\u003da[0][k]}};\nytcfg.set({\"EXPERIMENT_FLAGS\":{\"allow_music_base_url\":true,\"allow_skip_networkless\":true,\"background_thread_flush_logs_due_to_batch_limit\":true,\"botguard_periodic_refresh\":true,\"change_ad_badge_to_stark\":true,\"clear_user_partitioned_ls\":true,\"deprecate_csi_has_info\":true,\"deprecate_two_way_binding_child\":true,\"deprecate_two_way_binding_parent\":true,\"desktop_image_cta_no_background\":true,\"desktop_log_img_click_location\":true,\"disable_child_node_auto_formatted_strings\":true,\"disable_pacf_logging_for_memory_limited_tv\":true,\"disable_simple_mixed_direction_formatted_strings\":true,\"disable_thumbnail_preloading\":true,\"embeds_web_disable_ads_for_pfl\":true,\"enable_client_sli_logging\":true,\"enable_gel_log_commands\":true,\"enable_handles_account_menu_switcher\":true,\"enable_mixed_direction_formatted_strings\":true,\"enable_pacf_through_ybfe_web_logging_for_page_top\":true,\"enable_server_stitched_dai\":true,\"enable_skip_ad_guidance_prompt\":true,\"enable_skippable_ads_for_unplugged_ad_pod\":true,\"enable_sli_flush\":true,\"enable_tectonic_ad_ux_for_halftime\":true,\"enable_topsoil_wta_for_halftime_live_infra\":true,\"export_networkless_options\":true,\"forward_domain_admin_state_on_embeds\":true,\"gcf_config_store_enabled\":true,\"gpa_sparkles_ten_percent_layer\":true,\"h5_companion_enable_adcpn_macro_substitution_for_click_pings\":true,\"h5_inplayer_enable_adcpn_macro_substitution_for_click_pings\":true,\"h5_set_masthead_ads_asynchronously\":true,\"hide_endpoint_overflow_on_ytd_display_ad_renderer\":true,\"html5_control_flow_include_trigger_logging_in_tmp_logs\":true,\"html5_enable_ads_client_monitoring_log_tv\":true,\"html5_enable_single_video_vod_ivar_on_pacf\":true,\"html5_enable_video_overlay_on_inplayer_slot_for_tv\":true,\"html5_log_trigger_events_with_debug_data\":true,\"html5_pacf_enable_dai\":true,\"html5_recognize_predict_start_cue_point\":true,\"html5_server_stitched_dai_group\":true,\"html5_web_enable_halftime_preroll\":true,\"il_use_view_model_logging_context\":true,\"json_condensed_response\":true,\"kevlar_dropdown_fix\":true,\"kevlar_gel_error_routing\":true,\"kevlar_vimio_use_shared_monitor\":true,\"log_errors_through_nwl_on_retry\":true,\"log_heartbeat_with_lifecycles\":true,\"log_web_endpoint_to_layer\":true,\"migrate_events_to_ts\":true,\"networkless_gel\":true,\"networkless_logging\":true,\"nwl_send_fast_on_unload\":true,\"offline_error_handling\":true,\"pageid_as_header_web\":true,\"parse_query_data_from_url\":true,\"polymer_bad_build_labels\":true,\"polymer_verifiy_app_state\":true,\"qoe_send_and_write\":true,\"record_app_crashed_web\":true,\"render_unicode_emojis_as_images\":true,\"render_unicode_emojis_as_small_images\":true,\"scheduler_use_raf_by_default\":true,\"skip_invalid_ytcsi_ticks\":true,\"skip_ls_gel_retry\":true,\"sponsorships_emojis_in_picker_loading_lazy\":true,\"sponsorships_global_emojis_in_comments_web\":true,\"sponsorships_upsell_in_picker\":true,\"sponsorships_use_png_for_emoji_rendering\":true,\"start_client_gcf\":true,\"suppress_error_204_logging\":true,\"sw_nav_request_network_first\":true,\"unicode_emojis_in_picker_in_comments\":true,\"use_new_nwl_initialization\":true,\"use_new_nwl_saw\":true,\"use_new_nwl_stw\":true,\"use_new_nwl_wts\":true,\"use_player_abuse_bg_library\":true,\"use_request_time_ms_header\":true,\"use_session_based_sampling\":true,\"use_shared_nsm\":true,\"use_shared_nsm_and_keep_yt_online_updated\":true,\"verify_ads_itag_early\":true,\"vss_final_ping_send_and_write\":true,\"vss_playback_use_send_and_write\":true,\"web_api_url\":true,\"web_click_command_fallback\":true,\"web_dedupe_ve_grafting\":true,\"web_deprecate_service_ajax_map_dependency\":true,\"web_enable_voz_audio_feedback\":true,\"web_forward_command_on_pbj\":true,\"web_inject_fetch_manager\":true,\"web_log_memory_total_kbytes\":true,\"web_log_push_impressions_after_show\":true,\"web_one_platform_error_handling\":true,\"web_ordered_response_processors\":true,\"web_prefetch_preload_video\":true,\"web_use_global_sw_error_handler\":true,\"web_use_url_api_to_add_params\":true,\"web_yt_config_context\":true,\"ytidb_fetch_datasync_ids_for_data_cleanup\":true,\"H5_async_logging_delay_ms\":1000.0,\"addto_ajax_log_warning_fraction\":0.1,\"log_window_onerror_fraction\":0.1,\"tv_pacf_logging_sample_rate\":0.01,\"ytidb_transaction_ended_event_rate_limit\":0.02,\"ytidb_transaction_ended_event_rate_limit_session\":0.2,\"ytidb_transaction_ended_event_rate_limit_transaction\":0.1,\"botguard_async_snapshot_timeout_ms\":3000,\"check_navigator_accuracy_timeout_ms\":0,\"initial_gel_batch_timeout\":2000,\"max_prefetch_window_sec_for_livestream_optimization\":0,\"min_prefetch_offset_sec_for_livestream_optimization\":10,\"network_polling_interval\":30000,\"polymer_log_prop_change_observer_percent\":0,\"web_foreground_heartbeat_interval_ms\":28000,\"web_logging_max_batch\":150,\"ytidb_remake_db_retries\":1,\"ytidb_reopen_db_retries\":0,\"web_client_version_override\":\"\",\"kevlar_command_handler_command_banlist\":[],\"web_op_continuation_type_banlist\":[],\"web_op_endpoint_banlist\":[],\"web_op_signal_type_banlist\":[]},\"INNERTUBE_API_KEY\":\"AIzaSyAO_FJ2SlqU8Q4STEHLGCilw_Y9_11qcW8\",\"INNERTUBE_API_VERSION\":\"v1\",\"INNERTUBE_CLIENT_NAME\":\"WEB\",\"INNERTUBE_CLIENT_VERSION\":\"2.20221110.08.00\",\"INNERTUBE_CONTEXT\":{\"client\":{\"clientName\":\"WEB\",\"clientVersion\":\"2.20221110.08.00\"}},\"INNERTUBE_CONTEXT_CLIENT_NAME\":1,\"INNERTUBE_CONTEXT_CLIENT_VERSION\":\"2.20221110.08.00\",\"LATEST_ECATCHER_SERVICE_TRACKING_PARAMS\":{\"client.name\":\"WEB\"}});window.ytcfg.obfuscatedData_ \u003d [];if (self.trustedTypes \u0026\u0026 self.trustedTypes.createPolicy) {const swPolicy \u003d trustedTypes.createPolicy(\u0027youtubeServiceWorkerPolicy\u0027, {createScriptURL: function(ignored) { return \u0027https:\\/\\/www.youtube.com\\/s\\/desktop\\/271dfaff\\/jsbin\\/serviceworker-notifications.vflset\\/serviceworker-notifications.js\u0027; }}); importScripts(swPolicy.createScriptURL(\u0027\u0027));} else {importScripts(\u0027https:\\/\\/www.youtube.com\\/s\\/desktop\\/271dfaff\\/jsbin\\/serviceworker-notifications.vflset\\/serviceworker-notifications.js\u0027);}",
79+
"latestUrl": "https://www.youtube.com/sw.js"
80+
}
81+
}

0 commit comments

Comments
 (0)