JVC - Restauration des messages

ré-affiche les messages supprimés d'un topic

  1. // ==UserScript==
  2. // @name JVC - Restauration des messages
  3. // @namespace http://tampermonkey.net/
  4. // @version 0.1
  5. // @description ré-affiche les messages supprimés d'un topic
  6. // @author Yhria
  7. // @match https://www.jeuxvideo.com/forums/*
  8. // @icon https://www.google.com/s2/favicons?domain=google.com
  9. // @grant GM_xmlhttpRequest
  10. // ==/UserScript==
  11.  
  12. var result;
  13.  
  14. function fetch_topic_id(){
  15. let url = window.location.href;
  16. let regex = "(?:https:\/\/){0,1}(?:www\.){0,1}(?:jeuxvideo\.com\/forums\/){1}(?:[0-9]+)-(?:[0-9]+)-([0-9]+)-([0-9]+).*"
  17. return [url.match(regex)[1], url.match(regex)[2]]
  18. }
  19.  
  20. async function fetch_messages_from_topic(topic_id, page){
  21. return new Promise( (resolve, reject) => {
  22. GM_xmlhttpRequest({
  23. method: 'GET',
  24. url: 'https://jvarchive.com/api/topics/' + topic_id + '/messages?page=' + page + '&itemsPerPage=20',
  25. headers: {
  26. "accept": "application/json",
  27. "accept-language": "fr-FR,fr;q=0.9,en-US;q=0.8,en;q=0.7,ko;q=0.6,ja;q=0.5",
  28. "cache-control": "no-cache",
  29. "pragma": "no-cache",
  30. "sec-ch-ua": "\"Chromium\";v=\"94\", \"Google Chrome\";v=\"94\", \";Not A Brand\";v=\"99\"",
  31. "sec-ch-ua-mobile": "?0",
  32. "sec-ch-ua-platform": "\"Windows\"",
  33. "sec-fetch-dest": "empty",
  34. "sec-fetch-mode": "cors",
  35. "sec-fetch-site": "same-origin"
  36. },
  37. onload: function(responseDetails) {
  38. result = JSON.parse(responseDetails.responseText);
  39. resolve(JSON.parse(responseDetails.responseText));
  40. }
  41. });})
  42. }
  43.  
  44. async function restore_messages(){
  45. let topic_id = fetch_topic_id()
  46. let current_messages = document.getElementsByClassName("bloc-message-forum-anchor")
  47. let x, z, b, id, y, d, to_add, avatar;
  48.  
  49. await fetch_messages_from_topic(topic_id[0], topic_id[1])
  50. for (x in result.messages){
  51. if (isNaN(x)){
  52. break
  53. }
  54. for (y in current_messages){
  55. if (isNaN(y)){
  56. break
  57. }
  58. id = current_messages[y].id.slice(5)
  59. if (result.messages[x].id == id.toString().toLowerCase()){
  60. break
  61. }
  62. if (result.messages[x].id < id.toString().toLowerCase())
  63. {
  64. avatar = 'https://image.jeuxvideo.com/avatar-sm/default.jpg'
  65. if (result.messages[x].auteur.avatar < null){
  66. avatar = result.messages[x].auteur.avatar
  67. }
  68. d = new Date(result.messages[x].date_post)
  69. to_add = '<span id="post_' + result.messages[x].id + '" class="bloc-message-forum-anchor"></span>'
  70. to_add += `<div class="bloc-message-forum " data-id="`+ result.messages[x].id +`">
  71. <div class="conteneur-message">
  72. <div class="bloc-avatar-msg">
  73. <div class="back-img-msg">
  74. <div>
  75. <a href="https://www.jeuxvideo.com/profil/` + result.messages[x].auteur.pseudo.toString().toLowerCase() + `?mode=infos" target="_blank" class="xXx ">
  76. <img src="` + avatar + `" class="user-avatar-msg" alt="` + result.messages[x].auteur.pseudo + `" style="border-radius: 0%;">
  77. </a>
  78. </div>
  79. </div>
  80. </div>
  81. <div class="inner-head-content">
  82. <div class="bloc-header">
  83. <a href="https://www.jeuxvideo.com/profil/` + result.messages[x].auteur.pseudo.toString().toLowerCase() + `?mode=infos" target="_blank" class="xXx bloc-pseudo-msg text-user">
  84. ` + result.messages[x].auteur.pseudo.toString().toLowerCase() + `
  85. </a><a style="font-size: .6rem;text-transform: uppercase;margin-left: .25rem!important;color: #f80031;background-color: #fdd1da;display: inline-block;padding: .35rem .375rem;font-weight: 600; line-height: 1; top: .75rem;text-align: center;white-space: nowrap;vertical-align: initial;border-radius: .375rem;transition: color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;">Message supprimé</a>
  86. <div class="bloc-mp-pseudo">
  87. <a href="https://www.jeuxvideo.com/messages-prives/nouveau.php?all_dest=` + result.messages[x].auteur.pseudo + `" target="_blank" class="xXx ">
  88. <span class="picto-msg-lettre" title="Envoyer un message privé"><span>MP</span></span>
  89. </a>
  90. </div>
  91. <div class="bloc-options-msg"><span class="picto-msg-quote" title="Citer"><span>Citer</span></span></span></span></div> <div class="bloc-date-msg">
  92. <a href="/forums/message/`+ result.messages[x].id +`" target="_blank" class="xXx lien-jv">` + d.toLocaleDateString('fr-FR', {year: 'numeric', month: 'long', day: 'numeric', hour: '2-digit', minute: '2-digit', second: '2-digit' }) + `</a>
  93. </div>
  94. </div>
  95. <div class="bloc-contenu">
  96. <div class="txt-msg text-enrichi-forum ">
  97. <p>`+ result.messages[x].texte +`</p>
  98. </div>
  99. <div class="signature-msg text-enrichi-forum ">
  100. </div>
  101. </div>
  102. </div>
  103. </div>
  104. </div>`
  105. current_messages[y].outerHTML = to_add + current_messages[y].outerHTML
  106. b = document.querySelectorAll("[ data-id='" + result.messages[x].id + "']")[0].getElementsByTagName("blockquote")
  107. for (z in b){
  108. b[z].className = "blockquote-jv"
  109. b[z].setAttribute("data-visible", 1)
  110. }
  111. break
  112. }
  113. }
  114. }
  115. }
  116. restore_messages()

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址