Skip to content

Commit 5198f86

Browse files
authored
Bump 1.2.1
1 parent ad1018c commit 5198f86

File tree

13 files changed

+229
-101
lines changed

13 files changed

+229
-101
lines changed

Crunchyroll_Premium/content.js

Lines changed: 31 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ function importPlayer() {
7272

7373
//renderiza player na versão beta
7474
function importBetaPlayer(ready = false) {
75-
var videoPlayer = query('.video-player');
75+
var videoPlayer = query('.video-player') || query('#frame');
7676
if (!ready) {
7777
setTimeout(() => importBetaPlayer(!!videoPlayer), 100);
7878
return;
@@ -92,7 +92,7 @@ function importBetaPlayer(ready = false) {
9292
var series_slug = ep.episode_metadata.series_slug_title
9393
var external_id = ep.external_id.substr(4)
9494
var old_url = `https://www.crunchyroll.com/${external_lang}/${series_slug}/episode-${external_id}`
95-
var up_next = document.querySelector('a.up-next-title')
95+
var up_next = document.querySelector('[data-t="next-episode"] > a')
9696
var playback = ep.playback
9797

9898
var message = {
@@ -121,12 +121,13 @@ function addPlayer(element, playerInfo, beta = false) {
121121

122122
element.appendChild(ifrm)
123123

124-
chrome.storage.sync.get(['forcemp4', 'aseguir', 'cooldown'], function (items) {
124+
chrome.storage.sync.get(['forcemp4', 'aseguir', 'cooldown', 'webvideocaster'], function (items) {
125125
ifrm.onload = function () {
126+
playerInfo['webvideocaster'] = items.webvideocaster === undefined ? false : items.webvideocaster;
126127
playerInfo['up_next_cooldown'] = items.cooldown === undefined ? 5 : items.cooldown;
127128
playerInfo['up_next_enable'] = items.aseguir === undefined ? true : items.aseguir;
128129
playerInfo['force_mp4'] = items.forcemp4 === undefined ? false : items.forcemp4;
129-
playerInfo['version'] = '1.2.0';
130+
playerInfo['version'] = '1.2.1';
130131
playerInfo['noproxy'] = true;
131132
playerInfo['beta'] = beta;
132133
ifrm.contentWindow.postMessage(playerInfo, "*");
@@ -148,28 +149,31 @@ function onloadfunction() {
148149
}
149150

150151
// function pra atualizar pagina quando mudar de episodio pela UI beta
151-
var isLoaded = false
152+
var currentURL = window.location.href;
152153

153154
function registerChangeEpisode() {
154-
const epChanged = setInterval(() => {
155-
const videosWrapper = query('.videos-wrapper')
156-
if (isLoaded && !videosWrapper) {
157-
window.location.reload();
158-
clearInterval(epChanged);
155+
setInterval(async () => {
156+
if (currentURL !== window.location.href) {
157+
currentURL = window.location.href
158+
if (currentURL.includes("/watch/")) {
159+
const HTML = await fetch(currentURL)
160+
console.log("[CR Beta] Searching for new INITIAL_STATE")
161+
preservedState = JSON.parse(pegaString(HTML, "__INITIAL_STATE__ = ", ";"))
162+
importBetaPlayer(false)
163+
}
159164
}
160-
isLoaded = !!videosWrapper
161165
}, 50)
162166
}
163167

164168
document.addEventListener("DOMContentLoaded", onloadfunction, false);
165169
document.onreadystatechange = function () {
166170
if (document.readyState === "interactive") {
167171
console.log("[CR Beta] Searching for INITIAL_STATE")
168-
var HTML = document.documentElement.innerHTML
172+
const HTML = document.documentElement.innerHTML
169173
preservedState = JSON.parse(pegaString(HTML, "__INITIAL_STATE__ = ", ";"))
170174
}
171175

172-
var crBetaStyle = document.createElement('style');
176+
const crBetaStyle = document.createElement('style');
173177
crBetaStyle.innerHTML = `.video-player-wrapper {
174178
margin-top: 2rem;
175179
margin-bottom: calc(-3vh - 7vw);
@@ -178,3 +182,17 @@ document.onreadystatechange = function () {
178182
}`;
179183
document.head.appendChild(crBetaStyle);
180184
}
185+
186+
function fetch(url) {
187+
return new Promise(async (resolve, reject) => {
188+
var xhr = new XMLHttpRequest();
189+
xhr.open('GET', url, true);
190+
xhr.withCredentials = true;
191+
xhr.onreadystatechange = () => {
192+
if (xhr.readyState == 4)
193+
if (xhr.status == 200) resolve(xhr.responseText)
194+
else reject(xhr.statusText)
195+
}
196+
xhr.send();
197+
})
198+
}

Crunchyroll_Premium/manifest.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "Crunchyroll iFrame Player",
3-
"version": "1.2.0",
3+
"version": "1.2.1",
44
"description": "Permite ver todos os vídeos do crunchyroll gratuitamente.",
55
"author": "itallolegal",
66
"icons": {

Crunchyroll_Premium/popup.html

Lines changed: 37 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -15,15 +15,36 @@
1515
</div>
1616
<h2>Crunchyroll<br><span>iFrame Player</span></h2>
1717
<p>Projeto open-source, sinta-se livre para consultar o código fonte.</p>
18-
<input type="checkbox" id="forcemp4" name="forcemp4">
19-
<label for="forcemp4"><strong>Forçar MP4</strong> (chromecast) </label>
18+
<div class="settings">
19+
<input type="checkbox" id="forcemp4" name="forcemp4">
20+
<label for="forcemp4"><strong>Forçar MP4</strong> (chromecast) </label>
21+
<br />
22+
<input type="checkbox" id="webvideocaster" name="webvideocaster" checked>
23+
<label for="webvideocaster"><strong>Exibir botão de casting</strong> (WebVideoCaster) </label>
24+
<br />
25+
<input type="checkbox" id="aseguir" name="aseguir" checked>
26+
<label for="aseguir"><strong>A seguir</strong> automático </label>
27+
</div>
2028
<br />
21-
<input type="checkbox" id="aseguir" name="aseguir" checked>
22-
<label for="aseguir"><strong>A seguir</strong> automático </label>
23-
<br /><br />
2429
Exibir faltando <input type="number" id="cooldown" style="width: 50px;" min="0" value="5"> segundos.
25-
<h3><a href="https://github.com/itallolegal" target="_blank">Itallolegal</a><br><span>Criador</span></h3>
26-
<h3><a href="https://github.com/Hyper1025" target="_blank">Hyper1025</a><br><span>Contribuidor</span></h3>
30+
<br /><br />
31+
Baixe o WebVideoCaster <a href="https://www.webvideocaster.com/home" target="_blank">aqui</a>.
32+
<table style="width: 100%">
33+
<tr>
34+
<td>
35+
<h3><abbr title="(desativado)"><a href="https://github.com/itallolegal"
36+
target="_blank">Itallolegal</a></abbr>
37+
<br><span>Criador</span>
38+
</h3>
39+
</td>
40+
<td>
41+
<h3><a href="https://github.com/Hyper-Tx" target="_blank">Hyper-Tx</a><br><span>Contribuidor</span></h3>
42+
</td>
43+
<td>
44+
<h3><a href="https://github.com/Mateus7G" target="_blank">Mateus7G</a><br><span>Mantedor</span></h3>
45+
</td>
46+
</tr>
47+
</table>
2748
<span>
2849
<ul>
2950
<li><a href="https://github.com/mateus7g/crp-iframe-player" target="_blank"><i class="fa fa-github"
@@ -81,6 +102,10 @@ <h3><a href="https://github.com/Hyper1025" target="_blank">Hyper1025</a><br><spa
81102
width: 100%;
82103
}
83104

105+
.card .box .settings {
106+
text-align: left;
107+
}
108+
84109
.card .box .img {
85110
width: 100px;
86111
height: 100px;
@@ -101,10 +126,14 @@ <h3><a href="https://github.com/Hyper1025" target="_blank">Hyper1025</a><br><spa
101126
}
102127

103128
.card .box a {
129+
color: #f47521;
130+
}
131+
132+
.card .box table a {
104133
font-size: 14px;
105-
color: #262626;
106134
margin: 20px auto;
107135
text-decoration: none;
136+
color: #262626;
108137
}
109138

110139
.card .box h3 span {

Crunchyroll_Premium/popup.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
const globalDefault = { 'cooldown': false, 'aseguir': true, 'forcemp4': 5 }
1+
const globalDefault = { 'webvideocaster': false, 'cooldown': false, 'aseguir': true, 'forcemp4': 5 }
22
const globalVariables = Object.keys(globalDefault)
33

44
chrome.storage.sync.get(globalVariables, function (items) {

Crunchyroll_Premium_Kiwi-Browser/content.js

Lines changed: 32 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -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
154133
function 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

251231
function 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

262245
document.addEventListener("DOMContentLoaded", onloadfunction, false);
263246
document.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+
}

Crunchyroll_Premium_Kiwi-Browser/manifest.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "Crunchyroll iFrame Player",
3-
"version": "1.2.0",
3+
"version": "1.2.1",
44
"description": "Permite ver todos os vídeos do crunchyroll gratuitamente.",
55
"author": "itallolegal",
66
"icons": {

Crunchyroll_Premium_Kiwi-Browser/popup.html

Lines changed: 37 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -15,15 +15,36 @@
1515
</div>
1616
<h2>Crunchyroll<br><span>iFrame Player</span></h2>
1717
<p>Projeto open-source, sinta-se livre para consultar o código fonte.</p>
18-
<input type="checkbox" id="forcemp4" name="forcemp4">
19-
<label for="forcemp4"><strong>Forçar MP4</strong> (chromecast) </label>
18+
<div class="settings">
19+
<input type="checkbox" id="forcemp4" name="forcemp4">
20+
<label for="forcemp4"><strong>Forçar MP4</strong> (chromecast) </label>
21+
<br />
22+
<input type="checkbox" id="webvideocaster" name="webvideocaster" checked>
23+
<label for="webvideocaster"><strong>Exibir botão de casting</strong> (WebVideoCaster) </label>
24+
<br />
25+
<input type="checkbox" id="aseguir" name="aseguir" checked>
26+
<label for="aseguir"><strong>A seguir</strong> automático </label>
27+
</div>
2028
<br />
21-
<input type="checkbox" id="aseguir" name="aseguir" checked>
22-
<label for="aseguir"><strong>A seguir</strong> automático </label>
23-
<br /><br />
2429
Exibir faltando <input type="number" id="cooldown" style="width: 50px;" min="0" value="5"> segundos.
25-
<h3><a href="https://github.com/itallolegal" target="_blank">Itallolegal</a><br><span>Criador</span></h3>
26-
<h3><a href="https://github.com/Hyper1025" target="_blank">Hyper1025</a><br><span>Contribuidor</span></h3>
30+
<br /><br />
31+
Baixe o WebVideoCaster <a href="https://www.webvideocaster.com/home" target="_blank">aqui</a>.
32+
<table style="width: 100%">
33+
<tr>
34+
<td>
35+
<h3><abbr title="(desativado)"><a href="https://github.com/itallolegal"
36+
target="_blank">Itallolegal</a></abbr>
37+
<br><span>Criador</span>
38+
</h3>
39+
</td>
40+
<td>
41+
<h3><a href="https://github.com/Hyper-Tx" target="_blank">Hyper-Tx</a><br><span>Contribuidor</span></h3>
42+
</td>
43+
<td>
44+
<h3><a href="https://github.com/Mateus7G" target="_blank">Mateus7G</a><br><span>Mantedor</span></h3>
45+
</td>
46+
</tr>
47+
</table>
2748
<span>
2849
<ul>
2950
<li><a href="https://github.com/mateus7g/crp-iframe-player" target="_blank"><i class="fa fa-github"
@@ -81,6 +102,10 @@ <h3><a href="https://github.com/Hyper1025" target="_blank">Hyper1025</a><br><spa
81102
width: 100%;
82103
}
83104

105+
.card .box .settings {
106+
text-align: left;
107+
}
108+
84109
.card .box .img {
85110
width: 100px;
86111
height: 100px;
@@ -101,10 +126,14 @@ <h3><a href="https://github.com/Hyper1025" target="_blank">Hyper1025</a><br><spa
101126
}
102127

103128
.card .box a {
129+
color: #f47521;
130+
}
131+
132+
.card .box table a {
104133
font-size: 14px;
105-
color: #262626;
106134
margin: 20px auto;
107135
text-decoration: none;
136+
color: #262626;
108137
}
109138

110139
.card .box h3 span {

Crunchyroll_Premium_Kiwi-Browser/popup.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
const globalDefault = { 'cooldown': false, 'aseguir': true, 'forcemp4': 5 }
1+
const globalDefault = { 'webvideocaster': false, 'cooldown': false, 'aseguir': true, 'forcemp4': 5 }
22
const globalVariables = Object.keys(globalDefault)
33

44
chrome.storage.sync.get(globalVariables, function (items) {

0 commit comments

Comments
 (0)