AniDB.net restricted icon

Show R18 emoji on Restricted Anime

  1. // ==UserScript==
  2. // @name AniDB.net restricted icon
  3. // @namespace maralexbar
  4. // @description Show R18 emoji on Restricted Anime
  5. // @match http://anidb.net/*
  6. // @match https://anidb.net/*
  7. // @grant none
  8. // @license MIT
  9. // @version 1.0
  10. // ==/UserScript==
  11.  
  12. /*
  13. Primera version
  14. */
  15. (function() {
  16.  
  17. const selector = "#layout-main" //Si se cargo la pagina completamente
  18. const selector_list = "tr.restricted"; //Para las tablas en Lista, Busquedas o Creadores
  19. const selector_chart = "div.restricted"; //Para Schedule y Season Chart
  20.  
  21. function main_list(){
  22.  
  23. const rows = document.querySelectorAll(selector_list); // Selecciona todas las filas tr con la clase restricted
  24.  
  25. rows.forEach(row => {
  26. if (row.hasAttribute('role')) {
  27. // Si el elemento tiene el atributo role="row" entonces es una pagina de creador (Seiyuu, Creditos etc)
  28. const link = row.querySelector('td.name.anime > a'); // Dentro de cada <tr> 'restricted', selecciona el <a> dentro de td.name.anime ya que "name" solo es Rol.
  29. if (link) {
  30. // Agrega el emoji 18 al final del texto del enlace
  31. link.textContent += ' 🔞';
  32. }
  33. } else { // Caso contrario es una pagina de Mylist o Busqueda
  34. const link = row.querySelector('td.name > a'); // Dentro de cada <tr> 'restricted', selecciona el <a> dentro de td.name
  35. if (link) {
  36. // Agrega el emoji 18 al final del texto del enlace
  37. link.textContent += ' 🔞';
  38. }
  39. }
  40. });
  41.  
  42. }
  43.  
  44.  
  45.  
  46. function main_chart(){
  47.  
  48. const restrictedDivs = document.querySelectorAll(selector_chart);
  49.  
  50. restrictedDivs.forEach(div => {
  51. // Dentro de cada <div> 'restricted', selecciona el <a> dentro de la jerarquía especificada
  52. const link = div.querySelector('div.data div.wrap.name a.name-colored');
  53.  
  54. if (link) {
  55. // Agrega el emoji 18 al final del texto del enlace
  56. link.textContent += ' 🔞';
  57. }
  58. });
  59.  
  60.  
  61.  
  62. }
  63.  
  64. function waitForElement(query, callback) {
  65. console.log('Esperando...');
  66. const interval = setInterval(() => {
  67. const element = document.querySelector(query);
  68. if (element) {
  69. clearInterval(interval);
  70. callback(element);
  71. }
  72. }, 100); // Revisa cada 100 ms
  73. }
  74.  
  75.  
  76. waitForElement(selector, (element) => {
  77. // Espera a que se cargue el conetenedor principal
  78. console.log('Encontrado:', element.id);
  79.  
  80. if (document.querySelector(selector_list)) { //Si es una pagina Creator, Mylist o Busqueda
  81. main_list();
  82. }
  83. if (document.querySelector(selector_chart)) { //Si es una pagina de Temporada o Calendario
  84. main_chart();
  85. }
  86.  
  87.  
  88. });
  89.  
  90.  
  91. })();