Guest User

AveTopics

a guest
Dec 13th, 2017
142
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // ==UserScript==
  2. // @name         AveTopics
  3. // @version      0.1
  4. // @description  Liste live des topics
  5. // @author       Padsi
  6. // @include        http://avenoel.org/forum
  7. // @include        https://avenoel.org/forum
  8. // @grant        GM_xmlhttpRequest
  9. // @connect      avenoel.org
  10. // @icon         https://avenoel.org/favicon.ico
  11. // ==/UserScript==
  12.  
  13. //Sur une base de NocturneX : NOELIVE
  14. /*
  15. Fonctionne seulement sur la page d'accueil du forum, pas de numéro de page
  16. Si l'interval de refresh ne convient pas edit directement le script
  17. */
  18.  
  19. (function() {
  20.     'use strict';
  21.  
  22.     class AveTopics {
  23.         constructor () {
  24.             this.nbSecondeUpdate = 5; //Interval de refresh en secondes
  25.  
  26.             this.start();
  27.         }
  28.  
  29.         getURL () {
  30.             return "https://avenoel.org/forum";
  31.         }
  32.  
  33.         checkErreur (doc) {
  34.             return (doc === undefined || doc.querySelector(".topics") === null);
  35.         }
  36.  
  37.         getTopics (callback) {
  38.             var self = this;
  39.             GM_xmlhttpRequest({
  40.                 method: "GET",
  41.                 url: this.getURL(),
  42.                 onload: function(response) {
  43.                     let doc =  (new DOMParser()).parseFromString(response.responseText, "text/html");
  44.                     if(self.checkErreur(doc)){
  45.                         console.log("[AveTopics] Une erreur est survenue.");
  46.                         console.log(doc.title);
  47.                         callback([]);
  48.                         return 0;
  49.                     }
  50.                     let topics = doc.querySelector(".topics").innerHTML;
  51.                     callback(topics);
  52.                 },
  53.             });
  54.         }
  55.  
  56.         afficheTopics (topics) {
  57.             console.log("[AveTopics] topics récupérés.");
  58.             document.querySelector(".topics").innerHTML = topics;
  59.         }
  60.  
  61.         start () {
  62.             var self = this;
  63.             function boucle() {
  64.                 if(document.hasFocus()){
  65.                     self.getTopics(function (topics) {
  66.                         self.afficheTopics(topics);
  67.                         setTimeout(function () {
  68.                             boucle();
  69.                         }, self.nbSecondeUpdate * 1000);
  70.                     });
  71.                 } else {
  72.                     setTimeout(function () {
  73.                         boucle();
  74.                     }, self.nbSecondeUpdate * 1000);
  75.                 }
  76.             }
  77.             boucle();
  78.         }
  79.  
  80.     }
  81.  
  82.     new AveTopics();
  83.  
  84. })();
Advertisement
Add Comment
Please, Sign In to add comment