您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
All JDNaCore Script In One
// ==UserScript== // @name JDNaCore All In One // @namespace JDNaCore // @version 0.1.23 // @description All JDNaCore Script In One // @author ibratabian17 // @match https://justdancenow.com/ // @match https://new.justdancenow.com/ // @icon https://www.google.com/s2/favicons?domain=justdancenow.com // @grant none // ==/UserScript== //JDNaCore Begining console.log("JDNaCore - Created By Ibratabian17") console.log("Use JDNaCore.help() For Get Help") var JDNaCoreVersion = "0.1.23"; var JDNaCoreType = "Stable"; var JDNState = "jdnacore"; var DebuggingMode = false; var Script = this; var InjectCSS = ""; var jdnRegion = {}; //Songdbs { fetch('https://justdancenow.com/query') .then((response) => response.json()) .then((data) => { jdnRegion.jdns = data.jdns jdnRegion.api = data.jdns.replace('jdns', 'api') fetch(`${jdnRegion.api}v1/songs/published`) .then((response) => response.json()) .then((data) => { let cssString = ''; jdnRegion.songdb = data data.forEach(item => { const { id, bkg_image } = item; let cssClass = ` .song-mapbkg.${id}E { background-image: url("${bkg_image}"); }`; if (/^\d/.test(id)) { // If the id starts with a number, escape the number using \32 cssClass = `${cssClass.replace(id, `\\32 ${id}`)}`; } cssString += cssClass; }); var albumbkg = document.createElement("style") albumbkg.type = "text/css" albumbkg.innerText = cssString document.documentElement.appendChild(albumbkg); }) .catch((error) => { console.log(error) }); //EOL }) .catch((error) => { console.log(error) }); } //HideUI function HideUI() { document.querySelector('.js').classList.add("anucore-hui"); setInterval(function() { var checkTutorialClass = $(".js").hasClass("state-tutorial"); if (checkTutorialClass) { const el = document.querySelector('.hud'); if (el.classList.contains("beat")) { el.classList.remove("beat"); } } }, 500); //run this thang every .5 seconds InjectCSS = InjectCSS.concat(` .state-dance .hud #pictos{ border-bottom: solid 2px rgba(255, 255, 255, 0); box-shadow: 0px 4px 2px -2px rgba(0, 0, 0, 0); transition: .2s all !important; } .state-dance .hud.beat #pictos{ border-bottom: solid 2px rgba(255,255,255,0.35); box-shadow: 0px 4px 2px -2px rgba(0,0,0,0.25); transition: .2s all !important; } .state-dance .hud #racetrack, .state-dance .hud #players{ opacity: 0!important; transition: .2s opacity !important; } .state-dance .hud.beat #racetrack, .state-dance .hud.beat #players{ opacity: 1!important; transition: .2s opacity !important; } `) } //PictosColor function PictoBeatColor() { document.querySelector('.js').classList.add("anucore-pbc"); //PB Start setInterval(function() { var checkExistClass = $(".js").hasClass("state-dance"); if (checkExistClass) { var top_bar = $('.fill') var beat = $('#beat') var bg = top_bar.css('background-color') var bga = beat.css('background-color') var color = top_bar.css('color') if (typeof color !== 'undefined') { if (bga != color) { const root = document.querySelector(":root"); //grabbing the root element root.style.setProperty("--pictobeat-color", color); } } } }, 500); //run this thang every .5 seconds } //Racetrack+ { function TrashColor() { const hud = document.querySelector(arguments[0]); if (arguments[1] == 'blue') { hud.classList.remove("red", "green", "purple", "aqua", "pink"); } else if (arguments[1] == 'red') { hud.classList.remove("blue", "green", "purple", "aqua", "pink"); } else if (arguments[1] == 'green') { hud.classList.remove("blue", "red", "purple", "aqua", "pink"); } else if (arguments[1] == 'purple') { hud.classList.remove("blue", "red", "green", "aqua", "pink"); } else if (arguments[1] == 'aqua') { hud.classList.remove("blue", "red", "green", "purple", "pink"); } else if (arguments[1] == 'pink') { hud.classList.remove("blue", "red", "green", "purple", "aqua"); } } function PatchColor() { var rpc = document.querySelector(arguments[0]) var rcpc = document.querySelector(arguments[0]).style.backgroundColor; var zT = rpc.style.transform.match(/translate\((.*)px, (.*)%\)/); var translateY = zT[2].concat("%") rpc.style.setProperty("--ReducerPst", "".concat(translateY)); rpc.style.setProperty("--ReducedPst", "calc(".concat('100% - ', translateY, ')')); var rpcc = $(arguments[0]).attr('class').split(' ')[2]; //blue if (rcpc == "rgb(55, 132, 249)") { const hud = document.querySelector(arguments[0]); hud.classList.add("blue"); TrashColor(arguments[0], 'blue'); } //red if (rcpc == "rgb(236, 36, 67)") { const hud = document.querySelector(arguments[0]); hud.classList.add("red"); TrashColor(arguments[0], 'red'); } //green if (rcpc == "rgb(125, 228, 0)") { const hud = document.querySelector(arguments[0]); hud.classList.add("green"); TrashColor(arguments[0], 'green'); } //purple if (rcpc == "rgb(136, 2, 201)") { const hud = document.querySelector(arguments[0]); hud.classList.add("purple"); TrashColor(arguments[0], 'purple'); } //aqua if (rcpc == "rgb(3, 222, 214)") { const hud = document.querySelector(arguments[0]); hud.classList.add("aqua"); TrashColor(arguments[0], 'aqua'); } //pink if (rcpc == "rgb(216, 32, 201)") { const hud = document.querySelector(arguments[0]); hud.classList.add("pink"); TrashColor(arguments[0], 'pink'); } } function ApplyRTColor() { setInterval(function() { var IsDance = $(".js").hasClass("state-dance"); if (IsDance) { try { PatchColor('#racetrack-fill-p1') } catch (err) {} try { PatchColor('#racetrack-fill-p2') } catch (err) {} try { PatchColor('#racetrack-fill-p3') } catch (err) {} try { PatchColor('#racetrack-fill-p4') } catch (err) {} } }, 1); //run this thang every .001 seconds } } function RCTrackPlus() { document.querySelector('.js').classList.add("anucore-rcplus"); ApplyRTColor() } //Hud Costumizer function HudPlus() { document.querySelector('.js').classList.add("anucore-hudplus"); //PB Start var odon = false; var prefbeatdur; var beatdur; var oldpictoslength; var oldpictostexture; let oddiseven = 1; let beatisfour = 1; InjectCSS = InjectCSS.concat("", ` .picto .texture { display: block; width: 100%; height: 100%; position: relative } .picto:has(.texture) { background-image: none!important; } `) var observer = new MutationObserver(function(mutations) { mutations.forEach(function(mutationRecord) { var IsTutorial = $(".js").hasClass("state-tutorial"); if (IsTutorial) { odon = false; const hud = document.querySelector('.hud'); hud.classList.add("odd"); hud.classList.remove("even"); } var checkExistClass = $(".js").hasClass("state-dance"); if (checkExistClass) { //GetPictosState const pictos = document.querySelectorAll('#pictos .picto'); if (!pictos[0].children.length > 0) { setTimeout(CheckPictosState(), 2000); } //OddOrEven fixedbeat = $('#beat') const hud = document.querySelector('.hud'); const root = document.querySelector(":root"); //grabbing the root element if (odon) { odon = false; hud.classList.add("odd"); hud.classList.remove("even"); if (oddiseven == 2) beatisfour++; oddiseven++; } else { odon = true; hud.classList.add("even"); hud.classList.remove("odd"); //oddiseven++; } if (beatisfour == 3) beatisfour = 1 if (oddiseven == 3) oddiseven = 1; hud.setAttribute("oddiseven", oddiseven); hud.setAttribute("beatisfour", beatisfour); //LyricHider const line = document.getElementsByClassName('line'); if (!line.length > 0) { const lyrics = document.querySelector('#lyrics'); lyrics.style.opacity = '0'; } } }); }); //run this thang every animationDuration Change var PictosObserver = new MutationObserver(function(mutations) { mutations.forEach(function(mutationRecord) { if (mutationRecord.target.style.transition == "opacity 0.3s ease 0s, transform ease") { mutationRecord.target.classList.add("hiding") if (DebuggingMode == true) console.log('Assigning Pictos As Hiding') } else { mutationRecord.target.classList.remove("hiding") } //create texture inside pictos if (!mutationRecord.target.hasChildNodes()) { const texturetemp = document.createElement("div"); texturetemp.classList.add("texture"); mutationRecord.target.appendChild(texturetemp) } const texture = mutationRecord.target.querySelector(".texture"); texture.style.backgroundImage = mutationRecord.target.style.backgroundImage; texture.style.backgroundSize = mutationRecord.target.style.backgroundSize; texture.style.backgroundPosition = mutationRecord.target.style.backgroundPosition; }); }); //run this thang every animationDuration Change function HudPlusCheckBeat() { var target = document.getElementById('beat'); if (!target) { //The node we need does not exist yet. //Wait 500ms and try again window.setTimeout(HudPlusCheckBeat, 500); return; } try { observer.observe(target, { attributes: true, attributeFilter: ['style'] }); } catch (err) {} } function CheckPictosState() { var target = document.querySelectorAll('#pictos .picto'); if (!target) { //The node we need does not exist yet. //Wait 500ms and try again window.setTimeout(CheckPictosState, 500); return; } try { PictosObserver.observe(target[0], { attributes: true, attributeFilter: ['style'] }); PictosObserver.observe(target[1], { attributes: true, attributeFilter: ['style'] }); PictosObserver.observe(target[2], { attributes: true, attributeFilter: ['style'] }); PictosObserver.observe(target[3], { attributes: true, attributeFilter: ['style'] }); PictosObserver.observe(target[4], { attributes: true, attributeFilter: ['style'] }); PictosObserver.observe(target[5], { attributes: true, attributeFilter: ['style'] }); PictosObserver.observe(target[7], { attributes: true, attributeFilter: ['style'] }); PictosObserver.observe(target[8], { attributes: true, attributeFilter: ['style'] }); PictosObserver.observe(target[9], { attributes: true, attributeFilter: ['style'] }); PictosObserver.observe(target[10], { attributes: true, attributeFilter: ['style'] }); PictosObserver.observe(target[11], { attributes: true, attributeFilter: ['style'] }); PictosObserver.observe(target[12], { attributes: true, attributeFilter: ['style'] }); pictostate = true } catch (err) { if (DebuggingMode) console.log('PictosObserver: Ignoring '.concat(err)) } } HudPlusCheckBeat(); } //FeedbackPlus { function FeedbackPlus() { } } //PreviewPlus { function PreviewPlus() { var odon = false; var beatisfour = false const preview = document.querySelector('#preview'); const root = document.querySelector(":root"); var currentSong; var nextSong; //grabbing the root element InjectCSS = InjectCSS.concat("", ` .song-jdversion { font-size: 0.14em; } `) var PrevObserver = new MutationObserver(function(mutations) { mutations.forEach(function(mutationRecord) { //oddiseven const preview = document.querySelector('#preview') currentSong = preview.querySelector('.song-cover--hi-res').classList[2] if (currentSong != nextSong) { odon = false const selectedObject = jdnRegion.songdb.find(obj => obj.id === currentSong); preview.querySelector('.song-jdversion .version').innerText = `${selectedObject.jdversion}`; preview.querySelector('.song-mapbkg').classList.remove(`${nextSong}E`) preview.querySelector('.song-mapbkg').classList.add(`${currentSong}E`) preview.querySelector('.song-albumcoach').classList.remove(`${nextSong}AC`) preview.querySelector('.song-albumcoach').classList.add(`${currentSong}AC`) } if (preview.classList.contains('even')) { if (odon) { odon = false; preview.setAttribute("oddiseven", "false"); } else { odon = true; preview.setAttribute("oddiseven", "true"); //oddiseven++; if (beatisfour) { beatisfour = false preview.setAttribute("beatisfour", "false"); } else { beatisfour = true preview.setAttribute("beatisfour", "true"); } } } nextSong = currentSong; }); }); //run this thang every animationDuration Change function PatchPreview() { var target = document.getElementById('preview'); if (!target) { //The node we need does not exist yet. //Wait 500ms and try again window.setTimeout(PatchPreview, 500); return; } try { //Add Some Needed Element For JDN target.querySelector('.song-preview').insertAdjacentHTML('beforeend', ` <div class="song-mapbkg"></div> <div class="song-albumcoach"></div> <div class="song-jdversion"> <span class="just-dance">Just Dance </span> <span class="version">403</span> </div> `) PrevObserver.observe(target, { attributes: true, attributeFilter: ['class'] }); } catch (err) {} } PatchPreview() } } //StopMyPreview! function StopMyPreview() { setInterval(function() { if ($(".js").hasClass("state-tutorial") || $(".js").hasClass("state-dance") || $(".js").hasClass("state-afterdance")) { try { var myPlayer = document.querySelector(".video-preview__video"); myPlayer.pause(); } catch (err) {} } }, 500); } //JSInector function AllowToInjectJS() { /* These Things Only Work If You Not using it on greasemonkey*/ console.log("Be carefull! This gonna execute the code therefore be careful of where/how you got this string. Mind that anyone may try to insert malicious code inside your string.") try { var JDNaCore = document.querySelector("#JDNaCore") var JDNaCoreStyles = window.getComputedStyle(JDNaCore); if (JDNaCoreStyles.getPropertyValue("--JSInput")) { eval(JDNaCoreStyles.getPropertyValue("--JSInput")); } else { alert("To use it is required, you need a js script, if you are a style maker, please read our docs") } } catch (err) { console.log("Error: " + err) alert(JSInjector + ' Failed To Start! Check Console!') } } //Script Helper { var CheckJDNState = new MutationObserver(function(mutations) { mutations.forEach(function(mutationRecord) { if ($(mutationRecord.target).hasClass("state-tutorial")) JDNState = "tutorial" if ($(mutationRecord.target).hasClass("state-songselection")) JDNState = "songselection" if ($(mutationRecord.target).hasClass("state-coachselection")) JDNState = "coachselection" if ($(mutationRecord.target).hasClass("state-dance")) JDNState = "dance" if ($(mutationRecord.target).hasClass("state-afterdance")) JDNState = "afterdance" if (DebuggingMode) console.log("JDNaCore: Core: Set State To ".concat(JDNState)) }); }); //run this thang every animationDuration Change CheckJDNState.observe(document.querySelector("html"), { attributes: true, attributeFilter: ['class'] }); const JDNaCoreCliOptions = { getVariable(params) { var JDNaCoreVersion = Script.JDNaCoreVersion; var DebuggingMode = Script.DebuggingMode; var JDNState = Script.JDNState; var dev = Script; const JDNaCoreStringOptions = { isRunning: true, Version: JDNaCoreVersion, isDebugging: DebuggingMode, JDNState: JDNState, dev: dev } return JDNaCoreStringOptions; }, DebuggingMode(params) { DebuggingMode = params }, help(params) { console.log('Welcome to JDNaCore cli, All command list will appear when typing JDNaCore,\ To run the add \'()\' function at the end of the letter') }, stopModules(params) { console.log(Script) } } window.JDNaCore = JDNaCoreCliOptions; } //Run Patcher v2 { function StartPatcher(string, p) { if (DebuggingMode) console.log('Starting '.concat(string)) try { var JDNaCoreStyles = window.getComputedStyle(JDNaCore); if (JDNaCoreStyles.getPropertyValue(string).includes('true')) { p() } } catch (err) { console.log("Error: " + err) alert(string + ' Failed To Start! Check Console!') } } var JDNaCore = document.createElement("div"); JDNaCore.setAttribute('id', 'JDNaCore'); document.documentElement.appendChild(JDNaCore); var JDNaCoreString = document.createElement("style"); JDNaCoreString.type = "text/css"; JDNaCoreString.innerText = ` #JDNaCore { --HudPlus: true; --PictoBeatColor: true; --RacetrackPlus: true; --HideUi: true; --FeedbackPlus: true; --AllowToInjectJS: false; --StopMyPreview: true; --CheckerVersion: true; --PreviewPlus: true; --FixLyrics: true;} `; JDNaCore.appendChild(JDNaCoreString); setTimeout(function() { try { console.log(JDNaCoreVersion) StartPatcher('--HideUi', HideUI); StartPatcher('--HudPlus', HudPlus); StartPatcher('--PictoBeatColor', PictoBeatColor); StartPatcher('--RacetrackPlus', RCTrackPlus); StartPatcher('--StopMyPreview', StopMyPreview); StartPatcher('--AllowToInjectJS', AllowToInjectJS); StartPatcher('--PreviewPlus', PreviewPlus); console.log('Welcome to the JDNaCore era!') var nade = document.createElement("style") nade.type = "text/css" nade.innerText = InjectCSS document.documentElement.appendChild(nade); } catch (err) { console.log("Initial Error: " + err) alert('JDNaCore' + ' Failed To Start!') } }, 3500); }