@@ -41,7 +41,6 @@ function optimize_for_mobile() {
4141 width = document . body . offsetWidth ;
4242 var carousel_move_times = 0 ;
4343 var carousel_videos_count = 0 ;
44- var carousel_arrow_limit = 0 ;
4544
4645 carousel_move_times =
4746 ( width < 622 && width > 506 ) ? 4 :
@@ -63,19 +62,7 @@ function optimize_for_mobile() {
6362
6463 carousel_videos_count = getChildNodes ( document . body . querySelector ( 'div.collection-carousel-scrollable' ) ) ;
6564
66- //Pega o script (pq ele fica mudando ai tem q pegar dnv sempre)
67- var carousel_arrow_limit = Number ( pegaString (
68- document . body . querySelector ( 'div.white-wrapper.container-shadow.large-margin-bottom' ) . childNodes [ 3 ] . innerHTML
69- , "Math.min" , ","
70- ) . replace ( "(" , "" ) ) ;
71-
72- var carousel_script = document . body . querySelector ( 'div.white-wrapper.container-shadow.large-margin-bottom' ) . childNodes [ 3 ] . innerText
73- . replace ( ".data()['first_visible'] - 5" , ".data()['first_visible'] - " + carousel_move_times )
74- . replace ( ".data()['first_visible'] + 5" , ".data()['first_visible'] + " + carousel_move_times )
75- . replace ( "Math.min(" + carousel_arrow_limit + "," , "Math.min(" + ( carousel_videos_count . length - carousel_move_times ) + "," )
76- . replace ( ".data()['first_visible'] < " + carousel_arrow_limit , ".data()['first_visible'] < " + ( carousel_videos_count . length - carousel_move_times ) )
77- . replace ( ".data()['first_visible'] >= " + carousel_arrow_limit , ".data()['first_visible'] >= " + ( carousel_videos_count . length - carousel_move_times ) )
78- . replace ( ".data()['first_visible'] >= " + carousel_arrow_limit , ".data()['first_visible'] >= " + ( carousel_videos_count . length - carousel_move_times ) ) ;
65+ remove ( "#game-banner-wrapper" , "Game Banner Wrapper" )
7966
8067 var old_element = document . querySelector ( ".collection-carousel-leftarrow" ) ;
8168 var new_element = old_element . cloneNode ( true ) ;
@@ -84,14 +71,6 @@ function optimize_for_mobile() {
8471 var new_element = old_element . cloneNode ( true ) ;
8572 old_element . parentNode . replaceChild ( new_element , old_element ) ;
8673
87- var head = document . getElementsByTagName ( 'head' ) [ 0 ] ;
88- var script = document . createElement ( 'script' ) ;
89- script . type = 'text/javascript' ;
90- script . onload = function ( ) {
91- callFunctionFromScript ( ) ;
92- }
93- script . text = carousel_script ;
94- head . appendChild ( script ) ;
9574 //Deixa o video pequeno denovo no primeiro episodio.
9675 if ( document . getElementById ( 'showmedia_video_box_wide' ) != null ) {
9776 document . getElementById ( 'showmedia_video_box_wide' ) . id = 'showmedia_video_box' ;
@@ -152,7 +131,7 @@ function importPlayer() {
152131
153132//renderiza player na versão beta
154133function importBetaPlayer ( ready = false ) {
155- var videoPlayer = query ( '.video-player' ) ;
134+ var videoPlayer = query ( '.video-player' ) || query ( '#frame' ) ;
156135 if ( ! ready ) {
157136 setTimeout ( ( ) => importBetaPlayer ( ! ! videoPlayer ) , 100 ) ;
158137 return ;
@@ -172,7 +151,7 @@ function importBetaPlayer(ready = false) {
172151 var series_slug = ep . episode_metadata . series_slug_title
173152 var external_id = ep . external_id . substr ( 4 )
174153 var old_url = `https://www.crunchyroll.com/${ external_lang } /${ series_slug } /episode-${ external_id } `
175- var up_next = document . querySelector ( 'a.up- next-title ' )
154+ var up_next = document . querySelector ( '[data-t=" next-episode"] > a ' )
176155 var playback = ep . playback
177156
178157 var message = {
@@ -201,12 +180,13 @@ function addPlayer(element, playerInfo, beta = false) {
201180
202181 element . appendChild ( ifrm )
203182
204- chrome . storage . sync . get ( [ 'forcemp4' , 'aseguir' , 'cooldown' ] , function ( items ) {
183+ chrome . storage . sync . get ( [ 'forcemp4' , 'aseguir' , 'cooldown' , 'webvideocaster' ] , function ( items ) {
205184 ifrm . onload = function ( ) {
185+ playerInfo [ 'webvideocaster' ] = items . webvideocaster === undefined ? false : items . webvideocaster ;
206186 playerInfo [ 'up_next_cooldown' ] = items . cooldown === undefined ? 5 : items . cooldown ;
207187 playerInfo [ 'up_next_enable' ] = items . aseguir === undefined ? true : items . aseguir ;
208188 playerInfo [ 'force_mp4' ] = items . forcemp4 === undefined ? false : items . forcemp4 ;
209- playerInfo [ 'version' ] = '1.2.0 ' ;
189+ playerInfo [ 'version' ] = '1.2.1 ' ;
210190 playerInfo [ 'noproxy' ] = true ;
211191 playerInfo [ 'beta' ] = beta ;
212192 ifrm . contentWindow . postMessage ( playerInfo , "*" ) ;
@@ -246,28 +226,31 @@ function onloadfunction() {
246226}
247227
248228// function pra atualizar pagina quando mudar de episodio pela UI beta
249- var isLoaded = false
229+ var currentURL = window . location . href ;
250230
251231function registerChangeEpisode ( ) {
252- const epChanged = setInterval ( ( ) => {
253- const videosWrapper = query ( '.videos-wrapper' )
254- if ( isLoaded && ! videosWrapper ) {
255- window . location . reload ( ) ;
256- clearInterval ( epChanged ) ;
232+ setInterval ( async ( ) => {
233+ if ( currentURL !== window . location . href ) {
234+ currentURL = window . location . href
235+ if ( currentURL . includes ( "/watch/" ) ) {
236+ const HTML = await fetch ( currentURL )
237+ console . log ( "[CR Beta] Searching for new INITIAL_STATE" )
238+ preservedState = JSON . parse ( pegaString ( HTML , "__INITIAL_STATE__ = " , ";" ) )
239+ importBetaPlayer ( false )
240+ }
257241 }
258- isLoaded = ! ! videosWrapper
259242 } , 50 )
260243}
261244
262245document . addEventListener ( "DOMContentLoaded" , onloadfunction , false ) ;
263246document . onreadystatechange = function ( ) {
264247 if ( document . readyState === "interactive" ) {
265248 console . log ( "[CR Beta] Searching for INITIAL_STATE" )
266- var HTML = document . documentElement . innerHTML
249+ const HTML = document . documentElement . innerHTML
267250 preservedState = JSON . parse ( pegaString ( HTML , "__INITIAL_STATE__ = " , ";" ) )
268251 }
269252
270- var crBetaStyle = document . createElement ( 'style' ) ;
253+ const crBetaStyle = document . createElement ( 'style' ) ;
271254 crBetaStyle . innerHTML = `.video-player-wrapper {
272255 margin-top: 2rem;
273256 margin-bottom: calc(-3vh - 7vw);
@@ -276,3 +259,17 @@ document.onreadystatechange = function () {
276259 }` ;
277260 document . head . appendChild ( crBetaStyle ) ;
278261}
262+
263+ function fetch ( url ) {
264+ return new Promise ( async ( resolve , reject ) => {
265+ var xhr = new XMLHttpRequest ( ) ;
266+ xhr . open ( 'GET' , url , true ) ;
267+ xhr . withCredentials = true ;
268+ xhr . onreadystatechange = ( ) => {
269+ if ( xhr . readyState == 4 )
270+ if ( xhr . status == 200 ) resolve ( xhr . responseText )
271+ else reject ( xhr . statusText )
272+ }
273+ xhr . send ( ) ;
274+ } )
275+ }
0 commit comments