SLR Hide video shortcut

Thumb down to hide videos in SLR https://forum.sexlikereal.com/d/6856-mark-videos-as-not-interested

  1. // ==UserScript==
  2. // @name SLR Hide video shortcut
  3. // @namespace http://tampermonkey.net/
  4. // @version 0.2
  5. // @description Thumb down to hide videos in SLR https://forum.sexlikereal.com/d/6856-mark-videos-as-not-interested
  6. // @author jambavant
  7. // @match https://www.sexlikereal.com/*
  8. // @license MIT
  9. // @grant GM_xmlhttpRequest
  10. // ==/UserScript==
  11.  
  12. (function() {
  13. 'use strict';
  14.  
  15. const iconChecked = `<i class="material-icons" style="color: red; font-size: 20px;">thumb_down</i>`
  16. const iconUnchecked = `<i class="material-icons-outlined" style="color: grey; font-size: 20px;">thumb_down</i>`
  17.  
  18. function toggleNotInterested(ptr) {
  19. const btn = ptr.target.parentElement
  20. if (btn.classList.contains("is-checked")) {
  21. GM_xmlhttpRequest({
  22. method: "POST",
  23. url: "/ajax/manageuserpreference",
  24. data: new URLSearchParams({"project": globalObj.projectId, "_id": btn.sceneId, "type": 1,
  25. "action": "remove", "csrf_token": globalObj.csrf_token}).toString(),
  26. headers: {"Content-Type": "application/x-www-form-urlencoded"},
  27. onload: function(response) {
  28. if (JSON.parse(response.responseText).status) {
  29. btn.innerHTML = iconUnchecked
  30. btn.classList.toggle("is-checked")
  31. } else {
  32. ptr.view.window.snackbar("Something went wrong when removing")
  33.  
  34. }
  35. }
  36. })
  37. } else {
  38. GM_xmlhttpRequest({
  39. method: "POST",
  40. url: "/ajax/manageuserpreference",
  41. data: new URLSearchParams({"project": globalObj.projectId, "_id": btn.sceneId, "type": 1,
  42. "action": "add", "csrf_token": globalObj.csrf_token}).toString(),
  43. headers: {"Content-Type": "application/x-www-form-urlencoded"},
  44. onload: function(response) {
  45. if (JSON.parse(response.responseText).status) {
  46. btn.innerHTML = iconChecked
  47. btn.classList.toggle("is-checked")
  48. } else {
  49. ptr.view.window.snackbar("Something went wrong when adding")
  50. }
  51. }
  52. })
  53. }
  54.  
  55. }
  56.  
  57. document.head.innerHTML += '<link href="https://fonts.googleapis.com/icon?family=Material+Icons|Material+Icons+Outlined" rel="stylesheet" />'
  58.  
  59. function fetchPlaylistsAndUpdateVideos() {
  60.  
  61. document.querySelectorAll('article').forEach(article => {
  62. const sceneId = Number(article.getAttribute('data-scene-id'))
  63. const watchLaterButton = article.querySelector('.c-playlist-watch-later-trigger--btn');
  64. const btn = document.createElement('button');
  65. btn.sceneId = sceneId
  66. btn.classList = ["o-btn--text"]
  67. btn.addEventListener('click', toggleNotInterested);
  68. watchLaterButton.parentElement.appendChild(btn)
  69. btn.innerHTML = iconUnchecked
  70. })
  71. }
  72.  
  73. fetchPlaylistsAndUpdateVideos();
  74.  
  75.  
  76.  
  77. })();