// ==UserScript==
// @name (9anime) AniWave Bingewatcher+
// @namespace https://greasyfork.org/en/users/10118-drhouse
// @version 6.3
// @description Auto-fullscreen, skip intros, jump to next episode, 9anime on Vidstream and MyCloud videos (Auto-1080p in configuration panel)
// @match https://aniwave.to/*
// @include https://www*.9anime.*/*
// @include https://netmovies.to/*
// @include https://guccihide.com/*
// @include https://rabbitstream.net/*
// @include https://sbface.com/*
// @include https://filemoon.sx/*
// @include https://9anime.*/*
// @include https://*.9anime.*/*
// @include https://9anime.id/*
// @include https://vidstream.pro/*
// @include https://vidstreamz.online/*
// @include https://vizcloud.online/*
// @include https://vizcloud2.online/*
// @include https://vizcloud.*/*
// @include https://vizcloud.store/*
// @include https://blob:vizcloud.store/*
// @include https://mcloud.to/*
// @include https://mcloud2.to/*
// @include https://storage.googleapis.com/*
// @include https://movies7.to/*
// @include https://*.mp4upload.com:*/*
// @include https://*.mp4upload.com*/*
// @require http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js
// @require https://greasyfork.org/scripts/439099-monkeyconfig-modern-reloaded/code/MonkeyConfig%20Modern%20Reloaded.js?version=1012538
// @require https://cdnjs.cloudflare.com/ajax/libs/babel-standalone/6.18.2/babel.js
// @require https://cdnjs.cloudflare.com/ajax/libs/babel-polyfill/6.16.0/polyfill.js
// @require https://greasyfork.org/scripts/451088-utils-library/code/Utils%20-%20Library.js?version=1097324
// @grant GM_getValue
// @grant GM_setValue
// @grant GM_deleteValue
// @grant GM_addStyle
// @grant GM_registerMenuCommand
// @grant GM_notification
// @grant window.onurlchange
// @author drhouse
// @license CC-BY-NC-SA-4.0
// @icon https://www.google.com/s2/favicons?domain=9anime.to
// ==/UserScript==
/* global jQuery, $ */
this.$ = this.jQuery = jQuery.noConflict(true);
$(window).on('load', function() {
var vPoint_launch = setTimeout(function(){
var vPoint_work = window.location.href;
if ( vPoint_work.indexOf('9anime') > -1 && cfg.get('Automatic Crowdsource Skip Opt-in'))
{
GM_setValue('toplocation', vPoint_work)
vPoint_check()
clearInterval(vPoint_launch)
}
}, 1000);
var cfg = new MonkeyConfig({
title: 'Configure',
menuCommand: true,
params: {
'Automatic Highest Quality': {
type: 'checkbox',
default: true
},
Skip_Anime_Intro_Key: {
type: 'text',
default: 'v'
},
'Skip Anime Intro Time': {
type: 'number',
default: '89'
},
Next_Episode_Key: {
type: 'text',
default: 'n'
},
Skip_Company_ID_Key: {
type: 'text',
default: 'q'
},
'Skip Company ID Time': {
type: 'number',
default: '10'
},
'Automatic Skip Company ID': {
type: 'checkbox',
default: false
},
'Automatic Crowdsource Skip Opt-in': {
type: 'checkbox',
default: true
},
},
// onSave: setOptions
})
function myTimer2() {
var video = $("#player").get(0);
const player = $('#player')[0];
$('body').click()
player.requestFullscreen();
$(player).focus();
if (document.fullscreen === true)
clearInterval(myInterval2);
}
if (cfg.get('Automatic Highest Quality') && !window.location.href.includes("movies7")) {
try {
var myInterval2 = setInterval(myTimer2, 1000);
} catch (error) {
if (error instanceof TypeError) {
// Do nothing
} else {
throw error;
}
}
}
function openFullscreen(elem) {
if (elem.requestFullscreen) {
elem.requestFullscreen();
} else if (elem.mozRequestFullScreen) { /* Firefox */
elem.mozRequestFullScreen();
} else if (elem.webkitRequestFullscreen) { /* Chrome, Safari and Opera */
elem.webkitRequestFullscreen();
} else if (elem.msRequestFullscreen) { /* IE / Edge */
elem.msRequestFullscreen();
}
}
function vPoint_check(){
$.get("https://unity.alwaysdata.net/vpoint.php?toplocation=" + GM_getValue('toplocation'), function(data){
if(data !== 'nada'){
GM_setValue('vPoint_exists', Number(data));
}
else {
GM_setValue('vPoint_exists', 'nada');
}
});
}
function checkURLchange(){
if(window.location.href != oldURL){
GM_setValue('title', document.title)
GM_setValue('toplocation', window.location.href)
oldURL = window.location.href;
}
}
var oldURL = window.location.href;
if (cfg.get('Automatic Crowdsource Skip Opt-in'))
setInterval(checkURLchange, 1000);
var canOnlyFireOnce2 = once(function(current) {
central(current)
});
function central(current){
var episode = window.location.href
var vPoint = current
var title = GM_getValue('title')
var toplocation = GM_getValue('toplocation')
const xhttp = new XMLHttpRequest();
xhttp.open("GET", "https://unity.alwaysdata.net/central.php?vPoint=" + vPoint + "&toplocation=" + toplocation);
xhttp.send();
}
function once(fn, context) {
var result;
return function() {
if(fn) {
result = fn.apply(context || this, arguments);
fn = null;
}
return result;
};
}
var canOnlyFireOnce = once(function(player, current) {
player.currentTime = Number(cfg.get('Skip Company ID Time'))
});
function waitForElementToDisplay(selector, time) {
if($(selector)!=null) {
setTimeout(function(){
var video = $("#player").get(0);
// var rfs = video.requestFullscreen || video.webkitRequestFullScreen || video.mozRequestFullScreen || video.msRequestFullscreen;
// rfs.call(video);
const player = $('#player')[0];
// var video = $("#player").get(0);
// If the player element exists and supports fullscreen mode
if (player && player.requestFullscreen && !window.location.href.includes("movies7")) {
// Activate fullscreen mode on page load
// $('body').click()
player.requestFullscreen();
$(player).focus();
// player = $("#vidcloud-player > div.jw-wrapper.jw-reset > div.jw-media.jw-reset > video").get(0)
player.requestFullscreen();
$(player).focus();
}
}, 1000);
var newYearCountdown = setInterval(function(){
var player = $('video').get(0);
var duration = player.duration;
var current = player.currentTime;
if(cfg.get('Automatic Skip Company ID')){
if(player.currentTime < 1){
canOnlyFireOnce(player, current);
}
}
if (GM_getValue('vPoint_exists') !== 'nada' && cfg.get('Automatic Crowdsource Skip Opt-in')){
if (Math.round(player.currentTime) === GM_getValue('vPoint_exists')){
player.currentTime = GM_getValue('vPoint_exists') + Number(cfg.get('Skip Anime Intro Time'))
GM_setValue('vPoint_exists','nada')
}
}
$('body').keypress(function(event){
var key = (event.keyCode ? event.keyCode : event.which);
var x = String.fromCharCode(key)
// player = $("#vidcloud-player > div.jw-wrapper.jw-reset > div.jw-media.jw-reset > video").get(0)
if (x == cfg.get('Skip_Company_ID_Key')) { // Q key skip 10s
player.currentTime = current + Number(cfg.get('Skip Company ID Time'));
}
if (x == cfg.get('Skip_Anime_Intro_Key')) { // V key skip 89s
if ('Automatic Crowdsource Skip Opt-in')
canOnlyFireOnce2(player.currentTime);
player.currentTime = current + Number(cfg.get('Skip Anime Intro Time'));
}
if (x == cfg.get('Next_Episode_Key')) { // N key skip end
player.currentTime = player.duration;
}
})
}, 1000);
}
else {
setTimeout(function() {
waitForElementToDisplay(selector, time);
}, time);
}
}
waitForElementToDisplay('#player', 1000);
const runOnURLChange = () => {
window.addEventListener('urlchange', (info) => {
utils.waitForElement('#player').then(function() {
if (cfg.get('Automatic Highest Quality')) {
const myInterval = setInterval(myTimer, 1000);
function myTimer() {
var $highest_check = $('#jw-player-settings-menu > div:nth-child(3) > div > button:nth-child(2)').attr('aria-checked')
var $auto_check = $('#jw-player-settings-menu > div:nth-child(3) > div > button:nth-child(1)').text()
//$('div.jw-icon:nth-child(14)')[0].click()
if ($auto_check === 'Auto'){
if ($highest_check === "true"){
// $('div.jw-icon:nth-child(14)')[0].click()
clearInterval(myInterval);
} else {
$("div[aria-label='Settings']")[0].click()
$('#jw-player-settings-menu > div:nth-child(3) > div > button:nth-child(2)')[0].click()
}
} else {
//$('div.jw-icon:nth-child(14)')[0].click()
clearInterval(myInterval);
}
}
}
setTimeout(function(){
var video = $("#player").get(0);
const player = $('#player')[0];
$('body').click()
if (player && player.requestFullscreen && !window.location.href.includes("movies7")) {
player.requestFullscreen();
$(player).focus();
}
}, 1000);
})
})
}
})