NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript== // @name JVRealtime // @author ImThatGuy // @description Jeuxvideo.com en temps réél ! (plugin pour JVCpremium) // @include http://www.jeuxvideo.com/* // @require http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js // @require https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js // @grant GM_addStyle // @grant GM_setValue // @grant GM_getValue // @grant GM_xmlhttpRequest // @version 0.1 // @icon https://image.noelshack.com/fichiers/2017/05/1485900804-jvrealtime.png // @copyright 2017+, ImThatGuy // ==/UserScript== /* JVRealtime. 2017. Codé par ImThatGuy. 2017+, ImThatGuy. Plugin pour JVCpremium : https://openuserjs.org/scripts/ImThatGuy/JVCpremium JVRealtime vous permet de voir les forums de jeuxvideo.com en temps réél les topics, les posts et le nombre de connecté(s) s'actualisent en temps réél Utilisable sans JVcpremium mais vous ne pourrez pas le configurer. Pour configurer ce script, vous devez installer JVCpremium. */ /*jshint multistr: true */ (function() { 'use strict'; var delay; // 2000 par defaut var buttonStyle = 'font-size:11px;padding: 3px 6px;border-radius: 0;'; var buttonStyleActive = buttonStyle + 'width:67px;'; var R_topic; var R_post; var R_connectes; var c_btn; var t_btn; var p_btn; var d; var c; var b; var ci; var di; function listeSujet(data) { if (data.querySelectorAll('#search_in_forum').length === 0) { return false; } else {return true;} } function logConsole(text) { $('#consolePremium').append('<p style="margin:10px;">'+text+'</p>'); } var firstTime = GM_getValue('firstTime'); if (firstTime === undefined) { firstTime = true; } setTimeout(function() { // Défini si JVCpremium est activé var JVCpremiumPlugin; if (document.getElementById("PREMIUM") !== null) { JVCpremiumPlugin = true; } else { JVCpremiumPlugin = false; } if (JVCpremiumPlugin) { logConsole('[INFO] Plugin JVRealtime chargé.'); // Redéfinis les variables si JVCpremium est activé if (!firstTime) { delay = GM_getValue('delay'); R_topic = GM_getValue('R_topic'); R_post = GM_getValue('R_post'); R_connectes = GM_getValue('R_connectes'); c_btn = GM_getValue('c_btn'); t_btn = GM_getValue('t_btn'); p_btn = GM_getValue('p_btn'); } else { // Premier lancement du plugin delay = 2000; R_topic = true; R_post = true; R_connectes = true; c_btn = '<a style="'+buttonStyle+'" class="btn btn-default" id="realtime_c">Désactiver</a>'; t_btn = '<a style="'+buttonStyle+'" class="btn btn-default" id="realtime_t">Désactiver</a>'; p_btn = '<a style="'+buttonStyle+'" class="btn btn-default" id="realtime_p">Désactiver</a>'; // Enregistrement des boutons GM_setValue('c_btn', c_btn); GM_setValue('t_btn', t_btn); GM_setValue('p_btn', p_btn); // Enregistrement des variables GM_setValue('R_connectes', true); GM_setValue('R_topic', true); GM_setValue('R_post', true); GM_setValue('delay', 2000); } $('#plugin').append('<img width=100 height=100 src="https://image.noelshack.com/fichiers/2017/05/1485900804-jvrealtime.png"> \ <h5>Configuration</h5>\ <input id="realtimeDelay" value="'+delay+'" placeholder="Valeur" style="width:67px;padding: 1px 2px;margin: 2px 0;box-sizing: border-box"> Delai de rafraîchissement en ms (plus le chiffre est petit, plus les forums se mettront à jour rapidement. <i style="color:red">Déconseillé de mettre une valeur inférieur à 2000.</i>)<br>\ '+c_btn+' Nombre de connecté(s) en temps réél<br>\ '+t_btn+' Topics en temps réél<br>\ '+p_btn+' Posts en temps réél\ '); $('#non-installer').remove(); // Listeners si JVCpremium est activé $('#realtime_c').click(function() { if ( R_connectes ) { GM_setValue('R_connectes', false); //this.innerHTML = 'Désactiver'; GM_setValue('c_btn', '<a style="'+buttonStyleActive+'" class="btn btn-default" id="realtime_c">Activer</a>'); location.reload(); } else { GM_setValue('R_connectes', true); //this.innerHTML = 'Activer'; GM_setValue('c_btn', '<a style="'+buttonStyle+'" class="btn btn-default" id="realtime_c">Désactiver</a>'); location.reload(); } }); $('#realtime_t').click(function() { if ( R_topic ) { GM_setValue('R_topic', false); //this.innerHTML = 'Désactiver'; GM_setValue('t_btn', '<a style="'+buttonStyleActive+'" class="btn btn-default" id="realtime_t">Activer</a>'); location.reload(); } else { GM_setValue('R_topic', true); //this.innerHTML = 'Activer'; GM_setValue('t_btn', '<a style="'+buttonStyle+'" class="btn btn-default" id="realtime_t">Désactiver</a>'); location.reload(); } }); $('#realtime_p').click(function() { if ( R_post ) { GM_setValue('R_post', false); //this.innerHTML = 'Désactiver'; GM_setValue('p_btn', '<a style="'+buttonStyleActive+'" class="btn btn-default" id="realtime_p">Activer</a>'); location.reload(); } else { GM_setValue('R_post', true); //this.innerHTML = 'Activer'; GM_setValue('p_btn', '<a style="'+buttonStyle+'" class="btn btn-default" id="realtime_p">Désactiver</a>'); location.reload(); } }); // delai $('#realtimeDelay').focusout(function() { GM_setValue('delay', this.value); logConsole('[JVRealtime] Valeur de delai : ' + this.value); }); // Fin d'excution si JVCpremium GM_setValue('firstTime', false); } else { R_topic = true; R_post = true; R_connectes = true; delay = 2000; } //alert(R_topic); //alert(R_post); //alert(R_connectes); }, 3000); var topic; function getNbConnectes() { topic = window.location.href; if ( R_connectes ) { b = document.getElementsByClassName('nb-connect-fofo')[0]; } if ( R_topic || R_post ) { if (listeSujet(document)) { c = document.getElementsByClassName('conteneur-topic-pagi')[0]; } else { c = document.getElementsByClassName('conteneur-messages-pagi')[0]; ci = document.getElementsByClassName('bloc-message-forum '); } } if ( b || c) { GM_xmlhttpRequest({ method: "GET", url: topic, onload: function (response) { //console.log('JVRealtime : Requête terminée.'); //logConsole('[JVRealtime] Requête terminée.'); //////////////////////////////////////////////////// var getData = document.createElement('div'); getData.innerHTML = response.responseText; getData.style.display = "none"; //////////////////////////////////////////////////// if ( R_post || R_topic ) { if ( listeSujet(getData) ) { if ( R_topic ) { d = getData.querySelectorAll('.conteneur-topic-pagi')[0]; if ( c.innerHTML == d.innerHTML ) {} else { c.innerHTML = d.innerHTML; } } } else { if ( R_post ) { d = getData.querySelectorAll('.conteneur-messages-pagi')[0]; di = getData.querySelectorAll('.bloc-message-forum '); if (di.length > ci.length) { //console.log('JVRealtime : Nouveau(x) post(s) mis à jour.'); logConsole('[JVRealtime] Nouveau(x) post(s) mis à jour.'); /* for (var i=0; i<di.length; i++) { $(ci[i]).remove(); $(c).prepend(di[i]); } */ //var form = document.getElementById('bloc-formulaire-forum'); // sauvegarde jvc premium //c.innerHTML = d.innerHTML; //$('#bloc-formulaire-forum.bloc-pagi-default.bloc-pre-pagi-forum bloc-outils-bottom').remove(); $(di[di.length-1]).insertAfter('.bloc-message-forum:last'); //if ( JVCpremiumPlugin ) { $('.conteneur-messages-pagi').replaceWith(form); } // remet jvc premium } else { //console.log('[JVRealtime] Aucuns nouveaux posts sur cette page.'); //logConsole('[JVRealtime] Aucuns nouveaux posts sur cette page.'); } } } } if ( R_connectes ) { var a = getData.querySelectorAll('.nb-connect-fofo')[0]; b.innerHTML = a.innerHTML; } } }); } else { // ne fait rien } } setTimeout(function() { setInterval(getNbConnectes, delay); }, 3000); // Fin d'execution du script })();