Rating Blur Script

Blur user and critics ratings by default and unblur on hover for filmweb.pl, imdb.com, and letterboxd.com.

  1. // ==UserScript==
  2. // @name Rating Blur Script
  3. // @namespace http://tampermonkey.net/
  4. // @version 1.0
  5. // @description Blur user and critics ratings by default and unblur on hover for filmweb.pl, imdb.com, and letterboxd.com.
  6. // @author Balbi
  7. // @match *://*.filmweb.pl/*
  8. // @match *://*.imdb.com/*
  9. // @match *://*.letterboxd.com/*
  10. // @icon https://github.com/Balbiii/Movie-Rating-Blur-Extension/blob/main/icons/icon48.png?raw=true
  11. // @license GNUv3
  12. // @grant none
  13. // ==/UserScript==
  14.  
  15.  
  16. (function() {
  17. 'use strict';
  18.  
  19. function applyInitialBlur(element) {
  20. element.style.filter = 'blur(8px)';
  21. element.style.visibility = 'hidden';
  22. }
  23.  
  24. function applyBlurWithTransition(element) {
  25. element.style.transition = 'filter 0.3s ease';
  26. element.style.filter = 'blur(8px)';
  27. element.style.visibility = 'visible';
  28. element.addEventListener('mouseover', function() {
  29. element.style.filter = 'blur(0)';
  30. });
  31. element.addEventListener('mouseout', function() {
  32. element.style.filter = 'blur(8px)';
  33. });
  34. }
  35.  
  36. function observeAndApplyBlur(selector) {
  37. const observer = new MutationObserver((mutations, obs) => {
  38. const elements = document.querySelectorAll(selector);
  39. if (elements.length) {
  40. elements.forEach(element => {
  41. applyInitialBlur(element);
  42. void element.offsetWidth;
  43. applyBlurWithTransition(element);
  44. });
  45. obs.disconnect();
  46. }
  47. });
  48.  
  49. observer.observe(document, {
  50. childList: true,
  51. subtree: true
  52. });
  53. }
  54.  
  55. // Blur ratings on filmweb.pl
  56. observeAndApplyBlur('.filmCoverSection__ratings');
  57.  
  58. // Blur ratings on imdb.com
  59. observeAndApplyBlur('.sc-3a4309f8-1.dggvUg');
  60.  
  61. // Blur ratings on letterboxd.com
  62. observeAndApplyBlur('.section.ratings-histogram-chart');
  63. })();