IMDb you may know them from

Adds a frame with movies I have already seen

当前为 2024-11-26 提交的版本,查看 最新版本

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