VK Image Blur for Specific Users

Blurs images from specific users in VK conversations and removes blur on hover

  1. // ==UserScript==
  2. // @name VK Image Blur for Specific Users
  3. // @namespace http://tampermonkey.net/
  4. // @version 0.3
  5. // @description Blurs images from specific users in VK conversations and removes blur on hover
  6. // @author antowkas
  7. // @match https://vk.com/im*
  8. // @grant none
  9. // @license MIT
  10. // ==/UserScript==
  11.  
  12. (function() {
  13. 'use strict';
  14.  
  15. // Задайте список имен пользователей, чьи изображения нужно размыть
  16. const targetNames = ["Дима Михайлов", "ミリフ 遺構"];
  17.  
  18. function blurImagesForUsers() {
  19. // Находим все сообщения в истории беседы
  20. const messages = document.querySelectorAll('.ConvoHistory__dateStack section');
  21.  
  22. messages.forEach(message => {
  23. // Находим имя отправителя сообщения
  24. const authorElement = message.querySelector('.ConvoMessageHeader__authorLink .PeerTitle__title');
  25. if (authorElement && targetNames.includes(authorElement.textContent.trim())) {
  26. // Находим все изображения в сообщении и применяем к ним blur
  27. const images = message.querySelectorAll('img.PhotoItem__img, img.ReImage__img');
  28. images.forEach(img => {
  29. img.style.filter = 'blur(10px)'; // Применяем размытие
  30.  
  31. // Добавляем обработчики событий для наведения и ухода курсора
  32. img.addEventListener('mouseenter', () => {
  33. img.style.filter = 'none'; // Убираем размытие при наведении
  34. });
  35.  
  36. img.addEventListener('mouseleave', () => {
  37. img.style.filter = 'blur(10px)'; // Возвращаем размытие при уходе курсора
  38. });
  39. });
  40. }
  41. });
  42. }
  43.  
  44. // Выполняем функцию сразу после загрузки страницы
  45. window.addEventListener('load', blurImagesForUsers);
  46.  
  47. // Также добавляем наблюдатель за изменениями в DOM, чтобы обрабатывать новые сообщения
  48. const observer = new MutationObserver(blurImagesForUsers);
  49. observer.observe(document.body, { childList: true, subtree: true });
  50.  
  51. })();