Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // ==UserScript==
- // @name TMDB Image Redirect
- // @namespace https://image.tmdb.org/
- // @version 1.2
- // @description Заменяет ссылки на изображения TMDB на альтернативный домен
- // @author vitnet
- // @match *://*/*
- // @grant none
- // ==/UserScript==
- (function() {
- 'use strict';
- const imgReplace = 'https://image.tmdb.org/';
- const imgProxy = ['https://imagetmdb.cub.red/', 'https://imagetmdb.com/'];
- // Функция для получения случайного прокси-домена
- const getRandomProxy = () => {
- return imgProxy[Math.floor(Math.random() * imgProxy.length)];
- };
- // Функция для замены URL изображения
- const replaceImageUrl = (url) => {
- if (url && url.startsWith(imgReplace)) {
- return url.replace(imgReplace, getRandomProxy());
- }
- return url;
- };
- // Функция для замены атрибутов изображения
- const replaceImageSrc = (img) => {
- try {
- if (img.src) {
- img.src = replaceImageUrl(img.src);
- }
- if (img.dataset.src) {
- img.dataset.src = replaceImageUrl(img.dataset.src);
- }
- if (img.srcset) {
- img.srcset = img.srcset.replace(new RegExp(imgReplace, 'g'), getRandomProxy());
- }
- if (img.dataset.srcset) {
- img.dataset.srcset = img.dataset.srcset.replace(new RegExp(imgReplace, 'g'), getRandomProxy());
- }
- if (img.dataset.lazySrc) {
- img.dataset.lazySrc = replaceImageUrl(img.dataset.lazySrc);
- }
- } catch (error) {
- console.error('Ошибка при замене URL изображения:', error);
- }
- };
- // Обрабатываем уже загруженные изображения
- document.querySelectorAll('img').forEach(replaceImageSrc);
- // Следим за изменениями в DOM
- const observer = new MutationObserver(mutations => {
- mutations.forEach(mutation => {
- mutation.addedNodes.forEach(node => {
- if (node.tagName === 'IMG') {
- replaceImageSrc(node);
- } else if (node.querySelectorAll) {
- node.querySelectorAll('img').forEach(replaceImageSrc);
- }
- });
- });
- });
- observer.observe(document.body, { childList: true, subtree: true });
- // Дополнительно следим за изменением атрибутов src, data-src, data-srcset и data-lazy-src
- const attrObserver = new MutationObserver(mutations => {
- mutations.forEach(mutation => {
- if (mutation.type === 'attributes' &&
- (mutation.attributeName === 'src' ||
- mutation.attributeName === 'data-src' ||
- mutation.attributeName === 'data-srcset' ||
- mutation.attributeName === 'data-lazy-src')) {
- replaceImageSrc(mutation.target);
- }
- });
- });
- document.querySelectorAll('img').forEach(img => {
- attrObserver.observe(img, { attributes: true });
- });
- })();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement