fix(player): oswoj strone vikingfile, zeby nie wygladala na pusta
Zgloszenie 21d6f5af: galaxyporn laduje sie, a potem pusta strona, bez bledu. Kierowanie bylo juz poprawne, problem byl wizualny. Vikingfile to STRONA PLIKU, nie goly odtwarzacz: naglowek serwisu, nazwa pliku, rozmiar, przyciski pobierania, progres i stopka, a wlasciwy widget Cloudflare siedzi w #captcha, czesto pod zgieciem. W malym oknie odtwarzacza user widzial wiec pustke i nie mial pojecia, ze ma gdzies kliknac. Wstrzykujemy teraz dla tego jednego hosta krotki blok, ktory chowa cala oprawe strony, wysrodkowuje #captcha-download na pelnym ekranie i dokłada jedna linijke podpowiedzi. Gdy strona zdejmie z <video> klase hidden, chowamy widget i oddajemy obraz na caly ekran. Dalej dziala zwykly scrape <source>, wiec gdy tylko pojawi sie adres pliku, i tak przeskakujemy na natywny odtwarzacz. Blok zwalidowany jako realny JavaScript (new Function na wyciagnietym fragmencie po zamianie podwojnych backslashy na pojedyncze, tak jak robi to szablon). Opublikowane OTA na 1.2 i 1.1. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
parent
a62d438500
commit
1154834170
2 changed files with 51 additions and 0 deletions
|
|
@ -16,6 +16,13 @@ export type ChangelogEntry = {
|
||||||
};
|
};
|
||||||
|
|
||||||
export const CHANGELOG: ChangelogEntry[] = [
|
export const CHANGELOG: ChangelogEntry[] = [
|
||||||
|
{
|
||||||
|
id: '2026-08-22b',
|
||||||
|
date: 'August 2026',
|
||||||
|
items: [
|
||||||
|
'Older galaxyporn scenes no longer open a blank page. They now live on a file host whose page is mostly site furniture, so the app strips it down to just the confirm-you-are-human box and the video, with a line telling you what to tap. Once the video appears it takes over the screen.',
|
||||||
|
],
|
||||||
|
},
|
||||||
{
|
{
|
||||||
id: '2026-08-22',
|
id: '2026-08-22',
|
||||||
date: 'August 2026',
|
date: 'August 2026',
|
||||||
|
|
|
||||||
|
|
@ -1156,6 +1156,50 @@ const INJECTED_JS = `
|
||||||
if (window.__goonPatched) return;
|
if (window.__goonPatched) return;
|
||||||
window.__goonPatched = true;
|
window.__goonPatched = true;
|
||||||
|
|
||||||
|
// -- 0. vikingfile: to STRONA PLIKU, nie goly odtwarzacz. Galaxyporn przeniosl tam
|
||||||
|
// swoj katalog, a my podajemy ja do WebView, bo wideo odslania sie dopiero po
|
||||||
|
// recznym przejsciu zabezpieczenia Cloudflare. Bez tego bloku user widzi
|
||||||
|
// naglowek serwisu, nazwe pliku i stopke, a wlasciwy widget bywa pod zgieciem,
|
||||||
|
// wiec zglaszal to jako "loading, a potem pusta strona" (zgloszenie 21d6f5af).
|
||||||
|
// Zostawiamy wiec na ekranie WYLACZNIE widget i odtwarzacz, reszte chowamy.
|
||||||
|
// Gdy strona zdejmie z <video> klase hidden, chowamy tez widget i oddajemy
|
||||||
|
// obraz w calosci; dalej dziala zwykly scrape <source>, wiec i tak przeskoczymy
|
||||||
|
// na natywny odtwarzacz, gdy tylko pojawi sie adres pliku.
|
||||||
|
try {
|
||||||
|
if (/(^|\\.)vikingfile\\.com$/i.test(location.hostname)) {
|
||||||
|
var vkCss = document.createElement('style');
|
||||||
|
vkCss.textContent = [
|
||||||
|
'html,body{background:#000!important;margin:0!important;padding:0!important}',
|
||||||
|
'#logo,#toggle-theme,footer,#file-information,#progress-current,#archive,',
|
||||||
|
'#embed-code,#download-parallel,#download-parallel-progress{display:none!important}',
|
||||||
|
'.page-container,.content-wrap{max-width:100%!important;margin:0!important;padding:0!important}',
|
||||||
|
'#captcha-download{display:flex!important;flex-direction:column!important;',
|
||||||
|
'align-items:center!important;justify-content:center!important;',
|
||||||
|
'min-height:100vh!important;gap:14px!important}',
|
||||||
|
'#goon-vk-hint{color:#fff;font:600 15px system-ui,sans-serif;text-align:center;padding:0 24px}',
|
||||||
|
'video{width:100vw!important;max-height:100vh!important;background:#000!important}',
|
||||||
|
].join('');
|
||||||
|
(document.head || document.documentElement).appendChild(vkCss);
|
||||||
|
var vkReady = function() {
|
||||||
|
var box = document.getElementById('captcha-download');
|
||||||
|
if (box && !document.getElementById('goon-vk-hint')) {
|
||||||
|
var hint = document.createElement('div');
|
||||||
|
hint.id = 'goon-vk-hint';
|
||||||
|
hint.textContent = 'Tap the checkbox to start the video';
|
||||||
|
box.insertBefore(hint, box.firstChild);
|
||||||
|
}
|
||||||
|
var v = document.querySelector('video');
|
||||||
|
if (v && v.className.indexOf('hidden') === -1) {
|
||||||
|
if (box) box.style.display = 'none';
|
||||||
|
var vc = document.getElementById('video-container');
|
||||||
|
if (vc) vc.style.cssText = 'position:fixed;inset:0;z-index:99999;background:#000';
|
||||||
|
}
|
||||||
|
};
|
||||||
|
document.addEventListener('DOMContentLoaded', vkReady);
|
||||||
|
setInterval(vkReady, 600);
|
||||||
|
}
|
||||||
|
} catch (e) {}
|
||||||
|
|
||||||
// -- 0a. Mute autoplay until the FIRST user gesture (kills the unmuted-audio flash
|
// -- 0a. Mute autoplay until the FIRST user gesture (kills the unmuted-audio flash
|
||||||
// gdy WebView otwiera stronę żeby przechwycić stream, report dccc05e4).
|
// gdy WebView otwiera stronę żeby przechwycić stream, report dccc05e4).
|
||||||
// Sam override play() nie wystarczał: player hostera po starcie ustawiał
|
// Sam override play() nie wystarczał: player hostera po starcie ustawiał
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue