IMDb you may know them from

Adds a frame with movies I have already seen

当前为 2024-08-15 提交的版本,查看 最新版本

  1. // ==UserScript==
  2. // @name IMDb you may know them from
  3. // @match https://www.imdb.com/name/*
  4. // @description Adds a frame with movies I have already seen
  5. // @grant none
  6. // @version 2.0.0
  7. // @license MIT
  8. // @namespace https://greasyfork.org/users/1218651
  9. // ==/UserScript==
  10.  
  11. (function () {
  12. var actorId = window.location.href.match(/\/name\/(nm\d+)/)[1];
  13.  
  14. var container = document.createElement('div');
  15. container.style.clear = 'both';
  16.  
  17. var header = document.createElement('h3');
  18. header.innerHTML = 'You may know them from (click to expand/collapse)';
  19. header.style.cursor = 'pointer';
  20. header.style.color = '#0E63BE'; // Imposta il colore dell'intestazione utilizzando il valore esadecimale
  21.  
  22. var iframe = document.createElement('iframe');
  23. iframe.src = 'https://www.imdb.com/filmosearch/?role=' + actorId + '&mode=simple&my_ratings=restrict';
  24. iframe.style.width = '100%';
  25. iframe.style.height = '500px';
  26. iframe.style.display = 'none'; // Nasconde inizialmente il frame
  27.  
  28. // Aggiungi un evento onload all'iframe per modificare i link al suo interno
  29. iframe.onload = function () {
  30. // Rimuovi completamente l'elemento con id "imdbHeader" dal frame
  31. var imdbHeader = iframe.contentDocument.getElementById('imdbHeader');
  32. if (imdbHeader) {
  33. imdbHeader.parentNode.removeChild(imdbHeader);
  34. }
  35.  
  36. // Rimuovi completamente l'elemento <ul> con la classe specificata dal frame
  37. var ipcTabs = iframe.contentDocument.querySelector('ul.ipc-tabs.ipc-tabs--base.ipc-tabs--align-left.sc-6736dd52-2.gRVa-dQ.tabs');
  38. if (ipcTabs) {
  39. ipcTabs.parentNode.removeChild(ipcTabs);
  40. }
  41.  
  42. // Rimuovi completamente l'elemento <div> con la classe specificata dal frame
  43. var divToRemove = iframe.contentDocument.querySelector('div.sc-e3ac1175-5.eKfFfl');
  44. if (divToRemove) {
  45. divToRemove.parentNode.removeChild(divToRemove);
  46. }
  47.  
  48. // Rimuovi completamente gli elementi con la classe specificata dal frame
  49. var elementsToRemove = iframe.contentDocument.querySelectorAll('.ipc-title.ipc-title--base.ipc-title--page-title.ipc-title--on-textPrimary');
  50. elementsToRemove.forEach(function (element) {
  51. element.parentNode.removeChild(element);
  52. });
  53.  
  54. // Rimuovi completamente gli elementi con la classe specificata dal frame
  55. var pageBackground = iframe.contentDocument.querySelectorAll('.ipc-page-background.ipc-page-background--baseAlt.sc-8cf8f1-1.kdGFti');
  56. pageBackground.forEach(function (element) {
  57. element.parentNode.removeChild(element);
  58. });
  59.  
  60. // Rimuovi completamente l'elemento footer con classe "imdb-footer" dal frame
  61. var imdbFooter = iframe.contentDocument.querySelector('footer.imdb-footer');
  62. if (imdbFooter) {
  63. imdbFooter.parentNode.removeChild(imdbFooter);
  64. }
  65.  
  66. // Rimuovi completamente l'elemento <div> con la classe specificata dal frame
  67. var recentlyViewed = iframe.contentDocument.querySelector('div.sc-7f8be4ff-0.ckODVo.recently-viewed.celwidget');
  68. if (recentlyViewed) {
  69. recentlyViewed.parentNode.removeChild(recentlyViewed);
  70. }
  71.  
  72. // Modifica i link all'interno del frame
  73. var linksInIframe = iframe.contentDocument.querySelectorAll('a');
  74. linksInIframe.forEach(function (link) {
  75. link.setAttribute('target', '_top'); // Imposta il target dei link nell'iframe su "_top"
  76. });
  77. };
  78.  
  79. container.appendChild(header);
  80. container.appendChild(iframe);
  81. var targetElement = document.querySelector('div.ipc-chip-list--base');
  82.  
  83. //var targetElement = document.querySelector('div.ipc-chip-list__scroller');
  84. // Controlla se l'elemento di destinazione esiste prima di inserire l'iframe
  85. if (targetElement) {
  86. targetElement.parentNode.insertBefore(container, targetElement);
  87.  
  88. header.addEventListener('click', function () {
  89. if (iframe.style.display === 'none') {
  90. iframe.style.display = 'block'; // Mostra il frame quando si clicca sull'intestazione
  91. } else {
  92. iframe.style.display = 'none'; // Nasconde il frame quando si clicca sull'intestazione di nuovo
  93. }
  94. });
  95. } else {
  96. // Se l'elemento previsto non esiste, puoi scegliere un modo alternativo per inserire l'iframe o gestire il caso di conseguenza.
  97. console.log('L\'elemento previsto non esiste su questa pagina.');
  98. }
  99. })();