Skip to content

Commit 8b2cd7c

Browse files
committed
test: fixes + generate mock files
1 parent 867695e commit 8b2cd7c

21 files changed

Lines changed: 5202 additions & 624 deletions

File tree

extractor/src/test/java/org/schabi/newpipe/extractor/services/youtube/YoutubeChannelExtractorTest.java

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -117,10 +117,10 @@ void accountTerminatedCopyrightFetch() throws Exception {
117117

118118
}
119119

120-
static class SystemTopic implements InitYoutubeTest {
120+
static class News implements InitYoutubeTest {
121121
@Test
122122
void noSupportedTab() throws Exception {
123-
final ChannelExtractor extractor = YouTube.getChannelExtractor("https://invidio.us/channel/UC-9-kyTW8ZkZNDHQJ6FgpwQ");
123+
final ChannelExtractor extractor = YouTube.getChannelExtractor("https://invidio.us/channel/UCYfdidRxbB8Qhf0Nx7ioOYw");
124124

125125
extractor.fetchPage();
126126
assertTrue(extractor.getTabs().isEmpty());
@@ -214,7 +214,7 @@ public void testVerified() throws Exception {
214214
@Test
215215
@Override
216216
public void testTabs() throws Exception {
217-
assertTabsContain(extractor().getTabs(), ChannelTabs.VIDEOS, ChannelTabs.PLAYLISTS);
217+
assertTabsContain(extractor().getTabs(), ChannelTabs.VIDEOS, ChannelTabs.PLAYLISTS, ChannelTabs.FEATURED);
218218
assertTrue(extractor().getTabs().stream()
219219
.filter(it -> ChannelTabs.VIDEOS.equals(it.getContentFilters().get(0)))
220220
.allMatch(ReadyChannelTabListLinkHandler.class::isInstance));
@@ -304,7 +304,7 @@ public void testVerified() throws Exception {
304304
@Override
305305
public void testTabs() throws Exception {
306306
assertTabsContain(extractor().getTabs(), ChannelTabs.VIDEOS, ChannelTabs.LIVESTREAMS,
307-
ChannelTabs.SHORTS, ChannelTabs.PLAYLISTS);
307+
ChannelTabs.SHORTS, ChannelTabs.PLAYLISTS, ChannelTabs.FEATURED);
308308
assertTrue(extractor().getTabs().stream()
309309
.filter(it -> ChannelTabs.VIDEOS.equals(it.getContentFilters().get(0)))
310310
.allMatch(ReadyChannelTabListLinkHandler.class::isInstance));
@@ -396,7 +396,7 @@ public void testVerified() throws Exception {
396396
@Test
397397
@Override
398398
public void testTabs() throws Exception {
399-
assertTabsContain(extractor().getTabs(), ChannelTabs.VIDEOS, ChannelTabs.SHORTS,
399+
assertTabsContain(extractor().getTabs(), ChannelTabs.FEATURED, ChannelTabs.VIDEOS, ChannelTabs.SHORTS,
400400
ChannelTabs.PLAYLISTS);
401401
assertTrue(extractor().getTabs().stream()
402402
.filter(it -> ChannelTabs.VIDEOS.equals(it.getContentFilters().get(0)))
@@ -521,7 +521,7 @@ public void testVerified() throws Exception {
521521
@Override
522522
public void testTabs() throws Exception {
523523
assertTabsContain(extractor().getTabs(),
524-
ChannelTabs.VIDEOS, ChannelTabs.PLAYLISTS, ChannelTabs.SHORTS);
524+
ChannelTabs.FEATURED, ChannelTabs.VIDEOS, ChannelTabs.PLAYLISTS, ChannelTabs.SHORTS);
525525
assertTrue(extractor().getTabs().stream()
526526
.filter(it -> ChannelTabs.VIDEOS.equals(it.getContentFilters().get(0)))
527527
.allMatch(ReadyChannelTabListLinkHandler.class::isInstance));
@@ -1001,7 +1001,7 @@ public void testVerified() throws Exception {
10011001
@Test
10021002
public void testTabs() throws Exception {
10031003
assertTabsContain(extractor().getTabs(),
1004-
ChannelTabs.VIDEOS, ChannelTabs.LIVESTREAMS, ChannelTabs.PLAYLISTS, ChannelTabs.SHORTS);
1004+
ChannelTabs.FEATURED, ChannelTabs.VIDEOS, ChannelTabs.LIVESTREAMS, ChannelTabs.PLAYLISTS, ChannelTabs.SHORTS);
10051005
assertTrue(extractor().getTabs().stream()
10061006
.filter(it -> ChannelTabs.VIDEOS.equals(it.getContentFilters().get(0)))
10071007
.allMatch(ReadyChannelTabListLinkHandler.class::isInstance));

extractor/src/test/java/org/schabi/newpipe/extractor/services/youtube/YoutubeFeaturedChannelListExtractorTest.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
import static org.junit.jupiter.api.Assertions.assertFalse;
55
import static org.junit.jupiter.api.Assertions.assertThrows;
66
import static org.junit.jupiter.api.Assertions.assertTrue;
7-
import static org.schabi.newpipe.extractor.ExtractorAsserts.assertContains;
87
import static org.schabi.newpipe.extractor.ServiceList.YouTube;
98
import static org.schabi.newpipe.extractor.services.DefaultTests.defaultTestMoreItems;
109
import static org.schabi.newpipe.extractor.services.DefaultTests.defaultTestRelatedItems;
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,106 @@
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+
"accept-ch": [
26+
"Sec-CH-Viewport-Width, Sec-CH-DPR, Device-Memory"
27+
],
28+
"access-control-allow-credentials": [
29+
"true"
30+
],
31+
"access-control-allow-origin": [
32+
"https://www.youtube.com"
33+
],
34+
"alt-svc": [
35+
"h3\u003d\":443\"; ma\u003d2592000,h3-29\u003d\":443\"; ma\u003d2592000"
36+
],
37+
"cache-control": [
38+
"private, max-age\u003d0"
39+
],
40+
"content-security-policy": [
41+
"script-src \u0027unsafe-eval\u0027 \u0027self\u0027 \u0027unsafe-inline\u0027 https://www.google.com https://apis.google.com https://ssl.gstatic.com https://www.gstatic.com https://www.googletagmanager.com https://www.google-analytics.com https://*.youtube.com https://*.google.com https://*.gstatic.com https://youtube.com https://www.youtube.com https://google.com https://*.doubleclick.net https://*.googleapis.com https://www.googleadservices.com https://tpc.googlesyndication.com https://www.youtubekids.com https://www.youtube-nocookie.com https://www.youtubeeducation.com https://www-onepick-opensocial.googleusercontent.com;report-uri https://csp.withgoogle.com/csp/youtube_main/allowlist",
42+
"base-uri \u0027self\u0027;object-src \u0027none\u0027;script-src \u0027nonce-8qe8UDpvdNoPbicjIGkeNw\u0027 \u0027unsafe-inline\u0027 \u0027strict-dynamic\u0027 https: http: \u0027unsafe-eval\u0027;report-uri https://csp.withgoogle.com/csp/youtube_main/strict",
43+
"require-trusted-types-for \u0027script\u0027"
44+
],
45+
"content-type": [
46+
"text/javascript; charset\u003dutf-8"
47+
],
48+
"cross-origin-opener-policy": [
49+
"same-origin; report-to\u003d\"youtube_main\""
50+
],
51+
"date": [
52+
"Wed, 18 Mar 2026 21:29:14 GMT"
53+
],
54+
"document-policy": [
55+
"include-js-call-stacks-in-crash-reports"
56+
],
57+
"expires": [
58+
"Wed, 18 Mar 2026 21:29:14 GMT"
59+
],
60+
"origin-trial": [
61+
"AmhMBR6zCLzDDxpW+HfpP67BqwIknWnyMOXOQGfzYswFmJe+fgaI6XZgAzcxOrzNtP7hEDsOo1jdjFnVr2IdxQ4AAAB4eyJvcmlnaW4iOiJodHRwczovL3lvdXR1YmUuY29tOjQ0MyIsImZlYXR1cmUiOiJXZWJWaWV3WFJlcXVlc3RlZFdpdGhEZXByZWNhdGlvbiIsImV4cGlyeSI6MTc1ODA2NzE5OSwiaXNTdWJkb21haW4iOnRydWV9",
62+
"AiDEBptUfVeO93q48VdVMe/ubupazdAl8AaHP+NBzdnW8quUcHdzJUyGSfrmtpKJu7EOvwRp9ug2rEo3XU+WMAMAAAB2eyJvcmlnaW4iOiJodHRwczovL3lvdXR1YmUuY29tOjQ0MyIsImZlYXR1cmUiOiJEZXZpY2VCb3VuZFNlc3Npb25DcmVkZW50aWFsczIiLCJleHBpcnkiOjE3NzQzMTA0MDAsImlzU3ViZG9tYWluIjp0cnVlfQ\u003d\u003d"
63+
],
64+
"p3p": [
65+
"CP\u003d\"This is not a P3P policy! See http://support.google.com/accounts/answer/151657?hl\u003den-GB for more info.\""
66+
],
67+
"permissions-policy": [
68+
"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-form-factors\u003d*, ch-ua-platform\u003d*, ch-ua-platform-version\u003d*"
69+
],
70+
"report-to": [
71+
"{\"group\":\"youtube_main\",\"max_age\":2592000,\"endpoints\":[{\"url\":\"https://csp.withgoogle.com/csp/report-to/youtube_main\"}]}"
72+
],
73+
"reporting-endpoints": [
74+
"default\u003d\"/web-reports?context\u003deJwVyn9IlHccwPEe36zcXXr3PN_n82nMxcJii-TitNWCIZRrrgLNiEnLwOVls7C70rtLmbQR2tbvDCP63WCUS5NlFIm4EYOk5Y_SbTTXD9YmFYljLUq2Ynv64_XPm7fvm5emLYxaG30xa-WbVdZ7_dXWzvy49eRk3DrTGbcKf0pYI1OSVklm0qq8U2MdCy5PqXl1eUrnCh81f_ooyfIzuNjPSKGfC6f8dLb7uXXPz1uJiTwoSqPrYBqr7qbR3JFOUXc6jZ7R5-nMyQ2QLA_gTwY4tC1A9oEAk34I0DUtSOpHQQYOB4mdCXLzaZDds22OfGBzq9Sm4GObujqbek_ebpvvTttktNmYH21ee2Bzd8xmKN_hv8UOBSUO92IOuX0O8_od3hlweHmCoSDD0PK6wWQaQrMNY0sMvpihocow_Jlh_ueGD_cbaDV0nTNELhouXTXk3zA0PTI8-9dQNMkl7W2X1PddyuIuxQddNnu-9bSdcLn2lcugp7bVJfK9y-VulxFPtMel45rLw-suzTdc1g-5NP3lfWMuR8cJC1SY-orQnyE0TBWq3xByZgjdWUJPSPgyLOQtE56sE5rXC11R4eutQvt2IbJTyN8jWPuFRUeFthZh-JwwelkYf0Xo7RWeXxeuDAobfxE6XhgSKm4LjaPC2b-FbU-F-n8EGafMCyqPHeULUVZnKMWTlflTlB1Zyv1sJbVQ-W2psjeiZFYoMzzrPCc9PZVKzQalwXMpoXxSq2ytUyo_VU5tUXLrlXe3K3mNygpPdZPXjyu72pR955VknzLrZ2XoVyV8W-n7XZn-h1IxrDgTU0-3j_SOD54YaO1IyQzVxhLxRFn5zE3lZaE1VbFoPFQeXR2KVK2Nr42sqizNCefMCc_Kzp4Znlu6Ifw_UM3cww\""
75+
],
76+
"server": [
77+
"ESF"
78+
],
79+
"set-cookie": [
80+
"__Secure-YNID\u003d16.YT\u003dcT7xALLVJa5Kjos7tdtHbFJ0XjJNuPvZGitTHzR4PHeT6p4p5FfhPlfrkY1k3vonbu7CRGUKBYfSPDYI44HTEAvbsfGCKWVHGpHr4HjkBbvRUw44rCMot-jyn05S4-CK7A3vNWBb8tM0vONOljbqjIrQUN5i_RfLPpo5cMq1sIz69_YslU7sLERMruwVmMVz0ss7TFNLyBSKsynLrkMa09EnJa2dgri-7rYEFIxgRGyYwZKEgBblIV6PJpG-CXp0IdO57wPoT2wiaJYvXX6guqvbMft2zw-_yOAR8UExigJprQAlVXpcoseNfJSVgSJ1Ru3C-nQO64kI9qyGTP0TKg; expires\u003dMon, 14-Sep-2026 21:29:14 GMT; path\u003d/; domain\u003d.youtube.com; Secure; HttpOnly; SameSite\u003dnone",
81+
"YSC\u003dBl6GJmldg2Q; Domain\u003d.youtube.com; Path\u003d/; Secure; HttpOnly; SameSite\u003dnone",
82+
"__Secure-YEC\u003d; Domain\u003d.youtube.com; Expires\u003dThu, 22-Jun-2023 21:29:14 GMT; Path\u003d/; Secure; HttpOnly; SameSite\u003dlax",
83+
"VISITOR_INFO1_LIVE\u003d28EmVe_NHQE; Domain\u003d.youtube.com; Expires\u003dMon, 14-Sep-2026 21:29:14 GMT; Path\u003d/; Secure; HttpOnly; SameSite\u003dnone",
84+
"VISITOR_PRIVACY_METADATA\u003dCgJVUxIEGgAgQg%3D%3D; Domain\u003d.youtube.com; Expires\u003dMon, 14-Sep-2026 21:29:14 GMT; Path\u003d/; Secure; HttpOnly; SameSite\u003dnone",
85+
"__Secure-ROLLOUT_TOKEN\u003dCIqkp5aL6rLpSBDt2YumsqqTAxjt2YumsqqTAw%3D%3D; Domain\u003dyoutube.com; Expires\u003dMon, 14-Sep-2026 21:29:14 GMT; Path\u003d/; Secure; HttpOnly; SameSite\u003dnone; Partitioned"
86+
],
87+
"strict-transport-security": [
88+
"max-age\u003d31536000"
89+
],
90+
"vary": [
91+
"Sec-CH-Viewport-Width, Sec-CH-DPR, Device-Memory"
92+
],
93+
"x-content-type-options": [
94+
"nosniff"
95+
],
96+
"x-frame-options": [
97+
"SAMEORIGIN"
98+
],
99+
"x-xss-protection": [
100+
"0"
101+
]
102+
},
103+
"responseBody": "/** 5417633786350917261 */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{var k;for(k in a[0])ytcfg.d()[k]\u003da[0][k]}}};\nytcfg.set({\"EXPERIMENT_FLAGS\":{\"ab_det_apm\":true,\"ab_det_el_h\":true,\"action_companion_center_align_description\":true,\"allow_skip_networkless\":true,\"att_web_record_metrics\":true,\"attmusi\":true,\"bg_st_hr\":true,\"compress_gel\":true,\"cow_optimize_idom_compat\":true,\"disable_child_node_auto_formatted_strings\":true,\"disable_log_to_visitor_layer\":true,\"disable_pacf_logging_for_memory_limited_tv\":true,\"embeds_desktop_enable_volume_slider\":true,\"enable_a11y_focus_fix_for_mac_panel_on_desktop\":true,\"enable_access_code_service_rpc\":true,\"enable_active_view_display_ad_renderer_web_home\":true,\"enable_client_sli_logging\":true,\"enable_client_ve_spec\":true,\"enable_dai_sdf_h5_preroll\":true,\"enable_datasync_id_header_in_web_vss_pings\":true,\"enable_default_mono_cta_migration_web_client\":true,\"enable_entity_store_from_dependency_injection\":true,\"enable_gel_log_commands\":true,\"enable_handles_account_menu_switcher\":true,\"enable_inline_muted_playback_on_web_search\":true,\"enable_inline_muted_playback_on_web_search_for_vdc\":true,\"enable_inline_muted_playback_on_web_search_for_vdcb\":true,\"enable_ltc_param_fetch_from_innertube\":true,\"enable_mixed_direction_formatted_strings\":true,\"enable_mweb_keyboard_shortcuts\":true,\"enable_open_in_new_tab_icon_for_short_dr_for_desktop_search\":true,\"enable_pause_ads_on_ytv_html5\":true,\"enable_pv_screen_modern_text\":true,\"enable_redirect_linking_for_desktop_web_client\":true,\"enable_sdf_companion_h5\":true,\"enable_sdf_dai_h5_midroll\":true,\"enable_sdf_h5_endemic_mid_post_roll\":true,\"enable_sdf_on_h5_unplugged_vod_midroll\":true,\"enable_sdf_shorts_player_bytes_h5\":true,\"enable_server_stitched_dai\":true,\"enable_skip_ad_guidance_prompt\":true,\"enable_skippable_ads_for_unplugged_ad_pod\":true,\"enable_smearing_expansion_dai\":true,\"enable_tectonic_ad_ux_for_halftime\":true,\"enable_topsoil_wta_for_halftime_live_infra\":true,\"enable_video_display_compact_button_group_for_desktop_search\":true,\"enable_web_delhi_icons\":true,\"enable_web_home_top_landscape_image_layout_level_click\":true,\"enable_web_tiered_gel\":true,\"enable_wiz_queue_effect_and_on_init_initial_runs\":true,\"enable_yt_ata_iframe_authuser\":true,\"export_networkless_options\":true,\"export_player_version_to_ytconfig\":true,\"fill_single_video_with_notify_to_lasr\":true,\"h5_companion_enable_adcpn_macro_substitution_for_click_pings\":true,\"h5_inplayer_enable_adcpn_macro_substitution_for_click_pings\":true,\"h5_reset_cache_and_filter_before_update_masthead\":true,\"high_ccv_client_side_caching_h5\":true,\"html5_log_trigger_events_with_debug_data\":true,\"html5_recognize_predict_start_cue_point\":true,\"html5_server_stitched_dai_group\":true,\"html5_ssdai_enable_media_end_cue_range\":true,\"idb_immediate_commit\":true,\"il_attach_cache_limit\":true,\"il_use_view_model_logging_context\":true,\"json_condensed_response\":true,\"kevlar_gel_error_routing\":true,\"kevlar_sw_app_wide_fallback\":true,\"kevlar_use_wil_icons\":true,\"kevlar_vimio_use_shared_monitor\":true,\"limit_ytcsi_debug_array_size\":true,\"live_chat_enable_controller_extraction\":true,\"live_chat_enable_rta_manager\":true,\"log_click_with_layer_from_element_in_command_handler\":true,\"log_gel_compression_latency\":true,\"log_heartbeat_with_lifecycles\":true,\"migrate_remaining_web_ad_badges_to_innertube\":true,\"mweb_account_linking_noapp\":true,\"mweb_enable_fine_scrubbing_for_recs\":true,\"mweb_enable_more_chunks\":true,\"mweb_player_control_on_hover\":true,\"mweb_progress_bar_seek_on_mouse_click\":true,\"mweb_shorts_comments_panel_id_change\":true,\"networkless_logging\":true,\"offline_error_handling\":true,\"pageid_as_header_web\":true,\"par_at_ep\":true,\"player_controls_volume_controls_use_player_props\":true,\"polymer_bad_build_labels\":true,\"polymer_verifiy_app_state\":true,\"qoe_send_and_write\":true,\"record_app_crashed_web\":true,\"remove_chevron_from_ad_disclosure_banner_h5\":true,\"remove_masthead_channel_banner_on_refresh\":true,\"remove_slot_id_exited_trigger_for_dai_in_player_slot_expire\":true,\"service_worker_static_routing_exclude_embed\":true,\"service_worker_static_routing_registration\":true,\"shell_load_gcf\":true,\"skip_ls_gel_retry\":true,\"smarter_ve_dedupping\":true,\"start_client_gcf\":true,\"stop_handling_click_for_non_rendering_overlay_layout\":true,\"suppress_error_204_logging\":true,\"sw_nav_request_network_first\":true,\"transport_use_scheduler\":true,\"use_event_time_ms_header\":true,\"use_fifo_for_networkless\":true,\"use_request_time_ms_header\":true,\"use_session_based_sampling\":true,\"use_thumbnail_overlay_time_status_renderer_for_live_badge\":true,\"vss_final_ping_send_and_write\":true,\"vss_playback_use_send_and_write\":true,\"web_api_url\":true,\"web_button_view_model_non_nullish_data\":true,\"web_button_vm_refactor_disabled\":true,\"web_csi_action_sampling_enabled\":true,\"web_csi_debug_sample_enabled\":true,\"web_dedupe_ve_grafting\":true,\"web_enable_ab_rsp_cl\":true,\"web_enable_course_icon_update\":true,\"web_enable_error_204\":true,\"web_forward_command_on_pbj\":true,\"web_gcf_hashes_innertube\":true,\"web_log_memory_total_kbytes\":true,\"web_prefetch_preload_video\":true,\"web_progress_bar_draggable\":true,\"webpo_exit_on_net_err\":true,\"wil_icon_render_when_idle\":true,\"wiz_diff_overwritable\":true,\"wiz_wrapper_callback_props_fix\":true,\"wug_networking_gzip_request\":true,\"H5_async_logging_delay_ms\":30000.0,\"app_shell_asset_log_fraction\":0.01,\"attention_logging_scroll_throttle\":500.0,\"log_window_onerror_fraction\":0.1,\"web_attention_logging_scroll_throttle\":500.0,\"web_load_prediction_threshold\":0.3,\"web_navigation_prediction_threshold\":0.1,\"ytidb_transaction_ended_event_rate_limit\":0.02,\"botguard_async_snapshot_timeout_ms\":3000,\"check_navigator_accuracy_timeout_ms\":0,\"compression_disable_point\":10,\"custom_active_view_tos_timeout_ms\":3600000,\"gel_min_batch_size\":3,\"gel_queue_timeout_max_ms\":300000,\"initial_gel_batch_timeout\":2000,\"max_body_size_to_compress\":500000,\"max_prefetch_window_sec_for_livestream_optimization\":10,\"min_prefetch_offset_sec_for_livestream_optimization\":20,\"network_polling_interval\":30000,\"send_config_hash_timer\":0,\"slow_compressions_before_abandon_count\":4,\"web_foreground_heartbeat_interval_ms\":28000,\"web_logging_max_batch\":150,\"web_max_tracing_events\":50,\"web_session_replay_send_after_timeout\":0,\"web_tracing_session_replay\":0,\"wil_icon_max_concurrent_fetches\":9999,\"ytcsi_debug_max_size\":100,\"ytidb_remake_db_retries\":1,\"ytidb_reopen_db_retries\":0,\"il_payload_scraping\":\"\",\"web_client_version_override\":\"\",\"kevlar_command_handler_command_banlist\":[],\"web_op_signal_type_banlist\":[],\"web_tracing_enabled_spans\":[\"event\",\"command\"]},\"INNERTUBE_API_KEY\":\"AIzaSyAO_FJ2SlqU8Q4STEHLGCilw_Y9_11qcW8\",\"INNERTUBE_API_VERSION\":\"v1\",\"INNERTUBE_CLIENT_NAME\":\"WEB\",\"INNERTUBE_CLIENT_VERSION\":\"2.20260317.05.00\",\"INNERTUBE_CONTEXT\":{\"client\":{\"hl\":\"en-GB\",\"gl\":\"US\",\"clientName\":\"WEB\",\"clientVersion\":\"2.20260317.05.00\"}},\"INNERTUBE_CONTEXT_CLIENT_NAME\":1,\"INNERTUBE_CONTEXT_CLIENT_VERSION\":\"2.20260317.05.00\",\"LATEST_ECATCHER_SERVICE_TRACKING_PARAMS\":{\"client.name\":\"WEB\"}});window.ytcfg.obfuscatedData_ \u003d [];if (self.trustedTypes \u0026\u0026 self.trustedTypes.createPolicy) {var policy \u003d self.trustedTypes.createPolicy(\u0027youtubeServiceWorkerPolicy\u0027, {createScriptURL: function(unused) { return \u0027https:\\/\\/www.youtube.com\\/s\\/desktop\\/c376667c\\/jsbin\\/serviceworker-kevlar-appshell.vflset\\/serviceworker-kevlar-appshell.js\u0027; }}); importScripts(policy.createScriptURL(\u0027\u0027));} else {importScripts(\u0027https:\\/\\/www.youtube.com\\/s\\/desktop\\/c376667c\\/jsbin\\/serviceworker-kevlar-appshell.vflset\\/serviceworker-kevlar-appshell.js\u0027);}",
104+
"latestUrl": "https://www.youtube.com/sw.js"
105+
}
106+
}

0 commit comments

Comments
 (0)