Advertisement
Guest User

Untitled

a guest
Jun 11th, 2021
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // ==UserScript==
  2. // @name         Edit/Delete Messages AVN
  3. // @namespace    http://tampermonkey.net/
  4. // @version      0.1
  5. // @description  Pour modifier tous vos messages par des espaces et les supprimer
  6. // @author       TVN
  7. // @include      /^https?:\/\/avenoel.org\/mes-messages\/*
  8. // @grant        none
  9. // ==/UserScript==
  10.  
  11. (() => {
  12.     function delay (ms) {
  13.         return new Promise((resolve, reject) => setTimeout(resolve, ms))
  14.     }
  15.  
  16.     const button_edit = document.createElement("button")
  17.     const button_delete = document.createElement("button")
  18.     const state = document.createElement("span")
  19.     button_edit.innerHTML = "Edit";
  20.     button_delete.innerHTML = "Supprimer";
  21.  
  22.     const body = document.querySelector('.pagination-topic')
  23.     body.append(document.createElement("br"), button_edit, button_delete, document.createElement("br"), state)
  24.  
  25.     button_edit.addEventListener("click", edit_confirm);
  26.     button_delete.addEventListener("click", delete_confirm);
  27.  
  28.     async function edit() {
  29.         const nb_pages = parseInt(document.querySelector('.pagination-topic li:nth-last-child(2)').innerText)
  30.         state.innerHTML = "Patientez..."
  31.  
  32.         for (let i=1; i<=nb_pages; i++) {
  33.             const rawText = await fetch("https://avenoel.org/mes-messages/"+i).then(res => res.text())
  34.             const doc = new DOMParser().parseFromString(rawText, 'text/html')
  35.             const forms = doc.querySelectorAll('.message-edit-area')
  36.             let nb_msg_editing = 0
  37.             for (const form of forms) {
  38.                 const formData = new FormData(form)
  39.                 formData.append("content", "   ");
  40.                 if (form.previousElementSibling.innerHTML.replace(/\s/g, '') != "<br>") {
  41.                     await fetch(form.action, {
  42.                         method: 'POST',
  43.                         body: formData
  44.                     })
  45.                 }
  46.                 nb_msg_editing++
  47.                 state.innerHTML = "Edit: Page "+i+ "/"+nb_pages+ ", Message "+ nb_msg_editing +"/"+forms.length
  48.             }
  49.             await delay(10)
  50.         }
  51.         state.innerHTML = "Terminé !";
  52.     }
  53.  
  54.     async function delete_all() {
  55.  
  56.         //Suppression des topics
  57.         let nb_page_topic = 1
  58.         let nb_topic_deleting = 0
  59.         let topics_here = true
  60.         let topics = []
  61.         const token = document.querySelector('[name="csrf-token"]').content
  62.         state.innerHTML = "Recherche des topics...";
  63.         while(topics_here) {
  64.             const rawText = await fetch("https://avenoel.org/index.php/forum/"+nb_page_topic+"?search="+document.querySelector(".message-username").innerText+"&type=author").then(res => res.text())
  65.             const doc = new DOMParser().parseFromString(rawText, 'text/html')
  66.             Array.from(doc.querySelectorAll('.topics-author')).slice(1).filter(x => x.querySelector('a').innerText != document.querySelector(".message-username").innerText).map(x => x.parentNode.remove());
  67.             topics = topics.concat([...doc.querySelectorAll('.topics-title a')])
  68.             console.log(topics)
  69.             if(doc.querySelectorAll('.topics-author').length==1) {
  70.                 topics_here = false
  71.             }
  72.             state.innerHTML = "Récupération des topics: "+topics.length;
  73.             nb_page_topic++
  74.         }
  75.         const urlRegex = /^https:\/\/avenoel.org\/index.php\/topic\/(\d+)-(\d+)/i
  76.         for (const topic of topics) {
  77.             const [,id] = urlRegex.exec(topic.href)
  78.             await fetch("https://avenoel.org/topic/"+id+"/delete/"+token)
  79.             nb_topic_deleting++
  80.             state.innerHTML = "Suppression des topics: Topic "+ nb_topic_deleting +"/"+topics.length;
  81.         }
  82.         await delay(10)
  83.  
  84.         //Supression des messages
  85.         const nb_pages = parseInt(document.querySelector('.pagination-topic li:nth-last-child(2)').innerText)
  86.         state.innerHTML = "Patientez..."
  87.         let msg_here = true
  88.         let nb_page_msg = 1
  89.  
  90.         while(msg_here) {
  91.             const rawText = await fetch("https://avenoel.org/mes-messages/"+nb_page_msg).then(res => res.text())
  92.             const doc = new DOMParser().parseFromString(rawText, 'text/html')
  93.             const links = doc.querySelectorAll('.message-delete')
  94.             let nb_msg_deleting = 0
  95.             if(links.length==0) {
  96.                 if(nb_page_msg == nb_pages) {
  97.                     msg_here = false
  98.                 } else {
  99.                     nb_page_msg++
  100.                 }
  101.             } else {
  102.                 for (const link of links) {
  103.                     await fetch(link.href)
  104.                     nb_msg_deleting++
  105.                     state.innerHTML = "Suppression des messages: Page "+nb_page_msg+ ", Message "+ nb_msg_deleting +"/"+links.length;
  106.                 }
  107.                 await delay(10)
  108.             }
  109.         }
  110.         state.innerHTML = "Terminé !";
  111.     }
  112.  
  113.     function edit_confirm() {
  114.         if (confirm('Ceci éditera tous vos messages (éditables) par un espace. Continuer ?'))
  115.             edit()
  116.     }
  117.  
  118.     function delete_confirm() {
  119.         if (confirm('ATTENTION, CHAQUE MESSAGE SUPPRIMÉ TE FERA PERDRE 5 POINTS ! Continuer ?'))
  120.             delete_all()
  121.     }
  122. })()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement