{ "[Google_Images]": { "link": "^(?:(google\\.\\S+/imgres\\?\\S*imgurl=.+)|gi_redirect/\\?.+)", "url": "data:,$&", "res": ":\nconst n = this.node\nn.IMGS_fallback_zoom = null\n$[1] = $[1] ? 'https://'+$[1] : n.closest('a')?.href\nlet u = new URL($[1]).searchParams.get('imgurl')\nreturn this.find({ href: u, IMGS_TRG: n }) || u", "img": "^(data:image|encrypted-tbn\\d\\.gstatic\\.com/images).+", "loop": 2, "to": ":\nif (/^(?:www\\.)?google\\./.test(new URL(document.URL).hostname)) {\n if (\n /\\/search\\?\\S*tbm=isch/.test(document.URL) || // Google Images\n /\\/imgres\\?imgurl=/.test(document.URL) || // Google Images > Image page (Related images)\n /\\/search\\?\\S*(?:imgrc|vhid)=/.test(document.URL) // Google > Image Pack > Side frame (Related images)\n ) {\n const element = document.querySelector('a:hover[role=\"button\"]')\n if (element) {\n element.dispatchEvent(new MouseEvent('mousedown', { bubbles: true }))\n return element.href\n }\n }\n \n if (/\\/search\\?\\S*udm=2/.test(document.URL)&&this.node?.closest('a')?.href?.startsWith('http')) // New Google Images\n {\n const element = document.querySelector('div:hover[role=\"button\"]')\n if (element) {\n return '//gi_redirect/?'+$[0]\n }\n }\n\n // SERP Features: Image Pack | moz.com/learn/seo/serp-features#image-pack / dataforseo.com/serp-features#images\n if (/\\/search\\?/.test(document.URL)) {\n let id, n = this.node.parentNode?.parentNode\n if(id = n?.getAttribute('data-docid')||n?.parentNode?.parentNode?.parentNode?.getAttribute('data-docid')){\n const o = Object.values(JSON.parse(document.body.outerHTML.match(/var m=({.+?});/)[1]))\n return o.find(i=>Array.isArray(i[1]?.[0])&&i[1][0]?.find(x=>x[1]===id))?.[1][0].find(y=>y[1]===id)?.[3][0]||o.find(i=>i[1]?.[1]===id)?.[1][3][0]||''\n }\n\n\n const W_jd = () => {\n /* const s = document.createElement('script')\n s.textContent = 'sessionStorage.setItem(\"W_jd\", JSON.stringify(window.W_jd)); document.currentScript.remove();'\n document.head.appendChild(s)\n const result = sessionStorage.getItem('W_jd')\n sessionStorage.removeItem('W_jd')\n return JSON.parse(result) */\n const imgs = [...document.getElementsByClassName('cC9Rib')].map(i=>i.previousSibling?.firstChild?.id)\n const imgIndex = Math.floor(imgs.indexOf(this.node.id)/100)\n if(!imgIndex)return JSON.parse(document.body.outerHTML.match(/var m=({.+?});/)[1])\n else {\n this._g_imgs_ = this._g_imgs_ || {}\n let o = this._g_imgs_ || {}\n if(!o[imgIndex]){\n o[imgIndex] = {}\n let x=new XMLHttpRequest\n const urlParams=document.documentElement.outerHTML.match(/var _g=\\{([^\\}]+)/)[1].split(',').map(i=>i.match(/:'([^']+)/)?.[1]||i.match(/:(\\d+)/)?.[1]), arc=document.documentElement.outerHTML.match(/id=\"arc-([^\"]+)/)[1]\n x.open('GET',`${location.href}&bl=${urlParams[2]}&s=images&opi=${urlParams[3]}&start=${imgIndex}0&ipage=1&asearch=arc&cs=0&async=arc_id:${arc+imgIndex}0,ve_name:MoreResultsContainer,_id:arc-1${arc+imgIndex}0,_fmt:pc`,false)\n x.send()\n x = x.responseText.match(/\\[\\[\\[.+/)[0]\n x = JSON.parse(x)[0]\n x.forEach(i=>o[imgIndex][i[0]]=JSON.parse(i[1]))\n this._g_imgs_[imgIndex] = o[imgIndex]\n }\n return o[imgIndex]\n }\n }\n\n function findByDocid(obj, str) {\n if (typeof obj?.[1] === 'string' && obj[1] === str) {\n return obj\n }\n for (let val of Object.values(obj)) {\n if (val && typeof val === 'object' && (val = findByDocid(val, str), val)) {\n return val\n }\n }\n }\n\n const element = document.querySelector('div:hover[data-docid]')\n if (element) {\n return findByDocid(W_jd(), element.dataset.docid)[3][0]\n }\n }\n}\n\nreturn $[0]", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/1p7z6cj/comment/nvu253f\nOLD\nhttps://www.reddit.com/r/imagus/comments/1p7z6cj/comment/nrcrbyb\nhttps://www.reddit.com/r/imagus/comments/1ogt8o1/comment/nlwgwt7\nhttps://www.reddit.com/r/imagus/comments/1bercv8/comment/l7sqtzz\n\n\n\n!!!\nФильтр должен всегда располагаться в самом начале, перед [data:image].\n+\nДля увеличения видео в результатах поиска - курсор наводить на название ролика. Фильтр НЕ работает для результатов поиска из Инстаграм и Фейсбук.\n==\nThe filter should always be placed at the very beginning, before [data:image].\n+\nTo show video in the search results - hover over the title of the video. The sieve does NOT work for Instagram and Facebook search results.\n\n\nПРИМЕРЫ / EXAMPLES\nhttps://www.google.com/search?num=10&newwindow=1&udm=2&q=Wes+Anderson\nhttps://www.google.com/search?q=scotland+inurl%3A-scaled.jpg&udm=2\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1480#14\nконтент из FB/INST в GOOGLE IMAGES:\nhttps://www.google.com/search?q=RACOON+FACEBOOK&num=10&newwindow=1&udm=2&aic=0\nhttps://www.google.com/search?q=RACOON+INSTAGRAM&num=10&newwindow=1&udm=2&aic=0" }, "[data:image]": { "link": "(^data:image.+)", "img": "(^data:image.+)", "to": "$1", "note": "Rodny + hababr (fix) + Baton34V (fix)\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=4000#16\n\nПРИМЕРЫ / EXAMPLES\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=1980#20" }, "[HLS_Player]": { "link": "^[^?]+\\.(m3u8|mpd)", "loop": 1, "url": "data:,$&", "res": ":\nthis.TRG.IMGS_ext_data = [\n '//' + 'data:image/svg+xml,',\n `Video`\n]\nreturn 'imagus://extension'", "note": "64h + hababr (edit)\nhttps://pastebin.com/GsvneF9L\nOLD\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=2560#11\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1484&limit=1&m=3#1\n\n!!!\nДинамически загружаемый Video.js (https://github.com/videojs/video.js), поддерживающий HLS, DASH и выбор разрешения.\n+\nNB! - Может вызвать проблемы с видео на Реддит (перехватывает интерфейс плеера), поэтому должен находиться ниже фильтра Reddit_video|v.redd.it\n==\nDynamically loaded Video.js (https://github.com/videojs/video.js), supporting HLS, DASH and resolution selection.\n+\nNB! - May cause problems with the video on Reddit (intercepts the player interface), so it should be below the Reddit_video|v.redd.it sieve.\n\nПРИМЕРЫ / EXAMPLES\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1480#6" }, "[Extension]": { "link": "^imagus:\\/\\/extension", "loop": 1, "url": ":'data:,' + this.TRG.IMGS_c_resolved.URL", "res": ":\nfunction inject(tag, id, content, parent) {\n const elem = document.createElement(tag)\n elem.setAttribute('id', id)\n elem.textContent = content\n return parent ? parent.appendChild(elem) : document.head.appendChild(elem)\n}\n\nfunction override(that) {\n function reset() {\n if (that.EXTENSION.VIME) {\n that.EXTENSION.VIME.remove()\n delete that.EXTENSION.VIME\n }\n\n if (that.EXTENSION.VIDEOJS) {\n that.EXTENSION.VIDEOJS.player?.dispose()\n that.EXTENSION.VIDEOJS.remove()\n delete that.EXTENSION.VIDEOJS\n delete that.KEYS_TARGET\n }\n\n if (that.EXTENSION.IFRAME) {\n that.EXTENSION.IFRAME.remove()\n delete that.EXTENSION.IFRAME\n }\n\n that.EXTENSION.innerHTML = ''\n }\n\n function setSVG(width, height) {\n clearInterval(that.timers.onReady);\n that.set(`data:image/svg+xml,`)\n if (cfg.hz.capWH) {\n that.CAP.children[1].textContent = `${width}\\u00d7${height}`\n }\n }\n\n that.resetNode_original = that.resetNode\n that.resetNode = (...args) => {\n if (args[0] === that.TRG) reset()\n return that.resetNode_original.apply(that, args)\n }\n\n that.reset_original = that.reset\n that.reset = (...args) => {\n reset()\n return that.reset_original.apply(that, args)\n }\n\n let handlers = typeof platform === 'object' ? platform : catchEvent;\n handlers.onkeydown_original = handlers.onkeydown\n handlers.onkeydown = e => {\n const url = that.TRG?.IMGS_ext?.attributes?.['url']?.textContent\n const codes = [e.code.replace(/^Key/, ''), e.key]\n if (url && codes.includes(cfg.keys.hz_open)) {\n Port.send({ cmd: 'open', url: url, nf: e.shiftKey })\n } else if (that.EXTENSION?.VIDEOJS?.player && e.code === 'ArrowUp') {\n that.EXTENSION.VIDEOJS.player.muted(false)\n } else if (that.EXTENSION?.VIDEOJS?.player && (e.code === 'PageDown' || e.code === 'PageUp')) {\n that.EXTENSION.VIDEOJS.player.pause()\n that.EXTENSION.VIDEOJS.player.currentTime(that.EXTENSION.VIDEOJS.player.currentTime() + (1/25 * (e.code === 'PageDown' ? 1 : -1)))\n e.preventDefault()\n } else {\n return handlers.onkeydown_original(e)\n }\n }\n\n window.removeEventListener(\"wheel\", that.wheeler, true)\n that.wheeler_original = that.wheeler\n that.wheeler = function (ev) {\n if (that.EXTENSION.scrollHeight > that.EXTENSION.clientHeight + 10 && that.EXTENSION.contains(ev.target)) {\n return\n }\n return that.wheeler_original(ev)\n }\n window.addEventListener(\"wheel\", that.wheeler, { capture: true, passive: false })\n\n that.fzClickAct_original = that.fzClickAct\n that.fzClickAct = e => !that.EXTENSION.contains(e.target) ? that.fzClickAct_original(e) : undefined\n if (that.fullZm) {\n window.removeEventListener(\"click\", that.fzClickAct_original, true);\n window.addEventListener(\"click\", that.fzClickAct, true);\n }\n\n that.prepareCaption_original = that.prepareCaption\n that.prepareCaption = (trg, caption = '') => {\n const m = caption.match(/()?(.*)/s)\n const e = () => { const t = document.createElement('template'); t.innerHTML = m[1]; return t.content.firstChild; }\n trg.IMGS_ext = trg.IMGS_ext_from_url || m[1] ? e() : undefined\n if (that.CAP) that.CAP.style.zIndex = 1\n return that.prepareCaption_original(trg, m[2])\n }\n\n that.show_original = that.show\n that.show = (msg, delayed) => {\n if (msg === 'load') {\n if (that.EXTENSION.VIDEOJS || that.EXTENSION.IFRAME) {\n return\n } else {\n return that.show_original(msg, delayed)\n }\n } else if (msg === undefined) {\n return that.show_original(msg, delayed)\n }\n\n const ext = that.TRG.IMGS_ext\n that.EXTENSION.style.display = ext ? 'block' : 'none'\n that.DIV.style.transform = ''\n\n const res = that.show_original(msg, delayed)\n\n if (ext) {\n const type = ext.getAttribute('type').split('-')\n const url = ext.getAttribute('url')\n that.EXTENSION.className = 'imagus-' + type[0]\n that.EXTENSION_custom_style.textContent = ext.getAttribute('custom-style')\n\n const isYoutube = /^https?:\\/\\/(www\\.)?(youtube\\.com|youtu\\.be)\\//i.test(url);\n if (isYoutube && type[0] === 'videojs') {\n type[0] = 'iframe'\n }\n\n switch (type[0]) {\n case 'iframe':\n if (url && that.EXTENSION.IFRAME && url !== that.EXTENSION.IFRAME._src) {\n reset()\n }\n\n if (!url || that.EXTENSION.IFRAME) {\n break\n }\n\n let html;\n if (isYoutube) {\n const ytId = url.match(/(?:v=|embed\\/|shorts\\/)([a-zA-Z0-9_-]{11})/)[1]\n const t = url.match(/t=([\\d,]+)/)?.[1] || 0\n html = ``\n\n } else {\n html = ``\n }\n that.EXTENSION.innerHTML = `
Click to enable/disable iframe control
${html}`\n that.EXTENSION.IFRAME = that.EXTENSION.querySelector(':scope > iframe')\n that.EXTENSION.IFRAME._src = url\n const h = [1440, 1080, 720, 360].find(i => i <= window.innerHeight) || 360;\n setTimeout(setSVG, 10, h / 9 * 16, h);\n // setSVG(3840, 2160)\n\n that.EXTENSION.querySelector('.imagus-iframe-control').addEventListener('click', function (ev) {\n // that.EXTENSION.style.pointerEvents = that.EXTENSION.style.pointerEvents == 'none' ? 'auto' : 'none';\n that.EXTENSION.style.zIndex = that.EXTENSION.style.zIndex != 'auto' ? 'auto' : '-1';\n })\n break\n\n case 'sidebar':\n that.EXTENSION.innerHTML = ext.innerHTML\n that.EXTENSION.scrollTop = 0\n const rect = that.EXTENSION.getBoundingClientRect()\n const tfX = rect.left < 0 ? -rect.left : rect.right > window.innerWidth ? window.innerWidth - rect.right : 0\n const tfY = rect.top < 0 ? -rect.top : rect.bottom > window.innerHeight ? window.innerHeight - rect.bottom : 0\n if (tfX || tfY)\n that.DIV.style.transform = `translate(${tfX}px, ${tfY}px)`\n break\n\n case 'banner':\n that.EXTENSION.innerHTML = `\n \n \n \n
\n ${ext.getAttribute('text')}\n
\n
\n
\n
\n `.replace(/\\n\\s*/g, '')\n break\n\n case 'videojs':\n if (url && that.EXTENSION.VIDEOJS && url !== that.EXTENSION.VIDEOJS.player?.src()) {\n reset();\n }\n\n if (!url || that.EXTENSION.VIDEOJS) {\n break\n }\n\n if (!that.EXTENSION.VIDEOJS_status) {\n that.EXTENSION.VIDEOJS_status = 'loading'\n console.time('Load Video.js')\n\n if (typeof loadVideoJS === 'function') {\n loadVideoJS()\n that.EXTENSION.VIDEOJS_status = 'loaded'\n console.timeEnd('Load Video.js')\n createPlayer()\n break\n }\n\n const urlsCSS = [\n 'https://cdn.jsdelivr.net/npm/video.js@7.20.3/dist/video-js.min.css',\n 'https://cdn.jsdelivr.net/npm/videojs-max-quality-selector@0.9.1/dist/videojs-max-quality-selector.css'\n // 'https://unpkg.com/video.js@7.20.3/dist/video-js.min.css',\n // 'https://unpkg.com/videojs-max-quality-selector@0.9.1/dist/videojs-max-quality-selector.css'\n ]\n\n const urlsJS = [\n 'https://cdn.jsdelivr.net/npm/video.js@7.20.3/dist/video.min.js',\n 'https://cdn.jsdelivr.net/npm/videojs-hotkeys@0.2.28/videojs.hotkeys.min.js',\n 'https://cdn.jsdelivr.net/npm/videojs-contrib-quality-levels@2.2.0/dist/videojs-contrib-quality-levels.min.js',\n 'https://cdn.jsdelivr.net/npm/videojs-max-quality-selector@0.9.1/dist/videojs-max-quality-selector.min.js',\n // 'https://unpkg.com/video.js@7.20.3/dist/video.min.js',\n // 'https://unpkg.com/videojs-contrib-quality-levels@2.2.0/dist/videojs-contrib-quality-levels.min.js',\n // 'https://unpkg.com/videojs-max-quality-selector@0.9.1/dist/videojs-max-quality-selector.min.js'\n ]\n\n const urlGet = (url) => new Promise((resolve, reject) => {\n const xhr = new XMLHttpRequest()\n\n xhr.onload = () => {\n if (xhr.status === 200) {\n console.log(xhr.statusText, '|', url)\n resolve(xhr.responseText.replace(/\\n?\\/\\*.+?\\*\\/\\n?/gs, '').trim())\n } else {\n console.error(xhr.statusText, '|', url)\n reject(xhr.statusText)\n }\n }\n\n xhr.onerror = () => {\n console.error(xhr.statusText, '|', url)\n reject(xhr.statusText)\n }\n\n xhr.open('GET', url)\n xhr.send()\n })\n\n const pCSS = Promise.all(urlsCSS.map(urlGet)).then((result) => {\n document.head.insertAdjacentHTML('beforeend', ``)\n })\n\n const pJS = Promise.all(urlsJS.map(urlGet)).then((result) => {\n Function(result[0]\n .replace(\n 'new Uint8Array(t.data.data,i.byteOffset||0,i.byteLength||t.data.data.byteLength)',\n '/firefox/i.test(window.navigator.userAgent)?cloneInto(new Uint8Array(t.data.data,i.byteOffset||0,i.byteLength||t.data.data.byteLength),window):new Uint8Array(t.data.data,i.byteOffset||0,i.byteLength||t.data.data.byteLength)'\n )\n .replace(\n 'n[t].forEach', // _this6[idName].forEach\n 'structuredClone(n[t]).forEach' // https://caniuse.com/mdn-api_structuredclone\n ) +\n ';window.videojs = videojs;' + result[1] +\n result.slice(2).join(''))()\n })\n\n Promise.all([ pCSS, pJS ]).then(() => {\n that.EXTENSION.VIDEOJS_status = 'loaded'\n console.timeEnd('Load Video.js')\n createPlayer()\n })\n }\n\n if (that.EXTENSION.VIDEOJS_status === 'loaded') {\n createPlayer()\n }\n\n function createPlayer() {\n that.EXTENSION.VIDEOJS = document.createElement('video')\n that.EXTENSION.VIDEOJS.setAttribute('class', 'video-js')\n that.EXTENSION.VIDEOJS.setAttribute('id', 'imagus-player')\n that.EXTENSION.appendChild(that.EXTENSION.VIDEOJS)\n\n const playerOptions = {\n autoplay: 'any',\n controls: true,\n playbackRates: [0.5, 0.75, 1, 1.1, 1.25, 1.5, 2],\n loop: true,\n preload: 'auto',\n inactivityTimeout: 0,\n plugins: {\n hotkeys: {},\n },\n }\n\n videojs(that.EXTENSION.VIDEOJS, playerOptions, () => {\n that.KEYS_TARGET = that.EXTENSION.VIDEOJS.parentElement\n const player = that.EXTENSION.VIDEOJS.player = videojs.players['imagus-player']\n const qLevels = player.qualityLevels()\n const mqSelectorOptions = {\n autoLabel: 'Auto ',\n disableAuto: true,\n displayMode: 1,\n // defaultQuality: 2,\n // maxHeight: window.innerHeight,\n // maxWidth: window.innerWidth,\n filterDuplicateHeights: false,\n filterDuplicates: false,\n showBitrates: true\n }\n const mqSelector = player.maxQualitySelector(mqSelectorOptions)\n\n const setPlayerSize = (width, height) => {\n if (!player.isFullscreen()) {\n setSVG(width, height)\n }\n }\n\n player.on('ready', e => that.EXTENSION.VIDEOJS?.focus())\n\n player.on('loadedmetadata', e => {\n // select video stream to match window size\n for (let ql of mqSelector.qualityLevels) {\n if (ql.height < window.innerHeight && ql.width < window.innerWidth) {\n mqSelector.changeLevel(ql.id)\n break\n }\n }\n\n // select original audio\n for (let aud of player.audioTracks()?.tracks_ || []) {\n if (aud?.id?.toLowerCase().includes('original')) {\n aud.enabled = true\n break\n }\n }\n })\n\n qLevels.on('change', (e) => {\n setPlayerSize(qLevels[qLevels.selectedIndex].width, qLevels[qLevels.selectedIndex].height)\n })\n\n player.on('resize', () => {\n const vWidth = player.videoWidth()\n const vHeight = player.videoHeight()\n player.width(vWidth)\n player.height(vHeight)\n setPlayerSize(vWidth, vHeight)\n })\n\n player.on('fullscreenchange', () => {\n if (!mqSelector.selectedIndexPrevious) {\n mqSelector.selectedIndexPrevious = mqSelector.selectedIndex\n mqSelector.options.disableAuto = false\n mqSelector.changeLevel(-1) // auto\n } else {\n mqSelector.changeLevel(mqSelector.selectedIndexPrevious)\n delete mqSelector.selectedIndexPrevious\n }\n })\n\n player.volume(cfg.hz.mediaVolume / 100)\n player.src(url)\n })\n }\n\n break\n\n }\n }\n\n return res\n }\n\n that.switchToHiResInFZ_original = that.switchToHiResInFZ\n that.switchToHiResInFZ = () => {\n if (that.fullZm >= 1) {\n that.EXTENSION.style.pointerEvents = 'auto'\n if (that.EXTENSION.VIME || that.EXTENSION.VIDEOJS || that.EXTENSION.IFRAME) {\n that.EXTENSION.style.zIndex = 'auto'\n }\n\n const iControl = that.EXTENSION.querySelector('.imagus-iframe-control')\n if (iControl) iControl.style.display = 'block'\n that.EXTENSION.VIDEOJS?.focus()\n }\n if (that.fullZm === false) {\n that.EXTENSION.style.pointerEvents = ''\n that.EXTENSION.style.zIndex = ''\n }\n return that.switchToHiResInFZ_original()\n }\n}\n\nif (!this.EXTENSION) {\n const style = `\n #imagus-extension {\n pointer-events: none;\n }\n\n #imagus-extension.imagus-sidebar {\n background: padding-box rgb(31, 31, 31);\n border-bottom: ${this.DIV.style.borderBottom};\n border-top: ${this.DIV.style.borderTop};\n border-left: ${this.DIV.style.borderLeft};\n border-right: ${this.DIV.style.borderRight};\n border-radius: ${this.DIV.style.borderRadius};\n box-shadow: ${this.DIV.style.boxShadow};\n box-sizing: border-box;\n color: white;\n font: 13px / 1.3 sans-serif;\n left: calc(-360px + ${this.DIV.style.borderLeftWidth} - 1px);\n padding: 5px 8px 6px;\n position: absolute;\n top: -${this.DIV.style.borderTopWidth};\n white-space: pre-wrap;\n width: 360px;\n z-index: -1;\n max-height: calc(100% + ${this.DIV.style.borderTopWidth} * 2);\n overflow-y: auto;\n overflow-wrap: break-word;\n overscroll-behavior: contain;\n scrollbar-color: auto;\n }\n #imagus-extension.imagus-sidebar > b {\n font-weight: bold;\n }\n\n #imagus-extension.imagus-sidebar a {\n color: #bbccff\n }\n\n #imagus-extension.imagus-banner {\n position: relative;\n top: -20%;\n }\n #imagus-extension.imagus-banner div {\n display: table;\n height: 100%;\n width: 100%;\n }\n #imagus-extension.imagus-banner span {\n color: white;\n display: table-cell;\n font: 18px sans-serif;\n vertical-align: middle;\n text-align: center;\n white-space: pre-wrap;\n }\n #imagus-extension.imagus-banner:hover span {\n color: #cceeff;\n text-decoration: underline;\n }\n\n #imagus-extension.imagus-videojs {\n height: 100%;\n position: relative;\n top: -100%;\n z-index: -1;\n }\n #imagus-extension.imagus-videojs > #imagus-player {\n --bottom: 0;\n --left: 0;\n --margin: auto;\n --position: absolute;\n --right: 0;\n --top: 0;\n height: 100%;\n width: 100%;\n }\n #imagus-extension.imagus-videojs video {\n outline: none;\n box-shadow: rgb(100 100 255) 0px 0px 0px 1px;\n }\n #imagus-extension .vjs-menu-button-popup .vjs-menu .vjs-menu-content {\n max-height: 20em;\n }\n #imagus-extension .vjs-playback-rate .vjs-menu {\n width: 5em;\n }\n #imagus-extension .vjs-max-quality-selector-button .vjs-menu {\n width: 14em;\n }\n #imagus-extension .vjs-max-quality-selector-button .vjs-menu .vjs-menu-content {\n padding: 5px;\n }\n #imagus-extension .vjs-max-quality-selector .vjs-menu li.vjs-selected {\n font-weight: 400;\n text-shadow: 0 0 #000;\n }\n\n .imagus-iframe-control {\n pointer-events: auto;\n cursor: pointer;\n position: fixed;\n inset: 0 auto auto 0;\n width: 100%;\n height: 5vh;\n border-left-top-radius: 1vh;\n background: yellow;\n opacity: .1;\n line-height: 5vh;\n text-align: center;\n z-index: 2;\n font-family: sans-serif;\n display: none;\n }\n .imagus-iframe-control:hover {\n opacity: .7;\n }\n #imagus-extension.imagus-iframe {\n /* pointer-events: none; */\n height: 100%;\n position: relative;\n top: -100%;\n /* z-index: -1; */\n }\n #imagus-extension > iframe {\n width: 100%;\n height: 100%;\n border: none;\n }\n `.replace(/\\n\\s*/g, '')\n this.EXTENSION = inject('div', 'imagus-extension', null, this.DIV)\n inject('style', 'imagus-extension-style', style)\n this.EXTENSION_custom_style = inject('style', 'imagus-extension-custom-style')\n override(this)\n}\n\nconst url = new URL($[0])\nif (url.search) {\n const elem = document.createElement('imagus-extension')\n url.searchParams.forEach((val, key) => elem.setAttribute(key, val))\n this.TRG.IMGS_ext_from_url = elem\n}\n\nthis.TRG.IMGS_ext_data?.forEach?.(i => {\n if (i[0] === '') i[0] = 'data:image/svg+xml,'\n})\n\nreturn this.TRG.IMGS_ext_data", "note": "64h + Hababr (fix)\nhttps://pastebin.com/MxrgCVr6\nOLD\nhttps://pastebin.com/Saks4kUE\nhttps://gist.github.com/hababr/187c987bd8812ade9e8c59f551fa21dc\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=2820#9\n\n\n\n!!!\nДинамически загружаемый Video.js (https://github.com/videojs/video.js), поддерживающий HLS/DASH, выбор разрешения, скорость и горячие клавиши (см.вкалдку \"Сочетания клавиш\" в Настройках). \n+\nДля остановки зацикливания видео - установить в параметре loop значение \"false\":\nhttps://i.imgur.com/iMVa3OF.png\n==\nDynamically loaded Video.js (https://github.com/videojs/video.js), which supports HLS/DASH, resolution selection, speed, and keyboard shortcuts (see the \"Shortcuts\" section in Settings).\n+\nTo stop video looping, set the loop parameter to \"false\":\nhttps://i.imgur.com/iMVa3OF.png\n\n\n\n\nПРИМЕРЫ / EXAMPLES\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1480#6\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1240#9" }, "032c": { "img": "^032c\\.com/_next/image\\?url=(https%3A%2F%2Fcdn\\.sanity\\.io%2Fimages%2F\\w+%2Fproduction%2F[a-f\\d]+-\\d+x\\d+\\.\\w+).*", "dc": 2, "to": "$1", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/1hm0ny8/comment/m3uj9av\n\nEXAMPLES\nhttps://www.reddit.com/r/imagus/comments/1hm0ny8/032ccom_better_resolution_image_3_examples_inside/" }, "1x-g": { "link": "^1x\\.com/photo/(\\d+)", "res": "photos-feed-image-[^\"]+\" src=\"([^\"]+)\n([^<]+)\n", "useimg": 1, "img": "^(?:((?:[^.]+\\.)?1x\\.com/images/user/[\\da-f]{32}-)(?:s[dq]|ld)(?=\\.)|1x\\.com/[A-Za-z0-9]+$)", "to": ":\nreturn $[1] ? `#${$[1]}#hd2 hd4 sd2 sd4#\\n${$[1]}` : this.node.closest('tr')?.querySelector('img')?.src", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/lmkqkl2\nOLD\nhttps://www.reddit.com/r/imagus/comments/130svfu/comment/jr9iz3u\nhttps://www.reddit.com/r/imagus/comments/130svfu/comment/jns5il6\n\n!!!\nДля \"Thumbs mode\" работает как обычно. Для \"Flow mode\" - навести курсор на имя автора. \n==\nFor \"Thumbs mode\" works as usual. For \"Flow mode\" - hover the cursor over the author's name. \n\nEXAMPLES\nhttps://1x.com/gallery\nhttps://1x.com/gallery/latest/published\nhttps://1x.com/photo/51960/category/humour/latest-additions/wheels-and-heels" }, "123rf-g": { "link": "^123rf\\.com/photo_\\d+", "res": "\"fileFormat\":\"image/[^\"]+\",\"url\":\"([^\"]+)\"\n<title>([^<]+)", "useimg": 1, "img": "^us(\\.123rf\\.com/)450wm(/.*)", "to": "previews$1images$2", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/130svfu/comment/jns5il6\nOLD\nhttps://www.reddit.com/r/imagus/comments/co5d0k/comment/ewj7k9s\n\nПРИМЕРЫ / EXAMPLES\nhttps://www.123rf.com/clipart-vector/music.html?imgtype=1&oriSearch=music\nhttps://www.123rf.com/clipart-vector/green_apple.html?imgtype=1" }, "1688.com-g": { "link": "^d(?:etail\\.1688\\.com/offer/\\d+\\.html|j\\.1688\\.com/ci_bb\\?.+)", "res": ":\nconst video_first = false\n\n$=JSON.parse($._.match(/window\\.__INIT_DATA=([^\\n]+)/)[1]);\n$=Object.values($.data).find(i=>i.data?.offerImgList||i.data?.video)?.data||[];\n$=video_first ? [$.video?.videoUrl].concat($.offerImgList) : ($.offerImgList||[]).concat($.video?.videoUrl);\nreturn $.filter(Boolean).map(i=>[i])", "img": "^(cbu\\d+\\.alicdn\\.com/img/[^.]+\\.)(?:\\d+x\\d+\\.)?", "to": "$1", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/lksuszh\nOLD\nhttps://www.reddit.com/r/imagus/comments/2xcn05/sieve_fo1688com\n\n\nEXAMPLES\nhttps://s.1688.com/selloffer/offer_search.htm?keywords=raspberry\nhttps://fuzhuang.1688.com/nanzhuang?spm=a262eq.12572798.jsczf959.1.4ad92fb14W4uGR\nhttps://show.1688.com/pinlei/industry/pllist.html?spm=a260j.12536027.jr60bfo3.25.2cd71ade0Hz9Og&&sceneSetId=856&sceneId=33706&bizId=217526&adsSearchWord=%E7%88%B8%E7%88%B8%E7%9F%AD%E8%A3%A4" }, "23hq-g": { "link": "^(23hq\\.com/(?:[^/]+/)?[^/]+/photo/\\d+)(\\?.*)?$", "res": ":\nlet o=($._.match(/var originalURL\\s*=\\s*\"([^\"]+)/)||[,''])[1]\nlet l=($._.match(/id=\"fn_img\" src=\"([^\"]+)/)||[,''])[1]\nreturn [[[o&&o.length?'#'+o:'',l]]]", "img": "^(23hq\\.com/\\d+/\\d+_[\\da-f]{32}_)(?!large)[^\\.]+", "to": "$1large", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/130svfu/comment/jxydqur\n\nEXAMPLES\nhttps://www.23hq.com/tag/church?page=3\nhttps://www.23hq.com/photogroup/wgt/photos?orderby=posting_date&page=5\nhttps://www.23hq.com/photogroup/Iceland/user/MickPt?orderby=posting_date&page=8" }, "220-volt.ru-s": { "link": "220-volt\\.ru/catalog-\\d+/", "res": ":\nvar i = $._.indexOf('<div style=\"display:none;\">');\nif(i<0) {return null; }\nvar t = $._.indexOf('</div>', i);\nif(t<0) {return null; }\nvar res = [];\nvar re = /href=\"([^\"]+)\"/gi\nvar data=$._.substring(i,t);\nvar a = re.exec(data);\nwhile(a)   {\n   res.push([a[1]]);\n   a = re.exec(data);\n}\nreturn res;\n", "note": "Baton34V\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3920#11\nOLD\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3660#7\n\n\nПРИМЕРЫ\nhttps://www.220-volt.ru/catalog/benzopily/\nhttps://www.220-volt.ru/catalog/gazonokosilki/" }, "2GIS.ru": { "img": "^(i\\d+\\.photo\\.2gis\\.\\w+/(?:images|photo-gallery)/\\S+)(?:_\\d+x\\d+\\.)(jpe?g|gif|png)", "to": "$1.$2", "note": "hababr\nhttps://pastebin.com/kKtY7J6Z\nOLD\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1100#5\n\n!!!\nВидео на данный момент не поддерживается.\n\n\nПРИМЕРЫ\nhttps://2gis.ru/moscow/gallery/firm/4504127908875338/photoId/30258560077653165?m=37.615442%2C55.760211%2F16.95\nhttps://2gis.ru/sochi/gallery/route/4222730366606936/photoId/30258560047830220?m=39.724498%2C43.58493%2F18.73" }, "35photo-g": { "link": "^(.+\\.)?35photo\\.pro\\/photo_\\d+\\/(\\?nude=ok)?$", "res": "id=\"mainPhoto\" src=\"([^\"]+)\"", "note": "Baton34V\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=1560#2\n\nПРИМЕРЫ\nhttps://35photo.pro/photo_1334844/#author/1334844\nhttps://35photo.pro/naskens/albums/6699/\nhttps://35photo.pro/nevmerzhitskaya/albums/5981/" }, "3DHentaiX-x-p": { "link": "^3dhentaix\\.com/.+/$", "res": ":\nvar id = $._.match(/id: \\'([^'])+/gm)[0].substring(5);\nvar nonce = $._.match(/nonce: \\'([^'])+/gm)[0].substring(8);\nvar p = this, x = new XMLHttpRequest;\nx.open('POST', 'https://3dhentaix.com/wp-admin/admin-ajax.php');\nx.setRequestHeader(\"Content-Type\", \"application/x-www-form-urlencoded\");\nx.timeout = 3000;\nx.send(\"action=msv-get-sources&id=\"+id+\"&nonce=\"+nonce);\nx.onloadend = function() {\n const resolutions = JSON.parse(this.responseText).sources[\"video-source-0\"];\n p.prepareCaption(p.node, 'Test');\n p.set(resolutions + \"#mp4\");\n}\nreturn null", "note": "Randlai + Baton34V (fix)\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=560#15\nOLD\nhttps://www.reddit.com/r/imagus/comments/uobpsx/comment/i8hr3fc\n\n!!!\nПри наведении ненадолго появляется желтый спиннер - это нормально.\n==\nWhen pointing, a yellow spinner appears briefly - this is normal.\n\n\nEXAMPLES\nhttps://3dhentaix.com/school-girls/\nhttps://3dhentaix.com/uncensored/" }, "3Dtoday.ru": { "link": "^3dtoday\\.ru\\/3d-models\\/([\\w_-]+)\\/([\\w_-]+)\\/([\\w_-]+)", "url": "3dtoday.ru/api/models/show?category=$1&subcategory=$2&model=$3", "res": ":\narr=JSON.parse($._).model;\nvar res=[];\nfor (let i = 0; i < arr.slider_images.length; i++) {\n res.push([\"https:\\/\\/3dtoday.ru\\/\" + arr.slider_images[i].source,arr.name]);\n}\nreturn res;", "img": "3dtoday\\.ru\\/cache\\/\\d+x\\/models\\/images\\/(\\w+\\.\\w+)", "to": "3dtoday.ru/upload/models/images/$1", "note": "Baton34V\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=2900#10\n\nПРИМЕРЫ\nhttps://3dtoday.ru/3d-models/khobbi/avtomobili?sort=new&page=3" }, "4chan-p": { "img": "^(i\\.4cdn\\.org/[\\da-z]+/\\d+)s\\..*", "to": "$1.#jpg png mp4 webm gif#", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/1h6i6c7/comment/m0eye7p/\n!!!\nFor the sieve to work on external links, you need a rule for SMH (see FAQ, p.12).\n\nEXAMPLES\nhttps://boards.4channel.org/an/\nhttps://boards.4channel.org/vr/catalog\nhttps://boards.4chan.org/pol/\nhttps://boards.4chan.org/wsg/catalog" }, "4PDA_video-p": { "link": "^4pda\\.to/forum/dl/post/(\\d+)/.+\\.mp4", "url": "https://4pda.to/forum/index.php?act=attach&id=$1", "res": ":\nreturn $._.match(/<a id=\"\\w+\" href=\"([^\"]+)\" target=\"_blank\">/)[1]+'#mp4';\n", "note": "Baton34V\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1580#9\n\nПРИМЕРЫ\n???" }, "4shared|4s.io-h": { "link": "^(4s(?:\\.io|hared\\.com))/(s|all-images|photo|video)/.+", "res": ":\nif($[2]==='all-images'){\n let l=$._.match(/<a class=\"jsAllImagesNext submit-gray no-line\" href=\"([^\"]+)/)?.[1], m=this._4s_imgs_||[];\n delete this._4s_imgs_;\n m.push(...[...$._.matchAll(/<img class=\"jsImageThumbnailLink\" src=\"([^\"]+)/g)].map(i=>[i[1]]));\n if(l){\n this._4s_imgs_=m;\n return {loop:'https://www.'+$[1]+l};\n }\n return m;\n}\n\nreturn $._.match(/(?:(?:<img id=\"zoom_image\" src|data-link)=\"|[^{]file: ')(https:\\/\\/[^.]+\\.4shared\\.com\\/img\\/[^'\"]+)/)[1]", "img": "^((?:[^.]+\\.)?4shared\\.com/img/[^?]+/)s20(/.*)", "to": "$1s23$2", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/nskd6s5\nOLD\nhttps://www.reddit.com/r/imagus/comments/130svfu/comment/jn8v5j7\n\nПРИМЕРЫ / EXAMPLES\nhttps://www.4s.io/photo/c-dAX9fsea/картинки_со_свечами__7_.html\nhttps://www.4s.io/photo/weqrZWJcea/картинки_со_свечами__9_.html\nhttps://www.4shared.com/all-images/2fZt0j6U/Свечи.html" }, "500px-g": { "img": "^(?:pp?|drs)cdn\\.500px\\.org/photo/.+", "to": ":\nreturn $[0]", "note": "wa-Nadoo\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/l78dgz7\nOLD\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=940#16\n\n\nПРИМЕРЫ / EXAMPLES\nhttps://500px.com/editors\nhttps://500px.com/p/kadirirkin?view=photos\nhttps://500px.com/search?q=yellow&type=photos&sort=relevance" }, "8muses-x-p": { "link": "^(?:comics\\.)?8muses\\.(com/comics|io)/album/.+", "res": ":\nvar i = $._.indexOf('div class=\"gallery\"');\nif(i<0) { return null; }\nvar t = $._.indexOf('</div></a> </div></div>', i);\nif(t<0) t = $._.indexOf('<script src=\"', i);\nif(t<0) { return null; }\nvar res = [];\nvar re = /<img class=\"\\s?lazyload(?:ed)?\" data-src=\"([^\"]+)\"/gi\nvar a = re.exec( $._.substring(i,t) );\nwhile(a) {\n res.push(['https://'+($[1][0]==='i'?'8muses.io'+a[1].replace('/th_','/full_'):'comics.8muses.com'+a[1].replace('/th/','/fl/'))]);\n a = re.exec( $._.substring(i,t) );\n}\nreturn res;", "img": "^((?:comics\\.)?8muses\\.(com|io)/(?:img/data|image)/)th", "to": ":\nreturn $[1]+($[2][0]==='i'?'full':'fl')", "note": "imqswt\nhttps://www.reddit.com/r/imagus/comments/18bz31i/comment/kccr1w0\nOLD\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=2700#4\n\n\nПРИМЕРЫ / EXAMPLES\nhttps://8muses.io/album/Zuleyka-3D-Comics\nhttps://8muses.io/album/Zuleyka-3D-Comics/Fail-Of-Lara\nhttps://comics.8muses.com/comics/album/Bad-Girls-Art-Comics\nhttps://comics.8muses.com/comics/album/MCC-Comics/Trigger-Warning/Issue-9\nhttps://comics.8muses.com/comics/album/Theme-Collections/The-Powerpuff-Girls" }, "9GAG": { "link": "^9gag\\.com/gag/\\w+", "res": ":\nvar jsr=$._.match(/JSON\\.parse\\(\"({.+?})\"\\);<\\/script>/);\nvar json=JSON.parse(jsr[1].replace(/\\\\\"/g,'\"').replace(/\\\\\\\\/g,''));\nif (json.data.post.type=='Animated') return json.data.post.images.image460sv.vp9Url;\nreturn json.data.post.images.image700.webpUrl;", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/o0mvol1\nOLD\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3340#18\n\n\nEXAMPLES\nhttps://www.reddit.com/domain/9gag.com/new/" }, "ADmagazine.ru-m-p": { "img": "^(media\\.admagazine\\.ru/photos/\\w+/master/w_)\\d+(,c_limit/\\S+\\.\\w{3,4})", "to": "$110000$2", "note": "Baton34V\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3700#15\nOLD\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=2840#16\n\nПРИМЕРЫ\nhttps://www.admagazine.ru/interior/interer-s-oblozhki-v-gostyah-u-dekoratora-yulii-akimovoj\nhttps://www.admagazine.ru/article/novaya-domashnyaya-kollekciya-ot-la-doublej?utm_social-type=owned&utm_brand=ad-ru" }, "Adultempire-x-s-p": { "link": "^(adultempire\\.com/)(?:clip/)?(\\d+/)[\\w-]+\\.html", "loop": 1, "res": ":\nif($[0].includes('-toys'))return [...$._.matchAll(/data-bgsrc=\"([^\"]+)/g)].map(i=>[i[1]])\nconst id=$._.match(/player\\/\\?item_id=(\\d+)/)\nreturn `https://trailer.${$[1]}hls/preview/${id?id[1]+'/':''}${$[2]}master.m3u8`", "img": "^([^/]+adultempire\\.com/products/\\d+/\\d+)m.*", "to": "$1h.#jpg jpeg#", "note": "imqswt\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/nt9tbo3\nOLD\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3616#1\n\n\nEXAMPLES\nhttps://www.adultempire.com/194/category/sex-dolls-sex-toys.html\nhttps://www.adultempire.com/best-selling-porn-movies.html\nhttps://www.adultempire.com/385/category/milf-porn-videos.html\nhttps://www.adultempire.com/clips?scene_attribute=390" }, "Aftershock": { "useimg": 1, "img": "\\/files(\\/styles\\/(icon|teaser(large)?|avatar-mini)\\/public)", "dc": 2, "to": "/files", "note": "atorn\nhttps://aftershock.news/?q=node/1031526&full\n\nПРИМЕРЫ\nава­та­ры, ти­зе­ры (из спис­ков, а не из ста­тьи), икон­ки раз­де­лов" }, "AG.ru": { "link": "^ag\\.ru/screenshots/(\\w+/\\d+)", "url": "http://www.ag.ru/screenshots/$1", "res": "<td[^<]*?\\sstyle=\"background:url\\(([^\\)]+)\\)", "img": "^(cdn\\.ag\\.ru\\/media\\/resize)\\/\\d+\\/(-\\/(screenshot|movie)s\\/\\w+\\/\\w+\\.\\w+)", "to": ":\nlet m;\nif($[3]==='movie'){\nm=document.body.outerHTML.match(/window\\.CLIENT_PARAMS\\s*=\\s*({.+?})<\\//)?.[1];\nm=m&&JSON.parse(m).initialState?.game?.movies?.results?.find(i=>RegExp(`${$[2].slice(2)}`).test(i.preview))?.data?.max;\n}\nreturn m ? m : $[1]+'/1920/'+$[2];", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/lf0wn7y\nOLD\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1140#3\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=1560#18\n\nПРИМЕРЫ\nhttps://ag.ru/games/devastationzone-troopers/screenshots\nhttps://ag.ru/games/warlock-2-the-exiled/screenshots" }, "AIBooru-x-q": { "useimg": 1, "link": "^aibooru\\.online\\/posts\\/\\d+", "res": ":\nlet url;\n//if set to false, the largest possible media will be selected rather as opposed to web optimized media\nlet prefer_lowres=false;\nif(prefer_lowres){\n url = ($._.match(/(?:src|large-link\" href)=\"((?=https:\\/\\/cdn)[^\"]+)/) || [])[1];\n}else{\n url = ($._.match(/(?:secure_url\" content|original-link\" href)=\"([^\"]+)/) || [])[1];\n}\nconsole.log(url);\nreturn [url];", "img": "^(?:s?(?:img|thumb|cdn)\\d?\\.|assets\\.)?(aibooru\\.online/+)(?:sample|thumb(?:nail)?|\\d+x\\d+)?/(\\w\\w/\\w\\w)/(?:thumbnail|sample-)?([\\da-f]+).*", "to": "#cdn.$1/original/$2/$3.#png mp4 webm webp jpg gif jpeg#\ncdn.$1sample/$2/sample-$3.#png webp jpg gif jpeg#", "note": "throwawayS251 + imqswt (edit)\nhttps://www.reddit.com/r/imagus/comments/1725bvc/comment/k3y81rr\nOLD\nhttps://www.reddit.com/r/imagus/comments/13fm75l/comment/jjzlfo6\nhttps://www.reddit.com/r/imagus/comments/11s43t5/aibooruonline_sieve_update\n\n!!!\nIn the sieve, you can select the image res:\n//if set to false, the largest possible media will be selected rather as opposed to web optimized media\nlet prefer_lowres=false;\n\nEXAMPLES\nhttps://aibooru.online/artists/903\nhttps://aibooru.online/posts?tags=bangs&z=2\nhttps://aibooru.online/posts?tags=animated&z=5\nhttps://aibooru.online/posts/45827?q=parent%3A45827" }, "AIRBNB-s": { "link": "^airbnb\\.(com|de|it|es|fr|com.br|dk|co.uk|ru|pl|co.kr|cz|hu|at|pt|gr|com.tr|nl|se|com.tw|com.hk|com.sg|co.id|com.my|com.au|jp|is|no|ch|co.nz|ca|be|fi|ie|cat|co.in|cn|mx|cl|co.cr|co.ve|com.ar|com.bo|com.bz|com.co|com.ec|com.gt|com.hn|com.ni|com.pa|com.pe|com.py|com.sv|com.mt|gy|ae|co.il|co.th|com.ph|com.vn|co.za|lu|com.hr|com.kh|com.ua|la|kg|al|am|az|ba|com.ee|com.ro|lt|lv|me|rs|si|org)/(rooms|luxury).*/\\d+(\\?|$)", "res": ":\nlet title = $._.match(/<meta property=\"og:title\" content=\"(.+?)\"/)?.[1] || '';\nvar pics = /\"mediaItems\":(\\[.+?\\])/.exec($._);\npics = JSON.parse(pics[1]);\npics = pics.map(p => [p.baseUrl.replace('/pictures/','/pictures/') + '?im_w=1920', title + ' ‖ ' + p.accessibilityLabel]);\n\nreturn pics;", "img": "^(..\\.muscache\\.com/im/pictures/.+\\.jpe?g\\?im_w)=\\d+", "to": "$1=1920", "note": "hababr\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/n7e7nej\nOLD\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=660#4\n\nПРИМЕРЫ / EXAMPLES\nhttps://www.airbnb.ru/s/Турция/homes?flexible_trip_lengths[]=one_week&place_id=ChIJcSZPllwVsBQRKl9iKtTb2UA&date_picker_type=flexible_dates&flexible_trip_dates[]=june&refinement_paths[]=/homes&source=structured_search_input_header&search_type=filter_change\nhttps://www.airbnb.ru/s/Париж/homes?place_id=ChIJD7fiBh9u5kcRYJSMaMOCCwQ&refinement_paths[]=%2Fhomes&date_picker_type=FLEXIBLE_DATES&flexible_trip_lengths[]=WEEKEND_TRIP&flexible_trip_dates[]=september&search_type=HOMEPAGE_CAROUSEL_CLICK" }, "Airplane-Pictures-g": { "img": "^((?:cdn\\.)?airplane-pictures\\.net\\/images\\/uploaded-images\\/\\d{4}\\/\\d+\\/\\d+\\/\\d+)\\w+(\\.jpg)$", "to": "$1$2", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/o0mvol1\nOLD\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=1680#8\n\n!!!\nTo use this sieve, you need to install the uBO extension (uBlock Origin) and add the following filters to it (My Filters tab):\nairplane-pictures.net##.is-align-items-end.is-overlay.card-footer\nairplane-pictures.net##.is-overlay.card-content\n\nEXAMPLES\nhttps://airplane-pictures.net/\nhttps://airplane-pictures.net/day" }, "Alamy-g-p": { "link": "^alamy.com/[^.]+-(?:image)?\\d+\\.html", "res": "=\"og:image\" content=\"([^\"]+)\n<title>([^<]+)", "note": "https://www.reddit.com/r/imagus/comments/14ntai8/comment/jqbx2xe\n\nEXAMPLES\nhttps://www.alamy.com/stock-photo/red.html?sortBy=relevant\nhttps://www.alamy.com/stock-photo/green-energy.html?sortBy=relevant\nhttps://www.alamy.com/stock-photo/green-energy.html?imgt=2&sortBy=relevant" }, "Alibaba-s": { "link": "^(?:[a-z-]+\\.)?(alibaba\\.com/)product-detail/.+[_-]+(\\d+)\\.html.*", "url": ": this.alibaba_base ? `https://www.${$[1]}event/app/mainAction/desc.htm?detailId=${$[2]}` : $[0]", "res": ":\nif($._[0]!=='{'&&!this.alibaba_base){\nthis.alibaba_base=JSON.parse($._.match(/<script type=\"application\\/ld\\+json\">([^<]+)/s)?.[1]||'[]').flatMap(i=>i.contentUrl?[[i.contentUrl,[i.name,i.description].filter(Boolean).join(' | ')]]:[]);\nreturn {loop:$[0]}\n}\nlet m=this.alibaba_base;\ndelete this.alibaba_base;\n$=JSON.parse($._).data.productHtmlDescription;\n$=new DOMParser().parseFromString($,'text/html');\n$=[...$.querySelectorAll('img[data-src]')].map(i=>[i.getAttribute('data-src')]);\nm=m.concat($)\nreturn [...new Map(m)]", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/1hywbs0/comment/m72mzbv\n\n\n!!!\n- Курсор следует наводить на название товара;\n- Фото товара от покупателей в их отзывах на странице товара не работают.\n==\n- The cursor should be placed over the product name;\n- Product photos from customers in their reviews on the product page don't work.\n\n\nПРИМЕРЫ / EXAMPLES\nhttps://www.alibaba.com/trade/search?spm=a27aq.13929342.IndustryCategory.33.3eae13b0MpJ8Vo&CatId=100001773&SearchText=Garden+Buildings&language=en&indexArea=product_en\nhttps://www.alibaba.com/trade/search?fsb=y&IndexArea=product_en&CatId=&tab=&SearchText=water+filter&viewtype=\nhttps://russian.alibaba.com/trade/search?fsb=y&IndexArea=product_en&CatId=&tab=all&SearchText=philips+наушники&viewtype=\nhttps://russian.alibaba.com/g/fan-motor-impeller.html" }, "ALIEXPRESS-s": { "link": "^(?:\\w\\w\\.)?(aliexpress\\.(com|[a-z]{2})/(item/|(?:[^/?&]+[?&])*productIds=))(?:[\\w-]*?/)?(\\d+).*", "url": ": $[3]==='item/' ? `//${$[1]+$[4]}.html` : 'https://aliexpress.'+$[2]+'/aer-jsonapi/v1/bx/pdp/web/productData?productId='+($[4]?.length?$[4]:this.node.closest('[class^=\"product-snippet_ProductSnippet__container\"]').getAttribute('exp_product'))", "res": ":\nconst r = [];\n\nif($._[0] === '{'){\nconst data = JSON.parse($._).data;\nr.push([data?.skuInfo?.propertyList?.[0]?.values?.[0]?.imageMainUrl?.replace(/_\\d+x\\d+\\..+/,'')]);\ndata.gallery?.forEach(i=>r.push([i.videoUrl||i.imageUrl,data.description]));\n} else {\nlet json = $._.match(/Data\\s*=\\s*([^;]+)/)?.[1];\njson = json ? JSON.parse(json).imagePathList : [];\njson.forEach(i=>r.push([i,'']))\n}\ntry {\n const page = (new window.DOMParser()).parseFromString($._,'text/html');\n let imgs = Array.from(page.querySelectorAll('div[class^=\"gallery_Gallery__picture\"] > picture > img, div[class^=\"gallery_Gallery__video\"] > video'));\n if (imgs.length<1) {\n imgs = Array.from(page.querySelectorAll('div[class^=\"Product_GalleryBarItem\"] > img, div[class^=\"ProductDescription-module_wrapper\"] img'));\n }\n for (const i of imgs) {\n // filter out images inside links\n if (i.parentElement.nodeName === 'A') continue;\n let url = i.attributes.src.value.replace(/_\\d+x\\d+\\.(jpe?g|png)$/, '');\n url = url.replace('`','');\n r.push([url, '']);\n }\n const id = $[4];\n const review_json=JSON.parse($._.match(/\"reviews\":(\\[.+?\\]),\"resolveParams\"/)?.[1]||'{}');\n if(!review_json?.[0]){\n const x = new XMLHttpRequest;\n x.open('GET', 'https://feedback.aliexpress.com/pc/searchEvaluation.do?productId='+id+'&page=1&pageSize=50', false);\n x.send();\n JSON.parse(x.responseText).data.evaViewList.forEach(f=>{\n f.images.forEach(p => r.push([p,f.buyerFeedback]));\n });\n } else {\n review_json.forEach(i=>i.root?.images?.forEach(x=>r.push([x.url,i.root?.text])));\n }\n\n} catch (e) {}\n\nreturn r;", "img": "^(?:([^/]+\\.ali(?:cdn|express-media)\\.com/(?:@\\w+/)?)(?:kf/)?(.+)_\\d+x\\w+\\.(?:jpe?g|png|webp)|(aliexpress\\.(?:com|[a-z]{2})/one-price\\?)bucketId=&debug=true&releaseId=).*", "loop": 2, "to": ":\nif($[1])return $[1]+'#kf/ #'+$[2];\nconst n=this.node.closest('[class^=\"product-snippet_ProductSnippet__container\"]')?.getAttribute('exp_product');\nreturn n ? `https://${$[3]}productIds=${n}` : ''", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/1hywbs0/comment/m72mzbv\nOLD\nhttps://www.reddit.com/r/imagus/comments/1fpk0ld/comment/lqf6hvc\nhttps://www.reddit.com/r/imagus/comments/1fpk0ld/comment/lprt8m3\n\n\n\n!!!\nКурсор желательно наводить на название товара. Данный фильтр показывает не только фото товара, но и фотографии в отзывах покупателей с текстами их отзывов - но только если пользователь авторизован и прошел проверку (слайдер) + в домене COM может не работать.\n==\nIt is desirable to hover the cursor over the name of the product. This sieve shows not only photos of the product, but also photos in customer reviews with the texts of their reviews - but only if the user is authorized and has passed the check (slider) + it may not work in the COM domain.\n\n\nПРИМЕРЫ / EXAMPLES\nhttps://aliexpress.ru/wholesale?SearchText=фонарик&g=y&page=1\nhttps://aliexpress.com/w/wholesale-Shockproof-Armor-Case.html\nhttps://www.aliexpress.com/w/wholesale-TV.html?SearchText=TV&catId=200002397" }, "ALIEXPRESS_TAOBAO-s": { "img": "^((?:img[^.]*|g(?:[^.]*\\.?){1,2}?|asearch|\\w\\w\\d\\d)\\.(?:taobao|tb|ali)cdn\\.c(?:om|n)/)(.+)_\\d+x\\d+.+", "to": "$1$2" }, "Allanal|Analonly|Nympho|Swallowed_trailers-x-p": { "link": "(?:tour.)?(?:allanal|analonly|nympho|swallowed|trueanal).com/(?:view|scenes)/.*", "res": "(?:src|href)=\"([^\"]+)\" (?:type|class)=(?:'video/mp4'|\"download-trailer\")", "note": "gpl2731\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1163&limit=1&m=1#1\n\nEXAMPLES\nhttps://tour.allanal.com/scenes\nhttps://tour.analonly.com/scenes\nhttps://tour.nympho.com/scenes\nhttps://tour.nympho.com/models/emma-starletto\nhttps://tour.swallowed.com/scenes" }, "Allegrolokalnie.pl-s|Allegroimg-CDN": { "link": "^allegro(lokalnie)?\\.pl/(?:oferta|produkt)/(?:\\w+-)+\\w+", "url": ": (!$[1]&&!location.host.includes('lokalnie')?'data:,':'')+$[0]", "res": ":\nif($.base[0]==='d'){\nconst x=new XMLHttpRequest();\nx.open('GET',$[0],false);\nx.send();\n$._=x.responseText;\n}\n$=$[1] ? new DOMParser().parseFromString($._,'text/html').querySelector('[data-photo-carousel]')?.getAttribute('data-photo-carousel') : $._.match(/\"images\":(\\[[^\\]]+\\])/)?.[1];\n$=$&&JSON.parse($);\n$=$?.items||$;\nreturn $?.map(i=>[i.original])||this.find({src:this.node.src})||''", "img": "^(\\w\\.allegroimg\\.com/)s\\d+x\\d+/", "to": "$1original/", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/1qvpfxo/comment/o3oq5q7\nOLD\nhttps://www.reddit.com/r/imagus/comments/130svfu/comment/jn8v5j7\n\nEXAMPLES\nhttps://www.reddit.com/r/imagus/comments/1qvpfxo/allegrolokalnie/\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1360#11" }, "AlphaCoders-g-p": { "img": "^(\\w*\\.alphacoders\\.com/.+)thumb(?:big)?-(?:\\d+-)?(.+\\.)(\\w{3,4})$", "to": "$1$2#$3 gif png jpg jpeg mp4#", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/lgkwer7\nOLD\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3720#11\n\n\nПРИМЕРЫ / EXAMPLES\nhttps://alphacoders.com/anime-wallpapers\nhttps://alphacoders.com/dragon\nhttps://alphacoders.com/users/profile/239750/KanetyKun" }, "AlternativeTo": { "link": "^alternativeto\\.net/software/[^/]+/about/", "res": ":\nconst result = JSON.parse($._.match(/\\\\\"screenshots\\\\\":(\\[{.+?}\\]),\\\\\"type/)[1].replace(/([\\\\])?\\\\/g, '$1')).filter((i) => i.type === 'Screenshot').map((i) => [i.signedImages[0].signedURL, i.description])\nreturn result.length ? result : null", "img": "^d4\\.alternativeto\\.net.+\\/(\\w+)\\.\\w+$", "to": ":\nconst m=JSON.parse(document.documentElement.outerHTML.match(RegExp(`\\\\[[^\\\\]]+${$[1]}[^\\\\]]+\\\\]`))[0].replace(/([\\\\])?\\\\/g, '$1'));\nreturn m[0].signedURL\n\n/* Old code. May still be useful\nconst elem = document.createElement('script')\nelem.textContent = `{\n const s = JSON.stringify([\n window.__NEXT_DATA__.props.pageProps.mainItem?.images,\n window.__NEXT_DATA__.props.pageProps.items?.map((i) => i.images),\n window.next.router.components['/software/[urlName]']?.props.pageProps.mainItem?.images,\n window.next.router.components['/software/[urlName]']?.props.pageProps.items?.map((i) => i.images),\n window.next.router.components['/software/[urlName]/about']?.props.pageProps.mainItem?.images,\n window.next.router.components['/software/[urlName]/about']?.props.pageProps.items?.map((i) => i.images)\n ].filter(Boolean))\n const m = s.match(new RegExp('fileName\":\"([^\"]+)\",\"type\":\"(Screenshot|Icon)\"[^}]+${$[1]}'))\n sessionStorage.setItem('imagus-file', m[1] + ';;' + m[2])\n document.currentScript.remove()\n}`\ndocument.head.appendChild(elem)\nconst [ file_name, file_type ] = sessionStorage.getItem('imagus-file').split(';;')\nsessionStorage.removeItem('imagus-file')\nreturn `https://d2.alternativeto.net/dist/${file_type === 'Icon' ? 'icons' : 's'}/${file_name}?format=${/\\.gif$/.test(file_name) ? 'gif' : 'png'}` */", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/o0mvol1\nOLD\nhttps://www.reddit.com/r/imagus/comments/130svfu/comment/jyduj9s\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1500#15\n\n\n!!!\nThe sieve works on the logos/names of the programs in the search results.\n\n\nEXAMPLES\nhttps://alternativeto.net/software/pdf-expert/\nhttps://alternativeto.net/software/wiztree/?platform=windows&sort=addeddate" }, "AmateurAlbum-x": { "link": "amateuralbum\\.net\\/showphoto\\.php\\?cat=\\d{1,5}&photo=\\d{1,10}.*", "res": ":\nlet imgurl=$._.match(/img id=\"resizable\".*?src=\"(.*?)\"/)[1];\n\nlet titlematches = $._.match(/class=\"boldfont\">([^<]*)<\\/div>/);\n\nlet title;\nif(titlematches != null) {\n title = titlematches[1];\n}\nelse {\n let titlematchesstyle2 = $._.match(/<title>([^<]*)<\\/title>/);\n title = titlematchesstyle2[1];\n}\n\nreturn [imgurl, title]; ", "note": "iceiller9999\nhttps://www.reddit.com/r/imagus/comments/102rqm3/comment/j32iepd\nOLD\nhttps://www.reddit.com/r/imagus/comments/uw97ft/comment/iarowuj\n\nEXAMPLES\nhttps://www.amateuralbum.net/showgallery.php?cat=524\nhttps://www.amateuralbum.net/showgallery.php?cat=535" }, "AMAZON-s": { "link": "^amazon\\.(com|de|fr|it|ca|co\\.uk|com\\.mx|co\\.jp|sg|ae|br|com\\.au|nl|in|sa|tr|se|pl)/(?:\\S+/dp|gp/slredirect|\\S+/product-reviews)/(\\S+?)(?:/|$)", "res": ":\n// debugger;\n\nlet rg = /\\._[^./]+(?=\\.)/;\nif (!$[0].includes('/product-reviews')) {\n let title = ($._.match(/<title>([^<]+)<\\/title>/)?.[1] || '').replace(new RegExp(`amazon\\\\.${$[1]}: ?`, 'i'), '');\n let data = JSON.parse($._.match(/var obj = jQuery\\.parseJSON\\('(.+)'\\)/)?.[1] || '{}');\n let currentColor = Object.entries(data.colorToAsin).find(([k, v]) => v.asin === data.mediaAsin)?.[0];\n let imgs = currentColor ? data.colorImages[currentColor] : Object.values(data.colorImages).flat(1);\n imgs = imgs.map(i => typeof i === 'string' ? i : (i?.hiRes || i?.large)).filter(Boolean);\n\n if (!imgs?.length) {\n // imgs = Array.from((new DOMParser().parseFromString($._, \"text/html\")).querySelectorAll('#altImages .imageThumbnail img')).map(i => i.src);\n imgs = Array.from($._.matchAll(/\"hiRes\":\"([^\"]+)\"/g)).map(i => i[1]);\n }\n\n imgs = imgs.map(i => [i?.replace(rg, ''), title]);\n\n if (data.videos?.length) {\n data.videos.forEach(v => imgs.push(['', `<imagus-extension type=\"videojs\" url=\"${v.url}\"></imagus-extension>${v.title}`]));\n }\n\n this.amazon_data = imgs;\n return { loop: `https://amazon.${$[1]}/item/product-reviews/${$[2]}/ref=cm_cr_arp_d_viewopt_srt?mediaType=media_reviews_only&sortBy=helpful` };\n}\n\nconst doc = new DOMParser().parseFromString($._, \"text/html\");\nlet imgs = this.amazon_data;\n\nconst distr = Array.from(doc.querySelectorAll('#histogramTable [role=\"progressbar\"]'))\n .reverse().map(el => Number(el.attributes['aria-valuenow']?.value));\nconst distrKeys = [5, 4, 3, 2, 1];\nimgs[0][1] =\n `<imagus-extension type=\"sidebar\"><div>\n ${css()}\n <div class=\"valuation\">Rating: ⭐ ${doc.querySelector('[data-hook=\"rating-out-of-text\"]')?.innerText} • ${doc.querySelector('[data-hook=\"total-review-count\"]')?.innerText}</div>\n <div class=\"valuation-distr\">\n <span>${distrKeys.map(k => `${k} ⭐`).join('<br>')}</span>\n <span>${distrKeys.map(k => `${distr[k-1]}%`).join('<br>')}</span>\n <span>${distrKeys.map(k => `<progress max=\"100\" value=\"${distr[k-1]}\">${distr[k-1]}%</progress>`).join('<br>')}</span>\n </div>\n <p></p>\n ${Array.from(doc.querySelectorAll('.view-point-review, [data-hook=\"review\"]')).map(getReviewHtml).join('')}\n </div></imagus-extension>${imgs[0][1]}`;\n\nArray.from(doc.querySelectorAll('#cm_cr-review_list > .review')).forEach(r => {\n let text = r.querySelector('.review-text-content')?.innerText.replace('The media could not be loaded.', '').trim();\n let sbar = `<imagus-extension type=\"sidebar\"><div>${css()}${getReviewHtml(r)}</div></imagus-extension>`;\n let imgs = Array.from(r.querySelectorAll('.review-image-container img')).map(i => [i.src.replace(rg, ''), sbar]);\n let videos = Array.from(r.querySelectorAll('[data-video-url]')).map(v =>\n ['', `<imagus-extension type=\"videojs\" url=\"${v.dataset.videoUrl}\"></imagus-extension>${text}`]\n );\n this.amazon_data.push(...imgs, ...videos);\n});\n\nthis.TRG.IMGS_ext_data = imgs;\nreturn { loop: 'imagus://extension' };\n\nfunction getReviewHtml(el) {\n return `<p>\n <span><big>${el.querySelector('.view-point-title')?.innerText || ''}</big></span>\n <span>${el.querySelector('i.review-rating')?.outerHTML || ''}\n <b> ${(el.querySelector('.review-title > :last-child') || el.querySelector('.review-title'))?.innerText || ''}</b>\n </span>\n <span>${el.querySelector('.review-date')?.innerText || ''}</span>\n <span>${el.querySelector('.a-row.a-spacing-top-mini, [data-hook=\"review-body\"]')?.innerText.replace('The media could not be loaded.', '')\n .trim().replace(/\\s*\\n\\s*(?=\\n)/g, '')}</span>\n <small>${el.querySelector('.review-votes, [data-hook=\"helpful-vote-statement\"]')?.innerText.trim() || ''}</small>\n </p>`;\n}\n\nfunction css() {\n return `<style>\n #imagus-extension > div { display: flex; flex-direction: column; row-gap: 10px; padding-top: 6px; }\n #imagus-extension .valuation-distr { display: flex; }\n #imagus-extension .valuation-distr > * { padding: 4px 6px; border: 1px solid gray; margin: 0 -1px 0 0; text-align: right; }\n #imagus-extension p { border-bottom: 1px solid #80808080; padding: 0 0 10px; display: flex; flex-direction: column; row-gap: 6px; margin: 0; word-break: break-word; }\n #imagus-extension p span { display: flex; }\n #imagus-extension i { flex-shrink: 0; }\n </style>`;\n}", "img": "^((?:(?:images\\.|(?:images-[a-z]{2}\\.ssl-|(?![gz]-)[^.?]+\\.)images-)amazon|ia\\.media-imdb|m\\.media-amazon)\\.com/images/[^/]/[^.]+(?:(?!\\.[A-Za-z]{3,4}$)\\.[^A-Z_.]+)*)(?:$|(?!_(?:CB|V)\\d{4,}_\\.)[^?]*\\.([^?]*).*)", "to": ":\nvar x=$[2]||'#jpg png#'\nreturn '#' + $[1] + '.' + x +'\\n'+$[1] + '._SY1024_SX1024_.'+x", "note": "hababr\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/mdaai6e\nOLD\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=2780#18\nhttps://www.reddit.com/r/imagus/comments/1bkb9o3/comment/kw60y6p\n\n\n\n!!!\n- Данный фильтр показывает фото и комментарии покупателей, а также рейтинг оценок в боковой панели слева.\n- Чтобы фильтр работал с некоторыми изображениями, необходимо установить расширение uBO и добавить в него следующий фильтр (вкладка \"Мои фильтры\"):\namazon.*##._Y3Itb_media-thumbnail-overlay_1te5m.a-section\n==\n- This sieve shows customer photos and comments, as well as an evaluation rating in the sidebar on the left.\n- To make the sieve work with some images, you need to install the uBO (uBlock Origin) extension and add the filter to it. uBO Settings > My Filters > Add this line:\namazon.*##._Y3Itb_media-thumbnail-overlay_1te5m.a-section\nhttps://www.reddit.com/r/imagus/comments/1iv29pi/comment/me2p5zd\n\nПРИМЕРЫ / EXAMPLES\nhttps://www.amazon.com/dp/B096WKKK2K?ref=ods_tab_dpcc_ttl_nkt_nrc_ucc\nhttps://www.amazon.com/s?k=face&crid=1L1DOLV5FNZYA&sprefix=face%2Caps%2C263&ref=nb_sb_noss_1\nhttps://www.amazon.co.uk/b/?_encoding=UTF8&node=430660031&bbn=560798&ref_=Oct_d_odnav_d_560836_1&pd_rd_w=emvQW&content-id=amzn1.sym.7414f21e-2c95-4394-9a75-8c1b3641bcea&pf_rd_p=7414f21e-2c95-4394-9a75-8c1b3641bcea&pf_rd_r=PFS8RJSQS0SJJ2WAK5BV&pd_rd_wg=yf44y&pd_rd_r=b5067590-9946-4ebd-a429-4cb1cd879c8c\nhttps://www.amazon.com/gp/new-releases/home-garden/3737201/ref=zg_bsnr_nav_home-garden_3_289814" }, "Aminus3-g": { "img": "^((?:aminus3(?:\\.s3\\.amazonaws)?|img\\.aminus2)\\.com/image/g\\d+/u\\d+/i\\d+/[\\da-f]{32}_)(?!large)[^\\.]+(.+)", "to": "$1giant$2", "note": "EXAMPLES\nhttps://www.aminus3.com/featured-photography/?page=3\nhttps://www.aminus3.com/remix/?sort=recent" }, "AnalVids-x-q-p": { "link": "^analvids\\.com/watch/\\d+/.+", "res": ":\nmax_resolution = 1080;\n\nlet media_urls=[...$._.matchAll(/<source src=\"([^\"]+)\" size=\"(\\d+)\">/g)];\nmedia_urls=media_urls.filter(i=>Number(i[2])<=max_resolution).sort((a,b)=>Number(a[2])-Number(b[2])).map(i=>i[1]);\nreturn media_urls.length ? [[['#'+media_urls.pop(),media_urls?.[0]],'']] : ''\n", "note": "imqswt\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/lubsx2n\nOLD\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3780#21\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3600#16\n\n\nChange max_resolution to your max preferred resolution.\ne.g.\n1080 will result in 1080p video\n900 will result in 720p video\n\nEXAMPLES\nhttps://www.analvids.com/" }, "AnandTech": { "img": "^(images\\.anandtech\\.com/[^/]+/\\d+/[^?]+)_(?:thumb|\\d+px|\\d+x\\d+|carousel)", "to": "$1", "note": "EXAMPLES\nhttps://www.anandtech.com/" }, "Ancensored-x-p": { "link": "^(ancensored\\.com/)clip/[^/]+/[^/]+/([\\da-f]+).*", "url": ": $[2] ? '//'+$[1]+'clip/-/-/'+$[2] : this.node.closest('a').href", "res": ":\nif($[2])return [$._.match(/<source type=\"video\\/mp4\"\\s+src=\"([^\"]+)/)?.[1]||'', $._.match(/=\"description\" content=([^\"]+)/)?.[1]||''];\n\n$._=$._.match(RegExp(`href=\"/([^\"]+)\" title=\"[^\"]*\" itemprop=\"contentUrl\" data-index=\"\\\\d+\" data-size=\"\\\\d+x\\\\d+\"><img src=\"/files/${$[3]}`))\nreturn $._[1] ? '//'+$[1]+$._[1] : ''\n", "img": "^(ancensored\\.com/)files/(?:new_video/preview_sprite/\\d+/sprite-([^.]+).*|(images/\\d+/thumb_[a-f0-9]+)\\.png$)", "note": "imqswt\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/l9liuzp\nOLD\nhttps://www.reddit.com/r/imagus/comments/ecqqkd/comment/feyd0cn/\n\n!!!\n- Sometimes a website page does not respond to the Imagus sieve. Reloading the page helps.\n- В РФ может понадобиться надежно работающий прокси, желательно американский.\n\nEXAMPLES\nhttp://ancensored.com/newvideo/page/8\nhttp://ancensored.com/updates/content\nhttp://ancensored.com/movies/pics/2014-iCloud-Leak-Scandal\nhttp://ancensored.com/nude-appearance/voice-from-the-stone/Emilia-Clarke/" }, "Anime-Pictures-g": { "link": "^anime-pictures\\.net/(pictures/view_)?posts?/\\d+\\?lang=", "res": "href=\"([^\"]+/pictures/(?:download|get)_image/[^\"]+)\"", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/lt55y97\n\n\nПРИМЕРЫ\nhttps://anime-pictures.net/pictures/view_posts/0?lang=ru\nhttps://anime-pictures.net/posts?page=4&order_by=date&ldate=0&lang=ru" }, "AOL-m-p": { "img": "^([os]\\d?\\.aolcdn\\.com/(?:(?:images/)?dims|hss|photo)(?:[^/]*/|\\?(?:[^&]*&)*?image_uri=([^&]+)).*|r\\.search\\.aol\\.com/(?:[^/]+/)*?RU=(http[^/]+).*)", "dc": 2, "loop": 2, "to": ":\nif($[2]||$[3])return $[2]||$[3]\nvar m=$[1].match(/(https?)(?::\\/\\/?|%3A(?:%2F){1,2})(?!.+https?:\\/)(.+)/)\nreturn m ? m[1]+'://'+m[2] : $[1]", "note": "EXAMPLES\nhttps://www.aol.com/news/?icid=aol.com-nav\nhttps://www.aol.com/entertainment/?icid=aol.com-nav\nhttps://www.aol.com/sports/?icid=aol.com-nav" }, "APKPure": { "link": "^apkpure\\.com/[\\w-%]+/[\\w.]+", "res": ":\nlet i = $._.indexOf('<div class=\"screenbox\">');\nif(i<0) { return null; }\nlet t = $._.indexOf('</div>', i);\nif(t<0) { return null; }\nlet res = [];\nlet re = /a href=\"([^\"]+)\"/gi\nlet data=$._.substring(i,t);\nlet a = re.exec(data);\nwhile(a) {\n if (a[1].startsWith('http')) {\n res.push([a[1]]);\n }\n a = re.exec(data);\n}\nreturn res;", "note": "Baton34V\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1880#17\nOLD\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=640#12\n\nПРИМЕРЫ / EXAMPLES\nhttps://apkpure.com/search?q=Metro&t=app\nhttps://apkpure.com/search?q=player&t=app" }, "APNews-m-q-p": { "link": "^apnews\\.com/(article|video)/[\\w-]+", "res": ":\nif($[1]==='video'){\nconst max_resolution = 1080 // <- Set maximum video resolution\nlet x = new XMLHttpRequest()\nx.open('Get','https://cdn.jwplayer.com/v2/media/'+$._.match(/data-media-id=\"([^\"]+)/)[1],false)\nx.send()\nx = JSON.parse(x.responseText).playlist[0]\nconst t = [x.title,x.description].filter(Boolean).join(\" | \")\nx = x.sources\nx = x.filter(i=>i.type==='video/mp4'&&i.height<=max_resolution).sort((a,b) => b.height-a.height)\nreturn [[['#'+x.shift().file,x.filter(i=>i.height<=540)[0]?.file],t]]\n} else {\nlet m = [...new Map([...$._.matchAll(/<img class=\"Image\" alt=\"([^\"]+)\"\\s*data-flickity-lazyload-srcset=\"[^?]+\\?url=([^\\s\"]+)/g)].map(i=>[i[2].replace(\"https%3A%2F%2F\",\"https://\").replaceAll(\"%2F\",\"/\"),i[1]]))]\nif(m&&m.length)m.unshift(m.splice(m.findIndex(i=>i[0]===($._.match(/\"ImageObject\",\"height\":\\d+,\"url\":\"[^?]+\\?url=([^\"]+)/)||[,''])[1].replace(\"https%3A%2F%2F\",\"https://\").replaceAll(\"%2F\",\"/\")),1)[0])\nif(!(m&&m.length)){\nm = /\"og:image\" content=\"[^?]+\\?url=([^\"]+).+?\"og:image:alt\" content=\"([^\"]+)/gs.exec($._)\nm = m ? [m[1].replace(\"https%3A%2F%2F\",\"https://\").replaceAll(\"%2F\",\"/\"),m[2]] : ''\n}\nreturn m\n}", "img": "^dims\\.apnews\\.com/dims[^?]+\\?url=https%3A%2F%2F([^%]+%[a-f0-9/%]+)", "dc": 2, "loop": 2, "to": ":\nconst n = this.node.offsetParent.parentNode.attributes.url?.textContent\nreturn n&&/\\/video\\//.test(n) ? n : '//'+$[1]", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z7c5sl/comment/jqtwyhf\nOLD\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1500#15\n\n!!!\nВ фильтре можно определить качество видео - установите нужное значение в этой строке:\nconst max_resolution = 1080 // <- Set maximum video resolution\nМожно переключать качество видео клавишей TAB.\n==\nIn the sieve, you can determine the quality of the videos - set the desired value in this line:\nconst max_resolution = 1080 // <- Set maximum video resolution\nYou can switch the video quality by pressing TAB.\n\n\nEXAMPLES\nhttps://apnews.com/hub/travel\nhttps://apnews.com/hub/sports\nhttps://apnews.com/video" }, "Apple_music": { "useimg": 1, "link": "^music\\.apple\\.com/\\w\\w/(?:album|music-video)/[^/]+/\\d+", "res": "<meta property=\"og:(?:(?![^\\n]+og:video)image:secure_url|video)\" content=\"([^\"]+)\">", "img": "^is\\d(?:-ssl)?(\\.mzstatic\\.com/)image/thumb/((?!Video\\d)\\w+/(?:[a-z\\d]{2}/){4}[a-f\\d-]{36}/[^/.]+(?:\\.\\w+){1,3})/.*", "to": "a1$1$2", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/1hjkmza/comment/m3unter\nOLD\nhttps://www.reddit.com/r/imagus/comments/1hjkmza/comment/m3c6dhb\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3560#9\n\n\n!!!\nIn order for the sieve to work in playlists, you need to install the uBO (uBlock Origin) extension and add the filter to it. uBO Settings > My Filters > Add this line:\nmusic.apple.com##.svelte-113if15.songs-list-row__play-button-wrapper\nmusic.apple.com##.svelte-nvj7sn.track-lockup__play-button-wrapper\n\n\nПРИМЕРЫ / EXAMPLES\nhttps://music.apple.com/ru/search?term=Beautiful\nhttps://music.apple.com/ca/artist/kiko-loureiro/202098188/see-all?section=singles\nhttps://music.apple.com/ru/playlist/eminem-%D0%B3%D0%BB%D0%B0%D0%B2%D0%BD%D0%BE%D0%B5/pl.9200aa618dc24867b2aa7f00466fd404" }, "Apteka.ru-s": { "link": "^apteka\\.ru/product/.*/", "res": ":\n$=JSON.parse($._.match(/window\\.__INITIAL_STATE__\\s*=\\s*({.+?})</)[1]).product.groupinfo.groupItems[0].itemInfos[0].fileInst;\nreturn $.map(i=>[i.photos?.original])", "img": "^(images\\.apteka\\.ru\\/)medium(_.+\\.jpeg)", "to": "$1original$2", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/lay54no\nOLD\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1660#20\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=2860#3\n\n\nПРИМЕРЫ\nhttps://apteka.ru/search/?q=витамины" }, "Arca-p": { "link": "^(arca\\.live/b/\\w+/\\d+).*", "url": "$1", "res": ":\n$=[...new DOMParser().parseFromString($._,\"text/html\").querySelector('div[class=\"article-body\"]')?.querySelectorAll('video,iframe,img:not([class=\"twemoji\"])')]||[];\nif($.some(i=>i.nodeName==='IFRAME')){\nthis.TRG.IMGS_ext_data=$.map(i=>i.nodeName==='IFRAME'?['',`<imagus-extension type=\"iframe\" url=\"${i.src}\"></imagus-extension>`]:[i.src,'']);\nreturn {loop:'imagus://extension'};\n}\nreturn $.map(i=>[i.src])", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/1da2doe/comment/l7htf31\nOLD\nhttps://www.reddit.com/r/imagus/comments/172yg3u/comment/k43f7ro\nhttps://www.reddit.com/r/imagus/comments/16qjg5w/comment/k1yn6rt\n\nEXAMPLES\nhttps://arca.live/b/singbung/108176176" }, "Artvee-g": { "link": "^artvee\\.com/(dl|artist)/[\\w-]+/", "url": ": $[0]+($[1][0]==='a'?'?per_page=70':'')", "res": ":\nif($[1]==='artist'){\nconst t=$._.match(/description blrclass\"><p>(.+?)<\\/div>/s)?.[1].replace(/<\\/?p>/,'')||'';\nreturn [...$._.matchAll(/class=\"lazy\"\\s+src=\"(https:\\/\\/[^\\/]+\\/)[a-z]+(\\/\\d+[a-z]{2})([^\"]+)/g)].map(i=>[['#'+i[1]+'sdl'+i[2]+'sdl'+i[3],i[1]+'sftb'+i[2]+i[3]],t])\n}\n$=[...$._.matchAll(/(?:rel=\"nofollow\" href|\"og:image\" content)=\"([^\"]+)\"(?:>Download<\\/a|\\s*\\/)>/g)];\nreturn [[['#'+$[$.length-1][1],$[0][1]]]]", "img": "^(mdl\\.artvee\\.com/)[a-z]+(/\\d+[a-z]{2})", "to": "#$1sdl$2sdl\n$1sftb$2", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/1c2fdia/comment/kzctjaw\n\n!!!\nIf an artists name is hovered over, it shows the first 70 images as an album and the biography as the caption.\n\n\nEXAMPLES\nhttps://artvee.com/c/mythology/" }, "Arazu-h": { "link": "^arazu\\.io/\\w+/", "res": "<source src=\"([^\"]+)\" id=\"clip-source\"", "img": "(r2\\.cdn\\.arazu\\.io\\/[^.]+)\\.webp", "to": ":\nreturn $[1] + \".mp4\"", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/130svfu/comment/jv5cpmr\nOLD\nhttps://www.reddit.com/r/imagus/comments/zj5yo3/comment/izvkc7g\n\n\nEXAMPLES\nhttps://www.reddit.com/domain/arazu.io/new" }, "Archive.org-g": { "link": "^archive\\.org/details/.+", "res": ":\nvar video=$._.match(/<meta property=\"og:video\" content=\"([^\"]+)\">/);\nif (video) return video[1];\nvar i = $._.indexOf('aria-label=\"Item image slideshow\">');\nif(i<0) { return null; }\nvar t = $._.slice(t).search(/<\\/div>\\s+<\\/section>\\s+<\\/div>/gi);\nif(t<0) { return null; }\nt=t+i;\nvar res = [];\nvar re = /<a class=\"carousel-image-wrapper\" href=\"([^\"]+)\"[\\s\\S]+?<div class=\"carousel-caption\">(?:\\s+)?(.+)<\\/div>/gi\nvar data=$._.substring(i,t);\nvar a = re.exec(data);\nwhile(a) {\n res.push(['https://archive.org'+a[1],a[2].trim()]);\n a = re.exec(data);\n}\nreturn res;", "img": "^archive\\.org/start/(\\d+/)end/(\\d+)", "to": ":\nreturn JSON.parse(document.querySelector('input[class=\"js-tv3-init\"]').value)['TV3.clipstream_clips'].find(i=>i.match(/t=\\d+\\/\\d+/)[0]==='t='+$[1]+$[2]).replace(/(t=\\d+\\/)(\\d+)/,function(a,b,c){return b+((parseInt(c)+300).toString())})", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/15sfn4j/comment/jydt067\nOLD\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=60#3\n\n!!!\nИзображения в настоящее время не поддерживаются, только видео.\n==\nImages are not currently supported, only videos:\nhttps://www.reddit.com/r/imagus/comments/15sfn4j/comment/jwu38nl\n\n\nПРИМЕРЫ / EXAMPLES\nvideo\nhttps://archive.org/details/CNNW_20230218_090000_CNN_Newsroom_Live/\nphoto\nhttps://archive.org/details/vintage_cartoons?and%5B%5D=year%3A%5B1920+TO+1939%5D\nhttps://archive.org/search.php?query=mediatype:image&sort=-publicdate&and[]=languageSorter:%22Spanish%22" }, "Archived.moe-p": { "useimg": 1, "link": "^(archived\\.moe)/\\w{1,5}/redirect/", "url": ": (location.hostname===$[1]?'data:,':'')+$[0]", "res": ":\nif($.base[0]==='d'){\nconst x=new XMLHttpRequest()\nx.open('GET',$[0],false)\nx.setRequestHeader('Accept','text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8')\nx.send()\n$._=x.responseText\n}\n$=$._.match(/; url=(([^\"]+_image\\/\\d{13})\\d*([^\"]+))/)\nreturn $ ? [[[$[2]+$[3],$[1]]]] : ''", "img": "^((?:arch(?:ived\\.moe|ive\\.(?:4plebs\\.org|palanq\\.win)|\\.b4k\\.dev)|desuarchive\\.org)/(?:files/)?\\w{1,6}/(?:\\w+/){1,3}\\d{13})\\d*(\\.\\w+).*", "to": ":\nreturn $[1]+$[2]+'\\n'+$[1].replace(/(arch)(\\.b4k)/,'$1-img$2')+$[2]", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/1jalgbv/comment/mjti7jp\n\n\n!!!\n- To work correctly, you need a rule for SMH (see FAQ, p.12).\n- At the moment the site is partially down due to a hosting move (red spinner - 404 error).\n\n\nEXAMPLES\nhttps://archived.moe/aco/\nhttps://archived.moe/vmg/\nhttps://archived.moe/news/\nhttps://archived.moe/h/thread/6528287/" }, "ArtLimited-g": { "img": "^(artlimited\\.net/+user/(?:\\d/){7}\\d+/.*-)medium(-open\\.webp)", "to": "$1large$2", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/130svfu/comment/jnit0kk\n\n\nEXAMPLES\nhttps://www.artlimited.net/23835\nhttps://www.artlimited.net/painting\nhttps://www.artlimited.net/selections/favourites/" }, "ArtStation-g": { "link": "^(artstation\\.com/)artwork(/[^/]+).*", "url": "$1projects$2.json", "res": ":\n$=JSON.parse($._)\nif (!$.user) return null;\n$.s = $.software_items.map(function(i) {return i.name}).join(', ')\n$.c = [$.title, $.description.replace(/^<p>(.*)<\\/p>$/, '$1')].filter(function(x) {return !!x.trim()}).join(' - ') + ' by ' + $.user.username;\nreturn $.assets.map(function(x, i){\n var u=[x.image_url], k=u[0].replace('/large/', '/4k/')\n if(k!=u[0])u.unshift(k)\n return [u, [(i ? '' : '[' + $.c + ($.s ? ' in ' + $.s : '') + ']'), (x.title||x.title_formatted||'')].join(' ')]\n})", "note": "https://www.reddit.com/r/imagus/comments/gsaurz/comment/fsfm8un\n\nEXAMPLES\nhttps://www.artstation.com/timgrayson\nhttps://www.artstation.com/?sort_by=latest\nhttps://www.artstation.com/search?sort_by=relevance&query=YELLOW" }, "ArtUntamed-g-x": { "link": "^artuntamed\\.com/index\\.php\\?media/[\\w-.]+/", "res": ":\nconsole.log('Page source:',$._)\n$=$._.match(/<script type=\"application\\/ld\\+json\">\\n({.+?})\\n</s)\n$=$&&JSON.parse($[1]).mainEntity\nthis.CNT.filename=($.author?.name+' - '+$.name?.match(/[^.]+/)?.[0]).replace(/[^\\w\\s.-]/g,'_')\nreturn $.contentUrl", "note": "imqswt\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/nie2unn\n\n\n!!!\n- для корректной работы фильтра нужно войти в аккаунт;\n- в результатах поиска курсор нужно наводить на название изображения;\n- фильтр умеет сохранять скачанные изображения с названием [автор] - [название].[ext] - но только при сохранении с помощью горячей клаивши и только из галереи автора. Также любые включенные в браузере расширения менеджеры закачек могут мешать работе фильтра (перед использованием данной функции их необходимо отключать).\n==\n- for the sieve to work correctly, you need to log in to your account;\n- in the search results, the cursor should be hovered over the name of the image;\n- The sieve can save downloaded images with the name: [author] - [title].[ext] - but only when saved using a hotkey and only from the author's gallery. Also, any download manager extensions enabled in the browser may interfere with the sieve (they must be disabled before using this feature).\n\n\nПРИМЕРЫ / EXAMPLES\nhttps://artuntamed.com/index.php?media/featured\nhttps://artuntamed.com/index.php?members/odastein.34/#xfmgMedia\nhttps://artuntamed.com/index.php?members/odastein.34/#xfmgAlbums\nhttps://artuntamed.com/index.php?media/albums/comics-and-serials.251/\nhttps://artuntamed.com/index.php?search/75126/&q=blondes&t=xfmg_media&o=date\nhttps://artuntamed.com/index.php?media/&media_fields[VID][0]=10&media_fields[VID][1]=20" }, "ArtUntamed_attach-x": { "link": "^artuntamed\\.com/index\\.php\\?attachments/[\\w-.]+/", "note": "Baton34V\n\nПРИМЕРЫ / EXAMPLES\nhttps://artuntamed.com/index.php?ams/blender-3-0-and-a-new-era-has-started.59" }, "Aryion-x-p": { "url": "$1view$2", "res": "=\"og:image:secure_url\" content=\"([^\"]+)\n=\"og:title\" content=\"([^\"]+)", "img": "^(?:static\\.)?(aryion\\.com/g4/)(?:data|derivative|thumb)(/\\d+).*", "note": "https://www.reddit.com/r/imagus/comments/he202z/comment/fvqxxyx\n\nEXAMPLES\nhttps://aryion.com/g4/view/205050\nhttps://aryion.com/g4/favorites/HungrySuccubus\nhttps://aryion.com/g4/latest.php?type_search=Images" }, "aShemale-x-p": { "link": "^ashemale\\.one\\/vids\\/\\d+\\/", "res": "<video src=\"([^\"]+)", "note": "DracoSerge\nhttps://www.reddit.com/r/imagus/comments/150zrnk/nsfw_i_want_to_share_sieves_some_i_made_and_some/\n\n!!!\nNo HD support:\nhttps://ashemale.one/best/hd/\n\n\nEXAMPLES\nhttps://ashemale.one/find/solo/" }, "aShemaleTube-x-p": { "link": "^(?:[a-z]*\\.)*ashemaletube\\.com\\/videos\\/\\d+\\/[\\w\\-\\/?=&]+", "loop": 1, "res": ":\nthis.TRG.IMGS_ext_data = [\n '//' + 'data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"640\" height=\"360\"></svg>',\n `<imagus-extension type=\"videojs\" url=\"${$._.match(/\"src\":\"([^\"]+)/)?.[1].replace(/\\\\/g,'')+'#.m3u8'}\"></imagus-extension>`\n]\nreturn 'imagus://extension'", "note": "imqswt\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/nz4rch3\nOLD\nhttps://www.reddit.com/r/imagus/comments/150zrnk/nsfw_i_want_to_share_sieves_some_i_made_and_some/" }, "ASK.fm": { "useimg": 1, "link": "^ask\\.fm/[^/]+/answers?/\\d+/photo", "res": "\" src=\"([^\"]+)\"", "img": "^((?:(?:d2hhj3gz5jljkm|dok7xy59qfw9h)\\.cloudfront\\.net|(?:ak)?(?:photo|img)\\d\\.ask\\.fm)/[^.]+/)[^/]+(/\\w+\\.)", "to": "$1#large original normal#$2", "note": "!!!\nНужен аккаунт\n==\nAn account needed." }, "Astronomy.ru_forum": { "link": "astronomy\\.ru/forum/index\\.php.+action=media;sa=media;in=\\d+", "note": "Baton34V\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=2600#13\n\nПРИМЕРЫ\nhttps://astronomy.ru/forum/index.php?action=media;sa=album;in=32\nhttps://astronomy.ru/forum/index.php?action=media;sa=album;in=34" }, "Auchan.ru-s": { "link": "^(auchan\\.ru/)(product)/([\\w-]+)/.*", "url": "//www.$1v3/catalog/$2-detail/?code=$3&merchantId=1", "res": ":\n$=JSON.parse($._)\nreturn $.mediaUrls?.map((i,n)=>[i,!n?[$.title,$.description?.content].join(' | '):''])", "img": "^auchan\\.ru/f/c/insecure/w:\\d+/plain/(https://www\\.auchan\\.ru/files/original/\\d+).*", "to": "$1", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/muujej4\nOLD\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/lnjfbin\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3040#9\n\n\nПРИМЕРЫ\nhttps://www.auchan.ru/catalog/hlebnaya-vypechka/\nhttps://www.auchan.ru/catalog/zootovary/" }, "Auction.ru-s": { "link": "auction\\.ru\\/offer\\/.+\\.html", "res": ":\nvar i = $._.indexOf('<div class=\"fotorama\"');\nif(i<0) { return null; }\nvar t = $._.indexOf('<div class=\"offer__block\">', i);\nif(t<0) { return null; }\nvar res = [];\nvar re = /href=\"(https:\\/\\/static\\.auction\\.ru\\/offer_images\\/(?:\\w+\\/)?\\d{4}(?:\\/\\d\\d){3}\\/big\\/\\w\\/\\w+\\/\\w+\\.\\w+)\"/gi\nvar a = re.exec( $._.substring(i,t) );\nwhile(a) {\n res.push([a[1]]);\n a = re.exec( $._.substring(i,t) );\n}\nreturn res;\n", "img": "(static\\.auction\\.ru\\/offer_images\\/(?:\\w+\\/)?\\d{4}(?:\\/\\d\\d){3}\\/)small(\\/\\w\\/\\w+\\/\\w+\\.\\w+)", "to": "$1big$2", "note": "Baton34V\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=2000#5\n\nПРИМЕРЫ\nhttps://auction.ru/listing/offer/plastinki-101689\nhttps://auction.ru/listing/offer/tovary_dlja_doma_i_sporta-17" }, "AusCelebs_forums": { "useimg": 1, "link": "^(forums\\.auscelebs\\.net/acnet-)files/(image)\\.php\\?id=(\\d+).*", "res": "(//$1$2s/[^\"]+$3[^\"]+)", "img": "^(forums\\.auscelebs\\.net/acnet-images/\\d+/)thumbs/", "to": "$1", "note": "https://www.reddit.com/r/imagus/comments/evfzau/comment/fggbg3p\n\nEXAMPLES\nhttps://forums.auscelebs.net/viewtopic.php?f=75&t=20772" }, "Auto.ru-s": { "link": "^auto\\.ru/(?:\\w+/)+[\\da-f-]+/", "url": "data:,$&", "res": ":\nconst x=new XMLHttpRequest();\nx.open('GET',$[0],false);\nx.send();\nreturn [...x.responseText.matchAll(/\"1200x900n\":\"([^\"]+)/g)].map(i=>[[['#'+i[1].replace('1200x900n','orig'),i[1]]]])", "img": "^yastatic\\.net/naydex/autoru/.+", "to": ":\nconst n=parseInt(this.node.offsetParent?.getAttribute('data-index'));\nif(Number.isNaN(n))return $[0];\nconst o=[...document.querySelectorAll('[srcset]')][n]?.getAttribute('srcset');\nlet m=o?.match(/(\\/\\/\\S+\\/)\\d+x\\d+\\s/)?.[1];\nm=m?m+'orig':o?.match(/(\\/\\/\\S+)\\s\\d+w$/)?.[1];\nreturn m||$[0];", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/m8beeel\nOLD\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/landzre\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=180#5\n\n\nПРИМЕРЫ\nhttps://auto.ru/scooters/all/\nhttps://auto.ru/cars/all/body-allroad/\nhttps://auto.ru/cars/used/sale/packard/caribbean/1126513251-32c83438/" }, "Auto.RIA-s-p": { "link": "auto\\.ria\\.com\\/.+\\.html", "res": ":\nvar i = $._.indexOf('div class=\"carousel-inner\"');\nconsole.log(i);\nif(i<0) { return null; }\nvar t = $._.indexOf('<div class=\"preview-gallery mhide\">', i);\nconsole.log(t);\nif(t<0) { return null; }\nvar res = [];\n\nvar re = /<img class=\"outline m-auto\" src=\"([^\"]+)\"/gi\nvar a = re.exec( $._.substring(i,t) );\nwhile(a) {\n res.push([a[1].replace('s.jpg','f.jpg')]);\n a = re.exec( $._.substring(i,t) );\n}\nreturn res;\n", "note": "Baton34V\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=2160#6\n\nПРИМЕРЫ / EXAMPLES\nhttps://auto.ria.com/car/opel/astra/" }, "Auto.RIA_2-s-p": { "link": "auto\\.ria\\.com\\/newauto\\/.+\\.html", "res": ":\nvar i = $._.indexOf('window.initialState=');\nif(i<0) { return null; }\nvar t = $._.indexOf('};</script>', i);\nif(t<0) { return null; }\nvar sources=JSON.parse($._.substring(i+20,t+1));\nvar res = [];\nfor (var k in sources.photos) {\n var url='https://auto.ria.com/photos/'+ sources.photos[k].src;\n res.push([url]);\n}\nreturn res;\n", "note": "Baton34V\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=2160#6\n\n\nПРИМЕРЫ / EXAMPLES\nhttps://auto.ria.com/car/opel/astra/" }, "AutoTrader.co.uk-s-p": { "link": "^autotrader\\.co\\.uk/[^?]+/(\\d+)(?:\\?.*|$)", "url": "data:,$&", "res": ":\nconst params={\"operationName\":\"FPADataQuery\",\"variables\":{\"advertId\": $[1],\"numberOfImages\":500},\"query\": \"query FPADataQuery($advertId: String!,$numberOfImages:Int,$searchOptions:SearchOptions){\\nsearch{\\nadvert(advertId: $advertId,searchOptions:$searchOptions) {imageList(limit: $numberOfImages){nextCursor size images{url templated classificationTags{label category __typename}__typename}__typename}__typename}__typename}}\"}, x=new XMLHttpRequest();\nx.open('POST','https://www.autotrader.co.uk/at-graphql?opname=FPADataQuery',false);\nx.setRequestHeader('content-type','application/json');\nx.send(JSON.stringify(params));\nreturn (JSON.parse(x.responseText).data?.search?.advert?.imageList?.images||[]).map(i=>[i.url.replace('{resize}/','')])", "img": "^((?:m|ec)\\.atcdn\\.co\\.uk/(?:a/)?media/)(?:[^/]+/)?([^?]+).*", "to": "$1$2", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/m9m5f7p\nOLD\nhttps://www.reddit.com/r/imagus/comments/gph1ts/comment/frmipmi\n\n\nEXAMPLES\nhttps://www.autotrader.co.uk/car-search?sort=price-desc&postcode=nr32ha&radius=1500&make=Mercedes-Benz&include-delivery-option=on&transmission=Manual&page=2\nhttps://www.autotrader.co.uk/car-search?postcode=NR32HA&radius=50&year-from=new&include-delivery-option=on&advertising-location=at_cars&page=1\nhttps://www.autotrader.co.uk/car-search?postcode=NR32HA&radius=100&year-from=new&make=BMW&model=1%20Series&include-delivery-option=on&advertising-location=at_cars&page=1" }, "AVITO.ru-s": { "link": "^avito\\.ru/(?:[^/]+/[^/]+/.+_\\d{10,}|(web/5/user/[a-f0-9]+/ratings\\?limit=100(?:&offset=\\d+&sortRating=.+)?))", "loop": 3, "res": ":\ndebugger\nif ($[1]) {\n $ = JSON.parse($._);\n this.avito_images = this.avito_images || [];\n this.avito_next_page = $.nextPage;\n this.avito_images.push(...$.entries.flatMap(i => i.type === 'rating' && i.value?.images ? i.value?.images : []));\n $ = this.avito_img_src;\n delete this.avito_img_src;\n return { loop: $ };\n}\n\nlet res = [];\nlet media = [];\n\nconst data =\n $._.match(/(?:__initialData__|__preloadedState__)\">(.+?)<\\/script/)?.[1] ||\n $._.match(/window\\.__staticRouterHydrationData = JSON\\.parse\\((\".+\")\\);<\\/script>/)?.[1] ||\n decodeURIComponent($._.match(/(?:__initialData__|__preloadedState__)\\s*=\\s*\"(.+?)\"/)?.[1]);\nif (!data) console.dir($);\nlet data_json = JSON.parse(data);\nif (typeof data_json === 'string') data_json = JSON.parse(data_json);\n\nlet info;\nfor (const key in data_json) {\n if (key.includes('@avito/bx-item-view')) {\n info = data_json[key].buyerItem;\n break;\n }\n}\ninfo ||= data_json.loaderData['catalog-or-main-or-item'].buyerItem;\n\nmedia = info.galleryInfo.media;\n\n// let hasVideo = false;\nfor (imgs of media) {\n if (imgs.isVideo) {\n // hasVideo = true;\n if (imgs.embededUrl.startsWith('//')) imgs.embededUrl = 'https:' + imgs.embededUrl\n // if (imgs.embededUrl.includes('youtube.com')) {\n // \tres.push(['', `<imagus-extension type=\"iframe\" url=\"${imgs.embededUrl}\"></imagus-extension>`]);\n // } else {\n res.push(['', `<imagus-extension type=\"videojs\" url=\"${imgs.embededUrl}\"></imagus-extension>`]);\n // }\n continue;\n }\n\n let best_quality = 0;\n let best_videoUrl = '';\n for (imgSize in imgs.urls) {\n let isa = imgSize.split('x');\n let quality = parseInt(isa[0]) * parseInt(isa[1]);\n if (quality > best_quality) {\n best_quality = quality;\n best_videoUrl = imgs.urls[imgSize];\n }\n }\n if (best_quality != 0) {\n res.push([best_videoUrl, '']);\n }\n}\n\nlet sidebar_html =\n `<style>td { padding: 0 10px 2px 0; }</style>` +\n `<table>` +\n (info.paramsBlock?.items || []).map(i => `<tr><td>${i.title}</td><td>${i.description}</td></tr>`).join('') +\n `</table><br><br>` +\n info.item.description;\n\nconst sbIndx = res[0][1].startsWith('<imagus-extension') ? 1 : 0;\nres[sbIndx][1] = `<imagus-extension type=\"sidebar\">${sidebar_html}</imagus-extension>${res[sbIndx][1]}`;\nthis.TRG.IMGS_ext_data = res;\n\nreturn 'imagus://extension';", "img": "^\\d+\\.img\\.avito\\.st/image/1/1\\.[\\w-]+\\.[\\w-]+$", "to": ":\nlet id, img, imgs = [],\n n = this.node,\n img_url = 'https://' + $[0];\nif (!n.className?.startsWith('style-imageWrapper-')) return $[0];\nif (id = !this.avito_images && new URL(location.href)?.searchParams?.get('sellerId')) {\n this.avito_img_src = img_url;\n return 'https://www.avito.ru/web/5/user/' + id + '/ratings?limit=100';\n}\nimgs = this.avito_images;\nimg = imgs.find(i => Object.values(i).some(x => x === img_url)) || '';\nif (!img && this.avito_next_page?.length) {\n this.avito_img_src = img_url;\n return 'https://www.avito.ru' + this.avito_next_page;\n}\nreturn img['1280x960'] || '';", "note": "hababr\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=3500#5\nOLD\nhttps://pastebin.com/n92N9Djz\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=3240#4\n\n\n!!!\nКурсор рекомендуется наводить на название товара.\n\n\nПРИМЕРЫ\nhttps://www.avito.ru/orel?bt=1&q=samsung\nhttps://www.avito.ru/samara/detskaya_odezhda_i_obuv/odezhda-dlya_devochek-ASgBAgICAUTkAuwL?q=товары+с+видео+в+описании\nhttps://www.avito.ru/brands/i1047444/all?sellerId=32f011bc19e1fe0f908fcdc295097da6" }, "AwesomeScreenshot-h": { "link": "^awesomescreenshot\\.com/image/\\d+/", "res": "<meta property=\"og\\:image\" content=\"([^\"]+)\"\n<meta name=\"twitter\\:image\" content=\"([^\"]+)\"", "note": "Baton34V\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=300#5\n\n\nПРИМЕРЫ / EXAMPLES\nhttps://www.reddit.com/domain/awesomescreenshot.com\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=280#20" }, "AwesomeScreenshot_sharekey-h": { "link": "^awesomescreenshot\\.com/(image|video)/(\\d+)\\?(key=\\w+)", "url": ": 'awesomescreenshot.com/api/v1/'+$[1]+'/load'+($[1]=='video' ? '_video' : '')+'?id='+$[2]+'&'+$[3];", "res": ":\nlet jsn=JSON.parse($._);\nlet fUrl=($[1]=='video' ? 'fileMP4URI':'imageFileURI');\nlet res = jsn.data[$[1]][fUrl] || jsn.data[$[1]].fileWebMURI;\nreturn res;", "useimg": 1, "note": "hababr\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=2000#9\nOLD\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=300#5\n\n\nПРИМЕРЫ / EXAMPLES\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=280#20" }, "AZnude-x-p": { "link": "^aznude\\.com/(?:\\w+/){2,3}[^/.]+\\.html", "res": ":\nlet m=[...$._.matchAll(/file:\\s*\"([^\"]+\\.mp4[^\"]*)/g)].map(i=>i[1]);\nif(m.length)return [[['#'+m.pop(),m?.pop()]]];\nreturn [...$._.matchAll(/<a href=\"([^\"]+)\"\\s+class=\"picture/g)].map(i=>[i[1]]);", "note": "imqswt\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/mnk5s1u\n\nEXAMPLES\nhttps://www.aznude.com/browse/stories/updated/1.html\nhttps://www.aznude.com/browse/videos/popular/days/1.html\nhttps://www.aznude.com/search.html?q=RED#gsc.tab=0&gsc.q=RED&gsc.page=1\nhttps://www.aznude.com/browse/tags/vids/shower/1.html\nhttps://www.aznude.com/search.html?q=sonya+cassidy#gsc.tab=0&gsc.q=sonya%20cassidy&gsc.page=1" }, "BAIDU": { "img": "^((?:imgs\\w+|[a-z].hiphotos)\\.baidu\\.com/(?:forum|image)/)[^=]+=[^/]+/([\\da-f]{40}.+)", "to": "$1pic/item/$2" }, "BAIDU_image": { "link": "^image\\.baidu\\.com/(?:i|search/detail)/?\\?(?:[^&]*&)*objurl=([^&]+).*", "dc": 1, "loop": 1, "to": "$1", "note": "EXAMPLES\nhttps://image.baidu.com/search/index?tn=baiduimage&ct=201326592&lm=-1&cl=2&ie=utf8&sa=vs_ala_img&fr=ala&ala=1&alatpl=normal&pos=3&dyTabStr=MCwzLDEsMiwxMyw3LDYsNSwxMiw5&word=red%20panda&lid=dbb1147e0002f7f7" }, "BakaSHOTS-h": { "img": "^(bakashots\\.me/[\\w-]{10,}=?=?)[./].+", "to": "$1", "note": "EXAMPLES\nhttps://bakashots.me/" }, "Bastyon-h": { "link": "^bastyon\\.com/index\\?(?:video=1&)?[sv]=([a-f0-9]+)", "res": ":\nconst x=new XMLHttpRequest(), o=JSON.parse($._.match(/window\\.project_config\\s*=\\s*([^;]+)/)[1]).servers.production.translateProxy, url=`https://${o.host}:${o.port}/`, vid=$[1];\nconst getJSON=(path,param)=>{\nconsole.log('Function:',path,param)\nx.open('POST',url+path,false);\nx.setRequestHeader('Content-Type','application/json;charset=utf-8');\nx.send(JSON.stringify(JSON.parse(param)));\nconsole.log('Response:',x.responseText.slice(0,40))\nreturn JSON.parse(x.responseText);\n}\n$=getJSON('rpc/getrawtransactionwithmessagebyid',`{\"parameters\":[[\"${vid}\"]],\"method\":\"getrawtransactionwithmessagebyid\"}`).data[0].u;\nconsole.log('POST URL',$)\nconst id=$.includes('%')?decodeURIComponent($):$;\n$=getJSON('peertube/videos',`{\"urls\":[\"${id}\"]}`).data?.[id];\nconst t=[$?.publishedAt&&new Date($.publishedAt).toLocaleString(),$?.description?.replace(/[^\\n]+\\n/,'')].filter(Boolean).join(' | ');\n$=$?.streamingPlaylists[0]?.playlistUrl;\nconsole.log('Media URL:',$)\nthis.TRG.IMGS_ext_data=['//data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"640\" height=\"360\"></svg>',`<imagus-extension type=\"videojs\" url=\"${$}\"></imagus-extension>${t}`];\nreturn $?{loop:'imagus://extension'}:''", "img": "^peertube(?:\\d+|\\.archive)\\.pocketnet\\.app/static/thumbnails/[a-f0-9-]{36}\\.jpg$", "loop": 2, "to": ":\nlet id=this.node.closest('div[txid],div[stxid]')\nid=id&&(id.getAttribute('txid')||id.getAttribute('stxid'))\nreturn id?'https://bastyon.com/index?video=1&v='+id:$[0]", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/ms9blws/\n\n!!!\nFor some users, the sieve may not work (freezing or endless “green spinner”).\n\nEXAMPLES\nhttps://bastyon.com/index?video=1\nhttps://new.reddit.com/domain/bastyon.com/new/" }, "Bayimg-h": { "link": "^(.*)bayimg\\.com/\\w{9}", "res": "img src=\\\"/(.+(?:jpe?g|a?png|gif|svgz?|webp|w?bmp|xbm|pict|j(?:if|fif?)))\\\" id", "to": "https://bayimg.com/$1", "note": "destiny child\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1380#12\n\nПРИМЕРЫ / EXAMPLES\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1360#11" }, "BBC-m-p": { "link": "^(?:open\\.live\\.)?bbc\\.[a-z.]{3,5}/(?:(news|reel)/(?:av|videos?)|mediaselector/6/select/version/2.0/mediaset/pc/vpid)/.+", "res": ":\nif($[1]){\nlet m=$._.match(/{\"versionId\":\"([^\"]+)/);\nthis.bbc_desc=$._.match(/name=\"description\" content=\"[^\"]+/)?.[1]||''\nreturn m?{loop:'https://open.live.bbc.co.uk/mediaselector/6/select/version/2.0/mediaset/pc/vpid/'+m[1]}:''\n}\nthis.TRG.IMGS_ext_data=['//data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"960\" height=\"540\"></svg>',`<imagus-extension type=\"videojs\" url=\"${JSON.parse($._).media[1].connection[0].href}\"></imagus-extension>${this.bbc_desc}`]\nreturn {loop:'imagus://extension'}", "img": "^(ichef(?:-\\d+)?\\.bbci\\.co\\.uk/(?:news|images/ic)/)\\d+(x\\d+)?([^.]+\\.[^.]+).*", "loop": 2, "to": ":\nlet m=document.body.outerHTML.match(/id=\"__NEXT_DATA__\" type=\"application\\/json\">({.+?})<\\//);\nm=m&&JSON.parse(m[1]).props?.pageProps?.page?.['@\"video\",']?.sections?.flatMap(i=>i.content||[]);\nif(m=m.find(i=>i.image?.model?.blocks?.src?.includes($[3])))return 'https://www.bbc.com'+m.href;\nreturn $[1]+($[2]?'1920x1080':'2048')+$[3]", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/n9hptzx\nOLD\nhttps://www.reddit.com/r/imagus/comments/130svfu/comment/jyil8u7\n\n!!!\nIn order for the sieve to work correctly, you need to install the uBO (uBlock Origin) extension. In uBO Settings > My Filters > Add this line:\nbbc.com##a::after\nhttps://www.reddit.com/r/imagus/comments/j9gn22/comment/ga14d6b\n- в РФ для видео нужен хороший прокси. \n\nEXAMPLES\nhttps://www.bbc.com/video\nhttps://www.bbc.com/news/world-us-canada-64461305" }, "bdnews24-m": { "img": "^(cdn\\.bdnews24\\.com/bdnews24/media/.+/)SM/", "to": "$1", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/lxwait4\nOLD\nhttps://www.reddit.com/r/imagus/comments/1bqm6b1/comment/kxdwstm\n\nEXAMPLES\nhttps://bdnews24.com/economy\nhttps://bdnews24.com/media-en/image" }, "Bdsmlr-x-p": { "link": "\\w+\\.bdsmlr\\.com/post/\\d+$", "res": ":\nvar i = $._.indexOf('<div class=\"postholder\">');\nif(i<0) { return null; }\nvar t = $._.indexOf('<div class=\"tags\">', i);\nif(t<0) { return null; }\nvar res = [];\nvar re = /class=\"sidepostimage\"\\s+src=\"([^\"]+)\">/gi\nvar a = re.exec($._.substring(i,t));\nwhile(a) {\n res.push([a[1]]);\n a = re.exec( $._.substring(i,t) );\n}\nreturn res;\n", "note": "Baton34V\n(в ПМ)" }, "Behance-g": { "link": "^behance\\.net/gallery/\\d+/.*", "res": ":\nvar res = [];\nconst page = (new window.DOMParser()).parseFromString($._,'text/html');\nconst imgs = Array.from(page.querySelectorAll('#project-modules img'));\nfor(const img of imgs) {\n res.push([img.dataset.src || img.src]);\n}\n\nreturn res;", "img": "^(behance\\.vo\\.llnwd\\.net)(/profiles\\d+/\\d+/projects/\\d+/)([^/]+)(\\.(?:jpe?g|png|gif))$", "to": "$1$2hd_$3$4", "note": "hababr\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=2000#9\nOLD\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3760#8\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3140#17\n\nПРИМЕРЫ / EXAMPLES\nhttps://www.behance.net/vdpinto" }, "BestBlades.ru-s": { "link": "^(bestblades\\.ru)/[\\w-]+/[\\w-]+/[\\w-]+/([\\w-]+)?", "res": ":\nreturn [...$._.matchAll(/<a href=\"([^\"]+)\" class=\"p-images__slider-item\"/g)].map(i=>['//'+$[1]+i[1]])", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/lnjfbin\nOLD\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1600#15\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3660#3\n\nПРИМЕРЫ\nhttps://bestblades.ru/brendi/adimanti/\nhttps://bestblades.ru/designers/eric-ochs/\nhttps://bestblades.ru/kuhonnye-nozhi/universalnye-kukhonnye-ru/" }, "BHPhotoVideo-s": { "link": "^(bhphotovideo\\.com)/c/product/.+\\.html$", "url": ":(location.hostname.endsWith($[1])?'data:,':'')+$[0]", "res": ":\nif($.base[0]==='d'){\nconst x=this._CF_ ? new content.XMLHttpRequest() : new XMLHttpRequest();\nx.open('GET',$[0],false);\nx.send();\nif(!this._CF_&&platform.firefox&&/window\\._cf_chl_opt/.test(x.responseText)){\nthis._CF_=true;\nreturn {loop:$[0]}\n}\n$._=x.responseText;\n}\n$=new DOMParser().parseFromString($._,'text/html').getElementsByClassName('bh-preloaded-data')?.[0].getAttribute('data-data');\n$=JSON.parse($).ServerStateStore.state;\n$=$.entries[$.updated[0]].data[0].imageInfo.images[0].images;\nreturn $.map(i=>{i=i.largeImages;return [['#'+i.pop()?.url,i.find(x=>x.width==1000)?.url]]})", "img": "^(?:bhphotovideo\\.com/cdn-cgi/image/.+/https://)?(static\\.bhphoto\\.com/images/(?:[^/]+/)?)(?:thumbnails|smallimages|images\\d+x\\d+)", "to": "#//$1images2500x2500\n#//$1images2000x2000\n#//$1images1500x1500\n//$1images1000x1000\n//$1images750x750", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/1nur1zx/comment/nh5ha4d\nOLD\nhttps://www.reddit.com/r/imagus/comments/1ksp61b/comment/mtt5ase\n\n!!!\n- In the search results and in the catalog, the cursor should be placed on the product name;\n- Solving the problem with the disappearance of the Imagus pop-up:\nhttps://www.reddit.com/r/imagus/comments/1nur1zx/comment/nhcq03t/\n\n\nEXAMPLES\nhttps://www.reddit.com/r/imagus/comments/1ksp61b/comment/mtn7fdq\nhttps://www.bhphotovideo.com/c/buy/Shop-by-Brand-Turtle-AV/ci/4/phd/8330/N/4294255798" }, "BidBaits.ru-s": { "link": "^bidbaits\\.ru/bids/\\d+/?", "res": ":\nvar i = $._.indexOf('<div class=\"item-gallery__preview\">');\nif(i<0) { return null; }\nvar t = $._.indexOf('<i class=\"item-gallery__zoom-in jsGalleryZoomInBtn\">',i);\nif(t<0) { return null; }\nvar res = [];\nvar re = /src=\"([^\"]+)\"/gi\nvar data=$._.substring(i,t);\nvar a = re.exec(data);\nwhile(a) {\n res.push([a[1]]);\n a = re.exec(data);\n}\nreturn res;\n", "note": "Baton34V\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1060#9\nOLD\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3780#9\n\n\nПРИМЕРЫ\nhttps://bidbaits.ru/catalog/casting/\nhttps://bidbaits.ru/search?q=oneten%20110&c=&v=&min=&max=&filter=new|original&page=3" }, "Bigl.ua-s-p": { "link": "^bigl\\.ua/p\\d+-.+$", "res": ":\nreturn JSON.parse(($._.match(/\"image\":(\\[[^\\]]+\\])/)||[,'[]'])[1]).map(i=>[i])", "img": "^(images\\.prom\\.ua/\\d+)_w[12]00_h[12]00_(.+\\.jpg)$", "to": "$1_w640_h640_$2", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/130svfu/comment/jyil8u7\nOLD\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=500#2\n\n\nПРИМЕРЫ\nhttps://bigl.ua/Mobilnye-telefony\nhttps://bigl.ua/t-Akkumulyatornye-batarei-k-noutbukam" }, "Bild.de-m-p": { "link": "^bild\\.de(?:/[\\w-]+){2}", "res": ":\nconst m=$._.match(/<meta property=\"og:image\" content=\"([^?\"]+)/)?.[1];\n$=$._.match(/<script id=\"pageContext\" type=\"application\\/json\">({.+?})<\\//);\n$=$&&JSON.parse($[1]);\n$=$?.CLIENT_STORE_INITIAL_STATE?.pageAggregation?.content?.children?.find(i=>i.type==='BODY')?.children?.find(i=>i.type==='VIDEO_ELEMENT')?.props?.sourceConfig?.progressive?.[0]?.url;\nreturn $ ? [[[$+'#mp4',m]]] : m\n", "img": "^(images\\.bild\\.de/[^?]+).*", "to": "$1", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/n9cfz4t\n\n\nEXAMPLES\nhttps://www.bild.de/politik/ausland/politik-ausland/home-15683414.bild.html\nhttps://www.bild.de/lifestyle/startseite/lifestyle/lifestyle-15478526.bild.html" }, "BILIBILI": { "link": "^bilibili\\.com/video/.+", "res": ":\n$=$._.match(/window\\.__playinfo__=({.+?})<\\//);\n$=$&&JSON.parse($[1]).data?.dash?.video?.sort((a,b)=>b.width-a.width);\nreturn $?.length ? [[['#'+$[0].baseUrl+'#mp4','#'+$[0].backupUrl?.[0]+'#mp4',$[$.length-1].baseUrl+'#mp4',$[$.length-1].backupUrl?.[0]+'#mp4']]] : ''", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/mvehdzs/\n\n!!!\nAt the moment, the sieve only plays video (no audio).\n\nEXAMPLES\nhttps://www.bilibili.com/\nhttps://www.reddit.com/domain/bilibili.com/new" }, "BING": { "useimg": 1, "link": "^(bing\\.com/images/search\\?)(?:q|view)=(?:[^&]*&)+id=([\\dA-F]{40}).*", "loop": 3, "url": ": $[0].indexOf('mediaurl=h')>0 ? '' : $[1] + 'view=detailV2&id=' + $[2]", "res": ":\nvar m = $[0].match(/mediaurl=(http[^&]+)/);\nif(m)return decodeURIComponent(m[1])\nm = $._.match(/class=\"mainImage\"[^>]+?src2=\"([^\"]+)/)\nif(m)return m[1]\nm = document.evaluate('./ancestor-or-self::a[contains(@m, \"imgurl\") or contains(@m, \"murl\")]/@m',this.node,null,2,null).stringValue\nreturn m && JSON.parse(m).imgurl || null", "img": "^(tse[\\d-]+\\.mm\\.bing\\.net/th\\?id=[^&]+).*", "to": ":\nvar m = document.evaluate('./ancestor-or-self::a[contains(@m, \"imgurl\") or contains(@m, \"murl\")]/@m', this.node ,null,2,null).stringValue\nm = m && JSON.parse(m);\nm = m && (m.imgurl||m.murl)\nreturn (m ? m + '\\n' : '') + $[1]", "note": "EXAMPLES\nhttps://www.bing.com/images/search?q=ghislaine+pierie&form=HDRSC2&first=1\nhttps://www.bing.com/images/search?q=French+People&form=RESTAB&first=1" }, "BitChute-h-p": { "link": "^bitchute\\.com/video/(\\w+)", "url": "data:,$&", "res": ":\nconst x=new XMLHttpRequest()\nx.open('POST','https://api.bitchute.com/api/beta/video/media',false)\nx.setRequestHeader(\"Content-Type\",\"application/json\")\nx.send(`{\"video_id\":\"${$[1]}\"}`)\nreturn JSON.parse(x.responseText).media_url", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/130svfu/comment/llxc7z1\nOLD\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=2520#9\n\n!!!\nThe SMH extension and its rules must be installed for the sieve to work on chromium browsers (see item 12 of the FAQ).\n\nEXAMPLES\nhttps://www.bitchute.com/search/?query=alas&kind=video\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1360#11" }, "BitView-h": { "link": "^(bitview\\.net/)(?:m/)?(?:watch|embed)(\\?v=\\w+).*", "to": "#https://www.$1m/video_hd.php$2#mp4\nhttps://www.$1m/video.php$2#mp4", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/130svfu/comment/mptdk3z\n\n\n!!!\nSieve does not work on external links (CF Check).\n\n\nEXAMPLES\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1360#11" }, "Bleachbooru-x": { "img": "^(bleachbooru\\.org/data/)(?:\\d+x\\d+|sample)(/\\w+/\\w+/)(?:sample-)?([a-f0-9]{32}\\.).+", "to": "#$1original$2$3#png jpg mp4 webm gif jpeg#\n$1sample$2sample-$3#png jpg jpeg#", "note": "imqswt\nhttps://www.reddit.com/r/imagus/comments/1n8iiki/comment/ncixj1g\n\nEXAMPLES\nhttps://bleachbooru.org/posts?tags=animated+&z=5\nhttps://bleachbooru.org/posts?tags=cheerleader+&z=5\nhttps://bleachbooru.org/posts?page=3&tags=animated_gif+" }, "Blu-ray-s": { "link": "^(blu-ray\\.com/)(?:(?:(movies|d(?:vd|igital))/)?[^/]+/|(link/click\\.php\\?id=)|(products/menu_ajax\\.php\\?p=))(\\d+)(?:[/?&]|$)(?!#$).*", "url": ": $[3] ? this.node.closest('a')?.getAttribute('onclick')?.match(/window\\.location\\s*=\\s*'([^']+)/)?.[1]||this.find({src:this.node.src}) : $[0]", "res": ":\nlet m;\nif(m=['dvd','digital'].includes($[2])&&$._.match(/Screenshots from <a href=\"([^\"]+)/)?.[1])return {loop:m};\nif(m=!$[2]&&!$[3]&&/>Filmography</.test($._)&&$._.match(/<center><a href=\"([^\"]+)\" onclick=\"/)?.[1])return m;\nif(!$[2]&&!$[3]&&!$[4]&&RegExp(`${$[5]}/#Screenshots`))return {loop:`https://www.${$[1]}products/menu_ajax.php?p=${$[5]}&action=showscreenshots`};\n$=[...$._.matchAll(/'<img id=\"[^\"]+\" src=\"([^\"]+)|(?:border=\"0\"><img|<img id=\"screenshot\\d+\") src=\"([^\"]+)\" width=/g)].map(i=>[i[1]||i[2].replace(/_\\d+/,'$&_large')]);\nreturn [...new Map($)]", "img": "^(images\\.static-bluray\\.com/)(?:(reviews/\\d+_\\d+)|(movies/\\w*covers/\\d+_)(?:tn|small|medium|large)|(products/\\d+/\\d+_\\d+))[^.]*|^blu-ray\\.com/(?:movies|d(?:vd|igital))/[\\w-]+/\\d+/#$", "to": ":\nreturn $[2]||$[4] ? $[1]+($[2]||$[4])+'_large' : $[3] ? $[1]+$[3]+'front' : [...document.querySelectorAll('script[type=\"text/javascript\"]')].find(i=>RegExp(`<img id=\"${this.node.id?.match(/[^_]+/)?.[0]}\"`).test(i.textContent))?.textContent?.match(/src=\"([^\"]+)/)?.[1]||''", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/1jthgw7/comment/mmd4cub\n\nEXAMPLES\nhttps://www.blu-ray.com/movies/Anora-Blu-ray/379732/\nhttps://www.blu-ray.com/movies/Anora-Blu-ray/379732/#Screenshots\nhttps://www.blu-ray.com/itunes/Mickey-17-iTunes/232241/#Castandcrew" }, "Bluesky|Bsky": { "link": "^(?:(bsky\\.)app/profile/([^/]+)/post/(\\w+).*|(bsky\\.)social/about/support/privacy-policy$)", "url": ": (()=>{const link=$[4]&&location.pathname.match(/profile\\/([^\\/]+)\\/post\\/(\\w+)/);if(!$[2]&&!link)throw '';return `https://public.api.${$[1]||$[4]}app/xrpc/app.bsky.feed.getPostThread?uri=at%3A%2F%2F${$[2]||link[1]}%2Fapp.bsky.feed.post%2F${$[3]||link[2]}`})()", "res": ":\n$=JSON.parse($._).thread?.post;\nif(!$.embed)return '';\nconst t=$.record?.text;\n$=$.embed;\nif($.playlist){\nthis.TRG.IMGS_ext_data=['//data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"640\" height=\"360\"></svg>',`<imagus-extension type=\"videojs\" url=\"${$.playlist}\"></imagus-extension>${t}`];\nreturn {loop:'imagus://extension'}\n}\nreturn $.images?.map((i,n)=>[['#'+i.fullsize,i.thumb],[!n&&t,i.alt].filter(Boolean).join(' | ')])||$.external?.uri&&[$.external.uri,$.external.title||'']||''", "img": "^(cdn\\.bsky\\.app/img/[^/_]+)_thumbnail", "to": "#$1_fullsize\n$1\n$&", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/1ihmhhe/comment/mbm0snu\nOLD\nhttps://www.reddit.com/r/imagus/comments/1bztu7c/comment/kyu7g9o\n\n\n!!!\nTo show a video in the feed, hover over the timestamp (above the video).\nTo show a video in a specific post, hover over the Privacy link below the search box on the right.\n\n\nEXAMPLES\nhttps://www.reddit.com/domain/bsky.app/new/\nhttps://bsky.app/profile/hhammerh.bsky.social" }, "BoardGameGeek": { "useimg": 1, "link": "^boardgamegeek\\.com/(image|video|geeklist|boardgame(?=/\\d+/[^/]+(?:/(images|videos)|$)))/(\\d+)[^?]*(?:\\?pageid=(\\d+))?.*", "url": ": $[1]==='video' ? $[0] : $[1]==='boardgame' ? `//api.geekdo.com/api/${$[2]||'images'}?ajax=1&gallery=all&nosession=1&objectid=${$[3]}&objecttype=thing&pageid=${$[4]||1}&showcount=60&size=original&sort=hot` : $[1]==='geeklist'? `https://api.geekdo.com/api/listitems?page=${$[4]||1}&listid=${$[3]}` : `//api.geekdo.com/api/images/${!Number($[1][0])?$[3]:$[1]}`", "res": ":\nif($[1]==='video')return {loop:$._.match(/=\"og:video\" content=\"([^\"]+)/)?.[1]||''};\n$._=JSON.parse($._);\nif($[1]==='boardgame'||$[1]==='geeklist'){\nthis.bgg_media=this.bgg_media||[];\nif($[2]==='videos'){\n$._.videos?.forEach(i=>this.bgg_media.push(['',`<imagus-extension type=\"iframe\" url=\"https://youtube.com/embed/${i.extvideoid}\"></imagus-extension>`]));\nif($._.videos?.length===50&&($[4]||0)<6)return {loop:$[0].match(/^[^?]+/)[0]+'?pageid='+(++$[4]||2)};\nthis.TRG.IMGS_ext_data=this.bgg_media;\n}else if($[1]==='geeklist'){\nconst x=new XMLHttpRequest();\n$._.data?.forEach(i=>{x.open('GET',`https://api.geekdo.com/api/images/${i.item?.imageid}`,false);x.send();const img=JSON.parse(x.responseText)?.images;this.bgg_media.push([['#'+img.original?.url,img.large?.url], `<imagus-extension type=\"sidebar\">${['<b>'+i.linkedImage?.alt+'</b>',i.body,i.item?.descriptors?.map(x=>(x.name[0]==='y'?'Year Published':x.name[0]==='r'?'Rank':i.name)+': '+x.displayValue?.replace('Rank ','')).join('\\n')].join('\\n\\n')}</imagus-extension>`])});\nif($._.data?.length===25&&($[4]||0)<4)return {loop:$[0].match(/^[^?]+/)[0]+'?pageid='+(++$[4]||2)};\nthis.TRG.IMGS_ext_data=this.bgg_media;\n}else{\n$._.images?.forEach(i=>this.bgg_media.push([['#'+i.imageurl, i.imageurl_lg], i.caption||'']));\nif($._.images?.length===60&&($[4]||0)<5)return {loop:$[0].match(/^[^?]+/)[0]+'?pageid='+(++$[4]||2)};\n$=this.bgg_media;\n}\ndelete this.bgg_media;\nreturn $._ ? {loop:'imagus://extension'} : $\n}\nreturn [[['#'+$._.images.original.url, $._.images.large.url], '['+ $._.href.substr($._.href.lastIndexOf(\"/\")+1).replace(/-/g,\" \").toUpperCase() +'] ' + $._.caption]]", "img": "^cf\\.geekdo-images\\.com/(?:[^/?]+/)+?pic(\\d+).*", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/lksuszh\nOLD\nhttps://www.reddit.com/r/imagus/comments/qj7cqo/improved_boardgamegeek_bggsieve/\n\n!!!\nHovering over a title in GeekLists displays all covers with descriptions (sidebar to the left of the cover). If the number is large, it may take a while to load. Also in the video section, hovering over a video shows Imagus videos and hovering over a title shows an album of images related to that game.\n\nEXAMPLES\nhttps://boardgamegeek.com/crowdfunding\nhttps://boardgamegeek.com/videos/boardgame/all\nhttps://boardgamegeek.com/geeklist/318487/mikkos-top-100-2023-edition\nhttps://boardgamegeek.com/geeklists?sort=hot&interval=twodays" }, "Bon.ua-s-p": { "link": "^bon\\.ua\\/\\w\\w/obyavlenie\\/.+", "res": ":\nvar i = $._.indexOf('<div class=\"message-image swiper-container\">');\nif(i<0) { return null; }\nvar t = $._.indexOf('<div class=\"swiper-pagination\"></div>', i);\nif(t<0) { return null; }\nlet data=$._.substring(i,t);\nvar res = [];\nvar re = /src=\"([^\"]+)\"/gi\nvar a = re.exec(data);\nwhile(a) {\n res.push([a[1]]);\n a = re.exec(data);\n}\nreturn res;\n", "note": "Baton34V\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=500#2\nOLD\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=2060#14\n\nПРИМЕР\nhttps://bon.ua/ru/avtozapchasti/accesuari" }, "BOOKING.COM-s": { "link": "^(?:(booking.com/hotel/.*\\.html)\\?.+$|booking_album/[^!]+!(.+))", "url": ": $[1]||'data:,'+$[0]", "res": ":\nif($[2])return $[2].split(\"!\").map(i=>[i]);\nreturn [...$._.matchAll(/highres_url:\\s*'(.+?)'/g)].map(i => [i[1], '']);", "img": "^([^/]*bstatic\\.com/.*images/hotel)/(?:square\\d+|max\\d+(?:x\\d+)?)/(.*\\.jpg.*)", "loop": 2, "to": ":\nconst show_thumbs_as_album = true\nconst start_album_at_hovered_image = true\n\nconst n=this.node;\nif(show_thumbs_as_album&&/^(?:js-hotel-thumb|bh-photo-)/.test(n.parentNode?.className||n.className||'')){\nlet m=(n.parentNode?.className||n.className||'').startsWith('js-hotel-thumb') ? [...n.parentNode.parentNode?.querySelectorAll('img')||[]].map(i=>i.src?.replace(/(?:square\\d+|max\\d+(?:x\\d+)?)/,'max2048x2048')) : [...document.documentElement.outerHTML.matchAll(/highres_url:\\s*'([^']+)/g)].map(i=>i[1]);\nif(start_album_at_hovered_image)m=m.slice(m.findIndex(i=>RegExp($[2].match(/^[^?]+/)[0]).test(i)));\nreturn m?.length ? '//booking_album/'+$[1]+'!'+m.join(\"!\") : `${$[1]}/max2048x2048/${$[2]}`\n}\nreturn `${$[1]}/max2048x2048/${$[2]}`", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/1dm7373/comment/labwjrp\nOLD\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=660#2\n\n!!!\nIt has two variables in the to field. show_thumbs_as_album enables the album function and start_album_at_hovered_image truncates the album so it starts at the image that's hovered over.\n\n\nПРИМЕРЫ / EXAMPLES\nhttps://www.booking.com/searchresults.ru.html?city=-126693\nhttps://www.booking.com/hotel/al/vila-golden-sand.ru.html" }, "Booru.org|MSPAbooru-x": { "useimg": 1, "link": "^(?:mspabooru\\.com|[\\da-z-]{1,30}\\.booru\\.org)/index\\.php\\?page=post&s=view&id=\\d+", "url": "//$&", "res": "=\"(https?://(?:mspa|img\\.)booru\\.[^\"]+)\" id=\"image\"", "img": "^thumbs\\d*\\.((?:booru\\.org|mspabooru\\.com)/)(?:([^/]+/)(?:thumbnails/+)?)?(\\d+/)thumbnail_([^?]+).*", "to": ":\nreturn ($[1][0]=='b'?'img.':'')+$[1]+($[2]||'')+'images/'+$[3]+$[4];", "note": "imqswt\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/n4vjka0\nOLD\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3360\n\n!!!\nВ РФ может понадобиться американский прокси.\n\nПРИМЕРЫ / EXAMPLES\nhttps://www.reddit.com/domain/booru.org/new\nhttps://www.reddit.com/domain/mspabooru.com/new\nhttps://mspabooru.com/index.php?page=post&s=list&tags=all" }, "Booru.Allthefallen.moe-x-p": { "link": "^booru\\.allthefallen\\.moe/posts/\\d+", "res": "\"og:(?:video|image):secure_url\" content=\"([^\"]+)", "useimg": 1, "img": "^(booru\\.allthefallen\\.moe/data/)\\d+x\\d+(/[^.]+\\.)(\\w+)", "to": "$1original$2#$3 png mp4 gif jpeg jpg#", "note": "imqswt\nhttps://www.reddit.com/r/imagus/comments/1pw50b5/comment/nw4vmkt\n\n!!!\nТолько американский прокси для РФ (очень сложная капча).\n\nEXAMPLES\nAllTheFallen.moe" }, "BOOTH-g": { "link": "^(?:[a-z\\d-]+\\.)?booth\\.pm/(?:[a-z]{2}/)?items/\\d+", "url": ": ($[1]?'data:,':'')+$[0]", "res": ":\n// Full size images sometimes have different extensions than thumbnails. Trying multiple URLs didn't work in 'to' field.\n\nif(!$[1])return [...$._.matchAll(/data-origin=\"([^\"]+)/g)].map(i=>[i[1]])\nconst u='//'+$[1]+$[2]+'.', e=['jpg','png','jpeg'].filter(i=>i!==$[3]);\nreturn [[[u+$[3],u+e[0],u+e[1],$[0]]]]", "img": "^(booth\\.pximg\\.net/)\\w/\\d+x\\d+\\w*/((?:[a-f0-9-]{36}/i/\\d+|users/\\d+/icon_image)/[a-f0-9-]{36})_base_resized\\.([a-z]+).*", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/1hi5fs8/comment/m2y7oud\n\nEXAMPLES\nhttps://sakubey.booth.pm/\nhttps://booth.pm/en/search/RED\nhttps://booth.pm/en/browse/Postcards" }, "BoundHub-x-p": { "link": "^boundhub\\.com/(album|video)s/\\d+/.+", "url": ": (/boundhub\\.com$/.test(location.hostname)?'data:,':'')+$[0]", "res": ":\nif($.base[0]==='d'){\nconst x=new XMLHttpRequest();\nx.open('GET',$[0],false);\nx.send();\n$._=x.responseText;\n}\nif($[1]==='album')return [...$._.matchAll(/<a href=\"([^\"]+)\" class=\"item\"/g)].map(i=>[i[1]]);\n$=$._.match(/video_url: '([^']+)/);\nreturn $?$[1]+'#mp4':''", "img": "^boundhub\\.com/get_image/.+", "to": "$&", "note": "imqswt\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/niwz28s\nOLD\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/lprtt10\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/kwxhmsm\n\nEXAMPLES\nhttps://www.boundhub.com/search/skin/\nhttps://www.boundhub.com/categories/boots/\nhttps://www.boundhub.com/albums/24391/bound-and-shock-girl-300/\nhttps://www.reddit.com/domain/boundhub.com/new" }, "Brazzers|Mofos|Realitykings|Twistys-x-q-p": { "link": "(?:brazzers|rk|realitykings|mofos|digitalplayground|twistys)\\.com\\/(?:video|scene|series)\\/(\\d+)\\/.+", "res": ":\nconst max_resolution = 720;\n\nconst m = /jwt\":\"([^\"]+)/g.exec($._);\nconst token = m ? m[1] : null;\nif (!token) return;\n\nconst req = new XMLHttpRequest();\nreq.open(\n 'GET',\n `https://site-api.project1service.com/v2/releases/${$[1]}`,\n false\n);\nreq.setRequestHeader('instance', token);\nreq.send();\nif (req.status !== 200) return;\n\nlet data = {};\ntry {\n data = JSON.parse(req.responseText);\nconsole.log(data);\n} catch (e) {\n return;\n}\n\nlet streams = data.result.children.find(\n (c) => c.type.toLowerCase() === 'trailer'\n)?.videos?.full?.files;\n\nif (!streams) {\n streams = data?.result?.videos?.mediabook?.files;\n streams = Object.keys(streams).map((key) => streams[key]);\n}\nif (!streams) return;\n\nconst trailers = streams\n .map((s) => ({\n res: Number(s.format.replace(/\\D/g, '')),\n url: s.urls.view,\n }))\n .filter((a) => a.res <= max_resolution)\n .sort((a, b) => b.res - a.res);\n\nreturn trailers?.[0]?.url;\n", "note": "gpl2731\nhttps://www.reddit.com/message/messages/2mm4bgt\nOLD\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=2732&limit=1&m=1#1\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3780#4\n\n\nbrazzers.com\ndigitalplayground.com\nmofos.com\nrealitykings.com\nrk.com\ntwistys.com\n\nChange max_resolution to your max preferred resolution.\ne.g.\n1080 will result in 1080p video\n900 will result in 720p video\n\nEXAMPLES\nhttps://www.mofos.com/home\nhttps://www.brazzers.com/videos\nhttps://www.twistys.com/scenes\nhttps://www.digitalplayground.com/scenes?groups=9031" }, "Brightspotcdn-CDN": { "img": "^[a-z\\d-]+\\.brightspotcdn\\.com/[^?]*\\?url=(http[^&]+).*", "dc": 2, "to": ":\nreturn $[1].replace('california-times-brightspot.s3.amazonaws.com', 'california-times-brightspot-lower.s3.amazonaws.com')", "note": "hababr\nhttps://www.reddit.com/r/imagus/comments/1hxtp67/comment/nmr6k0k\nOLD\nhttps://www.reddit.com/r/imagus/comments/1hxtp67/comment/m6d197u\n\nEXAMPLES\nhttps://www.reddit.com/r/imagus/comments/1hxtp67/request_brightspotcdncom/\nhttps://www.ipm.org/2025-09-12/this-shop-fixes-student-instruments-for-free-now-a-music-legend-is-chipping-in\nhttps://www.latimes.com/entertainment-arts/business/story/2025-10-29/paramount-1000-layoffs-skydance-david-ellison" }, "Brighteon-h": { "link": "^brighteon\\.com/(?:live/)?[a-f0-9-]{36}", "loop": 1, "res": "\"(?:source\":\\[{\"src|livestreamAddress)\":\"([^\"]+)", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/ms8k7c1/\n\nEXAMPLES\nhttps://www.brighteon.com/browse/popular-videos\nhttps://new.reddit.com/domain/brighteon.com/new" }, "Brutalica.ru-s": { "link": "^brutalica\\.ru/[\\w-]+/[\\w-]+(/[\\w-]+)?", "res": ":\nvar i = $._.indexOf('<ul class=\"more-image\">');\nif(i<0) { return null; }\nvar t = $._.indexOf('</ul>', i);\nif(t<0) { return null; }\nvar res = [];\nvar re = /href=\"([^\"]+)\"/gi\nvar data=$._.substring(i,t);\nvar a = re.exec(data);\nwhile(a) {\n res.push([a[1]]);\n a = re.exec(data);\n}\nreturn res;\n", "note": "Baton34V\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3660#3\n\nПРИМЕРЫ\nhttps://brutalica.ru/bestech/\nhttps://brutalica.ru/skladnie-nozhi/" }, "Bugzilla": { "link": "^bug(?:s|zilla)\\.[^/]{5,20}/attachment\\.cgi\\?id=\\d+$", "to": ":\nvar n=this.node, p = n.parentNode, q = p&&p.parentNode; q = q && q.querySelector('.bz_attach_extra_info,.attach-info');\nlet ext = /[.\\/](jpe?g|png|gif|bmp|web[mp]|svg|mp4|ogv)(?:[\\n\\s]|$)/i.exec(n.title || n.textContent)?.[1];\nreturn q && ~q.textContent.indexOf('image/') || ext || n.classList.contains('lightbox') ? $[0] + (ext ? '#' + ext : '') : ''", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/lhtutsc\nOLD\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=2080#15\n\n\nEXAMPLES\nhttps://bugzilla.mozilla.org/show_bug.cgi?id=1833842\nhttps://bugzilla.mozilla.org/show_bug.cgi?id=1048286\nhttps://bugzilla.mozilla.org/show_bug.cgi?id=1605229" }, "Bunkr-h-x-p": { "link": "^((?:[^.]+\\.)?bunkr+\\.[a-z]+)/[vfi]/.+", "url": ":(location.hostname===$[1]?'data:,':'')+$[0]", "res": ":\nif($.base[0]==='d'){const x=new XMLHttpRequest();x.open('GET',$[0],false);x.send();$._=x.responseText}\n\n$=$._.match(/videoCoverUrl\\s*=\\s*\"([^\"]+)/)?.[1]?.replace(/^(https:\\\\?\\/\\\\?\\/[^\\\\\\/]+)\\\\?\\/thumbs\\\\?(\\/[^.]+\\.[^_]+)_.*/,'$1$2')||$._.match(/text-xl\"\\s+href\\s*=\\s*\"([^\"]+)/)?.[1]||'';\nreturn $+'?__bunkr__'+(/\\.m[ok]v$/i.test($)?'#mp4':'')", "note": "imqswt\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/mvr4f69\nOLD\nhttps://www.reddit.com/r/imagus/comments/17cnl32/comment/m79ge81\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/luhjuwc\n\n\n!!!\n- В некоторых случаях фильтр может выдавать ошибку (красный спиннер) по разным причинам, например \"Too many requests\". Или это могут быть проблемы с конкретным сервером (надо просто подождать).\n- для домена bunkr.si нужен хороший прокси\n==\nIn some cases, the sieve may throw an error (red spinner) for various reasons, for example \"Too many requests\". Or it could be a problem with a particular server (you just have to wait).\n\n\nПРИМЕРЫ / EXAMPLES\nhttps://www.reddit.com/domain/bunkr.si/new/\nhttps://bunkr-albums.io/topvideos\nhttps://bunkr.black/a/WvSJQXFt\nhttps://bunkr.si/a/uqZSLA31\nhttps://bunkr.si/a/w8rfEv3x" }, "Casimages-h-p": { "link": "^casimages\\.com/(?:i/[^.]+\\.jpg\\.html|f/([A-Za-z0-9]+))", "res": ":\nreturn $[1] ? \"https://www.casimages.com/f_get.php?f=\"+$[1]+\"#mp4\" : ($._.match(/<a href=\"([^\"]+)\"><img border/)||[])[1]??''", "img": "(nsm(?:\\d+)\\.casimages\\.com/img/\\d{4}/\\d{2}/\\d{2}//)mini_(\\d+\\.(?:jpe?g|a?png|gif))", "to": "$1$2", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/130svfu/comment/jnit0kk\n\nEXAMPLES\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=40#15" }, "Catalog.Onliner.by-s": { "link": "^catalog\\.onliner\\.by/\\w+/\\w+/\\w+", "res": ":\n$=$._.match(/gallery:(\\[[^\\]]+\\])/)?.[1].replace(/main:[^\",]+,/g,'').replace(/(retina|main|thumbnail):/g,'\"$1\":');\n$=$?JSON.parse($):[];\nreturn $.map(i=>[i.retina])", "img": "^(content2?\\.onliner\\.by/)(?:(catalog/device/)\\w+(/[0-9a-f]+\\.jpe?g)$|(review/\\d+/)\\d+x\\d+)", "to": ":\nreturn $[2] ? $[1]+$[2]+'main'+$[3] : $[1]+$[4]+'original'", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/muujej4\nOLD\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3720#11\n\nПРИМЕРЫ\nhttps://catalog.onliner.by/notebook\nhttps://catalog.onliner.by/smartwatch/huawei/gt3protit46avsp/reviews" }, "Celeb.gate-x": { "link": "^elktube\\.com/(?:\\w+-)+\\w+/", "res": ":\n$=$._.match(/\"og:video:url\" content=\"https?:\\/\\/([A-Za-z0-9]+)/)\nreturn $ ? atob($[1]) : ''", "img": "^(celeb\\.gate\\.cc/media/cache/)[^/]+|^(elktube\\.com/)wp-content/uploads/\\d{4}/\\d{2}/([^/._]+)_thumb1-\\d+x\\d+\\.jpg$", "loop": 2, "to": ":\nreturn $[1] ? $[1]+'original' : this.node.getAttribute('data-html')?.match(/http[^\"]+/)?.[0]||`https://www.${$[2]+$[3]}/`", "note": "imqswt\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/nt3umxr\nOLD\nhttps://www.reddit.com/r/imagus/comments/8zq1dq/comment/e2l91z7\n\n\nEXAMPLES\nhttps://celeb.gate.cc/melissa-rauch/gallery.html\nhttps://celeb.gate.cc/oona-chaplin/gallery.html#videos" }, "Ceneo.pl-s": { "link": "^(?:redirect\\.)?ceneo\\.pl/(?:products/)?\\d+", "res": ":\nlet o=JSON.parse(($._.match(/<script type=\"application\\/ld\\+json\">\\n(\\{.+?})\\n<\\//s)||'{}')?.[1]);\nif(!o.image)return null;\nreturn o.image.map((i,n)=>[i,!n?o.description:''])", "img": "^(image\\.ceneostatic\\.pl/data/products/\\d+/)[^i]", "to": "$1i", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/lohqhfa\nOLD\nhttps://www.reddit.com/r/imagus/comments/130svfu/comment/joowxsu\n\n!!!\n- To see all the product photos, you need to hover the cursor over the product name.\n- Some products (rarely) may have a \"yellow indicator\".\n\n\nEXAMPLES\nhttps://www.ceneo.pl/Komputery\nhttps://www.ceneo.pl/Konsole_do_gier;szukaj-konsole+do+gier" }, "ChipDip.ru-s": { "link": "^chipdip\\.ru/product\\d?/.+", "res": ":\nvar i = $._.indexOf('<div class=\"product__image-previews\" id=\"productphotobox\">');\nif(i<0) { return null; }\nvar t = $._.indexOf('<div class=\"product_main-controls\">', i);\nif(t<0) { return null; }\nvar res=[];\nvar re = /span data-fancybox-href=\"([^\"]+)\"[^>]+title=\"([^\"]+)\"/gi\nvar a = re.exec( $._.substring(i,t) );\nwhile(a) {\n res.push([a[1],a[2]]);\n a = re.exec( $._.substring(i,t) );\n}\nif(!res.length){\n var re2 = /id=\"productphoto\" data-fancybox-href=\"([^\"]+)/\n a = re2.exec( $._.substring(i,t) );\n res.push([a[1]]);\n}\nreturn res;", "note": "Baton34V\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=2380#3\nOLD\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=2320#12\n\n!!!\nКурсор наводить на название товара.\n\nПРИМЕРЫ\nhttps://www.chipdip.ru/catalog-show/hand-tools-sets\nhttps://www.chipdip.ru/catalog-show/screwdrivers-with-attachments" }, "Chromium": { "img": "^(bugs\\.chromium\\.org/p/chromium/issues/attachment\\?aid=\\d+(?:&[^&]+)*?&inline=[^&]+).*", "to": "$1" }, "CIAN.ru-s": { "link": "(\\w+\\.)?cian\\.ru/.*\\d+/", "res": ":\nvar i = $._.indexOf('\"photos\":');\nif(i<0) { \n i = $._.indexOf('\"gallery\":{\"imageList\":');}\nif(i<0) { return null; }\nvar t = $._.indexOf('}]', i);\nif(t<0) { return null; }\nvar res = [] \nvar re = /\"fullUrl\":\"([^\"]+)\"/gi\nvar a = re.exec( $._.substring(i,t) );\nwhile(a){\n res.push([a[1].replace(/\\\\u002F/g,'/')]);\n a = re.exec( $._.substring(i,t) );\n}\nreturn res;", "img": "(cdn-p\\.cian\\.site/images/.+-)\\d(\\.jpe?g?)", "to": "$11$2", "note": "Baton34V\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=2920#9\nOLD\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=2920#6\n\n\n!!!\nКурсор наводить на название объекта.\n\n\nПРИМЕРЫ\nhttps://www.cian.ru/snyat-kvartiru/\nhttps://www.cian.ru/kupit-dom-moskovskaya-oblast/" }, "CITILINK.ru-s": { "link": "^citilink\\.ru/product/[\\w-]+/", "res": ":\nreturn (JSON.parse($._.match(/\"__NEXT_DATA__\" type=\"application\\/json\">({.+?})<\\/script/)?.[1]||'{}').props?.initialState?.productPage?.productHeader?.payload?.productBase?.images||[]).map(i=>[i.sources.pop().url])", "img": "^cdn\\.citilink\\.ru/[^/]+/resizing_type:fit/gravity:sm/width:\\d{2,3}/height:\\d{2,3}/plain/product-images/[^.]+\\.jpg", "to": ":\nthis.cl_imgs=this.cl_imgs||JSON.parse(document.body.outerHTML.match(/\"__NEXT_DATA__\" type=\"application\\/json\">({.+?})<\\/script/)?.[1]||'{}').props.initialState.productPage.productHeader.payload.productBase.images;\n$=this.cl_imgs.find(i=>i.sources.find(x=>x.url==='https://'+$[0])).sources;\nreturn $[$.length-1].url", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/l3kklo1\nOLD\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=2100#8\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3380#20\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=2860#7\n\nПРИМЕРЫ\nhttps://www.citilink.ru/catalog/noutbuki/?sorting=rating_desc&pf=discount.any%2Crating.any&f=discount.any%2Crating.any%2Chuawei\nhttps://www.citilink.ru/catalog/stiralnye-mashiny/?sorting=price_asc" }, "Civitai-g-q": { "link": "^(civitai\\.com/)(?:(model|image|post)(s/\\d+)|(?!articles?)\\w+/\\d+/.+).*", "url": ": $[2]?.[0]==='m' ? `https://${$[1]}api/v1/${$[2]+$[3]}` : $[0]", "res": ":\nconst include_nsfw_in_model_album = false // True shows all images on model links\nconst hide_content_message = false // True hides restricted content caption message\n\nif($[2]?.[0]==='m'){\n$=JSON.parse($._).modelVersions?.[0]?.images||[];\nconst t=!include_nsfw_in_model_album&&!hide_content_message&&$.some(i=>i.nsfwLevel>1) ? '[WARNING! To show restricted content in albums, open the Civitai-g sieve and and set include_nsfw_in_model_album to true. To hide this message, set hide_content_message to true.]' : '';\nreturn $.filter(i=>include_nsfw_in_model_album||i.nsfwLevel==1).map(i=>[i.url.replace(/width=\\d+\\//,'original=true/'),t])\n}\nlet u=$._.match(/https:\\/\\/image\\.civitai\\.com\\/[^\\/]+\\//)?.[0]||'https://image.'+$[1]+'xG1nkqKTMzGDvpLrqFT7WA/', o=JSON.parse($._.match(/\"application\\/json\">({.+?})</)[1]).props?.pageProps?.trpcState?.json?.queries?.find(i=>i.state?.data?.pages||i.state?.data?.url&&i.state?.data?.name)?.state.data||{};\nreturn o.pages ? o.pages[0].items.map(i=>[u+i.url+'/original=true/'+i.name]) : o.url&&o.name ? u+o.url+'/original=true/'+o.name : {loop:this.node.src||''}", "img": "^(image\\.civitai\\.com/[^/]+/[^/]+/)[^/]*width=[\\d.]+", "to": "$1original=true", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/1jpl1jq/comment/mlc7djq\nOLD\nhttps://www.reddit.com/r/imagus/comments/1e1g1s4/comment/m09ms0j\nhttps://www.reddit.com/r/imagus/comments/1e1g1s4/comment/lcu1dn3\n\n\n!!!\nIn cases where a site hides some images due to restrictions (e.g. NSFW content), the sieve will display a message to that effect:\n\"To show restricted content in albums, open the sieve and and set include_nsfw_in_model_album to true\". To hide this message, set hide_content_message to true.\n\n\nEXAMPLES\nhttps://civitai.com/tag/green\nhttps://civitai.com/user/no_data/models\nhttps://civitai.com/user/Lunakrita/posts?sort=Newest\nhttps://www.reddit.com/domain/civitai.com/new/" }, "clip2net|c2n.me-h": { "link": "(?:^clip2net\\.com/s/|^c2n\\.me/)\\w+$", "res": "<meta property=\"og:image\" content=\"([^\"]+)\">", "note": "Baton34V\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=2580#13\nOLD\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=2320#18\n\n\nПРИМЕРЫ / EXAMPLES\nhttps://clip2net.com/gallery_view.html\nhttps://www.reddit.com/domain/c2n.me/new/" }, "clips4sale-x-p": { "link": "^clips4sale\\.com/(?:[a-z]{2}/)?studio/\\d+/\\d+", "res": ":\n$=JSON.parse($._.match(/window\\.__remixContext = ({.+?});/)?.[1]||'{}').state?.loaderData[\"routes/($lang).studio.$id_.$clipId.$clipSlug\"].clip\nreturn $.customPreviewUrl||$.cdn_preview_link||$.previewUrl?[$.customPreviewUrl||$.cdn_preview_link||$.previewUrl,$?.description||'']:[...$.description.matchAll(/\"(http[^\"]+\\.gif[^\"]*)/g)].map(i=>[i[1]])", "img": "^imagecdn\\.clips4sale\\.com/.*(?:jpe?g|png|gif)", "to": ":\nconst img_elem = document.querySelector(`img[src*=\"${$[0]}\"]`);\nconst gif = img_elem.getAttribute(\"data-src\")\nreturn gif || img.elem.src;", "note": "imqswt\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/kzijd3q\nOLD\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3620#12\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3616#1\n\n\nПРИМЕРЫ / EXAMPLES\nhttps://www.reddit.com/domain/clips4sale.com/new\nhttps://www.clips4sale.com/studio/122965/eva-de-vil\nhttps://www.clips4sale.com/studio/76569/goddess-lindsey" }, "CNN-m": { "link": "^(?:\\w+\\.){0,2}cnn\\.(?:com|io)/(?:.+(/video[/-])|.+)", "url": ": $[1] ? $[0] : ''", "res": ":\nif($[1])return $._[0]==='{' ? JSON.parse($._).files?.[0]?.fileUri : $._.match(/\"VideoObject\",\"contentUrl\":\"([^\"]+)/)?.[1]||'';\nreturn this.node.querySelector('img')?.src?.replace(/(\\?c=).+/,'$1original')||''", "img": "^(media\\.cnn\\.com/api/v1/images/[^?]+).*", "loop": 2, "to": ":\nlet n=this.node, m;\nif(m=n.closest('.video-resource'))return '//fave.api.cnn.io/v1/video?id='+m.getAttribute('data-video-id')+'&stellarUri='+m.getAttribute('data-uri');\nreturn $[1] ? $[1]+'?c=original' : n.querySelector('img')?.src?.replace(/(\\?c=).+/,'$1original')||''", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/1isyupe/comment/me520mu\n\n\nEXAMPLES\nhttps://edition.cnn.com/\nhttps://edition.cnn.com/world/americas\nhttps://edition.cnn.com/entertainment/celebrities\nhttps://edition.cnn.com/videos" }, "Communities.win": { "img": "^media\\.(?:communities\\.win|scored\\.co)/preview/\\w+\\..+", "to": ":\nlet urlNode=this.node.parentNode.parentNode.nextElementSibling.children[1].firstChild;\nreturn urlNode.getAttribute('href');", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/nl3pxcm\nOLD\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1160#20\n\nEXAMPLES\nhttps://communities.win/c/all\nhttps://communities.win/c/Animals/" }, "ComputerUniverse-s": { "link": "^(computeruniverse\\.net)/\\w\\w/p/\\d+", "url": ": (location.hostname.endsWith($[1])?'data:,':'')+$[0]", "res": ":\nif($.base[0]==='d'){\nconst x=new XMLHttpRequest();\nx.open('GET',$[0],false);\nx.send();\n$._=x.responseText;\n}\n$=$._.match(/<script id=\"__NEXT_DATA__\" type=\"application\\/json\" nonce=\"[a-f0-9-]+\">(.+?)<\\/script>/);\n$=$&&JSON.parse($[1]).props?.pageProps?.fullPageProps?.staticProps?.product?.AssetModels||[];\nreturn $.filter(i=>i.Type==='PICTURE'&&i.Purpose!=='BADGE').map(i=>[`https://img.computerunivers.net/cp/images/${i.Width}x${i.Height}/${i.AssetId}`])", "img": "^(img\\.computerunivers\\.net/(?:cp/)?images/)\\d+x\\d+", "to": "$11000x1000", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/landzre\nOLD\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1600#4\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1200#13\n\n\n\nEXAMPLES\nhttps://www.computeruniverse.net/ru/c/noutbuki-planshety-i-pk/bloknoty-i-aksessuary\nhttps://www.computeruniverse.net/en/c/hardware-components/solid-state-drives-ssd" }, "Coomer|Kemono|Nekohouse-x-q-p": { "link": "^((?:beta\\.)?((?:kemono|coomer|nekohouse)\\.(?:cr|s[tu])))(/[^/]+/user/[^/]+/post/[\\w-]+).*", "url": ": ($[2][0]!=='n'?'data:,':'')+$[0]", "res": ":\nconst low_resolution_first = false\n\nif($[2][0]==='n'){\nconst t=$._.match(/\"post__content\">\\n<pre>(.+?)<\\/pre>/s)?.[1]||'';\nconst m=[...$._.matchAll(/(?:class=\"fileThumb\"[^\\w]+href|src(?==\"[^>]+type=\"video\\/[^\"]{3,4}\"))=\"([^\"]+)\"(?:[^>]+>[^>]+src=\"([^\"]+))?/g)].map((i,n)=>[[(!low_resolution_first?'#':'')+i[1]?.replace(/^\\/[^\\/]/,'//'+$[1]+'$&'),(!low_resolution_first?'':'#')+i[2]?.replace(/^\\/[^\\/]/,'//'+$[1]+'$&')],!n?t:'']);\nthis.CNT.filename=$._.match(/href=\"\\/[^\\/]+\\/user\\/\\d+\">\\n\\s+(\\S+)/s)?.[1]+'_'+m[0]?.[0]?.[0].match(/([\\w-]+)\\.[^\\/]+$/)[1];\nreturn m\n}\nlet res=[];\nconst img = (s,m,v=false) => {\nconst l=low_resolution_first, u=s+'/data'+m;\nreturn v ? [u+'#mp4',u+'#mp3'] : [(l?'':'#')+u,!/\\.gif/.test(u)&&(l?'#':'')+'//img.'+$[2]+'/thumbnail/data'+m];\n}\nconst x=new XMLHttpRequest();\nx.open('GET',`https://${$[1]}/api/v1${$[3]}#kemono_header`,false);\nx.setRequestHeader('accept','text/css');\nx.send();\n$._=x.responseText;\n$._=JSON.parse($._);\n$._.attachments?.forEach(i=>i.server&&i.path&&!/^\\.(?:7z|bin|docx?|pdf|rar|txt|zip)/.test(i.extension)&&res.push([img(i.server,i.path,true)]));\nif(!res.length&&this.find({href:$._.post?.embed?.url}))return {loop:$._.post.embed.url};\n$._.previews?.forEach(i=>i.server&&i.path&&res.push([img(i.server,i.path)]));\n$._=$._.post;\n[...$._.content?.matchAll(/ src=\"([^\"]+)/g)||[]].forEach(i=>res.push([i[1],$._.content.replace(/<[^>]+>/g,' ')]));\nlet n=document.querySelector('span[itemprop=\"name\"]')?.textContent;\nif(!n){\ntry{\nconst x=new XMLHttpRequest();\nx.open('GET',`https://${$[2]}/api/v1/${$._.service}/user/${$._.user}/profile`,false);\nx.send();\nn=JSON.parse(x.responseText).name;\n}catch(e){}\n}\nif(res[0])res[0][1]=[($._.published?'Publish':'Add')+'ed '+new Date($._.published||$._.added).toLocaleString().match(/^[^,]+/)[0],$._.title,(n||$._.user),$._.content||''].filter(Boolean).join(' | ');\nthis.CNT.filename=(n||$._.user).replace(/[^\\w.-]/g,'_')+' - '+$._.title?.replace(/[^\\w.-]/g,'_')||'';\nreturn res", "img": "^(img\\.)?((?:coomer|kemono|nekohouse)\\.(?:cr|s[tu]))/thumbnail", "to": ":\nreturn $[1] ? '//n'+Math.ceil(Math.random()*4)+'.'+$[2] : $[2]", "note": "imqswt\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/o3b9set\nOLD\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/o0trudt\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/nbst12s\n\n\n\n\n!!!\n- В фильтре есть возможность установить средний размер загружаемых картинок (для быстрой загрузки):\nconst low_resolution_first = true\nа также переключаться между средним/высоким размером (клавишей TAB);\n- названия изображений сохраняются со страницы автора в формате [имя автора] - [название изображения].[расширение] - при сохранении по горячей клавише. NB: включенные в браузере расширения менеджеров закачек (например, IDM) могут мешать работе фильтра.\n\n==\nIn the sieve there is an option to set the average size of uploaded images (for fast loading):\nconst low_resolution_first = true\nand also to switch between medium/high resolution (with TAB key);\n- Image names are saved (via hotkey only) from the author's page in the format [author name] - [title].[ext]. NB: Download manager extensions (e.g., IDM) enabled in your browser may interfere with the sieves's operation.\n\nEXAMPLES\nhttps://kemono.cr/boosty/user/xxnikichenxx\nhttps://kemono.cr/subscribestar/user/callmehaymaker\nhttps://coomer.st/onlyfans/user/twinhentai\nhttps://nekohouse.su/fantia/user/32900\nhttps://www.reddit.com/domain/coomer.st/new\nhttps://www.reddit.com/domain/kemono.cr/new" }, "Coub-h": { "link": "^coub\\.com/view/\\w{4,6}", "res": ":\n$=JSON.parse($._.match(/'coubPageCoubJson' type='text\\/json'>\\n?([^\\n]+)/)?.[1]||'{}').file_versions;\nreturn $ ? [[$.share?.default],[$.html5?.audio?.high?.url||$.html5?.audio?.med?.url],[$.html5?.video?.high?.url]] : ''", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/m7mgczo\nOLD\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/kgkh2pt\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=2600#3\n\n!!!\nКурсор следует наводить на название ролика.\n==\nThe cursor should be pointed at the title of the video.\n\n\nПРИМЕРЫ / EXAMPLES\nhttps://coub.com/hot\nhttps://coub.com/tags/crocodiles\nhttps://www.reddit.com/domain/coub.com/new/" }, "Couchsurfing": { "img": "(blog\\.couchsurfing\\.com/wp-content/uploads/[^.]+\\.(?:jpe?g|png))", "to": "$1", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/130svfu/comment/jnit0kk\n\nEXAMPLES\nhttps://blog.couchsurfing.com/page/2/\nhttps://blog.couchsurfing.com/category/all/community/meet-a-host/\nhttps://blog.couchsurfing.com/category/all/couchsurfing-travel/travel-guides/" }, "craigslist": { "link": "^[^.]+\\.(craigslist\\.[a-z]{2,3}/[^.]+/\\d+)\\.html", "res": ":\n$ = $._&&$._.match(/data-imgid=\"[^\"]+\" href=\"([^\"]+)/g)\nvar f=this.find, s = this.node.matches('img[src*=\"images.craigslist.org\"]') && this.node.src\nreturn $ && $.map(function(x){\n x=x.slice(x.lastIndexOf('\"') + 1)\n return [f({src: x})]\n}) || s && this.find({src: s}) || !1", "img": "^(images\\.craigslist\\.org/\\w+_\\w+_)(?!1200x900)[^.]+", "to": "$1#1200x900 600x450#", "note": "EXAMPLES\nhttps://london.craigslist.org/search/off?lang=en&cc=us\nhttps://london.craigslist.org/search/sss?lang=en&cc=us" }, "CSFD.cz|CSFD.sk": { "img": "^(image\\.pmgstatic\\.com/).+?(files/images.+)", "to": "$1$2", "note": "64h\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1100#3\n\n!!!\nIn some cases, the cursor needs to be hover again.\n+\nThe filter for uBO (uBlock Origin) extension - it is necessary for the sieve to work in Galleries:\nIn uBO Settings -> My Filters -> Add this line:\ncsfd.cz,csfd.sk##.media-img > picture > img:style(pointer-events: auto !important)\n\nEXAMPLES\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1080#13" }, "CyberDrop-h-x": { "link": "^(?:(cyberdrop\\.me/)f/(\\w+)|api\\.cyberdrop\\.me/api/file/auth/\\w+)", "url": ": $[2] ? `https://api.${$[1]}api/file/info/${$[2]}` : $[0]", "res": ":\nif($[2]){\nthis.cd_type=JSON.parse($._).type\nreturn {loop:'https://api.cyberdrop.me/api/file/auth/'+$[2]}\n}\n$=JSON.parse($._).url+(this.cd_type.startsWith('video')?'#mp4':'')\ndelete this.cd_type\nreturn $", "note": "https://www.reddit.com/r/imagus/comments/z0zyox/comment/l9liuzp\nOLD\nhttps://www.reddit.com/r/imagus/comments/1bs0clo/comment/kxis1yh\n\nEXAMPLES\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1369&limit=1&m=1#1" }, "CyberDrop_album-h-x": { "link": "^(cyberdrop\\.me)/([af])(/\\w+).*", "url": ": $[2]==='f' ? `https://api.${$[1]}/api/file/auth${$[3]}` : $[0]", "res": ":\nconst max_album_images = 100 // Maximum images in album. Lower number loads faster\n\nif($[2]==='a'){\n this.cd_album={\n links: [...$._.matchAll(/<a id=\"file\" href=\"([^\"]+)/g)].map(i=>'//'+$[1]+i[1]),\n num: 0\n }\n return {loop:this.cd_album.links[0]}\n}\nlet m=this.cd_album?.vids||[];\n$=JSON.parse($._).url;\nm.push([[$,$+'#mp4']]);\nif (this.cd_album) {\n this.cd_album.num++;\n const n=this.cd_album.num, l=this.cd_album.links;\n if(n<l.length&&n<max_album_images){\n this.cd_album.vids = m;\n return {loop:l[n]}\n }\n delete this.cd_album;\n}\nreturn m", "note": "imqswt\nhttps://old.reddit.com/r/imagus/comments/z0zyox/appeal_to_everyone_who_knows_how_to_make_sieves/m1zf4xx/\nOLD\nhttps://www.reddit.com/r/imagus/comments/1gs33yq/comment/lzu4t8p\n\n!!!\n- To view external links to galleries (images / video) you may need to first log in to the site and be verified, after that you can already view any links to galleries in the current session;\n- To make the album load faster, you can reduce the number of preview images in the album in the option: \nconst max_album_images = 300;\n- Cyberdrop set the content-disposition to download; use O to save.\n\n\nEXAMPLES\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1369&limit=1&m=1#1" }, "CyberFile-h-x": { "link": "^cyberfile\\.me/\\w+", "res": ":\nlet x=new XMLHttpRequest()\nx.open('POST','https://cyberfile.me/account/ajax/file_details',false)\nx.setRequestHeader(\"Content-Type\",\"application/x-www-form-urlencoded; charset=UTF-8\")\nx.send('u='+$._.match(/showFileInformation\\((\\d+)/)[1])\nreturn (x.responseText.match(/source src=\\\\\"([^\"]+)/)||[,''])[1].replaceAll('\\\\','')\n", "note": "imqswt\nhttps://www.reddit.com/r/imagus/comments/130svfu/comment/k0jqmfs\n\n!!!\nДля работы с внешними ссылками в FireFox необходимо правило для SMH (см. ЧаВо, п.12).\nНа данный момент фильтр не работает на внешних ссылках в Хромиум-браузерах. \n==\nTo work with external links in Firefox, you need a rule for SMH (see FAQ, p. 12). At the moment, the rule does not work on external links in Chromium browsers.\n\n\nEXAMPLES\nhttps://www.reddit.com/domain/cyberfile.me/new/" }, "DailyMail-m": { "link": "^dailymail\\.co\\.uk/(?:[^/]+/)*article-\\d+", "res": ":\n$=[...$._.matchAll(/<(?:source src=\"([^\"]+)|img id=\"[^\"]*\"[^>]+src=\"([^\"]+)\" height[^>]+alt=\"([^\"]*)\"[^>]+style=\")/g)];\nreturn $.map(i=>[i[1]||i[2],i[3]||''])", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/1fc2ge9/comment/lm7ot2q\nOLD\nhttps://www.reddit.com/r/imagus/comments/tutndw/sieve_for_dailymailcouk_images/\n\n\nEXAMPLES\nhttps://www.dailymail.co.uk/home/index.html" }, "DailyMotion-h-p": { "link": "dailymotion\\.com/(?:embed/)?video/(\\w+)", "url": "https://www.dailymotion.com/player/metadata/video/$1", "res": ":\nconst json = JSON.parse($._);\nconst res = json.qualities?.auto.length?[json.qualities.auto[0].url,json.title]:''\nthis.TRG.IMGS_ext_data = [\n '//' + 'data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1280\" height=\"720\"></svg>',\n `<imagus-extension type=\"videojs\" url=\"${res}\"></imagus-extension>${json.title} | ${json.owner.screenname}`\n]\nreturn res.length ? {loop:'imagus://extension'} : ''", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/130svfu/comment/jns5il6\n\n!!!\nДля просмотра видео по внешним ссылкам на Хпромиум-браузерах требуется правило для SMH (см.ЧаВо п.12).\n==\nTo view video via external links on Chromium browsers, a rule for SMH is required (see FAQ p.12).\n\n\nEXAMPLES\nhttps://www.reddit.com/domain/dailymotion.com/new/\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1360#11" }, "Danbooru.Donmai.us-x-p": { "link": "^(?:[^./]+\\.)?(donmai\\.)(?:us|moe)/post(?:s|/show)/(\\d+).*", "url": ": `${location.host.includes($[1])?'data:,':''}//danbooru.${$[1]}/posts/${$[2]}.json`", "res": ":\nif($.base[0]==='d'){\nconst xhr=/firefox/i.test(navigator.userAgent) ? new content.XMLHttpRequest() : new XMLHttpRequest();\nxhr.open('GET',`https://danbooru.${$[1]}us/posts/${$[2]}.json`,false);\nxhr.send();\n$._=xhr.responseText;\n}\nvar x = JSON.parse($._);\nreturn x&&x.file_url ? [x.file_url, (x.tag_string_general + (x.tag_string_artist ? ' by ' + x.tag_string_artist : '')).replace(/_/g, \" \")] : null", "img": "^((?:[^./]+\\.)?donmai\\.us/data/)[^/]+/(?:sample-)?([\\da-f]{32}\\.).+", "to": "#$1$2#jpg png gif webm#\n$1sample/sample-$2#jpg png gif#", "note": "imqswt\nhttps://www.reddit.com/r/imagus/comments/1lw4gnr/comment/nq0dxk6\nOLD\nhttps://www.reddit.com/r/imagus/comments/1lw4gnr/comment/nptelkt\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/ncvk74n\n\nEXAMPLES\nhttps://danbooru.donmai.us/artists/337081\nhttps://kagamihara.donmai.us/posts?tags=nanamesohuutei&z=1\nhttps://danbooru.donmai.us/posts?tags=yoshikirino" }, "Darudar-s": { "link": "^darudar\\.org/\\w+/\\d+", "res": ":\nreturn [...$._.matchAll(/href=\"([^\"]+)\"\\s+data-fancybox-group/g)].map(i=>[i[1]])", "img": "^(static\\.daru-dar\\.org/s)\\d+(/[0-9a-f]{2}\\.[0-9a-f]{2}/[0-9a-f]{2}/[0-9a-f]{2}/[0-9a-f]{2}/[0-9a-f]+\\.jpe?g)$", "ci": 2, "to": "$11024$2", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/130svfu/comment/jyil8u7\nOLD\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=580#11\n\nПРИМЕРЫ\nhttps://darudar.org/" }, "Daz3D-g-p": { "link": "^daz3d\\.com/[\\da-z-]+$", "res": ":\nvar r = $._.match(/data-fancybox-href=\"([^\"]+)/g) || !1, t = $._.match(/<h1>([^<]+)</)\nreturn r && r.map(function(x, i){\n return [x.slice(20).replace(/-thumb(-daz3d)/, '-main$1'), !i && t && t[1]]}\n)", "img": "^daz3d\\.com/cdn-cgi/image/[^/]+/(https:.+)", "to": ":\nreturn $[1].replace(/-thumb(-daz3d)/, '-main$1')", "note": "https://www.reddit.com/r/imagus/comments/jssrfx/daz3dcom_has_stopped_working/\n\nEXAMPLES\nhttps://www.daz3d.com/animals-and-creatures" }, "dcinside": { "link": "^gall\\.dcinside\\.com/(?:(?:(?:[^/]+/)?board/view/?|list\\.php)\\?id=[^&]+&no=|\\w+/)\\d+", "res": ":\nlet m\nif(m=$._.match(/^<script type=\"text\\/javascript\">location\\.replace\\(\"([^\"]+)/))return {loop:m[1]}\nif($._.includes('movie_view?no=')){\nm=[]\nconst vid=u=>{\nlet x=new XMLHttpRequest()\nx.open('GET',u+'#dcinside_header',false)\nx.send()\nx=x.responseText.match(/<source src=\"([^\"]+?viewmovie\\.php[^\"]+)/)\nx&&m.push([x[1]+'#mp4'])\n}\n$=[...$._.matchAll(/\"movieIcon\\d+\" src=\"([^\"]+)/g)].map(i=>i[1])\n$.forEach(vid)\nreturn m\n}\nreturn [...new DOMParser().parseFromString($._,'text/html').querySelectorAll('img[src*=\"viewimage.php?\"][style][alt],img[src*=\"viewimage.php?\"][onError][alt]')].filter(i=>i.alt?.length).map(i=>[i.src]);", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/nwp7d7u\nOLD\nhttps://www.reddit.com/r/imagus/comments/15qpek4/comment/jw9n6dy\n\n\nEXAMPLES\nhttps://gall.dcinside.com/board/lists/?id=food\nhttps://www.reddit.com/domain/dcinside.com/new/\nhttps://search.dcinside.com/movie/p/4/q/.EC.8B.9D.EC.82.AC" }, "DeepSkyHosting-g": { "img": "(deepskyhosting\\.com/img/\\w/)\\d+(/\\d+\\.\\w+)", "to": "$1full$2", "note": "Baton34V\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=700#11\n\nПРИМЕРЫ\nhttps://deepskyhosting.com/id621" }, "Deezer": { "img": "((?:e-)?cdns?-images\\.dzcdn\\.net\\/images\\/(?:cover|playlist|artist|talk)\\/\\w+\\/)[^\\.]+\\.jpg", "to": "$11200x1200-000000-95-0-0.jpg", "note": "Baton34V\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3520#5\nOLD\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=2460#12\n\n\n!!!\nFor the site to work in some sections, you need to install uBO (uBlock Origin) and add the following filter to the “My Filters” tab:\ndeezer.com##.css-67a7tm\n\n\nПРИМЕРЫ / EXAMPLES\nhttps://www.deezer.com/ru/channels/module/3d720c8b-6256-4731-8f2f-28fafc60d0e1\nhttps://www.deezer.com/ru/playlist/1419215845" }, "Defense.gov_photo": { "link": "defense\\.gov\\/Multimedia\\/Photos\\/igphoto\\/\\d{10}\\/", "res": "<a class=\"details-url\" href=\"(https?:\\/\\/media\\.defense\\.gov\\/\\d{4}\\/\\w+\\/\\d{2}\\/\\d{10}\\/-1\\/-1\\/0\\/.+\\.\\w+)\">", "img": "^(media\\.defense\\.gov/\\d+/\\w+/\\d+/\\d+)/\\d+/\\d+(/\\d+/[\\w-]+\\.(?:jpe?g|png|gif))$", "ci": 2, "to": "$1/2000/2000$2", "note": "Baton34V\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3720#11\nOLD\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=1540#12\n\n\nEXAMPLES\nhttps://www.defense.gov/Multimedia/Photos/" }, "dePIC-h": { "link": "^depic\\.me/\\w+/.+", "res": "<img src=\"([^\"]+)\"[^>]+id=\"pic\"", "note": "Rodny+Baton34V (fix)\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=180#3\n\nПРИМЕРЫ / EXAMPLES\nhttps://www.reddit.com/domain/depic.me/new/" }, "Derpibooru|Furbooru|Trixiebooru-x": { "link": "^(derpiboo(?:ru\\.org|\\.ru)|(?:trixiebooru|furbooru)\\.org)/(?:images/)?(\\d+)[^.]*", "url": "https://$1/api/v1/json/images/$2", "res": ":\n$ = JSON.parse($._).image\nvar r = $.representations\nreturn [[\n $.format=='gif' ? ['#'+r.webm, '#'+r.mp4, r.full] : $.width<1200 && $.height<1200 ? [r.full] : ['#' + r.full, r.large],\n ['['+$.created_at+']', $.name, $.description, $.tags, $.source_url].filter(Boolean).join(' | ')\n]]", "img": "^((?:derpicdn\\.net|furrycdn\\.org)/img/)(?:view/)?(20\\d\\d/1?\\d/[123]?\\d/\\d+)[^?]*\\.([^?]+)", "to": ":\nreturn $[1]+'view/'+$[2]+'.'+($[3]=='gif'?'#webm mp4 gif#':$[3])", "note": "https://www.reddit.com/r/imagus/comments/huqzdn/comment/fzavtn4\n\nEXAMPLES\nhttps://furbooru.org/tags/female\nhttps://derpibooru.org/images?page=5\nhttps://trixiebooru.org/galleries?page=10&gallery=" }, "DeviantArt-g-x-q-p": { "link": "^(?:(?:[^.]+\\.)?deviantart\\.com/(?:(?:[^/]+/)?art/[^#]+$|#/\\w+)|fav\\.me/(\\w+))", "url": ": $[1] ? 'http://fav.me/' + $[1] : $[0]", "res": ":\n//If set to true, the imagus style of media description will be used.\n//Example: {Dimensions} {Publish Date} | {Title} | {Author} | {Category} \n//Set to false to use the sieve author's preference. The description length is a useful indicator to tell if the post is worth clicking to read the description.\n//Example: {Title} | {Author} | {Description Length} \nconst imagus_description_style = true;\n\n//if set to \"high\", the largest possible media will be displayed. Useful for downloading highest quality content.\n//if set to \"low\", web-optimized media will be displayed. Best choice for fast browsing and low internet speeds.\n//if set to \"both\", the web-optimized media(s) will be first in the gallery, followed by the largest possible media(s)\nconst res_option = \"high\"\n\n//Set what the text-to-image render turns into an image.\n//Possible values: \"description\", \"text body\"\nconst text_post_render = \"description\";\n\n//Set how the text-to-image render handles the text\n//Possible values: \"preview\", \"full\"\nconst text_post_mode = \"preview\";\n\n//Set if text from posts will always render, even on image posts\n//On image posts, it will add itself after images in the popup gallery. \nconst text_post_always = true;\n\n//Set if text-to-image renders go before other media or after\n//This only matters if text_post_always = true\nconst text_post_first = false; \n\n//Set a few reading options for the text-to-image render\nconst reading_width = 900;\nconst fontsize = 22;\nconst font = 'Verdana';\nconst fontcolor = \"yellow\";\nconst linespacing = 5;\nconst padding = 10;\nconst backgroundcolor = \"black\";\nconst textalign = \"left\";\n\n//Set true to view debugging console messages\nconst debug = false;\n\n\nif(debug) console.log(\"DeviantArt Verbose Sieve V3.0\");\n\nlet pagedefinitionsJSON=$._.match(/\\.__INITIAL_STATE__\\s*=\\s*JSON\\.parse\\((\"[^\\n]+\")/)\n\n//This deviationdefinition_all let is thorough information about the deviation, including the user and related deviations\nlet deviationdefinition_all=pagedefinitionsJSON?.[1]&&JSON.parse(eval(pagedefinitionsJSON[1]))['@@entities'];\nif(!deviationdefinition_all)return this.node.src||'';\n\n\n//Grab JSON extended deviation info\nlet deviationkey=Object.keys(deviationdefinition_all.deviationExtended)[0];\nlet deviationdefinition_extended=deviationdefinition_all.deviationExtended[deviationkey];\n//Grab JSON specific deviation info\nlet deviationdefinition_specific=deviationdefinition_all.deviation[deviationkey];\n//Grab User object\nlet userkey = Object.keys(deviationdefinition_all.user)[0];\nlet deviationdefinition_user=deviationdefinition_all.user[userkey];\n\n\n//Set the media description text\nlet toptext;\n\nif(imagus_description_style) {//Imagus standard media description desired. Grab relevant info and create the top text.\n\n //Create media resolution string\n let resolutionstring = deviationdefinition_extended.originalFile == null ? \"\" : deviationdefinition_extended.originalFile.width + \"x\" + deviationdefinition_extended.originalFile.height;\n\n //Create friendly date string\n const parseddatetime = new Date();\n parseddatetime.setTime(Date.parse(deviationdefinition_specific.publishedTime));\n const months =[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"May\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Oct\",\"Nov\",\"Dec \"];\n let month = months[parseddatetime.getMonth()];\n let day = parseddatetime.getDate();\n let year = parseddatetime.getFullYear();\n let datestring = month + \" \" + day + \" \" + year\n\n //Create top 5 tags string\n let tagsstring = \"\";\n if(deviationdefinition_extended.tags) {\n for(let i=0; i<deviationdefinition_extended.tags.length; i++) {\n if(i > 0) tagsstring += \", \";//commas after the first tag\n tagsstring += deviationdefinition_extended.tags[i].name;\n\n if(i > 4) {//cut short if more than 5 tags assigned\n tagsstring += \" ...\";\n break;\n }\n }\n }\n else {\n //Assign friendly text if no tags assigned\n tagsstring = tagsstring == \"\" ? \"No Tags\" : tagsstring;\n }\n \n //Get Imagus config for prepend dimensions and an extra vertical bar if it's on\n let prependedbar = cfg.hz.capWH ? \" | \" : \"\";\n\n //Define the top text\n toptext = prependedbar + datestring + ' | ' +\n deviationdefinition_specific.title + ' | ' + \n deviationdefinition_all.user[deviationdefinition_specific.author].username + ' | ' +\n tagsstring;\n}\nelse{\n //get length of plain text description by letting the DOM parse it for us\n let description = deviationdefinition_all.deviationExtended[deviationkey].descriptionText.html.markup;\n\n //if(debug) console.log(\"Description: \", description)\n\n let descriptionlength = 0;\n if(description != null) {//description is defined, use DOM trickery to get text length\n let tempDivElement = document.createElement(\"div\");\n tempDivElement.innerHTML = description; \n if(tempDivElement.textContent != null) {\n descriptionlength = tempDivElement.textContent.length; \n }\n else if(tempDivElement.innerText != null) {\n descriptionlength = tempDivElement.innerText.length;\n }\n }\n\n deviationdefinition_extended.additionalMedia == null ? \"\" : \" |\" \n\n //Define the top text\n toptext = deviationdefinition_specific.title + \n \" | \" + deviationdefinition_all.user[deviationdefinition_specific.author].username + \n (descriptionlength == 0 ? \"\" : \" | \" + descriptionlength) +\n (deviationdefinition_extended.additionalMedia == null ? \"\" :\n \" | \" + (deviationdefinition_extended.additionalMedia.length+1) + \" images\");\n \n} \n\n//The rest is parsing the correct media URLs\nlet mediadefinition=deviationdefinition_specific.media;\nlet baseuri=mediadefinition.baseUri;\nlet sizedpreviewdefinition=mediadefinition.types.filter(function(t){return !!t.c||!!t.b}).pop();\nlet mediatokens=mediadefinition.token;\n\n\nif(debug) console.log(\"deviationdefinition_all\", deviationdefinition_all);\nif(debug) console.log(\"deviationdefinition_specific\", deviationdefinition_specific);\nif(debug) console.log(\"deviationdefinition_extended\", deviationdefinition_extended);\nif(debug) console.log(\"mediadefinition\", mediadefinition);\nif(debug) console.log(\"baseuri\", baseuri);\nif(debug) console.log(\"sizedpreviewdefinition\", sizedpreviewdefinition);\nif(debug) console.log(\"mediatokens\", mediatokens);\n\n\n/////////////////\n// Setup Section\n\n// final goal is to fill in these objects as needed, and return concatenated in desired order\nlet text_linkobject = [];\nlet hi_res_media_linkobject = [];\nlet low_res_media_linkobject = [];\n\n//There are 0 or 1 or 2 tokens in the mediatoken definition for some reason. Which one works is guesswork.\n//Multiple post types need these, so set them up now.\nlet mediatokenstring0=mediatokens?'?token='+mediatokens[0]:'';\nlet mediatokenstring1=mediatokens&&mediatokens[1]?'?token='+mediatokens[1]:mediatokenstring0;//define the second token if it exists, otherwise default to first token\n\n//Parse and break out media resolution options\nlet do_hi_res = res_option == \"high\" || res_option == \"both\";\nlet do_low_res = res_option == \"low\" || res_option == \"both\";\nif(!(do_hi_res || do_low_res)) {//Bad option setting by user\n if(debug) console.log(\"Resolution setting res_option = \\\"\" + res_option + \"\\\" which is not a valid option. Defaulting to low resolution.\");\n do_low_res = true;\n}\n\n//Get viewport to optimize against in case of web-optimized media or attachment-style post\nconst viewportwidth = Math.max(document.documentElement.clientWidth || 0, window.innerWidth || 0);\nconst viewportheight = Math.max(document.documentElement.clientHeight || 0, window.innerHeight || 0);\nif(debug && do_low_res) console.log(\"Viewport: \" + viewportwidth + \" by \" + viewportheight);\n\n\n//////////////////////////\n// Discrimination Section\n\n// A number of different post types exists with very different JSON trees.\n// Have to figure out what kind of post is being handled first.\n\nconst POSTTYPES = Object.freeze({\n SingleImageDownloadLink: doSingleImageDownloadLink,\n SingleImageNoDownloadLink: doSingleImageNoDownloadLink,\n ImageCarousel: doImageCarousel,\n GIF: doGIF,\n Video: doVideo,\n ZIP_RAR_7Z_PDF: doZIP_RAR_7Z_PDF,\n Text: doText\n});\n\n//Work from easiest discriminators first to get them out of the list of possibilities, then do harder ones\nlet mainaction;\nif(!baseuri) mainaction = POSTTYPES.Text;\nelse if(deviationdefinition_extended?.additionalMedia?.[0]?.media?.token?.length > 0) mainaction = POSTTYPES.ImageCarousel;\nelse if(deviationdefinition_specific.isGif) mainaction = POSTTYPES.GIF;\nelse if(deviationdefinition_specific.isVideo) mainaction = POSTTYPES.Video;\nelse if(mediatokens == null) mainaction = POSTTYPES.ZIP_RAR_7Z_PDF;\nelse if(deviationdefinition_specific.isDownloadable) mainaction = POSTTYPES.SingleImageDownloadLink;\nelse mainaction = POSTTYPES.SingleImageNoDownloadLink\n\nif(debug) console.log(\"Post type: \", mainaction.name)\n\n\n/////////////////////////\n// Run Post Type Section\n\nmainaction();\nif(text_post_always && mainaction != POSTTYPES.Text)\n doText();\n\n\n////////////////////////////\n// Handle Post Type Section\n\n//These functions only execute on grabbing data and constructing the urls\n//They each append to specific medialink objects rather than give return values\n\nfunction doSingleImageDownloadLink() {\n\n if(do_hi_res) {\n let downloadlink = deviationdefinition_all.deviationExtended[deviationkey].download.url;\n hi_res_media_linkobject.push([[downloadlink,$._.match(/\"og:image\" content=\"([^\"]+)/)?.[1]], toptext]);\n }\n if(do_low_res) {\n let singleimageurl = getWebOptimizedImageURL(mediadefinition);\n low_res_media_linkobject.push([singleimageurl , toptext])\n }\n\n}\n\nfunction doSingleImageNoDownloadLink() {\n if(do_hi_res) {\n let imageurl;\n if(mediatokens.length == 1\n && !deviationdefinition_extended.pcp\n && !deviationdefinition_extended.isDaProtected\n && !deviationdefinition_extended.hasWatermark\n && !deviationdefinition_specific.isMature\n && !deviationdefinition_user.type == \"regular\")//These seem to be the sub-discriminators for if an image blocks an /intermediary/ file.\n imageurl = baseuri.replace(\"wixmp.com/f/\", \"wixmp.com/intermediary/f/\");\n else if(mediatokens.length == 2 && deviationdefinition_extended.pcp)\n imageurl = baseuri + mediatokenstring0;\n else//Default to fullview/preview image url construction.\n imageurl = constructHiResURLFromMediaDefinition();\n hi_res_media_linkobject.push([imageurl, toptext]);\n }\n if(do_low_res) {\n let singleimageurl = getWebOptimizedImageURL(mediadefinition);\n low_res_media_linkobject.push([singleimageurl , toptext])\n }\n \n}\n\nfunction doImageCarousel() {\n if(do_hi_res) {\n //single token type refers to additional media tokens, but might be signified by how many first-image tokens exist\n let issingletokentype = mediatokens.length == 1;\n\n //If the current deviation is a multi-token type, download link is correct\n let firstimageurl;\n if(deviationdefinition_specific.isDownloadable) {\n firstimageurl = [deviationdefinition_extended.download.url, $._.match(/\"og:image\" content=\"([^\"]+)/)?.[1]];\n }\n else {\n //Extra protections on base image image definitions with these flags. Go for fullview/preview fill version\n if(deviationdefinition_extended.isDaProtected || deviationdefinition_extended.hasWatermark) \n firstimageurl = constructHiResURLFromMediaDefinition();\n else{ //No extra protections, default to /f/ base version\n let type = deviationdefinition_specific.media?.types?.find(i=>i.t==='fullview')?.c||deviationdefinition_specific.media?.types?.find(i=>i.t==='preview')?.c||'';\n type = type.replace('<prettyName>', deviationdefinition_specific.media.prettyName);\n firstimageurl = [deviationdefinition_specific.media.baseUri + mediatokenstring0, deviationdefinition_specific.media.baseUri + type + mediatokenstring0];\n }\n }\n hi_res_media_linkobject.push([firstimageurl, toptext]);\n \n //Do rest of images\n for(let i=0; i<deviationdefinition_extended.additionalMedia.length; i++) {\n let mediaobject = deviationdefinition_extended.additionalMedia[i];\n let type = mediaobject.media?.types?.find(i=>i.t==='fullview')?.c||mediaobject.media?.types?.find(i=>i.t==='preview')?.c||'';\n type = type.replace('<prettyName>', mediaobject.media.prettyName).replace(/([/,]q_)\\d\\d(?=\\D)/,'$1100');\n let currentmediatokenstring = issingletokentype ? \"?token=\" + mediaobject.media.token[0] : mediatokenstring0;\n // Tries multiple URLs\n hi_res_media_linkobject.push([[mediaobject.media.baseUri + currentmediatokenstring, mediaobject.media.baseUri + type + currentmediatokenstring, mediaobject.media.baseUri + '?token=' + mediaobject.media.token[1], mediaobject.media.baseUri + type + '?token=' + mediaobject.media.token[1]], toptext]);\n }\n if(debug) {\n let logval = structuredClone(hi_res_media_linkobject);//This is because the array gets transformed after it leaves the sieve and logs wrong\n console.log(\"hi_res_media_linkobject: \", logval);\n }\n }\n if(do_low_res) {\n //First image lives in a different tree\n let firstimageurl = getWebOptimizedImageURL(mediadefinition);\n low_res_media_linkobject.push([firstimageurl , toptext])\n for(let i=0; i<deviationdefinition_extended.additionalMedia.length; i++) {\n let mediaobject = deviationdefinition_extended.additionalMedia[i];\n let currentimageurl = getWebOptimizedImageURL(mediaobject.media);\n low_res_media_linkobject.push([currentimageurl , toptext]);\n }\n }\n}\n\nfunction doGIF() {\n if(debug) console.log(\"GIF detected.\");\n if(do_hi_res) {\n let imageurl = deviationdefinition_specific.isDownloadable ? deviationdefinition_extended.download.url : baseuri + mediatokenstring0;\n hi_res_media_linkobject.push([imageurl, toptext]);\n }\n if(do_low_res) {\n let gifurl = mediadefinition.baseUri+mediatokenstring0;\n low_res_media_linkobject.push([gifurl, toptext]);\n }\n}\n\nfunction doVideo() {\n if(do_hi_res) {\n let largestvideo;\n for(let i=0; i<mediadefinition.types.length; i++) {\n let currentdefinition = mediadefinition.types[i];\n if(currentdefinition.t != 'video') \n continue;\n\n //There may be multiple video definitions, keep the largest one\n if(largestvideo) {\n //compare widths to determine larger video, keep larger definition\n largestvideo = (largestvideo.w < currentdefinition.w) ? currentdefinition : largestvideo;\n }\n else { //assign first video definition as largest\n largestvideo = currentdefinition;\n }\n }\n hi_res_media_linkobject.push([largestvideo.b, toptext]);\n }\n if(do_low_res) {\n if(debug) console.log(\"Video detected.\");\n let bestvideosizematch;\n let bestvideosizecloseness = 10000.0;//large number is a bad fit, start this number with arbitrarily bad ratio\n for(let i=0; i<mediadefinition.types.length; i++) {\n let currentdefinition = mediadefinition.types[i];\n if(currentdefinition.t != 'video') \n continue;\n\n //There may be multiple video definitions, keep the best size fit\n if(bestvideosizematch == undefined) {\n bestvideosizematch = currentdefinition\n }\n else {\n let currentsizecloseness = Math.abs(1- (currentdefinition.h/viewportheight));\n if(debug) console.log(\"currentsizecloseness\", currentsizecloseness);\n if(currentsizecloseness < bestvideosizecloseness) {\n bestvideosizecloseness = currentsizecloseness;\n bestvideosizematch = currentdefinition;\n if(debug) console.log(\"New best match at closeness \", bestvideosizecloseness, \" type \", bestvideosizematch.t);\n }\n }\n\n }\n low_res_media_linkobject.push([bestvideosizematch.b, toptext]); \n }\n}\n\nfunction doZIP_RAR_7Z_PDF() {\n let save_low_res = do_low_res;\n let save_hi_res = do_hi_res;\n do_low_res = true;\n do_hi_res = false;\n doSingleImageNoDownloadLink();\n do_low_res = save_low_res;\n do_hi_res = save_hi_res;\n}\n\nfunction doText() {\n let desiredescription = text_post_render == \"description\";\n let desirepreview = text_post_mode == \"preview\";\n\n let hasdescription = (deviationdefinition_extended?.descriptionText?.excerpt ?? \"\") != \"\";\n let hastextbody = (deviationdefinition_specific?.textContent?.excerpt ?? \"\") != \"\";\n\n let previewavailable = true;\n if(!hasdescription && !hastextbody) {//Excerpts both are empty, signal off of html markup\n previewavailable = false;\n hasdescription = (deviationdefinition_extended?.descriptionText?.html?.markup ?? \"\") != \"\";\n hastextbody = (deviationdefinition_specific?.textContent?.html.markup ?? \"\") != \"\";\n\n if(!hasdescription && !hastextbody)//No parseable text at all available, don't add text image\n return;\n }\n\n //Start with user preference for text type, and revert to opposite if desired is unavailable\n let textobject;\n if (desiredescription && hasdescription)\n textobject = deviationdefinition_extended.descriptionText;\n else if(desiredescription && !hasdescription)\n textobject = deviationdefinition_specific.textContent\n else if(!desiredescription && hastextbody)\n textobject = deviationdefinition_specific.textContent;\n else if(!desiredescription && !hastextbody)\n textobject = deviationdefinition_extended.descriptionText;\n else {\n if(debug) console.log(\"No valid non-empty text objects found. Text render is aborting.\")\n return;\n }\n\n const charwidthguess = fontsize*1.4/3.0;\n const kerningguess = 2\n let maxcharsperline = (reading_width+kerningguess-(padding*2))/(charwidthguess+kerningguess);\n \n let textlines;\n if(desirepreview && previewavailable) {\n textlines = textobject.excerpt.split(\"\\n\");\n textlines = stripHTML(textlines);\n textlines = squareUpText(textlines, maxcharsperline);\n textlines.push(\"...\");\n }\n else {\n if(textobject.html.type == \"tiptap\") {\n let paragraphsobject = JSON.parse(textobject.html.markup).document.content;\n\n textlines = [];\n for(let i=0; i<paragraphsobject.length; i++) {\n if(paragraphsobject[i].content == null) continue;//Spacer paragraphs that accomplish nothing\n let paragraph = \"\";\n for(let j=0; j<paragraphsobject[i].content.length; j++) {\n if(paragraphsobject[i].content[j].type == \"text\")\n paragraph += paragraphsobject[i].content[j].text;\n }\n let paragraphlines = squareUpText([paragraph], maxcharsperline)\n textlines = textlines.concat(...paragraphlines);\n textlines.push(\"\");//separate paragraphs and add some empty space past the last line which is helpful for imagus.\n }\n }\n else {//type == \"writer\"\n let htmlwriting = textobject.html.markup\n\n textlines = htmlwriting.split(\"<br />\");\n textlines = stripHTML(textlines);\n textlines = squareUpText(textlines, maxcharsperline);\n textlines.push(\"...\");\n }\n \n }\n let url = generateTextLinesToImage(textlines, reading_width, fontsize, font);\n text_linkobject.push([url, toptext]);\n}\n\n//////////////////\n// Return Section\n\n// Order the link objects as defined by text_post_first\nlet returnval;\nif(text_post_first) \n returnval = [...text_linkobject, ...low_res_media_linkobject, ...hi_res_media_linkobject];\nelse \n returnval = [ ...low_res_media_linkobject, ...hi_res_media_linkobject, ...text_linkobject];\n\n//Special case, links 1 and 2 are exactly the same, reduce to a single galleryobject\nif(returnval.length >= 2 && returnval[0][0] == returnval[1][0])\n returnval = returnval.slice(1);\n\nreturnval = returnval.map(i=>[[!Array.isArray(i[0])&&i[0]?.replace(/(\\/f\\/[^.]+\\.\\w+).*/,'/intermediary$1'),!Array.isArray(i[0])&&i[0]?.replace(/\\/v1\\/fill\\/[^?]+-pre\\.[^?]+/,''),i[0]],i[1]]);\n\nconst filename=deviationdefinition_specific?.media?.prettyName?.replace(/_[^_]+$/,'')\nif(filename)this.CNT.filename=filename;\n\nif(debug) console.log(\"Final Return Value\", returnval)\nreturn returnval;\n\n\n///////////////////////////\n// Helper Function Section\n\n\nfunction generateTextLinesToImage(textlines) {\n// //Set a few reading options for the text-to-image render\n// const reading_width = 900;\n// const fontsize = 30;\n// const font = 'Verdana';\n// const fontcolor = \"grey\";\n// const linespacing = 5;\n// const padding = 10;\n// const backgroundcolor = \"black\";\n// const textalign = \"left\";\n\n //Prereq: the text lines in text lines have\n\n const reading_height = (textlines.length*fontsize) + (padding*2) + (linespacing*(textlines.length-1));\n \n // Image size and text coordinates understood, now render the image\n \n // Create a canvas element\n const canvas = document.createElement('canvas');\n canvas.width = reading_width;\n canvas.height = reading_height;\n\n // Get the 2D context\n const ctx = canvas.getContext('2d');\n // Set background color\n ctx.fillStyle = backgroundcolor;\n ctx.fillRect(0, 0, reading_width, reading_height);\n // Set text style\n ctx.fillStyle = fontcolor;\n ctx.font = fontsize + 'px ' + font; // Font size and family\n ctx.textAlign = textalign; // Center the text horizontally\n ctx.textBaseline = 'middle'; // Center the text vertically\n\n // Draw the text lines\n for(let i=0; i<textlines.length; i++)\n {\n const drawx = padding;\n const drawy = (fontsize/2)+padding + (linespacing*i) + (fontsize*i);\n ctx.fillText(textlines[i], drawx, drawy);\n }\n\n // Convert the canvas to a base64 PNG image\n const pngUrl = canvas.toDataURL('image/png');\n return pngUrl;\n}\n\nfunction squareUpText(textlines, maxchar) {\n let squaretextlines = [];\n for(let i=0; i<textlines.length; i++) {\n if(textlines[i].length <= maxchar) {\n squaretextlines.push(textlines[i]);\n continue;\n }\n\n let words = textlines[i].split(\" \");\n let currentsquaredtextline = \"\";\n for(let j=0; j<words.length; j++) {//Add new line just before it gets too long\n if(currentsquaredtextline.length + words[j].length > maxchar) {\n squaretextlines.push(currentsquaredtextline);\n currentsquaredtextline = \"\";//reset line construction\n }\n\n let spacer = \" \";\n if(currentsquaredtextline == \"\") spacer = \"\";\n currentsquaredtextline += spacer + words[j];\n\n if(j == words.length-1)\n squaretextlines.push(currentsquaredtextline)\n }\n }\n return squaretextlines;\n}\n\nfunction stripHTML(textlines) {\n let strippedlines = [];\n\n let domparser = new DOMParser()\n for(let i=0; i<textlines.length; i++) {\n let domdoc = domparser.parseFromString(textlines[i], 'text/html');\n strippedlines.push(domdoc.body.textContent || \"\");\n }\n\n return strippedlines;\n}\n\nfunction getWebOptimizedImageURL(mediatree) {\n const debugdimensionmath = false;\n\n // Extract meaningful objects that contain identifiers\n let preview;\n let bestimagesizematch;\n let bestimagesizecloseness = 10000.0;//large number is a bad fit, start this number with arbitrarily bad ratio \n for(let i=0; i<mediatree.types.length; i++) {\n let currentdefinition = mediatree.types[i];\n if(currentdefinition.t == 'preview') //save preview definition as a default case\n preview = currentdefinition;\n if(currentdefinition.t == 'video' || currentdefinition.t == 'gif')\n continue;\n\n //Select the largest best size fit definition\n //Imagus evaluates height first so this section does as well\n if(bestimagesizematch == undefined) {\n bestimagesizematch = currentdefinition\n }\n else {\n let currentsizecloseness = Math.abs(1- (currentdefinition.h/viewportheight));\n if(debug && debugdimensionmath) console.log(\"currentsizecloseness\", currentsizecloseness);\n if(currentsizecloseness < bestimagesizecloseness) {\n bestimagesizecloseness = currentsizecloseness;\n bestimagesizematch = currentdefinition;\n if(debug && debugdimensionmath) console.log(\"New best match at closeness \", bestimagesizecloseness, \" type \", bestimagesizematch.t);\n }\n }\n\n }\n\n //Choose best available size definition\n let singleimageurl;\n if(bestimagesizematch.b||bestimagesizematch.c) { //Use best size match if it has a complete definition\n singleimageurl = mediatree.baseUri\n + (bestimagesizematch.b||bestimagesizematch.c).replace('<prettyName>', mediatree.prettyName)\n + mediatokenstring0;\n }\n else if(preview.b||preview.c) {//Best size match was not a complete definition, use preview definition as it seems reliably available.\n if(debug) console.log(\"Best sized definition incomplete. Using preview version...\");\n singleimageurl = mediatree.baseUri\n + (preview.b||preview.c).replace('<prettyName>', mediatree.prettyName)\n + mediatokenstring0;\n }\n else {//Preview version also failed, attempt basic URL construction\n if(debug) console.log(\"No sized preview definition found. Attempting basic url construction...\");\n singleimageurl = mediatree.baseUri + mediatokenstring0;\n }\n\n return singleimageurl;\n}\n\nfunction constructHiResURLFromMediaDefinition() {\n let returnval = \"\";\n\n let fullview;\n let preview;\n for(let i=0; i<mediadefinition.types.length; i++) {\n let currentdefinition = mediadefinition.types[i];\n if(currentdefinition.t == 'preview') {\n preview = currentdefinition;\n continue;\n }\n if(currentdefinition.t == 'fullview') {\n fullview = currentdefinition;\n continue;\n }\n }\n let fillconstruction = (fullview.c||fullview.b||(preview.c.replace(/\\/w_\\d+,h_\\d+/i,\"/w_\"+fullview.w+\",h_\"+fullview.h))).replace(/([/,]q_)\\d\\d(?=\\D)/,'$1100');\n returnval = baseuri\n + fillconstruction.replace('<prettyName>', deviationdefinition_specific.media['prettyName'])\n + mediatokenstring0;\n return returnval;\n}", "img": "^images-wixmp-ed30a86b8c4ca887773594c2\\.wixmp\\.com/[a-z]/[\\da-f-]{36}/([\\da-z]+)-.*", "note": "iceiller9999 + Imagus_fan (edit)\nhttps://www.reddit.com/r/imagus/comments/1nehy7d/comment/nds1ams\nOLD\nhttps://www.reddit.com/r/imagus/comments/1m8eluj/comment/n643ioc\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/muhv5bl\n\n\n\n!!!\n- данный фильтр имеет несколько настроек (вкл/откл высокого или низкого разрешения, текста описания, формата заголовка) - смотри поле RES (третье сверху). Переключение стандартное: true/false;\n- при сохранении файлов с использованием горячей клавиши, фильтр меняет название с \"BBB_by_AAA_djk6o81.jpg\" на \"BBB_by_AAA.jpg\" (без мусорного кода в конце). Но расширение для IDM может мешать этому.\n==\n- this sieve has several settings (on/off high or low resolution, description text, title format) - see the RES field (third from the top). Switching is standard: true/false;\n- when saving files using a hotkey, this sieve changes the name from “BBB_by_AAA_djk6o81.jpg” to “BBB_by_AAA.jpg” (without the garbage code at the end). But the extension for IDM may interfere with this.\n\n\nПРИМЕРЫ / EXAMPLES\nhttps://www.deviantart.com/dreamkinks/gallery/all\nhttps://www.deviantart.com/link-hayashi/gallery/all\nhttps://www.deviantart.com/search/deviations?q=elf+video\nhttps://www.deviantart.com/stellaai/art/Light-IX-1220577756\nhttps://www.deviantart.com/calusmagnus/art/Nagi-Arato-Big-ass-1239633782" }, "DeviantArt_sta.sh-g-x-p": { "link": "^(?:deviantart\\.com/sta|sta\\.)sh/\\w+", "res": ":\nlet m=[...$._.matchAll(/srcSet=\"([^\"\\s]+)/g)].map(i=>[i[1].replace(/w_\\d+,h_\\d+,q_\\d+/,'w_1250,h_1750,q_100')]);\nif(!m.length)m=$._.match(/src=\"([^\"]+)\" srcSet/)?.[1];\nreturn m||''", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/mpgeaxb\nOLD\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1440#7\n\n\nПРИМЕРЫ / EXAMPLES\nhttps://www.reddit.com/domain/sta.sh/new/\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1369#1" }, "Diberie_Rehost-h": { "img": "^(rehost.diberie.com/Picture/Get)/\\w/(\\d+)", "to": "$1/f/$2", "note": "mooms01\nhttps://www.reddit.com/r/imagus/comments/vlyl5u/sieve_for_imgsuperhfr_and_rehostdiberiecom\n\nEXAMPLES\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1360#11" }, "DimonVideo.ru": { "link": "^dimonvideo\\.ru/go\\?.+(png|bmp|jpe?g)$", "note": "destiny child\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1600#12\nOLD\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=1000#8\n\nПРИМЕРЫ\n(\"дополнительный скрин\")\nhttps://dimonvideo.ru/uploader/484417\nhttps://dimonvideo.ru/uploader/485143\nhttps://dimonvideo.ru/uploader/486070" }, "DirectUpload-h": { "useimg": 1, "link": "^(?:s\\d+\\.)?(directupload\\.eu|directupload\\.net)/file/[a-z]/\\d+/", "res": "\"og:image\" content=\"([^\"]+)\n\"og:description\" content=\"([^\"]+)", "img": "^((?:f?s\\d+b?\\.)?directupload\\.net/images/(?:user/)?\\d+/)temp/", "to": "$1", "note": "EXAMPLES\nhttps://www.reddit.com/domain/directupload.net/new/\nhttps://www.reddit.com/domain/directupload.eu/new/\nhttps://forum.mozilla-russia.org/viewtopic.php?pid=781530#p781530" }, "Discogs": { "link": "^discogs\\.com/(?:\\w\\w/)?artist/[^\\/]+", "res": ":\nvar r = [];\n($._.match(/\"full\": \"[^\"]+/g) || r).forEach(function(i) {r.push([i.replace('\"full\": \"','')]);});\nif (r.length==0) {\n ($._.match(/<\\/span><img src=\"[^\"]+/g) || r).forEach(function(i) {r.push([i.replace('<\\/span><img src=\"','')]);});\n}\nreturn r;", "note": "Baton34V\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1160#16\nOLD\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3080#17\n\n\n!!!\nСрабатывает на именах в блоке \"Над релизом работали\", на названиях групп в других местах и на \"все изображения\".\n==\nIt works on the names in the \"Worked on the release\" block or on the names of groups in other places and on \"all images\".\n\nПРИМЕРЫ / EXAMPLES\nhttps://www.discogs.com/ko/Various-Exotic-Rendezvous/release/14402447\nhttps://www.discogs.com/Story-Of-The-Year-Page-Avenue/master/382764\nhttps://www.discogs.com/Scooter-And-The-Beat-Goes-On/master/3018" }, "Discogs_2": { "link": "^discogs\\.com/(?:[\\w-]+/)?(release|master)/(\\d+)[^\\/?]*(?:(?:/|\\?)image(?:=(\\d+))?(?:.+))?", "url": ": location.hostname.slice(-11)==='discogs.com' ? 'data:,'+$[0] : 'https://www.discogs.com/service/catalog/api/graphql?operationName='+ ($[3] || $[1]=='release' ? 'ReleaseAllImages' : 'MasterReleaseAllImages') +'&variables={\"discogsId\":' + ($[3] ? $[3] : $[2]) + ',\"count\":500}&extensions={\"persistedQuery\":{\"version\":1,\"sha256Hash\":\"'+ ($[3] || $[1]=='release' ? 'c7033a9fd1facb3e69fa50074b47e8aa0076857a968e6ed086153840e02b988a' : 'd4f46242851858eeae5e60edf0bc5d2e4e9124e8a2991f7168f41a3ac1e80489') +'\"}}';", "res": ":\nif($.base[0]==='d'){\nconst x=new XMLHttpRequest();\nx.open('GET','https://www.discogs.com/service/catalog/api/graphql?operationName='+ ($[3] || $[1]=='release' ? 'ReleaseAllImages' : 'MasterReleaseAllImages') +'&variables={\"discogsId\":' + ($[3] ? $[3] : $[2]) + ',\"count\":500}&extensions={\"persistedQuery\":{\"version\":1,\"sha256Hash\":\"'+ ($[3] || $[1]=='release' ? 'c7033a9fd1facb3e69fa50074b47e8aa0076857a968e6ed086153840e02b988a' : 'd4f46242851858eeae5e60edf0bc5d2e4e9124e8a2991f7168f41a3ac1e80489') +'\"}}',false);\nx.send();\n$._=x.responseText;\n}\nlet res=[];\nconst json=JSON.parse($._);\nif (json.data.masterRelease) {\n json.data.masterRelease.keyRelease.images.edges.forEach(function(i) {\n res.push([i.node.fullsize.sourceUrl]);\n });\n return res;\n}\nelse if (json.data.release) {\n json.data.release.images.edges.forEach(function(i) {\n res.push([i.node.fullsize.sourceUrl]);\n });\n return res;\n}\nreturn res;", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/ly2ia81\nOLD\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1160#18\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3080#17\n\n\n!!!\nСрабатывает на обложках и в блоке \"Релизы\".\n==\nIt works on the covers and in the \"Releases\" block.\n\n\nПРИМЕРЫ / EXAMPLES\nhttps://www.discogs.com/artist/356282-Story-Of-The-Year" }, "Discogs_3": { "link": "^discogs\\.com/.+/release/[\\d-\\w]+(?:#([\\da-zA-z=]+))*$", "url": ": $[1] ? atob($[1]): $[0];", "res": ":\nif ($[1]) {\n var c = $._;\n var i = c.indexOf('<ul class=\"thumbnails_');\n if(i<0) { return null; }\n var t = c.indexOf('</ul>', i);\n if(t<0) { return null; }\n var res = [];\n var re = /<img src=\"([^\"]+)\"/gi\n var a = re.exec( c.substring(i,t) );\n while(a) {\n res.push([a[1]]);\n a = re.exec( c.substring(i,t) );\n }\n return res;\n}\nelse {\n var re = /class=\".+\" href=\"([^\"]+)\"><div class=\".+\"><picture>/gi;\n var a = re.exec( $._);\n if (a==null) return null;\n const url_selector = $[0].split(\"/\").slice(3).join(\"/\");\n const a_elem = document.querySelector(`a[href*=\"${url_selector}\"]`);\n a_elem.href += `#${btoa(\"https://www.discogs.com\"+a[1])}`\n a_elem.style.cssText = \"border-bottom: 3px solid #ebff00; !important\";\n return;\n}", "note": "Baton34V\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1160#16\nBaton34V\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=2420#16\n\n\n!!!\nСрабатывает в блоке \"Рекомендации\".\n==\nIt works in the \"Recommendations\" block.\n\nПРИМЕРЫ / EXAMPLES\nhttps://www.discogs.com/ru/master/625256-Story-Of-The-Year-The-Black-Swan\nhttps://www.discogs.com/ru/master/382764-Story-Of-The-Year-Page-Avenue" }, "Discord_profile": { "img": "^(cdn\\.discordapp\\.com/(?:icons|avatars)/\\d+/[^?]+).*", "to": "$1?size=4096" }, "Displate": { "useimg": 1, "link": "^(displate\\.com)/(?:(?:limited-edition/)?displate/\\d+|artist/[\\w-]+/.+)", "url": ":($[2]||location.hostname===$[1]?'data:,':'')+$[0]", "res": ":\nlet sd, hd, g, t='', u='https://cdn.displate.com/artwork/', e='.jpg';\nif($[2]){\n $[1]='https://'+$[1];\n sd=$[1]+(Number($[2])>Number($[3])?'1208x863/':'863x1208/')+$[4];\n hd=$[1]+$[4];\n}else{\n if($.base[0]==='d'){\n const x=platform.firefox ? new content.XMLHttpRequest() : new XMLHttpRequest();\n x.open('GET',$[0],false);\n x.send();\n $._=x.responseText;\n }\n $=$._.match(/\"__NEXT_DATA__\"[^>]+>({.+?})</);\n $=$&&JSON.parse($[1]).props?.pageProps;\n if(g=$?.data?.artworks)return g.map(i=>[['#'+u+i.imageCoreUrl+e, u+(i.orientation==='vertical'?'863x1208/':'1208x863/')+i.imageCoreUrl+e]]);\n if(g=$?.limitedEdition?.general?.images)return [...g.productImageCoreUrls, ...g.detailImageCoreUrls||[]].map(i=>['https://static.displate.com/1200x1200/limited/'+i+e]);\n $=$?.pdpGeneral?.product;\n t=$?.description;\n sd=u+($?.orientation==='vertical'?'863x1208/':'1208x863/')+$?.imageCoreUrl+e;\n hd=u+$?.imageCoreUrl+e;\n}\nreturn $ ? [[sd,t],[hd]] : ''", "img": "^(cdn\\.displate\\.com/\\w+/)(?!392x280|280x392)(\\d+)x(\\d+)/(\\d{4}-\\d{2}-\\d{2}/[^?]+).*", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/1njqbqh/comment/nf1k3xe/\n\nEXAMPLES\nhttps://displate.com/limited-edition\nhttps://displate.com/search?q=fantasy+and+gaming\nhttps://displate.com/artist/eclipsestudio?sort=new\nhttps://displate.com/artist/eclipsestudio?view=collections" }, "DLsite-x-s-p": { "link": "dlsite\\.com\\/\\w+\\/work\\/=\\/product_id\\/\\w+\\.html", "res": ":\nconst previewSource = $._.match(/product_slider_data[\\s\\S]+?work_slider_container/)[0];\n\nconst res = Array.from(previewSource.matchAll(/data-src=\"([^\"]+)\"/g), match => [`https:${match[1]}`]);\n\nreturn res;", "note": "loveqianool\nhttps://www.reddit.com/r/imagus/comments/1jufdxc/dlsitecom/\n\nEXAMPLES\nhttps://www.dlsite.com/maniax/works/genre/=/genre/317\nhttps://www.dlsite.com/books/work/=/product_id/BJ01822278.html\nhttps://www.dlsite.com/pro/fsr/=/work_type/RPG/age_category/adult/work_category/pc/from/left_pain.work_type" }, "DMM.co.jp-x-p": { "link": "dmm\\.co\\.jp\\/[^/]+(\\/[^/]+)?\\/-\\/detail\\/=\\/cid=.+", "res": ":\nvar pageSourceCode = $._; // Get the source code of the current page.\nvar coverImageUrlRegex = /\"(https[^\"]+pl\\.jpg)\"/i; // Regular expression to find a cover image URL ending with \"pl.jpg\".\nvar coverImageUrlMatch = pageSourceCode.match(coverImageUrlRegex); // Attempt to find a match for the cover image URL in the page source.\nvar imageUrls = []; // Initialize an empty array to store the extracted image URLs.\nvar foundCoverImage = false; // Flag to track if a cover image was found and added.\n\nif (coverImageUrlMatch && coverImageUrlMatch[1]) {\n const coverImageUrl = coverImageUrlMatch[1]; // Extract the matched cover image URL.\n imageUrls.push([coverImageUrl]); // Add the cover image URL to the results array.\n foundCoverImage = true; // Set the flag to indicate that a cover image has been added.\n}\n\nvar sampleImageBlockStart = pageSourceCode.indexOf('id=\"sample-image-block\"'); // Find the starting index of the target image block using its ID.\nif (sampleImageBlockStart < 0) {\n return null; // If the starting index is not found, return null as the target area cannot be located.\n}\n\nvar imageAreaEnd = pageSourceCode.indexOf('画像はイメージです', sampleImageBlockStart); // Find the ending index of the target image block by searching for specific text after the starting index.\nif (imageAreaEnd < 0) {\n return null; // If the ending index is not found, return null as the target area cannot be fully located.\n}\n\nvar imageLinkRegex = /\"([^\"]+\\.jpg)\"/gi; // Regular expression to find image URLs within double quotes with the \".jpg\" extension.\nvar targetImageData = pageSourceCode.substring(sampleImageBlockStart, imageAreaEnd); // Extract the content of the target image block from the page source.\nvar currentMatch; // Variable to store the current match found by the regular expression.\nvar processedLinks = new Set(); // Use a Set to store processed image links to automatically handle duplicates.\nvar isFirstMatch = true; // Flag to track if it's the first match of imageLinkRegex.\n\nwhile ((currentMatch = imageLinkRegex.exec(targetImageData)) !== null) {\n const originalUrl = currentMatch[1]; // Extract the matched image URL.\n\n if (isFirstMatch && foundCoverImage && imageUrls.length > 0 && imageUrls[0][0] === originalUrl) {\n isFirstMatch = false; // Set the flag to false for subsequent matches.\n continue; // Skip to the next iteration of the loop.\n }\n\n let processedUrl = originalUrl; // Initialize the processed URL with the original URL.\n if (!originalUrl.includes('jp-')) { // Check if the URL does not already contain \"jp-\".\n const lastHyphenIndex = originalUrl.lastIndexOf('-'); // Find the index of the last hyphen in the URL.\n if (lastHyphenIndex !== -1) { // If a hyphen is found, replace it with \"jp-\" to potentially get a higher resolution image.\n processedUrl = originalUrl.substring(0, lastHyphenIndex) + 'jp-' + originalUrl.substring(lastHyphenIndex + 1);\n }\n }\n if (!processedUrl.includes('ps.jpg')) { // Check if the processed URL does not contain \"ps.jpg\".\n processedLinks.add(processedUrl); // Add the processed URL to the Set.\n }\n isFirstMatch = false; // Ensure the flag is set to false after the first match.\n}\n\nprocessedLinks.forEach(url => {\n imageUrls.push([url]); // Add each unique URL from the Set to the final results array.\n});\n\nreturn imageUrls; // Return the array containing the extracted image URLs.", "note": "loveqianool\nhttps://www.reddit.com/r/imagus/comments/1jmp9ns/fix_dmmcojp\nOLD\nhttps://www.reddit.com/r/imagus/comments/116g0uo/comment/jcxris0\nhttps://www.reddit.com/r/imagus/comments/xv9tah/comment/irl73ee\n\n!!!\nДля проверки нужен аккаунт.\n\n\nEXAMPLES\nhttps://www.dmm.co.jp/top/\nhttps://www.dmm.co.jp/digital/videoa/-/detail/=/cid=prvr00995\nhttps://www.dmm.co.jp/digital/videoa/-/detail/=/cid=waaa00224" }, "DMM.co.jp_video-x-p": { "link": "video\\.dmm\\.co\\.jp\\/av\\/content\\/\\?id=(\\w+)", "res": ":\nid = $[1]\nconst params={\n\t\"operationName\": \"ContentPageData\",\n\t\"query\": \"query ContentPageData($id: ID!, $isLoggedIn: Boolean!, $isAmateur: Boolean!, $isAnime: Boolean!, $isAv: Boolean!, $isCinema: Boolean!, $isSP: Boolean!) {\\n ppvContent(id: $id) {\\n ...ContentData\\n __typename\\n }\\n\\n ...basketCountFragment\\n}\\nfragment ContentData on PPVContent {\\n id\\n floor\\n title\\n isExclusiveDelivery\\n releaseStatus\\n description\\n notices\\n isNoIndex\\n isAllowForeign\\n\\n packageImage {\\n largeUrl\\n mediumUrl\\n __typename\\n }\\n sampleImages {\\n number\\n imageUrl\\n largeImageUrl\\n __typename\\n }\\n\\n mostPopularContentImage {\\n ... on ContentSampleImage {\\n __typename\\n largeImageUrl\\n imageUrl\\n }\\n ... on PackageImage {\\n __typename\\n largeUrl\\n mediumUrl\\n }\\n __typename\\n }\\n\\n sample2DMovie {\\n fileID\\n highestMovieUrl\\n __typename\\n }\\n sampleVRMovie {\\n highestMovieUrl\\n __typename\\n }\\n ...AmateurAdditionalContentData @include(if: $isAmateur)\\n ...AnimeAdditionalContentData @include(if: $isAnime)\\n ...AvAdditionalContentData @include(if: $isAv)\\n ...CinemaAdditionalContentData @include(if: $isCinema)\\n __typename\\n}\\n\\nfragment AmateurAdditionalContentData on PPVContent {\\n \\n \\n amateurActress {\\n id\\n name\\n imageUrl\\n age\\n waist\\n bust\\n bustCup\\n height\\n hip\\n relatedContents {\\n id\\n title\\n __typename\\n }\\n __typename\\n }\\n\\n\\n\\n makerContentId\\n __typename\\n}\\nfragment AnimeAdditionalContentData on PPVContent {\\n \\n\\n\\n\\n makerContentId\\n __typename\\n}\\nfragment AvAdditionalContentData on PPVContent {\\n \\n \\n actresses {\\n id\\n name\\n nameRuby\\n imageUrl\\n isBookmarked @include(if: $isLoggedIn)\\n __typename\\n }\\n\\n\\n\\n\\n makerContentId\\n __typename\\n}\\nfragment CinemaAdditionalContentData on PPVContent {\\n \\n actresses {\\n id\\n name\\n nameRuby\\n imageUrl\\n __typename\\n }\\n\\n\\n authors {\\n id\\n name\\n __typename\\n }\\n \\n\\n\\n makerContentId\\n __typename\\n}\\n\\nfragment basketCountFragment on Query {\\n basketCount: legacyBasket @include(if: $isSP) {\\n total\\n __typename\\n }\\n __typename\\n}\",\n\t\"variables\": {\n\t\t\"id\": id,\n\t\t\"isAmateur\": false,\n\t\t\"isAnime\": false,\n\t\t\"isAv\": true,\n\t\t\"isCinema\": false,\n\t\t\"isLoggedIn\": false,\n\t\t\"isSP\": false\n\t}\n},\nx=new XMLHttpRequest();\nx.open('POST','https://api.video.dmm.co.jp/graphql',false);\nx.setRequestHeader('content-type','application/json');\nx.send(JSON.stringify(params));\n\nconst ppv = JSON.parse(x.responseText).data?.ppvContent || {};\nreturn [\n ...(ppv.packageImage?.largeUrl ? [[ppv.packageImage.largeUrl]] : []),\n ...(ppv.mostPopularContentImage?.largeImageUrl ? [[ppv.mostPopularContentImage.largeImageUrl]] : []),\n ...(ppv.mostPopularContentImage?.largeUrl ? [[ppv.mostPopularContentImage.largeUrl]] : []),\n ...((ppv.sampleImages || []).map(i => [i.largeImageUrl]).filter(i => i[0])),\n ...(ppv.sample2DMovie?.highestMovieUrl ? [[ppv.sample2DMovie.highestMovieUrl]] : []),\n ...(ppv.sampleVRMovie?.highestMovieUrl ? [[ppv.sampleVRMovie.highestMovieUrl]] : [])\n];", "note": "loveqianool\nhttps://github.com/loveqianool/Imagus_sieve_RuBoard/blob/master/video.dmm.co.jp.json\n\n!!!\nДля проверки нужен аккаунт." }, "DNS-shop.ru-s": { "link": "^(?:www\\.)?dns-shop\\.ru\\/product\\/[a-f0-9]{16}\\/.+\\/$", "res": ":\nvar re=/data-product-card=\"([^\"]+)\"/gi\nvar az=$._\nvar url=re.exec(az)[1];\nif (url==null) { return null; }\nx = new XMLHttpRequest();\nx.open('GET', 'https://www.dns-shop.ru/catalog/product/get-media-content/?id=' + url,false)\nx.send();\nif (x.readyState != 4) return;\nif (x.status != 200) return;\nvar rawJson=x.responseText;\nvar res=[];\nvar re1=/\"origSrc\":{\"orig\":\"([^\"]+)\"/gi\nvar a = re1.exec(rawJson);\nwhile(a) {\n res.push([a[1]]);\n a = re1.exec(rawJson);\n}\nreturn res;\n", "note": "Baton34V\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=100#2\nOLD\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=2900#4\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=2520#12\n\nПРИМЕРЫ\nhttps://www.dns-shop.ru/catalog/17a8cf4816404e77/massazhery/\nhttps://www.dns-shop.ru/catalog/recipe/ecb3d99d171a79ba/58---65/" }, "DNS-shop.ru-s_club": { "link": "^club\\.dns-shop\\.ru/(?:review|digest)/(?:t-)?\\d+", "url": ": $[1]&&/dns-shop\\.ru/.test(location.hostname)?'data:,'+$[1]:$[0]", "res": ":\nif($[1]){\nif(!this.dns_shop_json){\nconst u=document.body.innerHTML.match(/data-product-card=\"([^\"]+)/)?.[1], x=new XMLHttpRequest();\nif(!u)return null;\nx.open('GET','https://www.dns-shop.ru/catalog/product/get-media-content/?id='+u,false);\nx.send();\nthis.dns_shop_json=x.responseText;\n}\nreturn JSON.parse(this.dns_shop_json).data.tabs[0].objects.find(i=>RegExp(`${$[1]}`).test(i.thumbSrc.orig))?.origSrc?.orig||''\n}\nconst imgOrig = (m) => m.replace(/thumb\\/st1\\/fit\\/\\d+\\/d+\\/[^\\/]+/,'api/v1/image/getOriginal');\n$=JSON.parse($._.match(/type=\"application\\/ld\\+json\">({.+?})<\\//)?.[1]||'{}')['@graph'][0];\nconst t=[$.about,$.description].filter(Boolean).join(\" | \");\nconst imgs=$.image.map((i,n)=>[imgOrig(i),!n?t:'']);\nconst vids=$.video?.map(i=>['',`<imagus-extension type=\"iframe\" url=\"${i.embedUrl}\"></imagus-extension>`]);\n$=imgs.concat(vids);\nif(vids?.length){\nthis.TRG.IMGS_ext_data=$;\nreturn {loop:'imagus://extension'};\n}\nreturn $", "img": "^\\w\\.dns-shop\\.ru/thumb/st\\d/(?:fit|crop)/\\d+/\\d+/\\w+/(\\w+\\.\\w+)(?:\\.\\w+)?$", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/lohqhfa\nOLD\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/lgkwer7\n\n\nПРИМЕРЫ\nhttps://club.dns-shop.ru/review/\nhttps://club.dns-shop.ru/review/t-116-myishi/120029-obzor-myishi-a4tech-fstyler-fb35c/\nhttps://club.dns-shop.ru/digest/120776-remeik-metal-gear-solid-3-sravnili-s-originalom/" }, "DogDrip-p": { "link": "^dogdrip\\.net.*/\\d+", "res": ":\nreturn [...$._.matchAll(/<(?:video|img)[^>]+src=\"(\\/dvs\\/[^\"]+)/g)].map(i=>[i[1]])", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/15sx7lx/comment/jwp1lwo\n\nEXAMPLES\nhttps://www.dogdrip.net/dogdrip\nhttps://www.dogdrip.net/?_filter=search&act=&vid=&mid=dogdrip&category=&search_target=title&search_keyword=@@" }, "DogfartNetwork-x-p": { "link": ".*dogfartnetwork\\.com/tour/scenes/.+/.+/pics/\\d+\\.jpg\\?p=\\d+", "res": "img src=\"(.*)\" alt=\"\"", "note": "gpl2731\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3616#1\n\n!!!\nYou need an account to view some of the clips.\n\nEXAMPLES\nhttps://www.dogfartnetwork.com/en/photos\nhttps://www.dogfartnetwork.com/en/videos/categories/amateur\nhttps://www.dogfartnetwork.com/en/videos/categories/femdom" }, "Domclick.ru-s": { "link": "^(?:\\w+\\.)?domclick\\.ru/card/\\w+__\\w+__\\d+", "url": ": (()=>{if (!this.node.closest('[data-test=\"product-snippet-property-offer\"]')) throw ''; return $[0]})()", "res": ":\nvar res = [];\n\nconst data = JSON.parse($._.match(/window\\.(?:__SSR_STATE__|__PRELOADED_STATE__)\\s*=\\s*({.+})/)?.[1]?.replace(/:undefined/g, ':\"\"') || '\"\"');\n\nlet descr = data.productCard?.originalProduct?.object_info?.description || data.shell?.data?.newFlat?.objectInfoList?.description;\n\n[\n ...data.productCard?.originalProduct?.photos || [],\n ...data.shell?.data?.newFlat?.photo || [],\n ...data.shell?.data?.newFlat?.complexPhotos || []\n]\n.forEach(function (item, i) {\n res.push([\n 'https://img.dmclk.ru/s2000x2000q100' + (typeof item == 'string' ? item : item.url),\n i === 0 ? descr : ''\n ]);\n});\n\nreturn res;", "img": "^(img\\.dmclk\\.ru/)s\\d+x\\d+q\\d+/(vitrina/.+.webp)", "to": "$1$2", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/m9t02fu\nOLD\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=2480#18\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=2060#7\n\n\n!!!\n- Курсор наводить на название объекта.\n- На странице самого объекта работает только для \"Похожие объявления рядом\".\n\nПРИМЕРЫ\nhttps://domclick.ru/arenda/kvartiry/odnokomnatnaja\nhttps://spb.domclick.ru/search?deal_type=sale&category=living&offer_type=flat" }, "Douban-g": { "img": "^(img\\d+\\.douban(?:io)?\\.com/)(?:(view/|img/)(?:photo|movie_poster_cover|(thing_review|commodity_story|celebrity))/(?!large)[^/]+|(icon/u(?=\\d))|[sm](?=pic/))", "to": ":\nreturn $[1] + ($[2] ? $[2] + ($[3]||'photo') + '/#large photo#' : (($[4]||'') + 'l'));", "note": "EXAMPLES\nhttps://movie.douban.com\nhttps://www.douban.com/photos/album/82722476/\nhttps://www.douban.com/gallery/topic/3345004/?_dtcc=1" }, "DOUYIN": { "link": "^douyin.com/video/(\\d+)", "url": "https://www.douyin.com/?modal_id=$1", "res": ":\ndebugger;\nlet url = /playAddr\\\\\":.+?\\\\\"src\\\\\":\\\\\"(.+?)\\\\\"/.exec($._)?.[1];\nreturn url + '#mp4';", "note": "hababr\nhttps://www.reddit.com/r/imagus/comments/1gfjyef/comment/lv6pl7t\n\n\nEXAMPLES\nhttps://www.reddit.com/domain/douyin.com/new/\nhttps://www.douyin.com/discover\nhttps://www.douyin.com/discover/search/anime?aid=4951d8db-9eba-4fbc-8ad3-d5533b12cc3c&type=general\nhttps://www.douyin.com/jingxuan/knowledge\nhttps://www.douyin.com/user/MS4wLjABAAAA_jQzoMGQI9-wJPUKSLsYfsAdTlcD_mmeFDCAy_0CoaI?from_tab_name=main" }, "Doujins-x-p": { "link": "doujins\\.com\\/.+\\/.+-\\d+.*", "res": ":\nvar i = $._.indexOf('class=\"swiper-zoom-container\"');\nif(t<0) { return null; }\nvar t = $._.indexOf('class=\"swiper-button-next\"', i);\nif(t<0) { return null; }\nvar res = [];\nvar re = /data-src=\"([^\"]+)\"/gi\nvar data=$._.substring(i,t);\nvar a = re.exec(data);\nwhile(a) {\n res.push([a[1].replace('amp;', '')]);\n a = re.exec( data );\n}\nreturn res;", "img": "static.doujins\\.com\\/t2?-(\\w+)\\..+", "to": ":\nlet url=document.querySelector('.swiper-slide[data-hash=\"'+$[1]+'\"] img').getAttribute('data-src');\nreturn url;\n", "note": "Baton34V\n(PM - 09/10/22)\nOLD\nhttps://www.reddit.com/r/imagus/comments/xv9tah/comment/ir1ohog\n\n!!!\nIn order for the sieve to work correctly, you need to install the uBO (uBlock Origin) extension:\nIn uBO Settings -> My Filters -> Add this line:\ndoujins.com##.thumbnail-cover\n\n\nПРИМЕРЫ / EXAMPLES\nhttps://doujins.com/tags/Cheating?page=5\nhttps://doujins.com/searches?words=naruto&page=3\nhttps://doujins.com/doujins-original-series/sinistra-a-narrow-eyed-gentle-big-breasted-mama-54410" }, "Download.ru": { "link": "^(download\\.ru/files/\\w+)/?$", "url": "https://$1.json", "res": ":\nlet urls;\ntry {\n urls = JSON.parse($._)?.object?.preview?.urls;\n} catch (error) {\n console.error('Could not fetch data');\n console.error('Post on /r/imagus');\n}\n\nconst url =\n urls?.mp4 ||\n urls?.large ||\n urls?.poster ||\n urls?.medium ||\n urls?.min ||\n urls?.small ||\n urls?.thumb ||\n urls?.tiny;\nreturn url && `https://download.ru${url}`;\n", "note": "gpl2731\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=2740#17\n\n\nПРИМЕРЫ\nforum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1360#11" }, "DPChallenge-g": { "img": "^(images\\.dpchallenge\\.com/images_[^/]+/\\d+-\\d+/\\d+/)120/", "to": "$1800/", "note": "EXAMPLES\nhttps://www.dpchallenge.com/" }, "DPreview": { "link": "^dpreview\\.com/sample-galleries/(\\d+)/(\\d+)?.*", "url": ": !this.json||$[1]!==this.pageId?'https://www.dpreview.com/sample-galleries/data/get-gallery?galleryId='+$[1]:'data:'+$[0]", "res": ":\nconst high_res_first = true\n\nthis.pageId=$[1]\nif($._[0]==='{')this.json=JSON.parse($._).images\nif(!this.json)return ''\nif(/one!$/.test($[0])){let m = this.json.find(i=>RegExp(`${$[2]}`).test(i.directUrl))\nreturn [[[(high_res_first?'#':'')+m.thumbnails[m.thumbnails.length-1].url,(high_res_first?'':'#')+m.thumbnails.toReversed().filter(i=>i.height<=1000)[0]?.url]]]\n}\nreturn this.json?.map(i=>[[(high_res_first?'#':'')+i.thumbnails[i.thumbnails.length-1].url,(high_res_first?'':'#')+i.thumbnails.toReversed().filter(i=>i.height<=1000)[0]?.url]])??''", "img": "^\\d\\.img-dpreview\\.com/files/p/(?!TS\\d{4,})[^/]+~sample_galleries/(\\d+/\\d+).*", "loop": 2, "to": ":\nreturn '//www.dpreview.com/sample-galleries/'+$[1]+'/one!'", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/gcji4p/comment/jz2wxwy\nOLD\nhttps://www.reddit.com/r/imagus/comments/gcji4p/support_dpreview/\n\nEXAMPLES\nhttps://www.dpreview.com/reviews/1107allinoneprinters" }, "Dribbble-g": { "link": "dribbble\\.com/shots/[\\w-]+", "res": ":\nvar i = $._.indexOf('<ol class=\"');\nvar res = [];\nif(i<0) {\n i = $._.indexOf('<video');\n if(i<0) {\n var re = /data-photoswipe-image.+?href=\\\"(http[^?]+)\\?/gi\n var a = re.exec($._);\n if (a) {\n res.push([a[1]]);\n } else {\n var ree = /div class=\\\"media-content\\\".+data-animated-url=\\\"(http[^\\\"]+)/gis\n var b = ree.exec($._);\n if (b) {\n res.push([b[1]]);\n } else {\n return null;\n }\n }\n } else {\n var t = $._.indexOf('</video', i);\n if(t<0) {return null;}\n var part=$._.substring(i,t);\n var re = /data-video-large=\\\"(http[^\\\"]+)/gi\n var a = re.exec(part);\n if (a) {\n res.push([a[1]]);\n } else {\n var ree = / src=\\\"(http[^\\\"]+)/gi\n var b = ree.exec(part);\n res.push([b[1]]);\n }\n }\n} else {\n var t = $._.indexOf('</ol>', i);\n if(t<0) {return null;}\n var part=$._.substring(i,t);\n var re = /data-srcset=\\\"(http[^\\?]+)/gi\n var a = re.exec(part);\n if (a) {\n var doc = new DOMParser().parseFromString(part+\"</ol>\", \"text/html\");\n var imgs = Array.from(doc.querySelectorAll(\"img\"));\n for (const i of imgs) {\n var url = i.attributes[\"data-animated-url\"];\n if (url) {\n res.push([url.value]);\n } else {\n url = i.attributes[\"data-src\"];\n if (url == null) {\n url = i.attributes.src;\n }\n var ree = /(http(?=.*cdn\\.)[^\\?]+)/gi\n var b = ree.exec(url.value);\n if (b && (i.classList.length && \n i.classList[0].toLowerCase()===\"lazyload\")) {\n res.push([b[1]]);\n }\n }\n }\n } else {\n re = /div class=\\\"video-wrap\\\"/gi\n if (re.exec(part)) {\n var ree = /data-video-large=\\\"(http[^\\\"]+)/gi\n var b = ree.exec(part);\n res.push([b[1]]);\n }\n }\n}\n\nreturn res;", "note": "destiny child\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1600#9\nOLD\nhttps://www.reddit.com/r/imagus/comments/c1vjns/comment/ers70h4\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3200#13\n\n!!!\nДля просмотра в некоторых режимах (например Поиск) необходимо зайти в аккаунт.\n==\nTo view in some modes (for example, Search), you need to log in to your account.\n\nEXAMPLES\nhttps://www.reddit.com/domain/dribbble.com/new/\nhttps://dribbble.com/riskified\nhttps://dribbble.com/shots/popular/animation\naccount needed:\nhttps://dribbble.com/search/green" }, "Drive2.ru-s": { "link": "^drive2\\.ru/\\w/\\d+/", "res": ":\nconst src_img=$._.match(/([^\\/.]+)-\\d+\\./)?.[1];\n$=[...$._.matchAll(/ImageObject\"><a href=\"([^\"]+)/g)].map(i=>[i[1]]);\nif(src_img)$=$.concat($.splice(0,$.findIndex(i=>RegExp(src_img).test(i[0]))));\nreturn $", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/lgkwer7\nOLD\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3320#8\n\nПРИМЕРЫ\nhttps://www.drive2.ru/experience/renault/g3151/" }, "Drom.ru-s": { "link": "^(\\w+)\\.drom\\.ru/.+/.+/(?:[^-]+-)*\\w?\\d+\\.html", "res": ":\nif(['moto','baza'].includes($[1])){\n$=JSON.parse($._.match(/<script type=\"application\\/ld\\+json\">([^<]+\"image\"[^<]+)<\\//s)?.[1]||'{}');\nreturn $.image.map((i,n)=>[i.replace('bulletin','default'),!n?[$.name,$.description].filter(Boolean).join(' | '):'']);\n}\nreturn [...new DOMParser().parseFromString($._,'text/html').querySelectorAll('[data-ftid=\"bull-page_bull-gallery_thumbnails\"] a')].map(i=>[i.href]);", "img": "^(static\\.baza\\.drom\\.ru/drom/\\d+_)bulletin", "to": "$1default", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/m9t02fu\nOLD\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/lnjfbin\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=2120#8\n\n\n\nПРИМЕРЫ\nhttps://auto.drom.ru/mercedes-benz/\nhttps://moto.drom.ru/sankt-peterburg/atv/\nhttps://uryupinsk.drom.ru/auto/\nhttps://baza.drom.ru/sankt-peterburg/wheel/" }, "Drom.ru_pdd": { "link": "^drom\\.ru/pdd/pdd/(sign|mark)[_\\d]+/?(/s#[_\\d]+)?", "res": ":\nlet i = $._.indexOf('pub__img');\nif(i<0) { return null; }\nlet t = $._.indexOf('id=\"comments_block\"', i);\nif(t<0) { return null; }\nlet res = [];\nlet re = /src=\"([^\"]+\\.svg)\"/gi\nlet data=$._.substring(i,t);\nlet a = re.exec(data);\nwhile(a)   {\n   res.push([a[1]]);\n   a = re.exec(data);\n}\nreturn res;", "note": "bkz830\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=2840#9\n\n\nПРИМЕРЫ\nhttps://www.drom.ru/pdd/pdd/" }, "Drom.ru_reviews": { "link": "drom\\.ru/reviews/.+/.+/\\d+/", "res": ":\nlet i = $._.indexOf('data-thumb-images');\nif(i<0) { return null; }\nlet t = $._.indexOf('<div data-preview-images', i);\nif(t<0) { return null; }\nlet res = [];\nlet re = /href=\"([^\"]+)\"/gi\nlet data=$._.substring(i,t);\nlet a = re.exec(data);\nwhile(a) {\n res.push([a[1]]);\n a = re.exec(data);\n}\nreturn res;", "note": "Baton34V\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=160#17\n\nПРИМЕРЫ\nhttps://www.drom.ru/reviews/" }, "Dropbox-h": { "link": "^dropbox\\.com/.*\\.(?:(aac|flac|m(?:p3|4a)|w(?:av|ma))|(3g[2p]|a(?:mv|sf|vi)|drc|f(?:lv|4[vpab])|m[42ko]v|mng|mp[g42ev]|mpeg|m2?ts|ts|mxf|nsv|og[vg]|r(?:m(?:vb)?|oq)|svi|v(?:iv|ob)|w(?:ebm|mv)|yuv)|bmp|gif|heic|j(?:pe?g|f?if)|png|svgz?|tiff?|webp)\\b.*", "ci": 1, "to": ":\nreturn $[0].replace('&dl=0','')+'&raw=1'+($[1] ? '#mp3' : $[2] ? '#mp4' : '')", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/l9fjg9m\n\nEXAMPLES\nhttps://www.reddit.com/domain/dropbox.com/new\nhttps://www.dropbox.com/scl/fo/y047r3n0qjtkxe5mfmbm0/AIoSisa8kY-Eftqo7g9cJIk?rlkey=6aty7918iydeks3qmsicd7owa&e=1&st=0jom4nvm&dl=0" }, "Drupal-CMS": { "img": "^([^/]+/sites/default/files/)styles/\\w+/public/", "to": "$1", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/1ogo012/comment/nlilezo\n\nEXAMPLES\n(first link)\nhttps://www.reddit.com/r/imagus/comments/1ogo012/full_size_drupal_cms_images/" }, "DTF.ru": { "img": "^(leonardo\\.osnova\\.io/[\\da-f-]+/)-/.+", "to": "$1", "note": "Baton34V\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1600#19\n\nПРИМЕРЫ\nhttps://dtf.ru/cinema/1569252-zriteli-unichtozhili-reyting-novogo-multseriala-pro-velmu-iz-skubi-du" }, "Dubz-h": { "link": "^(?:clip\\.)?dubz\\.[a-z]{2,4}/[a-z]{1,}/([a-z0-9]{6,})$", "res": "(?:video|source) src=\"([^#\"]+)", "note": "gpl2731\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=2740#13\nOLD\nhttps://www.reddit.com/r/imagus/comments/16s6g6c/comment/k283ned\nhttps://www.reddit.com/r/imagus/comments/130svfu/comment/jv5cpmr\n\nEXAMPLES\nhttps://www.reddit.com/domain/dubz.co/new/\nhttps://www.reddit.com/domain/dubz.link/new/" }, "DuckDuckGo": { "url": ": this.ddg_images?.some(i=>i.thumbnail.match(/id[\\/=]([^&]+)/)[1]===$[1]||i.thumbnail_token===$[2]) ? '' : 'data:,'+$[0]", "res": ":\nlet imgs=this.ddg_images||[], next=this.ddg_next, n=0, o\nconst getJSON = u => {\nconst x=new XMLHttpRequest()\nx.open('GET','https://duckduckgo.com/'+u+this.ddg_vqd+'#ddg_header',false)\nx.setRequestHeader('Priority','u=4')\nx.send()\nreturn JSON.parse(x.responseText)\n}\nif($._){\nif(!imgs.length){\nconst h=document.body.outerHTML, s=h.match(/\\?(q=[^&\"']+)/)[1], l=h.match(/&l=[^&\"']+/)[0], p=(/\\bp=-2/.test(document.cookie)?'-':'')+'1'\nthis.ddg_vqd=h.match(/&vqd=[^&\"']+/)[0];\no=getJSON(`i.js?o=json&${s+l}&p=${p}`)\nnext=o.next\nimgs.push(...o.results)\n}\nwhile(!imgs?.some(i=>i.thumbnail.match(/id[\\/=]([^&]+)/)[1]===$[1]||i.thumbnail_token===$[2])&&next&&n<25){\nn++\no=getJSON(next)\nnext=o.next\nimgs.push(...o.results)\n}\nthis.ddg_next=next\nthis.ddg_images=imgs\n}\nreturn imgs?.find(i=>i.thumbnail.match(/id[\\/=]([^&]+)/)[1]===$[1]||i.thumbnail_token===$[2])?.image", "img": "^external-content\\.duckduckgo\\.com/iu/\\?u=.+?[F/?]id(?:=|%(?:3D|2F))([^&%]+).*&ipt=([^&]+).*", "loop": 2, "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/1k0lov6/comment/mnw59sy\nOLD\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1060#11\n\n!!!\nOn some thumbnails, about 10%, the sieve does not work (reduced size - 400*400).\n\nEXAMPLES\nhttps://duckduckgo.com/?q=cat+pics&ia=images&iax=images" }, "Dumpert.nl": { "link": "^(dumpert\\.nl/)(?:mediabase/|item/|[^?]*\\?selectedId=)(\\d+)[/_]([\\da-f]+).*", "url": "https://api-live.$1mobile_api/json/info/$2_$3", "res": ":\nvar r=JSON.parse($._), x = r&&r.items&&r.items[0]\nthis.TRG.IMGS_ext_data = x.media.map(function(m,i){\n var v = {};\n m.variants.forEach(function(m){return v[m.version]=m.uri})\n m = [v['720p'] || v.tablet || v.mobile || v.photo, !i && [x.date, x.title, x.description].filter(Boolean).join(' | ')]\nreturn /\\.m(?:3u8|pd)?\\b/.test(m[0]) ? ['',`<imagus-extension type=\"videojs\" url=\"${m[0]}\"></imagus-extension>${m[1]||''}`] : m\n})\nreturn {loop:'imagus://extension'}", "img": "^media\\.(dumpert\\.nl/)(?:sq_thumb|still)s/medium/(\\d+)_([\\da-f]+).+", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/lml1m93\nOLD\nhttps://www.reddit.com/r/imagus/comments/dntaa7/comment/fexkxw6\n\nEXAMPLES\nhttps://www.dumpert.nl/toppers\nhttps://www.dumpert.nl/zoek/ANIMALS\nhttps://www.reddit.com/domain/dumpert.nl/new/" }, "DZEN.ru-m-h": { "link": "^dzen\\.ru/(a|shorts|video/watch|news/story|embed)/\\w+", "res": ":\nlet data, media = [];\nif($[1]==='embed'){\ndata = JSON.parse($._.match(/Dzen\\.player\\.init\\((.+?)\\);/)?.[1]||$._.match(RegExp(`_params=\\\\(({\"ssrData\":{.+?})\\\\)`))?.[1]||'{}');\nmedia = (data.data||data.ssrData?.exportResponse)?.content?.streams?.find(i=>/\\.m3u8/.test(i.url));\nreturn media ? {loop:media.url} : ''\n}\nif($[1]==='news/story'){\nconst x = new XMLHttpRequest();\nlet stop = false;\ndata = JSON.parse($._.match(/=({.+?})<\\//)?.[1]||'{}').dataSource?.news?.story?.mediaBlock?.items||[];\ndata.forEach(i=>{\nif(i.type==='jingle')stop = true;\nif(!stop){\nif(i.type==='photo')media.push([i.original?.src?.replace(/\\d+x\\d+$/,'orig')]);\nif(i.type==='video'){\nx.open('GET','https://dzen.ru/embed/'+i.id+'.json',false);\nx.send();\ni=JSON.parse(x.responseText||'{}').content?.streams?.[0]?.url;\nif(i)media.push(['',`<imagus-extension type=\"videojs\" url=\"${i}\"></imagus-extension>`]);\n}\n}\n})\nthis.TRG.IMGS_ext_data = media;\n}else{\nif($[1]==='a'){\n// article images\ndata = JSON.parse($._.match(/(?:w\\._data\\s*=\\s*|var _params=\\()({.+?\"imageName\".+?})\\)?;/)?.[1]||'{}');\nconst u = '//avatars.dzeninfra.ru/get-', p = data.publication?.content?.preview||data.ssrData?.publishersResponse?.data?.data?.images;\nif(p?.image?.imageName){\nlet p2 = p?.image;\np2 = u+[p2.namespace, p2.groupId, p2.imageName].join('/');\nmedia.push([['#'+p2+'/orig',p2+'/scale_1200'],p.snippet||'']);\n}\nObject.values(data.images||p||[]).forEach(i=>{\nconst img = u+[i.namespace, i.groupId, i.imageName].join('/');\nif(i.imageName!==p.imageName&&i.namespace!=='zen-logos')media.push([['#'+img+'/orig',img+'/scale_1200'],i.title||'']);\n})\nthis.TRG.IMGS_ext_data = media;\n}else{\n// video\ndata = JSON.parse($._.match(RegExp(`_params=\\\\(({\"ssrData\":{.+?})\\\\)`))?.[1]||'{}').ssrData;\nmedia = data?.videoMetaResponse?.video?.id;\nthis.TRG.IMGS_ext_data = ['//data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"640\" height=\"360\"></svg>',`<imagus-extension type=\"videojs\" url=\"${media}\"></imagus-extension>${data?.videoMetaResponse?.source?.description||''}`];\n}\n}\nreturn media ? {loop:'imagus://extension'} : null", "img": "^(avatars\\.dzeninfra\\.ru/get-ynews/\\d+/[a-f0-9]+/)\\d+x\\d+$", "loop": 2, "to": ":\nconst n=this.node;\nreturn location.hostname==='dzen.ru'&&n.closest('.news-media-block-redesign__previews-item-inner') ? n.baseURI+'?loop' : $[1]+'orig'", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/mjagbto\nOLD\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/mhivzjn\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/lye5fxm\n\n\n!!!\n- фильтр не работает в разделе \"Ролики\" (https://dzen.ru/shorts), но работает на внешних ссылках;\n- иногда может потребоваться повторное наведение курсора.\n\nПРИМЕРЫ\nhttps://dzen.ru/articles\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1360#11" }, "e621|e926|e6ai-x-p": { "link": "^e(621|926)\\.net/pools/\\d+", "res": ":\nlet i = $._.indexOf('=\"posts-container\">');\nif(i<0) { return null; }\nlet t = $._.indexOf('class=\"pagination numbered\"', i);\nif(t<0) { return null; }\nlet res = [];\nlet re = /data-file-url=\"([^\"]+)\"/gi\nlet data=$._.substring(i,t);\nlet a = re.exec(data);\nwhile(a) {\n res.push([a[1]]);\n a = re.exec(data);\n}\nreturn res;", "img": "^(static\\d\\.e(?:621|926|6ai)\\.net/data/)preview/(\\w+/\\w+/\\w+\\.)\\w+", "to": "$1$2#png jpg webm gif#", "note": "imqswt\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/nq0br7r\nOLD\nhttps://www.reddit.com/r/imagus/comments/1h9nxl7/comment/m1648lw\nhttps://www.reddit.com/r/imagus/comments/17chaqm/comment/k5t8bhf\n\n\n\nEXAMPLES\nhttps://e6ai.net/posts\nhttps://e621.net/pools/gallery\nhttps://e621.net/pools/14205\nhttps://e621.net/posts?tags=kyrakupetsky" }, "EBAY-s": { "link": "^(?:(?:(?:be\\w\\w|viewitem\\.eim|cgi)\\.)?ebay\\.(?:a[pt]|[bd]e|c[ahnz]|co(?:m(?:\\.(?:au|hk|my|sg|tw))?|\\.(?:th|uk))|es|f[ir]|gr|[hr]u|i[ent]|n[lo]|p[hl]|vn)/(?:itm/)?[^/?]*[?/](?:item=)?|chodientu\\.vn/ebay-item-)(\\d{8,19}).*", "res": ":\nconst rx =\n /img src=\"([^\"]+)\" style=\"max\\-width:64px;max\\-height:64px\"\\s+index=\"\\d+\"/g;\nconst matches = [...$._.matchAll(rx)];\nif (matches.length)\n return matches.map(item => [item[1].replace(/s\\-l\\d+\\./, 's-l9999.'), '']);\n\nconst scriptSrc = $._.match(/mediaList\":(\\[.*?)<\\/script>/)?.[1];\nif (!scriptSrc) return;\n\n// Find where the mediaList array ends.\nlet counter = 0,\n end;\nfor (let i = 0; i < scriptSrc.length; i++) {\n if (scriptSrc[i] === '[') counter++;\n if (scriptSrc[i] === ']') counter--;\n if (counter === 0) {\n end = i + 1;\n break;\n }\n}\n\ntry {\n return JSON.parse(scriptSrc.slice(0, end)).map(m => [\n m?.image?.originalImg?.URL.replace(/s\\-l\\d+\\./, 's-l9999.'),\n m?.image?.originalImg?.title.trim(),\n ]);\n} catch (e) {\n console.log(`eBay Sieve didn't work. Error: ${e}`);\n return;\n}\n", "img": "^((?:ssl)?i\\d*\\.ebayimg\\.com/)(?:(?:thumbs/)?(images/[a-z]/[^/]+/s-l)[^.]+|((?:t/[^/]+/)?\\d+/[^_]+(?:~~\\d*)?)_(?!32)\\d+\\.)", "to": ":\nreturn $[1]+($[2] ? $[2]+'1600' : $[3]+'_32.')", "note": "gpl2731\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1200#11\nOLD\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1160#12\nhttps://www.reddit.com/r/imagus/comments/fjtjio/where_can_i_get_the_default_url_string_for_the/\n\nПРИМЕРЫ / EXAMPLES\nhttps://www.ebay.co.uk/b/Fishfinders-GPS/29723/bn_10198555?LH_Auction=1&rt=nc\nhttps://www.ebay.co.uk/b/Samsung-Laptops-Netbooks/175672/bn_6385453\nhttps://www.ebay.co.uk/p/28044271993?iid=165595634146\nhttps://www.ebay.com/sch/i.html?_from=R40&_trksid=p2499334.m570.l1313&_nkw=sports+cars&_sacat=6001\nhttps://www.ebay.com/itm/AMD-Ryzen-Threadripper-3990X-Processor-4-3-GHz-64-Core-Socket-sTRX4/223937363515?epid=4036368896&hash=item3423b4fe3b:g:4qkAAOSwzCFeYRaa" }, "E-Hentai|Exhentai-x-q-p": { "link": "^((?:g\\.e-|e[x-])hentai\\.org\\/(lofi\\/)?(g|s)\\/\\w+\\/(\\w+(-\\d+)?))(\\/\\?p=(\\d+))?", "res": ":\nif($[3]==='s'){\nvar get_original = true;\nreturn [[[get_original&&$._.match(/<a href=\"([^\"]+)\">Download original/)?.[1].replace(/.+/,'#$&'),$._.match(/<img id=\"img\" src=\"([^\"]+)/)[1]],$._.match(/<title>([^<]+)/)[1]]];\n}\nvar loadpage = 50;\nvar maxpages = $._.match(/Showing (\\d+) - (\\d+) of (\\d+) images/);\nvar res = this.res || [];\n\nfunction processLink(link) {\n const xhr = new XMLHttpRequest();\n xhr.open('GET', link, false);\n xhr.send();\n const matches = xhr.responseText.match(/src=\"(https:\\/\\/[\\w.]+\\.hath\\.network.+?)\"/);\n if (matches) {\n res.push([matches[1]]);\n }\n}\n\nvar pages = $._.match(/https:\\/\\/(?:g\\.e-|e[x-])hentai\\.org\\/(?:lofi\\/)?s\\/\\w+\\/\\d+-\\d+/g)?.slice(0, loadpage);\npages?.forEach(processLink);\nvar nextpage = $._.match(/<a href=\"([^\"]+)\" onclick=\"return false\">></);\nif(nextpage&&res.length<=80){\nthis.res = res;\nreturn {loop:nextpage[1]};\n}\ndelete this.res;\nconsole.log(pages);\nreturn res;", "note": "imqswt\nhttps://www.reddit.com/r/imagus/comments/1d249wt/comment/l6am0ot\nOLD\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/kziooam\nhttps://www.reddit.com/r/imagus/comments/16fg1ks/comment/k3h5v9z\n\n\n\n!!!\nВ РФ нужен качественный прокси, на плохом периодически могут появляться ошибки (\"красный спиннер\").\n+\nВ результатах поиска фильтр показывает первые 100 картинок из галереи.\n+\nПо умолчанию фильтр находит и загружает картинки в максимальном разрешении. Если вам это не нужно (медленное соединение, прокси), то это можно отключить: \nvar get_original = false;\n(третье поле сверху, третья строка)\n====\nIn the search results, the sieve shows the first 100 pictures from the gallery.\n+\nBy default, the sieve finds and loads pictures at the maximum resolution. If you don't need it (slow connection, proxy), you can disable it: \nvar get_original = false;\n(third field from the top, third line)\n\n\nПРИМЕРЫ / EXAMPLES\nhttps://e-hentai.org/tag/parody:blue+archive\nhttps://e-hentai.org/tag/character:silver+wolf\nhttps://e-hentai.org/g/2424971/440a74554f/\nhttps://e-hentai.org/g/2424915/97d240eb12/?p=2" }, "ehentai.to|nhentai.to-x-p": { "link": "^[en]hentai\\.to/g/\\d+/?$", "res": ":\nvar i = $._.indexOf('id=\"thumbnail-container\"');\nif(i<0) { return null; }\nvar t = $._.indexOf('<script src=\"', i);\nif(t<0) { return null; }\nvar res = [];\nvar re = /data-src=\"([^\"]+)\"/gi\nvar a = re.exec( $._.substring(i,t) );\nvar data=$._.substring(i,t);\nwhile(a) {\n res.push([a[1].replace('t.','.')]);\n a = re.exec(data);\n}\nlet meta = document.querySelector('head > meta[name=\"referrer\"]');\nif (!meta) {\n meta = document.createElement('meta');\n meta.name = 'referrer';\n meta.content = 'same-origin';\n document.getElementsByTagName('head')[0].appendChild(meta);\n} else if (meta.attributes.content.value !== 'same-origin') {\n meta.attributes.content.value = 'same-origin';\n}\nreturn res;", "img": "^((?:cdn\\.nload|zorocdn)\\.xyz/galleries/\\d+/\\d+)t(\\.\\w+)", "to": "$1#.png .jpg .gif#", "note": "imqswt\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/ljoxgdx\nOLD\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=740#5\n\n\nEXAMPLES\nhttps://nhentai.to/g/437793\nhttps://ehentai.to/tag/handjob/" }, "eKnives.ru-s": { "link": "^eknives\\.ru/[\\w-]+/\\d+\\.html", "res": ":\nvar i = $._.indexOf('<div class=\"pps_hide\"');\nif(i<0) {return null; }\nvar t = $._.indexOf('</div>', i);\nif(t<0) {return null; }\nvar res = [];\nvar re = /<a href=\"([^\"]+)\"/gi\nvar data=$._.substring(i,t);\nvar a = re.exec(data);\nwhile(a) {\n res.push([a[1]]);\n a = re.exec(data);\n}\nreturn res;\n", "note": "Baton34V\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3660#18\n\nПРИМЕРЫ\nhttps://www.eknives.ru/brandMrblade/" }, "eApteka.ru-s": { "link": "eapteka\\.ru/([^/]+/)?goods/id\\d+/", "res": ":\nvar i = $._.indexOf('<div class=\"gallery__main-slick s-carousel\"');\nif(i<0) { return null; }\nvar t = $._.indexOf('<div class=\"', i+20);\nif(t<0) { return null; }\nvar res = [];\nvar re = /<a href=\"([^\"]+)\"/gi\nlet data=$._.substring(i,t);\nvar a = re.exec(data);\nwhile(a) {\n res.push([a[1]]);\n a = re.exec(data);\n}\nreturn res;", "note": "Baton34V\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1340#20\nOLD\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=100#15\n\n\nПРИМЕРЫ\nhttps://www.eapteka.ru/goods/vitaminy_i_bad/\nhttps://www.eapteka.ru/sochi/search/?q=эхинацея" }, "Eksisozluk|Soz.lk": { "link": "^(?:(eksisozluk\\d*\\.com)/img|soz\\.lk/i)/\\w+", "url": ": /firefox/i.test(navigator.userAgent)||location.hostname===$[1]?'data:,'+$[0]:$[0]", "res": ":\nif($.base[0]==='d'){\nconst x=new XMLHttpRequest()\nx.open('GET',$[0],false)\nx.send()\n$._=x.responseText\n}\nreturn $._.match(/id=\"image-zoom\" href=\"([^\"]+)/)?.[1]||''", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/1g5z858/comment/lsqtii9\nOLD\nhttps://www.reddit.com/r/imagus/comments/167b83i/comment/kergxj3\nhttps://www.reddit.com/r/imagus/comments/167b83i/comment/k1jt9r8\n\n!!!\nThe sieve does not work on external links:\nhttps://www.reddit.com/r/imagus/comments/1g5z858/comment/lsnw8a4\n\nEXAMPLES\n???" }, "EksiUp": { "link": "^(eksiup\\.com/)(?:p/)?([\\da-z]{9,12}).*", "url": "$1p/$2", "res": "=\"og:image\" content=\"([^\"]+)\n=\"og:title\" content=\"([^\"]+) - ", "note": "https://www.reddit.com/r/imagus/comments/bjtmgz/comment/eme4v8k\n\n!!!\nNeed an account" }, "Eldorado.ru-s": { "link": "^eldorado\\.ru/cat/detail/.+", "url": "data:,$&", "res": ":\nconst x=new XMLHttpRequest();\nx.open('Get',$[0],false);\nx.send();\n$=JSON.parse(x.responseText.match(/\"__NEXT_DATA__\" type=\"application\\/json\">(.+?)<\\/script/)[1]).props.initialState;\nconst id=$['product-module'].id;\nreturn $['products-store-module'].products[id].images.map(i=>['https://static.eldorado.ru'+i.url])", "img": "^(static\\.eldorado\\.ru/img\\d+/[^.]+\\.jpg)/resize/.+", "to": "$1", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/landzre\nOLD\nhttps://www.reddit.com/r/imagus/comments/18n32dx/comment/kegj1ka\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3840#3\n\n\n!!!\nКурсор рекомендуется наводить на название товара.\n+\nНа данном сайте агрессивная защита, которая иногда приводит к блокированию работы фильтра (желтый спиннер), но возможно она срабатывает не всегда и не для всех.\n\n\nПРИМЕРЫ\nhttps://www.eldorado.ru/c/televizory/f/qled-technologiya/\nhttps://www.eldorado.ru/c/operativnaya-pamyat/?view=tile\nhttps://www.eldorado.ru/search/catalog.php?q=оперативная%20память" }, "eMoviePoster": { "img": "^(emovieposter\\.com/images/[^/]+/(?:AA\\d{6}/)?)\\d+", "to": "#$1\n$1550/", "note": "https://www.reddit.com/r/imagus/comments/e6l53p/comment/feypzhw\n\nEXAMPLES\nhttps://www.emovieposter.com/agallery/all.html\nhttps://www.emovieposter.com/agallery/archiveitem/12885732.html" }, "EntameClip": { "img": "^(cdn\\.entameclip\\.com/\\d+/\\d+/[^-]+)-\\d+x\\d+", "to": "$1", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/1g45twx/comment/ls2bmzc\n\nEXAMPLES\nhttps://www.reddit.com/r/imagus/comments/1g45twx/entameclipcom_higher_resolution_popup_how_to_do_it/" }, "Epicentrk.ua-s-p": { "link": "^epicentrk\\.ua/(?:ua/)?shop/.+\\.html", "url": "data:,$&", "res": ":\nconst x=new XMLHttpRequest();\nx.open('Get',$[0],false);\nx.send();\n$=[...x.responseText.matchAll(/data-zoom=\"([^\"]+)/g)].map(i=>[i[1]])\nreturn [...new Map($)]", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/landzre\nOLD\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1120#10\n\n\nПРИМЕРЫ / EXAMPLES\nhttps://epicentrk.ua/ua/shop/velosipedy/\nhttps://epicentrk.ua/ua/shop/krossovki-i-kedy-muzhskie/" }, "EpicGames": { "link": "^store\\.epicgames\\.com/[^/]+/(?:p|blog)/.+", "res": ":\nreturn [...new Map([...$._.matchAll(/img[^>]+(?:content|data-image|src)=\"(https:\\/\\/[^/]+\\/[^.\"]+\\.[^?\"]+)/g)].map(i=>[i[1]]))]", "img": "^(cdn\\d\\.unrealengine\\.com/[^.]+\\.[^?]+).*", "to": "$1", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/15qpek4/comment/jwjhnge\n\n!!!\nВ магазине курсор следует наводить на область чуть ниже постера (с названием типа игры).\n==\nIn the store, the cursor should be placed on the area just below the poster (with the name of the game type).\n\nEXAMPLES\nhttps://store.epicgames.com/ru/news?page=3\nhttps://store.epicgames.com/ru/collection/top-sellers\nhttps://store.epicgames.com/ru/browse?q=green&sortBy=relevancy&sortDir=DESC&count=40" }, "Eporner-x-q-p": { "link": "^(eporner\\.com)/(hd-porn|video|gallery).+", "res": ":\nconst max_resolution = 1080;\n\nif($[2]==='gallery')return [...$._.matchAll(/<img id=\"[^\"]+\" src=\"([^\"]+)/g)].map(i=>[i[1].replace(/_[^.]+/,'')])\n\nconst re = new RegExp(\n '<a href=\"(?<url>/dload.*?)\" >Download.*?\\\\((?<res>\\\\d+)',\n 'g'\n);\nconst streams = [...$._.matchAll(re)]\n .map(a => ({\n res: a.groups.res,\n url: `//www.${$[1]+a.groups.url}`,\n }))\n .sort((a, b) => b.res - a.res)\n .filter(a => a.res <= max_resolution);\n\nif (streams.length) return streams[0].url;\nreturn;", "img": "^(static-ca-cdn\\.eporner\\.com/gallery/[^_]+)[^.]+", "to": "$1", "note": "imqswt\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/n4vjka0\nOLD\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3720#8\nhttps://www.reddit.com/r/imagus/comments/iv556b/nsfw_bunch_of_sieves_for_popular_adult_site_videos/\n\n\n!!!\n- Переключение качества видео (480/720/1080) в третьем поле сверху: const max_resolution = ;\n- Показ галерей (альбомов) на данный момент не работает.\n==\n- Switching video quality (480/720/1080) in the third field from the top: const max_resolution = ;\n- The gallery (album) display does not work at the moment.\n\n\nПРИМЕРЫ / EXAMPLES\nhttps://www.reddit.com/domain/eporner.com/new\nhttps://www.eporner.com/search-photos/milf-mom/\nhttps://www.eporner.com/pornstar/brandi-love/photos/#toptopbel" }, "EroMe-x-p": { "link": "^erome\\.com/[ai]/\\w+", "res": ":\nconst title = $._.match(/<h1>(.+)<\\/h1>/)?.[1] || '';\nconst vidRe = `(?:<source src=\"([^\"]+)\" type='video\\/mp4)`;\nconst imgRe = `(?:<div class=\"img\" data-src=\"([^\"]+))`;\nconst re = new RegExp(`${vidRe}|${imgRe}`, 'g');\n\nconst matches = [...$._.matchAll(re)].map(m => m?.[1] || m?.[2]);\nif (!matches.length) return;\n \nlet result = Array.from(new Set(matches));\nresult = result.map((item, idx) => [\n item,\n `${title} - ${idx + 1} of ${result.length}`,\n]);\nreturn result;\n", "note": "imqswt\nhttps://www.reddit.com/r/imagus/comments/1qwlyfv/comment/o3vddgd\nOLD\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1140#5\n\n!!!\n- для показа видео необходимо правило для SMH (см.ЧаВо, п.12);\n- курсор рекомендуется наводить на название. \n==\n- to show the video, you need a rule for SMH (see FAQ, p.12);\n- It is recommended to hover the cursor over the name.\n\nEXAMPLES\nhttps://www.erome.com/explore\nhttps://www.erome.com/Bootyallday3\nhttps://www.erome.com/search?q=asian\nhttps://www.erome.com/explore/new?page=5" }, "EroProfile-x-p": { "link": "eroprofile\\.com\\/[mp]\\/(videos|photos)\\/view\\/.*", "res": ":\nlet toptext = $._.match(/<h1 class=\"capMultiLine\">([^<]*)<\\/h1>/)[1];\n\nlet mediaurl = \"\";\n\nif($[1] == \"photos\") {\n mediaurl = $._.match(/<img class=\"photoPlayer\" src=\"([^\"]*)\" alt/)[1];\n}\nelse { //($[1] == \"videos\")\n mediaurl = $._.match(/<source src=\"([^\"]*)\" type/)[1];\n}\n\nreturn [mediaurl, toptext];", "note": "iceiller9999\nhttps://www.reddit.com/r/imagus/comments/102rqm3/comment/j35bvzz\nOLD\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3360\n\n\nEXAMPLES\nhttps://www.eroprofile.com/m/videos/home?pnum=4\nhttps://www.eroprofile.com/m/photos/popular\nhttps://www.eroprofile.com/m/photos/search?niche=12\nhttps://www.reddit.com/domain/eroprofile.com/" }, "EtoRetro.ru-g-p": { "useimg": 1, "link": "((www\\.)?etoretro\\.ru\\/pic\\d+\\.htm\\?sort_field=\\w+&sort=(DESC|ASC)(&time_range=\\w+)?&position=\\d+)", "ci": 1, "res": ":\nconst rx = /src=\"(data\\/media\\/.*?\\.jpe?g)\"/g;\nconst m = [...$._.matchAll(rx)].map(e => [e[1], \"\"]);\nif (!m.length) return;\nreturn m;", "img": "^(etoretro.ru/data/)thumbnails", "to": "$1media", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/130svfu/comment/kd6jo2n\nOLD\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1120#10\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=1020#21\n\n\nПРИМЕРЫ\nhttps://www.etoretro.ru/id5421.htm\nhttps://etoretro.ru/id298.htm?page=4\nhttps://etoretro.ru/city5306.htm\nhttps://etoretro.ru/city5313.htm#z-z%7CDESC%7C6%7Cimage_date%7Call" }, "Etsy-s-p": { "link": "^etsy\\.com/listing/\\d+", "res": ":\nconst use_sidebar = true // True shows sidebar with product description\n\nconst imgs=JSON.parse($._.match(/<script type=\"application\\/ld\\+json\">({.+?})</)[1]), vid=JSON.parse($._.match(/<script type=\"application\\/ld\\+json\">({\"@type\":\"Video.+?})</)?.[1]||'{}'), t=imgs.description;\n$=imgs.image?.map((i,n)=>[i.contentURL,!n?t:''])||[];\nif(vid?.contentURL)$.push([vid?.contentURL]);\nif(use_sidebar){\n$[0][1]=`<imagus-extension type=\"sidebar\">${t.replace(/\\n{3,}/g,'\\n\\n')}</imagus-extension>`;\nthis.TRG.IMGS_ext_data=$;\nreturn {loop:'imagus://extension'}\n}\nreturn $", "img": "^(i(?:mg\\d*)?\\.etsystatic\\.com/[^_]*/i[^_]+_)\\d+x[\\dN]+", "to": "$1fullxfull", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/lnjfbin\n\n!!!\nAdded the product description in the sidebar. It can be turned off by setting use_sidebar to false.\n+\nThe cursor should be placed on the name of the product.\n\nEXAMPLES\nhttps://www.etsy.com/c/home-and-living/furniture/bedroom-furniture?ref=catnav-891\nhttps://www.etsy.com/search?q=handmade+clothing&mosv=sese&moci=1069619756788" }, "Explosm": { "link": "^explosm\\.net/comics/(?:.+)", "res": ":\nlet comic;\n\ncomic = $._.match(/<img src=\"(https:\\/\\/(?:files|static)\\.explosm\\.net\\/(?:\\d{4}\\/\\d{2}\\/\\d+|comics\\/[^\\/]+)\\/[^\\.]+\\.(?:png|gif|jpg))/);\nif (comic)\n comic = comic[1];\n\n// This is a fallback in case the page dynamically loads the comic. It seems only a few pages do that (see notes for an example)\nelse\n comic = $._.match(/\\\\\"mediaItemUrl\\\\\":\\\\\"(https:\\/\\/(?:files|static)\\.explosm\\.net\\/(?:\\d{4}\\/\\d{2}\\/\\d+|comics\\/[^\\/]+)\\/[^\\.]+\\.(?:png|gif|jpg))\\\\\",/)[1];\n\nreturn comic;", "note": "borderpeeved\nhttps://www.reddit.com/r/imagus/comments/xdzxo9/comment/iojot9a\n\nEXAMPLES\nhttps://explosm.net/\nhttps://www.reddit.com/r/CyanideandHappiness/search/?q=url%3Aexplosm.net&include_over_18=on&restrict_sr=on&t=all&sort=top" }, "ExpornToons|Mat6tube|Noodle|Ukdevilz-x-q-p": { "link": "^(?:[^.]+\\.)?((?:mat6tube|noodlemagazine|ukdevilz)\\.com|exporntoons\\.net)/(v/video|watch)/.+", "res": ":\nif($[2]==='v/video')return {loop:$._.match(/id=\"player_box\" src=\"([^\"]+)/)?.[1]||''}\n$=JSON.parse($._.match(/window\\.playlist = ([^;]+)/)[1]).sources\nreturn [[['#'+$[0].file+'#mp4',$[1]?.file+'#mp4']]]", "note": "imqswt\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/ljoxgdx\nOLD\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/l7vwc8p\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/kw0gdbt\n\n\n\n\n!!!\n- Возможен выбор качества видео (по клавише TAB).\n- Иногда сайт требует пройти проверку на возраст (поставить галочку), без нее фильтр работать не будет.\n==\n- Possible choice of video quality, using the TAB key.\n- Sometimes the site requires an age verification (check the box), without it the sieve will not work.\n\n\nEXAMPLES\nhttps://www.reddit.com/domain/ukdevilz.com/new/\nhttps://www.reddit.com/domain/noodlemagazine.com/new/\nhttps://18.ukdevilz.com/video/haley%20reed\nhttps://main.noodlemagazine.com/v/category/documentary\nhttps://noodlemagazine.com/video/green\nhttps://hot.exporntoons.net/watch/-137573872_456240073\nhttps://red.mat6tube.com/watch/-151482683_456239147" }, "EyeСandy-x-p": { "link": "^(eyecandy\\.net)/(album|video)s/\\w+", "url": ": (location.hostname.slice(-12)===$[1]?'data:,':'')+$[0]", "res": ":\nif($.base[0]==='d'){\nconst x=new XMLHttpRequest();\nx.open('GET',$[0],false);\nx.send();\n$._=x.responseText;\n}\nif($[2]==='video')return {loop:$._.match(/<iframe src=\"([^\"]+)/)?.[1].replace(/\\/iframe.*/,'/manifest/video.mpd?')||''};\nconst l=$._.match(/\"h-full max-w-full\"/g);\n$=JSON.parse($._.match(/id=\"__NUXT_DATA__\">(.+?)<\\//)?.[1]||'[]');\n$=$.filter(i=>/^https:\\/\\/static\\.eyecandy\\.net\\/media\\/\\d+\\/\\w+\\./.test(i)).map(i=>[i]);\n$.length=l?.length||0;\nreturn $", "img": "^(static\\.eyecandy\\.net/media/\\d+/)conversions/([^/.]+)+-[wx]\\d+\\..+", "to": "$1$2.#jpg png jpeg#", "note": "imqswt\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/nqoj85p\nOLD\nhttps://www.reddit.com/r/imagus/comments/1hdv9ap/comment/m24xxon\n\nEXAMPLES\nhttps://www.eyecandy.net/trending\nhttps://www.eyecandy.net/explore\nhttps://www.eyecandy.net/u/EroSensei\nhttps://www.eyecandy.net/u/EroSensei/liked-albums" }, "F95zone-x-p": { "link": "^(f95zone\\.to/threads/(?:[\\w-]+\\.)?\\d+/?)(?:post-\\d+/?)?(?:unread)?$", "url": "$1", "res": ":\nlet parser = new DOMParser();\nlet doc = parser.parseFromString($._, \"text/html\");\nlet images = doc.querySelector(\"article\")?.querySelectorAll(\"div[class='attachmentList'] a.js-lbImage, ul[class='attachmentList'] a.js-lbImage\");\nlet attach = doc.querySelector(\"article\")?.querySelectorAll(\"a:has(img[class*='bbImage']):not([class='link link--internal']), span > img[class*='bbImage'][data-zoom-target='1']\");\nlet genre = [...$._.matchAll(/Genre<\\/b>:.+\\n\\n\\n.+\\n.+\\n\\n.+\\n.+\\n.+\\n.+\\n\\n.*?>([^<]+)/gm)]\ngenre = genre.length > 0 ? genre[0][1] : 'nope';\nlet description = doc.querySelector('meta[property]')?.content||''\nlet res = [];\nif(images?.length > 0){\n[...images].map(e => res.push([e.href, `Tags: ${genre} | ${description.replaceAll('\\n', ' | ')}`]));\n} \nif(attach?.length > 0){\n[...attach].map(e => res.push([e.href||e.src, `Tags: ${genre} | ${description.replaceAll('\\n', ' | ')}`]));\n}\nreturn [...new Map(res)];", "img": "^f95zone\\.to/attachments/\\d+/", "to": "$&\n$&#mp4", "note": "imqswt\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/ngamafh\nOLD\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/nbmuk91\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=2753&limit=1&m=1#1\n\n!!!\n- данный фильтр работает в комментариях и в результатах поиска на ссылках с названиями тем с играми - он показывает все скриншоты игры в виде альбома;\n- фильтр также работает на ссылках \"View attachment\";\n- фильтр показывает желтый/красный спиннер (ошибку) на тех раздачах, которые оформлены нестандартно, а так же на тех где скриншоты/обложки отсутствуют.\n==\n- this sieve works in comments and search results on links with game topic names - it displays all game covers/screenshots in the form of an album;\n- the sieve also works on “View attachment” links;\n- the sieve displays a yellow/red spinner (error) for non-standard topics, as well as those where screenshots/covers are missing.\n\nEXAMPLES\nhttps://f95zone.to/sam/latest_alpha/\nhttps://f95zone.to/forums/animations-loops.94/\nhttps://f95zone.to/search/522348131/?q=NARUTO&c[title_only]=1&o=date\nhttps://f95zone.to/search/519742461/?q=DRAGON&o=relevance\nhttps://f95zone.to/threads/harem-list-and-deep-retardation.53066/post-6758764" }, "FACEBOOK-p": { "link": "^(?:(?:m(?:basic)?\\.)?facebook\\.com/(?:photo(?:/download/|\\.php|s/\\w+/|\\/)\\?(?:fb|photo_)id=|([^/]+/photos/)(?:[a-z]+\\.[^/]+/)?)|lookaside\\.fbsbx\\.com/lookaside/crawler/media/\\?media_id=)(\\d+)", "url": "data:,$&", "res": ":\nif(!((this.node.dataset || {}).ploi || (((this.node.parentNode || {}).dataset) || {}).ploi)){\n const x=new XMLHttpRequest()\n x.open('GET','https://www.facebook.com/' + ($[1] ? $[1] + $[2] : 'photo/?fbid=' + $[2]) + '#fb_header',false)\n x.setRequestHeader('Accept','text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8')\n x.send()\n $._=x.responseText\n}\nif($._===void 0)return this.node.dataset.ploi||this.node.parentNode.dataset.ploi\nvar u=$._.match(RegExp('='+($[2]||$[1])+'(?:[^\">]+\"\\\\s+)+?data-ploi=\"([^\"]+)')) || $._.match(RegExp(',\"image\":{\"uri\":\"(https:[^\"]+)')) || $._.match(/=\"og:image\" content=\"([^\"]+)/)\nreturn u && u[1].replace(/\\\\/g, '') || !1", "img": "^(?:fbcdn-s?photos[\\da-z-]+\\.akamaihd|s?(?:content|photos|origincache)[^/]+\\.fbcdn)\\.net/(?!h?vthumb-)[^_?]+/\\d+_(\\d+).*", "loop": 2, "to": ":\nif($[0].indexOf('.mp4?')>0)return''\nvar p=this.node\nif(window.location.hostname.slice(-13)=='.facebook.com' && (document.evaluate('./ancestor::div[contains(@class, \"stageWrapper\")]', p, null, 9, null).singleNodeValue || p.matches('.UFICommentContent>div[data-testid], a>abbr>span.timestampContent, #fbProfileCover>a:first-child')))return''\np=p.pathname||(p=p.parentNode)&&p.pathname||(p=p.parentNode)&&p.pathname||p.closest('a')?.href\np=p&&p.match(/^\\/([\\w.-]+)\\/?$/)||p\nreturn 'https://facebook.com/' + (p?.[1].length>1?p[1].replace(/^\\w+-(\\d{8,})$/, '$1')+'/photos/' : 'photo.php?fbid=') + p?.match(/\\/photo\\D+(\\d+)/)?.[1]||$[1]", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/1qtwswg/comment/o39a2p0\nOLD\nhttps://www.reddit.com/r/imagus/comments/1ck5n2t/comment/l2spz0c\n\n\n!!!\nДля тех, у кого перестали загружаться фото на ФБ: отключите в SMH (см.Чаво, п.12) правило FB_2.\n==\nFor those who have stopped uploading photos to FB: disable the FB_2 rule in SMH (see FAQ, p.12).\n\n\nEXAMPLES\nhttps://www.facebook.com/NASA/photos\nhttps://www.facebook.com/NASA/albums\nhttps://www.facebook.com/iskconvrindavann/photos_albums\nhttps://www.facebook.com/media/set/?set=a.10154800530551772&type=3" }, "FACEBOOK_fb-g_ddg-proxy-p": { "img": "^(?:(?:(?:fbexternal-[a-z]\\.akamaihd|(?:s-|fb)?external[^.]*(?:\\.[-\\da-z]+)+?\\.fbcdn|platform\\.ak\\.fbcdn)\\.net|(?:l\\.)?facebook\\.com)/(?:safe_image|www/app_full_proxy|(l))\\.php|images\\d-focus-opensocial\\.googleusercontent\\.com/gadgets/proxy|^(?:images|external-content|proxy)\\.duckduckgo\\.com/iu/)\\?(?:[^&]+&)*?(?:u(?:rl)?|src)=(http[^&]+).*", "to": ":\nvar u=decodeURIComponent($[2].replace(/\\+/g,' ')),n\nthis.node.IMGS_fallback_zoom=u\nn=this.find({href: u, IMGS_TRG: this.node})\nreturn n&&typeof n!='number'||n===null? (Array.isArray(n) ? n.join('\\n') : n) : ($[1]?'':u)", "note": "" }, "FACEBOOK_vid-p": { "link": "^(?:facebook\\.com/.*(?:/videos/|\\?v=|reel/|watch/live/\\?ref=|profile\\.php\\?id=(\\d+)&sk=reels_tab&).+|fb\\.watch/[\\w-]+)", "url": "data:,$&", "res": ":\nconst use_mp4_video = false // If set to true, the sieve uses lower quality MP4 video, false uses higher quality HLS video.\n\nif($[1]&&location.pathname==='/reel/'){\n$=JSON.parse(document.body.outerHTML.match(/\"(?:media|playback_video)\":({.+?\"browser_native_sd_url\".+?})(?:}\\]|,\"video_owner\")/)?.[1]||'{}')\nreturn $.browser_native_hd_url||$.browser_native_sd_url?[[[$.browser_native_hd_url?.replace(/.+/,'#$&'),$.browser_native_sd_url]]]:''\n}\nconst x=new XMLHttpRequest()\nx.open('Get',$[1]&&/\\/reel\\/\\d+/.test(location.pathname)?'https://www.facebook.com/reel/'+location.pathname.match(/\\/reel\\/(\\d+)/)[1]:$[0],false)\nx.setRequestHeader(\"Accept\",\"text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8\")\nx.send()\nconst t=x.responseText.match(/\"og:description\" content=\"([^\"]+)/)?.[1]||''\nif(!use_mp4_video&&!$[1]&&/\"dash_manifest_url\":\"/.test(x.responseText)){\nconsole.log('reel')\nconsole.log($._)\n$=x.responseText.match(/\"dash_manifest_url\":\"([^\"&]+)/)?.[1].replace(/\\\\/g,'')||''\nthis.TRG.IMGS_ext_data = ['//' + 'data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"640\" height=\"360\"></svg>',`<imagus-extension type=\"videojs\" url=\"${$}\"></imagus-extension>${t}`]\nreturn $?.length?{loop:'imagus://extension'}:''\n}else{\n$=JSON.parse(x.responseText.match(/\"(?:media|playback_video)\":({.+?\"browser_native_sd_url\".+?})(?:}\\]|,\"video_owner\")/)?.[1]||'{}')\nreturn $.browser_native_hd_url||$.browser_native_sd_url?[[[$.browser_native_hd_url?.replace(/.+/,'#$&'),$.browser_native_sd_url],t]]:''\n}", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/1ck5n2t/comment/l3f6o9j\nOLD\nhttps://www.reddit.com/r/imagus/comments/1cutolb/comment/l4pp538\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=400#10\n\n!!!\nКурсор следует наводить на название ролика. Для Reels курсор наводить на имя пользователя (сверху).\n==\nThe cursor should be placed over the name of video. For Reels, the cursor should be hover over the username at the top of the video.\n\nПРИМЕРЫ / EXAMPLES\nhttps://www.facebook.com/watch/\nhttps://www.reddit.com/domain/fb.watch/new\nhttps://www.facebook.com/reel/\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1360#11" }, "Fandom-p": { "link": "^fandom\\.com/video/\\w+/[\\w-]+", "res": ":\n$=JSON.parse($._.match(/\"__NEXT_DATA__\"\\s+type=\"application\\/json\">({.*?})<\\//)?.[1]||'{}').props?.pageProps.ssrCurrentVideo||null\nif(!$)return ''\nconst t=[$.title,$.description].filter(Boolean).join(\" | \")\n$=$.sources.filter(i=>i.type===\"video/mp4\"&&i.height).sort((a,b)=>a.height-b.height)\nreturn [[['#'+$.pop().file,$?.[Math.floor($.length/2)]?.file||''],t]]", "img": "^(static\\.wikia\\.nocookie\\.net/.+latest)(?:/scale-to-width-down/\\d{1,4})?(\\?cb=\\d{14})", "to": "$1$2", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/130svfu/comment/k2v12dv\nOLD\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1360#4\n\n\nПРИМЕРЫ / EXAMPLES\nhttps://www.fandom.com/video\nhttps://swtor.fandom.com/wiki/Smuggler\nhttps://fallout.fandom.com/ru/wiki/Убежище_118#Галерея" }, "FantLab.ru": { "img": "^(fantlab\\.ru\\/images\\/editions\\/)(?:\\w+)(\\/.*)", "to": "$1orig$2\n$1big$2", "note": "gpl2731\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1140#3\nOLD\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=1680#8\n\nПРИМЕРЫ\nhttps://fantlab.ru/work1274\nhttps://fantlab.ru/edition117699" }, "Fapello-x-p": { "useimg": 1, "link": "^fapello\\.(?:com|su)/[\\w-]+/\\d+", "res": "class=\"flex justify-between items-center\">[^\\\\]+?<(?:source[^>]+|img\\s+)src=\"([^\"]+)\n", "img": "^(fapello\\.(?:com|su)/content/.+)_\\d+px\\..+", "to": ":\nconst n=this.node\nreturn $[1]+'.'+(n.firstElementChild?.src||n.height<150?'#mp4 jpg#':'jpg')", "note": "imqswt\nhttps://www.reddit.com/r/imagus/comments/17jnh58/comment/k8rlphl\nOLD\nhttps://www.reddit.com/r/imagus/comments/17jnh58/comment/k72xm47\n\n\nПРИМЕРЫ / EXAMPLES\nhttps://fapello.com/taylor-swift/\nhttps://fapello.com/videos/\nhttps://fapello.com/popular_videos/twelve_hours/\nhttps://fapello.com/trending/" }, "FAPservice-x-p": { "link": "^(fapservice\\.com)/[\\w-]+/?$", "loop": 1, "url": ":(location.hostname.endsWith($[1])?'data:,':'')+$[0]", "res": ":\nif($.base[0]==='d'){ \nconst x=this._CF_ ? new content.XMLHttpRequest() : new XMLHttpRequest();\nx.open('GET',$[0],false);\nx.send();\nif(!this._CF_&&platform.firefox&&/window\\._cf_chl_opt/.test(x.responseText)){\nthis._CF_=true;\n}\n$._=x.responseText;\n}\nreturn $._.match(/<iframe src=\"([^\"]+)/)?.[1]||[...$._.matchAll(/<a href=\"([^\"]+)\"><img src=\"/g)].map(i=>[i[1]])", "note": "imqswt\nhttps://www.reddit.com/r/imagus/comments/1qpzmyu/comment/o3imgkz\nOLD\nhttps://www.reddit.com/r/imagus/comments/1qpzmyu/comment/o2kqjch\n\nEXAMPLES\nhttps://www.reddit.com/r/imagus/comments/1qpzmyu/comment/o2e7rbd" }, "Farpost.ru-s": { "link": "^farpost\\.ru/\\w+/\\w+/.+-\\d+\\.html", "res": ":\nlet i = $._.indexOf('<div class=\"image-gallery__big');\nif(i<0) { return null; }\nlet t = $._.indexOf('<div class=\"image-gallery__small', i);\nif(t<0) { return null; }\nlet res = [];\nlet re = /src=\"([^\"]+)_bulletin\"/gi\nlet data=$._.substring(i,t);\nlet a = re.exec(data);\nwhile(a) {\n res.push([a[1]+'_default']);\n a = re.exec(data);\n}\nreturn res;", "img": "^(static\\.baza\\.farpost\\.ru/v/\\d+)_(block|hugeBlock|bulletin|thumbnail\\d+)$", "to": "$1_default", "note": "destiny child\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1600#9\nOLD\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=160#17\n\n!!!\nКурсор наводить на название товара.\n\n\nПРИМЕРЫ\nhttps://www.farpost.ru/vladivostok/tech/appliances/washers/\nhttps://www.farpost.ru/vladivostok/tech/audio_video/tv/+/Philips/\nhttps://www.farpost.ru/vladivostok/realty/sell_business_realty" }, "fashionsnap": { "img": "(fashionsnap-assets\\.com/asset/format=auto),[^/]+(/article/images/[^.]+\\.jpg)", "to": "$1$2", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/12q0d7y/comment/jniv20a\n\nEXAMPLES\nhttps://www.fashionsnap.com/article/2023-04-17/gap-popup/" }, "Fastly": { "img": "^([^.]{2,20}\\.global\\.ssl\\.fastly\\.com|fastly\\.net/[^?]+\\.(jpe?g|gif|a?png))\\?.+", "to": "$1", "note": "!!!\nНевозможно проверить работу данного фильтра - нет примеров." }, "FASTPIC-h-p": { "link": "^fastpic\\.(ru|org)/(?:full)?view/(\\d+)/(\\d{4}/\\d+)(/.?[\\da-f]{30}([\\da-f]{2})[^?#]+).*", "url": "fastpic.$1/fullview/$2/$3$4", "res": "loading_img = '([^']+)'", "note": "Baton34V\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3280#15\n\nПРИМЕРЫ\nhttps://rutracker.org/forum/viewtopic.php?t=6087782\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1360#11" }, "FASTPIC_2-h-p": { "url": "fastpic.$2/fullview/$1/$3$4", "res": "loading_img = '([^']+)'", "img": "^i(\\d+)\\.fastpic\\.(ru|org)/(?:thumb|big)/(\\d{4}/\\d+)/[\\da-f]{2}(/.?[\\da-f]{30}([\\da-f]{2})[^?]+).*", "note": "Baton34V\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3280#15" }, "FASTPIC_fpic.in-h-p": { "link": "^fpic\\.in/\\w+", "res": "<img src=\"([^\"]+)\" class=\"image img-fluid\"", "note": "Baton34V\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3240#9\n\n\nПРИМЕРЫ\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3240#5\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1360#11" }, "FASTPIC_go.php2-h-p": { "link": "fastpic\\.(ru|org)%2F(?:full)?view%2F(\\d+)%2F(\\d{4}%2F\\d+)(%2F.?[\\da-f]{30}([\\da-f]{2})\\.\\w+\\.html)", "url": "fastpic.$1/fullview/$2/$3$4", "res": "loading_img = '([^']+)", "note": "Baton34V\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=260#13\nOLD\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3280#15\n\n\nПРИМЕРЫ\nhttps://rutracker.org/forum/viewtopic.php?t=6087782" }, "Favim-g": { "link": "^favim2?\\.com/image/\\d+/$", "res": "<link rel=\"preload\" href=\"([^\"]+)\"", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/130svfu/comment/jv5cpmr\nOLD\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3760#8\n\nПРИМЕРЫ\nhttps://favim.com/blanket/" }, "FC2-x": { "img": "^(blog)(?:thumbnail|-imgs-(\\d+))(\\.fc2\\.com/)(?:\\w+/(\\d+)/)?(\\w/\\w/\\w/\\w+/\\w{1,17})(?:s(?=\\.))?", "to": "$1-imgs-$2$4$3$5", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/1liwg63/comment/mzh5y71\n\nEXAMPLES\nhttp://metagraphy.blog.fc2.com/imgs/201803023nqAecbR?d=2021%2F7\nhttp://metagraphy.blog.fc2.com/blog-category-6.html\nhttp://metagraphy.blog.fc2.com/img/20180303FYTxwAMU" }, "Ferra.ru": { "img": "^(ferra\\.ru/)thumb/\\d+x\\d+/filters:quality\\(\\d+\\):[^/]+/(imgs/(?:\\d+/){5}[a-f0-9]+\\.[a-z]{3,4})", "to": "$1$2", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/l6ahcr8\n\nПРИМЕРЫ\nhttps://www.ferra.ru/news\nhttps://www.ferra.ru/review/tv" }, "FetLife-x-p": { "link": "^fetlife\\.com/[^/]+/pictures/\\d+", "res": ":\n$=JSON.parse($._.match(/\"story-data\" type=\"application\\/json\">({.+?})<\\//)[1]).attributes.pictures[0].attachments;\nreturn $.map(i=>[[i.src2x?.replace(/.+/,'#$&')||'',i.src1x]])", "note": "imqswt\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/n4vrc2z\nOLD\nhttps://www.reddit.com/r/imagus/comments/18sefly/comment/kfjrb8d\nhttps://www.reddit.com/r/imagus/comments/16kag6g/comment/k0yf12u\n\n\n!!!\nПлатное видео не поддерживается.\n==\nPaid video is not supported.\n\n\nEXAMPLES\nhttps://fetlife.com/search/pictures?page=3&q=BLOND\nhttps://fetlife.com/users/261021/pictures" }, "FilePicker-CDN": { "link": "^((?:cdn\\.|www\\.)?filepicker\\.io/api/file/[^/]+).*", "img": "^((?:cdn\\.|www\\.)?filepicker\\.io/api/file/[^/]+).*", "to": "$1", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/130svfu/comment/jn8v5j7\n\nEXAMPLES\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1360#11" }, "Files.fm-h": { "link": "^(?:[a-z]{2}\\.)?files\\.fm/([uf])/(\\w+)", "res": ":\nif($[1]==='u'){\nconst hosts=$._.match(/arrFileHost = \\[\"([^\\]]+)\"\\]/)?.[1].split('\",\"')\nreturn [...new DOMParser().parseFromString($._,\"text/html\").querySelectorAll('div[class^=\"item file video-item\"],div[class^=\"item file audio-item\"],div[class^=\"item file image-item\"]')].map(i=>{const id=i.attributes.file_hash.value;return ['//'+hosts[Math.floor(Math.random()*hosts.length)]+(i.classList[2]==='video-item'?'/thumb_video/'+id+'.mp4':i.classList[2]==='audio-item'?'/down.php?i='+id+'#mp3':'/thumb_show.php?i='+id)]})\n}\nconst host=$._.match(/arrFileHost = \\[\"([^\"]+)/)?.[1]||''\nconst type=$._.match(/arrFileTypes = \\[\"([^\"]+)/)?.[1]||''\nif(host){\nif(type==='video')return '//'+host+'/thumb_video/'+$[2]+'.mp4'\nif(type==='audio')return '//'+host+'/down.php?i='+$[2]+'#mp3'\nreturn $._.match(/\"og:image\" content=\"([^\"]+)/)?.[1]||''\n}\nreturn ''\n", "img": "^([^.]+\\.failiem\\.lv/thumb)(\\.php\\?i=)", "to": "$1_show$2", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/ktwgt80\nOLD\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1620#4\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=80#15\n\n\n!!!\nДля корректной работы внешних ссылок с видео необходимо правило для SMH. См. ЧаВо п.12.\n==\nFor external links to work correctly with videos, you need a rule for SMH. See FAQ, p.12.\n\n\nПРИМЕРЫ / EXAMPLES\nhttps://www.reddit.com/domain/files.fm/new/\nhttps://files.fm/u/p3xcxzvhj" }, "Filestack-CDN": { "link": "(cdn\\.filestackcontent\\.com/)(?:resize[^/]+/)?(.*)", "img": "(cdn\\.filestackcontent\\.com/)(?:resize[^/]+/)?(.*)", "to": "$1$2", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/130svfu/comment/jn8v5j7\n\nEXAMPLES\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1360#11" }, "Finn.no-s": { "link": "^(?:finn\\.no/(?:[^.]+(?:\\.html\\?finnkode=|/item/))?\\d+|(finn/album\\?gallery(.*))$)", "url": ": $[1]||/gallery/.test($[0])?'data:,'+Date.now():$[0]", "res": ":\nconst visible_gallery_image_first = true // <- Set to true for the visible image in the gallery to be the first image in the album, false to keep the first gallery image as the first album image.\n\nlet m, t, a = visible_gallery_image_first;\nif($[1]||/gallery/.test($[0]))$._=document.body.outerHTML;\nm=JSON.parse($._.match(/(?:__remixContext = |\"__NEXT_DATA__\"[^{]+?)({.+?});?</)?.[1]||'{}');\nm=(m.state?.loaderData?.root?.objectData||m.props?.pageProps?.swrFallback?.objectDataKey)?.images?.map(i=>[(i.uri||i.src).replace(/\\d{3,4}w|default/,'1600w'),i.description])||[...new Map([...$._.matchAll(/(?:background-image:url\\(|data-srcset=\")([^\\s\")]+)/g)].map(i=>[i[1].replace(/\\d{3,4}w|default/,'1600w')]))];\nt=this.node.currentSrc?.match(/[^/]+$/)||$[2];\nreturn a&&t?{\"\":m,idx:m.findIndex(i=>RegExp(`${t}`).test(i[0]))}:m;", "img": "^([^.]*images\\.finncdn\\.no/dynamic/)[^/]+(/.+)(?!#)", "loop": 2, "to": ":\nreturn /(?=.*object-contain)(?=.*object-center)/.test(this.node.getAttribute('class'))?'finn/album?gallery'+$[2]:$[1]+'1600w'+$[2]+'#'", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/15i989n/comment/mdhv66c\nOLD\nhttps://www.reddit.com/r/imagus/comments/15i989n/comment/m2qdb7h\nhttps://www.reddit.com/r/imagus/comments/e2i020/comment/lnj9xzb\n\n\nEXAMPLES\nhttps://www.finn.no/bap/forsale/search.html?product_category=2.93.3215.45&sort=RELEVANCE\nhttps://www.finn.no/realestate/businessplots/search.html?sort=PUBLISHED_DESC\nhttps://www.finn.no/reise/feriehus-hytteutleie/norge/hvaler/\nhttps://www.finn.no/bap/forsale/ad.html?finnkode=309541670" }, "FireFox_screenshot": { "link": "^screenshots\\.firefox\\.com/.+", "res": ":\n$=JSON.parse($._.match(/\">({\"[^\\n]+)</)[1])\nreturn [$.downloadUrl.replace(/\\?.*/, ''), [$.buildTime, $.title, $.urlIfDeleted].join(' | ')]", "note": "EXAMPLES\nhttps://addons.mozilla.org/ru/firefox/addon/darkreader\nhttps://addons.mozilla.org/ru/firefox/addon/enhancer-for-youtube" }, "FishingSib.ru": { "link": "(?:www\\.)?fishingsib\\.ru/forum/attachments/\\d+/", "note": "Baton34V\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=2160#17\n\nПРИМЕРЫ\nhttps://www.fishingsib.ru/tidings/view/148346/\nhttps://www.fishingsib.ru/forum/threads/40914/" }, "Fix-Price-s": { "link": "fix-price\\.com/catalog/[\\w-]+/[\\w-]+", "res": ":\nvar i = $._.indexOf('<div class=\"slider gallery\"');\nif(i<0) { return null; }\nvar t = $._.indexOf('<div itemscope=\"itemscope\"', i);\nif(t<0) { return null; }\nvar res = [];\nvar re = /<link href=\"([^\"]+)\"/gi\nvar data =$._.substring(i,t);\nvar a = re.exec(data);\nwhile(a) {\n res.push([a[1]]);\n a = re.exec(data);\n}\nreturn res;", "note": "Baton34V\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1800#7\nOLD\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3660#7\n\n\nПРИМЕРЫ\nhttps://fix-price.com/catalog/igrushki?sort=abc&page=2\nhttps://fix-price.com/catalog/produkty-i-napitki/konservatsiya-myasnaya\nhttps://fix-price.com/search?q=мыло&sort=sold&page=3" }, "FLICKR_albums-g": { "link": "^flickr\\.com/photos/(?:([^/]+/)(?:albums/|(\\d+)/in/album-)(\\d+)/?$|(\\d+)/([a-f0-9]+)/(\\d+)(?:/([\\w@]+)/([\\w:]+))?/$)", "url": ": $[4] ? 'https://api.flickr.com/services/rest?extras=url_h%2Curl_k%2Curl_o%2Curl_3k%2Curl_4k%2Curl_5k%2Curl_6k%2Cpage=0&photoset_id='+$[4]+'&format=json&method=flickr.photosets.getPhotos&api_key='+$[5]+'&per_page='+$[6]+($[7] ? '&viewerNSID='+$[7]+'&csrf='+$[8] : '')+'&nojsoncallback=1&'+this.flickr_album||'' : `https://www.flickr.com/photos/${$[1]}albums/${$[3]}/`", "res": ":\nif($[2]) this.flickr_album=$[2];\nif($[4]) {\n let res=[];\n let jsn=JSON.parse($._);\n for (img of jsn.photoset.photo) {\n res.push([img.url_6k || img.url_5k || img.url_4k || img.url_3k || img.url_o || img.url_k || img.url_h, img.title]);\n }\n let i = this.flickr_album;\n delete this.flickr_album;\n i = jsn.photoset.photo.findIndex(x=>x.id===i);\n return i ? {\"\":res,idx:i} : res;\n}\nlet api=$._.match(/root\\.YUI_config\\.flickr\\.api\\.site_key = \"([^\"]+)\";/)[1];\nlet length=$._.match(/<span class=\"stat photo-count\">\\n\\s+(\\d+) photo/s)[1];\nlet vnsid2=$._.match(/class=\"gn-title you\"\\s+href=\"\\/photos\\/([^\\/]+)\\/\"\\s/);\nlet vnsid=vnsid2 ? vnsid2[1] : null;\nlet csrf2=$._.match(/root.auth = {\"signedIn\":true,\"csrf\":\"([^\"]+)/);\nlet csrf=csrf2? csrf2[1] : null;\nreturn api&&{loop:'https://www.flickr.com/photos/' + $[3] + '/' + api + '/' + length +'/'+(csrf ? vnsid+'/'+csrf+'/' : \"\")};", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/m6ptfwh\nOLD\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=340#17\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=340#11\n\n\n!!!\nNB! Данный фильтр должен находиться ПЕРЕД фильтром FLICKR-g.\n==\nNB! This sieve must be placed BEFORE the FLICKR-g sieve.\n\n\nПРИМЕРЫ / EXAMPLES\nhttps://www.flickr.com/photos/carolsgardenofphotos/albums\nhttps://www.flickr.com/photos/donthomaso84/albums" }, "FLICKR-g": { "link": "^(?:secure\\.)?flickr\\.com/photos/[^/]+/(\\d+)/?(?:in/.+|lightbox/?|sizes.+|\\?.+|#/photos/.+)?$", "url": ": (()=>{const html=location.hostname.slice(-10)==='flickr.com'?document.body.outerHTML:'', key=this._flickr_key_||html?.match(/YUI_config\\.flickr\\.api\\.site_key\\s*=\\s*\"([^\"]+)/)?.[1], csrf=html?.match(/root\\.auth = {\"signedIn\":true,\"csrf\":\"([^\"]+)/)?.[1], vnsid=html?.match(/&uid=([A-Z0-9@]+)/)?.[1]||html?.match(/class=\"gn-title you\"\\s+href=\"\\/photos\\/([^\\/]+)\\/\"\\s/)?.[1]; return key ? `https://api.flickr.com/services/rest/?photo_id=${$[1]}&method=flickr.photos.getSizes&format=json${csrf?'&viewerNSID='+vnsid+'&csrf='+csrf:''}&nojsoncallback=1&api_key=${key}` : $[0]})()", "res": ":\nif($._[0]!=='{'&&!this._flickr_key_){\n this._flickr_key_ = $._.match(/YUI_config\\.flickr\\.api\\.site_key\\s*=\\s*\"([^\"]+)/)?.[1]||'9bb671af308f509d0c82146cbc936b3c';\n return {loop:$[0]};\n}\n let res = [];\n let sizeAr = JSON.parse($._).sizes.size;\n let last = sizeAr.pop();\n if (last.media == 'video') {\n let best_quality = 0;\n let best_videoUrl = '';\n do {\n if (parseInt(last.height) > best_quality) {\n best_quality = parseInt(last.height);\n best_videoUrl = last.source;\n }\n last = sizeAr.pop();\n } while (last.media == 'video');\n res.push([best_videoUrl + '#mp4']);\n } else {\n res.push([last.source]);\n }\n return res;", "img": "^(?:(?:farm|c)\\d+\\.|live\\.)?static\\.?flickr\\.com/(?:\\d+/){1,2}(\\d+)_[\\da-f]+(?:_[sqtmn])?\\.jpg$", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/1j89k2y/comment/mhiykht\nOLD\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/m6vvbbh\nhttps://www.reddit.com/r/imagus/comments/1enoaro/comment/lhfjyc7\n\n\n\n!!!\n- NB! Данный фильтр должен находиться ПОСЛЕ фильтра FLICKR_albums-g.\n- Внешние ссылки на NSFW-контент не работают, пока вы не вошли в аккаунт на самом сайте.\n==\n- NB! This sieve must be placed AFTER the FLICKR_albums-g sieve.\n- External links to NSFW content do not work unless you are logged into an account on the site itself.\n\n\nПРИМЕРЫ / EXAMPLES\nhttps://www.reddit.com/domain/flickr.com/new/\nhttps://www.flickr.com/photos/chris_rankin/\nhttps://www.flickr.com/search/?text=GREEN%20RIBBON\nhttps://www.flickr.com/photos/tags/sun\nhttps://www.flickr.com/photos/broadbottom/37828281391/in/dateposted/" }, "F-List": { "img": "^(static\\.f-list\\.net/images/char)thumb/", "to": "$1image/", "note": "!!!\nНужен аккаунт." }, "FlashTranny-x-p": { "link": "^flashtranny.com/(view|gallery)/(\\w|-)+", "res": "<source src=\"([^\"]+)", "note": "DracoSerge\nhttps://www.reddit.com/r/imagus/comments/150zrnk/nsfw_i_want_to_share_sieves_some_i_made_and_some/\n\nEXAMPLES\nhttps://www.flashtranny.com/search/isabella\nhttps://www.flashtranny.com/category/amateur\nhttps://www.flashtranny.com/pornstar/isabella-muniz" }, "FLIC.KR-g": { "link": "^flic\\.kr/p/\\w", "res": "(?:=\"og:image\" content|id=\"target\" src)=\"([^\"]+)\n<title>([^|]+)", "note": "EXAMPLES\nhttps://www.reddit.com/domain/flic.kr/new/" }, "Flipkart-s-p": { "link": "^flipkart\\.com/.+?pid.+", "res": ":\nconst img = (m,n) => 'https'+m.value.url?.match(/:[^?]+/)[0]?.replace('rukmini1','rukminim2').replace('{@width}/{@height}',`${n}/${n}`);\n$=JSON.parse($._.match(/window\\.__INITIAL_STATE__\\s*=\\s*({.+?});<\\//)[1]);\nthis.TRG.IMGS_ext_data=$.pageDataV4.page.data['10001'][0].widget.data.multimediaComponents.map(i=>i.value.contentType==='VIDEO' ? ['',`<imagus-extension type=\"iframe\" url=\"${i.value.url}\"></imagus-extension>`] : [['#'+img(i,2000),img(i,1024)]]);\nreturn {loop:'imagus://extension'}", "img": "^(rukminim\\d\\.flixcart\\.com/[^/]+/)\\d+/\\d+([^?]+).*", "to": "#$12000/2000$2\n$11024/1024$2", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/lnjfbin\nOLD\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1480#4\n\n!!!\nHover the cursor over the product name.\n\nEXAMPLES\nhttps://www.flipkart.com/search?q=mobiles&as=on&as-show=on" }, "FMkorea": { "link": "^fmkorea\\.com/(?:index.php\\?.+|(?:[^/]+/)?\\d+)", "res": ":\nreturn [...$._.matchAll(/<(?:source|img)[^>]+=\"([^\"]+fmkorea\\.com\\/(?:files\\/|getfile\\.php\\?code=)[^\"]+)/g)].map(i=>[i[1]])", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/15sx7lx/comment/jwp1lwo\n\nEXAMPLES\nhttps://www.fmkorea.com/starcraft\nhttps://www.fmkorea.com/index.php?mid=best&page=4\nhttps://www.fmkorea.com/index.php?mid=best&sort_index=pop&order_type=desc&document_srl=6081556548" }, "Foobar2000.ru": { "link": "^foobar2000\\.ru/forum/(?:download/)?file\\.php\\?id=\\d+&filename=[^?]+\\.(?:jpe?g|a?png|gif|svgz?|webp|w?bmp|ico|xbm|pict|j(?:if|fif?))&mode=view", "ci": 1, "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/lxwait4\nOLD\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=720#12\n\n\nПРИМЕРЫ\nhttps://foobar2000.ru/forum/viewtopic.php?t=5470&start=920\nhttps://foobar2000.ru/forum/viewtopic.php?t=5470&start=980" }, "Forest-Home.ru-s": { "link": "^forest-home\\.ru/product/[\\w-]+/", "res": ":\nvar i = $._.indexOf('<figure class=\"product');\nif(i<0) {return null; }\nvar t = $._.indexOf('</figure>', i);\nif(t<0) {return null; }\nvar res = [];\nvar re = /<a class=\"product-image-\\d+\" href=\"([^\"]+)\"/gi\nvar data=$._.substring(i,t);\nvar a = re.exec(data);\nwhile(a) {\n res.push([a[1]]);\n a = re.exec(data);\n}\ni = $._.indexOf('<ul class=\"comments-branch reviews-branch\">');\nif(i<0) {return res; }\nt = $._.indexOf('</ul>', i);\nif(t<0) {return res; }\ndata=$._.substring(i,t);\nre = /src=\"([^\"]+)\"/gi\na = re.exec(data);\nwhile(a) {\n res.push([a[1]]);\n a = re.exec(data);\n}\nreturn res;\n", "note": "Baton34V\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3660#18\n\nПРИМЕРЫ\nhttps://forest-home.ru/category/nozhi/\nhttps://forest-home.ru/category/monocylyari/" }, "FotoKto.ru-g": { "img": "^(s\\d+\\.fotokto\\.ru/(?:concurs/)?photo/)(?:large|preview)(/\\d+/\\d+\\.(?:jpe?g|png|gif))$", "to": "$1full$2", "note": "Rodny\n\nПРИМЕРЫ\nhttp://fotokto.ru/photo/new\nhttp://fotokto.ru/photo/concurs?id=107" }, "Fotosklad.ru-s": { "link": "^fotosklad\\.ru/catalog/[\\w-]+\\.html", "res": ":\nlet i = $._.indexOf('<ul class=\"product-card__big\">');\nif(i<0) {return null; }\nlet t = $._.indexOf('</ul>', i);\nif(t<0) {return null; }\nlet res = [];\nlet re = /data-src=\"([^\"]+)\"/gi\nlet data=$._.substring(i,t);\nlet a = re.exec(data);\nwhile(a) {\n res.push([a[1]]);\n a = re.exec(data);\n}\nreturn res;\n", "img": "^((?:cdn\\.)?fotosklad\\.ru\\/upload\\/iblock\\/\\w+\\/\\w+)_thumb_\\w+(\\.(?:jpe?g|png))$", "ci": 2, "to": "$1$2", "note": "Baton34V\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1460#17\nOLD\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=1680#8\n\n\nПРИМЕРЫ\nhttps://www.fotosklad.ru/catalog/noutbuki/\nhttps://www.fotosklad.ru/search/?q=фотоаппараты" }, "Fotozavr.ru-h": { "link": "fotozavr\\.ru/image/\\d+.html", "res": "<li class=\"zoom\"><a href=\"([^\"]+)", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/130svfu/comment/jnrcrmb\n\nПРИМЕРЫ\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1360#11" }, "forum.IXBT": { "link": "^(forum\\.ixbt\\.com/post\\.cgi\\?id=attach[0-9:]+\\.(?:jpe?g|gif|png))$", "note": "Rodny\n\nПРИМЕРЫ\nhttp://forum.ixbt.com/topic.cgi?id=47:11704:3819#3819" }, "forumimage.ru-h": { "link": "^(forumimage\\.ru/show/)\\d+$", "res": "<img src=\"(http://forumimage\\.ru/uploads/\\d+/\\d+.jpg)\"", "img": "^(forumimage\\.ru/)thumbs(/\\d+/\\d+\\.jpg)$", "to": "$1uploads$2", "note": "Rodny\n\nПРИМЕРЫ\nhttps://www.reddit.com/domain/forumimage.ru/" }, "Fotoload.ru-g": { "link": "^(fotoload.ru/foto(set)?/(\\d+)/)(\\?fotosets)?", "url": ": $[2]&&!$[4]?'https://fotoload.ru/?action=ajaxfunc&sa=get_fotoset_fotos&fotoset_id='+$[3]+'&offset=0&fid=0':$[1]", "res": ":\nif($[4])return [...$._.matchAll(/src=\"([^\"]+)\" class=\"img-responsive center-block\"/g)].map(i=>[['#'+i[1].replace(/\\d+x\\d+/,'1920x1080'),i[1].replace(/\\d+x\\d+/,'1024x768')],'Gallery Cover Image'])\nif($[2]){\nlet lo=$._.match(/\"bb_link_\\d+x\\d{3}\">[^<]+/)?.[0]||[]\nif(!lo.length)return {loop:'https://'+$[1]+'?fotosets'}\n$=$._.match(/bb_link_\">[^<]+/g)?.reverse()[0]||[]\n$=[...$.matchAll(/\\[img\\]([^\\[]+)/g)].reverse()\nlo=lo.length?[...lo.matchAll(/\\[img\\]([^\\[]+)/g)].reverse():[]\nreturn $.map((i,n)=>[['#'+i[1],lo[n]?.[1]||'']])\n}\n$=[...$._.matchAll(/<a\\s+download\\s+href=\"([^\"]+)\">\\d+x(\\d+)/g)]\nreturn [[['#'+$.pop()[1],$.filter(i=>i[2]<1080).reverse()[0]]]]", "img": "^(fs3\\.fotoload\\.ru/f/\\d+/\\d+/)\\d+x\\d+/(\\w+\\.jpg)", "to": "#$1# 1920x1080/#$2\n$11024x768/$2", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/18157fp/comment/kaaxr1y\nOLD\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=2460#4\n\nПРИМЕРЫ\nhttps://fotoload.ru/user/4566/\nhttps://fotoload.ru/tags/51994/\nhttps://fotoload.ru/allfotos/?offset=60\nhttps://fotoload.ru/fotosets/695/\nhttps://fotoload.ru/fotoset/66758/" }, "Foursquare": { "img": "^(i(?:gx|r?s\\d)\\.4sqi\\.net|playfoursquare\\.s3\\.amazonaws\\.com)(?:(/img/(?:general|user)/)(?!original/)[^/]+|(/userpix)_thumbs?/)", "to": ":\nreturn $[1] + ($[2] ? $[2] + 'original' : $[3] + '/');" }, "frgimages-CDN": { "link": "((?=.*\\.jpg)frgimages\\.com/.*)", "img": "((?=.*\\.jpg)frgimages\\.com/.*)", "to": "$1", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/130svfu/comment/jn8v5j7\n\nEXAMPLES\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1360#11" }, "fs|brb|cxz": { "img": "^((?:s\\d+|img)\\.dotua\\.org/fsua_items/[^/]+/(?:\\d\\d/){3})(?!1/)\\d(/\\d+)", "to": "$11$2" }, "FunnyJunk-g-p": { "link": "^funnyjunk\\.com/(?:(?:channel/[^/]+/)?[A-za-z0-9+]+/[A-Za-z-]+/(?:\\d+/?)?|\\w+/\\d+/[\\w+]+)", "res": ":\nconst t=$._.match(/\"description\" content=\"([^\"]+)/)?.[1].replace(/&#(\\d+);/g,(a,b)=>String.fromCharCode(b))||'';\nreturn [...$._.matchAll(/href=\"([^\"]+)\"[\\n\\s]*rel=\"lightbox\"|data-(?:original|cachedvideosrc)=\"([^\"]+\\.(?:mp4|webm)[^\"]*)/gs)].map((i,n)=>[i[1]||i[2],!n?t:''])\n", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/lmkqkl2\nOLD\nhttps://www.reddit.com/r/imagus/comments/130svfu/comment/jv5cpmr\n\nEXAMPLES\nhttps://funnyjunk.com/channel/wholesome\nhttps://funnyjunk.com/funny_gifs/\nhttps://funnyjunk.com/Aight+you+aint+so+bad/fvnbRsi/\nhttps://www.reddit.com/domain/funnyjunk.com/new" }, "Furaffinity-g-p": { "link": "^furaffinity\\.net/view/(\\d+)/$", "url": "//www.furaffinity.net/full/$1/", "res": "data-fullview-src=\"([^\"]+)\n<title>([^<]+?) --", "img": "^t\\.facdn\\.net/(\\d+)@.+", "note": "!!!\nYou must be logged into your account for the sieve to work on all thumbnails.\n\n\nEXAMPLES\nhttps://www.furaffinity.net/search/?q=green\nhttps://www.furaffinity.net/search/?q=NIN\nhttps://www.furaffinity.net/favorites/wittnv/" }, "Furry34-x": { "img": "^(furry34(?:\\.com|com\\.b-cdn\\.net)/posts(?:/\\d+){3}\\.(pic|mov)).*", "to": ":\nreturn $[2]==='pic' ? $[1]+'.jpg' : '#'+$[1]+'720.mp4\\n'+$[1]+'#48 36#0.mp4'", "note": "imqswt\nhttps://www.reddit.com/r/imagus/comments/1o8g068/comment/njxqva8/\n\nEXAMPLES\nhttps://furry34.com/highest\nhttps://furry34.com/animated" }, "FurryNetwork-g": { "link": "^((?:beta\\.)?furrynetwork\\.com/)((?:artwork|photo|multimedia)/\\d+).*", "url": "$1api/$2", "res": ":\n$._=JSON.parse($._)\nreturn [[$._.record_type[0]=='m' ? $._.url : ['#'+$._.images.original, $._.images.large], $._.title + ' by ' + $._.character.display_name]]", "img": "^((?:d3gz42uwgl1r1y\\.cloudfront\\.net|furrynetwork(?:-beta)?\\.s3\\.amazonaws\\.com)/(\\w\\w)/\\2\\w+/submission/20\\d\\d/[01]\\d/[\\da-f]{32})/\\d+x\\d+.*", "to": "$1#/2500x1500.jpg .gif .webm .mp4 .mp3#", "note": "EXAMPLES\nhttps://furrynetwork.com/artwork/popular/?time=lastWeek\nhttps://furrynetwork.com/photos/popular/?time=lastWeek\nhttps://furrynetwork.com/multimedia/popular/?time=lastWeek" }, "Gab-p": { "img": "^(ipr\\.gab.ai/[\\da-f]{40}/[\\da-f]+|gab\\.com/media/image/bz-[\\da-f]{13})", "to": "$&", "note": "https://www.reddit.com/r/imagus/comments/byakji/comment/ers4f6f\n\n!!!\nВидео пока не поддерживается\n==\nVideo currently is not supported\n\n\nПРИМЕРЫ / EXAMPLES\nhttps://gab.com/news\nhttps://gab.com/groups/65229\nhttps://gab.com/TomJefferson1976/posts/112402230424959344\nvideo\nhttps://gab.com/timeline/clips" }, "GameSpot_GameFAQs": { "img": "^gamefaqs\\.gamespot\\.com/a/(?:screen/thumb/\\d/\\d/\\d/\\d+|box/\\d/\\d/\\d/\\d+_thumb)", "to": ":\nif ($[0].match(/\\/box\\//))\n return $[0].replace(\"thumb\", \"front\");\nelse if ($[0].match(/\\/screen\\/thumb\\//))\n return $[0].replace(\"thumb\", \"full\");", "note": "borderpeeved\nhttps://www.reddit.com/r/imagus/comments/xdzxo9/comment/ioko84w\n\n\nEXAMPLES\nhttps://gamefaqs.gamespot.com/ps4/366186-mothmen-1966/images\nhttps://gamefaqs.gamespot.com/ps5/292803-stray/images\nvideo\nhttps://gamefaqs.gamespot.com/ps5/292803-stray/videos" }, "GameSpot_video": { "link": "^(?:(?:gamefaqs\\.)?gamespot\\.com/(?:[^/]+/)*videos/.+|cdn\\.jwplayer\\.com/v2/media/\\w+\\?gamespot)", "res": ":\nlet m;\nif(m=$._.match(/\"contentUrl\":\\s*\"([^\"]+)/)?.[1])return m;\nif(m=$._.match(/<iframe class=\"vid\"[^>]+src=\"([^\"]+)/)?.[1])return {loop:m};\nif(m=$._.match(/mediaId:\\s*'([^']+)/)?.[1])return {loop:'//cdn.jwplayer.com/v2/media/'+m+'?gamespot'};\nm=JSON.parse($._).playlist[0];\nthis.TRG.IMGS_ext_data = ['//' + 'data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"640\" height=\"360\"></svg>', `<imagus-extension type=\"videojs\" url=\"${m.mrss_video_url}\"></imagus-extension>${m.description}`];\nreturn {loop:'imagus://extension'}", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/lkmy7ux\nOLD\nhttps://www.reddit.com/r/imagus/comments/xdzxo9/comment/ioko84w\n\nEXAMPLES\nhttps://www.gamespot.com/videos/" }, "Gamma_Entertainment-x-q-p": { "link": "^([^/]+)/en/video/[^/]+/(?:[^/]+/)?(\\d+)", "res": ":\nconst max_resolution = 2160;\n\nconst m = /applicationID\":\"([^\"]+)\",\"apiKey\":\"([^\"]+)/g.exec($._);\nif (!m) return;\nconst [appId, apiKey] = [m[1], m[2]];\nconst sceneId = $[2];\n\nconst xml = new XMLHttpRequest();\nconst url = `https://tsmkfa364q-dsn.algolia.net/1/indexes/*/queries?x-algolia-agent=Algolia%20for%20vanilla%20JavaScript%203.27.1%3BJS%20Helper%202.26.0&x-algolia-application-id=${appId}&x-algolia-api-key=${apiKey}`\nxml.open('POST', url, false);\nxml.send(\n `{\"requests\": [{\"indexName\": \"all_scenes\", \"params\": \"facetFilters=[[\\\\\"clip_id:${sceneId}\\\\\"]]\"}]}`\n);\nif (xml.status !== 200) return;\n\nlet streams = {};\ntry { streams = JSON.parse(xml.responseText)?.results?.[0]?.hits?.[0]?.trailers;} catch (e) { return; }\n\nconst trailers = Object.keys(streams)\n .map(s => ({ res: parseInt(s.replace(\"4k\", '2160'), 10), url: streams[s] }))\n .filter(a => a.res <= max_resolution)\n .sort((a, b) => a.res - b.res);\n\nif (!trailers.length) return;\nreturn trailers[trailers.length-1].url;", "img": ".*gammacdn\\.com.+", "note": "gpl2731\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1120#19\nOLD\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3620#12\n\n!!!\n- Для работы фильтра требуется правило для SMH (см.ЧаВО, п.12).\n- Переключение качества видео (480/720/1080/2160): const max_resolution = 2160;\n==\n- For the sieve to work, a rule for SMH is required (see FAQ, p.12).\n- Switching video quality (480/720/1080/2160): const max_resolution = 2160;\n\nПРИМЕРЫ / EXAMPLES\nhttps://www.darkx.com/en/videos\nhttps://www.evilangel.com/en/videos\nhttps://www.girlsway.com/en/videos\nhttps://www.hardx.com/en/videos\nhttps://www.puretaboo.com/en/videos\nhttps://www.roccosiffredi.com/en/videos" }, "Gamekult": { "img": "^(cdn\\.gamekult\\.com/optim/images/.+?)__[^.]+", "to": "$1", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/130svfu/comment/jtd4cv9\nOLD\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3720#11\n\nEXAMPLES\nhttps://www.gamekult.com/actu/zoom-portal-2-A0000089965.html\nhttps://www.gamekult.com/actu/neverdead-en-douze-images-A0000098884.html" }, "Gazeta.pl-m": { "img": "^(bis?\\.(?:gazeta|im-g)\\.pl/im/(\\w{1,5}/){2,}?z\\d{4,})[^.]*(?=\\.)", "to": "#$1O\n$1IH", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/130svfu/comment/jr9iz3u\n\nEXAMPLES\nhttps://wiadomosci.gazeta.pl/wiadomosci/0,168571.html\nhttps://wiadomosci.gazeta.pl/prawo-i-sprawiedliwosc\nhttps://next.gazeta.pl/next/0,0.html" }, "Gazeta.ru-m": { "link": "^(?:gazeta\\.ru/(?:(?:[^/]+/){2}\\d{4}/\\d{2}/\\d{2}/\\d+\\.shtml|(photo/\\d+/.+))|gazeta-ru-video/(.+))", "url": ": $[2]?`//api.vp.rambler.ru/api/v3/records/getPlayerData?params=%7B%22uuid%22%3A%22${$[2]}%22%7D`:$[0]", "res": ":\nif($[1])return [...$._.matchAll(/data-hq=\"([^\"]+)/g)].map(i=>[i[1]]);\nif(!$[2]){\nconst m=$._.match(/<img src=\"([^\"]+)\"\\nclass=\"hd\"/);\nif(m)return m[1];\nconst id=$._.match(/data-id='([^']+)/);\nreturn id?{loop:'//gazeta-ru-video/'+encodeURIComponent(id[1])}:''; \n}\n$=JSON.parse($._).result?.playList?.source;\nreturn $?{loop:$}:''", "img": "^(img\\.gazeta\\.ru/files\\d+/\\d+/\\d+/).+", "to": ":\nreturn document.querySelector(`img[data-hq^=\"https://${$[1]}\"]`)?.getAttribute('data-hq')||$[0]", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/nxyp8es\nOLD\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/my7w9qe/\nhttps://www.reddit.com/r/imagus/comments/1iklqrk/comment/mbzqaxv\n\n!!!\nДля увеличения фото (нижний ряд) в галереях необходимо добавить фильтр в uBO (подробнее см. п.13 ЧаВо):\ngazeta.ru##.zoombtn\n\n\nПРИМЕРЫ\nhttps://www.gazeta.ru/news/\nhttps://www.gazeta.ru/photo/20282924/natalya-fateeva-bday-90.shtml" }, "Geekpic|Pic4Net-h": { "link": "pic4net\\.com|geekpic\\.net/pm-\\w+\\.html", "res": "<a href=\"([^\"]+)\" class=\"download-img\"", "note": "Baton34V\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=660#10\n\nПРИМЕРЫ\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=40#15\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=11411&start=1480#3" }, "Gelbooru|Hypnohub-x-p": { "link": "^(?:gelbooru\\.com|hypnohub\\.net)/index\\.php\\?page=post&s=view&id=\\d+", "res": "(?:=\"og:|itemprop=\")image\" content=\"([^\"]+)\n=\"keywords\" content=\"([^\"]+)", "img": "^(?:s?(?:img|thumb)\\d?\\.|assets\\.)?(gelbooru\\.com/+)(?:sample|thumb(?:nail)?)s/(\\w\\w/\\w\\w)/(?:thumbnail|sample)_([\\da-f]+).*", "to": "#img2.$1/images/$2/$3.#webm jpg png gif jpeg#\nimg2.$1/samples/$2/sample_$3.#jpg png gif jpeg#", "note": "imqswt\nhttps://www.reddit.com/r/imagus/comments/18d5xog/comment/kchcmvi\n\nПРИМЕРЫ / EXAMPLES\nhttps://hypnohub.net/index.php?page=post&s=list&tags=all\nhttps://hypnohub.net/index.php?page=post&s=list&tags=video+&pid=210\nhttps://gelbooru.com/index.php?page=post&s=list&tags=sky+\nhttps://gelbooru.com/index.php?page=post&s=list&tags=fruit" }, "Geograph.org.uk": { "img": "^(?:(s\\d\\.geograph\\.org\\.uk/[/\\w]+)_\\d{2,4}x\\d{2,4}|s\\d\\.geograph\\.org\\.uk/.+)", "to": ":\nreturn $[1]?$[1]+'#_original #':$[0].replace(/(\\.[a-z]+)$/,'#_original #$1')", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/130svfu/comment/k23sosn\nOLD\nhttps://www.reddit.com/r/imagus/comments/2xcrlg/sieve_for_geographorguk\n\nEXAMPLES\nhttps://www.geograph.org.uk/finder/recent.php\nhttps://www.geograph.org.uk/browser/#!/taken=,1999-12-31/decade+%22190tt%22/sort=submitted_down" }, "GetaPic-h": { "link": "getapic\\.me/\\w+/\\w+", "res": "<li><span>Ссылка на картику:</span><br>\\s+<input onclick=\"select_field\\(this\\);\" value=\"([^\"]+)\"", "note": "Baton34V\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=2980#21\n\nПРИМЕРЫ / EXAMPLES\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=40#15\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3100#9" }, "GetCloudApp|cl.ly-h": { "link": "^(?:cl\\.ly/image/[^/]+.*|share\\.getcloudapp\\.com/\\w+$)", "res": ":\n$=JSON.parse($._.match(/Copernicus\\(({.+?})\\)/s)?.[1].replace(/\\n\\s+/g,'').replace(/([{,])(\\w+):\\s+/g,'$1\"$2\":')||'{}')?.store?.viewer?.item?.links?.content_url||'';\nreturn $+(/\\.m[o4]v/.test($)?'#mp4':'')", "img": "^thumbs\\.(?:cl\\.ly|getcloudapp\\.com)/(?:image/)?(\\w+)", "to": "http://cl.ly/image/$1/$1.jpg", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/lf0wn7y\n\n!!!\nThe sieve shows a red or yellow spinner in case the source is non-media or missing.\n\nEXAMPLES\nhttps://www.reddit.com/domain/cl.ly/new/\nhttps://www.reddit.com/domain/getcloudapp.com/new/" }, "GettyImages-g": { "link": "^gettyimages\\.[a-z.]{2,6}/detail/(?:[^/]+/[^/]+/)?\\d+.*", "res": ":\n$=JSON.parse($._.match(/data-component='AssetDetail'>[^{]+([^\\n]+)/)[1]).asset;\nreturn $.filmCompUrl||[[['#'+$.highResCompUrl,$.defaultMainImageURL]]]", "img": "^(media\\.gettyimages\\.com/id(/\\d+)/photo/[^.]+\\.)\\w+(.*)", "loop": 2, "to": ":\nreturn RegExp($[2]).test(location.pathname)&&/=[234]\\d{3}x/.test($[3]) ? $[1]+'jpg'+($[3]||'') : 'https://www.gettyimages.com/detail'+$[2]", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/1emso0o/comment/lh35169\nOLD\nhttps://www.reddit.com/r/imagus/comments/196ypny/comment/khyg817\nhttps://www.reddit.com/r/imagus/comments/12ghqmg/to_whoever_updates_the_sieves_please_add_this_to/\n\n\nПРИМЕРЫ / EXAMPLES\nhttps://www.gettyimages.com/search/2/image?family=creative&phrase=ORANGE\nhttps://www.gettyimages.com/videos/adventure?assettype=film&family=creative&phrase=adventure&sort=best&license=rf,rr\nhttps://www.gettyimages.in/sets/BsrYlsNvWkydP-HSSCmdDA/Workplace+wellness+video#license" }, "Gifbin-g-p": { "link": "^(gifbin\\.com/)(?:[ft]/|(reverse/))?(\\d+)$", "url": "$1$2$3", "res": ":\nvar t,u=$._.match(/src=\"https?:\\/\\/(www\\.)?gifbin\\.com\\/bin\\/[^\"]+/g)\nif(!u)return 0\nt=$._.match(/=\"og:title\"\\s+content=\"([^\"]+)/);\nreturn [[u.slice(0,3).map(function(u){ return u.slice(5) }), t&&t[1]]]", "img": "^(gifbin\\.com/bin/(?:\\d+/)?)tn_([^?]+\\.).*", "to": "http://www.$1$2#webm mp4 gif#", "note": "Randlai\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1433#1\n\nEXAMPLES\nhttps://gifbin.com/tag/cartoons/\nhttps://www.reddit.com/domain/gifbin.com/new/" }, "Gifer-g-p": { "img": "(im-\\d\\d\\.forfun\\.com/|i\\.gifer\\.com/)(?:fetch/w\\d+-ch\\d+-preview|origin)(/\\w+/[^_]+?)(_w\\d+)?(\\.\\w+)", "to": "$1origin$2$4", "note": "Baton34V\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=680#10\n\nEXAMPLES\nhttps://www.reddit.com/domain/gifer.com\nhttps://gifer.com/en/gifs/forest" }, "Gifs-g-p": { "link": "^(gif(?:s|y(?:t|outube))\\.com/)(?:gif|embed|player)/(?:[^-]*-)*(\\w+)", "img": "^(?:share|j)\\.(gif(?:s|y(?:t|outube))\\.com/)(\\w+).*", "to": "//j.gifs.com/$2.#webm mp4 gif#", "note": "EXAMPLES\nhttps://www.reddit.com/domain/gifs.com/new" }, "Gifyu-g-p": { "link": "gifyu\\.com/image/\\w{4}", "res": "<meta property=\"og:image\" content=\"([^\"]+)\"", "note": "Baton34V\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=2600#6\n\nEXAMPLES\nhttps://www.reddit.com/domain/gifyu.com/new/\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50519&start=900#21" }, "Giphy-g": { "useimg": 1, "link": "^(g(?:iphy\\.com/(?:gifs|embed)|ph\\.is(?:/g)?)/)([\\w-]+).*", "url": "$1$2", "res": "property=\"og:video:secure_url\" content=\"([^\"]+)", "img": "^media\\d?\\.((giphy)\\.com/)media/(\\w+)/.*", "to": "media.$1media/$3/$2.#mp4 gif#", "note": "numso531\nhttps://new.reddit.com/r/imagus/comments/1f7zcds/updated_giphy/\n\nEXAMPLES\nhttps://giphy.com/search/red\nhttps://www.reddit.com/domain/giphy.com/new/\nhttps://www.instagram.com/p/C-0UMYMuzs5/?img_index=1\nhttps://new.reddit.com/r/imagus/comments/1f7zcds/updated_giphy/" }, "GITHUB": { "link": "^(git(?:hu|la)b\\.com/[^/]+/[^/]+/)blob(/.+\\.(?:jpe?g|a?png|gif|svgz?|web[pm]|bmp|og[gv]))$", "ci": 1, "img": "^(?:(avatars\\d?\\.githubusercontent\\.com/u/\\d+).*|camo\\.githubusercontent\\.com/[a-f0-9]{64}/[a-f0-9]+)", "to": ":\nif($[0][0]==='c')return $[0]\nvar v=$[2]?'':$[0].slice($[1].length); v=v&&v.match(/[?&](v=\\d+)/)||'';\nreturn $[1] + ($[2]?'raw'+$[2]:v&&('?'+v[1]))", "note": "Imagus_fan (edit)\nhttps://www.reddit.com/r/imagus/comments/4xim6u/comment/kv8tjc7\n\n!!!\nНа GIF курсор следует наводить на самую нижнюю кромку изображения / The cursor on the GIF should be placed on the very bottom edge of the image:\nhttps://github.com/Neet-Nestor/Telegram-Media-Downloader?tab=readme-ov-file#how-to-use" }, "GloryholeSwallow-x": { "link": "gloryholeswallow\\.com/tour/trailers/.*", "res": ":\nconst m = /video playsinline src=\"([^\"]+)/.exec($._)\nif (m) return m[1];\nreturn \"//i.imgur.com/ejZcAGv.png\";", "note": "gpl2731\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1163&limit=1&m=1#1\nOLD\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3616#1\n\nEXAMPLES\nhttps://gloryholeswallow.com/tour/updates/page_4.html" }, "Gmail": { "link": "^(mail\\.google\\.com/.*\\?)ui=2&ik=(.*)&view=att&th=(.*)&attid=0\\.1&disp=inline&zw", "to": "$1attid=0.1&disp=emb&view=att&th=$3", "note": "Rodny\n\n!!!\nGmail attached images. Different mail servers on Google Apps platform are also supported." }, "Gofile.io-h-p": { "img": "^javascript:void\\(0\\);?$", "loop": 2, "to": ":\nconst n = this.node;\n\nif(!/^(?:gofile\\.io|(?:[a-z]{2}\\.)?files\\.fm)$/.test(location.hostname))return '';\n\n// Files.fm also uses this URL.\nif(/^(?:[a-z]{2}\\.)?files\\.fm$/.test(location.hostname)){\nreturn this.node.parentNode.parentNode.querySelector('div[data-clipboard-text]')?.dataset?.clipboardText||'';\n}\n\nlet id=n.closest('[data-item-id]'), file=id.querySelector('a[href]').textContent\nid=id.getAttribute('data-item-id');\nreturn id&&file&&n.className?.startsWith('item_open') ? `https://store${Math.ceil(Math.random()*10)}.gofile.io/download/web/${id}/${file}${/\\.m[ok]v$/.test(file)?'#mp4':''}` : '';\n\n\n// Old code. May be useful if site changes back\n\n/* const elem = document.createElement('script')\nelem.textContent = 'sessionStorage.setItem(\"gofile__data\", JSON.stringify(Object.values(mainFolderObject.children))); document.currentScript.remove();'\ndocument.head.appendChild(elem)\nconst gofileData = JSON.parse(sessionStorage.getItem('gofile__data'))\nsessionStorage.removeItem('gofile__data')\n$ = gofileData.find(i=>i.name===n.textContent)?.link||''\nreturn $+(/\\.m[ok]v$/.test($)?'#mp4':'') */", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/nskd6s5\nOLD\nhttps://www.reddit.com/r/imagus/comments/19ahx46/comment/li5olcw\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/ktwgt80\n\n\n!!!\n- The cursor should be placed on the name of the file in the folder;\n- This sieve doesn't work with on external links:\nhttps://www.reddit.com/r/imagus/comments/19ahx46/comment/li5olcw/\n\n\nEXAMPLES\nhttps://gofile.io/d/OIHK5s\nhttps://gofile.io/d/PtjdDe\nhttps://gofile.io/d/WAiBTU\nhttps://www.reddit.com/domain/gofile.io/new/" }, "GOG-s": { "link": "^gog\\.com/\\w\\w/game/\\w+$", "res": ":\nlet i = $._.indexOf('<div class=\"js-items-wrapper mobile-slider__items-wrapper\">');\nif(i<0) { return null; }\nlet t = $._.indexOf('</picture></div></div></div>', i);\nif(t<0) { return null; }\nlet res = [];\nlet re = /src=\"([^_]+)_[^.]+(\\.\\w+)\"/gi\nlet data=$._.substring(i,t);\nlet a = re.exec(data);\nwhile(a) {\n res.push([a[1]+a[2]]);\n a = re.exec(data);\n}\nreturn res;", "img": "(images\\.gog-statics\\.com\\/\\w+)_product_card_v\\d_thumbnail_\\d+(\\.jpg)", "to": "$1$2", "note": "Baton34V\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=580#21\nOLD\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=2040#5\n\n!!!\nКурсор наводить на белое поле ниже названия игры. Иногда требуется повторное наведение курсора.\n\nПРИМЕРЫ\nhttps://www.gog.com/games?page=1&sort=popularity&category=action\nhttps://www.gog.com/ru/games/strategy" }, "Goodfon.ru-g": { "link": "^(?:avto\\.)?(?:bad|good)fon\\.ru/(?:[^/]+/)?(?:wallpaper/?.+\\.html|download\\.php\\?id=\\d+&rash=\\d+x\\d+|download/[^/]+/\\d+x\\d+/?)$", "res": "(//img\\.goodfon\\.ru/original/[\\w./?&-]+)", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/lt55y97\nOLD\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=580#13\n\nПРИМЕРЫ\nhttps://www.goodfon.ru/catalog/landscapes/" }, "Goodreads-p": { "img": "^(i(?:mages)?\\.gr-assets\\.com/(?:images/(?:[^/]+/){1,3})?(?:author|book|user)s/\\d+)[^/]+(/\\d+)[^?]*\\.", "to": "$1i$2.", "note": "EXAMPLES\nhttps://www.goodreads.com/genres/thriller\nhttps://www.goodreads.com/genres/history" }, "GOOGLE_Drive-h": { "link": "^(?:docs|drive)\\.google\\.com/(?:(?:file|presentation|document|spreadsheets|drawings)/(?:u/\\d/)?d/|uc\\?.*id=)([\\w-]{33}|[\\w-]{44})(/|&|$).*", "ci": 1, "url": "https://drive.google.com/file/d/$1/view", "res": ":\nlet [type, ext] = JSON.parse($._.match(/_docs_flag_initialData=({.+?});/)[1])['docs-dm'].split('/');\n\nif (type === 'video') {\n return { loop: `https://drive.google.com/get_video_info?docid=${$[1]}` };\n}\n\nif (type === 'image' || type === 'audio') {\n return `https://drive.google.com/uc?id=${$[1]}&export=download#` + (type == 'audio' ? 'mp3' : ext);\n} else {\n const title = $._.match(/<title>(.+)<\\/title>/)?.[1] || '';\n let eUrl = $._.match(/<meta itemprop=\"embedURL\" content=\"(.+?)\"/)?.[1];\n if (!eUrl) {\n if (ext == 'x-zip-compressed' || ext == 'octet-stream' || ext?.startsWith('vnd.google-apps.')) {\n eUrl = `https://drive.google.com/file/d/${$[1]}/preview`;\n } else {\n eUrl = `https://drive.google.com/uc?id=${$[1]}`;\n }\n }\n\n this.TRG.IMGS_ext_data = [['', `<imagus-extension type=\"iframe\" url=\"${eUrl}\"></imagus-extension>${title}`]];\n return { loop: 'imagus://extension' };\n}", "note": "hababr\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=2421&limit=1&m=1#1\nOLD\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3240#14\n\n\n!!!\nДанный фильтр способен отображать все медиаформаты (изображения, видео, аудио) + ZIP, DOCX, PDF.\n==\nThis sieve is capable of displaying all media formats (images, video, audio) + ZIP, DOCX, PDF.\n\n\nПРИМЕРЫ / EXAMPLES\nhttps://www.reddit.com/domain/drive.google.com/new/\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1360#10\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=2400#21" }, "GOOGLE_Drive_video-h": { "link": "^drive\\.google\\.com/get_video_info\\?docid=[\\w-]+", "res": ":\nconst data = $._.split('&').map(p => p.split('='));\nlet title = decodeURIComponent(data.find(p => p[0] === 'title')[1]);\nlet url = decodeURIComponent(data.find(p => p[0] === 'fmt_stream_map')[1]);\nurl = url.split(',').pop().split('|')[1];\n\nreturn url + '#mp4';\n\nthis.TRG.IMGS_ext_data = [['', `<imagus-extension type=\"videojs\" url=\"${url}\"></imagus-extension>${title}`]];\nreturn { loop: 'imagus://extension' };\n", "note": "hababr\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=2400#21\nOLD\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3240#14\n\nПРИМЕРЫ / EXAMPLES\nhttps://www.reddit.com/domain/drive.google.com/new/\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=2400#21" }, "GOOGLE_goo.gl": { "link": "^(image|photo)s\\.app\\.goo\\.gl/\\w+", "res": ":\nconst caption = $._.match(/<img.+?alt=\"(.*?)\"/)?.[1] || $._.match(/<title>(.+?)<\\/title>/)?.[1] || '';\n\nif(/\"og:video\" content=\"[^\"]/.test($._))return $._.match(/https:\\/\\/video-downloads\\.googleusercontent\\.com\\/[^\"]+/)[0]+'#mp4'\n\nconst urls = [...$._.matchAll(/<img class=.+?(http?[^=]+)[^<]+?<div/g)];\n\nif (urls.length > 0) return urls.map(x => [x[1] + '=s0', caption]);\n\nreturn [$._.match(/AF_dataServiceRequests.=.+?http.+?,\"(http.+?)\"/)[1], caption];", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/l6h0ibe\nOLD\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1040#14\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3900#10\n\n\n!!!\nФильтр не поддерживает видео на сайте Google Photo, только одиночные видео по внешним ссылкам.\n==\nThe sieve does not support videos on the Google Photo site, only single videos from external links.\n\n\nПРИМЕРЫ / EXAMPLES\nhttps://www.reddit.com/domain/goo.gl/new/\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3900#7\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1000#21" }, "GOOGLE_Images_legacy": { "img": "^images-partners-tbn\\.google\\.com/images\\?q=tbn:[^:]+:+(.+)", "dc": 2, "to": "$1", "note": "64h\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1020#2\n\nПРИМЕРЫ / EXAMPLES\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1020#2\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1000#19" }, "GOOGLE_noglogo": { "img": "^google\\.[\\.a-z]+/images/nav_logo\\d+(_hr)?\\.png$", "to": ":\nreturn window.location.host.indexOf('.google.')>0?'':$[0]", "note": "Deathamns + Rodny (fix)\n\nПРИМЕРЫ / EXAMPLES\nhttps://www.reddit.com/r/imagus/comments/3v57ez/disable_imagus_for_a_specific_image/" }, "GOOGLE_URL": { "link": "^google\\.(?:com|(?:com?\\.)?[a-z]{2})/url\\?(?:[^&]+&)*?q=(http[^&]+\\.(?:jpe?g|gifv?|a?png|bmp|web[pm]|mp[34]]))(?:$|&).*", "dc": 1, "to": "$1" }, "GoogleContent|YouTube_Gallery": { "link": "^(?:(youtube\\.com/(?:post/[\\w-]+|channel/UC[\\w-]{22}/community\\?lb=.+))|ytgallery/album.*)$", "url": ": $[1]?$[1]:'data:,'+$[0]", "res": ":\nif(!$._.length)$._=document.body.outerHTML\ntry{\n$=JSON.parse($._.match(/\":({\"images?\":.+?})},\"/)[1])\nreturn $.images?$.images.map(i=>[i.backstageImageRenderer.image.thumbnails[0].url.match(/^[^=]+=/)+'s0']):$.image.thumbnails[0].url.match(/^[^=]+=/)+'s0'\n}catch(e){\nconsole.error('YouTube Gallery Error: '+e)\nreturn this.node.src?this.node.src.match(/^[^=]+/)+'=s0':''\n}", "img": "^((?:(?:(?:(?:lh|gp|yt)\\d+|blogger)\\.g(?:oogleuserconten|gph)|\\d\\.bp\\.blogspo)t|(?:drive|photos)\\.(?:fife\\.)?usercontent\\.google)\\.com/)(?:([_-](?:[\\w\\-]{11}/){3}[\\w\\-]{11,}/)([^/]+)(/[^?#=]+)?|(download\\?id=.+)|([^=]+)).*", "loop": 2, "to": ":\nconst n=this.node;\nif((location.pathname?.startsWith('/maps/')&&/\\d:\\d{2}$/.test(n.offsetParent?.offsetParent?.querySelector('div[class^=\"fontLabelMedium \"]')?.innerText||''))||(location.hostname.slice(0,14)==='photos.google.'&&n.parentNode?.parentNode?.querySelector('svg[aria-hidden=\"true\"]'))){\nreturn '#'+$[0].replace(/=.+/,'=m37')+'#mp4\\n#'+$[0].replace(/=.+/,'=m22')+'#mp4\\n'+$[0].replace(/=.+/,'=m18')+'#mp4\\n'+$[0].replace(/=.+/,'=s0')\n}\nvar c=$[3]&&$[3].match(/-?(?:Ic\\d\\d|mo)/); c=c&&('-'+c[0])||'';\nreturn /youtube\\.com$/.test(location.hostname)&&n.closest('ytd-post-multi-image-renderer') ? (n.closest('ytd-post-multi-image-renderer')?.querySelector('a[href^=\"/post/\"]')?.href||'ytgallery/album'+$[1]) : $[5] ? $[1] + $[5] : '#' + $[1] + ($[6] ? $[6] + '=' : $[2]) + (c?'s1600'+c:'s0') + ($[4]||($[6]?'':'/')) + '\\n' + $[1] + ($[6] ? $[6] + '=' : $[2]) + 's1024' + c + ($[4]||($[6]?'':'/'))", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/1iwujz1/comment/meuwlhy\nOLD\nhttps://www.reddit.com/r/imagus/comments/1iwujz1/comment/meo49i5\nhttps://www.reddit.com/r/imagus/comments/1bercv8/comment/l7svfya\n\n\n!!!\nДля просмотра альбомов курсор нужно наводить на дату.\n==\nYou have to hover over the date to view albums.\n\n\nEXAMPLES\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1360#11" }, "GooglePlay-p": { "link": "^(?:playstorealbum/(\\d+)!(.+)|play\\.google\\.com/store/apps/details\\?id=.+)", "url": ": ($[1]?'data:,':'')+$[0]", "res": ":\nif($[1]){\n var i=Number($[1]), $=$[2].split('!')\n return {\"\":$.map(i=>[['#'+i+'s0',i+'s1024']]),idx:i}\n}\nreturn [...$._.matchAll(/(?:<source|\"Atcj9b\"><img) src=\"([^\"]+)/g)].map(i=>[[i[1].replace(/=.+/,'=s0'),i[1].replace(/=.+/,'=s1024')]])", "img": "^(play-lh\\.googleusercontent\\.com/[^=]+=).*", "loop": 2, "to": ":\nconst n=this.node;\nif(n.className==='T75of B5GQxf'){\nconst num=n.attributes?.['data-screenshot-index']?.value;\nreturn '//playstorealbum/'+num+'!'+[...n.offsetParent?.querySelectorAll('img')].map(i=>i.src.match(/^[^=]+=/)[0]).join('!')\n}\nreturn $[1]+'s0\\n'+$[1]+'s1024'", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/nzilek0\nOLD\nhttps://www.reddit.com/r/imagus/comments/1bpg3s8/comment/kwxjhnb\n\n\nПРИМЕРЫ / EXAMPLES\nhttps://play.google.com/store/apps/details?id=org.mozilla.firefox&pli=1" }, "Grailed-s": { "link": "^grailed\\.com/listings/", "res": ":\nlet m = JSON.parse(($._.match(/application\\/json\">({.+?})<\\//)||[,'{}'])[1]).props?.pageProps.listing.photos.map(i => [i.url])\nif(!m)m = [...$._.matchAll(/PhotoGallery_thumbnails__[^\"]+\" src=\"([^\"]+)/g)].map(i=>[i[1].replace(/(process\\.fs\\.grailed\\.com\\/).+?\\/compress/,'$1')])\nreturn m\n", "img": "^(process\\.fs\\.grailed\\.com/).+?/compress/", "to": "$1", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/14siym7/comment/jr2n21s\nOLD\nhttps://www.reddit.com/r/imagus/comments/kukuay/does_anybody_have_a_sieve_for_grailedcom/\n\nEXAMPLES\nhttps://www.grailed.com/designers/enfin-leve\nhttps://www.grailed.com/categories/shorts\nhttps://www.grailed.com/shop/PcQyi3iYyA" }, "Gravatar": { "img": "^(?:(?:\\d|s(?:ecure)?)\\.)?(gravatar\\.com/)(?:(avatar)(?:\\.php\\?gravatar_id=|/?)|(userimage/\\d+)/)([^?&]*(?:\\.jpg)?)(?:[?&]?(?:[^&]+&)*?s(?:ize)?=(\\d+).*)?.*", "to": ":\nvar x = /[&?](d(?:efault)?=[^&]+)/.exec($[0]), y = /[&?](r(?:ating)?=[^&]+)/.exec($[0]);\nreturn $[1]+($[2]||$[3])+'/'+$[4]+'?s='+($[3]?1e3:512)+(x?'&'+x[1]:'')+(y?'&'+y[1]:'')" }, "GSMarena": { "link": "^(gsmarena.com/)(newsdetail|([\\w+)(]+)(-review|-pictures|-news)?(-\\d+(?:p\\d+)?))(\\.php3?.*)", "ci": 1, "url": ": $[4] || !$[5] ? $[0] : $[1] + $[3] + '-pictures' + $[5] + $[6]", "res": ":\nvar res = [];\nconst page = (new window.DOMParser()).parseFromString($._,'text/html');\nconst imgs = Array.from(page.querySelectorAll('#pictures-list img, #review-body img'));\nfor (const img of imgs) {\n const src = (img.dataset.src || img.src)?.replace(/\\/-\\w+\\//, '/');\n if (/jpe?g$/.test(src)) res.push([src]);\n}\n\nreturn res;", "img": "^((?:[cf]dn|st\\d*)(\\.gsmarena\\.com/))(?:(?:pics?|(?:pics?/)?vv)/blogpics/[^/]+/i?cs-(\\d\\d)-(\\d\\d)-([^_]+)-|((?:vv|pics?)/+(?:[^/]+/)+?)thumb/|(imgroot/(?:[^/]+/+)+)-\\d*x?\\d+\\w*/(?=[^/]+))", "to": ":\nreturn $[3]?'st'+$[2]+'pics/'+$[3]+'/'+$[4]+'/'+$[5]+'/': $[1] + ($[6] || $[7]) + '# -1024x768m/#'", "note": "hababr\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=2000#9\n\nEXAMPLES\nhttps://www.gsmarena.com/xiaomi-phones-80.php\nhttps://www.gsmarena.com/oneplus_nord_2t-pictures-11517.php" }, "Gyazo-h": { "link": "^(gyazo\\.com/)([\\da-f]{32}).*", "img": "^(i\\.)?(gyazo\\.com/)thumb/([\\da-f]{32}).*", "to": "i.$1$2.#png jpg gif#", "note": "EXAMPLES\nhttps://www.reddit.com/domain/gyazo.com/new/" }, "Happy-Team_himagem-h": { "link": "happy-team\\.org/himagem/\\?pm=(\\w+)", "img": "happy-team\\.org/himagem/\\?pm=(\\w+)", "to": "happy-team.org/himagem/image.php?di=$1", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/130svfu/comment/jn8v5j7\n\n!!!\nНеобходимо правило для SMH (см.ЧаВо, п.12).\n==\nNeed a rule for SMH (see FAQ, p.12).\n\n\nEXAMPLES\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1360#11" }, "Hardwareluxx.ru": { "link": "^hardwareluxx(?:\\.[a-z]+/index\\.php/artikel/.+|album/([^!]+)!(.+))", "url": ": ($[1]?'data:,':'')+$[0]", "res": ":\nif($[1])return {\"\":$[2].split('!').map(i=>[i]),idx:Number($[1])};\nlet o=JSON.parse($._.match(/console.log\\((.+?)\\)</)?.[1]||'[]');\nreturn o?.length?o.map(i=>[i.local_url_org]):[...$._.matchAll(/<a href=\"([^\"]+)\" data-caption=/g)].map(i=>[i[1]]);", "img": "^(hardwareluxx\\.[a-z]{2}/images/)(?:(.+_)\\d+px|cdn\\d+/[A-F0-9]+/img/([A-F0-9]+)/\\w+\\..+)", "loop": 2, "to": ":\nconst n=this.node;\nif($[2]&&!n.closest('[class^=\"fotorama__\"]'))return $[1]+$[2]+'1920px';\nlet o, i;\nif($[3]){\nif(!this.hardwareluxx_json){\nthis.hardwareluxx_json=[];\nconst m=JSON.parse(document.body.outerHTML.match(/console.log\\((.+?)\\)</)?.[1]||'[]');\nm.forEach(i=>this.hardwareluxx_json.push({\"local_url_org\":i.local_url_org,\"renditions\":i.renditions}));\n}\no=this.hardwareluxx_json;\ni=o?.findIndex(x=>Object.values(x.renditions).some(y=>y.id===$[3]));\n}else{\no=[...(n.closest('[class=\"fotorama__nav__shaft fotorama__grab\"]')||n.closest('[class^=\"fotorama__wrap\"]').querySelector('[class=\"fotorama__nav__shaft fotorama__grab\"]')||[]).querySelectorAll('img[src]')];\ni=o?.findIndex(x=>RegExp($[2]).test(x.src));\n}\nreturn o&&i>-1?'hardwareluxxalbum/'+i+'!'+o.map(i=>i.local_url_org||i.src?.replace(/_\\d+px/,'_1920px')).join('!'):$[0].replace(/_\\d+px/,'_1920px')", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/m9t02fu\nOLD\nhttps://www.reddit.com/r/imagus/comments/130svfu/comment/kd6jo2n\n\n\nПРИМЕРЫ\nhttps://www.hardwareluxx.ru/index.php/artikel.html\nhttps://www.hardwareluxx.ru/index.php/artikel/hardware/mainboards/44996-asus-rog-strix-x470-f-gaming-test.html\nhttps://www.hardwareluxx.ru/index.php/artikel/hardware/notebooks/53375-test-i-obzor-asus-zenbook-s-13-oled-um5302t-ultrabuk-ryzen-po-privlekatelnoj-tsene.html\nhttps://www.hardwareluxx.ru/index.php/artikel/hardware/eingabegeraete/47365-test-i-obzor-mysh-sharkoon-skiller-sgm2-i-kovrik-1337-rgb-igrovoj-komplekt-po-vygodnoj-tsene.html" }, "HDoujin-x": { "link": "^(hdoujin\\.org/)g(/\\d+/[a-f0-9]+)(?:/read/(\\d+))?", "url": "data:,$&", "res": ":\nlet o, n=Number($[3])-1, x=new XMLHttpRequest(), c=localStorage.getItem('clearance')\nif(!c){\n console.error('Clearance token not found')\n return null\n}\nx.open('POST',`https://api.${$[1]}books/detail${$[2]}?crt=${c}#hdoujin`,false)\nx.send()\no=JSON.parse(x.responseText).data['0']\nx.open('GET',`https://api.${$[1]}books/data${$[2]}/${o.id}/${o.key}/0?crt=${c}#hdoujin`,false)\nx.send()\no=JSON.parse(x.responseText)\no=o.entries.map(i=>[o.base+i.path+'#hdoujin'])\nreturn n ? {\"\":o,idx:n} : o", "note": "" }, "Hearst|Cosmo|Elle|Esquire|Harper-m": { "img": "^hips\\.hearstapps\\.com/([^\\.]+\\.h-cdn\\.co|hmg-prod|digitalspyuk|vader-prod|vidthumb)[^/]*(/[^\\?]+).*", "to": ":\nif ($[1].includes('h-cdn.co')) $[1] = '//' + $[1];\nif ($[1] == 'hmg-prod') $[1] = '//hmg-prod.s3.amazonaws.com';\nif ($[1] == 'digitalspyuk') $[1] = '//digitalspyuk.cdnds.net';\nif ($[1] == 'vader-prod') $[1] = '//vader-prod.s3.amazonaws.com';\nif ($[1] == 'vidthumb') $[1] = 'http://hearst-gopher.thumbs.s3.amazonaws.com'; // hearst-gopher has a bad https certificate as of 2022-09-21\n\nreturn $[1] + $[2].replace(/\\/\\d+x\\d+\\//, '/');", "note": "64h\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1160#3\n\n!!!\ncosmopolitan.com\ncountryliving.com\ndelish.com\ndigitalspy.com\nelle.com\nesquire.com\nharpersbazaar.com\nmenshealth.com\n\nEXAMPLES\nhttps://www.delish.com/restaurants/a58436/who-is-guy-fieri/\nhttps://www.countryliving.com/home-design/house-tours/g3456/small-oklahoma-house/\nhttps://www.harpersbazaar.com/fashion/trends/a41247745/spring-2023-fashion-trends/\nhttps://www.elle.com/culture/celebrities/a41296977/shakira-elle-digital-cover-october-2022/\nhttps://www.cosmopolitan.com/style-beauty/fashion/news/g5852/early-2000s-celeb-trends/\nhttps://www.digitalspy.com/tv/ustv/a41261585/upload-season-3-jeanine-mason/\nhttps://www.esquire.com/style/grooming/g34964318/best-mens-skincare-gift-sets/\nhttps://www.menshealth.com/entertainment/a37755218/the-sandman-netflix-trailer-cast-release-date-news/" }, "Hemmings-s-p": { "link": "^hemmings\\.com/(:?auction|listing)/[^/]+\\d+", "res": ":\nconst res = [];\nvar data = JSON.parse($._.match(/{.+\"vehicle_id\".+}/));\nvar text = '';\n\nres.push([data.hero]);\n\ndata.content.forEach(c => {\n    if (c.attributes?.content) text += c.attributes.content + '\\n';\n    if (c.attributes?.images?.startsWith('[{')) {\n        c.attributes.images = JSON.parse(c.attributes.images);\n        c.attributes.images.forEach(i => {\n            res.push([i.image]);\n        });\n    }\n})\n\nif (data.media?.length) {\n    data.media.forEach(m => {\n        if (!res.includes(m.original_url)) res.push([m.original_url]);\n    });\n}\n\nres[0][1] = `<imagus-extension type=\"sidebar\">${text}</imagus-extension>${data.title}`\nthis.TRG.IMGS_ext_data = res\nreturn { loop: 'imagus://extension' }\n", "img": "^thumbor\\d+-production-auction\\.hemmings\\.com/[^/]+/\\d+x\\d+/(\\d+/[^/]+.jpg)", "ci": 2, "to": "thumbor-production-auction.hemmings.com/$1", "note": "hababr\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=2580#5\n\nEXAMPLES\nhttps://www.hemmings.com/listing/1966-chevrolet-chevelle-225440" }, "Hentai0-x-q": { "link": "^hentai0\\.com/movie/.+-\\d+$", "res": ":\nlet videoSource = /:video_source=\"([^\"]+)/gm.exec($._)[1];\nfunction htmlDecode(input) {\n var doc = new DOMParser().parseFromString(input, \"text/html\");\n return doc.documentElement.textContent;\n}\nlet finalUrls = [];\nlet urls = JSON.parse(htmlDecode(videoSource));\nfor(let el of urls){\n finalUrls.push([el, /(\\d+p\\.mp4)/gm.exec(el)[1]]);\n}\nreturn finalUrls.reverse();", "note": "Randlai\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1431#1\n\n!!!\n- В фильтре есть переключение качества видео по принципу альбома - от максимального к минимальному.\n- Некоторые видео не грузятся, т.к. нужен премиум аккаунт.\n==\n- The sieve has an album-like video quality toggle from maximum to minimum.\n- Some videos are not loaded, because you need a premium account.\n\n\nПРИМЕРЫ / EXAMPLES\nhttps://hentai0.com/popular\nhttps://hentai0.com/tag/elf-16\nhttps://hentai0.com/search?keyword=MAID" }, "Hentai-Foundry-g-x-p": { "link": "^(hentai-foundry\\.com/)pic(?:tures/user/[^/]+/|-)(\\d+)[./](?:html|[^#/]+.*)", "url": "$1pic-$2.html?enterAgree=1", "res": "(//pictures\\.$1(?:[^/]+/)+?$2[^\"]+)\\S+(?: (?:\\S+ ){0,3}?alt=\"([^\"]+))?", "img": "^thumbs\\.(hentai-foundry\\.com/)thumb\\.php\\?pid=(\\d+).*", "note": "EXAMPLES\nhttps://www.hentai-foundry.com/pictures/recent/2023-01-24\nhttps://www.hentai-foundry.com/pictures/user/PurpleMantis\nhttps://www.hentai-foundry.com/search/index?query=MIMI&page=2" }, "HentaiFox-x-p": { "link": "^(?:hentaifox\\.(?:(com/gallery/\\d+/)|tv/video/([\\w-]+).*)|nhplayer\\.com/(?:(v/\\w+)|player.php\\?.+))", "url": ": $[2]?'https://hentaifox.tv/embed_new.php?name='+$[2]:$[0]", "res": ":\nif($[1]){\nlet res=[], u=$._.match(/data-src=\"(https:\\/\\/[^\\/]+\\/(?:\\d+\\/){2})\\d+t(\\.[^\"]+)/), n=$._.match(/id=\"load_pages\" value=\"([^\"]+)/)[1]\nfor(let i=1;i<=n;i++){\nres.push([[u[1]+i+u[2],u[1]+i+'.webp']])\n}\nreturn res\n}\nif($[2])return {loop:$._.match(/src=\"([^\"]+)/)[1]}\nif($[3])return {loop:'https://nhplayer.com'+$._.match(/<li data-id=\"([^\"]+)/)[1]}\nreturn $._.match(/file:\\s+\"([^\"]+)/)[1]", "img": "^(i\\d*\\.hentaifox\\.com\\/\\d+\\/\\d+\\/)(?:(\\d+)t|(thumb))\\.(...)", "to": ":\nreturn $[1] + ($[3] ? '1' : $[2]) + '.#' + $[4] + ' webp png#'", "note": "imqswt\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/nq0br7r\nOLD\nhttps://www.reddit.com/r/imagus/comments/17j6lqh/comment/k72qvqo\n\n!!!\nВ РФ может потребоваться хороший (желательно американский) прокси.\n\nEXAMPLES\nhttps://www.reddit.com/r/imagus/comments/17j6lqh/comment/k6z1arg" }, "Hentai-Moon-x-q-p": { "link": "^hentai-moon\\.com/videos/[0-9]+/.*?/", "res": ":\nlet title = /<title>([^<]+)/gm.exec($._)[1];\nfunction deobfuscate(r,t){let e=(r=r.split(\"/\").splice(2))[5],n=\"\",l=\"\";l=n=e.substring(0,32);let o=\"\";for(f=\"\",g=1;g<t.length;g++)f+=parseInt(t[g])?parseInt(t[g]):1;for(s=parseInt(f.length/2),$=parseInt(f.substring(0,s+1)),(g=(_=parseInt(f.substring(s)))-$)<0&&(g=-g),f=g,(g=$-_)<0&&(g=-g),f+=g,f*=2,f=\"\"+f,i=10,u=\"\",g=0;g<s+1;g++)for(h=1;h<=4;h++)(a=parseInt(t[g+h])+parseInt(f[g]))>=i&&(a-=i),u+=a;o=u;for(var s=l,$=l.length-1;$>=0;$--){for(var _=$,u=$;u<o.length;u++)_+=parseInt(o[u]);for(;_>=l.length;)_-=l.length;for(var a=\"\",b=0;b<l.length;b++)a+=b==$?l[_]:b==_?l[$]:l[b];l=a}return r[5]=e.replace(n,l),r.join(\"/\")}\nlet videovars = /var flashvars = ({[\\n].+});/gm.exec($._);\neval(\"videovars = \"+videovars[1]);\nlet urls = [];\nfor(el in videovars){\n if(el.match(/^video.*?url\\d?$/)){\n urls.push([deobfuscate(videovars[el], videovars.license_code)+'#mp4', videovars[el+'_text'] ? videovars[el+'_text'] : title]);\n }\n}\nreturn urls;", "note": "Randlai\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1429#1\nOLD\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=620#8\n\n\n!!!\nВ фильтре есть переключение качества видео по принципу альбома - от минимального к максимальному.\n==\nThe sieve has an album-like video quality toggle from minimum to maximum.\n\n\nEXAMPLES\nhttps://hentai-moon.com/most-popular/\nhttps://hentai-moon.com/categories/romance/" }, "Hentai-Moon_scr-x-p": { "link": "^hentai-moon\\.com/get_file/0/[a-f\\d]+/\\d+/\\d+/screenshots/\\d+\\.jpg/", "note": "Randlai\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=620#10\n\nEXAMPLES\n(кнопка скриншоты под видео / screenshot button under the video)\nhttps://hentai-moon.com/videos/3602/debt-sisters-ep-1/\nhttps://hentai-moon.com/videos/2095/kuroinu-kedakaki-seijo-wa-hakudaku-ni-somaru-ep-1/" }, "Hentai-Sharing-x-p": { "link": "^hentai-sharing\\.net/nyaa/([\\w=]+)$", "loop": 1, "to": ":\n$=atob($[1]);\nreturn /\\.(?:jpe?|pn)g/.test($) ? $ : ''", "note": "imqswt\nhttps://www.reddit.com/r/imagus/comments/1m45hdr/comment/n44x3cz\n\n!!!\nТолько американский прокси.\n\nEXAMPLES\nhttps://hentai-sharing.net/250711happycreator-happy-island-fantasy-uncensored-jap-eng-chn/\nhttps://hentai-sharing.net/250719青りんご-お姫様救出クエスト-ローズ編-rj01426997/" }, "HentaiSea_video-x-p": { "url": "https://hentaisea.com/jwplayer/?source=https%3A%2F%2Fhentaisea.com%2Fmp4%2Ftube%2F$1.mp4&type=mp4", "res": "file\":\"([^\"]+)", "img": "^hentaisea\\.com/wp-content/uploads/tube-thumbs/(.*?)\\.jpg", "note": "Randlai\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1470&limit=1&m=1#1\n\nEXAMPLES\nhttps://hentaisea.com/videos-genres/hentai/" }, "HentaiSea_watch-x-p": { "link": "^hentaisea\\.com/watch/.*?/$", "res": ":\nlet parser = new DOMParser().parseFromString($._, \"text/html\");\nlet episodes = parser.querySelectorAll('.imagen a');\nif(!episodes) return null;\nlet title = parser.querySelector('.data h1').textContent;\nfunction xmlhttp(type, url, data){\n\tlet x = new XMLHttpRequest;\n\t//x.timeout = 3000;\n\tif(type == \"get\"){\n\t\tx.open('GET', url, false);\n\t\tx.send();\n\t}\n\telse if(type == \"post\"){\n\t\tx.open('POST', url, false);\n\t\tx.setRequestHeader(\"Content-Type\", \"application/x-www-form-urlencoded\");\n\t\tx.send(data);\n\t}\n\treturn x.responseText;\n}\n\nfunction getVideoUrl(episodeUrl){\n\tlet url = \"https://hentaisea.com/wp-admin/admin-ajax.php\";\n\tlet html = xmlhttp('get', episodeUrl);\n\tlet videoParser = new DOMParser().parseFromString(html, \"text/html\");\n\tlet id = /(\\d+)/.exec(videoParser.querySelector('link[rel=shortlink]').href)[1];\n\tlet data = `action=doo_player_ajax&post=${id}&nume=1&type=tv`;\n\thtml = xmlhttp('post', url, data);\n\turl = /src='([^']+)/.exec(html)[1];\n\thtml = xmlhttp('get', url);\n\tlet videoUrl = /file\":\"([^\"]+)/.exec(html)[1];\n\treturn videoUrl\n}\n\nfunction getAllEpiseodes(){\n\tlet urls = [];\n\tlet i = 1;\n\tlet videoName = \"\";\n\tfor(episode of episodes){\n\t\tlet url = episode.href;\n\t\tlet result = getVideoUrl(url);\n\t\tvideoName = episodes.length > 1 ? `${title} - episode ${i}` : title;\n\t\turls.push([result+'#mp4', videoName]);\n\t\ti++;\n\t}\n\treturn urls;\n}\nlet urls = getAllEpiseodes();\nreturn urls;", "note": "Randlai\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1470&limit=1&m=1#1\n\n\nПРИМЕРЫ / EXAMPLES\nhttps://hentaisea.com/trending/?get=tube\nhttps://hentaisea.com/genre/uncensored/" }, "Hitomi.la-x-p": { "link": "^hitomi\\.la\\/.+?(\\d+)\\.html#?(\\d*)", "res": ":\nfunction getPageText(url) {\n const x = new XMLHttpRequest();\n x.open('GET', url, false);\n x.send();\n return x.responseText;\n}\n\n\nfunction parseGgjs(page) {\n\n const m = {};\n\n const caseRegex = /case\\s+(\\d+):(?:\\s*o\\s*=\\s*(\\d+))?/g;\n let keys = [];\n let match;\n while ((match = caseRegex.exec(page)) !== null) {\n const key = parseInt(match[1], 10);\n const value = match[2] ? parseInt(match[2], 10) : null;\n\n keys.push(key);\n\t\t\n if (value !== null) {\n\t\t\t// cast the key to a string since `gg.s()` returns a string\n keys.forEach(k => m[k.toString()] = value);\n keys = [];\n }\n }\n\n const ifRegex = /if\\s+\\(g\\s*===?\\s*(\\d+)\\)[\\s{]*o\\s*=\\s*(\\d+)/g;\n while ((match = ifRegex.exec(page)) !== null) {\n m[parseInt(match[1], 10)] = parseInt(match[2], 10);\n }\n\n const defaultMatch = page.match(/(?:var\\s|default:)\\s*o\\s*=\\s*(\\d+)/);\n const defaultValue = defaultMatch ? parseInt(defaultMatch[1], 10) : 0;\n\n const bMatch = page.match(/b:\\s*[\"'](.+?)[\"']/);\n const b = bMatch ? bMatch[1].replace(/^\\/|\\/$/g, '') : null;\n\n return [m, b, defaultValue];\n}\n\n\n\nconst urlDomain = '.gold-usergeneratedcontent.net/'\n\nlet ggjs = getPageText('https://ltn' + urlDomain + 'gg.js');\neval(ggjs.match(/(gg = .*)/s)[1]);\n\nconst [m, b, defaultValue ] = parseGgjs(ggjs);\n\nvar galleryId=$[1];\n\neval(getPageText('https://ltn' + urlDomain + 'galleries/' + galleryId + '.js'));\n\n\n//Differentiate between gallery links and image links\nlet pageint = $[2] == \"\" ? -1 : parseInt($[2]);\n\nlet res=[];\nfor (let i=0; i<galleryinfo.files.length; i++) {\n \n if(pageint != -1 && pageint != i + 1)\n continue;\n\n let img = galleryinfo.files[i];\n\n // TODO: figure out the `avif` file url\n //let imtype;\n //if(img.hasavif == 1) {\n // imType = \"avif\";\n //}\n //else {\n // imType = \"webp\";\n //}\n let imType = 'webp'\n \n let imHash = img.hash;\n let imNum = gg.s(imHash)\n // The left operand SHOULD just be the first letter of the filetype\n // e.g. `imtype[0]`, but it 404's using `a[vif]`\n let subDomain = 'w' + ((m[imNum] ?? defaultValue) + 1)\n \n let link = \"https://\" + subDomain + urlDomain + b + '/' + imNum + '/' + imHash + '.' + imType;\n \n console.debug(link);\n\n res.push([link]);\n}\n\nreturn res;\n", "note": "iceiller9999 + Atlamillias (fix)\nhttps://www.reddit.com/r/imagus/comments/1jmb027/fix_hitomila/\nOLD\nhttps://www.reddit.com/r/imagus/comments/102rqm3/comment/j3koy3a\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3840#20\n\n\nEXAMPLES\nhttps://hitomi.la/artist/akutabin-all.html\nhttps://hitomi.la/series/arcana%20heart-all.html\nhttps://hitomi.la/tag/male%3Aexposed%20clothing-all.html" }, "HizliResim-h": { "link": "^hizliresim\\.com/(a/)?\\w{6,}\\W*$", "res": ":\nreturn [...$._.matchAll(/data-fancybox=\"gallery\" href=\"([^\"]+)/g)].map(i=>[i[1]])", "img": "^([gt])(\\.hizliresim\\.com/[^.]+)-(?:\\d+x\\d+|s)", "to": ":\nreturn ($[1]=='t'?'i':'g') + $[2]", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/130svfu/comment/jye4kqo\n\nEXAMPLES\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1360#11" }, "Hoff.ru-s": { "link": "^hoff\\.ru/catalog/[\\w-/]+_id(\\d+)/(?:\\?articul=(\\d+))?", "url": ": 'https://hoff.ru/vue/catalog/product/?id='+ $[1] + ($[2] ? '&articul=' + $[2] : '');", "res": ":\nlet json=JSON.parse($._);\nlet res=[];\nfor (picture of json.data.slider.pictures) {\n res.push([picture.src]);\n}\nreturn res;", "note": "Baton34V\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1820#2\n\nПРИМЕРЫ\nhttps://hoff.ru/catalog/shkafy/shkafy_kupe/?stil=skandinavskiy\nhttps://hoff.ru/catalog/promo/dvuspalnye_krovati/?podemnyy_mekhanizm=bez_mehanizma&tsvet=dub_tyomnyy" }, "Holodilnik.ru-s": { "link": "^holodilnik\\.ru/(.+/){4}$", "res": ":\nvar i = $._.indexOf('<div class=\"card-product-img__labels\">');\nif(i<0) { return null; }\nvar t = $._.indexOf('<div class=\"swiper-initialized card-product-img__preview\"', i);\nif(t<0) { return null; }\nvar res = [];\nvar re = /data-src=\"([^\"]+)\"/gi\nlet data=$._.substring(i,t);\nvar a = re.exec(data);\nwhile(a) {\n res.push([a[1]]);\n a = re.exec(data);\n}\nreturn res;", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/18n32dx/comment/kebeozx\nOLD\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1660#20\n\n\nПРИМЕРЫ\nhttps://www.holodilnik.ru/tv_all/tv/\nhttps://www.holodilnik.ru/built-in/built-in_rone_chamber_refrigerators/" }, "HomeMoviesTube-x-p": { "link": "^(\\w+\\.)?homemoviestube\\.com/videos/(.*?)(/|$|\\?).*", "url": "https://www.homemoviestube.com/embed/$2", "res": ":\nreturn $._.match(/<source src=\"([^\"]+)/)?.[1].replace(/[a-z]+\\.videos\\.cdn\\.homemoviestube\\.com/,'www.homemoviestube.com/media/videos')||''", "note": "imqswt\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/ldqyz6y\nOLD\nhttps://www.reddit.com/r/imagus/comments/iv556b/nsfw_bunch_of_sieves_for_popular_adult_site_videos/\n\n\nEXAMPLES\nhttps://www.reddit.com/domain/homemoviestube.com/new/" }, "HostingKartinok|hkar.ru-h": { "useimg": 1, "link": "^(?:hostingkartinok\\.com/show-image\\.php\\?id=[\\da-f]{32}|(?:hkar\\.ru|smotr\\.im)/\\w+)", "res": "<div class=\"image\">\\s*<a href=\"([^\"]+)\"", "img": "^(s\\d+\\.hostingkartinok\\.com/uploads)/thumbs/([^.]+\\.)png", "to": "$1/images/$2#jpg jpeg png gif bmp#", "note": "ПРИМЕРЫ\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1360#11" }, "HostPic-h-p": { "link": "(hostpic.org/)view\\.php\\?filename=([^.]+\\.jpg)", "img": "(hostpic.org/)view\\.php\\?filename=([^.]+\\.jpg)", "to": "$1images/$2", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/130svfu/comment/jn8v5j7\n\nEXAMPLES\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1360#11" }, "Hotline.ua-s-p": { "link": "^hotline\\.ua/[\\w-]+/", "res": ":\nlet data=$._.match(/type=\"application\\/ld\\+json\">({\"@context\":\"https:\\/\\/schema\\.org\\/\",\"@type\":\"Product\"[^<]+)<\\/script>/i);\nlet res=[];\nfor (image of JSON.parse(data[1]).image) {\n res.push([image]);\n}\nreturn res;\n", "img": "^(hotline\\.ua/{1,2}img/tx/\\d+/\\d+)_s\\d+(\\.jpg)$", "to": "$15$2", "note": "Baton34V\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=500#7\n\n\nПРИМЕРЫ / EXAMPLES\nhttps://hotline.ua/dom/ofisnye-kresla/\nhttps://hotline.ua/ua/sr/?q=диваны" }, "HSmedia-CDN": { "link": "^[a-z0-9]+\\.ru/text/\\w+/\\d{4}/\\d{2}/\\d{2}/\\d+/$", "res": ":\nfunction getImgs(i){\n let m, t;\n if(m=i.type==='TYPE_IMAGE'&&i.blockImage?.block?.image?.originalUrl){\n t=i.blockImage?.block?.description;\n t&&r.push([f(m),t]);\n } else {\n i.blockSlider?.slides?.forEach(z=>{\n t=z.image?.description||'';\n z=z.image?.image?.originalUrl;\n z&&r.push([f(z),t]);\n });\n (i.blockCard?.block||i.blockOnlinePost)?.content?.forEach(y=>{\n y.type==='TYPE_SLIDER'&&y.blockSlider?.slides?.forEach(z=>{\n t=z.image?.description||'';\n z=z.image?.image?.originalUrl;\n z&&r.push([f(z),t]);\n });\n if(m=y.type==='TYPE_IMAGE'&&y.blockImage?.block?.image?.originalUrl){\n t=y.blockImage?.block?.description||'';\n r.push([f(m),t]);\n }\n });\n }\n}\nlet r=[], f=x=>this.find({src:x})||'';\n$=$._.match(/window.initialState\\s*=\\s*({.+?});\\n/);\n$=$&&JSON.parse($[1]);\n$=($.articlePage?.articles?.[0]||$.articleOnlinePage?.rawArticle)?.content||[];\n$.forEach(getImgs);\nreturn r", "img": "^(n1s1\\.hsmedia\\.ru/(?:[\\da-f]{2}/){3}[\\da-f]{32}/)\\d+x\\d+_[^@/]+@(\\w+\\.\\w+)\\.webp", "to": "$1$2", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/1pbn8lm/comment/ns1ecp5/\n\n!!!\nФильтр для городских сайтов сети Shkulev Media.\nе1.ru\nngs.ru\nnn.ru\nи тд.\n\nПРИМЕРЫ\nhttps://е1.ru/text/\nhttps://nn.ru/text/" }, "Huaban-g": { "link": "^(huaban\\.com/boards/\\d+).*", "url": "https://api.$1/pins?limit=100", "res": ":\nlet jsn=JSON.parse($._);\nlet res=[];\nfor (pin of jsn.pins) {\n let url='https://'+pin.file.bucket+'.huaban.com/'+pin.file.key;\n let title=pin.raw_text;\n res.push([url,title]);\n}\nreturn res;", "img": "^((?:gd-)?hbimg(?:-edge)?\\.huaban(?:img)?\\.com/[^_]+)_.*", "to": "$1", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/1m3fj0j/comment/nu1hw6c\nOLD\nhttps://www.reddit.com/r/imagus/comments/1m3fj0j/comment/n3x01g8\nhttps://www.reddit.com/r/imagus/comments/130svfu/comment/jye4kqo\n\n\n!!!\nНеобходимо правило для SMH (см.ЧаВо, п.12).\n==\nNeed a rule for SMH (see FAQ, p.12).\n\nEXAMPLES\nhttps://huaban.com/boards/38251372\nhttps://huaban.com/user/e0ved985mlo\nhttps://huaban.com/explore/chanpinbeijing" }, "Hubblesite-g": { "link": "^hubblesite\\.org/contents/media/(?:video|image)s/\\d{4}/\\d+/\\S+", "res": "<a href=\"([^\"]+\\.(?:png|jpe?g|mp4))\">", "img": "^stsci-opo\\.org/STScI-[^.]+\\.(?:pn|jpe?)g$", "loop": 2, "to": ":\nreturn location.hostname==='hubblesite.org' && this.node.parentNode?.parentNode?.parentNode?.firstElementChild?.firstElementChild?.href || $[0]", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/ktwgt80\nOLD\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3360\n\n!!!\nIn the search results, it is recommended to hover the cursor over the photo title.\n\n\nEXAMPLES\nhttps://science.nasa.gov/mission/hubble/multimedia/hubble-images/" }, "HuffingtonPost-m": { "img": "^(img\\.huffingtonpost\\.com/+asset/)(?:[^/]+/)?([^?]+).*", "to": "$1$2", "note": "EXAMPLES\nhttps://www.huffpost.com/impact/business\nhttps://www.huffpost.com/news/politics" }, "Icedrive-h": { "link": "^(?:api\\.)?(icedrive\\.net/)(?:s/\\w+|API/Internal/V\\d/\\?.*)", "res": ":\nif($._[0]!=='{'){\nconst id=$._.match(/data-id=\"([^\"]+)/)?.[1]||$._.match(/previewItem\\('([^']+)/)?.[1]\nif(!id)return ''\nreturn {loop:'https://api.'+$[1]+'API/Internal/V2/?request='+(/data-id=\"/.test($._)?'collection&type=public&folderI':'file-preview&i')+'d='+id}\n}\nconst o=JSON.parse($._)\nreturn o.download_url ? o.download_url+\"#\"+o.extension : o.data ? [...o.data.map(i=>[i.thumbnail.replace(/&w=[^&]+&h=[^&]+&m=.*/,'&w=1024&h=1024')])] : ''", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/n5e9jew\nOLD\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/llxjbjy\nhttps://www.reddit.com/r/imagus/comments/130svfu/comment/jn8v5j7\n\n\nEXAMPLES\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1360#11" }, "Idlebrain": { "img": "^(idlebrain\\.com/movie/photogallery/[^/]+/images/)th_", "to": "$1", "note": "https://www.reddit.com/r/imagus/comments/8hk5zg/comment/dyky5ab\n\nEXAMPLES\nhttps://idlebrain.com/movietape/index.html\nhttps://idlebrain.com/movie/photogallery/zarinekhan1/index.html\nhttps://idlebrain.com/movie/photogallery/bheeshma/index.html" }, "iFixit": { "img": "(guide-images\\.cdn\\.ifixit\\.com\\/igi/[^/]+)\\.(medium|thumbnail|standard)", "to": "#$1\n$1.huge", "note": "gpl2731\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1120#17\n\nПРИМЕРЫ / EXAMPLES\nhttps://ru.ifixit.com/Teardown/iPhone+4+Teardown/3130\nhttps://www.ifixit.com/Teardown/Samsung+Galaxy+S7+Teardown/56686" }, "Igromania.ru": { "link": "javascript:view\\(\\d+,\\d+,'(\\/\\/cdn\\.igromania\\.ru\\/mnt\\/articles(?:\\/\\w){6}\\/\\w+\\/html\\/img\\/\\w+_zoom\\.\\w+)'\\)", "to": "$1", "note": "Rodny\n\nПРИМЕРЫ\nhttps://www.igromania.ru/igrovyie-novosti/?page=2" }, "Igromania.ru_2": { "img": "(cdn\\.igromania\\.ru\\/mnt\\/articles(?:\\/\\w){6}\\/\\w+\\/html\\/more\\/\\w+_)\\d+\\w+(\\.\\w+)", "to": "$11920xH$2\n$11200xH$2", "note": "Baton34V\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=1680#8\n\nПРИМЕРЫ\nhttps://www.igromania.ru/review/32348/obzor-dordogne-poedu-k-babushke-v-derevnyu/" }, "IImg.su-h": { "link": "^iimg\\.su/i/[\\w\\d]+", "res": "img src=\"([^\"]+)\" alt=\".*\" class=\"img-fluid\"", "note": "gpl2731\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=2760#7\n\n\nПРИМЕРЫ\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1360#11" }, "ImageBam-h": { "link": "^(imagebam\\.com/)(image|view)(/\\w+).*", "url": ": !$[0].endsWith('?loop') ? 'data:,'+$[0] : 'https://www.'+$[1]+($[3] ? $[2]+$[3] : $[1]+'image'+$[2])", "res": ":\nif($.base[0]==='d'){\nlet c, x=new XMLHttpRequest();\nconst d=()=>document.cookie='nsfw_inter=;Path=/;max-age=0';\ntry{\nif(c=location.hostname==='www.imagebam.com'&&!/nsfw_inter/.test(document.cookie))document.cookie='nsfw_inter=1; Path=/';\n// #imagebam_header added to match SMH rules\nx.open('GET','https://www.'+$[1]+($[3] ? $[2]+$[3] : $[1]+'image'+$[2])+'#imagebam_header',false);\nx.send();\nif(c)d();\n$._=x.responseText;\n}catch(e){\nif(c)d();\nreturn {loop:'https://www.'+$[1]+'image'+($[3]||$[2])+'?loop'};\n}\n}\nreturn $._.match(/img src=\"([^\"]+)\" alt=\"[^\"]+\" class=\"main-image/)?.[1]", "img": "^thumbnails\\d*\\.(imagebam\\.com/)\\d+(/[\\da-f]+).*", "note": "imqswt\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/mhjubnk\nOLD\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/l1bsss3\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3120#17\n\n\nEXAMPLES\nhttps://www.reddit.com/domain/imagebam.com/new/\nhttps://vipergirls.to/threads/5101059-Sabrina-Bloom-Magical-x50-5760px-(3-Mar-2020)\nhttps://forum.ru-board.com/topic.cgi?forum=1&topic=8691&start=200#11" }, "ImageBan.ru|ibn.im-h": { "link": "(^imageban\\.ru/show/\\d{4}/|ibn\\.im\\/\\w{7})", "res": "src=\"(https?://i\\d+\\.imageban\\.ru/out/[^\"]+)", "img": "^(i\\d+\\.imageban\\.ru)/thumbs/(\\d{4})\\.(\\d\\d)\\.(\\d\\d)/", "to": "$1/out/$2/$3/$4/", "note": "Baton34V\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1640#17\nOLD\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=1720#21\n\n!!!\nДля http://ibn.im возможно понадобится разрешить HTTP в настройках безопасности браузера.\n\n\nПРИМЕРЫ\nhttps://rutracker.org/forum/viewtopic.php?t=3762986\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1640#13" }, "ImageDelivery-CDN": { "link": "^(imagedelivery\\.net/[\\w-]{22}/[a-f0-9-]{36})(?:/.*|$)", "to": "#$1/original\n$1/2x\n$1/public\n$1/email600\n", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/130svfu/comment/mptdk3z\n\nEXAMPLES\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1360#11" }, "ImageEvent-h-p": { "img": "^(photos\\.imageevent\\.com/(?:[^/]+/)+?)(?:icons|small|websize)/(.+)", "to": "$1/$2", "note": "EXAMPLES\nhttps://imageevent.com/powerwagon/doorart\nhttps://www.reddit.com/domain/imageevent.com/new" }, "ImageFap_1-x-p": { "link": "^imagefap\\.com/(?:photo/|/image\\.php\\?id=)(\\d+).*", "url": "https://www.imagefap.com/photo/$1/", "res": "original=\"([^?]+$1[^\"]+)", "img": "^(?:(?:cdn[ch]?)\\d*\\.imagefap\\.com|(?:x\\d*\\.)?fap\\.to)/images/[^?]+/(\\d+).*", "note": "imqswt\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/ni7vk38\n\n\nEXAMPLES\nhttps://www.reddit.com/domain/imagefap.com/new/\nhttps://www.imagefap.com/gallery.php" }, "ImageFap_2-x-p": { "link": "^(imagefap\\.com)/(?:gallery\\.php\\?gid=|pictures/)\\d+.*", "res": ":\nlet r=[], link='https://www.'+$[1]+$._.match(/<a name=\"\\d+\" href=\"([^\"]+)/)?.[1].replace(/&/g,'&');\nfor(i=0;i<240;i+=24){\n let imgs, x=new XMLHttpRequest();\n x.open('GET',link+'&idx='+i+'&partial=true',false);\n x.send();\n imgs=[...x.responseText.matchAll(/original=\"([^\"]+)/g)].map(i=>[i[1]]);\n r.push(...imgs);\n if(imgs.length<24)break;\n}\nreturn r;", "note": "imqswt\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/niqx0l2\n\nEXAMPLES\nhttps://www.imagefap.com/gallery.php" }, "ImageFap_video-x-p": { "link": "^imagefap\\.com/video\\.php\\?vid=\\d+", "res": ":\nlet link=$._.match(/var VideoPlayer = \\{[\\s\\S]+?url: ?'([^']+)'/)[1];\nconst x = new XMLHttpRequest();\nx.open('GET',link,false);\nx.send();\nlet xml=x.responseXML;\nlet res = [];\nlet videoFileSources = xml.getElementsByTagName('quality')[0];\nif (videoFileSources) {\n videoFileSources = videoFileSources.getElementsByTagName('item');\n console.log(videoFileSources[videoFileSources.length-1]);\n res.push(videoFileSources[videoFileSources.length-1].getElementsByTagName('videoLink')[0].childNodes[0].nodeValue);\n}\nreturn res;", "note": "Baton34V\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3920#13\n\n!!!\n- Для работы фильтра требуется правило для SMH (см.ЧаВО, п.12).\n- Курсор наводить на название ролика.\n+\n- For the sieve to work, a rule for SMH is required (see FAQ, p.12).\n- The cursor should be pointed at the title of the video.\n\n\nПРИМЕРЫ / EXAMPLES\nhttps://www.imagefap.com/browse-video.php?page=6" }, "Imagenes-CMS": { "img": "^([^/]{4,70}/)files/image_\\w+/(uploads/imagenes/)", "to": "$1$2", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/1p129w9/comment/npn65su/\n\nEXAMPLES\nhttps://www.reddit.com/r/imagus/comments/1p129w9/spanish_news_site_images_imagenes/" }, "ImageNetz.de-h": { "link": "imagenetz\\.de/\\w+", "res": ":\nconst res = $._.match(/<div class=[\"']thumbnail thumbnail-downloadimage[\"']>[^<]+<img src=[\"']([^\"']+)/)\nreturn res&&res.length?res[1]:''", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/130svfu/comment/jn8v5j7\n\nEXAMPLES\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1360#11" }, "ImageShack_1-h": { "link": "^(imageshack\\.com/\\w/\\w+)", "note": "Baton34V\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3740#8\n\n!!!\nДля показа галерей необходимо правило для SMH (см.ЧаВо, п.12).\n==\nTo show the galleries, you need a rule for SMH (see FAQ, p.12).\n\nEXAMPLES\nhttps://imageshack.com/featured\nhttps://www.reddit.com/domain/imageshack.com/new/\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3720#21" }, "ImageShack_2-h": { "img": "^imagizer\\.imageshack\\.com/(?:img(\\d+)/\\d+|v2/\\w+/(?:\\w/)?(\\d+))(/\\w+\\.jpg)", "to": "imagizer.imageshack.us/v2/download/$1$2$3", "note": "Baton34V\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3740#8\n\n\nEXAMPLES\nhttps://imageshack.com/featured\nhttps://www.reddit.com/domain/imageshack.com/new\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3720#21" }, "ImageSharing-h": { "link": "imagesharing\\.com//?photo\\.php\\?s=.*", "res": ":\nconst res = $._.match(/\"p_photo_container\">[^<]+<img src=\"([^\"]+)/)\nreturn res&&res[1].length?res[1]:''", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/130svfu/comment/jn8v5j7\n\nEXAMPLES\n???" }, "ImageTitan-h": { "link": "^(.*\\.imagetitan\\.com/)img\\.php\\?image=.+\\.(?:jpe?g|a?png|gif|svgz?|webp|w?bmp|xbm|pict|j(?:if|fif?))", "res": "img id=\\\"image\\\".+src=\\\"(.+\\.(?:jpe?g|a?png|gif|svgz?|webp|w?bmp|xbm|pict|j(?:if|fif?)))\\\"", "note": "destiny child\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1360#17\n\nПРИМЕРЫ / EXAMPLES\nhttps://www.reddit.com/domain/imagetitan.com/new\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1369#2" }, "ImageTwist|imagenpic|imageshimage|imgtraffic|picshick|pixroute-h-x": { "link": "^((?:imagetwist|imageshimage|imagenpic|picshick|pixroute|imgtraffic)\\.com/)([\\da-z]{12}|\\w-1(?:/\\d+){3})(/[\\w.-]+\\.(?:[Jj][Pp][Ee]?[Gg]|png|PNG|gif|GIF|bmp|BMP)(?:\\.html)?)$", "url": "$1$2$3", "res": "src=[\"'](https?://[^\"']+)[\"'] (?:(?:\\w+=\"[^\"]+\"\\s+)*?(?:class=\"pic|id=\"[^\"]+\"\\s*>)|alt='[^']+'\\s+title='Click to view full size')", "img": "^(?:i\\D{0,3}\\d*\\.)?((?:imagetwist|imageshimage|picshick|pixroute)\\.com)/(?:i/\\d{5}/([\\da-z]{12})_[^.]+|th/\\d{5}/([\\da-z]{12}))\\.jpg$", "note": "imqswt\nhttps://new.reddit.com/r/imagus/comments/1cglunf/comment/l1wuzjq\nOLD\nhttps://new.reddit.com/r/imagus/comments/18r54gk/comment/kf4283r\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=300#12\n\n!!!\nДля работы фильтра требуется SMH (см.ЧаВО, п.12)\n==\nFor the sieve to work, the SMH is required (see FAQ, p.12).\n\nEXAMPLES\nhttps://shentai.org/mortal-kombat-artwork-mega-pack/\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=311&limit=1&m=1#1" }, "imageup.ru-h": { "link": "^(imageup\\.ru/img(?:.+))\\.html$", "to": "$1", "note": "Rodny\n\nПРИМЕРЫ\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1360#11" }, "imageup.ru_2-h": { "link": "^imageup\\.ru/\\d+", "res": "<tr><td align=center><img src=\"([^\"]+)\"", "note": "Baton34V\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3720#20\n\nПРИМЕРЫ\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1360#11" }, "ImageUpper-h-p": { "link": "^imageupper\\.com/[gi]+/\\?(?:galID=)?\\w+", "res": ":\nreturn $._.match(/;\" SRC=\"([^\"]+)/)?.[1]||[...$._.matchAll(/<IMG SRC=\"([^\"]+)\" BORDER/g)].map(i=>[i[1].replace('_t','')])", "img": "^(s\\d\\d\\.imageupper\\.com/\\d)_t(/\\d/\\w+\\.jpg)", "to": "$1$2", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/l9ag11t\nOLD\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1380#14\n\nEXAMPLES\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1360#11" }, "ImageVenue-h": { "link": "^((img\\d+\\.)?imagevenue\\.com/)(\\w{6,8}|img\\.php\\?(?:[^&]+&)*?image=([^&]+).*)", "res": ":\nconst doc = new DOMParser().parseFromString($._, \"text/html\");\nvar i =  doc.querySelector('#main-image');\nif (i) return i.src;\n\ni = doc.querySelector('.thumb > a');\nreturn i ? { loop: i.href } : '';", "note": "hababr\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=2560#17\nOLD\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=2100#20\n\n\nПРИМЕРЫ / EXAMPLES\nhttps://www.reddit.com/domain/imagevenue.com/new\nhttps://pornolab.net/forum/viewtopic.php?t=129738" }, "IMDb": { "link": "^(?:m\\.)?imdb\\.com/title/tt\\d+(?:/\\?\\S*|/)?$", "loop": 1, "res": ":\nfunction blank_poster() {\n const tt = s => aboveTheFoldData.titleType.text.startsWith(s)\n const type = tt('TV') ? 'tv' : tt('Video Game') ? 'game' : tt('Podcast') ? 'podcast' : tt('Music Video') ? 'music' : 'movie'\n return svg.make('-3 0 30 24', type)\n}\n\nfunction gallery_poster(num) {\n const url = `https://www.imdb.com/title/${mainColumnData.id}/mediaindex/`\n const text = `The other ${num > 1 ? `${num} images are` : `${num} image is`} available<br>in the IMDb gallery`\n return [ svg.make('-3 2 30 24', 'gallery'), `<imagus-extension type=\"banner\" text=\"${text}\" url=\"${url}\"></imagus-extension>` ]\n}\n\nfunction get_images() {\n const poster = n => n ? [ n.url, n.caption.plainText ] : [ blank_poster(), '' ]\n const images = n => n.edges.map(i => i.node.id !== aboveTheFoldData.primaryImage?.id ? [ i.node.url, i.node.caption.plainText ] : undefined).filter(Boolean)\n const result = [ poster(aboveTheFoldData.primaryImage), ...images(mainColumnData.titleMainImages) ]\n if (mainColumnData.titleMainImages.total > result.length)\n result.push(gallery_poster(mainColumnData.titleMainImages.total - result.length + result[0][0].startsWith('data:')))\n if (result.length === 1 && result[0][0].startsWith('data:'))\n result[0][0] = '//' + result[0][0]\n return result\n}\n\nfunction get_header() {\n const ry = aboveTheFoldData.releaseYear\n const tt = aboveTheFoldData.titleType\n let ty = tt.isSeries && ry?.year && ry?.year !== ry?.endYear ? `${ry.year}–${ry.endYear || ' '}` : ry?.year\n if (tt.id !== 'movie') ty = [ tt.text, ty ].filter(Boolean).join(' ')\n return ty ? `${title} (${ty})` : title\n}\n\nfunction get_runtime() {\n const rt_min = aboveTheFoldData.runtime?.seconds / 60\n return rt_min ? rt_min > 60 ? `${Math.floor(rt_min / 60)} hr ${rt_min % 60} min (${rt_min} min)` : `${rt_min} min` : ''\n}\n\nfunction get_release_date() {\n const rd = mainColumnData.releaseDate\n if (rd && rd.year && rd.month && rd.day)\n return new Date(rd.year, rd.month - 1, rd.day).toLocaleDateString(navigator.language, { year: 'numeric', month: 'short', day: '2-digit' }) + (rd.country ? ` (${rd.country.id})` : '')\n}\n\nfunction get_rating(limit) {\n const rs = aboveTheFoldData.ratingsSummary\n const tr = mainColumnData.ratingsSummary.topRanking\n const top = tr?.rank <= limit ? `Top Rated ${aboveTheFoldData.titleType.text.replace(/^Movie$/, 'Movies')}: #${tr.rank.toLocaleString()}` : ''\n return rs.aggregateRating ? [ `<b>⭐</b> ${Number(rs.aggregateRating).toFixed(1)} (${rs.voteCount?.toLocaleString()})`, top ].filter(Boolean).join(' · ') : ''\n}\n\nfunction get_principal_credits() {\n const attributes = n => n ? ` <span style=\"color: silver;\">(${n.map(a => a.text).join(', ')})</span>` : ''\n const name = n => n.name.nameText.text + attributes(n.attributes)\n const category = n => `<b>${n.category.text}:</b> ${n.credits.map(name).join(', ')}`\n return aboveTheFoldData.principalCredits?.filter(cr => cr.credits.length).map(category).filter(line => !line.startsWith('<b>Star')).join('\\n')\n}\n\nfunction get_top_cast(limit) {\n const attributes = n => n ? ` <span style=\"color: silver;\">(${n.map(a => a.text).join(', ')})</span>` : ''\n const characters = n => n ? ` (${n.map(c => c.node.name).join(', ')})` : ''\n const cast_line = n => n.name.nameText.text + characters(n.creditedRoles?.edges?.[0]?.node?.characters?.edges) + attributes(n.creditedRoles?.edges?.[0]?.node?.attributes)\n return mainColumnData.castV2?.[0]?.credits.slice(0, limit).map(cast_line).join('\\n')\n}\n\nfunction get_top_cast_old(limit) {\n const attributes = n => n ? ` <span style=\"color: silver;\">(${n.map(a => a.text).join(', ')})</span>` : ''\n const characters = n => n ? ` (${n.map(c => c.name).join(', ')})` : ''\n const cast_line = n => n.node.name.nameText.text + characters(n.node.characters) + attributes(n.node.attributes)\n return mainColumnData.cast?.edges.slice(0, limit).map(cast_line).join('\\n')\n}\n\nfunction get_awards() {\n const wins = mainColumnData.wins\n const noms = mainColumnData.nominationsExcludeWins\n const sum = mainColumnData.prestigiousAwardSummary\n let all = ''\n let prestigious = ''\n if (sum?.wins > 0) prestigious += `Won ${sum.wins} ${sum.award.text}${sum.wins > 1 ? 's' : ''}`\n if (sum?.nominations > 0 && !sum?.wins) prestigious += `Nominated for ${sum.nominations} ${sum.award.text}${sum.nominations > 1 ? 's' : ''}`\n if (wins.total > 0) all += `${wins.total} win${wins.total > 1 ? 's' : ''}${noms.total ? ' & ' : ''}`\n if (noms.total > 0) all += `${noms.total} nomination${noms.total > 1 ? 's' : ''}`\n return prestigious ? `${prestigious} (${all} total)` : all\n}\n\nfunction get_money() {\n const pb = mainColumnData.productionBudget?.budget\n const us = mainColumnData.lifetimeGross?.total\n const ww = mainColumnData.worldwideGross?.total\n const to_string = n => n?.amount ? n.amount.toLocaleString('en-US', { style: 'currency', currency: n.currency, minimumFractionDigits: 0 }) : ''\n return [\n [ 'Budget', pb ? to_string(pb) + ' (estimated)' : '' ],\n [ 'US & Canada Box Office', to_string(us) ],\n [ 'International Box Office', to_string({ amount: ww?.amount - us?.amount, currency: 'USD' }) ],\n [ 'Worldwide Box Office', us?.amount !== ww?.amount ? to_string(ww) : '' ]\n ].flatMap(item => item[1] ? item.join(': ') : []).join('\\n')\n}\n\n// this.TRG is null when the mouse pointer moved away from the TRG element before loading has been completed\nif (this.TRG === null) return\n\nconst svg = {\n make: (v, d) => 'data:image/svg+xml,' + encodeURIComponent(`<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"360\" height=\"480\" viewBox=\"${v}\" style=\"background-color: #2a2a2a;\" fill=\"#404040\">${svg[d]}</svg>`),\n gallery: '<path d=\"M22 16V4c0-1.1-.9-2-2-2H8c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2zm-10.6-3.47l1.63 2.18 2.58-3.22a.5.5 0 0 1 .78 0l2.96 3.7c.26.33.03.81-.39.81H9a.5.5 0 0 1-.4-.8l2-2.67c.2-.26.6-.26.8 0zM2 7v13c0 1.1.9 2 2 2h13c.55 0 1-.45 1-1s-.45-1-1-1H5c-.55 0-1-.45-1-1V7c0-.55-.45-1-1-1s-1 .45-1 1z\"/>',\n game: '<path d=\"M21 6H3c-1.1 0-2 .9-2 2v8c0 1.1.9 2 2 2h18c1.1 0 2-.9 2-2V8c0-1.1-.9-2-2-2zm-11 7H8v2c0 .55-.45 1-1 1s-1-.45-1-1v-2H4c-.55 0-1-.45-1-1s.45-1 1-1h2V9c0-.55.45-1 1-1s1 .45 1 1v2h2c.55 0 1 .45 1 1s-.45 1-1 1zm5.5 2c-.83 0-1.5-.67-1.5-1.5s.67-1.5 1.5-1.5 1.5.67 1.5 1.5-.67 1.5-1.5 1.5zm4-3c-.83 0-1.5-.67-1.5-1.5S18.67 9 19.5 9s1.5.67 1.5 1.5-.67 1.5-1.5 1.5z\"/>',\n movie: '<path d=\"M18 4v1h-2V4c0-.55-.45-1-1-1H9c-.55 0-1 .45-1 1v1H6V4c0-.55-.45-1-1-1s-1 .45-1 1v16c0 .55.45 1 1 1s1-.45 1-1v-1h2v1c0 .55.45 1 1 1h6c.55 0 1-.45 1-1v-1h2v1c0 .55.45 1 1 1s1-.45 1-1V4c0-.55-.45-1-1-1s-1 .45-1 1zM8 17H6v-2h2v2zm0-4H6v-2h2v2zm0-4H6V7h2v2zm10 8h-2v-2h2v2zm0-4h-2v-2h2v2zm0-4h-2V7h2v2z\"/>',\n music: '<path d=\"M21 3H3c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h18c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-1 16H4c-.55 0-1-.45-1-1V6c0-.55.45-1 1-1h16c.55 0 1 .45 1 1v12c0 .55-.45 1-1 1zM8.05 15.54A2.995 2.995 0 0 1 11 12c.35 0 .69.07 1 .18V8c0-1.1.9-2 2-2h2c.55 0 1 .45 1 1s-.45 1-1 1h-2v7.03a3.001 3.001 0 0 1-3.55 2.92c-1.21-.21-2.2-1.2-2.4-2.41z\"/>',\n podcast: '<path d=\"M12 14c1.66 0 3-1.34 3-3V5c0-1.66-1.34-3-3-3S9 3.34 9 5v6c0 1.66 1.34 3 3 3zm5.91-3c-.49 0-.9.36-.98.85C16.52 14.2 14.47 16 12 16s-4.52-1.8-4.93-4.15a.998.998 0 0 0-.98-.85c-.61 0-1.09.54-1 1.14.49 3 2.89 5.35 5.91 5.78V20c0 .55.45 1 1 1s1-.45 1-1v-2.08a6.993 6.993 0 0 0 5.91-5.78c.1-.6-.39-1.14-1-1.14z\"/>',\n tv: '<path d=\"M21 3H3c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h5v1c0 .55.45 1 1 1h6c.55 0 1-.45 1-1v-1h5c1.1 0 1.99-.9 1.99-2L23 5a2 2 0 0 0-2-2zm-1 14H4c-.55 0-1-.45-1-1V6c0-.55.45-1 1-1h16c.55 0 1 .45 1 1v10c0 .55-.45 1-1 1z\"/>'\n}\n\nconst pageProps = JSON.parse($._.match(/NEXT_DATA[^{]+([^<]+)/)[1]).props.pageProps\nconst aboveTheFoldData = pageProps.aboveTheFoldData\nconst mainColumnData = pageProps.mainColumnData\nconst title = aboveTheFoldData.titleText.text\nconst original_title = aboveTheFoldData.originalTitleText.text\nconst countries = mainColumnData.countriesDetails?.countries.map(country => country.text).join(', ')\nconst certificate = aboveTheFoldData.certificate?.rating\nconst episodes = mainColumnData.episodes?.totalEpisodes.total\nconst genres = aboveTheFoldData.genres?.genres.map(genre => genre.text).join(', ')\nconst plot = aboveTheFoldData.plot?.plotText?.plainText\nconst companies = mainColumnData.production.edges.map(edge => edge.node.company.companyText.text).join(', ')\n\nconst sidebar_html = [\n `<span style=\"font-size: 120%; font-weight: bold;\">${get_header()}</span>`,\n title !== original_title ? 'Original title: ' + original_title : '',\n countries,\n [ get_runtime(), episodes ? `${episodes} eps` : '', get_release_date() ].filter(Boolean).join(' · '),\n [ genres, certificate ].filter(Boolean).join(' · '),\n get_rating(1000),\n [ '\\n<b>Plot</b>', plot ],\n [ '', get_principal_credits() ],\n [ '\\n<b>Top cast</b>', get_top_cast(12) || get_top_cast_old(12) ],\n [ '\\n<b>Awards</b>', get_awards() ],\n [ '\\n<b>Production companies</b>', companies ],\n [ '\\n<b>Financials</b>', get_money() ]\n].filter(i => i?.[1]).flat().join('\\n')\n\nconst res = get_images()\nres[0][1] = `<imagus-extension type=\"sidebar\">${sidebar_html}</imagus-extension>${res[0][1]}`\nthis.TRG.IMGS_ext_data = res\n\nreturn 'imagus://extension'", "img": "^((?:(?:images\\.|(?:images-[a-z]{2}\\.ssl-|(?![gz]-)[^.?]+\\.)images-)amazon|ia\\.media-imdb|m\\.media-amazon)\\.com/images/[^/]/[^.]+(?:(?!\\.[A-Za-z]{3,4}$)\\.[^A-Z_.]+)*)(?:$|(?!_(?:CB|V)\\d{4,}_\\.)[^?]*\\.([^?]*).*)", "to": ":\nvar x=$[2]||'#jpg png#'\nreturn '#' + $[1] + '.' + x +'\\n'+$[1] + '._SY1024_SX1024_.'+x", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/1nvo2nc/comment/nhc6w3p\nOLD\nhttps://www.reddit.com/r/imagus/comments/1k8n0ul/comment/mp9uw3d\nhttps://www.reddit.com/r/imagus/comments/1envbxc/comment/ljijl6u\n\n\n\n\n!!!\nИмеется поддержка внешних ссылок с информационной панелью (сайдбар).\nЧтобы фильтр работал правильно, необходимо отключить пункт «Показывать просмотр ссылок с полным составом и командой (расширенный просмотр)» в настройках аккаунта IMDB.\n==\nThere is support for external links with a dashboard (sidebar).\nIn order for the sieve to work properly, you need to disable the item \"Show reference view with full cast and crew (advanced view)\" in IMDB's account settings.\n\n\nПРИМЕРЫ / EXAMPLES\nhttps://www.imdb.com/name/nm0027572/\nhttps://www.imdb.com/title/tt23734948\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3880#16" }, "IMDb_mediaindex": { "link": "^(?:m\\.)?imdb\\.com/(name|title)/(\\w+)/media(?:index|viewer).*", "url": "data:,$&", "res": ":\nconst max_images = 300 // Number of images in album. Lower number loads faster\n\nconst x=new XMLHttpRequest(), n=$[1][0].toUpperCase()+$[1].slice(1), h=$[1][0]==='t'?'f7054d744c51606eaad899709122adec9777a7f362b38cc07dd7ea8fe5c87cf1':'4223ddf53fc6196821daf52d9ce5bb3080cae25db60f76bb8fd4ff7bd1ff94ce';\nx.open('GET',`https://api.graphql.imdb.com/?operationName=${n}Images&variables=%7B%22first%22%3A${max_images}%2C%22firstYes%22%3Atrue%2C%22id%22%3A%22${$[2]}%22%2C%22lastYes%22%3Afalse%7D&extensions=%7B%22persistedQuery%22%3A%7B%22sha256Hash%22%3A%22${h}%22%2C%22version%22%3A1%7D%7D`,false);\nx.setRequestHeader('Content-type','application/json');\nx.send();\n$=JSON.parse(x.responseText).data?.[$[1]]?.images?.edges||[];\nreturn $.map(i=>[i.node?.url?.replace(/\\._.*/,''),i.node?.caption?.plainText||''])", "useimg": 1, "img": "^((?:(?:images\\.|(?:images-[a-z]{2}\\.ssl-|(?![gz]-)[^.?]+\\.)images-)amazon|ia\\.media-imdb|m\\.media-amazon)\\.com/images/[^/]/[^.]+(?:(?!\\.[A-Za-z]{3,4}$)\\.[^A-Z_.]+)*)(?:$|(?!_(?:CB|V)\\d{4,}_\\.)[^?]*\\.([^?]*).*)", "to": ":\nvar x=$[2]||'#jpg png#'\nreturn '#' + $[1] + '.' + x +'\\n'+$[1] + '._SY1024_SX1024_.'+x", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/o02xa64\n\nOLD\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/lz7t0u7\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/lfsjoo1\n\n\n!!!\nThere is an option to reduce the load on the browser (Lower number loads faster)\nconst max_images = 300\n+\nIn order for the sieve to work correctly in MediaViewer, you need to install the uBO (uBlock Origin) extension:\nIn uBO Settings -> My Filters -> Add this line:\nimdb.com##.hvKTwD.sc-c7067688-4\n\n\nПРИМЕРЫ / EXAMPLES\n\"99+ photos\" button + \"Photos\" section\nhttps://www.imdb.com/name/nm0027572/\nhttps://www.imdb.com/title/tt21357150/" }, "IMDb_Video": { "link": "^imdb\\.com/(?:video/vi\\d+|(title/tt|name/nm)\\d+/videogallery[?/])", "res": ":\nconst num = n => parseInt(n?.displayName?.value)||0;\n\nif(!$[1])return [getVid($._)];\n\nconst that = this, links = [...$._.matchAll(/data-testid=\"videos-slate-card-title-\\d+\" href=\"([^\"]+)/g)].map(i => 'https://www.imdb.com' + i[1]);\n\nfunction getVid(text) {\n let t, m, o = text.match(/\"__NEXT_DATA__\" type=\"application\\/json\">({.+?})<\\/script/)?.[1];\n o = o&&JSON.parse(o).props?.pageProps?.videoPlaybackData?.video;\n t = o?.description?.value||'';\n m = o?.playbackURLs?.filter(i => i.videoMimeType === 'MP4').sort((a, b) => num(b) - num(a)) || '';\n return [['#' + m[0]?.url, m[Math.floor(m.length / 2)]?.url], t];\n}\n\nconst getLinkVid = url => new Promise(resolve => {\n const x = new XMLHttpRequest();\n x.open('GET', url);\n x.onload = () => resolve(getVid(x.responseText));\n x.send();\n})\n\nPromise.all(links.map(getLinkVid)).then(album=>{\n that.TRG.IMGS_album = $[0];\n that.stack[$[0]] = album;\n that.stack[$[0]].unshift(1);\n that.album(0);\n});\nreturn null", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/1envbxc/comment/muojztw\nOLD\nhttps://www.reddit.com/r/imagus/comments/1envbxc/comment/lkbhioc\n\n!!!\nНаведение курсора на кнопку (ссылку) \"... videos\" показывает альбом из видео. При этом вначале ненадолго появляется желтый спиннер, это нормально.\nHovering over \"... videos\" button should show an album of videos. A yellow spinner appears briefly at first, this is normal.\n\n\nПРИМЕРЫ / EXAMPLES\nhttps://www.imdb.com/title/tt3748528/\nhttps://www.imdb.com/name/nm0027572/\nhttps://www.imdb.com/name/nm0027572/videogallery/" }, "imgBB|ibb.co-h-p": { "link": "^(i(?:bb\\.co|mgbb\\.com)/\\w{6,8}).*", "url": "$1", "res": "=\"og:image\" content=\"([^\"]+)\n=\"og:title\" content=\"([^\"]+)", "img": "^i(?:mage)?\\.(i(?:bb\\.co|mgbb\\.com)/\\w+).*", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/meemqb2\n\nПРИМЕРЫ / EXAMPLES\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1360#11" }, "imgbox-h": { "link": "^(imgbox\\.com/(?!privacy|register)(g/)?[^/.]{6,10})$", "res": ":\nif(!$[2])return $._.match(/href=\"([^\"?]+)\\?download/)[1]\nvar t = $._.match(/<h1>([^<]+)/), r = $._.match(/ b\" src=\"https:\\/\\/thumbs[^\"]+/g).map(function(i) {\n return [i.slice(9).replace(/thumb(s\\d\\.)/, 'image$1').replace(/_\\w\\./, '_o.')]\n})\nr[0][1] = t&&t[1]\nreturn r", "img": "^(?:(?:hcd-\\d|t\\d*|(?:\\d[.-])?[ist]|thumb(s\\d*))\\.)(imgbox\\.com/[^._]+)[^.]*", "to": ":\nreturn $[1]?'image'+$[1]+'.'+$[2]+'_o':'i.'+$[2]", "note": "EXAMPLES\nhttps://www.reddit.com/domain/imgbox.com/new/\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1360#11" }, "ImgChest-h": { "link": "^imgchest\\.com/p/[a-z0-9]+", "res": ":\n$=new DOMParser().parseFromString($._,'text/html')?.getElementById('app')?.getAttribute('data-page');\n$=$&&JSON.parse($).props?.post?.files;\nreturn $?$.map(i=>[i.link,i.description||'']):''", "note": "imqswt\nhttps://www.reddit.com/r/imagus/comments/1gu4jgc/comment/lxtnu0x\nOLD\nhttps://www.reddit.com/r/imagus/comments/1axu5jc/comment/krwpxgs\nhttps://www.reddit.com/r/imagus/comments/130svfu/comment/ju44i2m\n\nEXAMPLES\nhttps://imgchest.com/u/moods\nhttps://www.reddit.com/r/Playboy_Albums/comments/16opa9g/comment/k1m04qz\nhttps://www.reddit.com/domain/imgchest.com/new/\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1360#11" }, "Imgflip-h": { "link": "^(imgflip\\.com/)(?:i|gif)/([^?#]+)", "img": "^i\\.(imgflip\\.com/)2/([^.]+).+", "to": "//i.$1$2.#jpg gif#", "note": "EXAMPLES\nhttps://www.reddit.com/domain/imgflip.com/new/" }, "ImgHost.pl-h": { "useimg": 1, "link": "imghost\\.pl/(?:index.php)?\\?id=([a-z0-9]+)", "img": "imghost\\.pl/thumbs/([^.]+)\\.([a-z]+)", "to": ":\nreturn 'https://www.imghost.pl/images/'+$[1]+'.#'+($[2]?$[2]:'jpg gif png jpeg')+'#'", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/130svfu/comment/jn8v5j7\n\n!!!\nНеобходимо правило для SMH (см.ЧаВо, п.12).\n==\nNeed a rule for SMH (see FAQ, p.12).\n\n\nEXAMPLES\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1360#11" }, "Imginn-p": { "link": "^img(?:inn|sed)\\.com/p/[\\w-]+/", "url": "data:,$&", "res": ":\nconst isFirefox = /Firefox/.test(navigator.userAgent);\nconst x = isFirefox ? new content.XMLHttpRequest() : new XMLHttpRequest();\nx.open('GET',$[0],false);\nx.send();\n$._ = x.responseText;\n\nlet parser = new DOMParser();\nlet doc = parser.parseFromString($._, \"text/html\");\nlet res = [];\nif (doc.getElementsByClassName('swiper-slide').length > 0) {\n[...doc.getElementsByClassName('swiper-slide')].forEach(elem => {\nres.push([elem.getAttribute('data-src')])\n})\n} else {\nres.push([doc.querySelector('.downloads a').href])\n}\nreturn res;", "to": "\n\n", "note": "TMCKP420BC\nhttps://www.reddit.com/r/imagus/comments/1mhrk3w/imginn_not_working/\nOLD\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/n2vevin\nhttps://www.reddit.com/r/imagus/comments/1abomvc/new_imginn_sieve_old_one_doesnt_work/\n\n\n!!!\n- Для работы фильтра на внешних ссылках необходимо правило для SMH (см.ЧаВо, п.12).\n- Для получения фото в разрешении 1440x - нужно навести курсор на \"Download\".\n==\n- For the sieve to work on external links, you need a rule for SMH (see FAQ, p.12).\n- To get a photo in 1440x resolution, you need to hover over “Download”.\n\nПРИМЕРЫ / EXAMPLES\nhttps://imginn.com/aleranaofficial\nhttps://imgsed.com/therealap01\nhttps://imginn.com/dianapenty" }, "Imglink.ru-h": { "link": "^imglink\\.ru/show-image.php\\?id=(\\w+)$", "res": "<img src='(https?://imglink\\.ru/pictures/[^']+)' alt='", "img": "^imglink\\.ru/thumbnails/(.+)$", "to": "imglink.ru/pictures/$1", "note": "Rodny + by Baton34V (fix)\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=2720#15\n\nПРИМЕРЫ\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1360#11" }, "Imgpile-h": { "link": "^imgpile\\.com/[imp]/[A-Za-z0-9]+", "res": ":\nlet n,o=this.imgpile_album,m=[...$._.matchAll(/(?:source |data-)src=\"([^\"]+)/g)].map(i=>[i[1]]),t=[$._.match(/\"post-title text-light\"[^>]+>([^<]+)/)?.[1],$._.match(/\"fas fa-calendar-alt\"><\\/i>\\n\\s+<span class=\"meta-value\">([^<]+)/s)?.[1],$._.match(/\"post-description\"[^>]+>([^<]+)/)?.[1]].filter(Boolean).join(' | ');\ndelete this.imgpile_album;\nif(!o&&t&&m[0])m[0][1]=t;\nif(o)m.unshift(...o);\nif(n=$._.match(/href=\"([^\"]+)\"\\s+rel=\"next\"/)?.[1]){\nthis.imgpile_album=m;\nreturn {loop:n};\n}\nreturn m", "img": "^(cdn\\.(imgpile\\.com)/f/[^/\\._]+)(\\w+)(\\..+)", "loop": 2, "to": ":\nlet n=this.node.closest('div[data-href]')?.getAttribute('data-href');\nreturn n ? $[2]+n : $[1]+($[3]==='_thumb'?'_lg.mp4':$[4])", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/maw8hcy\n\nEXAMPLES\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1360#11" }, "ImgSpice-h-x": { "link": "^imgspice\\.com/[a-z0-9]+/[\\w-]+\\.[a-z]{3,4}\\.html$", "res": ":\nlet meta = document.querySelector('head > meta[name=\"referrer\"]');\nif (!meta) {\n meta = document.createElement('meta');\n meta.name = 'referrer';\n meta.content = 'same-origin';\n document.getElementsByTagName('head')[0].appendChild(meta);\n} else if (meta.attributes.content.value !== 'same-origin') {\n meta.attributes.content.value = 'same-origin';\n}\nlet url = ($._.match(/<img id=\"imgpreview\" src=\"([^\"]+)\"/) || [])[1];\nreturn [url];\n", "note": "imqswt\nhttps://www.reddit.com/r/imagus/comments/130svfu/comment/k0jqmfs\nOLD\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3740#4\n\n\nEXAMPLES\n???" }, "iMGSRC.ru-h": { "useimg": 1, "link": "^imgsrc\\.ru/([^/]+/)(\\d+)\\.html.*", "url": "//imgsrc.ru/$1$2.html", "res": "id='big-pic-jpeg' srcset='([^']+)", "img": "^\\w+\\.\\w+\\.icdn\\.ru/\\w/(\\w+/)\\w+/(?:imgsrc\\.ru_)?(\\d+).*", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/n5e9jew\nOLD\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/lmkqkl2\nhttps://www.reddit.com/r/imagus/comments/130svfu/comment/kd6jo2n\n\n\nПРИМЕРЫ\nhttps://imgsrc.ru/9174337478/69365420.html\nhttps://imgsrc.ru/akhodov/69280263.html?pwd=&per_page=36\nhttps://imgsrc.ru/alex_1910/61880321.html#bp" }, "imgth-h": { "link": "^imgth\\.com/(?:gallery|view)/\\d+/.+", "res": ":\nconst re =  /(?:class=\"thumbnail\"\\n<)?img(?: class=\"thumbnail\")? src=\"(?<img>[^\"]+)/g\nreturn [...$._.matchAll(re)].map(m => [m.groups.img.replace(\"thumbs\", \"images\"), \"\"]);\n", "note": "gpl2731\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=2740#21\n\nEXAMPLES\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1360#11" }, "IMGUR-h": { "link": "^(?:[im]\\.())?(imgur\\.com|filmot\\.(?:com|org))/+(?!gallery|s(?:tats|ignin|earch)|tools|topic|random|logout|account|inbox|about|contact|privacy|memegen|collab)(?:g/[^/]+/)?([^\\W_]{5}(?:[^\\W_]{2})?)[sbtmlh]?(?![,&])(?:[?/#].*)?$", "img": "^(?:[im]\\.([^.]+\\.)?)?(imgur\\.com|filmot\\.(?:com|org))/+([^\\W_]{5}(?:[^\\W_]{2})?)(?:[sbtmlh]|_[^.]+)?\\.(jpe?g|png|gifv?|mp4|webm).*", "to": ":\nvar l = ($[2][0]=='i' ? '//' : '')+'i.'+($[1]||'')+$[2]+'/'+$[3];\nvar res='';\nif ($[4]) {\n res= l+'.'+$[4].replace('gifv','mp4');\n}\nelse {\n res= l + '.mp4\\n'+ l + '.gif\\n' + l + 'h.jpg';\n}\nlet meta = document.querySelector('head > meta[name=\"referrer\"]');\nif (!meta) {\n meta = document.createElement('meta');\n meta.name = 'referrer';\n meta.content = 'same-origin';\n document.getElementsByTagName('head')[0].appendChild(meta);\n} else if (meta.attributes.content.value !== 'same-origin') {\n meta.attributes.content.value = 'same-origin';\n}\nreturn res;", "note": "Baton34V\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3720#10\nOLD\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3200#6\n\n!!!\nКурсор в некоторых случаях нужно наводить на название (особенно это касается альбомов с несколькими изображениями/видео).\n==\nThe cursor needs to be hovered over the title in some cases (especially for albums with multiple images/videos).\n\n\nПРИМЕРЫ / EXAMPLES\nhttps://www.reddit.com/domain/imgur.com/new\nhttps://imgur.com/t/video\nhttps://imgur.com/t/panko\nhttps://imgur.com/gallery/photo-of-dog-panko-every-day-NEm3hRU#/t/panko\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3720#3" }, "IMGUR-set-h": { "link": "^(?:(?:[im]\\.)?(?:imgur\\.(?:com|io)|filmot\\.(?:com|org))/+(?:(?:(a|gallery(?!/random|/custom)|t(?:opic)?/[^/]+)|r/[^/]+)/(?:[^-/]+-)*([^\\W_]{5}(?:[^_\\W]{2})?)|(?:[^\\W_]{5}(?:[^\\W_]{2})?[,&])+[^_\\W]{5}(?:[^\\W_]{2})?)).*", "url": ": $[1] ? 'https://imgur.com/' + ($[1] == 'a' ? 'a/' + $[2] + '/embed' : $[1] + '/' + $[2] + '/hit.json') : $[0]", "res": ":\nvar ret = [], im, g, c, x, i, t, u, l = '//i.imgur.com/', p404='404 page';\n\ntry {\n if (typeof $._ == 'string' && $._[0]!='{') {\n if($._.lastIndexOf(p404, 300) > -1) throw true;\n x = $._.match(/(?:album|image)\\s*[:=] +([^\\n\\r]+),/);\n x = JSON.parse(x[1])\n t = this.t; delete this.t;\n if (!t&&'title' in x)t = x;\n x.album_images&&(x=x.album_images);\n x.images&&(x=x.images)||x.items&&(x=x.items);\n } else {\n $._=JSON.parse($._);\n if($._.album){\n x=$._.album\n t={title:x.title, description: x.description}\n x=x.images\n } else {\n x=$._.data.image\n if (x.is_album) {\n t={title:x.title, description: x.description}\n if (x.album_images.count != x.album_images.images.length) {\n this.t=t\n return {loop: l+'a/'+$[2]}\n }\n x=x.album_images.images\n }\n }\n delete this.t;\n }\n\n if (!x)throw $._.lastIndexOf(p404, 300) > -1;\n\n t = t && [t.title, t.description].filter(Boolean).join(' - ') || !1\n x = Array.isArray(x)?x:[x]\n for (i = 0; i < x.length; ++i) {\n im = x[i].image||x[i];\n c = [im.title, im.caption, im.description].filter(Boolean).join(' - ');\n if (!i && t && t!=c) c='['+t+'] ' + c;\n im.ext = im.ext || x[i].links.original.match(/\\.[^.]+$/)[0];\n g = (''+im.animated)=='true'\n u = l + im.hash;\n ret.push([!g && im.width <= 1200 && im.height <= 1200 ? u + im.ext : (g ? [u + '.mp4', u + '.gif'] : ['#' + u + im.ext, u + 'h' + im.ext]), c]);\n }\n} catch (ex) {}\nreturn ret.length ? ret : null", "img": "^i\\.imgur\\.com/\\w+\\.webp\\?maxwidth=\\d+&shape=thumb&fidelity=[a-z]+$", "loop": 2, "to": ":\nreturn location.hostname.indexOf('imgur.') > -1 && this.node.closest('a[class^=\"Post-item \"]')?.href || $[0]", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/1css7u6/comment/l4af3tq\n\n\n!!!\nКурсор в некоторых случаях нужно наводить на название (особенно это касается альбомов с несколькими изображениями/видео).\n==\nThe cursor needs to be hovered over the title in some cases (especially for albums with multiple images/videos).\n\n\nПРИМЕРЫ / EXAMPLES\nhttps://imgur.com/t/panko\nhttps://imgur.com/t/video\nhttps://www.reddit.com/domain/imgur.com/new\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3720#3" }, "IMGUR.io_redirect-h": { "link": "^imgur\\.io/(\\w+(?:(?:\\?\\w+)|(?:/\\w+(?:\\.\\w+)?))?)", "loop": 1, "to": "https://imgur.com/$1", "note": "Baton34V\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1720#19\n\nПРИМЕРЫ / EXAMPLES\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1700#10" }, "IMHentai-x-p": { "link": "^imhentai\\.xxx/gallery/\\d+/$", "res": ":\nconst f=this.find, u=$._.match(/data-src=\"(https:\\/\\/(?:[^\\/]+\\/)+)1(t\\.[^\"]+)/), n=parseInt($._.match(/
  • Pages:\\s*(\\d+)/)?.[1]||0)\nif(!u||!n)return this.node.src?{loop:this.node.src.replace('thumb','1t')}:''\n$=[]\nfor(i=1;i<=n;i++)$.push([f({src: u[1]+i+u[2]})])\nreturn $", "img": "^(m\\d*\\.imhentai\\.xxx/\\d+/\\w+/\\d+)t(?:\\.\\w+)", "to": "$1#.jpg .webp .png .gif#", "note": "imqswt\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/nq0br7r\nOLD\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/kjxz6dc\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=400#13\n\n\nПРИМЕРЫ / EXAMPLES\nhttps://imhentai.xxx/tag/3d/\nhttps://imhentai.xxx/search/?key=asuka\nhttps://imhentai.xxx/character/nami/\nhttps://imhentai.xxx/artist/100wang/" }, "imx.to-h-x": { "link": "^(imx\\.to/)i(/\\w+)", "url": "$1i$2 :imgContinue=", "res": "=\"centred\" src=\"([^\"]+)\"(?:\\salt=\"([^\"]+))?", "img": "^(?:t\\.)?(imx\\.to/)(?:u/)?t/\\d+/\\d\\d/\\d\\d(/\\w+).*", "note": "EXAMPLES\nhttps://www.reddit.com/domain/imx.to/new/\nhttps://vipergirls.to/threads/6010551-Riya-Lime-Green-100-Photos-Apr-03-2021?p=81831177&viewfull=1#post81831177" }, "iNaturalist-q": { "link": "^(inaturalist\\.org/)(observations/\\d+).*", "url": "https://api.$1v1/$2", "res": ":\nconst lower_quality_first = false // True displays lower quality image first. Show full size with image TAB\nconst hide_quality_message = false // True hides caption message about quality switch\n\nvar data = JSON.parse($._), l = cfg.hz.hiRes&&lower_quality_first, m = hide_quality_message;\nreturn data.results[0].observation_photos.map(v=>[[(l?'':'#')+v.photo.url.replace(/square(\\.\\w+)$/,'original$1'), (l?'#':'')+v.photo.url.replace(/square(\\.\\w+)$/,'large$1')], v.photo.attribution+(l&&!m?' | Press TAB to switch to full size image':'')]);", "img": "^((?:inaturalist-open-data\\.s\\d\\.amazonaws\\.com|static\\.inaturalist\\.org)/photos/\\d+/)\\w+", "to": "#$1original\n$1large\n", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/1n5bwej/comment/nh5gyuz\nOLD\nhttps://www.reddit.com/r/imagus/comments/1n5bwej/inaturalist_observations_sieve/\n\n!!!\nThe sieve allows you to switch the image quality (only in galleries):\nconst lower_quality_first = false / true\nAlso, the quality can be switched using the hotkey - TAB.\n\nEXAMPLES\nhttps://www.inaturalist.org/observations\nhttps://www.inaturalist.org/observations?captive=false&photos&subview=table&iconic_taxa=Aves" }, "Inkbunny-x-p": { "link": "^(inkbunny\\.net)\\/s\\/\\d+", "url": ": (location.hostname===$[1]?'data:,':'')+$[0]", "res": ":\n\nlet highdefinition = true;\n\nlet debug = false;\n\nif($.base.startsWith('data:')){\nconst x=new XMLHttpRequest();\nx.open('GET',$[0],false);\nx.send();\n$._=x.responseText;\n}\n\nlet singleitemmatch=$._.match(/submission-standarddefURL.*?(https:\\/\\/\\w\\w\\.ib\\.metapix\\.net\\/files\\/screen\\/\\d+\\/\\d+[^'\\\"]*?)['\\\"]/);\nlet galleryitemsiterator=$._.matchAll(//);\n if(generalthumbmatch != null) {\n if(debug) console.log(\"General Thumbnail Media Context.\");\n let generalthumblink = generalthumbmatch[1];\n\n returnval = [\n [generalthumblink, toptext]\n ];\n return returnval;\n }\n \n console.error(\"No known media context found.\")\n return;\n}\n\n\nlet singleimagelink = singleitemmatch[1];\n\n//Split cases where gallery thumbnails are found or default to a single item\nif(galleryitemsmatch.length == 0) {\n //No gallery found, transform URL and display based on high def preference and return\n if(debug) console.log(\"Standard Image Media Context.\");\n\n if(highdefinition) {\n singleimagelink = singleimagelink.replace(\"/screen/\", \"/full/\");\n }\n\n returnval = [\n [singleimagelink, toptext]\n ];\n}\nelse {\n if(debug) console.log(\"Gallery Media Context.\");\n\n returnval = [];\n\n //Probe for filetypes in main image to guess gallery image filetypes\n let filetype = singleimagelink.match(/(.(jpg|jpeg|png|webp|gif))/)[1];\n\n let replaceurltext = highdefinition ? \"/files/full/\" : \"/files/screen/\";\n for(let i=0; i [ use_60fps_video&&i.video_dash_manifest.match(/(?:frameRate=[^\"]*\"60[^\"]*\"\\s+ sar=|-hfr_).+?([^<]+)/)?.[1] || i.video_versions?.[0].url || i.image_versions2.candidates[0].url, capt ]\n\nreturn item.carousel_media?.map((e) => res(e)) || res(item)", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/18j8q59/comment/ki416os\nOLD\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=2140#8\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1520#20\n\n\n!!!\nВся информация о возможностях и особенностях фильтров для Инстаграм, а также о представленных в них опциях: см. Чаво, п.20.\n==\nAll information about the capabilities and features of the sieve, and also about the options presented in it: see FAQ, p.20.\n\n\nПРИМЕРЫ / EXAMPLES\n(внешние ссылки / external links):\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=200#19" }, "INSTAGRAM_graphql_pub-p": { "off": 1, "link": "^(?:(?:i\\.)?instagr(?:\\.am|am\\.com))\\/([\\w.-]+\\/)?(?:tv\\/|p\\/|reel\\/){1,2}([^\\/?#]+).*", "url": ": (()=>{var disable_on_timestamps = false ; if(disable_on_timestamps&&(this.node.className===\"x1i10hfl xjbqb8w x6umtig x1b1mbwd xaqea5y xav7gou x9f619 x1ypdohk xt0psk2 xe8uvvx xdj266r x11i5rnm xat24cr x1mh8g0r xexx8yu x4uap5 x18d9i69 xkhd6sd x16tdsg8 x1hl2dhg xggy1nq x1a2a7pz _a9zg _a6hd\"|this.node.nodeName==='TIME'||this.node.nodeName==='SPAN'))throw '';return 'data:,'+$[2]})()", "res": ":\nconst use_sidebar = true\n\nlet id=$[2], token=location.hostname==='www.instagram.com'&&document.cookie.match(/csrftoken=([^;]+)/)?.[1], x=new XMLHttpRequest();\n// #instagram_header is added to URL to match SMH rules\nif(!token){\nx.open('GET',$[0]+'#instagram_header',false);\nx.send();\ntoken=x.responseText.match(/\"csrf_token\":\"([^\"]+)/)?.[1], id=$[1]==='share/' ? x.responseText.match(/\"shortcode\":\"([^\"]+)/)?.[1]||$[2] : $[2];\n}\nx.open('POST','https://www.instagram.com/graphql/query/#instagram_header',false);\nx.setRequestHeader('Content-Type','application/x-www-form-urlencoded');\nx.setRequestHeader('X-CSRFToken',token);\nx.send(`variables=%7B%22shortcode%22%3A%22${id}%22%7D&doc_id=8845758582119845`);\nvar i=JSON.parse(x.responseText).data.xdt_shortcode_media;\nvar f=i.user?.full_name||i.owner?.full_name;\nvar u=i.user?.username||i.owner?.username;\nvar t=new Date((i.taken_at||i.taken_at_timestamp)*1e3).toLocaleString('en-GB');\nvar c=i.caption ? i.caption.text : i.edge_media_to_caption?.edges[0]?.node?.text ? i.edge_media_to_caption.edges[0].node.text : '';\nc = [`@${u}`, `(${f})`, t, c].join(use_sidebar?'\\n':' | ');\nc = use_sidebar ? `${c}` : c;\nlet m;\nif (i.carousel_media) m = i.carousel_media.map(x => [x.video_versions ? x.video_versions[0].url : x.image_versions2.candidates[0].url, c])\nelse if (i.video_versions) m = [i.video_versions[0].url, c];\nelse if (i.edge_sidecar_to_children) m = i.edge_sidecar_to_children.edges.map(i=>[i.node?.video_url||i.node?.display_url, c])\nelse if (i.video_url||i.display_url) m = [i.video_url||i.display_url, c]\nelse m = [i.image_versions2.candidates[0].url, c]\nthis.CNT.filename = u + '_' + (Array.isArray(m[0])?m[0][0]:m[0]).match(/\\/([^\\/.]+\\.\\w{3,4})(?:$|\\?)/)?.[1].replace(/[^\\w.-]/g,'_')||''\nif(use_sidebar)this.TRG.IMGS_ext_data=m;\nreturn use_sidebar?{loop:'imagus://extension'}:m", "note": "illogikally + Imagus_fan (edit)\nhttps://www.reddit.com/r/imagus/comments/1knz9fu/comment/msrnds6\nOLD\nhttps://www.reddit.com/r/imagus/comments/1itydzt/comment/meb4jum\nhttps://www.reddit.com/r/imagus/comments/1gf2w7z/comment/lw1yyk8\n\n\n\n!!!\nВся информация о возможностях и особенностях фильтров для Инстаграм, а также о представленных в них опциях: см. Чаво, п.20.\n==\nAll information about the capabilities and features of the sieve, and also about the options presented in it: see FAQ, p.20.\n\n\nПРИМЕРЫ / EXAMPLES\n(внешние ссылки / external links)\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=200#19" }, "INSTAGRAM_html-q-p": { "link": "^instagram\\.com/(?:[\\w.]+/)?(?:p|reel)(/[\\w-]+).*", "url": ":(()=>{/*Reels pages have an overlay that interferes with Imagus working. There's code in this section that modifies a page element so Imagus can detect it.*/if(location.hostname!=='www.instagram.com')throw 'Sieve only works when on www.instagram.com';if(location.pathname.endsWith('/reels/')){const n=this.node,url=n.closest(`a[href*=\"/reel${$[1]}/\"]`)?.href;let el=url&&n.closest('._aajz')?.querySelector('ul[class=\"x6s0dn4 x972fbf x10w94by x1qhh985 x14e42zd x78zum5 xa5j0wu xln7xf2 xk390pu x5yr21d xl56j7k xdj266r x14z9mp xat24cr x1lziwak xexx8yu xyri2b x18d9i69 x1c1uobl x11njtxf xh8yej3\"]');if(el)el.outerHTML=el.outerHTML.replace(/^/,``)};return 'data:,'+$[1]})()", "res": ":\nconst lower_quality_first = false\n\nconst xhr = new XMLHttpRequest()\nxhr.open('GET', `https://www.instagram.com/p${$[1]}/`, false)\nxhr.setRequestHeader('Accept', 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8')\nxhr.send()\nconst item = JSON.parse(xhr.responseText.match(/xdt_api__v1__media__shortcode__web_info\":(.+)},\"extensions/)[1]).items[0]\nconst l = cfg.hz.hiRes&&lower_quality_first\nlet user = item.user.username, media = item.carousel_media?.[0]||item\nmedia = item.video_versions?.[0]?.url || item.image_versions2?.candidates?.[0]?.url\nthis.CNT.filename = (user + ' - ' + item.caption?.text?.match(/(?:\\S+\\s?){1,5}/)?.[0].trim()).replace(/[<>:\"\\/|\\\\?*]/g,'_')\nconst capt = [\n `@${item.user.username}${item.user.full_name ? ` (${item.user.full_name})` : ''}`,\n new Date(item.taken_at * 1000).toLocaleString(navigator.language, { dateStyle: 'medium', timeStyle: 'medium' }),\n item.caption?.text\n].filter(Boolean).join(' | ')\nconst res = (i) => [ i.video_versions?.[0].url || [(l?'':'#')+i.image_versions2.candidates[0].url, (l?'#':'')+i.image_versions2.candidates.toReversed().filter(i => i.height > 600 && i.height !== i.width)?.[0]?.url], capt ]\nreturn item.carousel_media?.map((e) => res(e)) || [res(item)]", "note": "64h + Imagus_fan (edit)\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/o4l3o7r\nOLD\nhttps://www.reddit.com/r/imagus/comments/1ojd19e/comment/nm25m2s\nhttps://www.reddit.com/r/imagus/comments/1nveb0s/comment/nhb6juz\n\n\n!!!\nВся информация о возможностях и особенностях фильтров для Инстаграм, а также о представленных в них опциях: см. Чаво, п.20.\n==\nAll information about the capabilities and features of the sieve, and also about the options presented in it: see FAQ, p.20.\n\n\nПРИМЕРЫ / EXAMPLES\nhttps://www.instagram.com/holy_exotic/reels/?hl=it\n(внешние ссылки / external links):\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=200#19" }, "INSTAGRAM_priv_api-p": { "off": 1, "link": "^instagr(?:am\\.com|\\.am)/(?:[\\w.]+/)?(?:p|reel)/([\\w-]+)(?:\\W|$)(?!\\?e=|liked_by|comments).*", "url": ": (()=>{var disable_on_timestamps = false ; if(disable_on_timestamps&&(this.node.className===\"x1i10hfl xjbqb8w x6umtig x1b1mbwd xaqea5y xav7gou x9f619 x1ypdohk xt0psk2 xe8uvvx xdj266r x11i5rnm xat24cr x1mh8g0r xexx8yu x4uap5 x18d9i69 xkhd6sd x16tdsg8 x1hl2dhg xggy1nq x1a2a7pz _a9zg _a6hd\"||this.node.nodeName==='TIME'||this.node.nodeName==='SPAN'))throw new Error('Not used on this link');return 'data:,'+$[1]})()", "res": ":\nconst alphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_'\nconst media_pk = [...$[1]].reduce((a, v, i) => a + BigInt(alphabet.length ** ($[1].length - i - 1) * alphabet.indexOf(v)), 0n)\nconst x = new XMLHttpRequest()\nx.open('GET', `https://i.instagram.com/api/v1/media/${media_pk}/info/`, false)\nx.setRequestHeader('X-IG-App-ID', '936619743392459')\nif (!/firefox/i.test(navigator.userAgent)) {\n x.withCredentials = true\n}\nx.send()\nif (x.status !== 200) {\n return [ 'data:image/svg+xml,' + encodeURIComponent(`\n \n \n
    \n \n Something went wrong\\nHTTP status ${x.status}: ${x.statusText}\n \n
    \n
    \n
    `.replace(/\\n\\s+/g, '')), ' ' ]\n}\nconst item = JSON.parse(x.responseText).items[0]\nconst capt = [\n `@${item.user.username}${item.user.full_name ? ` (${item.user.full_name})` : ''}`,\n new Date(item.taken_at * 1000).toLocaleString(navigator.language, { dateStyle: 'medium', timeStyle: 'medium' }),\n item.caption?.text\n].filter(Boolean).join(' | ')\nconst res = (i) => [ i.video_versions?.[0].url || i.image_versions2.candidates[0].url, capt ]\nreturn item.carousel_media?.map((e) => res(e)) || res(item)", "note": "64h + Imagus_fan (edit)\nhttps://www.reddit.com/r/imagus/comments/1g4vm8l/comment/lstj7l6\nOLD\nhttps://www.reddit.com/r/imagus/comments/1g4vm8l/comment/lstj7l6\nhttps://www.reddit.com/r/imagus/comments/170lv0t/comment/k3nf9mi\n\n\n\n!!!\nВся информация о возможностях и особенностях фильтров для Инстаграм, а также о представленных в них опциях: см. Чаво, п.20.\n==\nAll information about the capabilities and features of the sieve, and also about the options presented in it: see FAQ, p.20.\n\nПРИМЕРЫ / EXAMPLES\n(внешние ссылки / external links):\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=200#19" }, "INSTAGRAM_pub_api_a1_1-p": { "off": 1, "link": "^(?:(?:i\\.)?instagr(?:\\.am|am\\.com))\\/(?:[\\w.-]+\\/)?(?:tv\\/|p\\/|reel\\/){1,2}([^\\/?#]+).*", "ci": 1, "url": ": (()=>{var disable_on_timestamps = false ; if(disable_on_timestamps&&(this.node.className===\"x1i10hfl xjbqb8w x6umtig x1b1mbwd xaqea5y xav7gou x9f619 x1ypdohk xt0psk2 xe8uvvx xdj266r x11i5rnm xat24cr x1mh8g0r xexx8yu x4uap5 x18d9i69 xkhd6sd x16tdsg8 x1hl2dhg xggy1nq x1a2a7pz _a9zg _a6hd\"|this.node.nodeName==='TIME'||this.node.nodeName==='SPAN'))throw new Error('Not used on this link');return `https://www.instagram.com/p/${$[1]}/?__a=1&__d=dis`})()", "res": ":\nconst use_sidebar = true\n\nvar i=JSON.parse($._);\ni=i.items?i.items[0]:i.graphql?.shortcode_media;\nvar f=i.user?.full_name??i.owner?.full_name;\nvar u=i.user?.username??i.owner?.username;\nvar t=new Date((i.taken_at||i.taken_at_timestamp)*1e3).toLocaleString('en-GB');\nvar c=i.caption ? i.caption.text : i.edge_media_to_caption?.edges[0]?.node?.text ? i.edge_media_to_caption.edges[0].node.text : '';\nc = [`@${u}`, `(${f})`, t, c].join(use_sidebar?\"\\n\":\" | \");\nc = use_sidebar ? `${c}` : c;\nlet m;\nif (i.carousel_media) m = i.carousel_media.map(x => [x.video_versions ? x.video_versions[0].url : x.image_versions2.candidates[0].url, c])\nelse if (i.video_versions) m = [i.video_versions.sort((a, b) => b.height - a.height)[0].url, c];\nelse if (i.edge_sidecar_to_children) m = i.edge_sidecar_to_children.edges.map(i=>[i.node?.video_url||i.node?.display_url, c])\nelse if (i.video_url||i.display_url) m = [i.video_url??i.display_url, c]\nelse m = [i.image_versions2.candidates[0].url, c]\nthis.CNT.filename = u + '_' + (Array.isArray(m[0])?m[0][0]:m[0]).match(/\\/([^\\/.]+\\.\\w{3,4})(?:$|\\?)/)?.[1].replace(/[^\\w.-]/g,'_')??''\nif(use_sidebar)this.TRG.IMGS_ext_data=m;\nreturn use_sidebar?{loop:'imagus://extension'}:m", "note": "illogikally + Imagus_fan (edit)\nhttps://www.reddit.com/r/imagus/comments/1gf2w7z/comment/lw1yyk8\nOLD\nhttps://www.reddit.com/r/imagus/comments/1g4vm8l/comment/lslt8ib\nhttps://www.reddit.com/r/imagus/comments/1bhj0jh/comment/kwgp6w6\n\n\n\n!!!\nВся информация о возможностях и особенностях фильтров для Инстаграм, а также о представленных в них опциях: см. Чаво, п.20.\n==\nAll information about the capabilities and features of the sieve, and also about the options presented in it: see FAQ, p.20.\n\n\nПРИМЕРЫ / EXAMPLES\n(внешние ссылки / external links)\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=200#19" }, "INSTAGRAM_pub_api_a1_2-p": { "off": 1, "link": "^(?:(?:i\\.)?instagr(?:\\.am|am\\.com))\\/(?:[\\w.-]+\\/)?(?:tv\\/|p\\/|reel\\/){1,2}([^\\/?#]+).*", "url": ": (()=>{var disable_on_timestamps = false ; if(disable_on_timestamps&&(this.node.className===\"x1i10hfl xjbqb8w x6umtig x1b1mbwd xaqea5y xav7gou x9f619 x1ypdohk xt0psk2 xe8uvvx xdj266r x11i5rnm xat24cr x1mh8g0r xexx8yu x4uap5 x18d9i69 xkhd6sd x16tdsg8 x1hl2dhg xggy1nq x1a2a7pz _a9zg _a6hd\"|this.node.nodeName==='TIME'||this.node.nodeName==='SPAN'))throw new Error('Not used on this link');return `https://www.instagram.com/p/${$[1]}/${this.ig_embed_fail?'?__a=1&__d=dis':'embed/'}`})()", "res": ":\nconst use_sidebar = true // True shows caption as sidebar\n\nvar i=this.ig_embed_fail ? JSON.parse($._) : JSON.parse(JSON.parse($._.match(/s\\.handle\\(({.+?})\\);requireLazy/)?.[1]||'{}').require?.[1]?.[3]?.[0]?.contextJSON||'{}').context?.media;\nif(!i&&!this.ig_embed_fail){\nthis.ig_embed_fail=true;\nreturn {loop:$[0]}\n}\ndelete this.ig_embed_fail;\ni=i.items?.[0]||i.graphql?.shortcode_media||i;\nvar f=i.user?.full_name||i.owner?.full_name;\nvar u=i.user?.username||i.owner?.username;\nvar t=new Date((i.taken_at||i.taken_at_timestamp)*1e3).toLocaleString('en-GB');\nvar c=i.caption ? i.caption.text : i.edge_media_to_caption?.edges[0]?.node?.text ? i.edge_media_to_caption.edges[0].node.text : '';\nc = [`@${u}`, f&&`(${f})`, t, c].filter(Boolean).join(use_sidebar?\"\\n\":\" | \");\nc = use_sidebar ? `${c}` : c;\nlet m;\nif (i.carousel_media) m = i.carousel_media.map(x => [x.video_versions ? x.video_versions[0].url : x.image_versions2.candidates[0].url, c])\nelse if (i.video_versions) m = [i.video_versions[0].url, c];\nelse if (i.edge_sidecar_to_children) m = i.edge_sidecar_to_children.edges.map(i=>[i.node?.video_url||i.node?.display_url, c])\nelse if (i.video_url||i.display_url) m = [i.video_url||i.display_url, c]\nelse m = [i.image_versions2.candidates[0].url, c]\nthis.CNT.filename = u + '_' + (Array.isArray(m[0])?m[0][0]:m[0]).match(/\\/([^\\/.]+\\.\\w{3,4})(?:$|\\?)/)?.[1].replace(/[^\\w.-]/g,'_')||''\nif(use_sidebar)this.TRG.IMGS_ext_data=m;\nreturn use_sidebar?{loop:'imagus://extension'}:m", "note": "illogikally + Imagus_fan (edit)\nhttps://www.reddit.com/r/imagus/comments/1gf2w7z/comment/luzqgid\nOLD\nhttps://www.reddit.com/r/imagus/comments/1g4vm8l/comment/lslt8ib\nhttps://www.reddit.com/r/imagus/comments/1bhj0jh/comment/kwgp6w6\n\n\n\n!!!\nДанная версия для тех у кого появляется \"серый спиннер\" при использовании основной версии (INSTAGRAM_pub_api_a1_1-p):\nhttps://new.reddit.com/r/imagus/comments/1gf2w7z/instagram_grey_circle/\nВся информация о возможностях и особенностях фильтров для Инстаграм, а также о представленных в них опциях: см. Чаво, п.20.\n==\nThis version is for those who get “gray spinner” when using the main version (INSTAGRAM_pub_api_a1_1-p):\nhttps://new.reddit.com/r/imagus/comments/1gf2w7z/instagram_grey_circle/\nAll information about the capabilities and features of the sieve, and also about the options presented in it: see FAQ, p.20.\n\n\nПРИМЕРЫ / EXAMPLES\n(внешние ссылки / external links)\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=200#19" }, "INSTAGRAM_redirect": { "link": "^lookaside\\.instagram\\.com/seo/google_widget/crawler/\\?media_id=\\d+.*", "res": ":\nlet id=$._.match(/\"url\":\"\\\\\\/(?:[\\w.-]+\\\\\\/)?(?:tv\\\\\\/|p\\\\\\/|reel\\\\\\/){1,2}([^\\/?#\"]+)/)[1], token=$._.match(/\"csrf_token\":\"([^\"]+)/)?.[1], x=new XMLHttpRequest();\n// #instagram_header is added to URL to match SMH rules\nx.open('POST','https://www.instagram.com/graphql/query/#instagram_header',false);\nx.setRequestHeader('Content-Type','application/x-www-form-urlencoded');\nx.setRequestHeader('X-CSRFToken',token);\nx.send(`variables=%7B%22shortcode%22%3A%22${id}%22%7D&doc_id=8845758582119845`);\nvar i=JSON.parse(x.responseText).data.xdt_shortcode_media;\nvar f=i.user?.full_name||i.owner?.full_name;\nvar u=i.user?.username||i.owner?.username;\nvar t=new Date((i.taken_at||i.taken_at_timestamp)*1e3).toLocaleString('en-GB');\nvar c=i.caption ? i.caption.text : i.edge_media_to_caption?.edges[0]?.node?.text ? i.edge_media_to_caption.edges[0].node.text : '';\nc = [`@${u}`, `(${f})`, t, c].join(' | ');\nlet m;\nif (i.carousel_media) m = i.carousel_media.map(x => [x.video_versions ? x.video_versions[0].url : x.image_versions2.candidates[0].url, c])\nelse if (i.video_versions) m = [i.video_versions[0].url, c];\nelse if (i.edge_sidecar_to_children) m = i.edge_sidecar_to_children.edges.map(i=>[i.node?.video_url||i.node?.display_url, c])\nelse if (i.video_url||i.display_url) m = [i.video_url||i.display_url, c]\nelse m = [i.image_versions2.candidates[0].url, c]\nthis.CNT.filename = u + '_' + (Array.isArray(m[0])?m[0][0]:m[0]).match(/\\/([^\\/.]+\\.\\w{3,4})(?:$|\\?)/)?.[1].replace(/[^\\w.-]/g,'_')||''\nreturn m", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/1qtwswg/comment/o3bdpnm\n\n!!!\nInstagram uses a different URL link on the Google Images. This sieve should redirect using the normal page URL" }, "INSTAGRAM_Stories-p": { "link": "^(instagram\\.com/)(stories/highlights/(\\d+)/|graphql/query/\\?query_id=9957820854288654&user_id=\\d+&include_highlight_reels=true&\\d+)?$", "url": ":(()=>{if($[1]&&!$[2]&&!RegExp(`^https://www\\\\.${$[1]}stories/highlights/\\\\d+/$`).test(location.href))throw '';return $[2]?.[0]!=='g' ? 'data:,'+($[3]||location.pathname.match(/\\d+/)[0]) : $[0]})()", "res": ":\nif($[2]?.[0]==='g'){\nconst n=this.node.src?.match(/^[^?]+/)[0];\n$._=JSON.parse($._).data?.user?.edge_highlight_reels?.edges?.find(i=>i.node?.cover_media_cropped_thumbnail?.url?.match(/^[^?]+/)[0]===n)?.node?.id;\n}\nif(!$._)return !1;\nlet x=new XMLHttpRequest();\nx.open('GET', `https://www.${$[1]}api/v1/feed/reels_media/?reel_ids=highlight%3A${$._}`, false);\nx.setRequestHeader('X-IG-App-ID','936619743392459');\nx.send();\nx=x.responseText[0]==='{'&&JSON.parse(x.responseText).reels?.['highlight:'+$._]?.items;\nreturn x ? x.map(i=>[i.video_versions?.[0]?.url||i.image_versions2?.candidates[0].url]) : !1", "img": "^[^/]+\\.(?:cdninstagram\\.com|fbcdn\\.net)/.+_s150x150_.+", "loop": 2, "to": ":\n$=document.documentElement.outerHTML.match(/\"profile_id\":\"([^\"]+)/)[1]\nreturn 'https://www.instagram.com/graphql/query/?query_id=9957820854288654&user_id='+$+'&include_highlight_reels=true&'+Date.now()", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/1mgz7u8/comment/na7xt5i\n\n!!!\nФильтр показывает альбомы Историй при наведении на их обложку на главной странице аккаунта.\nhttps://postimg.cc/47nDwLSy\nНа странице самой Истории фильтр работает при наведении на ссылку Instagram слева ввеху. \n==\nThe sieve shows Stories albums when you hover over their cover on the account's main page.\nhttps://postimg.cc/47nDwLSy\nOn the Story page itself, the sieve works when you hover over the Instagram link at the top left." }, "IRecommend.ru": { "link": "^irecommend\\.ru/content/.+", "res": ":\nconst product_image = $._.match(/\\/sites\\/default\\/files\\/product-images\\/[^?\"]+/)[0]\nconst user_images = $._.match(/(?<=href=\")\\/sites\\/default\\/files\\/imagecache\\/copyright1[^?\"]+/g)\nreturn user_images?.map((e) => [ 'https://irecommend.ru' + e.replace('/imagecache/copyright1', ''), '']) || 'https://irecommend.ru' + product_image", "note": "64h\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1560#20\nOLD\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=2020#21\n\nПРИМЕРЫ\nhttps://irecommend.ru/content/maska-dlya-litsa-algomask-omolazhivayushchaya-maska-frantsuzskii-paradoks\nhttps://irecommend.ru/content/pylesos-karcher-vc-3" }, "Itaku-g": { "useimg": 1, "link": "^(http(|s):\\/\\/|)itaku.ee\\/images\\/(\\d+)$", "url": "https://itaku.ee/api/galleries/images/$3/?format=json", "res": ":\n$data = JSON.parse($._);\nif($data['video'] != null){\n $url = $data['video']['video'];\n}else {$url = $data['image'];}\n$caption = `${$data['title']} - by ${$data['owner_displayname']}`;\n$res = [$url, $caption];\nreturn $res;", "img": "itaku\\.ee\\/api\\/media\\/gallery_imgs\\/(.*)\\/.*(\\..*)$", "to": "https://itaku.ee/api/media/gallery_imgs/$1/xl$2", "note": "waitwotNO\nhttps://www.reddit.com/r/imagus/comments/15iu234/itakuee/\n\nEXAMPLES\nhttps://itaku.ee/profile/vee4eva/gallery\nhttps://itaku.ee/profile/vee4eva/posts\nhttps://itaku.ee/home/commissions\nhttps://itaku.ee/home/images?text=red" }, "iTunes": { "img": "^(is\\d(?:-ssl)?\\.mzstatic.com/image/thumb/[^?]+/)\\d+x\\w+", "to": "$19999x9999", "note": "EXAMPLES\n??" }, "iWantClips-x": { "link": "^iwantclips\\.com/store/(?:item/)?\\d+", "url": ": /iwantclips\\.com$/.test(location.hostname) ? 'data:,'+$[0] : $[0]", "res": ":\nif($.base[0]==='d'){\nconst x=new XMLHttpRequest();\nx.open('GET',$[0],false);\nx.send();\n$._=x.responseText;\n}\nlet m=$._.match(/(?:\"og:video\" content|video src|width=\"100%\" poster)=\"([^\"]+)/)?.[1];\nreturn m||[...$._.matchAll(/data-src=\"([^\"]+)/g)].map(i=>[i[1]])", "note": "imqswt\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/luhrwbn\nOLD\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3616#1\n\n!!!\nРекомендуется наводить курсор на название клипа. В некоторых случаях требуется повторное наведение курсора.\n==\nIt is recommended to move the cursor over the title of the clip. In some cases, repeated cursor positioning is required.\n\nEXAMPLES\nhttps://iwantclips.com/fetish/chastity\nhttps://iwantclips.com/store/704057/TashaBlack\nhttps://iwantclips.com/store/1227651/amysolesx_feet\nhttps://www.reddit.com/domain/iwantclips.com/new/\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1369&limit=1&m=1#1" }, "Iwara.tv-x-p": { "link": "^(iwara\\.tv/(video|image)/\\w+).*", "url": "https://api.$1", "res": ":\n$._=JSON.parse($._)\nif($[2]==='image')return $._.files.map(i=>[`https://i.iwara.tv/image/original/${i.id}/${i.name}`])\nconst x=new XMLHttpRequest()\nx.open('GET',$._.fileUrl,false)\nx.send()\n$=JSON.parse(x.responseText)\n$=$.filter(i=>Number(i.name)).sort((a,b)=>b.name-a.name).map(i=>i.src.view)\nreturn $.length ? $[0]+'#mp4' : ''", "img": "^(i\\.iwara\\.tv/image/)\\w+((?:/[a-f0-9-]{36}){2}\\.jpg)", "to": "$1original$2", "note": "imqswt\nhttps://www.reddit.com/r/imagus/comments/1ol69c2/comment/nmo13mu\n\nEXAMPLES\nhttps://www.iwara.tv" }, "IXBT_photo": { "img": "^(ixbt\\.photo\\/photo\\/[0-9]+\\/[0-9a-zA-Z]+\\/[0-9]+)(\\.(?:jpe?g|gif|png))$", "to": "$1w$2", "note": "Baton34V\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=580#16\n\nПРИМЕРЫ\nhttps://ixbt.photo/?&page=3\nhttps://ixbt.photo/?id=user:561412" }, "JavDB-x-p": { "link": "javdb.com\\/v\\/\\w+", "res": ":\n// Video matching switch. Set to true to enable, false to disable.\nconst enableVideoMatching = false;\n\n// Extracts preview source or returns empty array if not found.\nconst previewSource = $._.match(/preview-video[\\s\\S]*?article/)?.[0];\nif (!previewSource) return [];\n\n// Extracts image URLs and cover URL.\nconst imageUrls = [...previewSource.matchAll(/href=\"([^\"]+\\.jpg)\"/g)].map(m => [m[1]]);\nconst coverUrl = previewSource.match(/src=\"([^\"]+\\.jpg)\"/)?.[1];\n\n// Extracts and processes video URL if enabled.\nlet videoUrl = enableVideoMatching ? previewSource.match(/src=\"([^\"]*\\.mp4)\"/)?.[1]?.replace(/_?(sm|dm|dmb|mmb|hmb|mhb)_?w?\\.mp4/g, 'hhb.mp4') : null;\nif (videoUrl) videoUrl = 'https:' + videoUrl;\n\n// Builds the results array.\nconst results = [];\nif (coverUrl) results.push([coverUrl]);\nif (videoUrl) results.push([videoUrl]);\nif (imageUrls.length > 1) results.push(...imageUrls.slice(1));\n\n// Returns the final results array.\nreturn results;", "note": "loveqianool\nhttps://www.reddit.com/r/imagus/comments/1jruces/javdbcom/\n\nEXAMPLES\nhttps://javdb.com/" }, "JD-s": { "link": "^item\\.jd\\.com/\\d+\\.html$", "res": ":\nreturn [...$._.matchAll(/src='([^']+)'\\s+data-url=/g)].map(i=>[i[1].replace('/n5/','/shaidan/')])", "img": "^(img\\d+\\.360buyimg\\.com/+)[^/]+/(?:[^_/]+_)?(jfs/)", "to": "$1shaidan/$2", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/130svfu/comment/jyil8u7\n\nEXAMPLES\nhttps://coll.jd.com/list.html?sub=42275\nhttps://list.jd.com/list.html?cat=737,752,760\n(для проверки нужен акк)" }, "jimcdn-CDN": { "img": "(image\\.jimcdn\\.com/app/cms/image/transf/dimension=)\\d+x\\d+(:format=\\w+/path/\\w+/image/\\w+/version/\\w+/\\w+\\.\\w+)", "to": "$12048x2048$2", "note": "Baton34V\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=340#7\n\nEXAMPLES\nhttps://www.janismeyer.de/referenzen/" }, "JoeMonster": { "useimg": 1, "link": "^joemonster\\.org/mg/show/\\d+/.+", "res": ":\nlet res=/\\?next/.test($.url[0])?$._.match(/ ['0','1','2','10'][Math.floor(Math.random()*4)]\nlet x=new XMLHttpRequest(), m=[]\nx.open('POST',`https://api.${$[1]}graphql#joyreactor_smh`,false)\nx.setRequestHeader('Content-Type','application/json')\nx.send(`{\"query\":\"query IdPostPageQuery(\\\\n$id:ID!\\\\n$isAuthorised:Boolean!\\\\n){\\\\nnode(id:$id){\\\\n__typename\\\\n... on Post{\\\\nid\\\\nuser{\\\\nid\\\\n}\\\\ntext\\\\nnsfw\\\\nunsafe\\\\nseoAttributes{\\\\ntitle\\\\ndescription\\\\nocr\\\\nsimilarPosts\\\\n}\\\\n...Post_post_2lIf9C\\\\ncomments{\\\\n...CommentTree_comments_48QSE5\\\\nid\\\\n}\\\\ntags{\\\\n...TagList_blogs\\\\nid\\\\n}\\\\n}\\\\nid\\\\n}\\\\n}\\\\n\\\\nfragment AttributeEmbed_attribute on AttributeEmbed{\\\\n__isAttributeEmbed:__typename\\\\ntype\\\\nvalue\\\\nimage{\\\\ncomment\\\\nid\\\\n}\\\\n}\\\\n\\\\nfragment AttributePicture_attribute on AttributePicture{\\\\n__isAttributePicture:__typename\\\\nid\\\\ntype\\\\ninsertId\\\\nimage{\\\\nwidth\\\\nheight\\\\ntype\\\\ncomment\\\\nhasVideo\\\\nid\\\\n}\\\\n}\\\\n\\\\nfragment AttributePicture_post on Post{\\\\nnsfw\\\\ntags{\\\\nname\\\\nseoName\\\\nsynonyms\\\\nid\\\\n}\\\\n}\\\\n\\\\nfragment Attribute_attribute on Attribute{\\\\n__isAttribute:__typename\\\\ntype\\\\n...AttributePicture_attribute\\\\n...AttributeEmbed_attribute\\\\n}\\\\n\\\\nfragment Attribute_post on Post{\\\\n...AttributePicture_post\\\\n}\\\\n\\\\nfragment CommentTree_comments_2EWd0p on Comment{\\\\nid\\\\nlocale\\\\nlevel\\\\nparent{\\\\n__typename\\\\nid\\\\n}\\\\ncreatedAt\\\\nuser{\\\\nid\\\\n}\\\\n...Comment_comment_2EWd0p\\\\n}\\\\n\\\\nfragment CommentTree_comments_48QSE5 on Comment{\\\\nid\\\\nlocale\\\\nlevel\\\\nparent{\\\\n__typename\\\\nid\\\\n}\\\\ncreatedAt\\\\nuser{\\\\nid\\\\n}\\\\n...Comment_comment_48QSE5\\\\n}\\\\n\\\\nfragment CommentTree_post on Post{\\\\nid\\\\n...Comment_post\\\\n}\\\\n\\\\nfragment CommentVote_comment on Comment{\\\\nid\\\\nrating\\\\nvoted\\\\n}\\\\n\\\\nfragment Comment_comment_2EWd0p on Comment{\\\\nid\\\\nuser{\\\\nid\\\\nusername\\\\n}\\\\ncreatedAt\\\\nrating\\\\nlevel\\\\ncontentVersion\\\\nbanned\\\\ncontentEditedAt\\\\nlocale\\\\n...EditableCommentContent_content\\\\n...Content_content\\\\n}\\\\n\\\\nfragment Comment_comment_48QSE5 on Comment{\\\\nid\\\\nuser{\\\\nid\\\\nusername\\\\n}\\\\ncreatedAt\\\\nrating\\\\nlevel\\\\ncontentVersion\\\\nbanned\\\\ncontentEditedAt\\\\nlocale\\\\n...EditableCommentContent_content\\\\n...Content_content\\\\n...CommentVote_comment @include(if:$isAuthorised)\\\\n}\\\\n\\\\nfragment Comment_post on Post{\\\\nid\\\\n...Content_post\\\\n}\\\\n\\\\nfragment Content_content on Content{\\\\n__isContent:__typename\\\\ntext\\\\nattributes{\\\\n__typename\\\\nid\\\\ninsertId\\\\n...Attribute_attribute\\\\n}\\\\n}\\\\n\\\\nfragment Content_post on Post{\\\\n...Attribute_post\\\\n}\\\\n\\\\nfragment EditableCommentContent_content on Content{\\\\n__isContent:__typename\\\\ntext\\\\nattributes{\\\\n__typename\\\\nid\\\\ninsertId\\\\ntype\\\\nimage{\\\\nid\\\\nhasVideo\\\\ntype\\\\nwidth\\\\nheight\\\\n}\\\\n}\\\\n}\\\\n\\\\nfragment Poll_post_2lIf9C on Post{\\\\nid\\\\npoll{\\\\nquestion\\\\nanswers{\\\\nid\\\\nanswer\\\\ncount\\\\n}\\\\nvoted @include(if:$isAuthorised)\\\\n}\\\\n}\\\\n\\\\nfragment PostComments_post_2lIf9C on Post{\\\\nid\\\\nviewedCommentsAt @include(if:$isAuthorised)\\\\nviewedCommentsCount @include(if:$isAuthorised)\\\\ncommentsCount\\\\nuser{\\\\nid\\\\n}\\\\nunsafe\\\\n...CommentTree_post\\\\n}\\\\n\\\\nfragment PostFooter_post_2lIf9C on Post{\\\\nid\\\\ncommentsCount\\\\nrating\\\\nratingGeneral\\\\ncreatedAt\\\\nviewedCommentsCount @include(if:$isAuthorised)\\\\nfavorite @include(if:$isAuthorised)\\\\n...PostVote_post @include(if:$isAuthorised)\\\\n}\\\\n\\\\nfragment PostTags_post on Post{\\\\nid\\\\nuser{\\\\nid\\\\n}\\\\ntags{\\\\nid\\\\nname\\\\nseoName\\\\nshowAsCategory\\\\nmainTag{\\\\nid\\\\ncategory{\\\\nid\\\\n}\\\\nuserTag{\\\\nstate\\\\n}\\\\n}\\\\n}\\\\n}\\\\n\\\\nfragment PostVote_post on Post{\\\\nid\\\\nrating\\\\nratingGeneral\\\\nminusThreshold\\\\nvote{\\\\ncreatedAt\\\\npower\\\\n}\\\\n}\\\\n\\\\nfragment Post_post_2lIf9C on Post{\\\\nid\\\\nuser{\\\\nid\\\\nusername\\\\n}\\\\nbestComments{\\\\n...CommentTree_comments_2EWd0p\\\\nid\\\\n}\\\\ntags{\\\\nmainTag{\\\\nid\\\\nname\\\\ncategory{\\\\nid\\\\n}\\\\nuserTag{\\\\nstate\\\\n}\\\\n}\\\\nid\\\\n}\\\\nnsfw\\\\nunsafe\\\\ncreatedAt\\\\neditableUntil\\\\ntext\\\\nfavorite @include(if:$isAuthorised)\\\\n...PostVote_post @include(if:$isAuthorised)\\\\nbanned\\\\npoll{\\\\nquestion\\\\n}\\\\ncommentsCount\\\\n...CommentTree_post\\\\n...PostTags_post\\\\n...Content_post\\\\n...Content_content\\\\n...PostFooter_post_2lIf9C\\\\n...PostComments_post_2lIf9C\\\\n...Poll_post_2lIf9C\\\\n}\\\\n\\\\nfragment TagList_blogs on Tag{\\\\nid\\\\nname\\\\nseoName\\\\ncount\\\\nsubscribers\\\\nshowAsCategory\\\\nmainTag{\\\\nnsfw\\\\nunsafe\\\\ncategory{\\\\nname\\\\nid\\\\n}\\\\nid\\\\n}\\\\n}\\\\n\",\"variables\":{\"id\":\"${btoa('Post:'+$[2])}\",\"isAuthorised\":false}}`)\nx=JSON.parse(x.responseText)\nx=x[0]||x\nx=x.data.node.attributes\nx.forEach(i=>{const id=atob(i.id).split(':')[1];m.push([[`#https://img${r()}.${$[1]}pics/post/full/${id}`,`https://img${r()}.${$[1]}pics/post/${id}`],i.image?.comment||''])})\nreturn m", "note": "imqswt\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/nrctm7t\n\n\nEXAMPLES\nhttps://joyreactor.cc/\nhttps://www.reddit.com/domain/joyreactor.cc/new/" }, "jpg5.su|jpg6.su-h-x-p": { "useimg": 1, "link": "^(jpg\\d\\.su)/(?:(img|a)/([^?]+)|\\w+$).*", "url": ": location.hostname===$[1]&&$[2]==='img' ? 'data:,'+$[0] : $[2]!=='img' ? $[0] : `https://jpg6.su/oembed/?url=https%3A%2F%2Fjpg6.su%2Fimg%2F${$[3]}&format=json`", "res": ":\nif($[2]!=='img')return [...$._.matchAll(/[i[1]+i[2]]);\nif($.base[0]==='d'){\nconst x=new XMLHttpRequest();\nx.open('GET',`https://${$[1]}/oembed/?url=https%3A%2F%2F${$[1]}%2Fimg%2F${$[3]}&format=json`,false);\nx.send();\n$._=x.responseText;\n}\nreturn $._[0]==='{'&&JSON.parse($._).url?.replace(/\\.\\w{2}\\./,'.')||this.node?.src?.replace('.md.','.')||''", "img": "^((?:\\w+\\.jpg\\d\\.su|simp\\d\\.[^/]+)/images\\d/[^.]+)\\.md", "to": "$1", "note": "imqswt\nhttps://www.reddit.com/r/imagus/comments/1n48lwg/comment/nbk9nv1\nOLD\nhttps://www.reddit.com/r/imagus/comments/1m2kpen/comment/n3qd5xg\nhttps://www.reddit.com/r/imagus/comments/1j1anq5/comment/mfngnfc\n\n\nEXAMPLES\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1369&limit=1&m=1#1" }, "JulesJordan_gallery-x-p": { "img": "^(thumbs\\.julesjordan\\.com/trial/content/.+)thumbs(.+)", "to": "$1photos$2", "note": "gpl2731\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3660#10\n\nEXAMPLES\nhttps://www.julesjordan.com/trial/scenes/Anna-Claire-Clouds-Big-Butt-Cumshot-Facial_highres.html" }, "JumpShare|jmp.sh-h": { "link": "^(jmp\\.sh|jumpshare.com)\\/\\w\\/\\w+$", "res": "data-original-image-src=\"([^\"]+)\"", "note": "Rodny + Baton34V (fix)\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3720#13\n\n!!!\nПоддержки видео в фильтре на данный момент нет.\n==\nThere is no video support in the rule.\n\n\nEXAMPLES\nhttps://www.reddit.com/domain/jmp.sh/new/\n???" }, "Junipergallery|Shorpy-g": { "useimg": 1, "link": "((?:shorpy|junipergallery)\\.com/node/\\d+)/?$", "url": ": /shorpy\\.com\\/node/.test($[0])?$[1]+'?size=_original':$[1]", "res": ":\nlet i,m,d;if(/shorpy/i.test($[0])){const h=new DOMParser().parseFromString($._,\"text/html\");i=h.images[0]?.src;if(!/files\\/images/.test(i))return '';m=[\"#\"+i,i.replace(/jpg$/,'preview.jpg')];d=[h.querySelector('title').textContent.replace(/[^:]+::\\s(.*)\\shigh-.*/,'$1'),h.getElementById('caption')?.textContent.replace(/(?:\\s+BUY PRINT)?\\s+([^|]+).*/,'$1')].join(\" | \");}else{i=($._.match(/src=\"(https:\\/\\/www\\.junipergallery\\.com\\/sites\\/[^\"]+)/)||[])[1];if(!i)return '';m=[\"#\"+i.replace(\"large\",\"jumbo\"),i];d=[$._.match(/([^:<]+)/)[1],$._.match(/<\\/h1><\\/a>[^<]+<h2>([^<]+)/)[1]].join(\" | \");}return [[m,d]]", "img": "(shorpy\\.com/files/images/[^.]+)\\.(?:thumbnail|preview)\\.jpg|(junipergallery\\.com/sites/default/files/styles/)[^/]+(/public/[^.]+\\.jpg).*|junipergallery\\.com/galleryview\\.php\\?targetnode=[^&]+&height=[^&]+&width=[^&]+&[^&]+&picurl=([^.]+\\.jpg)", "to": ":\nreturn $[1]?`#${$[1]}.jpg\\n${$[1]}.preview.jpg`:$[4]?`https://www.junipergallery\\.com/sites/default/files/styles/jumbo/public/${$[4]}`:`#${$[2]}jumbo${$[3]}\\n${$[2]}large${$[3]}`", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/10d8ck0/comment/jn8047u\n\nEXAMPLES\nhttps://www.shorpy.com/image/tid/263\nhttps://www.shorpy.com/historical-photographs-of-children?page=2\nhttps://www.junipergallery.com/vintage_aviation_photos" }, "JustJared-m": { "img": "^(cdn\\d*\\.justjared(?:jr)?\\.com/wp-content/uploads/(?:\\d+/\\d+/)?[^/]+/)(?:headlines|thumbs/)", "to": "$1", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/lt55y97\nOLD\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1140#16\n\nEXAMPLES\nhttps://www.justjaredjr.com/tags/movies/page/3/\nhttps://www.justjaredjr.com/photos/exclusive/\nhttps://www.justjaredjr.com/tags/television/page/2/\nhttps://www.justjaredjr.com/tags/selena-gomez/page/4/" }, "Keepa": { "img": "^graph\\.keepa\\.com/graphimage\\?.+", "to": "$&", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/1ezeaba/comment/ljmcvqg/\n\n\nEXAMPLES\n???" }, "KG-Portal.ru": { "link": "^kg-portal\\.ru/n\\d+", "res": "<a href=\"[^\"]+url=([^\"]+)\" class=\"video_high\">\n<title>([^<]+)", "img": "^(media\\.kg-portal\\.ru/.+_\\d+)[st](?:_\\d+x)?(\\.\\w+)$", "to": "$1$2", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/l6ahcr8\n\nПРИМЕРЫ\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1140#15" }, "KICK": { "link": "^(kick\\.com/).*(?:\\?clip=|/clips/)(.+)", "url": "https://$1api/v2/clips/$2", "res": ":\nkick_json=JSON.parse($._)\nkick_clip_playlist=kick_json.clip.video_url\nif(!/\\.m(?:3u8|pd)\\b/.test(kick_clip_playlist))return kick_clip_playlist\nthis.TRG.IMGS_ext_data = [\n '//' + 'data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"640\" height=\"360\"></svg>',\n `<imagus-extension type=\"videojs\" url=\"${kick_clip_playlist}\"></imagus-extension>`\n]\nreturn {loop:'imagus://extension'}", "img": "^kick\\.com/category/.+", "loop": 2, "to": ":\n$=this.node.closest('[class=\"group/card relative flex w-full shrink-0 grow-0 flex-col gap-2 lg:gap-0\"]')?.querySelector('img')?.src?.match(/clip_\\w+/)?.[0];\nreturn $ ? '//kick.com/?clip='+$ : ''", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/ln1vfvq\nOLD\nhttps://www.reddit.com/r/imagus/comments/15gc9ia/comment/jva48dp\nhttps://www.reddit.com/r/imagus/comments/15gc9ia/updated_kickcom_clip_sieve\n\n\n!!!\n- Курсор следует наводить не только на обложку видео, но и на название ролика или на название самого канала (над названием)\n- На странице клипов Imagus не может работать на ссылке или обложке клипа. Курсор следует наводить на категорию или дату (это тоже ссылки) под названием клипа.\n==\n- The cursor should be placed not only on the cover of the video, but also on the title of the video or the name of channel itself (above the title)\n- On the clips page, Imagus cannot work on the link or cover of a clip. The cursor should be placed on the category or date (these are also links) below the clip name.\n\n\nПРИМЕРЫ / EXAMPLES\nhttps://kick.com/category/irl\nhttps://kick.com/actuallymanik/clips\nhttps://kick.com/actuallymanik/videos\nhttps://www.reddit.com/domain/kick.com/new/\nhttps://www.reddit.com/r/imagus/comments/15gc9ia/comment/juj1jjy" }, "KICK_Live": { "link": "^kick\\.com/(?!about|category|browse)[\\w-]+$", "loop": 3, "res": "\"([^\"]+\\.m3u8[^\"]+)\\\\\"", "img": "^(images\\.kick\\.com/video_thumbnails/.+)", "to": ":\nconst re=new RegExp(`${$[1].replaceAll('.','\\\\.')} \\\\d+w[^<]+?\\\\\\\\\"playback_url\\\\\\\\\":\\\\\\\\\"([^\"]+)\\\\\\\\\"`);\nreturn document.body.outerHTML.match(re)?.[1]||''", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/lonuess\n\nEXAMPLES\nhttps://kick.com/browse\nhttps://kick.com/browse/gambling\nhttps://kick.com/category/irl\nhttps://kick.com/category/valorant" }, "KICK_VoD-q": { "link": "^(kick\\.com/)(?:[^/]+/)*videos?/([a-zA-Z0-9-]+).*", "url": "https://$1api/v1/video/$2", "res": ":\n// Valid options are:\n// 1080p60, 720p60, 480p30, 360p30, 160p30. For quality selctor in player use null. It could vary by streamer.\nconst quality = null\n\nconst source=JSON.parse($._).source\nconst quality_playlist = quality ? quality + \"/playlist.m3u8\" : 'master.m3u8'\nconst vod_playlist = source.replace(\"master.m3u8\", quality_playlist)\nthis.TRG.IMGS_ext_data = [\n '//data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"640\" height=\"360\"></svg>',\n `<imagus-extension type=\"videojs\" url=\"${vod_playlist}\"></imagus-extension>`\n]\nreturn {loop:'imagus://extension'}", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/lsc4v7t\nOLD\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/ln1vfvq\nhttps://www.reddit.com/r/imagus/comments/11ldeys/sieve_for_kickcom_clips\n\n\n!!!\n- Переключение качества видео (360/480/720/1080) - см.третье поле сверху.\n- Для работы фильтра на необходимо правило для SMH (см.ЧаВо, п.12).\n- Курсор следует наводить не только на обложку видео, но и на название ролика или на название самого канала (над названием)\n==\n- Switching video quality (360/480/720/1080) - see the third field from the top.\n- A rule for SMH is required for the sieve to work (see FAQ, p.12).\n- The cursor should be placed not only on the cover of the video, but also on the title of the video or the name of channel itself (above the title)\n\n\nПРИМЕРЫ / EXAMPLES\nhttps://www.reddit.com/domain/kick.com/new/\nhttps://www.reddit.com/r/imagus/comments/15gc9ia/comment/juj1jjy\nhttps://www.reddit.com/r/imagus/comments/15gc9ia/comment/juizawf" }, "Kindgirls-x-p": { "link": "^kindgirls\\.com/(?:gallery|video)\\.php\\?id=\\d+", "res": ":\nif(/<source src=[\"']/.test($._))return $._.match(/<source src=[\"']([^\"']+)/)[1]\nreturn [...$._.matchAll(/<img\\s+src=\"([^\"]+)/g)].map(i=>[i[1].replace('/m6','')])", "img": "^(gals\\.kindgirls\\.com/[\\w\\d\\/]+/)m6/", "to": "$1", "note": "imqswt\nhttps://www.reddit.com/r/imagus/comments/160sikp/comment/jxszoj4\n\nEXAMPLES\nhttps://www.kindgirls.com/girls.php?id=1307\nhttps://www.kindgirls.com/gallery.php?id=9179\nhttps://www.kindgirls.com/photo-archive.php?s=05-2023\nhttps://www.kindgirls.com/video-archive.php?p=6" }, "KINK-x-p": { "link": "^kink.com/shoot/\\d+", "res": ":\nreturn 'https://' + $._.match(/cdnp.kink.com\\/.+?.mp4/m)[0]", "img": "^(imgopt02.kink.com\\/.+)\\?.+", "to": "$1", "note": "_1Zen_\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/l9hm1aa\nOLD\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3616#1\n\nEXAMPLES\nhttps://www.kink.com/search?type=shoots&performerIds=33659&sort=published\nhttps://www.kink.com/search?type=shoots&tagIds=18-year-old&sort=published" }, "Kino-Teatr.ru": { "useimg": 1, "link": "^(kino-teatr\\.ru)/(?:(video/.+)|\\w+/(?:acter/[a-z]/(?:\\w+/)*\\d+/(?:foto|poster|(\\w+/))|movie/(?:\\w+/)*\\d+/(?:foto|poster|(\\w+/)))(?!/i?\\d+/$))", "url": ": (()=>{if(($[3]||$[4])&&!this.node.src)throw '';return $[3]?$[0].replace($[3],'foto/'):$[4]?$[0].replace($[4],'poster/'):$[0]})()", "res": ":\nif($[2])return $._.match(/data-video-src\\s*=\\s*\"([^\"]+)/)?.[1].replace(/^\\/.+/,'//'+$[1]+'$&')||''\nif(!this.ls)this.ls=0\nif(!this.kino_teatr_album)this.kino_teatr_album=[]\nconst h=[...new DOMParser().parseFromString($._,\"text/html\").querySelector('div[class=\"grid_content photo_album wrap_cols_4 width_100\"],div[class=\"big_content_block\"]').children]\nthis.kino_teatr_album.push(...h.filter(i=>i.className===\"block_wrap\").map(i=>{i=i.firstChild.firstChild;return [i.src.replace('pv_',''),i.title]}))\nthis.ls++\nif(h.some(i=>i.firstChild?.lastChild?.textContent==='>')&&this.ls<40)return {loop:h.find(i=>i.firstChild.lastChild.textContent==='>').firstChild.lastChild.href.replace(/\\/$/,'')}\n$=this.kino_teatr_album\ndelete this.kino_teatr_album, delete this.ls\nif(!$.length)$=h[0]?.querySelector('img[src]')?.src||''\nreturn $", "img": "^(kino-teatr\\.ru/(?:movie|acter)/.+/)(?:pv|sm)_", "to": "$1", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/khyvx57\n\n\n!!!\n- Фильтр показывает альбомы Фото/Фотографии, Кадры и Постеры при наведении на соответстующие пункты меню на странице фильма или актера. \n- В фильтре есть поддержка видео (трейлеры, тизеры, фрагменты).\n- Не у всех миниатюр на страницах поиска / списков фильмов есть более крупные изображения (постеры). В этом случае фильтр показывает желтый спиннер (ошибка). \n- На странице фильма при наведении на постер фильтр показывает альбом кадров из этого фильма.\n\n\nПРИМЕРЫ\nhttps://www.kino-teatr.ru/video/trailer/\nhttps://www.kino-teatr.ru/kino/db/ros/movie/hud/\nhttps://www.kino-teatr.ru/mult/db/movie/\nhttps://www.kino-teatr.ru/kino/movie/ros/83776/annot/\nhttps://www.kino-teatr.ru/kino/movie/euro/7887/foto/\nhttps://www.kino-teatr.ru/kino/movie/hollywood/26843/poster/" }, "Kinomania.ru": { "link": "^kinomania\\.ru/film/\\d+/(?:poster|frame)s(?!/\\d)", "res": ":\nreturn [...$._.matchAll(/data-type-over-img=\"((?!')[^\"]+)/g)].map(i=>[i[1]])", "img": "^(?:(fs\\.kinomania\\.ru)/image(/file/(?:film|person)(?:_(?:poster|photo|frame))?/\\w+/\\w{2}/\\w{32}\\.)\\d+\\.\\d+\\.(jpe?g|png|gif)|(fs\\.kinomania\\.ru/image/file/(?:person|film)_wallpaper/\\w+/\\w{2}/\\w{32}\\.)\\d+\\.\\d+(\\.jpe?g|png|gif))", "to": "$1$2$3\n$41920.1200$5\n$41920.1080$5\n$41680.1050$5\n$41600.1200$5\n$41440.900$5\n$41366.768$5\n$41280.1024$5\n$41280.960$5\n$41280.800$5\n$41024.768$5\n$4960.600$5\n$4800.600$5", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/khy5fpl\nOLD\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=1540#12\n\n!!!\nФильтр показывает в т.ч. альбомы кадров и постеров при наведении на соответстующие пункты меню.\n\nПРИМЕРЫ\nhttps://www.kinomania.ru/people/357479\nhttps://www.kinomania.ru/film/742061/frames/\nhttps://www.kinomania.ru/people/194/frames/\nhttps://www.kinomania.ru/film/827133/people#filmMenu" }, "Kinorium": { "link": "^\\w\\w\\.kinorium\\.com/(?:name/)?\\d+/gallery/", "res": ":\nreturn [...$._.matchAll(/data-photo='([^']+)/g)].flatMap((i,n)=>n?[[i[1]]]:[])", "img": "^(?:((?:\\w\\w-)?images(?:-s)?\\.kinorium.com/(?:movie|persona|user)/)\\d+(/\\d+\\.\\w+)|(\\w\\w\\.kinorium\\.com/(?:name/)?\\d+/video)/.*)", "loop": 2, "to": ":\nif($[3]){\nconst n=this.node\nreturn n.dataset?.video||n.offsetParent?.dataset?.video||''\n}\nreturn `${$[1]}1080${$[2]}\\n${$[1]}600${$[2]}\\n${$[1]}480${$[2]}\\n${$[1]}300${$[2]}\\n${$[1]}180${$[2]}`", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/ktl37ca\nOLD\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/khnsi3h\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1600#7\n\n\n\n!!!\nЕсть поддержка альбомов при наведении на все пункты меню \"Кадры\" (включая сам пункт \"Кадры\" на основной странице фильма/сериала).\n==\nThere is support for albums when hovering over all the \"Stills\" menu items (including the \"Stills\" item itself on the main movie/TV series page).\n\nПРИМЕРЫ / EXAMPLES\nhttps://ru.kinorium.com/116780/\nhttps://ru.kinorium.com/movies/home/\nhttps://ru.kinorium.com/search/?q=война\nhttps://en.kinorium.com/name/3581155/" }, "Kinorium_poster": { "img": "^(images(?:-s)?\\.kinorium\\.com\\/movie\\/(?:shot|poster|backstage|promo|cover|fanart)\\/\\d+\\/)h\\d+(_\\d+\\.\\w+)", "to": "$1w1500$2", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/khnsi3h\nOLD\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=1640#13\n\nПРИМЕРЫ / EXAMPLES\nhttps://en.kinorium.com/2353464/gallery/\nhttps://ru.kinorium.com/1670490/gallery/poster/" }, "Kinopoisk_block": { "url": "http://www.kinopoisk.ru/picture/$1/", "res": "id=\"image\" src=\"([^\"]+)\"", "img": "^(?:st|www)\\.kinopoisk\\.ru/images/(?:kadr|poster|wallpaper)/sm_(\\d+)(\\.(?:jpe?g|png|gif|bmp))$", "note": "Rodny\n\nПРИМЕРЫ\nПравый блок с фотографиями, плакатами и обоями" }, "Kinopoisk_gallery": { "link": "^kinopoisk\\.ru/film/(?:\\d+)/(?:concept|covers|fanart|picture|posters|promo|screenshots|shooting|stills|wall)/$", "res": ":\nlet jsn=JSON.parse($._.match(/<script id=\"__NEXT_DATA__\" type=\"application\\/json\".+?({.+?)<\\/script>/)[1]).props.apolloState.data, res=[];\nObject.values(jsn).forEach(i=>i.image?.avatarsUrl&&res.push([i.image?.avatarsUrl+'/orig']));\nreturn res;", "img": "^kinopoisk-ru\\.clstorage\\.net/.+", "to": ":\nlet m=this.node.closest('a[href]')?.nextElementSibling?.href;\nreturn /kinopoisk-ru\\.clstorage\\.net/.test(m) ? m : $[0]", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/mq5ww0l\nOLD\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/mfknbzq\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/lz7t0u7\n\n\nПРИМЕРЫ\nПостеры и пункт \"Изображения\" (альбом) на странице фильма/сериала.\nhttps://www.kinopoisk.ru/series/4541932/\nhttps://www.kinopoisk.ru/series/584070/" }, "Kinopoisk_people": { "useimg": 1, "link": "^kinopoisk\\.ru\\/(?:name|level\\/\\d+\\/people)\\/(\\d+)/photos/?$", "res": ":\nlet i = $._.search(/<div class=\"styles_root__[^ ]+ styles_gallery__/);\nif(i<0) { return null; }\nlet t = $._.indexOf('<div class=\"styles_bannerContainer__', i);\nif(t<0) { return null; }\nlet res = [];\nlet re = /<a href=\"([^\"]+)\" target=\"_blank\"/gi\nlet data=$._.substring(i,t)\nlet a = re.exec(data);\nwhile(a) {\n res.push([a[1]]);\n a = re.exec(data);\n}\nreturn res;", "img": "^(avatars\\.mds\\.yandex\\.net/get-kinopoisk-image/\\d+/[\\w-]+/)\\d+x\\d+", "to": "$1orig", "note": "Baton34V\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1600#7\nOLD\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3900#14\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3900#10\n\nПРИМЕРЫ\nПункт меню \"Фото\" в профиле актера/режиссера." }, "Kinopoisk_people_2": { "link": "^kinopoisk\\.ru\\/(?:name|level\\/\\d+\\/people)\\/(\\d+)/(?:sr/\\d/)?$", "to": "https://st.kp.yandex.net/images/actor_iphone/iphone360_$1.jpg", "note": "Baton34V\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3900#14\nOLD\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3900#10\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=1840#10\n\n!!!\n(персоны в поисковой выдаче)\nhttps://www.kinopoisk.ru/name/11506/\nhttps://www.kinopoisk.ru/index.php?kp_query=киану+ривз" }, "Kinopoisk_poster": { "link": "^kinopoisk\\.ru/film/(\\d+)/(\\S+)?", "img": "^st\\.kinopoisk\\.ru/images/film/(\\d+)(\\.(?:jpe?g|png|gif|bmp))$", "to": "http://st.kinopoisk.ru/images/film_big/$1.jpg", "note": "Baton34V\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3400#15\n\nПРИМЕРЫ\n(постеры)\nhttps://www.kinopoisk.ru/premiere/ru/\nhttps://www.kinopoisk.ru/s/type/film/list/1/find/Форсаж/\nhttps://www.kinopoisk.ru/index.php?kp_query=война" }, "Kinopoisk_video": { "link": "^(kinopoisk\\.ru/)film/(\\d+)/(?:video/(\\d+)|#!watch-film/).*", "loop": 1, "url": ": $[3] ? `https://widgets.${$[1]}discovery/api/trailers?params=${$[2]}%2C${$[3]}` : $[0]", "res": ":\nif(!$[3])return '//'+$[1]+'film/'+$[2]+'/video/'+$._.match(/\"Trailer:(\\d+)/)?.[1]\nreturn JSON.parse($._)[$[2]+','+$[3]].streamUrl", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/nne1tgq\n\nПРИМЕРЫ" }, "KizlyarExtreme.ru-s": { "link": "^kizlyarextreme\\.ru/[\\w-]+/[\\w-]+", "res": ":\n$=JSON.parse($._.match(/data-product-json=\"([^\"]+)/)[1].replaceAll('"','\"'))\nconst t=$.title+' | '+$.short_description\nreturn $.images.map((i,n)=>[i.original_url,!n?t:''])", "img": "^(static\\.insales-cdn\\.com/)r/\\w+/rs:fit(?::\\d+){3}/q:\\d+/plain/(images/products/(?:\\d+/){3}\\w+\\.(?:jpe?|pn)g)@\\w+", "to": "$1$2", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/l6ahcr8\nOLD\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3660#7\n\n\nПРИМЕРЫ\nhttps://www.kizlyarextreme.ru/collection/skeletnye-nozhi\nhttps://www.kizlyarextreme.ru/collection/takticheskie-nozhi-2" }, "KnowYourMeme-p": { "useimg": 1, "link": "^knowyourmeme\\.com/(?:photos/\\d+(?:-[\\w-]+)?|memes/[\\w-]+)", "res": "<meta property='og:image' content='([^']+)\n<meta property='og:title' content='([^']+)", "img": "^(i(?:\\d+)?\\.kym-cdn\\.com/(?:entries/icon|photos/image)s/)(?!original)[^/]+(/.*)", "to": "$1original$2", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/130svfu/comment/jns5il6\n\nEXAMPLES\nhttps://knowyourmeme.com/photos/trending/page/5\nhttps://knowyourmeme.com/photos/2483207-are-we-the-baddies\nhttps://www.reddit.com/domain/knowyourmeme.com/new" }, "Kolesa.kz-s": { "link": "^kolesa\\.kz/\\w+/show/\\d+", "res": ":\nvar i = $._.indexOf('<ul class=\"gallery__thumbs-list js__gallery-thumbs\">');\nif(i<0) { return null;}\nvar t = $._.indexOf('</ul>', i);\nif(t<0) { return null; }\nvar res = [];\nvar re = /data-href=\"([^\"]+)\"/gi\nlet data=$._.substring(i,t);\nvar a = re.exec(data);\nwhile(a) {\n res.push([a[1]]);\n a = re.exec(data);\n}\nif (res.length<1) {\n return $._.match(/<meta property=\"og:image\" content=\"([^\"]+)\"/)[1];\n}\nreturn res;\n", "img": "^(cf-kl\\.kcdn\\.online/\\w+/\\w+/[\\w-]+/\\d+-)\\d+x\\d+(\\.\\w+)$", "to": "$1full$2", "note": "Baton34V\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1340#20\n\nПРИМЕРЫ\nhttps://kolesa.kz/cars/almaty/\nhttps://kolesa.kz/uslugi/kostanai/\nhttps://kolesa.kz/zapchasti/prodazha/honda/" }, "Konachan-x-p": { "link": "^konachan\\.com/post/show/\\d+/.*", "res": ":\nconsole.log(\"Konachan.com Sieve\");\n\norig_img_url=$._.match(/\"highres-show\" href=\"([^\"]*)/)[1];\n\nvar returnval = [\n [orig_img_url, \"\"]\n ];\nconsole.log(\"returnval: \", returnval);\nreturn returnval;", "note": "imqswt\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/nqoj85p\nOLD\nhttps://www.reddit.com/r/imagus/comments/11s43t5/comment/jccdpl7\n\n\nEXAMPLES\nhttps://konachan.com/post?tags=bed\nhttps://konachan.com/wiki/show?title=kanniiepan" }, "Kufar.by-s": { "link": "^(\\w+\\.)?kufar\\.by/(?:item|vi)/(?:cars/)?\\d+", "res": ":\ntry{return JSON.parse($._.match(/__NEXT_DATA__\" type=\"application\\/json\">(.+?)<\\//)[1]).props.initialState.adView.data.images.gallery.map(i=>[i])}catch(e){return ''}", "img": "^(yams\\.kufar\\.by/api/v1/kufar-ads/images/\\d{2}/\\d+\\.(?:jpe?g|png|gif|bmp)\\?rule=|content\\.kufar\\.by/)(line_thumbs(?:_2x)?|mobile_thumbs)(/\\d{2}/\\d+\\.(?:jpe?g|png|gif|bmp))?", "to": "$1gallery$3", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/lohqhfa\nOLD\nhttps://www.reddit.com/r/imagus/comments/130svfu/comment/jxydqur\n\n\nПРИМЕРЫ\nhttps://auto.kufar.by/l/cars/mazda\nhttps://www.kufar.by/l/natjazhnye-potolki\nhttps://www.kufar.by/l/bytovaya-tehnika?query=ХОЛОДИЛЬНИК&rgn=all" }, "Kuper.ru-s": { "link": "^kuper\\.ru/\\w+/[\\w-]+(?:\\?|$)", "res": ":\n$=JSON.parse($._.match(/\"__NEXT_DATA__\" type=\"application\\/json\">(.+?)<\\/script/)?.[1]||'{}').props?.pageProps?.reactQueryDehydratedState?.queries;\nif(!$)return '';\n$=Object.values($).find(i=>i?.state?.data?.product?.images)?.state?.data?.product?.images||[];\nreturn $.map(i=>[i.originalUrl])", "img": "^(imgproxy\\.kuper\\.ru/imgproxy/)size-\\d+-\\d+(?:-2x)?", "to": "$1width-auto", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/muvbczi\nOLD\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/m8bj2sn\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=2100#13\n\n\nПРИМЕРЫ\nhttps://kuper.ru/multisearch?q=кофе&sid=107\nhttps://kuper.ru/multisearch?q=чай%20в%20пакетиках&sid=107" }, "Lamnia-s": { "link": "^lamnia\\.com/\\w+/\\w/\\d+/[\\w%-]+/[\\w%-]+", "res": ":\nvar i = $._.indexOf('class=\"lamnia-slider');\nif(i<0) {return null; }\nvar t = $._.indexOf('</a></div>', i);\nif(t<0) {return null; }\nvar res = [];\nvar re = /src=\"([^\"]+)\"/gi\nvar data=$._.substring(i,t);\nvar a = re.exec(data);\nwhile(a) {\n res.push([a[1].replace('140x140','800x800')]);\n a = re.exec(data);\n}\nreturn res;\n", "note": "Baton34V\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3660#18\n\nПРИМЕРЫ\nhttps://www.lamnia.com/ru/br/16/ножи-и-складные-ножи-böker\nhttps://www.lamnia.com/ru/sc/91/туризм/палатки-тенты-и-походные-сауны" }, "Last.fm": { "img": "^((?:img\\d-ak\\.lst\\.fm|lastfm(?:.freetls.fastly|-img\\d\\.akamaized)\\.net)/i/u/)[^/]+/", "to": "$1", "note": "EXAMPLES\nhttps://www.last.fm/tag/jazz/artists\nhttps://www.last.fm/tag/rock/albums\nhttps://www.last.fm/music/Agust+D/_/Haegeum" }, "lazy...info": { "img": "^(img00\\d\\.lazy(g(?:irl|adget|ame)|boy|car|sport)|lzimages\\.lazygirl)(s\\.info/.+)\\.m?thumb", "to": ":\nreturn $[1] + $[3] + (/girl|boy/.test($[2]||'') ? '.sized' : '')", "note": "EXAMPLES\n???" }, "LemanaPro.ru-s": { "link": "^(?:\\w+\\.)?lemanapro\\.ru/product/[\\w-]+/", "res": ":\nreturn JSON.parse($._.match(/window\\.INITIAL_STATE\\[\"pdp\"\\]=({.+?});;/)?.[1]||'{}')?.pdp?.pdp.product.media.images.map(i=>[i.url])||''", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/18n32dx/comment/kege667\nOLD\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1460#21\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=540#19\n\n\nПРИМЕРЫ\nhttps://lemanapro.ru/offer/tovary-dlya-uyuta-v-dome/\nhttps://tver.lemanapro.ru/search/?q=кухонные%20гарнитуры&suggest=true\nhttps://kemerovo.lemanapro.ru/catalogue/stoly-dlya-dachi/?fromRegion=6607" }, "Lenta-s": { "link": "^lenta\\.com/product/[\\w-]+", "res": ":\nreturn [...$._.matchAll(/srcset=\"(\\S+) 1600w\" alt=/g)].map(i=>[i[1].replace(/\\/\\d+x\\d+\\//,'0x0')])", "img": "^(cdn\\.lentochka\\.lenta\\.com/resample/webp/)\\d+x\\d+", "to": "$10x0", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/loi4z1z\nOLD\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=100#8\n\n\n!!!\nДля просмотра галереи целиться чуть в сторону от фото товара.\n\n\nПРИМЕРЫ\nhttps://lenta.com/search/энергетик\nhttps://lenta.com/catalog/myaso-ptica-kolbasa/\nhttps://lenta.com/catalog/miksery-i-blendery-1440/\nhttps://lenta.com/catalog/shokolad-batonchiki-konfety-18492/" }, "Letterboxd": { "link": "^(letterboxd\\.com/)(?:[^/]+/)?(film/[^/]+)/?$", "url": ": this.lb_stats ? `https://${$[1]+$[2]}/` : `https://${$[1]}csi/${$[2]}/stats/`", "res": ":\nconst show_background_image = true // True includes background image in album.\n\nconst use_country_for_release = '' // To use the release date for a specific country, change '' to a country. For example, 'USA', 'France' or 'South Korea'. For it to work correctly, the text needs to match the country name in releases.\n\nconst content_rating_country = 'USA' // Which country to use for content rating.\n\n\nif(!this.lb_stats){\nthis.lb_stats = {\nviews: $._.match(/hed by ([0-9,]+)/)?.[1],\ntop: $._.match(/Top 250\" data-html=\"true\".+\"label\">(\\d+)/)?.[1]\n}\nreturn {loop:$[0]}\n}\n\nconst o = JSON.parse($._.match(/<!\\[CDATA\\[[^{]{0,15}(\\{\".*?})\\n/)?.[1]||'{}')\nif(!o.name)return null\n\nconst title = o.name\nconst country = o.countryOfOrigin?.map(i=>i.name).join(', ')\nconst runtime = $._.match(/(\\d+) mins/)?.[1]\nconst releaseDate = $._.match(RegExp(`class=\"date\">([^<]+)<[^\\n]+\\n(?:[^<]+<(?!/ul>))*span class=\"name\">(${use_country_for_release||country})<`))||$._.match(/class=\"date\">([^<]+)<.+?span class=\"name\">([^<]+)/s)\nconst contentRating = $._.match(RegExp(`>${content_rating_country}</span><span class=\"release-certification-badge\"><span class=\"label\">([^<]+)<`))\nconst genre = o.genre?.join(', ')\nconst rating = o.aggregateRating?.ratingValue&&(o.aggregateRating?.ratingValue?.toFixed(1)||'undefined')+'/5 ('+o.aggregateRating?.ratingCount.toLocaleString()+')'\nconst plot = $._.match(/\"description\" content=\"([^\"]+)/)?.[1]||''\nconst director = o.director?.map(i=>i.name)\nconst writer = [...$._.matchAll(/\"\\/writer\\/[^\\/]+\\/\" class=\"text-slug\">([^<]+)/g)].map(i=>i[1])\nconst cast = [...$._.matchAll(/<a title=\"([^\"]+)\" href=\"[^\"]+\" class=\"text-slug tooltip\">([^<]+)<\\/a>/g)].flatMap((i,n)=>n<18||(!/\\([^\\)]+\\)/.test(i[1])&&n<30)?[i[2],i[1]?.replace(/([^\\(]+)(\\s\\(|$)/,'($1)$2')].filter(Boolean).join(' '):[])\nconst studio = o.productionCompany?.map(i=>i.name).join(', ')\nconst views = this.lb_stats.views\nconst top = this.lb_stats.top\n\ndelete this.lb_stats\n\nconst altSrc = this.node.parentNode.parentNode?.firstChild?.src\n\nconst poster = [o.image?.replace(/.+/,'#$&').replace(/0-\\d+-0-\\d+/,'0-2000-0-3000')||'',o.image?.replace(/0-\\d+-0-\\d+/,'0-600-0-900')||'https://s.ltrbxd.com/static/img/icons/touch-icon-192x192.257b84e7.png'].filter(Boolean)\n\nconst altPoster = altSrc?.length&&/alternative-/.test(altSrc)?[altSrc?.replace(/.+/,'#$&').replace(/0-\\d+-0-\\d+/,'0-2000-0-3000')||'',altSrc?.replace(/0-\\d+-0-\\d+/,'0-600-0-900')||''].filter(Boolean):''\n\nconst backgroundImage = show_background_image&&[[$._.match(/data-backdrop2x=\"([^\"]+)/)?.[1].replace(/.+/,'#$&')||'',$._.match(/data-backdrop=\"([^\"]+)/)?.[1]||''].filter(Boolean),'']\n\nconst t = [`<span style=\"font-size: 120%; font-weight: bold;\">${title}</span>`,country,[runtime&&(Math.floor(runtime/60)+' hr ').replace('0 hr ','')+runtime%60+' min'+(runtime>60?' ('+runtime+' min)':''),releaseDate&&releaseDate[1]+' ('+releaseDate[2]+')'].filter(Boolean).join(' - '),[genre,contentRating?.[1]].filter(Boolean).join(' - '),[rating&&'<b>⭐</b> '+rating,views&&'<b>👁️</b> '+views,top&&'<b>👑</b> '+top].filter(Boolean).join(' '),'\\n<b>Plot</b>\\n'+plot,director&&'\\n<b>Director'+(director.length>1?'s':'')+':</b> '+director.join(', '),writer?.length&&'<b>Writer'+(writer.length>1?'s':'')+':</b> '+writer.join(', '),cast?.length&&'\\n<b>Top cast</b>\\n'+cast.join('\\n'),studio&&'\\n<b>Production companies</b>\\n'+studio].filter(Boolean).join('\\n')\n\nthis.TRG.IMGS_ext_data = [altPoster, poster, backgroundImage[0]?.length&&backgroundImage].filter(Boolean).map((i,n)=>[i,(!n?`<imagus-extension type=\"sidebar\">${t}</imagus-extension>`:'')])\n\nreturn {loop:'imagus://extension'}", "img": "^(a\\.ltrbxd\\.com/resized/(?:film-poster/(?:\\d/){5}|sm/upload).+-0-)\\d+-0-\\d+(-crop\\.jpg.*)", "to": "#$12000-0-3000$2\n$1600-0-900$2", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/10yldvb/comment/nt3p7hy\nOLD\nhttps://www.reddit.com/r/imagus/comments/10yldvb/comment/m562mrh\nhttps://www.reddit.com/r/imagus/comments/10yldvb/comment/m4tt4bg\n\n\n\nEXAMLPLES\nhttps://letterboxd.com/search/films/BOX/\nhttps://letterboxd.com/director/james-gunn/\nhttps://letterboxd.com/dave/list/official-top-250-narrative-feature-films/" }, "LibertyCity.ru_gallery": { "img": "^(libertycity\\.ru/uploads/gallery/)thumb(/.+\\.(?:jpe?g|gif|png))$", "to": "$1main$2", "note": "Rodny\n\nПРИМЕРЫ\nhttp://www.libertycity.ru/gallery/" }, "LifeIsPhoto.ru-g": { "img": "^(photos\\.lifeisphoto\\.ru/\\d+/)[012](/\\d+\\.(?:jpe?g|gif|png))$", "to": "$1#3 2 0#$2", "note": "Rodny\n\nПРИМЕРЫ\nhttps://www.lifeisphoto.ru/gallery.aspx\nhttps://www.lifeisphoto.ru/theme.aspx?id=20\nhttps://www.lifeisphoto.ru/page.aspx?id=75365" }, "Likey.me": { "link": "^likey(?:\\.me/post/\\d+|_album/(.+))", "url": ": $[1] ? 'data:,'+$[1] : $[0]", "res": ":\nif($[1])return $[1].split(\"!\").map(i=>[i]);\nreturn [...$._.matchAll(/,url:\"([^\"]+)/g)].map(i=>[i[1].replace(/\\\\u002F/g,'/')])", "img": "^static\\.likeycontents\\.xyz/media/\\d+/post_([^_]+_)+thumb\\..*", "loop": 2, "to": ":\nconst show_images_as_album = true\n\nlet l, m=[...document.body.outerHTML.matchAll(/,url:\"([^\"]+)\",height:\\w,thumbnailUrl:\"([^\"]+)/g)].map(i=>i.map(x=>x.replace(/\\\\u002F/g,'/')));\nif(l=!m.length&&this.node.closest('section')?.getAttribute('id'))return '//likey.me/'+l.replace('_','/');\nif(show_images_as_album)return '//likey_album/'+m.map(i=>i[1]).join(\"!\");\nm=m.find(i=>RegExp($[1]).test(i[2]));\nreturn m[1]||''", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/1enkj8i/comment/lh90355\n\n!!!\nIn order for the sieve to play video, you need to install the uBO (uBlock Origin) extension:\nIn uBO Settings -> My Filters -> Add these line:\nlikey.me##.overlay-wrap\n\n\nEXAMPLES\n(account needed)\nhttps://likey.me/swanee_river\nhttps://likey.me/post/5598761400467456" }, "LinkedIn-b": { "img": "^(media\\.licdn\\.com/mpr/mpr/)shrink[^/]+/", "to": "$1", "note": "!!!\nНужен аккаунт.\n\nПРИМЕРЫ / EXAMPLES\n??" }, "Listal": { "link": "^listal\\.com/(list|video|viewimage)/.*", "res": ":\nlet m;\nconst html = new DOMParser().parseFromString($._, \"text/html\");\nif($[1]==='video'){\nm = html.querySelector('iframe[src]')?.src\nreturn m&&m.length ? {loop:m} : ''\n} else if ($[1]==='viewimage'){\nm = html.querySelector('img[class=\"pure-img\"]')\nreturn [m.src.replace(/\\/\\d+full/,'/5000full'),m.alt]\n}else{\nreturn [...html.querySelector('div[id=\"customlistitems\"]')?.querySelectorAll('img[class=\"pure-img\"],img[loading=\"lazy\"],img[class=\"whiteshelfimage\"],img[src^=\"https://collage\"]')].map(i=>[i.src.replace(/\\d+full/,'5000full').replace(/\\?.*$/,'').replace(/(image\\/products\\/)\\d+/,'$15000'),[...new Set([i.alt,i.parentNode.parentNode.querySelector('div[class=\"text listnote\"],div[class=\"listsettitle2\"]')?.innerText.replace(/[\\n\\t]/g,'')])].filter(Boolean).join(\" | \")])\n}", "img": "^(?:([lp]thumb\\.lisimg\\.com/[^?]+).*|list\\.lisimg\\.com/image/(\\d+)/\\d+full\\.jpg)", "to": ":\nreturn $[1] ? $[1] :\n`#//list.lisimg.com/${$[2]}/5000full.jpg\\n//list.lisimg.com/${$[2]}/1024full.jpg`", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/130svfu/comment/jqhm6hq\n\nEXAMPLES\nhttps://www.listal.com/promoted/all/4\nhttps://www.listal.com/list/beautiful-world-unicornsugar\nhttps://www.listal.com/gigi-hadid/videos\nhttps://www.listal.com/gigi-hadid/pictures" }, "LiveJournal_pics-h": { "link": "^pics\\.livejournal\\.com/(\\w+)/pic/(\\w+)(/.*)?", "to": "pics.livejournal.com/$1/pic/$2", "note": "megabooster\n\nПРИМЕРЫ\nhttp://lj-photophile.livejournal.com/1994080.html" }, "LiveStreamFails-h": { "link": "^livestreamfails\\.com/(?:clip|post)/(\\d+)", "url": "api.livestreamfails.com/clip/$1", "res": ":\nconst data = JSON.parse($._);\nreturn data ? [`https://livestreamfails-video-prod.b-cdn.net/video/${data.videoId}`, data.label] : null;", "note": "Hakkin\nhttps://www.reddit.com/r/imagus/comments/mm0f4e/sieve_for_livestreamfailscom/\n\nEXAMPLES\nhttps://livestreamfails.com/\nhttps://www.reddit.com/domain/livestreamfails.com/new" }, "LKI.ru": { "img": "^((?:\\w+\\.)?lki\\.ru/Txt\\d+/\\d+/[^/]+/)Small/([^/]+\\.(?:jpe?g|png|gif|bmp))$", "to": "$1Main/$2", "note": "Rodny\n\nПРИМЕРЫ\nhttp://www.lki.ru/text.php?id=5755" }, "loc.gov_pictures": { "img": "^(tile\\.)?(loc\\.gov/storage-services/service/pnp/)(.*?)_\\d+.*(?:jpe?g|png)", "to": "$1$2$3r.#jpg jpeg png#", "note": "gpl2731\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1120#13\n\nEXAMPLES\nhttps://www.loc.gov/pictures/search/?q=1860-1870&co=gld\nhttps://www.loc.gov/exhibits/herblock/classic-cartoons-by-a-master.html\nhttps://www.loc.gov/pictures/related/?va=exact&co=app&st=gallery&q=Alfred+Whital+Stern+Collection+of+Lincolniana+(Library+of+Congress)+DLC&fi=author&sg=true&op=EQUAL" }, "LostFilm.info": { "img": "^(lostfilm\\.info/images/)\\d+", "to": "$1", "note": "ПРИМЕРЫ\nhttp://lostfilm.info/posters/\nhttp://lostfilm.info/photosall/\nhttp://lostfilm.info/photos/889073/" }, "LostFilm.tv_poster-p": { "link": "^lostfilm\\.tv/news/id\\d+", "res": ":\nconst m=[...$._.matchAll(/\"play-btn\" data-src=\"([^\"]+)/g)].map(i=>[['#'+i[1].replace('_480p','_1080p'),i[1]]])\nreturn [...$._.matchAll(/img\\s+src=\"([^\"]+)\"\\s+data-description=/g)].map(i=>[i[1].replace('/m_','/')]).concat(m)", "img": "^(?:(static\\.lostfilm\\.(?:tv|run|uno|top)\\/Images\\/\\d{3}\\/Posters\\/)i(?:con|mage)(_\\w+\\.(?:jpe?g|png|gif))|(static\\.lostfilm\\.top/Images/\\d+/Posters/)image(\\.jpg))$", "to": ":\nreturn $[1]?$[1]+'shmoster'+$[2]:$[3]+'poster'+$[4]", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/130svfu/comment/k2v12dv\nOLD\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3500#5\n\n!!!\n- Курсор нужно наводить на левый верхний край миниатюры.\n- Если появляется ошибка \"желтый спиннер\" - значит в новости отсутствует нужный источник изображения.\n\n\nПРИМЕРЫ\nhttps://www.lostfilm.tv/new/\nhttps://www.lostfilm.tv/news/type_3\nhttps://www.lostfilm.tv/movies/?type=search&s=3&t=0" }, "LostFilm.tv_photo-p": { "img": "^(static\\.lostfilm\\.(tv|run|uno|top)/Gallery/\\w/\\w/\\w/)(?:m|t)_(\\w+\\.(?:jpe?g|png|gif))$", "to": "$1$3", "note": "Baton34V\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3500#5\nOLD\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=2640#4\n\nПРИМЕРЫ\nhttps://www.lostfilm.tv/series/Squid_Game/photos" }, "LPI.usra.edu": { "img": "^(lpi\\.usra\\.edu/resources/[^/]+/[^/]+/)(thumbs?|browse)/(.+)(\\.jpe?g)$", "to": ":\nconst filler = ($[2] === \"thumb\") ? \"browse\" : \"images\";\nreturn `${$[1]}${filler}/${$[3]}${$[4]}`", "note": "gpl2731\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1120#15\n\nEXAMPLES\nhttps://www.lpi.usra.edu/resources/cla/book/\nhttps://www.lpi.usra.edu/resources/lunarorbiter/\nhttps://www.lpi.usra.edu/resources/ranger/catalog/7/A/\nhttps://www.lpi.usra.edu/resources/apollo/catalog/metric/revolution/?AS15R27\nhttps://www.lpi.usra.edu/resources/apollopanoramas/" }, "Mage-g": { "img": "^(resize\\.mage\\.space/plain/)dpr:[^/]+/width:\\d+/", "to": "$1", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/16ynt5a/comment/k3ady54\n\nEXAMPLES\nhttps://www.mage.space/explore" }, "Magnit.ru_Apteka+Cosmetic-s": { "link": "^(?:apteka|cosmetic)\\.magnit\\.ru/product/[\\w-]+", "res": ":\nreturn JSON.parse($._.match(/data-ssr=\"true\" id=\"__NUXT_DATA__\">(.+?)<\\//)?.[1]||'[]').filter(i=>/\\/rs:fit:1600/.test(i)).map(i=>[i])", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/mv1g86a\nOLD\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/lohqhfa\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=640#7\n\n\nПРИМЕРЫ\nhttps://apteka.magnit.ru/search?q=антибиотики\nhttps://apteka.magnit.ru/catalog/vitaminy_i_bad/vitaminy_i_mineraly/\nhttps://cosmetic.magnit.ru/catalog/28475-dom\nhttps://cosmetic.magnit.ru/catalog/43435-dlya-muzhchin?shopCode=942311" }, "MAIL.RU_cloud-h": { "link": "^cloud\\.mail\\.ru/[^/]+/\\w{4}/\\w{9}\\b", "res": ":\nconst u='https://thumb.cloud.mail.ru/weblink/thumb/xw'\n$=JSON.parse($._.match(/cloudSettings=({.+?})<\\//)[1].replace(/,\"FOOTER\":.+?\\/footer>\"/,'').replace(/\\\\x3c/g,'\\\\\\\\x3c')||'{}').params\nif(/\\.(?:3g[2p]|a(?:mv|sf|vi)|drc|f(?:lv|4[vpab])|gifv?|m[42ko]v|mng|mp[g42ev]|mpeg|m2?ts|ts|mxf|nsv|og[vg]|r(?:m(?:vb)?|oq)|svi|v(?:iv|ob)|w(?:ebm|mv)|yuv)$/i.test($?.serverSideFolders?.name||'')){\nthis.TRG.IMGS_ext_data = [\n '//' + 'data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"640\" height=\"360\"></svg>',\n `<imagus-extension type=\"videojs\" url=\"${$?.DISPATCHERS.videowl_view.url}/0p/${btoa($.serverSideFolders.weblink)}.m3u8?double_encode=1\"></imagus-extension>`\n]\nreturn {loop:'imagus://extension'}\n}\nconst t=`<imagus-extension type=\"\"></imagus-extension>` // This is needed to fix a bug where [Extension] sometimes interferes with albums.\n$=$?.serverSideFolders\nreturn $?.list?$.list.map(i=>[['#'+u+'1/'+i.weblink,u+'0/'+i.weblink],t]):$?.weblink?[[['#'+u+'1/'+$.weblink,u+'0/'+$.weblink]]]:''", "img": "^(thumb\\.cloud\\.mail\\.ru/weblink/thumb/xw)\\d+", "to": "#$11\n$10", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/lonuess\nOLD\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/kstwfsp\n\n\n!!!\nДля работы с \"облачным\" видео на хромиум-браузерах требуется правило для SMH (см. ЧаВо п.12).\n\n\nПРИМЕРЫ\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1360#11" }, "MAIL.RU_news-m": { "link": "^(?:[^/]+\\.)?mail\\.ru/[^/]+/[^/]*\\d{6,}/", "res": ":\n$=JSON.parse($._.match(/window\\.__PRELOADED_STATE__ARTICLE\\s*=\\s*({.+?})[\\n;]/)[1]).article;\nconst t=$.description;\n$=$.content.find(i=>i.type==='picture')?.attrs?.images?.large?.url;\nreturn $ ? [$,t] : ''", "img": "^(retina\\.news\\.mail\\.ru/)prev\\d+x\\d+/", "to": "$1/", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/n9cfz4t\nOLD\nhttps://new.reddit.com/r/imagus/comments/z0zyox/comment/kscvc0c\n\n!!!\nВ заголовке окна Имагус добавляется текст новостей.\n\n\nПРИМЕРЫ\nhttps://news.mail.ru/economics/\nhttps://news.mail.ru/society/\nhttps://news.mail.ru/society/52396812/" }, "MAIL.RU_video-h": { "link": "^my\\.mail\\.ru/(?:[^/]+/){0,3}video/(?:(?:[^/]+/)*\\d+\\.html|meta)", "res": ":\nif($._[0]!=='{')return {loop:$._.match(/\"metaUrl\":\\s+\"([^\"]+)/)[1]}\n$=JSON.parse($._)\nreturn $.videos ? [[['#'+$.videos[0].url,$.videos?.[1]?.url],$.meta?.title||'']] : ''", "img": "^(?:(?:img\\d*\\.)?(?:content(?:-\\d+)?\\.)?(?:f|ph)(oto\\.(?:my\\.)?mail\\.ru/)(?:images/)?((?:mail|bk|list|corp|community)[/=][^/=]+[/=][^/=]+[/=])(?:s?p|ii?)(-\\d+)|filed\\d+-\\d+\\.my\\.mail\\.ru/pic\\?url=([^&]+).*)", "to": ":\nreturn $[4] ? decodeURIComponent($[4]).replace(/\\/i(-\\d+\\.[^?]+).*/, '/h$1') : 'content.f' + $[1] + $[2].replace(/=/g, '/') + 'h' + $[3];", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/nn7hikb\nOLD\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/ksj1la8\n\nEXAMPLES\nhttps://my.mail.ru/mail/cyrella/video\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1360#11" }, "MakeAGif-g-p": { "useimg": 1, "link": "^(makeagif\\.com/)(?:i/|gif/[^?/]+)?([\\w-]{6})(?:$|\\?.*)", "url": "//$1i/$2", "res": "data-src=\"([^\"]+)\"\n--elips\"\\s+title=\"([^\"]+)", "img": "^(?:cdn\\.|i\\.)?(makeagif\\.com/media/\\d+-\\d+-\\d{4}/)t([\\w-]{6}).*", "to": "//i.$1$2.#mp4 gif#", "note": "EXAMPLES\nhttps://makeagif.com/search?q=GOOD\nhttps://www.reddit.com/domain/makeagif.com/new/" }, "MakeaMeme-g": { "link": "^(makeameme\\.org/m)eme(/[^?/#]+)(?:/raw)?$", "img": "^(makeameme\\.org/m)edia/created/\\d+(/[^.]+)\\.jpg$", "to": "$1edia/created$2.jpg", "note": "EXAMPLES\nhttps://www.reddit.com/domain/makeameme.org/new/" }, "MakerWorld": { "link": "^makerworld\\.com\\/\\w\\w\\/models\\/\\d+-[\\w_-]+", "res": ":\nlet jsn=$._.match(/<script id=\"__NEXT_DATA__\" type=\"application\\/json\">({.+})<\\/script>/)[1];\nlet jsnP=JSON.parse(jsn);\nlet r=[];\njsnP.props.pageProps.design.designExtension.design_pictures.forEach(\n  p=>{\n    r.push([p.url]);\n  }\n);\nreturn r;\n", "note": "Baton34V\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=3040#4\n\nEXAMPLES\nhttps://makerworld.com/en/3d-models\nhttps://makerworld.com/en/search/models?makersSupply=true&keyword=RED" }, "ManyVids-x-p": { "link": "^(manyvids\\.com/)Video/(\\d+).*", "url": "https://www.$1bff/store/video/$2/private", "res": ":\n$=JSON.parse($._).data;\nreturn $.filepath||$.teaser?.filepath ? [[['#'+($.filepath||$.teaser?.filepath),$.transcodedFilepath||''],'']] : ''", "note": "imqswt\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/luhjuwc\nOLD\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3720#4\n\nEXAMPLES\nhttps://www.manyvids.com/Vids?community=Gaming\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1360#11" }, "Marvel-m": { "img": "^(cdn\\.marvel\\.com/u/prod/marvel/i/[a-z]{2}/\\w+/\\w+/[a-f0-9]+/)[^.]+", "to": "$1clean", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/1el30w9/comment/lgoyij4\n\nEXAMPLES\nhttps://www.marvel.com/comics/series/27564/xforce_2019_present" }, "MaximKorea-m": { "img": "^(maximkorea\\.net/\\w+/\\w+/\\d+/\\w+_\\w+_\\d+(?:_img)?)_\\d+\\.", "to": "$1.", "note": "imqswt\nhttps://www.reddit.com/r/imagus/comments/1fnhhd3/comment/lom7p25\n\nEXAMPLES\nhttps://www.maximkorea.net/magdb/magdb_view.php?lib=M&number=271\nhttps://www.maximkorea.net/magdb/magdb_view.php?lib=M&number=282" }, "mlbpark": { "link": "^mlbpark\\.donga\\.com/mp/b\\.php\\?id=\\d+", "res": ":\n$=[...new DOMParser().parseFromString($._,\"text/html\").getElementById('contentDetail').querySelectorAll('img[src],source[src],iframe[src]')]\nif($.some(i=>i.nodeName==='IFRAME')){\nthis.TRG.IMGS_ext_data=$.map(i=>i.nodeName==='IFRAME'?['',`<imagus-extension type=\"videojs\" url=\"${i.src}\"></imagus-extension>`]:[i.src,''])\nreturn {loop:'imagus://extension'}\n}\nreturn $.map(i=>[i.src])", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/17ga8mw/comment/k6si64v\n\nEXAMPLES\nhttps://mlbpark.donga.com/mp/b.php?p=1&b=bullpen&id=202310230086754920\nhttps://mlbpark.donga.com/mp/b.php?m=search&p=1&b=bullpen&id=202310190086674010" }, "mcgl.ru": { "link": "(i\\.mcgl\\.ru/[A-Za-z0-9]+$)", "img": "(i\\.mcgl\\.ru/[A-Za-z0-9]+$)", "to": "$1", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/130svfu/comment/jnrcrmb\n\nПРИМЕРЫ\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1360#11" }, "MediaFire-h": { "link": "^(mediafire\\.com/)(?:view|file)(/.+)", "loop": 1, "url": "https://www.$1file$2", "res": "aria-label=\"Download file\"\\n\\s*href=\"([^\"]+)", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/nwp7d7u\nOLD\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/n5e9jew\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/mu4rzz4\n\n\n\nEXAMPLES\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1360#11" }, "Medium-p": { "useimg": 1, "link": "^(?:[^/.]+\\.)?medium\\.com/(?:@?[\\w-]+/)?(?:[\\w-]+-)+\\w+(?:$|\\?.+)", "img": "^((?:cdn-images-\\d|miro)\\.medium\\.com/)[^?]+/([^?]+).*", "to": ":\nif($[1])return `#${$[1]}${$[2]}\\n${$[1]}max/1024/${$[2]}`\nif(!/medium\\.com$/.test(location.hostname))return ''\nconst m=[...this.node.offsetParent.querySelectorAll('img')||[]].sort((a,b)=>(b.height*b.width)-(a.height*a.width))?.[0]?.src?.match(/^(https:\\/\\/(?:cdn-images-\\d|miro)\\.medium\\.com\\/)[^?]+\\/([^?]+).*/);\nreturn m ? `#${m[1]}${m[2]}\\n${m[1]}max/1024/${m[2]}` : ''", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/lhtutsc\n\nEXAMPLES\nhttps://medium.com/tag/fintech\nhttps://medium.com/@akshay1230789/10-explosive-data-science-job-trends-reshaping-careers-in-2024-3a21b99d4b9b" }, "Meetup-p": { "link": "^meetup\\.com/(?:(?:[^-]+-)+\\w+(?:/[^/]+)*/?|\\w+)$", "res": ":\nreturn $._.match(/<meta property=\"og:image\"\\s+content=\"([^\"]+)/)?.[1].replace(/\\d+_/,'highres_')||''", "img": "^((?:a\\d+\\.e\\.akamai\\.net/secure|photos\\d*|secure)\\.meetupstatic\\.com/photos/[^_]+/)(?!highres)[^_]+", "to": "$1#highres member#", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/ktwgt80\n\nEXAMPLES\nhttps://www.meetup.com/find/?keywords=Pickleball\nhttps://www.meetup.com/find/?source=EVENTS&dateRange=tomorrow&location=fr--Paris\nhttps://www.meetup.com/find/?source=GROUPS&location=gb--London" }, "MegaMarket.ru-s": { "link": "^megamarket\\.ru/(?:catalog|promo-page)/details/(?:#\\?slug=)?[\\w-]+-([\\d_]+)[&/]", "url": "data:,$&", "res": ":\nconst x=new XMLHttpRequest();\nx.open('GET',$[0].replace(/promo-page(\\/details\\/)#\\?slug=([^&]+).*/,'catalog$1$2'),false);\nx.send();\nif(/get_cookie_spsc_encrypted_part/.test(x.responseText)&&!/\\?/.test($[0])){\nx.open('GET',$[0]+'?oirutpspid'+document.cookie.match(/spid(=[^;]+)/)[1]+'&oirutpspsc'+document.cookie.match(/spsc(=[^;]+)/)[1]+'&oirutpspjs'+document.cookie.match(/spjs(=[^;]+)/)[1],false);\nx.send();\n}\n$._=x.responseText;\nvar i = $._.indexOf('<div class=\"scroller__content scroller_enlarged\">');\nif(i<0) {i = $._.indexOf('<div class=\"pdp-first-screen-regular__gallery-and-attr\">');}\nif(i<0) {return null; }\nvar t = $._.indexOf('</div></div>', i);\nif(t<0) {return null; }\nvar res = [];\nvar re = /gallery[_-][^\"]+?\"><img src=\"([^\"]+)\"/gi\nvar data=$._.substring(i,t);\nvar a = re.exec(data);\nwhile(a) {\n res.push([a[1]]);\n a = re.exec(data);\n}\n// reviewPhoto\nx.open('POST', 'https://megamarket.ru/api/mobile/v1/catalogService/productCardReviewInfo/get',false);\nx.setRequestHeader('content-type', 'application/json');\nx.send('{\"goodsId\":\"' + $[1] +'\",\"auth\":{\"locationId\":\"50\",\"appPlatform\":\"WEB\",\"analyticsDeviceId\":\"\",\"os\":\"UNKNOWN_OS\"}}');\nif (x.readyState != 4) return res;\nif (x.status != 200) return res;\nvar c = JSON.parse(x.responseText).previewMediaGalleryItems;\nc.forEach(function(obj) {\n res.push([obj.url]);\n});\n\nreturn res;", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/mo2ad5u\nOLD\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/m8ca6ev\nhttps://www.reddit.com/r/imagus/comments/18n32dx/comment/kebeozx\n\n\n\n!!!\n- фильтр показывает не только всю галерею фотография товара, но и фото товара от самих покупателей (несколько первых);\n- фильтр не работает на товарах со значком ГАММА.\n\n\nПРИМЕРЫ\nhttps://megamarket.ru/catalog/chay/\nhttps://megamarket.ru/catalog/divany/\nhttps://megamarket.ru/catalog/?q=форель%20слабосоленая&suggestionType=constructor" }, "Memozee-g": { "img": "^(animal\\.memozee\\.com)/Thumb(\\d+)/thumb-(\\d+)\\.jpg$", "to": "#$1/Arch$2/$3.jpg\n$1/Arch$2/$3-m.jpg", "note": "Rodny\n\nEXAMPLES\nhttp://animal.memozee.com/list.php\nhttp://animal.memozee.com/list.php?&p=3800" }, "Meshok-s": { "link": "^meshok\\.net/(?:[a-z]{2}/)?item/(\\d+)_[\\w%-]+", "url": "https://meshok.net/api/command/lots/get-lot-by-id :{\"lotId\":$1}", "res": ":\nreturn JSON.parse($._).result.pictures?.map(i=>[i.url])||''", "img": "^(itemimg\\.com/i/\\d+\\.\\d)\\.\\d+x\\d+s?(\\.[a-z]+).*", "to": "b.$1$2", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/landzre\nOLD\nhttps://www.reddit.com/r/imagus/comments/130svfu/comment/jyduj9s\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3660#7\n\n!!!\nКурсор следует наводить на название товара.\n\nПРИМЕРЫ\nhttps://meshok.net/listing?good=1011" }, "Metro-cc.ru-s": { "link": "^online\\.metro-cc\\.ru/products/[\\w-]+", "res": ":\nlet i = $._.indexOf('images:[');\nif(i<0) { return null; }\nlet t = $._.indexOf(']', i);\nif(t<0) { return null; }\nlet jsn=JSON.parse('{\"images\":'+$._.substring(i+7,t+1)+'}');\nlet res = [];\nfor (img of jsn.images) {\n res.push([img]);\n}\nreturn res;", "note": "Baton34V\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1020#16\nOLD\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=400#2\n\nПРИМЕРЫ\nhttps://online.metro-cc.ru/category/chaj-kofe-kakao/chay\nhttps://online.metro-cc.ru/category/rybnye/moreprodukty" }, "Microscope-s-p": { "link": "^microscope\\.com/(?:catalog/product/view/id/\\d+/category/\\d+/|[^-]+-[^.]+\\.html$)", "res": ":\nreturn JSON.parse($._.match(/(\\[{\"thumb\".+?\\]),/)?.[1]||'[]').map(i=>[['#'+(i.videoUrl||i.full),i.img],i.caption])", "img": "^(microscope\\.com/media/catalog/product/cache/(?:\\d+/)?)[a-f0-9]+", "to": "https://www.$135199edbacd6c0ae89d877a2f9a9c5b8", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/lohqhfa\nOLD\nhttps://www.reddit.com/r/imagus/comments/130svfu/comment/joowxsu\n\n\n!!!\nYou need to hover the cursor over the product name.\n\n\nEXAMPLES\nhttps://www.microscope.com/microscope-slides-accessories" }, "Midjourney-g": { "link": "^(midjourney\\.com/)jobs/([a-f0-9-]+).*", "url": "https://www.$1api/job-status :{\"jobIds\":[\"$2\"],\"_frontend_source\":\"useJobSubmitter_fetchJobStatus\"}", "res": ":\nconst m=JSON.parse($._)[0],v=m.video_segments?.length\nreturn ['https://cdn.'+$[1]+(v?'video/'+m.id:m.parent_id)+'/0'+(v?'.mp4':'_'+m.parent_grid+'.png'),m.full_command]", "useimg": 1, "img": "^(?:(cdn\\.midjourney\\.com/(video/)?[a-f0-9-]+/\\d+)(_\\d+)?|(s\\.mj\\.run/\\w+)).*", "to": ":\nreturn $[4] || $[1]+($[2] ? '.mp4' : $[3]+'.#png jpeg webp#')", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/o2dqc49\nOLD\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/lkmy7ux\n\nEXAMPLES\nhttps://www.midjourney.com/explore?tab=top" }, "Mile-stone.jp-s": { "link": "^b2b\\.mile-stone\\.jp/(?:[a-z]{2}/)?products/\\d+", "res": ":\nreturn [...$._.matchAll(/data-pswp-height=\"[^\"]+\"\\s+href=\"([^\"]+)/g)].map(i=>[i[1]])", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/1al7x7r/comment/kpgpw39\n\n\nEXAMPLES\nhttps://b2b.mile-stone.jp/ja/search/0/keyword=Roxy/\nhttps://b2b.mile-stone.jp/ja/products/00043976105" }, "Minds-p": { "img": "^(?:(cdn\\.minds\\.com/api/v1/media/thumbnails/\\d+).*|cdn\\.minds\\.com/api/v2/media/proxy\\?(?:[^&]+&)*?src=([^&]+).*)", "dc": 2, "to": "$1", "note": "!!!\nПоддержки видео пока нет.\n==\nThere is no video support yet.\n\n\nEXAMPLES\nhttps://www.minds.com/minds/?layout=grid" }, "Minitokyo-g": { "img": "^static([123]?\\.minitokyo\\.net/)(?:thumbs|view|downloads)(/\\d\\d/\\d\\d/\\d+)", "to": "static$1downloads$2", "note": "EXAMPLES\nhttp://www.minitokyo.net/Kuroshitsuji\nhttp://www.minitokyo.net/The+Legend+of+Heroes+Illustration+Artbook" }, "Mobygames": { "link": "(?:www\\.)?mobygames\\.com\\/game\\/[^,]+?,\\d+\\/", "res": "og:image\" content=\"([^\"]+)\"", "note": "Baton34V\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=2400#7\n\nПРИМЕРЫ / EXAMPLES\nhttps://www.mobygames.com/game/15632/flatout/screenshots/" }, "ModDB-p": { "link": "^moddb\\.com/(?:mod|game|engine)s/(?!(?:top|latest|add)$)[\\w-]+(?:/(video|image|new)s(/[\\w-]+)?)?/?$", "res": ":\nlet f=this.find, t=$[2]&&$[1]!=='new'&&$._.match(/\"thumbnailUrl\" href=\"([^\"]+)/), x=t&&f({src:t[1]}), m=[...$._.matchAll(/src=\"([^\"]+)\" alt=\"([^\"]*)\" (?:title=\"[^\"]*\" )?width=\"(?:\\d{4,}|[3-9]\\d{2}|\\d+%|auto)\" height=\"(?:\\d{4,}|[3-9]\\d{2}|\\d+%|auto)\"|#imagebox\", \"([^\"]+)\", \\d+, \"([^\"]*)/g)].map(i=>[f({src:i[1]||i[3]})||i[1]||i[3],i[2]||i[4]||'']);\nif(!$[1])m.unshift([$._.match(/\"og:image\" content=\"([^\"]+)/)[1],$._.match(/itemprop=\"d(?:escription|ownloadsummary)\"(?: content=\"|>)(.+?)[\"<]\\s*\\//s)?.[1]||'']);\nx=x&&m.findIndex(([i])=>Array.isArray(i)&&i.every((e,n)=>e===x[n]));\nreturn x ? {\"\":m,idx:x} : m", "img": "^(?:(media\\.moddb\\.com/)cache/(images/\\w+/\\d+/\\d+/\\d+/)(?:crop|thumb)_\\w+/(.+(?<!\\.[\\da-z]{3})\\.\\w{3,4})$|[^/]+(\\.com/cache/)image(s/\\w+/\\d+/\\d+/\\d+/)(?:crop|thumb)_\\w+(.+?\\.)(?:mp4\\.)?jpg)", "to": "$1$2$3\ncdn.dbolical$4video$5encode#720p #_mp4$6mp4", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/nwp7d7u\nOLD\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=2420#12\n\n\nПРИМЕРЫ / EXAMPLES\nhttps://www.moddb.com/games/diablo-2-lod/mods\nhttps://www.moddb.com/mods/battle-of-legends1" }, "ModelMayhem": { "useimg": 1, "link": "^modelmayhem\\.com/portfolio/pic/\\d+", "res": "=\"og:image\" content=\"([^\"]+)\n=\"og:description\" content=\"([^\"]+)", "img": "^(photos\\.modelmayhem\\.com/(?:photo|cover|potd/entrant|avatar)s(?:/\\d+)+/[^.]+)(?:_[^.]+|-small)\\.", "to": "$1# -big _m#.", "note": "EXAMPLES\nhttps://www.modelmayhem.com/portfolio/4427968/viewall\nhttps://www.modelmayhem.com/portfolio/2442527/viewall" }, "Motherless-x-p": { "link": "^(?:lm\\d\\.)?motherless\\.com/(\\w{1,9})(/\\w+)?", "res": ":\nif(!$[2]&&$[1][0]==='G'){\nlet m=[];\nfunction getVid(u){\nconst x=new XMLHttpRequest();\nx.open('GET',u,false);\nx.send();\nreturn x.responseText.match(/__fileurl = '([^']+)/)?.[1];\n}\n$._=[...new DOMParser().parseFromString($._,'text/html').querySelectorAll('div [class^=\"desktop-thumb \"]')];\n$._.forEach(i=>{i=i.getAttribute('data-mediatype')==='video' ? getVid(i.querySelector('a').href) : i.querySelector('img[class=\"static\"]')?.src?.replaceAll('thumb','image').replace('-zoom','');i&&m.push([i])});\nreturn m\n}\nreturn $._.match(/__fileurl = '([^']+)/)?.[1]||''", "img": "^(cdn\\d-)thumb(s\\.motherlessmedia\\.com/)thumb(s/\\w+)(?:-zoom)?", "to": "$1image$2image$3", "note": "imqswt\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/n4vjka0\nOLD\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=220#13\n\n!!!\nКурсор следует наводить на название видео.\n==\nThe cursor should be placed to the title of the video.\n\n\nEXAMPLES\nhttps://motherless.com/videos/recent\nhttps://motherless.com/u/iamamonstah?t=i\nhttps://motherless.com/term/galleries/galleries?term=galleries&range=0&size=0&sort=relevance" }, "Motorsport.tv-p": { "link": "^(motorsport\\.tv/)apps/(\\d+)/(\\d+)-.+-(\\d+)-\\d+$", "loop": 1, "url": ": !this.key ? `https://${$[1]}configuration.js` : 'data:,'+$[0]", "res": ":\nthis.motorsport_key=this.motorsport_key||$._.match(/\"api_key\":\"([^\"]+)/)[1]\nconst x=new XMLHttpRequest()\nx.open('POST','https://api.maz.tv/v1/streams/anonymous',false)\nx.setRequestHeader('Content-Type','application/json')\nx.send(`{\"cid\":\"${$[4]}\",\"progress\":0,\"platform\":\"web\",\"first_play\":true,\"pcid\":\"${$[3]}\",\"key\":\"${this.motorsport_key}\",\"app_id\":${$[2]},\"language\":\"en\",\"locale_id\":521}`)\n$=JSON.parse(x.responseText).files\nreturn $?.m3u8||$?.hls||this.node?.src?.replace(/-\\d+\\./,'.')||''", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/nnwjfpr\nOLD\nhttps://www.reddit.com/r/imagus/comments/173v0mm/comment/k48ognz\n\n!!!\nНеобходимо правило для SMH (см.ЧаВо, п.12).\n==\nNeed a rule for SMH (see FAQ, p.12).\n\n\nEXAMPLES\nhttps://motorsport.tv/channel/motorsportcom/12\nhttps://motorsport.tv/results?search_query=McLaren" }, "mp4porn|pornx|xporn-x-p": { "link": "^((?:(?:mp4|x)porn|pornx)\\.(?:space|rip))/(video|watch)/.+", "res": ":\nif($[2][0]==='v')return '//'+$[1]+$._.match(/url_v = \"([^\"]+)/)[1].replace(/(play)_/,'$1')+'#mp4';\n$='https://'+$[1]+$._.match(/var src = \"([^\"]+)/)[1]+'#.m3u8';\nthis.TRG.IMGS_ext_data=['//data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"640\" height=\"360\"></svg>',`<imagus-extension type=\"videojs\" url=\"${$}\"></imagus-extension>`];\nreturn {loop:'imagus://extension'}", "note": "imqswt\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/mzui626\nOLD\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/ktlr02x\n\n!!!\nSome videos (m3u8) are not supported on the xporn.rip.\n\nEXAMPLES\nhttps://xporn.rip/search?q=blond\nhttp://www.mp4porn.space/search?q=blond\nhttp://pornx.rip/search?q=blond" }, "mp4upload-h-p": { "link": "^(mp4upload\\.com/)(?:embed-)?(\\w+)(?:\\.html)?", "url": "https://www.$1embed-$2.html", "res": ":\nreturn $._.match(/src:\\s*\"([^\"]+)/)[1]+'#mp4upload_header'", "note": "imqswt\nhttps://www.reddit.com/r/imagus/comments/1qpzmyu/comment/o3iatcv\n\nEXAMPLES\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1360#11" }, "Multihoster.Saxonia-Fighter.de-h": { "img": "(multihoster\\.saxonia-fighter\\.de)/viewer\\.php\\?is_random=\\d&file=([^.]+\\.gif)", "to": "$1/images/$2", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/130svfu/comment/jn8v5j7\n\nEXAMPLES\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1360#11" }, "MVideo.ru-s": { "link": "^mvideo\\.ru\\/products\\/.+-(\\d+)$", "url": "https://www.mvideo.ru/bff/product-details?productId=$1", "res": ":\nvar res=[];\nJSON.parse($._).body.images.forEach(function(item){\n res.push(['https://img.mvideo.ru/'+item]);\n});\nreturn res;\n", "img": "(img\\.mvideo\\.ru/rimpic/)\\d+/(.+)", "to": "$1$2", "note": "Baton34V\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=380#20\nOLD\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=100#11\n\n!!!\nКурсор наводить на название товара.\n\nПРИМЕРЫ\nhttps://www.mvideo.ru/televizory-i-cifrovoe-tv-1/televizory-65/f/category=4k-uhd-televizory-1682/tolko-v-nalichii=da\nhttps://www.mvideo.ru/holodilniki-i-morozilniki-2687/holodilniki-i-morozilnye-kamery-159/f/tolko-v-nalichii=da/collection_top=nedorogie" }, "MyAnimeList": { "img": "^((?:myanimelist\\.cdn-dena\\.com|cdn\\.myanimelist\\.net)/)(?:r/[^/]+/)?(?:(s/[^.]+)|(images/[^.]+\\d+(?:_thumb)?)\\D*)\\.([^?]+).*", "to": ":\nreturn $[1]+($[2] || ($[3].indexOf('/userimages')>0 ? $[3].replace(/_?thumbs?\\/?/g,'') : $[3] + '#l #'))+'.'+$[4]", "note": "EXAMPLES\nhttps://myanimelist.net/topanime.php\nhttps://myanimelist.net/reviews.php?t=manga\nhttps://myanimelist.net/anime.php?q=BLACK&cat=anime" }, "MyDramaList": { "img": "^(i\\.mydramalist\\.com/[A-Za-z0-9]+_\\d)[a-z]", "to": "$1f", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/1eldvde/comment/lgthzho\n\nEXAMPLES\nhttps://mydramalist.com/shows/newest\nhttps://mydramalist.com/772323-love-hunter\nhttps://mydramalist.com/49865-psycho-but-it-s-okay/photos?page=2" }, "MyPhoto.eu-g": { "link": "^(.*myphoto\\.eu/\\w+/photo)/(\\d{6}/.+\\.(?:jpe?g|a?png|gif|svgz?|webp|w?bmp|xbm|pict|j(?:if|fif?)))", "url": "$1/big/$2", "res": "url\\((/photos/.+(?:jpe?g|a?png|gif|svgz?|webp|w?bmp|xbm|pict|j(?:if|fif?)))\\) no-repeat", "to": "https://myphoto\\.eu/$1", "note": "destiny child\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1380#10\n\nEXAMPLES\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1360#11" }, "NASA": { "img": "^(nasa.gov/sites/default/files/)styles/.+/public/(thumbnails/image/.+\\.jpg)", "ci": 2, "to": "$1$2", "note": "hababr\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1640#6\n\nEXAMPLES\nhttps://www.nasa.gov/mission_pages/station/images/index.html\nhttps://www.nasa.gov/multimedia/imagegallery/iotd.html\nhttps://science.nasa.gov/universe/graphics/" }, "NASA_apod": { "link": "^apod\\.nasa\\.gov/apod/(?:a(?:stropix|p\\d{6})\\.html)?$", "res": ":\nvar i=$._.match(/<br>\\s*<a href=\"(image\\/[^\"]+)\"[^<]+<img src=\"([^\"]+)/i);\nreturn i && [[[\"#\" + $.base + i[1], $.base + i[2]], $._.match(/Explanation:?\\s*<\\/[^>]+>:?\\s*([\\s\\S]+?)<p>/)[1].trim().replace(/<[^>]+>/g, '')]] || null;", "note": "EXAMPLES\nhttps://apod.nasa.gov/apod/binary_stars.html\nhttps://apod.nasa.gov/apod/milky_way.html" }, "NASA_eoimg": { "img": "^(eoimages\\.gsfc\\.nasa\\.gov/images/.+)_front\\.jpg", "ci": 2, "to": "$1_lrg.jpg", "note": "hababr\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1640#6\n\nEXAMPLES\nhttps://visibleearth.nasa.gov/?page=6\nhttps://earthobservatory.nasa.gov/topic/life" }, "NASA_eol.jsc": { "img": "(.*eol\\.jsc\\.nasa\\.gov/.*)/small/(.*\\.jpg)", "ci": 2, "to": "$1/large/$2", "note": "hababr\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3840#12\n\nEXAMPLES\nhttps://eol.jsc.nasa.gov/SearchPhotos/ShowQueryResults-Lightcycle.pl?results=Latest_ISS_Imagery" }, "NASA_img": { "link": "^images.nasa.gov/details/(.+)", "url": "https://images-api.nasa.gov/asset/$1", "res": ":\nconst ret = [];\nconst imgs = JSON.parse($._).collection.items;\n\nfor (let img of imgs) {\n if (!/(jpg|jpeg|png|mp4|mov)$/i.test(img.href)) continue;\n let size = /~(.+?)\\./.exec(img.href)?.[1] || '';\n let text = '[' + size.toUpperCase() + '] ' + (this?.TRG?.alt || '');\n ret.push([img.href, text]);\n}\n\nreturn ret;\n", "note": "hababr\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=2060#5\nOLD\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1640#9\n\nEXAMPLES\nhttps://images.nasa.gov/\nhttps://images.nasa.gov/search-results?q=ORION&page=1&media=image,video&yearStart=1920&yearEnd=2023" }, "NatGeo-m": { "link": "^nationalgeographic\\.com/\\w+/article/[\\w-]+", "res": ":\nvar jsn=JSON.parse($._.match(/window\\['__natgeo__'\\]=(.+);<\\/script>/i)[1]);\nvar edgs=jsn.page.content.prismarticle.frms[0].mods;\nvar res=[];\nvar img=$._.match(/\"og:image\" content=\"([^\"]+)/);\nedgs.forEach(customFilter);\n \nfunction customFilter(item){\n if(item?.hasOwnProperty('image'))\n res.push([item.image.src]);\n for (var i=0; i<Object.keys(item||[]).length; i++){\n if (item&&typeof item[Object.keys(item)[i]] == \"object\"){\n customFilter(item[Object.keys(item)[i]]);\n }\n }\n}\nif(img)res.unshift([img[1].replace(/_\\d+x\\d+\\.([^?]+).*/,'.$1')])\nreturn [...new Map(res.filter(i=>i[0]))];", "img": "^(i\\.natgeofe\\.com/[^?]+).*", "to": "$1", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/n9cfz4t\n\n\n!!!\nНа некоторых статьях показывает \"жёлтый\" вращающийся индикатор, т.к. картинки отображаемой в списке статей нет в самой статье.\n==\nOn some articles, it shows a \"yellow\" rotating indicator. the picture displayed in the list of articles is not in the article itself.\n\nEXAMPLES\nhttps://www.nationalgeographic.com/animals\nhttps://www.nationalgeographic.com/travel\nhttps://www.nationalgeographic.com/environment" }, "NaughtyAmerica-x-p": { "link": "naughtyamerica.com/scene/.+", "res": ":\nconst m = /source src=\"([^\"]+)\" type=\"video/.exec($._)\nif (m) return m[1];\nreturn \"//i.imgur.com/ejZcAGv.png\";", "note": "gpl2731\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1163&limit=1&m=1#1\nOLD\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3616#1\n\nEXAMPLES\nhttps://www.naughtyamerica.com/new-porn-videos" }, "NaughtyMachinima-x-p": { "link": "^naughtymachinima\\.com/(album|video)/\\d+/[\\w-]+", "res": ":\nif($[1][0]==='v'){\n $=[...$._.matchAll(/<source src=\"([^\"]+)\"[^>]+res\\s*=\\s*[\"'](\\d+)/g)].sort((a,b)=>Number(b[2])-Number([a[2]]));\n return $.length ? [[['#'+$[0][1],$.pop()[1]]]] : ''\n}\nreturn [...$._.matchAll(/<img src=\"([^\"]+)\" alt=\"[^\"]*\" id=\"/g)].map(i=>[i[1].replaceAll('/tmb/','/')])", "img": "^(\\w+\\.naughtymachinima\\.com/media/photos/)tmb/", "to": "$1", "note": "imqswt\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/nxeuanh\nOLD\nhttps://www.reddit.com/r/imagus/comments/1psydss/comment/nvihufo\n\nEXAMPLES\nvideos:\nhttps://www.naughtymachinima.com/videos?o=mr\nhttps://www.naughtymachinima.com/search/videos/red\nhttps://www.naughtymachinima.com/user/Soulslayerzx\nhttps://www.naughtymachinima.com/search/videos/hentai?page=336\nalbums:\nhttps://www.naughtymachinima.com/albums" }, "NAVER_TV-h": { "link": "^(?:(?:m\\.)?tv\\.(naver\\.com/)v/(?:(\\d+)(?:$|[/?#])|([\\dA-F]+)/(\\w+)).*|apis\\.naver\\.com/rmcnmv/rmcnmv/vod/play/v2\\.0/.+)", "res": ":\nif($[1]){\n$=JSON.parse($._.match(/\"__NEXT_DATA__\" type=\"application\\/json\">(.+?)<\\/script/)[1])?.props?.pageProps?.vodInfo;\nif(!$)return null;\nconst id=$.clip.videoId, key=$.play.inKey;\nreturn {loop:`https://apis.naver.com/rmcnmv/rmcnmv/vod/play/v2.0/${id}?key=${key}`}\n}\n$=JSON.parse($._).videos?.list?.sort((a,b)=>b.bitrate.video-a.bitrate.video);\nreturn $?.length ? [[['#'+$[0].source,$[Math.floor($?.length/2.5)]?.source]]] : ''", "img": "^([^/.]+\\.pstatic\\.net/[^?]+)\\?type=w\\d+.*", "to": "$1", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/1eux5im/comment/liokqn9\nOLD\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=260#5\n\nEXAMPLES\nhttps://www.reddit.com/domain/tv.naver.com/new/\nhttps://tv.naver.com/v/47630058\nhttps://tv.naver.com/search?query=Our%20Golden%20Day\nhttps://game.naver.com/original_series/68/detail/4044299" }, "NeatClip-h-p": { "link": "^(neatclip\\.com/)(?:clip|embed)(/\\w+)", "url": "$1clip$2", "res": "=\"nc:video\" content=\"([^\"]+)\n<title>([^<]+) -", "note": "EXAMPLES\nhttps://www.reddit.com/domain/neatclip.com/new/" }, "NewEgg-s": { "link": "^newegg\\.com/[\\w-]+/[\\w-]+", "res": ":\nreturn [...$._.matchAll(/(?:<img alt=\"([^\"]+)\"[^>]+?)?class=\"product-view-img-original\" src=\"([^\"]+)/g)].map(i=>[i[2],i[1]])", "img": "^((?:images|c)\\d+\\.newegg(?:images)?\\.com(?:\\.cn)?/)(?:(is/image/newegg/[^?]+)\\?\\$.*|((?:NeweggImage/)?ProductImage)(?:CompressAll\\d*)?|(neweggpic\\d/neg/P)(?!800)\\d+)", "to": ":\nreturn $[1] + ($[2] ? $[2] + '?$S1280$': ($[4] ? $[4] + '800' : $[3] + 'CompressAll1280'));", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/mv1g86a\nOLD\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1480#4\n\nEXAMPLES\nhttps://www.newegg.com/Mice/SubCategory/ID-65\nhttps://www.newegg.com/todays-deals?cm_sp=Head_Navigation-_-Under_Search_Bar-_-Today%27s+Best+Deals&icid=720202\nhttps://www.newegg.com/p/pl?N=100167585%20600555891&cm_sp=TV-Video_2-_-LeftNav-_-OLED-TV" }, "Newgrounds-g-p": { "link": "^(newgrounds\\.com/)(art|portal)/view((?:/[^/]+){1,2}).*", "url": ": ($[2]==='art'?'':'data:,')+$[0]", "res": ":\nif($[2]!=='art'){\n const x=new XMLHttpRequest()\n x.open('GET',`https://www.${$[1]+$[2]}/video${$[3]}`,false)\n x.setRequestHeader('X-Requested-With','XMLHttpRequest')\n x.send()\n $=JSON.parse(x.responseText).sources\n $=Object.entries($).sort((a,b)=>parseInt(a[0])-parseInt(b[0])).map(i=>i[1][0].src)\n return $?.length ? [[['#'+$.pop(),$?.[0]]]] : ''\n}\nlet t=$._.match(/=\"og:title\" content=\"([^\"]+)/)?.[1]|'', m=[...$._.matchAll(/\"ng-img-container-sync art-item-container\"><a href=\"([^\"]+)/g)]\nreturn m.map(i=>[i[1],t])", "img": "^newgrounds\\.com/downloads/wallpapers/get\\.php\\?id=\\d+.*", "to": "$&", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/nnwjfpr\n\nEXAMPLES\nhttps://www.newgrounds.com/art\nhttps://www.newgrounds.com/movies\nhttps://www.reddit.com/domain/newgrounds.com/new/" }, "Nextdoor": { "img": "^([\\da-z]{14}\\.cloudfront\\.net/[\\w-]+_photos/([\\da-f]{2})/([\\da-f]{2})/\\2\\3[\\da-f]{28}\\.\\w+).*", "to": "$1", "note": "!!!\nНужен аккаунт.\n\nEXAMPLES\n???" }, "NexusMods": { "img": "^(staticdelivery\\.nexusmods\\.com/(?:mods|images)/(?:[^/]+/)+?)thumbnails/", "to": "$1", "note": "ПРИМЕРЫ / EXAMPLES\nhttps://www.nexusmods.com/starwarsbattlefront22017\nhttps://www.nexusmods.com/mysummercar?tab=popular+%28all+time%29\nhttps://www.nexusmods.com/titanquestanniversaryedition/mods/top" }, "NexusMods_img": { "link": "^(nexusmods\\.com)/[\\w-]+/mods/\\d+$", "url": ": (location.hostname.endsWith($[1])?'data:,':'')+$[0]", "res": ":\nif($.base[0]==='d'){\nconst x=new XMLHttpRequest();\nx.open('GET',$[0]+'?tab=images',false);\nx.send();\n$._=x.responseText;\n}\nvar i = $._.indexOf('<ul class=\"thumbgallery gallery clearfix\">');\nif(i<0) { return null; }\nvar t = $._.indexOf('<div id=\"fileinfo\"', i);\nif(t<0) { return null; }\nlet data=$._.substring(i,t);\nvar res = [];\nvar re = /data-src=\"([^\"]+)\"/gi\nvar a = re.exec(data);\nwhile(a) {\n res.push([a[1]]);\n a = re.exec(data);\n}\nreturn res;", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/o4rwgqu\nOLD\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1680#17\n\nПРИМЕРЫ / EXAMPLES\nhttps://www.nexusmods.com/games/sacred2\nhttps://www.nexusmods.com/stalker2heartofchornobyl/mods/1832\nhttps://next.nexusmods.com/profile/4thUnknown/media?gameId=1704\nhttps://www.nexusmods.com/games/skyrimspecialedition/images" }, "nHentai.net-x-p": { "link": "^(nhentai\\.net)/g/\\d+/$", "url": ": (location.hostname===$[1]||$[2]?'data:,':'')+$[0]", "res": ":\nif($[2]){\nthis.CNT.filename=[document.body.outerHTML.match(/\"title\"><span class=\"before\">\\[([^\\]]+)/)?.[1].replace(/&/g,'').replace(/[<>:\"\\/\\|\\\\?*]/g,'_'),document.body.outerHTML.match(/class=\"pretty\">([^<]+)/)?.[1].replace(/&/g,'').replace(/[<>:\"\\/\\|\\\\?*]/g,'_'),$[2]].filter(Boolean).join(' - ')\nreturn this.node.src?.replace(/t(\\d?.nhentai)/,'i$1').replace(/t(\\.\\w+).*/,'$1')||''\n}\nif($.base[0]==='d'){\nvar x=new XMLHttpRequest();\nx.open('GET',$[0],false);\nx.send();\n$._=x.responseText;\n}\nvar i = $._.indexOf('id=\"thumbnail-container\"');\nif(i<0) { return null; }\nvar t = $._.indexOf('</a></div></div></div>', i);\nif(t<0) { return null; }\nvar res = [];\nvar re = /data-src=\"([^\"]+)\"/gi\nvar a = re.exec( $._.substring(i,t) );\nwhile(a) {\n res.push([a[1].replace(/t(\\d?.nhentai)/,'i$1').replace(/t(\\.\\w+).*/,'$1')]);\n a = re.exec( $._.substring(i,t) );\n}\nlet meta = document.querySelector('head > meta[name=\"referrer\"]');\nif (!meta) {\n meta = document.createElement('meta');\n meta.name = 'referrer';\n meta.content = 'same-origin';\n document.getElementsByTagName('head')[0].appendChild(meta);\n} else if (meta.attributes.content.value !== 'same-origin') {\n meta.attributes.content.value = 'same-origin';\n}\nreturn res;", "img": "^t(\\d?\\.nhentai\\.net/galleries/\\d+/)(\\d+)t\\..+", "note": "imqswt\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/o420osw\nOLD\nhttps://www.reddit.com/r/imagus/comments/1h9jaj9/comment/m1o7qrt\nhttps://www.reddit.com/r/imagus/comments/1cnxvef/comment/l3eso03\n\n\n!!!\nThis sieve allows you to save files with names in the format [author] - [manga title] - [page number]. However, this only works when saving using a hotkey and only on the manga page, not in album search results.\n\n\nEXAMPLES\nhttps://nhentai.net/tag/animated\nhttps://nhentai.net/g/409848/\nhttps://www.reddit.com/domain/nhentai.net/new/" }, "NicoVideo.jp-h-p": { "link": "nicovideo\\.jp/watch/(sm|so|nm)(\\d+).*", "res": ":\n//To disable the sidebar, set use_sidebar below to false.\nconst use_sidebar = true;\nconst res = [];\nconst parser = new DOMParser();\nconst doc = parser.parseFromString($._, \"text/html\");\nconst dataNode = doc.querySelector('meta[name=\"server-response\"]');\nlet jsonData = JSON.parse(dataNode?.attributes?.content.value);\nif (jsonData) {\n const response = jsonData?.data?.response;\n res.push(response?.video?.thumbnail?.player);\n let sec = response?.video?.duration;\n let duration = \"\";\n if (sec) {\n let hh = Math.floor(sec / 3600);\n let mm = Math.floor((sec % 3600) / 60);\n let ss = sec % 60;\n duration = `${hh ? hh.toString().padStart(2, '0') + \":\" : \"\"}${mm.toString().padStart(2, '0')}:${ss.toString().padStart(2, '0')}`;\n }\n let date = new Date(response?.video?.registeredAt)?.toLocaleString('ja-JP');\n if (use_sidebar) {\n res.push(`<imagus-extension type=\"sidebar\"><h3 style=\"font-size: 1.2em;\"><b>${response?.video?.title}</b></h3>\\nAuthor: \\t\\t${response?.owner?.nickname || response?.channel?.name}\\nDate: \\t\\t${date}\\nLength: \\t\\t${duration}\\nViews: \\t\\t${response?.video?.count?.view}\\nComments:\\t${response?.video?.count?.comment}\\n\\n${response?.video?.description}</imagus-extension>`);\n this.TRG.IMGS_ext_data = res;\n return { loop: 'imagus://extension' };\n } else {\n res.push(`${response?.video?.title} | ${response?.owner?.nickname || response?.channel?.name} | ${date} | ⏱ ${duration} | 👁 ${response?.video?.count?.view} | 💬 ${response?.video?.count?.comment} | 📝 ${response?.video?.description}`);\n return res;\n }\n} else {\n return;\n}", "note": "onurtag\nhttps://new.reddit.com/r/imagus/comments/1f2wedy/update_for_the_nicovideojp_sieve/\nOLD\nhttps://www.reddit.com/r/imagus/comments/18hwm0n/new_sieve_for_nicovideojp/\n\n!!!\n- This sieve is showing the thumbnail (not video) and using a sidebar also shows the title, uploader, views, comments, date, length and description.\n- To disable the sidebar, set use_sidebar below to false.\n\nEXAMPLES\nhttps://www.nicovideo.jp/watch/sm43891948\nhttps://www.reddit.com/domain/nicovideo.jp/new/\nhttps://new.reddit.com/r/imagus/comments/1f2wedy/update_for_the_nicovideojp_sieve/" }, "NightCafe-g": { "link": "^creator(\\.nightcafe\\.studio)(/creation/\\w+).*", "url": "https://api$1/v2$2", "res": ":\nconst o=JSON.parse($._).job, t=o&&[new Date(o.created).toLocaleString(), o.title?.slice(0,34)!==o.prompts[0].slice(0,34)&&o.title, 'Prompts: '+o.prompts?.join(\", \"), o.tags&&'Tags: [ '+o.tags.join(\", \")+' ]', o.description].filter(Boolean).join(\" | \"), u='https://images'+$[1];\nlet m=o?.progressImages?.map(i=>[u+i.output,i.output==o.output?t:i.revisedPrompt||''])||o?.output;\nif(Array.isArray(m))m=m.concat(m.splice(0,m.findIndex(i=>i[0].slice(31)==o.output)));\nreturn m ? Array.isArray(m) ? m : [u+m,t] : ''", "img": "^(images\\.nightcafe\\.studio/jobs/[^?]+).*", "to": "$1", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/1fkbth7/comment/lpgr5r0\n\nEXAMPLES\nhttps://creator.nightcafe.studio/tag/landscape\nhttps://creator.nightcafe.studio/u/gorkov1956" }, "Nijie-g-x-p": { "link": "^nijie\\.info\\/view\\.php\\?id=\\d+", "url": "data:;$&", "res": ":\nconst f=this.find, x=new XMLHttpRequest()\nx.open('GET',$[0],false)\nx.send()\n$._=x.responseText\nlet m=[...$._.matchAll(/data-original=\"([^\"]+)/g)].map(i=>[f({src:i[1]})])\nif(!m?.length)m=$._.match(/itemprop=\"image\" src=\"([^\"]+)/)?.[1]\nreturn m||''\n", "img": "^(pic\\.nijie\\.net/\\d)\\d(/nijie/\\d+m\\d+/\\d+/\\d+/illust/[a-f0-9_]+\\.)", "to": "$1#1 2 3#$2", "note": "imqswt\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/lej44ee\nOLD\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/leinb1x\n\n!!!\nДля работы фильтра нужен аккаунт. Альбомы не поддерживаются.\n==\nYou need an account for the sieve to work. Albums are not supported.\n\nEXAMPLES\nhttps://nijie.info/view.php?id=628911\nhttps://nijie.info/illust_view.php?p=6\nhttps://nijie.info/dojin_all_view.php?p=4" }, "nimg.jp-CDN": { "link": "((?:img\\.cdn\\.nimg\\.jp/s/nicovideo|nicovideo\\.cdn\\.nimg\\.jp)/thumbnails/.*)", "img": "((?:img\\.cdn\\.nimg\\.jp/s/nicovideo|nicovideo\\.cdn\\.nimg\\.jp)/thumbnails/.*)", "to": "$1", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/130svfu/comment/jn8v5j7\n\nEXAMPLES\nhttps://www.reddit.com/domain/nimg.jp/new/" }, "Ning": { "img": "^(api\\.ning\\.com/files/[\\w-*]+/[^?]+)\\?.+", "to": "$1", "note": "!!!\nНужен аккаунт.\n\nEXAMPLES\n???" }, "NIX.ru-s": { "useimg": 1, "link": "^(\\w+\\.)?nix\\.ru/autocatalog/[\\w-]+/[\\w-]+\\.html$", "res": ":\nlet i = $._.indexOf('<span id=\"gallery-images\"');\nif(i<0) { return null; }\nlet t = $._.indexOf('<div id=\"goods_info\">', i);\nif(t<0) { return null; }\nlet res = [];\nlet re = /<span data-href=\"([^\"]+)\"/gi\nlet data=$._.substring(i,t);\nlet a = re.exec(data);\nwhile(a) {\n res.push([a[1]]);\n a = re.exec(data);\n}\nreturn res;", "img": "^((?:\\w+\\.)?nix\\.[^/]+/autocatalog/(?:\\w+/)+(?:\\d+)_(?:\\d+)_draft)_(small|micro|large)(\\.jpg)$", "to": "#$1$3\n$1_large$3", "note": "Baton34V\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1620#18\nOLD\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=400#4\n\nПРИМЕРЫ\nhttps://www.nix.ru/price/price_list.html?section=computers_nix_all#c_id=276&fn=276&g_id=854\nhttps://barnaul.nix.ru/price/price_list.html?section=computers_nix_all#c_id=276&fn=276&g_id=854" }, "NNMClub-p": { "link": "nnmclub\\.to/forum/viewtopic\\.php", "res": ":\nfunction extractRealLink(str) {\n const match = str.match(/https?:\\/\\/.*?(https?:\\/\\/[^\"]+)/);\n return match?.[1] ?? null;\n}\n//debugger;\nlet res = [];\nlet re = /<meta property=\\\"og:image\\\" content=\\\"([^\\\"]+)/gi;\nlet a = re.exec($._);\nif (a) {\n res.push([a[1]]);\n} else return null;\nre = /<a\\s+href=\"([^\"]+?)\"[^>]*?(?:highslide|postLink)[^>]*?>\\s*?<var\\s+class=\"postImg\"[^>]*?link=https:\\/\\/([^\"]*)[^>]*?>.+?<\\/var>\\s*?<\\/a>/gis;\nwhile ((a = re.exec($._)) !== null) {\n const link = a[1]; // первая группа\n const img = a[2]; // вторая группа\n\n if (!link || !img) continue;\n\n // проверка первой группы\n if (/imageban\\.ru\\/show\\/\\d{4}\\//i.test(link)) {\n\n // ожидаемый формат:\n // i5.imageban.ru/thumbs/2025.11.25/filename.png\n const m = img.match(/^([^\\/]+)\\.imageban\\.ru\\/thumbs\\/(\\d{4})\\.(\\d{2})\\.(\\d{2})\\/(.+)$/i);\n\n if (m) {\n const subdomain = m[1]; // i5\n const year = m[2];\n const month = m[3];\n const day = m[4];\n const file = m[5];\n\n const outUrl = `https://${subdomain}.imageban.ru/out/${year}/${month}/${day}/${file}`;\n res.push([outUrl]);\n }\n } else res.push([link]);\n}\nreturn res;", "note": "destiny child\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=3420#15\nOLD\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1600#9\n\n\n!!!\nПоказывает постер + скриншоты на названиях и внешних ссылках раздач.\n\nПРИМЕРЫ\nhttps://nnmclub.to/forum/viewforum.php?f=218\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1360#11" }, "NoelShack-h": { "link": "^(?:.*)noelshack\\.com/(\\d{4})-(\\d{1,2})-(\\d{1,2})-(.+(?:jpe?g|a?png|gif|svgz?|webp|w?bmp|xbm|pict|j(?:if|fif?)))", "to": "http://image.noelshack.com/fichiers/$1/$2/$3/$4", "note": "destiny child\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1380#10\n\nEXAMPLES\nhttps://www.reddit.com/domain/noelshack.com/new/" }, "Nozhikov.ru-s": { "link": "^nozhikov\\.ru\\/product\\/[\\w-]+", "res": ":\nconst imgs=[...$._.matchAll(/\"product_gallery_main_item\"><a href=\"([^\"]+)/g)];\nconst vid=$._.match(/video_play\"><iframe[^>]+src=\"([^\"]+)/)?.[1];\nif(vid){\nthis.TRG.IMGS_ext_data=imgs.concat(vid).map(i=>typeof i==='string'?['',`<imagus-extension type=\"iframe\" url=\"${vid}\"></imagus-extension>`]:[i[1],'']);\nreturn {loop:'imagus://extension'};\n}\nreturn imgs.map(i=>[i[1]])", "img": "^(img\\.nozhikov\\.ru/)\\w/\\w+/rs:fit:\\d+:\\d+:\\d+/plain/(images/products/\\d+/\\d+/\\d+/)compact_([^@]+).*", "to": "$1$2$3", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/m9m5f7p\nOLD\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=1180#17\n\n\nПРИМЕРЫ\nhttps://www.nozhikov.ru/collection/best\nhttps://www.nozhikov.ru/collection/svetodiodnye-fonari" }, "NozhiMAN.ru-s": { "link": "^nozhiman\\.ru/[\\w-]+/[\\w-]+(/[\\w-]+)?", "res": ":\nvar i = $._.indexOf('<div id=\"image-additional-carousel\"');\nif(i<0) { return null; }\nvar t = $._.indexOf('</ul>', i);\nif(t<0) { return null; }\nvar res = [];\nvar re = /data-image=\"([^\"]+)\"/gi\nvar data=$._.substring(i,t);\nvar a = re.exec(data);\nwhile(a) {\n res.push([a[1]]);\n a = re.exec(data);\n}\nreturn res;\n", "note": "Baton34V\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3660#3\n\nПРИМЕРЫ\nhttps://nozhiman.ru/boker\nhttps://nozhiman.ru/skladnye-nozhi/podarochnye-skladnye-nozhy/" }, "Nozomi.la-x-p": { "useimg": 1, "link": "^nozomi\\.la/post/\\d+\\.html", "img": "^qtn(\\.gold-usergeneratedcontent\\.net/\\w/\\w{2}/[a-f0-9]{64}\\.)(\\w+)\\.(webp)", "to": ":\nconst m=['webm','mp4'].includes($[2])\nreturn (m?'v':'w')+$[1]+(m?$[2]:$[3])", "note": "imqswt\nhttps://www.reddit.com/r/imagus/comments/1okrv8e/comment/nmnzha8\n\n!!!\nThis version of the sieve does not have animation (GIF) support.\n\n\nEXAMPLES\nhttps://nozomi.la/search.html?q=long_sleeves\nhttps://nozomi.la/search.html?q=video#3\nhttps://nozomi.la/search-Popular.html?q=GIF#1" }, "NRK.no-m": { "link": "^(?:(?:nrk\\.no/video/[^_]+_|tv\\.nrk\\.no/(?:program|serie|direkte)/)(.*)|nrk/no\\?album/(.+))", "url": ": $[1] ? (/serie/.test($[0]) ? $[0] : 'https://psapi.nrk.no/playback/manifest/'+(/program/.test($[0])?'program/':/direkte/.test($[0])?'channel/':'clip/')+$[1]) : 'data:,'", "res": ":\nif($[1]){\nif(/serie/.test($[0]))return /data-program-id=\"/.test($._)?{loop:'https://tv.nrk.no/program/'+$._.match(/data-program-id=\"([^\"]+)/)[1]}:''\nconst max_resolution = 1080; // <- Set highest resolution\nlet media = JSON.parse($._).playable?.assets[0].url\nif(!media)return ''\nconst baseURL = media.match(/^(.+?\\/)playlist/)[1]\nvar x = new XMLHttpRequest()\nx.open('GET',media,false)\nx.send()\nlet res = [...x.responseText.matchAll(/RESOLUTION=(\\d+)x(\\d+)[^\\n]+\\n([^\\n]+)/g)].filter(i=>parseInt(i[2])<=max_resolution).sort((a,b)=>parseInt(b[2])-parseInt(a[2]))[0]\nthis.TRG.IMGS_ext_data = [\n '//' + `data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"${res[1]}\" height=\"${res[2]}\"></svg>`,\n `<imagus-extension type=\"videojs\" url=\"${baseURL+res[3]}\"></imagus-extension>`\n]\nreturn res ? {loop:'imagus://extension'} : ''\n}else{\nreturn $[2].split('!').map(i=>[i])\n}", "img": "^(?:mediaorigin|gfx)\\.nrk\\.no/([^?.]+).*", "loop": 2, "to": ":\nlet m;\nif(m=this.node.closest('ul[data-scroll-container]')?.querySelectorAll('figure')){\nreturn 'nrk/no?album/'+[...m].map(i=>i.querySelector('source[type=\"image/jpeg\"]')?.srcset?.split(/,\\s*/)?.pop()?.replace(/\\s\\d+w.*/gs,'')).join('!')\n}\nlet img = document.querySelector(`[srcset*=\"${$[0]}\"]`)?.srcset.split(/,\\s*/);\nreturn img ? '#'+img.pop().replace(/\\s\\d+w.*/gs,'')+'\\n'+img.filter(i=>/\\s1\\d{3}w$/.test(i))[0]?.replace(/\\s\\d+w.*/gs,'') : $[0]", "note": "Imagus_fan\nhttps://new.reddit.com/r/imagus/comments/1gx80dz/fixed_nrk_sieve/\nOLD\nhttps://old.reddit.com/r/imagus/comments/c9zlcm/rules_request/jueuhf0/\nhttps://www.reddit.com/r/imagus/comments/e2i020/comment/jrxb6w9\n\nEXAMPLES\nhttps://www.nrk.no/dokumentar/xl/svindeloffer-blir-sittande-att-med-gjelda-1.16181160\nhttps://www.nrk.no/urix/svekkes-tradisjonen-med-a-gi-juletraer-til-britene_-1.15751861\nhttps://www.nrk.no/osloogviken/utgraving-pa-sem---funn-av-spesiell-buplass-og-beinrestar-1.16477738" }, "nsimg-CDN": { "link": "^(?:[^.]+\\.)?nsimg\\.net/biopic/[^/]+/\\d+", "img": "^(?:[^.]+\\.)?nsimg\\.net/biopic/[^/]+/\\d+", "to": "$&", "note": "imqswt\nhttps://www.reddit.com/r/imagus/comments/130svfu/comment/jspp9q8\n\nEXAMPLES\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1360#11" }, "NTV.ru-m": { "link": "^(ntv\\.ru/)(?:(?:embed|video)/(\\d+)|\\w+/\\w+/m\\d+/o\\d+).*", "url": ": $[2] ? `//www.${$[1]}api/player/?id=${$[2]}` : $[0]", "res": ":\nconst low_quality_first = false // True shows lower quality video first. Toggle with TAB.\n\nif(!$[2])return {loop:$._.match(/\"embedUrl\":\"([^\"]+)/)?.[1]||''};\n$=JSON.parse($._);\nconst t=[$.title, $.description].join(' | ');\n$=$.playback;\nconst hd=$?.hd_video, sd=$?.video, s=low_quality_first;\nreturn hd||sd ? [[[hd&&(s?'':'#')+hd,sd&&(s?'#':'')+sd],t]] : $?.hls ? {loop:$.hls} : ''", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/nn7hikb\nOLD\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/m2tc52e/\nhttps://old.reddit.com/r/imagus/comments/1hadsol/ntv_ok/m1trut5/\n\nПРИМЕРЫ\nhttps://www.ntv.ru/video#new\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1360#11" }, "Nuum.ru-h": { "link": "^nuum\\.ru/(?:[^/]+/)*(?:clip|video)s/(\\d+).*", "url": "//nuum.ru/api/v2/media-containers/$1", "res": ":\n$=JSON.parse($._).result;\nconst t=[$.media_container_name,$.media_container_channel?.channel_name,new Date($.published_at).toLocaleString('ru-RU'),$.media_container_description].filter(Boolean).join(\" | \");\n$=$.media_container_streams[0]?.stream_media[0]?.media_meta?.media_archive_url;\nthis.TRG.IMGS_ext_data = [ '//' + 'data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"640\" height=\"640\"></svg>', `<imagus-extension type=\"videojs\" url=\"${$}\"></imagus-extension>${t}` ];\nreturn $ ? {loop:'imagus://extension'} : null", "img": "^(storage-cdn\\.nuum\\.ru/api/v1/files/nuum-vod-production/.+|blob:https://nuum\\.ru/[a-f0-9+$])", "loop": 2, "to": ":\nlet n=this.node;\nn=n.closest('a[class$=\" ng-star-inserted\"],a[class=\"preview\"]')||'';\nreturn n?.href||$[1][0]==='s'&&$[0]||''", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/lfgmulx\n\n!!!\nИногда требуется повторное наведение курсора.\n\n\nПРИМЕРЫ\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1360#11" }, "OBI.ru-s": { "link": "^obi\\.ru/products/(\\w+-)+\\d+$", "res": ":\n$=new DOMParser().parseFromString($._,\"text/html\")\nreturn $.querySelectorAll('source[srcset$=\"thumbnail 2x\"]').length>1 ? [...$.querySelectorAll('source[srcset$=\"thumbnail 2x\"]')].map(i=>{i=i.srcset.match(/^([^?]+)/)[1];return [['#'+i.replace(/resize\\/\\d+x\\d+\\//,''),i.replace(/(resize\\/)\\d+x\\d+/,'$1780x780')]]}) : $.querySelector('source[srcset$=\" 2x\"]').srcset.match(/^([^?]+)/)[1].replace(/resize\\/\\d+x\\d+\\//,'')", "img": "^(media\\.obi\\.ru/)resize/\\d+x\\d+/(media/catalog/product/[^.]+\\.jpg).*", "to": "#$1$2\n$1resize/780x780/$2", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/1akz6th/comment/kpbqh6b\nOLD\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1660#20\n\n!!!\nКурсор наводить на название товара.\n\nПРИМЕРЫ\nhttps://obi.ru/sad-i-dosug/sadovaja-mebel/nabory-sadovoj-mebeli\nhttps://obi.ru/vannaja-komnata/smesiteli-i-dushevoe-oborudovanie" }, "Odoo-s": { "img": "^(bskhvac\\.odoo\\.com/web/image\\?model=product\\.template&id=\\d+&field=image_)\\d+", "to": "$11920", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/1hv3eqb/comment/m5r9gqj" }, "OfferUp_USA-p": { "link": "^offerup\\.com/item/detail/([a-f0-9-]+)", "res": ":\n// Extract unique high-resolution images from OfferUp item pages\nconst doc = new DOMParser().parseFromString($._, \"text/html\");\nconst images = [];\nconst seenFileHashes = new Set(); // Track unique images by their file hash\n\n// Extract all image URLs from the page source using regex\nconst imageRegex = /https:\\/\\/images\\.offerup\\.com\\/([^\"'\\s\\/]+)=\\/(\\d+x\\d+)\\/([a-f0-9]{4})\\/([a-f0-9]{32})\\.(jpg|jpeg|png|webp)/g;\nconst matches = [...$._.matchAll(imageRegex)];\n\n// Group images by their file hash (last part of URL) to identify unique images\nconst imageGroups = new Map();\n\nfor (const match of matches) {\n  const [fullUrl, hash, dimensions, folder, filename, ext] = match;\n  \n  // Skip very small images (likely profile pics or icons)\n  if (dimensions === '100x100' || dimensions === '50x50' || dimensions === '64x64') continue;\n  \n  // Use filename as unique identifier for the image\n  const imageId = filename;\n  \n  if (!imageGroups.has(imageId)) {\n    imageGroups.set(imageId, []);\n  }\n  \n  imageGroups.get(imageId).push({\n    url: fullUrl,\n    hash: hash,\n    dimensions: dimensions,\n    folder: folder,\n    filename: filename,\n    ext: ext,\n    width: parseInt(dimensions.split('x')[0]),\n    height: parseInt(dimensions.split('x')[1])\n  });\n}\n\n// For each unique image, pick the best quality version\nfor (const [imageId, variants] of imageGroups) {\n  // Sort by total pixels (width * height) to get highest quality\n  variants.sort((a, b) => (b.width * b.height) - (a.width * a.height));\n  \n  // Take the highest quality version that's not square-cropped\n  let bestImage = variants[0];\n  \n  // Prefer non-square images if available (they're usually not cropped)\n  for (const variant of variants) {\n    if (variant.width !== variant.height && (variant.width * variant.height) >= 400000) {\n      bestImage = variant;\n      break;\n    }\n  }\n  \n  // If we only have square images, pick the largest one\n  if (!bestImage || bestImage.width === bestImage.height) {\n    // Look for the largest available version, but try common high-res dimensions first\n    const preferredDimensions = ['750x1000', '1000x750', '1440x1920', '1512x2016', '2016x1512'];\n    \n    for (const prefDim of preferredDimensions) {\n      const found = variants.find(v => v.dimensions === prefDim);\n      if (found) {\n        bestImage = found;\n        break;\n      }\n    }\n  }\n  \n  if (bestImage) {\n    images.push([bestImage.url, '']);\n  }\n}\n\n// If we didn't get any images, try DOM parsing as fallback\nif (images.length === 0) {\n  const imgElements = doc.querySelectorAll('img[src*=\"images.offerup.com\"]');\n  \n  for (const img of imgElements) {\n    let src = img.src;\n    \n    // Skip small images\n    if (src.includes('/100x100/') || src.includes('/50x50/') || src.includes('/64x64/')) continue;\n    \n    // Extract filename to check for duplicates\n    const filenameMatch = src.match(/\\/([a-f0-9]{32})\\./); \n    if (filenameMatch && !seenFileHashes.has(filenameMatch[1])) {\n      seenFileHashes.add(filenameMatch[1]);\n      images.push([src, img.alt || '']);\n    }\n  }\n}\n\nreturn images.length > 0 ? images : null;", "img": "^(images\\.offerup\\.com/[^/]+=/)(\\d+x\\d+)/(.+)", "to": ":\n// Convert OfferUp image thumbnails to high resolution\nconst dimensions = $[2];\nlet newDimensions;\n\n// Map thumbnail sizes to high-res equivalents\nswitch (dimensions) {\n  case '250x250':\n  case '300x400':\n    newDimensions = '1440x1920';\n    break;\n  case '250x333':\n    newDimensions = '1512x2016';\n    break;\n  default:\n    // If already high-res or unknown, keep as is\n    return 'https://' + $[1] + dimensions + '/' + $[3];\n}\n\nreturn 'https://' + $[1] + newDimensions + '/' + $[3];", "note": "RedRocket\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=3180#16\n\n!!!\nТолько через хороший американский прокси (геолокация только US).\n\n\nEXAMPLES\nhttps://offerup.com/explore/k/2\nhttps://offerup.com/explore/k/1/4\nhttps://offerup.com/search?q=consoles&source=autocomplete" }, "OhMyNews-m": { "img": "^(ojsfile\\.ohmynews\\.com/)[A-Z]+(_IMG_FILE/\\d+/\\d+/[A-Z\\d]+_)[A-Z]+", "to": "$1ORG$2ORG", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/1hh4wrx/comment/m2qaw5b\n\nEXAMPLES\nhttps://www.reddit.com/r/imagus/comments/1hh4wrx/ohmynewscom_higher_resolution_popup_example_inside/" }, "OK.ru_album-h": { "link": "^ok\\.ru/\\w+/album/\\d+/\\d+", "res": "<meta property=\"og:image\" content=\"([^\"]+)", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/ndljbx5\nOLD\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1120#13\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=2220#17\n\nПРИМЕРЫ\nhttps://ok.ru/kinofilmu/album/52319206834266" }, "OK.ru_video-h": { "link": "^(?:m\\.)?(ok\\.ru/((?:live|video)(?:embed)?|[^?]+/topic)/\\d+).*", "url": "https://$1", "res": ":\nconst low_quality_first = false // True shows lower quality video first. Toggle with TAB.\n\nif($[2].endsWith('c'))return {loop:$._.match(/\"VideoObject\",\"url\":\"([^\"]+)/)?.[1]||''}\n$=new DOMParser().parseFromString($._,'text/html').getElementsByClassName('vid-card_cnt h-mod')?.[0].getAttribute('data-options');\n$=$&&JSON.parse($).flashvars?.metadata;\n$=$&&JSON.parse($);\nif($?.videos?.length&&!/^ya(?:ndex)?\\./.test(location.hostname)){\n$=$.videos;\nconst hd=$.pop()?.url, sd=$.reverse().find(i=>i.name==='sd'||i.name==='low'||i.name==='lowest')?.url, m='#mp4', t=low_quality_first;\nreturn [[[hd&&(t?'':'#')+hd+m,sd&&(t?'#':'')+sd+m]]]\n}\n$=$?.hlsManifestUrl;\nthis.TRG.IMGS_ext_data=['//data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"640\" height=\"360\"></svg>',`<imagus-extension type=\"videojs\" url=\"${$}\"></imagus-extension>`];\nreturn $ ? {loop:'imagus://extension'} : ''", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/ndljbx5\nOLD\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/n8marj8\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/mr7vva0\n\n\nПРИМЕРЫ\nhttps://ok.ru/video\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1360#11" }, "Oldi.ru-s": { "link": "^(\\w+\\.)?oldi\\.ru/catalog/element/\\d+/$", "res": ":\nlet i = $._.indexOf('<div id=\"morephotosroot\"');\nif(i<0) { return null; }\nlet t = $._.indexOf(\"<table class='prod-menu'>\", i);\nif(t<0) { return null; }\nlet res = [];\nlet re = /data-href=\"([^\"]+)\"/gi\nlet data=$._.substring(i,t);\nlet a = re.exec(data);\nwhile(a) {\n res.push([a[1]]);\n a = re.exec(data);\n}\nreturn res;", "note": "Baton34V\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1620#18\nOLD\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=400#4\n\nПРИМЕРЫ\nhttps://ekb.oldi.ru/catalog/6569/\nhttps://rnd.oldi.ru/catalog/6569/\nhttps://www.oldi.ru/catalog/7984/" }, "Olx.pl|Olx.ua-s-p": { "useimg": 1, "link": "^(?:(?:[^\\.]+\\.)?[^\\.]+\\.)?olx\\.\\w\\w/(?:\\w+/){0,2}o(?:byavlenie|ferta)/[^/]+\\.html(?:\\?.+)?", "res": ":\nlet jsonEnc=$._.match(/window\\.__PRERENDERED_STATE__= \"({.+})\";/)[1];\nlet json=JSON.parse(eval('\"'+jsonEnc+'\"'));\nlet res = [];\nfor (obj in json.ad.ad.photos) {\n res.push([json.ad.ad.photos[obj]]);\n}\nreturn res;\n", "img": "^(olx(?:ua|by)-ring\\d+\\.akamaized\\.net/images_[^/]+/\\d+_\\d+)_\\d+x\\d+_([^/]+\\.(jpe?g|png|gif))$", "to": "$1_1000x700_$2", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/mld41rt\nOLD\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1800#5\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1000#17\n\n\n\nПРИМЕРЫ\nhttps://www.olx.pl/oferty/?q=Enthoo\nhttps://www.olx.ua/list/?q=THX+AAA\nhttps://www.olx.ua/transport/pritsepy-doma-na-kolesah/kharkov/" }, "Olx_pm-s-p": { "link": "^(?:slando\\.ua|olx\\.by|olx\\.ua)/attachment/attachments_.+\\.(jpe?g|png|gif)/$", "note": "Rodny\n\nПРИМЕРЫ\nImages in personal messages" }, "OM.cn": { "link": "^om\\.cn/md/\\w+\\.html", "res": ":\nlet i = $._.indexOf('<div class=\"swiper-wrapper\">');\nif(i<0) { return null; }\nlet t = $._.indexOf('<div class=\"thumbnail\"', i);\nif(t<0) { return null; }\nlet res = [];\nlet re = /<img src=\"([^?\"]+)\\?[^\"]+\" title=\"/gi\nlet data=$._.substring(i,t);\nlet a = re.exec(data);\nwhile(a) {\n res.push([a[1]]);\n a = re.exec(data);\n}\nreturn res;", "note": "Baton34V\n\n!!!\nСайт практически недоступен. Даже через американский прокси открывается 5 минут.\n\nEXAMPLES\nhttps://www.om.cn/\nhttps://www.om.cn/models/model-17-170-0-1-0-0-0-2-0-0-0-1-0-0-0-0-0.html" }, "Omegle_logs": { "link": "^logs\\.omegle\\.com/[\\da-f]+", "res": "\"og:image\" content=\"([^\"]+)", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/130svfu/comment/k1zeaje\n\nEXAMPLES\nhttps://www.reddit.com/domain/logs.omegle.com/new/" }, "OnlineTrade.ru-s": { "link": "^(www\\.)?onlinetrade\\.ru\\/catalogue\\/[a-z0-9_-]+\\/.+\\.html$", "res": ":\nvar i = $._.indexOf('productPage__displayedItem__images')\nif(i<0) {return null; }\nvar t = $._.indexOf('<div class=\"clear\"', i);\nif(t<0) {return null; }\nvar res = [];\nvar re = /<a href=\"https:\\/\\/static\\.onlinetrade\\.ru\\/img\\/items\\/\\w([^\"]+)\"/gi\ndata=$._.substring(i,t);\nvar a = re.exec(data);\nwhile(a){\n res.push(['https://static.onlinetrade.ru/img/items/b'+a[1]]);\n a = re.exec(data);\n}\ni = $._.indexOf('<div class=\"productPage__topReview__gallery')\nif(i<0) {return res; }\nt = $._.indexOf('<div class=\"swiper-pagination\">', i);\nif(t<0) {return res; }\nre = /<a href=\"([^\"]+)\"/gi\ndata=$._.substring(i,t);\na = re.exec(data);\nwhile(a){\n res.push([a[1]]);\n a = re.exec(data);\n}\nreturn res;\n", "note": "Baton34V\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=640#7\nOLD\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3260#6\n\n!!!\nФильтр показывает также фото товара от пользователей (там где они есть).\n\nПРИМЕРЫ\nhttps://www.onlinetrade.ru/catalogue/smartfony-c13/\nhttps://www.onlinetrade.ru/catalogue/vodonagrevateli_nakopitelnye_elektricheskie-c306/ariston/" }, "OpenDesktop": { "img": "^([^.]+\\.pling\\.com/)cache/[\\dx]+(?:-\\d)?/", "to": "$1", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/130svfu/comment/k1zeaje\n\n!!!\nГалерея продукта не поддерживается на данный момент.\n==\nThe product gallery is not supported at the moment.\n\nEXAMPLES\nhttps://www.opendesktop.org/browse?cat=247&ord=latest\nhttps://www.opendesktop.org/browse?cat=105&ord=plinged" }, "OP.GG_Talk": { "link": "^talk\\.op\\.gg/s/[^/]+/[^/]+/\\d+/", "res": ":\nif(/<iframe src='/.test($._))return {loop:$._.match(/<iframe src='([^']+)/)[1]}\nreturn [...$._.matchAll(/<img src=\"([^\"]+)\" alt=\"[^\"]*\" \\//g)].map(i=>[i[1]])", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/16lam3y/comment/k12s8n3\n\n\nEXAMPLES\nhttps://www.reddit.com/r/imagus/comments/16lam3y/talkopgg_sieves/" }, "Orbi.kr": { "link": "^image\\.orbi\\.kr/\\d+", "res": ":\nif(/iframe\\s+width[^>]+src=\"/.test($._))return {loop:$._.match(/iframe\\s+width[^>]+src=\"([^\"]+)/)[1]}\nreturn JSON.parse($._.match(/<script type=\"application\\/ld\\+json\">[^{]+([^\\n]+)\\n/)?.[1]||'{}')['@graph']?.[2].image.flatMap(i=>!/\\/emoticons\\//.test(i.url)?[[i.url]]:[])||''", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/17ga8mw/comment/k6j6uso\n\nEXAMPLES\nhttps://www.reddit.com/r/imagus/comments/17ga8mw/mlbpark_orbi_sieve/" }, "Orsm_image-x": { "useimg": 1, "link": "^orsm\\.net/i/(gallery/pictures/)?[\\da-z-]*~\\d+\\.html", "res": ":\nif($[1])return $._.match(/=\"bigimg\" src=['\"]([^'\"]+)/)[1]\nvar t = $._.match(/<h1>([^<]+)/), a = $._.match(/\\n\\s*<img src='[^']+/g)\nreturn a && a.map(function(x, i) {\n return [x.slice(x.lastIndexOf(\"'\") + 1).replace('/thumbnails/', '/'), !i && t&&t[1]]\n})", "img": "^(prycless\\d*\\.orsm\\.net/[^/]+/)thumbnails(/.+)_jpg\\.jpe?g", "to": "$1images$2.#jpg#", "note": "gpl2731\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1140#3\nOLD\nhttps://www.reddit.com/r/imagus/comments/jhd8nu/sieve_for_orsmnet/\n\nEXAMPLES\nhttp://prycless.orsm.net/prycless02.php" }, "Orsm_video+gallery-x": { "link": "^(orsm\\.net/)v/(update2\\d{7}/[\\da-z-]+\\.mp4).*", "to": "//grab.$1$2", "note": "https://www.reddit.com/r/imagus/comments/jhd8nu/sieve_for_orsmnet/\n\nПРИМЕРЫ / EXAMPLES\nвидео (прокрутить вниз):\nhttps://www.orsm.net\nгалереи:\nhttps://www.orsm.net/i/" }, "Osen.co.kr-m": { "img": "^(file\\.osen\\.co\\.kr/article/\\d{4}/\\d{2}/\\d{2}/(?![^.]+_\\d+x\\.)[^.]+)", "to": "$1_1024x", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/1ev1pos/comment/liomay8\n\n\nEXAMPLES\nhttps://www.osen.co.kr/article/G1112399096" }, "Osinka.ru_club": { "img": "^(?:(pic\\.oscdn\\.net/pic/\\d+/)[a-z]|(images\\.osinka\\.net/\\d+/)c\\d+)$", "to": ":\nreturn $[1]?$[1]+'l':$[2]+'s1500'", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/130svfu/comment/jxydqur\n\n\nПРИМЕРЫ\nhttps://club.osinka.ru/topic-84973?start=255\nhttps://club.osinka.ru/topic-82355?start=1320" }, "OSzone": { "link": "^(soft\\.oszone\\.net)/(?:screenshots|program)/(\\d+)/", "img": "^(soft\\.oszone\\.net)/images/thumb/screenshot/\\?soft=(\\d+)$", "to": "$1/images/screenshot/?soft=$2", "note": "Rodny\n\nПРИМЕРЫ\nhttp://soft.oszone.net/subcat/53/?page=7" }, "Otomoto.pl-s": { "link": "^otomoto\\.pl/[\\w-/]+\\.html", "res": ":\nlet m=[...$._.matchAll(/data-lazy=\"([^\"]+)/g)].map(i=>[i[1]])\nif(!m.length)m=JSON.parse($._.match(/id=\"__NEXT_DATA__\"[^{]+({.+?})<\\//)[1]).props?.pageProps.advert.images.photos.map(i=>[i.url])??''\nreturn m", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/130svfu/comment/jv5cpmr\nOLD\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1000#17\n\nEXAMPLES\nhttps://www.otomoto.pl/przyczepy\nhttps://www.otomoto.pl/motocykle-i-quady/bmw" }, "Otzovik": { "useimg": 1, "link": "^otzovik\\.com/review_\\d+.html$", "res": ":\nreturn [...$._.matchAll(/<img (?:class=\"?bigimg\"?\\s+)?src=\"([^\"]+)\"\\s+loading=\"lazy\"\\s+(?:alt=\"[^\"]*\"\\s+)?width/g)].map(i=>[['#'+i[1].replace(/\\.[a-z]{3,4}$/,'_b$&'),i[1]]])", "img": "^(i\\d*\\.otzovik\\.com\\/\\d+\\/\\d\\d\\/\\d\\d\\/\\d+\\/img\\/\\w+?)(?:_t)?(\\.(?:jpe?g|png))", "loop": 2, "to": ":\nconst n=this.node\nif(n.className===\"img-more\")return n.parentNode.href\nreturn `#${$[1]}_b${$[2]}\\n${$[1]}${$[2]}`", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/lh2y7lv\nOLD\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/l3op0bk\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=2020#21\n\nПРИМЕРЫ\nhttps://otzovik.com/reviews/elektronnaya_kniga_pocketbook_iq_701/gallery/\nhttps://otzovik.com/reviews/zhidkoe_hozyaystvennoe_milo_koroleva_yablon_altayskie_travi/" }, "Overclockers.ru_blog": { "img": "^overclockers\\.ru\\/st\\/\\w\\/\\d+/-/legacy/blog/(\\d+/\\w+_\\w.\\w+)", "to": "st.overclockers.ru/legacy/blog/$1", "note": "Baton34V\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1900#15\n\nПРИМЕРЫ\nhttps://overclockers.ru/blog/aggression/show/43515/msi-afterburner--chto-po-chem" }, "Overclockers.ru_forum": { "link": "^(forums\\.overclockers\\.ru/(?:download|gallery)/(?:file|image)\\.php\\?(?:album_id=\\d+&)*(?:id=\\d+.+mode=view|image_id=\\d+))", "img": "^(forums\\.overclockers\\.ru/download/file\\.php\\?id=\\d+)", "to": "$1", "note": "Rodny + Baton34V (fix)\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=240#3\n\nПРИМЕРЫ\nhttps://forums.overclockers.ru/viewtopic.php?p=13676877#p13676877\nhttps://forums.overclockers.ru/viewtopic.php?p=14091976#p14091976" }, "OZON.ru-s": { "link": "^(ozon\\.ru/(?:product/[\\w-]+|context/detail/id/\\d+|t))/.*?(?:\\?|$)", "url": ": (location.hostname.endsWith('ozon.ru')?'data:,':'')+$[0]", "res": ":\nconst r = []\ntry {\n if ($.base[0] === 'd') {\n const xhr = new XMLHttpRequest();\n xhr.open('GET', $[0], false);\n xhr.send();\n $._ = xhr.responseText;\n }\n if (!$[0].includes('/reviews')) {\n const doc = new DOMParser().parseFromString($._, \"text/html\");\n const title = doc.querySelector('title').textContent;\n\n // product images\n let data = JSON.parse(doc.querySelector('div[id^=\"state-webGallery-\"]').dataset.state);\n data.images?.forEach(i => r.push([i.src, i.alt || title]));\n data.videos?.forEach(v => r.push([v.url, v.name || title]));\n }\n\n // reviews images\n const rUrl = 'https://www.ozon.ru/api/composer-api.bx/widget/json/v2?widgetStateId=webReviewGallery-2954366-pdpPage1column-1',\n pUrl = $[0].match(/[^?]+/)?.[0],\n rId = $._.match(/reviewVuuid=([^\"]+)/)?.[1],\n key = btoa(`{\"url\":\"${pUrl.replace(/^https?:\\/\\/[^\\/]+/,'')}?layout_container=pdpPage1column&layout_page_index=1\",\"ci\":{\"vertical\":\"rpProduct\",\"name\":\"webReviewGallery\",\"params\":[{\"name\":\"reviewGalleryElementsLimit\",\"int\":50},{\"name\":\"showVideosParam\",\"bool\":true},{\"name\":\"paramSeoMode\"},{\"name\":\"isEnableNewHarvestBadge\",\"bool\":true},{\"name\":\"sortingType\",\"text\":\"videos_first_asc\"},{\"name\":\"showTrialPinParam\",\"bool\":true},{\"name\":\"withCanceled\",\"text\":\"offCanceled\"},{\"name\":\"withBadgeCanceled\",\"text\":\"offBadgeCanceled\"}],\"version\":2,\"layoutID\":11855,\"id\":2954366}}`);\n const x = new XMLHttpRequest;\n x.open('POST', rUrl, false);\n x.send(`{\"asyncData\":\"${key}\",\"extraBody\":{},\"url\":\"${pUrl}reviewVuuid=${rId}&reviewsVariantMode=2\",\"componentName\":\"${pUrl}reviewVuuid=${rId}&reviewsVariantMode=2\"}`);\n const data = JSON.parse(x.responseText);\n\n Object.values(data.state.reviews).forEach(f => {\n const c = f.content;\n [...c.photos || [], ...c.videos || []].forEach(p => {\n const text = ['⭐' + c.score];\n if (c.comment) text.push(c.comment);\n if (c.positive) text.push('👍🏻 ' + c.positive);\n if (c.negative) text.push('👎🏻 ' + c.negative);\n if (f.createdAt) text.push(new Date(f.createdAt * 1000).toISOString().substring(0, 10))\n r.push([p.url, text.join(' | ')]);\n });\n });\n} catch (e) {\n console.error(e);\n}\n\nlet hasVideo = false;\nr.forEach(item => {\n if (item[0].endsWith('.m3u8')) {\n hasVideo = true;\n item[1] = `<imagus-extension type=\"videojs\" url=\"${item[0]}\"></imagus-extension>${item[1]}`;\n item[0] = '';\n }\n});\nif (hasVideo) {\n this.TRG.IMGS_ext_data = r;\n return { loop: 'imagus://extension' };\n}\n\nreturn r;", "img": "^((?:ir(?:-\\d)?|cdn\\d)\\.ozone\\.ru/s3/(rp-photo-\\d+|multimedia-\\w+(?:-\\w+)?|video[-\\d]*)/)(?:wc\\d+/)?(.+\\.jpe?g)", "loop": 2, "to": ":\nif (!this.getImages_original) {\n this.getImages_original = this.getImages;\n this.getImages = (el) => this.getImages_original(el?.firstElementChild?.nodeName == 'IMG' ? el.firstElementChild: el);\n}\n\nif ($[2]?.startsWith('video')) {\n if (!$[2].includes('-')) $[2] += '-7';\n let id = /[0-9A-Z]{20,}/.exec($[0])[0];\n return `https://v.ozone.ru/vod/${$[2]}/${id}/master.m3u8`;\n} else {\n return $[1] + $[3];\n}", "note": "hababr + Imagus_fan (edit)\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/nv5uli3\nOLD\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/lw25occ\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=2560#4\n\n\n!!!\n- В поисковой выдаче фильтр автоматически подгружает фото/видео/отзывы, сделанные покупателями;\n- Также можно навести курсор на количество отзывов под названием товара на странице товара:\nhttps://i.imgur.com/YjY8Ytb.jpeg\n\n\nПРИМЕРЫ\nhttps://www.ozon.ru/category/noutbuki-15692/\nhttps://www.ozon.ru/search/?deny_category_prediction=true&from_global=true&text=Сетка+антимоскитная+на+дверь&product_id=263132888\nhttps://www.ozon.ru/category/stiralnyy-poroshok-14585/\nвнешние ссылки:\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1360#11" }, "Paixin-g": { "useimg": 1, "link": "^v(\\.paixin.com/)photocopyright(/\\d+).*", "url": "//api2$1medias/1$2", "res": "\"image\":\"([^\"]+)\n\"title\":\"([^\"]+)\",\"description\":\"([^\"]+)", "img": "^((?:(?:q-extra|gaga-ppt)\\.paixin\\.com|images\\.gaga\\.me|d\\d+\\.paixin\\.com/thumbs)/[^?]+).*", "to": "$1", "note": "https://www.reddit.com/r/imagus/comments/h7nnjx/comment/fumyqkz\n\n\nEXAMPLES\nhttps://www.paixin.com/albums/pic/detail/943/1\nhttps://www.paixin.com/media/photo/standard/%E7%A7%8B%E5%AD%A3%E8%83%8C%E6%99%AF/1" }, "Pangea-CMS-p": { "img": "^(gdb\\.[a-z0-9.-]+/[A-Fa-f0-9-]{36,40}(?:_tv)?)\\w+", "to": "$1", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/1p2x1s0/comment/nq0hih9\n\nEXAMPLES\nhttps://www.reddit.com/r/imagus/comments/1p2x1s0/pangea_cms/" }, "Parovoz-g": { "link": "parovoz\\.com\\/newgallery\\/pg_view.php\\?ID=\\d+", "res": "<img src='([^\"]+)' border='1'>", "img": "(parovoz\\.com\\/gallery)\\/icons(\\/[A-Z0-9]+\\/.*)-s(\\.jpg)", "to": "$1$2$3", "note": "gpl2731\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1120#19\nOLD\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=1020#9\n\nПРИМЕРЫ\nhttps://parovoz.com/newgallery/index.php?CATEG=-1\nhttps://www.parovoz.com/newgallery/index.php?CATEG=-1\nhttps://parovoz.com/newgallery/pg_blog.php?FROM=25&LNG=®ION=RU22\n+\n(ссылки на фото в комментариях (черные стрелки) / links to photos in the comments (black arrows))\nhttps://parovoz.com/newgallery/pg_blog.php?FROM=650&LNG=®ION=RU22" }, "Pasteboard-h": { "link": "pasteboard\\.co\\/\\w+\\.(?:jpe?g|a?png|gif|tiff)", "res": "data-src=\"([^\"]+)\"", "note": "Baton34V\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=2120#8\n\nПРИМЕРЫ / EXAMPLES\nhttps://www.reddit.com/domain/pasteboard.co/new/" }, "PBase-g-p": { "link": "^(pbase\\.com/)(?:[^/]+/)?image(/\\d+).*", "res": "imgurl=\"([^\"]+)\" imgx=\"\\d+\" imgy=\"\\d+\" imgsize=\"original\"", "img": "^m\\d\\.i\\.(pbase\\.com/).+(/\\d+).*", "note": "gpl2731\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1120#13\nOLD\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3360\n\nEXAMPLES\nhttps://pbase.com/joshcruzphotos/my_country\nhttps://pbase.com/carol202/london_day_3" }, "Pepper.ru-s": { "link": "^pepper\\.ru/[a-z]+/[\\w-]+-\\d+$", "res": "data-image-original=\"([^\"]+)\n\"gtm-firstpost-link\">[^<]+</a>([^\\n]+)", "img": "^(cdn\\d\\.pepper\\.ru/topics/photos/\\d+/)\\w+", "to": "#$1original\n$1large", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/nxyp8es\nOLD\nhttps://www.reddit.com/r/imagus/comments/1akz6th/comment/kpbqh6b\n\n\n!!!\nКурсор наводить на название товара.\n\n\nПРИМЕРЫ\nhttps://www.pepper.ru/new\nhttps://www.pepper.ru/groups/phones" }, "Perekrestok.ru-s": { "link": "^perekrestok\\.ru/cat/\\d+/\\w/[\\w-]+-\\d+$", "res": ":\n\nconst res = [];\nconst data = JSON.parse(/window\\.__INITIAL_STATE__\\s*=\\s*({.+})/.exec($._)[1]);\nconst images = data.catalog.productData[Object.keys(data.catalog.productData)[0]].images;\nfor (img of images) {\n res.push([img.cropUrlTemplate.replace('%s','1600x1600-fit')]);\n}\nreturn res;", "note": "hababr\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1940#9\nOLD\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=400#6\n\n\nПРИМЕРЫ\nhttps://www.perekrestok.ru/cat/search?search=мороженое\nhttps://www.perekrestok.ru/cat/c/75/rybnye-konservy" }, "Perfectgirls|Perfektdamen-x-p": { "link": "^(?:[a-z]{2}\\.)?(perfektdamen\\.co|perfectgirls\\.xxx)/video/\\d+/", "loop": 1, "res": ":\n$=$._.match(/<source src=\"([^\"]+)/)[1]+'#.m3u8'\nthis.TRG.IMGS_ext_data=['//data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"640\" height=\"360\"></svg>',`<imagus-extension type=\"videojs\" url=\"${$}\"></imagus-extension>`]\nreturn 'imagus://extension'", "note": "imqswt\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/n0ed8hr\n\nEXAMPLES\nhttps://www.perfectgirls.xxx/tags/2-girls-1-boy/\nhttps://www.perfectgirls.xxx/search/redhead/\nhttps://www.perfektdamen.co/tags/ahegao/\nhttps://it.perfektdamen.co/trending/" }, "Performance-PC-s-p": { "link": "^performance-pcs\\.com/(?:catalog/product/view/id/|[^/]+/[^.]+\\.html$|products/[\\w-]+$)", "res": ":\n$=$._.match(/productInfo\\s*=\\s*([^;]+)/)\n$=$&&JSON.parse($[1])\nreturn $.images?.map(i=>[['#'+i,i+'&height=1024'],$.description])||''", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/o2dqc49\nOLD\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/lgkwer7\nhttps://www.reddit.com/r/imagus/comments/130svfu/comment/jyduj9s\n\n\nEXAMPLES\nhttps://www.performance-pcs.com/collections/logitech\nhttps://www.performance-pcs.com/collections/all-products-system-hardware-motherboards" }, "PhoneArena": { "link": "^phonearenaalbum/([^!]+)!(.+)", "url": "data:,$&", "res": ":\nconst m=$[2].split('!'), i=m.indexOf($[1])\nreturn {\"\":m.map(i=>[i]),idx:i}", "img": "^([mi]-cdn\\.phonearena\\.com/images/)(?:((?:article|review)s/\\d+-)(?:gallery|image|\\d+)|(review/\\d+-[^_]+)_\\w+)(/[^/]+\\.(?:jpe?g|gif|png|webp))(?:\\?.+|$)", "loop": 2, "to": ":\nlet n=this.node;\nn=$[2]&&n.srcset&&[...this.node.parentElement?.parentElement?.parentElement?.parentElement?.parentElement?.lastElementChild?.lastElementChild?.firstElementChild.children||[]].map(i=>i.firstElementChild.src?.replace(/-\\d+/,'-image')).join('!');\nreturn n?.length?'phonearenaalbum/https://'+$[0]+'!'+n:$[2]?`//${$[1]+$[2]}image${$[4]}`:'//'+$[1]+$[3]+$[4]", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/nzib5ae\nOLD\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/kuu2fo0\n\nEXAMPLES\nhttps://www.phonearena.com/reviews/galaxy-tab-s9-review_id5887\nhttps://www.phonearena.com/reviews/iphone-14-vs-galaxy-z-flip-4_id5509" }, "Photo.net-g": { "link": "^photo\\.net/photo(?:db/photo\\?photo_id=|/)(\\d+).*", "img": "^(?:d6d2h4gfvy8t8\\.cloudfront\\.net|thumbs\\.photo\\.net/photo)/(\\d+)-sm.+", "to": "//d6d2h4gfvy8t8.cloudfront.net/$1-#orig lg#.jpg", "note": "EXAMPLES\nhttps://www.photo.net/search/?q=yellow&quick=1\nhttps://www.photo.net/gallery/category/4-architecture/?page=4\nhttps://www.photo.net/gallery/category/3-animal/?page=5" }, "Photo.I.ua-g-p": { "link": "^(photo\\.i\\.ua/)(?:(user|channel)/(?:\\d+\\/){2}(\\d+)?|js/ssLoad(?:/\\d+/|More/)(\\d+/\\d+/)(?:forward/(\\d+)/)?\\?&\\d+-xml)", "res": ":\nlet m, t;\nif(m=!$[3]&&$[2]==='user'&&$._.match(/slideshow\\.open\\(([^\\)]+)\\)/)?.[1].split(', ').slice(-3))return {loop:`https://${$[1]}js/ssLoad/${m[0]}/${m[1]}/${m[2]}/?&${Date.now()}-xml`};\nif($[4]){\nm=this._photo_i_ua_imgs||[];\nlet id=$[4], n=Number($[5])+4||3, o=$._.match(/'(?:last|photos)': '(\\[.+?\\])'/)?.[1].replace(/\\\\/g,'');\no=o?JSON.parse(o):[];\no.forEach(i=>m.push([i.src,i.desc]));\nif(o.length===4){\nthis._photo_i_ua_imgs=m;\nreturn {loop:`https://${$[1]}js/ssLoadMore/${id}forward/${n}/?&${Date.now()}-xml`};\n}\ndelete this._photo_i_ua_imgs;\nreturn m;\n}\nm=$._.match(/\\sbsrc=\"([^\"]+)/)?.[1]||$._.match(/\"viewer_image\">[^>]+?src=\"([^\"]+)/)?.[1], t=$._.match(/\"og:description\" content=\"([^\"]+)/)?.[1]||'';\nreturn m ? [m,t] : ''", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/n07y0xc\nOLD\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1600#9\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=1540#12\n\n\nПРИМЕРЫ\nhttps://photo.i.ua/user/2638716/\nhttps://photo.i.ua/user/829348/99304/" }, "Photo.Sibnet.ru-h": { "useimg": 1, "link": "^((photo\\.sibnet\\.ru)/(?:alb\\d+/(?:(?=[^\\w])|$)|(\\w+/ft\\d+)))", "res": ":\nconst full_album = false // If false, usually only shows up to 60 images but loads faster. If true, shows full album but loads more slowly.\n\nif($[3])return [[$._.match(/class=\"original\"><a href=\"([^\"]+)/)].map(i=>['#//'+$[2]+i[1],'//'+$[2]+i[1].replace('great','big')])]\nif(!this.imgNum)this.imgNum=parseInt($._.match(/Фото <\\/span>(\\d+)/)[1])\nif(!this.albumArray)this.albumArray=[]\nif(!this.pageNum)this.pageNum=1\nthis.pageNum++\nthis.albumArray.push(...[...$._.matchAll(/<img src=\"(\\/upload\\/[^\"]+)\"\\s+title=/g)].map(i=>[['#//'+$[2]+i[1].replace(/(img)[^\\/]*/,'$1great'),'//'+$[2]+i[1].replace(/(img)[^\\/]*/,'$1big')]]))\nif(this.albumArray.length<imgNum&&this.pageNum<=(full_album?5:this.imgNum/12))return {loop:'//'+$[1]+'&page='+this.pageNum}\nreturn (()=>{let m=this.albumArray;delete this.albumArray;delete this.pageNum;delete this.imgNum;return m})()", "img": "^([a-z]*photo\\.sibnet\\.ru/upload/img)[^/]*", "to": "#$1great\n$1big", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/130svfu/comment/kd6jo2n\n\n\nПРИМЕРЫ\nhttps://photo.sibnet.ru/mixed/\nhttps://photo.sibnet.ru/alb53715/\n+\n(внешние ссылки)\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1360#11" }, "Photo-Forum-g": { "img": "^(photo-forum\\.net/)(?:static/)?(?:site|imgs)_thumbs[^/]*/(.+)", "to": "//$1static/site_pics/$2", "note": "EXAMPLES\nhttps://www.reddit.com/domain/photo-forum.net/new/\nhttps://photo-forum.net/en/index.php?APP_ACTION=GALLERY_RAITING&MONTH=1&YEAR=2023&PERIOD=0&CATEGORY_ID=43&offset=48" }, "Photo-Screen.ru-h": { "link": "photo-screen\\.ru/i/\\w+/?$", "res": "id='screenshot' src='([^']+)", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/130svfu/comment/jnrcrmb\n\nПРИМЕРЫ\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1360#11" }, "Photoforum.ru-g": { "img": "^(photoforum\\.ru/f/p(?:hoto|ortr))\\.(?:50|75|th(?:sq)?)(/\\d{3}/\\d{3}/\\d+_\\d+)(?:\\.th(?:sq)?)?", "to": "$1$2", "note": "ПРИМЕРЫ\nhttps://www.photoforum.ru/photos.0.0.0.0.0.0.0.award.desc.y.2024.0.0.0.0.0.1.ru.html\nhttps://www.photoforum.ru/photos.0.0.35.0.0.0.0.award.desc.y.0.0.0.0.0.0.1.ru.html" }, "Photosex.biz-x": { "link": "^(photosex\\.biz/)v\\.php\\?id=([a-f0-9]+)", "img": "^(photosex\\.biz/)imager/w_\\d+/h_\\d+/([a-f0-9]+).+", "to": "//$1pic_b/$2.jpg", "note": "imqswt\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/l3eoqqd\n\n!!!\nДля работы фильтра требуется правило SMH (см.ЧаВо, п.12).\n==\nThe SMH rule is required for the sieve to work (see FAQ, p.12).\n\nПРИМЕРЫ / EXAMPLES\nhttps://vipergirls.to/threads/10698933-Sweater-Bound\nhttps://vipergirls.to/threads/6666911-DominatedGirls-Julia-Hunter-The-Training-Part-2\nhttps://vipergirls.to/threads/10698931-Elena-Vega-Raw-Ass-Fuck" }, "PhotoZou.jp-g": { "img": "^((?:kura|art)\\d+\\.photozou\\.jp/pub/\\d+/\\d+/photo/\\d+).*\\.", "to": "$1_org.", "note": "EXAMPLES\nhttp://photozou.jp/photo/pickup" }, "Pic.Maxiol-h": { "link": "(pic\\.maxiol\\.com/)\\?v=([^&]+)&?.*", "img": "(pic\\.maxiol\\.com/)\\?v=([^&]+)&?.*", "to": "$1images2/$2", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/130svfu/comment/jn8v5j7\n\nПРИМЕРЫ\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1360#11" }, "PicturePush-h": { "link": "^(?:[\\w-]+\\.)?picturepush\\.com/(?:\\+\\w+|album/\\d+/\\d+/[\\w-]+/.+\\.html$)", "res": "<(?:img class=\"photo\"|source) src=\"([^\"]+)", "img": "^((?:www\\d?\\.)?picturepush\\.com/photo/\\w/\\d+/)(?!img)[^/]+(/[^?]+).*", "to": "$1640$2", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/l9fjg9m\n\nEXAMPLES\nhttps://picturepush.com/explore\nhttps://polonus.picturepush.com/album/46654/p-Rodzina%2C-dom.html\n+\nвидео / video\nhttps://picturepush.com/updated\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1360#11" }, "Pic-Upload.de-h": { "link": "^pic-upload\\.de/view-\\d+", "res": "' src='([^']+)", "note": "EXAMPLES\nhttps://www.reddit.com/domain/pic-upload.de/new/" }, "Picabox.ru-h": { "link": "picabox\\.ru/pic/\\d+", "res": "<meta property=\"og:image\" content=\"([^\"]+)\"", "note": "Baton34V\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3560#13\n\nПРИМЕРЫ\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3560#11" }, "Picbit-h": { "link": "picbit\\.net/view/[^.]+\\.jpg", "res": "<p><a href=\"(/image/[^\"]+)", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/130svfu/comment/jn8v5j7\n\nПРИМЕРЫ\nhttps://picbit.net/gallery/21112011/page/11" }, "PicCash-h": { "link": "(^piccash\\.net/\\d+/\\d+/$)", "url": "$1/1", "res": ":\nvar res=[];\nvar m1=$._.match(/id=\"pcash-click-zoom-pic\"><img src=\"(\\/allpics\\/\\d+\\/\\d+-\\d+\\/img_)thumb(\\/\\d+)-thumb(\\.\\w+)\">/);\n console.log('1');\n console.log(m1);\nif (m1!=null) {res.push(['https://piccash.net'+m1[1]+'full'+m1[2]+m1[3]]);}\nelse {\n console.log('2');\n m1=$._.match(/<div class=\"pcash-pic-full\">\\s*<img src=\"([^\"]+)\">/);\n console.log(m1);\n res.push(['https://piccash.net'+m1[1]]);\n}\nreturn res;", "note": "Baton34V\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=260#7\nOLD\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3800#10\n\n\nПРИМЕРЫ\nhttps://piccash.net/photos" }, "PicDrop-h": { "link": "^picdrop\\.com/(\\w+)/([\\w\\d]+)(?:\\?file=([\\da-f]+))?(?:\\.jpg)?", "url": ": `picdrop.com/api/content/${$[1]}:${$[2]}/files${$[3] ? `/${$[3]}` : `?limit=750`}`", "res": ":\nlet data;\ntry {\n  data = JSON.parse($._);\n} catch (error) {\n  console.error('Could not fetch data.');\n  console.error('Post error on /r/imagus');\n  return;\n}\n\nconst pic = data?.thumbnails?.[0]?.url;\nif (pic) return pic;\n\nconst gallery = data?.files\n  ?.map(obj => obj?.thumbnails?.[0]?.url)\n  ?.filter(e => e)\n  ?.map(url => [url, '']);\nreturn gallery;\n", "img": "^(public\\.picdrop\\.com/)preview/(t/[\\w\\d]+)_\\d+", "loop": 2, "to": ":\nconst file_id = this.node?.closest(\"div[data-preview-file-key]\")?.getAttribute(\"data-preview-file-key\");\nconst res = `${this.node.baseURI}?file=${file_id}`\nreturn file_id && res;\n", "note": "gpl2731\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=2760#7\n\n!!!\nIn order for the sieve to work on the site (inside albums), you need to install the uBO (uBlock Origin) extension:\nIn uBO Settings -> My Filters -> Add this line:\npicdrop.com##[data-cy=\"thumb\"]:style(position:relative;z-index:10;)\n\n\nEXAMPLES\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1360#11" }, "picforall.ru-h-x": { "useimg": 1, "link": "^((?:picforall|imgclick|picclick|freescreens)\\.ru/\\d+/\\d+).*", "url": "$1/1/", "res": "<img src=\"(http://(?:s\\d+\\.)?(?:picforall|imgclick|picclick|freescreens)\\.ru/allimage/[^\"]+)", "img": "^((?:s\\d+\\.)?(?:picforall|imgclick|picclick|freescreens)\\.ru/allimage/[^.]+)-thumb", "to": "$1", "note": "maslorez\nhttps://www.reddit.com/r/imagus/comments/4uiddm/rule_picforallru/\n\nПРИМЕРЫ\n???" }, "Picrew-h": { "link": "^picrew\\.me/(?:share\\?cd=\\w+|[a-z]{2}/image_maker/\\d+)", "res": "(?:<img src|\"og:image\" content)=\"([^\"]+)\n\"\\s+alt=\"([^\"]+)", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/130svfu/comment/jtd4cv9\n\nEXAMPLES\nhttps://www.reddit.com/domain/picrew.me/new/\nhttps://picrew.me/en/search?q%3At=girl&s%3At=2&page=4" }, "PicState-h-x": { "link": "^picstate\\.com/view/full/\\d+", "res": "<img\\s+src=\"([^\"]+)\"\\s+alt=\"", "note": "imqswt\nhttps://www.reddit.com/r/imagus/comments/130svfu/comment/k0jqmfs\n\nEXAMPLES\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1360#11" }, "PictureShack.ru-h": { "link": "^(pictureshack\\.ru/)(view_)([^/]+\\.)(jpe?g|a?png|gif|svgz?|webp|w?bmp|xbm|pict|j(?:if|fif?))\\.html$", "ci": 1, "to": "$1images/$3$4", "note": "Rodny\n\n!!!\nЗагрузка картинок не работает (на 01-2022).\n\n\nПРИМЕРЫ\nhttp://www.pictureshack.ru/gallery0.htm\nhttps://www.reddit.com/domain/pictureshack.ru/new/" }, "Pikabu.ru": { "useimg": 1, "link": "^pikabu\\.ru/(?:story|view)/.+", "res": ":\nlet m=[];\n$=$._.match(/\"application\\/ld\\+json\">({.+?contentUrl.+?})<\\/script>/);\n$=$&&JSON.parse($[1]);\n$.image?.forEach(i=>i.url!==i.contentUrl&&m.push([i.contentUrl,i.description]));\n$.video?.forEach(i=>m.push([i.contentUrl,i.description]));\nreturn m", "img": "^(?:(c?s(?:\\d+)?\\.pikabu\\.ru/(post_img|video)/)(\\d{4}/\\d{2}/\\d{2}/\\d+(?:/[0-9_]+|(?:_[a-f0-9]+)?_\\d+x\\d+))(\\.(?:jpe?g|png|gif|bmp|webp))|(blob:https://pikabu\\.ru/[a-f0-9]+).*)", "to": ":\nlet n=$[2]!=='post_img'&&this.node.parentNode;\nif($[5])n=n.offsetParent;\nn=n&&(n?.getAttribute('data-webm')||(n?.getAttribute('data-source')+'.mp4'));\nreturn n||$[1]+$[3]+'.gif\\n'+$[1]+'big/'+$[3]+'.jpg\\n'+$[1]+'big/'+$[3]+$[4]+'\\n'+$[1]+$[3]+$[4]", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/nlsbbuo/\nOLD\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/l8zk57t\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=1700#20\n\n\nПРИМЕРЫ\nhttps://pikabu.ru/tag/Зима/hot?page=3\nhttps://pikabu.ru/story/menyaem_vzglyad_na_sozdanie_postov_3815560\nhttps://pikabu.ru/story/s_1_avgusta_mozhno_otkazatsya_ot_massovyikh_spamrassyilok_i_zvonkov_vot_kak_yeto_sdelat_13022641#comments\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1360#11" }, "Pikky-h": { "link": "(pikky\\.net/\\w+)/?$", "img": "(pikky\\.net/\\w+)/?$", "to": "$1.#jpg png#", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/130svfu/comment/jn8v5j7\n\nEXAMPLES\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1360#11" }, "PimpAndHost-h-x-p": { "link": "^(pimpandhost\\.com/image/\\d+).*", "url": "$1?size=original", "res": "=\"original\" src=\"([^\"]+)", "img": "^(ist\\d-\\d\\.filesor\\.com/pimpandhost\\.com/[^?#]+)_[0sml]\\.", "to": "$1.", "note": "https://www.reddit.com/r/imagus/comments/i6t97f/request_pimpandhost/\n\n!!!\nСайт имеет задержку загрузки контента для бесплатных посетителей.\n\n\nПРИМЕРЫ / EXAMPLES\nhttps://pimpandhost.com/s/gif?page=4&per-page=16\nhttps://www.reddit.com/domain/pimpandhost.com/new/" }, "Pingvinus.ru": { "img": "^(pingvinus\\.ru/cr_images/userpicture)/s/(.+)", "to": "$1/n/$2", "note": "Egorart\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=1900#8\n\n\nПРИМЕРЫ\nhttps://pingvinus.ru/\n(для \"скриншот от пользователя\")." }, "PINTEREST-g": { "link": "^(?:[a-z]{2}\\.)?pinterest(?:\\.[a-z]{2,3}){1,2}/pin/[\\w-]+/$", "ci": 3, "loop": 3, "res": ":\nconst re =\n /(?:\"__PWS_INITIAL_PROPS__\"|data-relay-response=\"true\") type=\"application\\/json\">(?<data>.+?)<\\/script>/g;\nlet jsons;\ntry {\n jsons = [...$._.matchAll(re)].map(data => JSON.parse(data.groups.data));\n if (jsons.length === 0) throw new Error('No data found');\n} catch (error) {\n console.error('Failed to parse jsons');\n console.error('Post error on /r/imagus');\n return;\n}\n\n// If media link has a matching sieve, use that instead.\nconst link = jsons[1]?.response?.data?.v3GetPinQuery?.data?.link;\nconst loop = !/\\.pin(?:terest|img)\\.com\\//.test(link)&&this.find({href: link});\nif(loop !== false && loop !== '')return {loop:link};\n\nconst json =\n jsons.find(\n // Initialreduxstate has data when logged in.\n json =>\n typeof json?.initialReduxState?.pins === 'object' &&\n Object.keys(json.initialReduxState.pins) > 0\n )?.initialReduxState?.pins || null;\n\nlet data;\ndata = json ? json[Object.keys(json)[0]] : null;\ndata =\n data ||\n (\n jsons.find(json => {\n json?.requestParameters?.name === 'CloseupStoryPinQuery' ||\n json?.requestParameters?.name === 'CloseupDetailQuery';\n }) || jsons[jsons.length - 1]\n )?.response?.data?.v3GetPinQuery?.data;\n\n\nif (!data) {\n console.error('Pinterest object likely changed.');\n console.error('Post error on /r/imagus');\n return;\n}\n\nconst getImg = data => {\n return (\n data?.images?.orig?.url ||\n data?.images?.orig?.['1200x'] || // Logged In\n data?.images?.orig?.['750x'] ||\n data?.images?.orig?.['736x'] ||\n data?.images?.orig?.['564x'] ||\n data?.images?.orig?.['474x'] ||\n data?.images?.orig?.['236x'] ||\n data?.image?.images?.['originals']?.url || // Story Images Logged In\n data?.image?.images?.['1200x']?.url ||\n data?.image?.images?.['736x']?.url ||\n data?.image?.images?.['564x']?.url ||\n data?.image?.images?.['474x']?.url ||\n data?.image?.images?.['236x']?.url ||\n data?.imageSpec_orig?.url || // Logged Out\n data?.imageSpec_1200x?.url ||\n data?.imageSpec_750x?.url ||\n data?.imageSpec_736x?.url ||\n data?.imageSpec_564x?.url ||\n data?.imageSpec_474x?.url ||\n data?.imageSpec_236x?.url ||\n data?.imageSpec_170x?.url\n );\n};\n\nconst getVid = block => {\n return (\n block?.video?.video_list?.['V_EXP7']?.url || // Logged In\n block?.video?.video_list?.['V_EXP6']?.url ||\n block?.video?.video_list?.['V_EXP5']?.url ||\n block?.video?.video_list?.['V_EXP4']?.url ||\n block?.video?.video_list?.['V_EXP3']?.url ||\n block?.video?.video_list?.['V_HLSV3_MOBILE']?.url ||\n block?.videoDataV2?.videoList1080P?.v1080p?.url || // Logged Out\n block?.videoData?.videoList1080P?.v1080p?.url || // Logged Out\n block?.videoDataV2?.videoList720P?.v720P?.url ||\n block?.videoData?.videoList720P?.v720P?.url ||\n block?.videoDataV2?.videoListMobile?.vHLSV3MOBILE?.url ||\n block?.videoData?.videoListMobile?.vHLSV3MOBILE?.url\n );\n};\n//\n\nconst title = data?.gridTitle || data?.grid_title || '';\nconst storyData = data?.storyPinData || data?.story_pin_data;\n\nconst storyList =\n (storyData &&\n storyData.pages\n .map(el =>\n el?.blocks?.[0]?.__typename === 'StoryPinVideoBlock' ||\n el?.blocks?.[0]?.type === 'story_pin_video_block'\n ? getVid(el?.blocks?.[0])\n : getImg(el?.blocks?.[0])\n )\n .filter(el => el)\n .map(url => [url, title])) ||\n [];\n// Return story album if it exists.\nif (storyList.length) return storyList;\n\nconst videoObj = data?.videos?.videoList || data?.videos?.video_list || {};\nconst videoList = Object.keys(videoObj)\n .filter(key => videoObj[key].url)\n .map(key => ({\n url: videoObj[key].url,\n height: videoObj[key].height,\n }))\n .filter(vid => vid.url.endsWith('.mp4'))\n .sort((a, b) => b.height - a.height);\n// Return video if it exists\nif (videoList.length) return [videoList[0].url, title];\n\nconst img = getImg(data);\n// Otherwise return a single image.\nreturn img && [img, title];\n", "img": "^(?:((?:i|(?:s-)?media-c(?:dn|ache\\D*)\\d*)\\.pin(?:terest|img)\\.com/)(?:(upload/\\d+_[^\\W_]{8})_[bft]|(?!550)\\d+x?\\d*(?:_[^/]+)?/|(avatars/[^.]+[_-]\\d+)(?:_(?!600)[^.]+)?(?=\\.))(.*)|blob:https://(?:[a-z]{2,3}\\.)?pinterest\\.com/[a-f0-9-]{36})", "to": ":\naddCss();\n// check if this is a video pin\nconst pin = this.TRG.closest('[data-test-id=\"pin\"]');\nif (pin?.querySelector('[data-test-id^=\"pincard-video\"], [data-test-id=\"pinrep-video\"]')) {\n return `https://ru.pinterest.com/pin/${pin.dataset.testPinId}/`\n}\nif($[1]) return $[1] + ($[2] ? $[2] : ($[3] ? $[3].replace(/(\\d+)_\\d+$/, '$1') + '_600' : '#originals 736x 564x#/' + $[4]))\nvar n=this.node, p=document.evaluate('./ancestor::a[starts-with(@href,\"/pin/\")]//img[contains(@src,\"pinimg.com\")]',n,null,9,null).singleNodeValue\np=p?this.find({src: p.src, IMGS_TRG: n}):''\nreturn (Array.isArray(p) ? p.join('\\n') : (p === null ? 'null' : p)) || ''\n\nfunction addCss() {\n if (document.querySelector('#imagus_styles')) return;\n const styleElement = document.createElement('style');\n styleElement.id = 'imagus_styles';\n styleElement.textContent = `\n [data-test-id*=\"pin-card-hover-overlay\"],\n [data-test-id*=\"pin-card-hover-overlay\"] + *,\n [style*=\"background-color: rgba(17, 17, 17, 0.4)\"] {\n pointer-events:none;\n }\n `;\n\n document.head.appendChild(styleElement);\n}", "note": "hababr\nhttps://www.reddit.com/r/imagus/comments/1nrq3vo/comment/ngzlmyr/\nOLD\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/mxix3d0\nhttps://www.reddit.com/r/imagus/comments/1kddg04/comment/mqcm0zq\n\n\nПРИМЕРЫ / EXAMPLES\nhttps://pinterest.com/\nhttps://www.reddit.com/domain/pinterest.com/new/\nhttps://pinterest.com/search/pins/?q=cackes&rs=typed\nhttps://pinterest.com/StevieMPD/sasha-holland-shirogane-sama/" }, "PixAI-g": { "useimg": 1, "link": "^pixai\\.art/artwork/\\d+", "res": ":\nreturn $._.match(/\"og:image\" content=\"([^\"]+)/)?.[1].replace(/(?:still)?[Tt]humb/,'orig')||''", "img": "^(images-ng\\.pixai\\.art/images/)(?:still)?[Tt]humb/", "to": "$1orig/", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/1eofgnc/comment/lheqwy9\nOLD\nhttps://www.reddit.com/r/imagus/comments/15dz344/comment/jubjesu\n\n!!!\nThe pictures in the author's profile cannot be enlarged\nhttps://pixai.art/@captainlucky-20?before=gaJpZNcAFsmqBjOTw3E%3D\n\n\nПРИМЕРЫ / EXAMPLES\nhttps://pixai.art/artwork/tags/anigma\nhttps://pixai.art/search?q=green&sort=random\nhttps://pixai.art/@user-1742804010542902127/artworks" }, "Pixeldrain-h": { "link": "^(pixeldra(?:\\.in|in\\.(?:com|net))/)([udl])/\\w+(?:#item=(\\d+))?.*", "res": ":\nconst m = t => t?.includes('video') ? '#mp4' : t?.includes('audio') ? '#mp3' : '';\nconst a = i => [u+(i[p])+m(i[f]),i.name];\nlet d=$[2]==='d', f=d?'file_type':'mime_type', u='https://'+$[1]+'api/file'+(d?'system':'/'), p=d?'path':'id', o=$._.match(/window\\.(?:initial_node|viewer_data)\\s*=\\s*({.+?});/), r=/(?:vide|audi)o|image/;\no=o&&JSON.parse(o[1]);\no=o ? d ? o.children?.length ? o.children : o.path?.pop() : o.api_response?.files||o.api_response : null;\nif(Array.isArray(o))o=$[3] ? o[$[3]] : o.some(i=>r.test(i[f])) ? o.filter(i=>r.test(i[f])) : o.filter(i=>i.type==='dir');\nif(o[f]==='application/pdf'){\nthis.TRG.IMGS_ext_data=[['',`<imagus-extension type=\"iframe\" url=\"${`https://${$[1]}res/misc/pdf-viewer/web/viewer.html?file=%2Fapi%2Ffile%2F${o.id}`}\"></imagus-extension>`]];\nreturn {loop:'imagus://extension'};\n}\nreturn o&&Object.keys(o).length ? Array.isArray(o) ? d&&o.every(i=>i.type==='dir') ? noMedia('Directory contents:\\n'+o.map(i=>i.name).join('\\n')) : o.map(a) : (r.test(o[f]) ? a(o) : noMedia('File name: '+o.name)) : noMedia('No media')\n\nfunction noMedia(t){\nconst h=42+((o?.length||0)*42), w=t.split('\\n').sort((a,b)=>b.length-a.length)[0].length*21;\nreturn 'data:image/svg+xml,' + encodeURIComponent(`<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"${h}\" width=\"${w}\" style=\"background-color: #2a2a2a;\">\n<foreignObject height=\"100%\" width=\"100%\">\n<div xmlns=\"http://www.w3.org/1999/xhtml\" style=\"display: table; height: 100%; width: 100%;\">\n<span style=\"color: tomato; display: table-cell; font: 36px sans-serif; vertical-align: top; text-align: ${t[0]==='N'?'center':'left'}; white-space: pre-wrap;\">${t}\n</span>\n</div>\n</foreignObject>\n</svg>`)\n}", "img": "^(pixeldra(?:\\.in|in\\.(?:com|net))/)api/file(/\\w+)/thumbnail.*", "to": "$1api/file$2\n$1api/file$2#mp4", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/n6anlsq\nOLD\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/munvizx\nhttps://www.reddit.com/r/imagus/comments/130svfu/comment/mptdk3z\n\n!!!\n- в случае, если ссылка ведет в каталог, содержащий другие каталоги, фильтр выводит соответствующее сообщение;\n- если файл не является изображением, аудио или видео, фильтр просто выводит сообщение с названием этого файла.\n==\n- in case the link leads to a catalog containing other catalogs, the sieve displays a corresponding message;\n- if the file isn't an image, audio or video, it shows a message with the name of the file.\n\nПРИМЕРЫ / EXAMPLES\nhttps://pixeldrain.com/l/Jf6G1AnK\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1360#11" }, "PiXhost-h-x": { "useimg": 1, "link": "^(pixhost\\.)(?:to|org)(/(?:gallery|show)/(?:\\d+/|\\w+))", "url": "$1to$2", "res": ":\nreturn $[2][1]==='g'?[...$._.matchAll(/img\\s+src=\"(htt[^t]+)t(.+?)thumb([^\"]+)/g)].map(i=>[i[1]+'img'+i[2]+'image'+i[3]]):$._.match(/=\"image-img\" src=\"([^\"]+)/)?.[1]||''", "img": "^t(\\d+\\.pixhost\\.)(?:to|org)/thumb(s/.+)", "to": "img$1to/image$2", "note": "imqswt\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/ncs718r\nOLD\nhttps://www.reddit.com/r/imagus/comments/130svfu/comment/jspp9q8\n\nПРИМЕРЫ / EXAMPLES\nhttps://www.reddit.com/domain/pixhost.to/new/\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1369&limit=1&m=1#1" }, "PIXIV-g-x-q-p": { "link": "^(pixiv\\.net/)(?:(?:\\w\\w/)?artworks/|member_illust\\.php\\?mode=(?:[^&]+&)+?illust_id=)(\\d+).*", "url": "$1ajax/illust/$2", "res": ":\nconst low_resolution_first = false // Set to true to show 1200px image first. Press TAB to switch to full size image.\n\n$=JSON.parse($._)\nif($.error)return !1\nvar i=0,r=[],l=low_resolution_first,$=$.body\nfor(;i<$.pageCount;++i) r.push([[(!l?'#':'')+$.urls.original.replace('_p0', '_p' + i),(!l?'':'#')+$.urls.regular.replace('_p0', '_p' + i)]])\nr[0][1] = '['+$.title+' by ' + $.userName + ' | ' + new Date($.uploadDate).toLocaleString() + '] ' + $.description\nthis.CNT.filename=$.userName+'__'+r[0]?.[0]?.[0].match(/img-original\\/([\\w\\/-]+)/)?.[1].replace(/\\//g,'_')\nreturn r", "img": "^i(?:\\d\\.pixiv|\\.pximg)\\.net/(?:c/\\d+x\\d+[\\d_a-z]*/)?(user-profile|img-master)(/img/\\d\\d(?:\\d\\d/){6}\\d+_[^_]+)_[^.]+(\\.\\w+).*", "to": ":\nvar i=$[1][0]=='i'\nreturn '//i.pximg.net/' + (i ? 'img-original' : $[1]) + $[2] + (i && $[3]=='.jpg' ? '.#jpg png gif#' : $[3])", "note": "imqswt\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/l7hxp8k\n\n\n!!!\n- для показа внешних ссылок необходимо правило для SMH (см.ЧаВо, п.12);\n- есть возможность включить по умолчанию загрузку изображений среднего качества (для тех у кого медленное соединение или прокси): const low_resolution_first = true;\n- анимация Ugoira на данный момент не поддерживается;\n- клавиша TAB также переключает качество изображения во всплывающем окне Имагус;\n- названия изображений сохраняются со страницы автора в формате [имя автора]__[название изображения].[расширение] при сохранении по горячей клавише. NB: включенные в браузере расширения менеджеров закачек (например, IDM) могут мешать работе фильтра;\n- NB! В настоящее время есть проблемы с сохранением контента при использовании хоткея в Chrome, рекомендуется использовать контекстное меню или сохранение перетаскиванием (зависит от браузера или стороннего расширения).\n==\n- To show external links, you need a rule for SMH (see FAQ, p.12);\n- There is an option to enable loading of medium quality images by default (for those with slow connections or proxies):\nconst low_resolution_first = true;\n- Ugoira animation is not supported at the moment;\n- The TAB key also toggles the image quality in the Imagus popup;\n- Image names are saved (via hotkey only) from the author's page in the format [author name]__[title].[ext]. NB: Download manager extensions (e.g., IDM) enabled in your browser may interfere with the sieves's operation;\n- NB! Currently there are problems with saving content when using hotkeys in Chrome, it is recommended to use context menu or drag and drop saving (depends on browser or third party extension).\n\n\nEXAMPLES\nhttps://www.reddit.com/domain/pixiv.net/new\nhttps://www.pixiv.net/en/tags/少女/artworks\nhttps://www.pixiv.net/en/users/41106591" }, "Pixnet-g-p": { "img": "^(?:pic|s\\d?)(\\.pimg\\.tw/)(?:album/)?([^/]+)/(?:element/\\d+_)?([^/_]+)(?:/[^/]+/)?(?:_[nbstq]|\\d+x\\d+).+", "to": "#pic$1$2/$3.#jpg png#\npic$1$2/$3_b.#jpg png#", "note": "EXAMPLES\nhttps://www.pixnet.net/blog/articles/group/9/hot/4\nhttps://www.pixnet.net/blog/articles/group/2\nhttps://chill-tainan2022.events.pixnet.net" }, "Pixnet-proxy-h": { "img": "^imageproxy\\.pimg\\.tw/zoomcrop\\?url=([^&]+).*", "dc": 2, "loop": 2, "to": "$1", "note": "" }, "Placeit-g": { "link": "^(?:recordit\\.co|placeit\\.net)/(?:\\w{10}|c/\\w+/stages/.+)", "res": "(?:class=\"h-full w-full\" src|image/\\w+\"/><link rel=\"preload\" as=\"image\" href)=\"([^\"]+)", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/lt55y97\nOLD\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=2220#5\n\nEXAMPLES\nhttps://placeit.net/c/videos?search=anime\nhttps://placeit.net/gaming/animated-logo\nhttps://placeit.net/c/mockups?f_tags=Print" }, "PlayGround.ru": { "link": "^playground\\.ru/\\w+/\\w+/\\w+-\\d+$", "res": "<meta property=\"og:image\" content=\"([^\\?\"]+)", "img": "^(i\\.playground\\.ru/i/(?:pix|screenshot)/\\d+/[\\w_]+\\.\\w+)\\?\\d+x\\d+$", "to": "$1", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/1inpb4v/comment/mcfsjwq\nOLD\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=580#13\n\n!!!\nИногда может потребоваться повторное наведение курсора.\n\nПРИМЕРЫ\nhttps://www.playground.ru/news\nhttps://www.playground.ru/gallery/star_wars_the_old_republic/\nhttps://www.playground.ru/elden_ring/humor\nhttps://pix.playground.ru/resident_evil_revelations_2/" }, "Plvideo.ru-h": { "link": "^plvideo\\.ru/(?:shorts/|watch\\?v=)([\\w-]{12}).*", "url": "//api.g1.plvideo.ru/v1/videos/$1?Aud=16", "res": ":\n$=JSON.parse($._).item;\nif(!$)return null;\nconst t=[$.title,$.channel.name,new Date($.createdAt).toLocaleString('ru-RU'),$.description].filter(Boolean).join(\" | \");\n$=Object.entries($.profiles).sort((a,b)=>parseInt(b[0])-parseInt(a[0]))[0][1].hls+'#.m3u8';// '#.m3u8' needed for media to be recognized as HLS.\nthis.TRG.IMGS_ext_data = [ '//' + 'data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"640\" height=\"360\"></svg>', `<imagus-extension type=\"videojs\" url=\"${$}\"></imagus-extension>${t}` ];\nreturn {loop:'imagus://extension'}", "img": "^blob:https://plvideo\\.ru/[a-f0-9-]+$", "loop": 2, "to": ":\n$=this.node.closest('[data-video-id]')?.getAttribute('data-video-id');\nreturn $ ? '//plvideo.ru/watch?v='+$ : ''", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/lfbuo3g\n\n!!!\nНа самом сайте в разделе Shorts фильтр не работает. Только на внешних ссылках.\n\nПРИМЕРЫ\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1360#11" }, "Porn.com-x-p": { "link": "^(?:[a-z]{2}\\.)?porn\\.com/out/\\w/.+", "loop": 1, "res": "\"og:url\" content=\"([^\"]+)", "note": "imqswt\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/myzii4m\nOLD\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/mxphoxk\nhttps://www.reddit.com/r/imagus/comments/150zrnk/nsfw_i_want_to_share_sieves_some_i_made_and_some/\n\n\n!!!\nThe sieve does not work in Chromium browsers.\n\n\nEXAMPLES\nhttps://www.porn.com/search?sq=elsa\nhttps://www.porn.com/stepsister\nhttps://www.porn.com/brunette-porn?pg=5" }, "Porn3dx-x-p": { "link": "^(porn3dx\\.com/post/\\d+/[\\w-]+|iframe\\.mediadelivery\\.net/embed/.+)", "res": ":\nif($[1][0]==='i')return {loop:$._.match(/vnd\\.apple\\.mpegURL\" src=\"([^\"]+)/)?.[1]||''}\nconst v=$._.match(/<iframe\\n?\\s+src=\"([^?\"]+)/)?.[1]\n$=[...new DOMParser().parseFromString($._,'text/html').querySelectorAll('div[x-data]')].find(i=>/thumbnail_url_complete/.test(i.getAttribute('wire:initial-data')))?.getAttribute('wire:initial-data')\n$=$&&JSON.parse($)?.serverMemo?.data?.post?.media\nreturn $?.[0]?.url_complete ? $.map(i=>[['#'+i.url_complete,i.low_res_url_complete],i.description||'']) : v ? {loop:v} : ''", "to": "$=new DOMParser().parseFromString($,'text/html');", "note": "imqswt\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/nqoj85p\nOLD\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/ldqyz6y\n\n!!!\nVideos on Porn3dx have a format that can't be played.\n\n\nEXAMPLES\nhttps://porn3dx.com/\nhttps://porn3dx.com/tag/sexy?sort_by=date&popularity_type=popular_all&order_by=desc&media_type=all&ai_filter=all&search_type=tag&searchQuery=32" }, "PornBox-x-q-p": { "link": "^pornbox\\.com/application/watch-page/(\\d+)", "url": "pornbox.com/contents/$1", "res": ":\nmax_resolution = 1080;\n\nlet medias\ntry { medias = JSON.parse($._)?.medias || []; } catch (e) { return; }\nconst mediaId = medias.find(a => a.title === \"Trailer\")?.media_id;\nif (!mediaId) return;\n\nconst req = new XMLHttpRequest();\nreq.open('GET', `https://pornbox.com/media/${mediaId}/stream`, false);\nreq.send();\nif (req.status !== 200) return;\n\nlet streams;\ntry { streams = JSON.parse(req.responseText).qualities; } catch (e) { return; }\n\nconst res_map = { '1080p': 1080, hd: 720, vga: 480, web: 240 };\nconst trailers = streams\n .map(a => ({ res: res_map[a.quality], url: a.src }))\n .filter(a => a.res <= max_resolution)\n .sort((a, b) => a.res - b.res);\n\nreturn trailers.pop()?.url || null;\n", "note": "gpl2731\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3780#21\n\n!!!\nChange max_resolution to your max preferred resolution.\ne.g.\n1080 will result in 1080p video\n900 will result in 720p video\n\nEXAMPLES\nhttps://pornbox.com/application/model/3666\nhttps://pornbox.com/application/store/recommended" }, "PornGifPic-x": { "link": "^(porngifpic\\.com/)pin/(?:\\w+-)+([a-f0-9]+).*", "url": "https://www.$1api/pins/$2", "res": ":\nreturn JSON.parse($._).image", "note": "imqswt\nhttps://www.reddit.com/r/imagus/comments/1ppdzk0/comment/nurs94o\n\nEXAMPLES\nhttps://www.porngifpic.com/" }, "PornHub_albums-x-p": { "link": "^([a-z]{2}\\.)?pornhub\\.com/album/\\d+", "res": ":\nlet res = []\nlet u = [...$._.matchAll(/<a href=\"\\/(photo\\/[^\"]+)/g)].map(i=>i[1])\nconst x = new XMLHttpRequest()\nfor(i=0;i<u.length;i++){\nx.open('Get','https://'+($[1] ? $[1] : 'www.')+'pornhub.com/'+u[i],false)\nx.send()\nlet t = x.responseText\nres.push([t.match(/=\"twitter:image:src\" content=\"([^\"]+)/)[1]])\n}\nreturn res", "note": "imqswt\nhttps://www.reddit.com/r/imagus/comments/14vub0r/comment/jrnf3hj\nOLD\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=1600#8\nhttps://www.reddit.com/r/imagus/comments/c9zlcm/rules_request/\n\n!!!\n- В РФ нужен качественный прокси.\n- При загрузке альбомов могут быть временные \"зависания\" или \"заморозка\" (спиннер перестает вращаться), это нормально, через несколько секунд фильтр начинает работать.\n==\n- When loading albums there may be temporary \"hangs\" or \"freezes\" (the spinner stops spinning), this is normal, after a few seconds the sieve starts working.\n\n\nПРИМЕРЫ / EXAMPLES\nhttps://www.pornhub.com/albums/female-straight-uncategorized?search=teen+18\nhttps://www.pornhub.com/albums/female-straight-uncategorized?search=hentai&page=3" }, "PornHub_images-x-p": { "link": "^(?:[a-z]{2}\\.)?pornhub\\.com/photo/\\d+", "res": "=\"twitter:image:src\" content=\"([^\"]+)\n=\"caption_text\"[^>]+=\"([^\"]+)", "note": "RetroRocket (fix)\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=1600#8\nOLD\nhttps://www.reddit.com/r/imagus/comments/c9zlcm/rules_request/\n\n!!!\nВ РФ нужен качественный прокси.\n\n\nПРИМЕРЫ / EXAMPLES\nhttps://www.pornhub.com/album/28127691\nhttps://www.pornhub.com/album/24024772" }, "PornHub_video-x-p": { "link": "^(?:[a-z]{2}\\.)?pornhub\\.com/(?:view_video\\.php\\?viewkey=\\w+|video/get_media)", "res": ":\nconst max_resolution = 2160\nconst low_resolution_first = true\n\nif($._[0]!=='[')return {loop:JSON.parse($._.match(/var flashvars_\\d+\\s*=\\s*({.+?});/)[1]).mediaDefinitions.find(i=>i.format==='mp4').videoUrl}\n$=JSON.parse($._).filter(i=>i.quality<=max_resolution)\nreturn [[[(!low_resolution_first?'#':'')+$.pop().videoUrl,(!low_resolution_first?'':'#')+$[Math.floor($.length/2)]?.videoUrl]]]", "note": "imqswt\nhttps://www.reddit.com/r/imagus/comments/14vub0r/comment/k34a3da\nOLD\nhttps://www.reddit.com/r/imagus/comments/14vub0r/comment/jrst95g\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3800#8\n\n\n!!!\nВ РФ нужен прокси (и желательно качественный). Курсор лучше наводить на название ролика.\nПереключение качества контента:\nconst low_resolution_first = false (false - более низкое качество выключено, true - более низкое качество включено).\n==\nIt is better to hover the cursor over the name of the video.\nSwitching content quality:\nconst low_resolution_first = false (false - lower quality is disabled, true - lower quality is enabled).\n\n\nEXAMPLES\nhttps://www.pornhub.com/video?c=492\nhttps://www.pornhub.com/pornstar/lana-rhoades\nhttps://www.pornhub.com/channels/mylf" }, "PornHub_video_embed-x-p": { "off": 1, "link": "^(?:[a-z]{2}\\.)?pornhub\\.com/(view_video\\.php\\?viewkey=(\\w+)|video/get_media)", "url": ": $[1][2]==='e'?'https://www.pornhub.com/embed/'+$[2]:$[0]", "res": ":\nif($._[0]!=='[')return {loop:$._.match(/\"mp4\",\"videoUrl\":\"([^\"]+)/)[1].replace(/\\\\/g,'')}\nreturn JSON.parse($._)[0].videoUrl", "note": "imqswt\nhttps://www.reddit.com/r/imagus/comments/14vub0r/comment/k0x2yh4\n\n!!!\nЭто альтернативный фильтр для PornHub (по умолчанию выключен). Если у пользователя возникли проблемы с основным правилом (PornHub_video-x-p), можно использовать его. \n+\nКурсор лучше наводить на название ролика.\n==\nThis is an alternative rule for PornHub (disabled by default). If the user has problems with the basic rule (PornHub_video-x-p), you can use it.\n+\nIt is better to hover the cursor over the name of the video.\n\n\nEXAMPLES\nhttps://www.pornhub.com/video?c=492\nhttps://pornhub.com/view_video.php?viewkey=646473788a36e\nhttps://www.pornhub.com/model/throatterroristxx\nhttps://rt.pornhub.com/channels/mylf" }, "PornWorld_trailer-x-q-p": { "link": "^pornworld\\.com/watch/[\\d-]+/.+", "res": "<source src=\"([^\"]+)", "note": "imqswt\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/nz4rch3\nOLD\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3780#21\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3660#15\n\n!!!\nChange max_resolution to your max preferred resolution.\ne.g.\n1080 will result in 1080p video\n900 will result in 720p video\n\nEXAMPLES\nhttps://pornworld.com/\nhttps://pornworld.com/model/100876/lia-lin" }, "Positronica.ru-s": { "link": "^positronica\\.ru/product/.+", "res": ":\nvar i = $._.indexOf('<div class=\"detail-gallery__slide swiper-slide\">')\nif(!i) { return null; }\nvar t = $._.indexOf('<button class=', i);\nif(!t) { return null; }\nvar res = []\nvar re = /src=\"([^\"]+)\"/gi\nvar a = re.exec( $._.substring(i,t) );\nwhile(a){\n res.push([a[1]]);\n a = re.exec( $._.substring(i,t) );\n}\nreturn res;", "img": "^(img\\.positronica\\.ru/items/\\d+_[^_]+_)[a-z]", "to": "$1b", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/18n32dx/comment/keg4ddm\nOLD\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=2380#5\n\nПРИМЕРЫ\nhttps://positronica.ru/catalog/holodilniki/\nhttps://positronica.ru/catalog/blendery/\nhttps://positronica.ru/catalog/smartfony/apple/" }, "Postimages|postimg-h-p": { "link": "^((p(?:ost[il]m(?:g|ages?)|ixxxels)\\.(?:cc|org)/)(gallery/)?(\\w{7,8})/?)(?:-page_num_(\\d+))?$|^(?:i\\.(p(?:ost[il]m(?:g|ages?)|ixxxels)\\.(?:cc|org)/\\w{7,8})/\\S+$(?<!\\?dl=1))", "url": ": $[3]&&app.name==='Imagus mod'&&platform.firefox ? `https://${$[2]}json :action=list&album=${$[4]}&page=${$[5]||1}`: $[1] || $[6]", "res": ":\nif (!$[3]) return [ $._.match(/http[^?\"]+\\?dl=1/)[0], $._.match(/=\"imagename\">([^<]+)/)?.[1]||'' ]\n\nif (app.name === 'Imagus mod' && platform.firefox) {\n let n = Number($[5])+1, m = this._postimg_images_ || []\n delete this._postimg_images_\n $._ = JSON.parse($._)\n $._.images.forEach(i => m.push([`https://i.postimg.cc/${i[1]}/${i[2]}.${i[3]}`]))\n if ($._.has_page_next) {\n this._postimg_images_ = m\n return {loop: '//' + $[1] + '-page_num_' + (n || 2)}\n }\n return m\n}\n\nif (!this.__bg_request) {\n this.__bg_request_data = {}\n this.__bg_request_id = 9000\n\n this.__bg_request = url => {\n this.__bg_request_id += 1\n Port.send({\n cmd: 'resolve',\n id: this.__bg_request_id,\n params: { rule: { id: $.rule.id } },\n url: url\n })\n return new Promise(resolve => {\n const loop = (data, id) => data[id] ? (resolve(data[id].params._), delete data[id]) : setTimeout(loop, 100, data, id)\n loop(this.__bg_request_data, this.__bg_request_id)\n })\n }\n\n Port.listen(d => d ? d.cmd === 'resolved' && d.id > 9000 ? (this.__bg_request_data[d.id] = d, undefined) : this.onMessage(d) : undefined)\n}\n\nif (!this.__postimg) {\n const P = this.__postimg = { index: 0 }\n\n P.get = async (url, spinner) => {\n if (/i\\.p(?:ost[il]m(?:g|ages?)|ixxxels)\\.(?:cc|org)/.test(url)) return url\n if (spinner) this.show('load')\n const response = await this.__bg_request(url)\n const full_img_url = response.match(/http[^?\"]+\\?dl=1/)[0]\n this.stack[this.TRG.IMGS_album].every((e, i, a) => e[0] === url ? (a[i][0] = full_img_url, false) : true)\n return full_img_url\n }\n\n P.orig_set = this.set\n this.set = async s => {\n if (!/p(?:ost[il]m(?:g|ages?)|ixxxels)\\.(?:cc|org)/.test(s)) return P.orig_set(s)\n P.index += 1\n const index = P.index\n const full_img_url = await P.get(s, true)\n if (index === P.index) P.orig_set(full_img_url)\n }\n\n P.orig__preload = this._preload\n this._preload = async s => !/p(?:ost[il]m(?:g|ages?)|ixxxels)\\.(?:cc|org)/.test(s) ? P.orig__preload(s) : P.orig__preload(await P.get(s))\n}\nreturn Object.entries(JSON.parse($._.match(/embed_value=([^}]+})/)[1])).map(e => [ 'https://' + ($[1]||$[6]).match(/^[^\\/]+\\//)[0] + e[0], e[1][0] ])", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/npae5y4\nOLD\nhttps://www.reddit.com/r/imagus/comments/1md6o7a/comment/n63q9cb\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/lk54rqa\n\n\n\nПРИМЕРЫ / EXAMPLES\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1360#11" }, "Printables": { "link": "printables\\.com/model/(\\d+)-[\\w-]+", "res": ":\nvar res=[];\nx = new XMLHttpRequest();\nx.open('POST', 'https://api.printables.com/graphql/',false);\nx.setRequestHeader('Content-Type', 'application/json');\nx.send('{\"operationName\":\"PrintProfile\",\"variables\":{\"id\":\"' + $[1] + '\"},\"query\":\"query PrintProfile($id: ID!) {\\\\n print(id: $id) {\\\\n ...PrintDetailFragment\\\\n __typename\\\\n }\\\\n}\\\\n\\\\nfragment PrintDetailFragment on PrintType {\\\\n id\\\\n slug\\\\n name\\\\n authorship\\\\n eduProject {\\\\n id\\\\n subject {\\\\n id\\\\n name\\\\n slug\\\\n __typename\\\\n }\\\\n language {\\\\n id\\\\n name\\\\n __typename\\\\n }\\\\n free\\\\n timeDifficulty\\\\n audienceAge\\\\n complexity\\\\n equipment {\\\\n id\\\\n name\\\\n __typename\\\\n }\\\\n suitablePrinters {\\\\n id\\\\n name\\\\n __typename\\\\n }\\\\n organisation\\\\n authors\\\\n targetGroupFocus\\\\n knowledgeAndSkills\\\\n objectives\\\\n equipmentDescription\\\\n timeSchedule\\\\n workflow\\\\n approved\\\\n datePublishRequested\\\\n __typename\\\\n }\\\\n user {\\\\n ...AvatarUserFragment\\\\n isFollowedByMe\\\\n canBeFollowed\\\\n email\\\\n donationLinks {\\\\n id\\\\n title\\\\n url\\\\n __typename\\\\n }\\\\n printsCount\\\\n __typename\\\\n }\\\\n ratingAvg\\\\n myRating\\\\n ratingCount\\\\n description\\\\n category {\\\\n id\\\\n path {\\\\n id\\\\n name\\\\n description\\\\n __typename\\\\n }\\\\n __typename\\\\n }\\\\n modified\\\\n firstPublish\\\\n datePublished\\\\n dateCreatedThingiverse\\\\n hasModel\\\\n nsfw\\\\n summary\\\\n shareCount\\\\n likesCount\\\\n makesCount\\\\n liked\\\\n printDuration\\\\n numPieces\\\\n weight\\\\n nozzleDiameters\\\\n usedMaterial\\\\n layerHeights\\\\n materials {\\\\n id\\\\n name\\\\n __typename\\\\n }\\\\n dateFeatured\\\\n downloadCount\\\\n displayCount\\\\n filesCount\\\\n privateCollectionsCount\\\\n publicCollectionsCount\\\\n pdfFilePath\\\\n commentCount\\\\n userGcodeCount\\\\n remixCount\\\\n canBeRated\\\\n printer {\\\\n id\\\\n name\\\\n __typename\\\\n }\\\\n images {\\\\n ...ImageSimpleFragment\\\\n __typename\\\\n }\\\\n tags {\\\\n name\\\\n id\\\\n __typename\\\\n }\\\\n thingiverseLink\\\\n filesType\\\\n foundInUserGcodes\\\\n license {\\\\n id\\\\n disallowRemixing\\\\n __typename\\\\n }\\\\n remixParents {\\\\n ...remixParentDetail\\\\n __typename\\\\n }\\\\n gcodes {\\\\n id\\\\n name\\\\n filePath\\\\n fileSize\\\\n filePreviewPath\\\\n __typename\\\\n }\\\\n stls {\\\\n id\\\\n name\\\\n filePath\\\\n fileSize\\\\n filePreviewPath\\\\n __typename\\\\n }\\\\n slas {\\\\n id\\\\n name\\\\n filePath\\\\n fileSize\\\\n filePreviewPath\\\\n __typename\\\\n }\\\\n ...LatestCompetitionResult\\\\n competitions {\\\\n id\\\\n name\\\\n slug\\\\n description\\\\n isOpen\\\\n __typename\\\\n }\\\\n competitionResults {\\\\n placement\\\\n competition {\\\\n id\\\\n name\\\\n slug\\\\n printsCount\\\\n openFrom\\\\n openTo\\\\n __typename\\\\n }\\\\n __typename\\\\n }\\\\n __typename\\\\n}\\\\n\\\\nfragment AvatarUserFragment on UserType {\\\\n id\\\\n publicUsername\\\\n avatarFilePath\\\\n slug\\\\n handle\\\\n company\\\\n verified\\\\n badgesProfileLevel {\\\\n profileLevel\\\\n __typename\\\\n }\\\\n __typename\\\\n}\\\\n\\\\nfragment ImageSimpleFragment on PrintImageType {\\\\n id\\\\n filePath\\\\n rotation\\\\n __typename\\\\n}\\\\n\\\\nfragment remixParentDetail on PrintRemixType {\\\\n id\\\\n parentPrintId\\\\n parentPrintName\\\\n parentPrintAuthor {\\\\n id\\\\n slug\\\\n publicUsername\\\\n company\\\\n verified\\\\n handle\\\\n __typename\\\\n }\\\\n parentPrint {\\\\n id\\\\n name\\\\n slug\\\\n datePublished\\\\n images {\\\\n ...ImageSimpleFragment\\\\n __typename\\\\n }\\\\n license {\\\\n id\\\\n name\\\\n disallowRemixing\\\\n __typename\\\\n }\\\\n eduProject {\\\\n id\\\\n __typename\\\\n }\\\\n __typename\\\\n }\\\\n url\\\\n urlAuthor\\\\n urlImage\\\\n urlTitle\\\\n __typename\\\\n}\\\\n\\\\nfragment LatestCompetitionResult on PrintType {\\\\n latestCompetitionResult {\\\\n placement\\\\n competitionId\\\\n __typename\\\\n }\\\\n __typename\\\\n}\"}');\nif (x.readyState != 4) return;\nif (x.status != 200) return;\nvar c = JSON.parse(x.responseText).data.print.images;\nc.forEach(function(obj) {\n res.push(['https://media.printables.com/' + obj.filePath]);\n});\nreturn res;", "note": "Baton34V\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1760#7\n\nПРИМЕРЫ / EXAMPLES\nhttps://www.printables.com/model?category=87\nhttps://www.printables.com/@adafruit" }, "prnt.sc-h-p": { "link": "^prnt(?:\\.sc|scr\\.com)\\/[\\w-]+(\\/|\\..*)?$", "res": ":\nlet meta = document.querySelector('head > meta[name=\"referrer\"]');\nif (!meta) {\n    meta = document.createElement('meta');\n    meta.name = 'referrer';\n    meta.content = 'same-origin';\n    document.getElementsByTagName('head')[0].appendChild(meta);\n} else if (meta.attributes.content.value !== 'same-origin') {\n    meta.attributes.content.value = 'same-origin';\n}\nlet url = ($._.match(/=\"og:image\" content=\"([^\"]+)/)|| [])[1];\nreturn [url];", "img": "^img\\.prntscr\\.com/img\\?url=([^&]+).*", "to": "$1", "note": "Baton34V\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=400#8\nOLD\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3760#8\n\n\nПРИМЕРЫ / EXAMPLES\nhttps://www.reddit.com/domain/prnt.sc/new/" }, "pr0gramm-g": { "link": "^pr0gramm\\.com/.+/?(.+)?/(\\d+)$", "ci": 1, "url": "https://pr0gramm.com/api/items/get?id=$2&flags=1&tags=$1", "res": ":\nlet jsn=JSON.parse($._);\nlet url='pr0gramm.com/'+jsn.items[0].image;\n\nif (url.slice(-3)=='mp4')\n{\n return 'https://vid.' + url;\n}\nelse {\n return 'https://img.' + url;\n}", "note": "hababr\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1980#8\nOLD\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=940#18\n\nEXAMPLES\nhttps://pr0gramm.com/new/!%20meme\nhttps://pr0gramm.com/new/!%20-'tiktok'\nhttps://pr0gramm.com/user/Land/uploads" }, "Price.ru-s": { "link": "^(?:\\w+\\.)?price\\.ru/[^/]+/[^/]+/", "ci": 3, "res": ":\nconst res = [];\nconst doc = new DOMParser().parseFromString($._, \"text/html\");\n\nArray.from(doc.querySelectorAll('.model-slider__sub img')).forEach(el => {\n res.push([el.src.replace(/\\d+x\\d+/, '2000x2000')]);\n});\nreturn res;\n", "img": "^(static\\.price\\.ru/images/models)/\\d+x\\d+/(.+\\.(?:jpe?g|png))", "to": "$1/2000x2000/$2", "note": "hababr\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=2500#3\n\nПРИМЕРЫ\nhttps://price.ru/videokamery/\nhttps://novosibirsk.price.ru/search/?query=телевизор+philips\nhttps://samara.price.ru/mobilnye-telefony/smartfony/?brand_id=246" }, "Megafon.ru-s": { "link": "^\\w+\\.shop\\.megafon\\.ru/[\\w-]+/\\d+$", "res": ":\nconst f=this.find\n$=$._.match(/\\\\\"dop\\\\\":(\\[[^\\]]+\\])/)?.[1].replace(/\\\\\"/g,'\"')\n$=JSON.parse($)\nreturn $?.map(i=>[[f({src:Object.values(i.src)[0]}),i.src['600']||'']])||''", "img": "^(\\w+\\.shop\\.megafon\\.ru/images/)\\d+/", "to": "$1", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/mv1g86a\nOLD\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1020#16\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=2380#5\n\n\nПРИМЕРЫ\nhttps://shop.megafon.ru/mobile?si_sbmt=1&si_actions=&si_av=1&si_archVal=0&si_courier=1&si_salon=1&si_specs_2=2894" }, "Profi.ru-s": { "url": "data:,$&", "res": ":\nconst p_id=location.pathname.match(/profile\\/([^\\/]+)/)?.[1], id=p_id&&JSON.parse(document.body.outerHTML.match(/window\\.APP_DATA=({.+?})</)?.[1]||'{}').appState?.page?.profiles?.[p_id].albums?.edges?.find(i=>RegExp($[1]).test(i.node?.preview?.url))?.node.id;\nif(id){\nconst x=new XMLHttpRequest();\nx.open('POST','https://profi.ru/graphql/',false);\nx.setRequestHeader('Content-Type','application/json');\nx.send(`{\"query\":\"#prfrtkn:warp:a8865a86e38692e39fec728d3ef9f77a5d35c855:5e9c26e229d4481765885051c3a2a5d182618493\\\\nquery albumImagesQuery($albumId: Int!, $photoWidth: Int!) {\\\\npfilesByAlbumId(albumId: $albumId) {\\\\nedges {\\\\nnode {\\\\nsrc: url(transform: {type: PROFI_BY_WIDTH, width: $photoWidth})\\\\nalt: titleSeo\\\\ntitle\\\\ntype\\\\nservices {\\\\nname\\\\n}\\\\ncreated {\\\\nrelativeDate\\\\n}\\\\n}\\\\n}\\\\n}\\\\n}\",\"variables\":{\"albumId\":${id},\"photoWidth\":\"1500\"}}`);\n$=JSON.parse(x.responseText);\nreturn $.data.pfilesByAlbumId.edges.map(i=>[i.node.src.match(/^[^-]+/)[0]]);\n}\n$._=[...this.node.closest('[class=\"ui_1sbvG ui_2ilRy ui_TEhAC\"],[class=\"ui_P7Hoq\"],[class=\"ui_P7Hoq ui_XcgaS\"]')?.querySelectorAll('img[src]')||[]].map(i=>[i.src.match(/^[^-]+/)[0]]);\nconst i=$._.findIndex(([i])=>RegExp($[1]).test(i));\nreturn i>=0 ? {\"\":$._,idx:i} : '//'+$[1]", "img": "^(cdn\\.profi\\.ru/xfiles/\\wfiles/(?:\\d+/)?\\w+\\.(?:jpg|png))\\S+", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/m8vtx5p\nOLD\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=2180#20\n\n!!!\nНа карточке специалиста в разделе \"Альбомы\" фильтр показывает весь альбом при наведении на его обложку, а в разделе \"Фотографии\" - все фото в виде альбома при наведении на любое фото.\n\n\nПРИМЕРЫ\nhttps://profi.ru/profile/user5684854/\nhttps://profi.ru/remont/electromontajnye-raboty/?seamless=1&tabName=PROFILES&searchTerm=электрик" }, "Prokofe.ru": { "link": "^prokofe\\.ru/plugins/eHighSlide/foto\\.php\\?img=(https?://prokofe\\.ru/files/public/[^/]+\\.(?:jpe?g|png|gif))&h=\\d+&w=\\d+", "to": "$1", "note": "Rodny + by Baton34V (fix)\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=1540#12\n\nПРИМЕРЫ\nhttps://prokofe.ru/plugins/forum/forum_viewtopic.php?153016" }, "PromoDJ": { "link": "^promodj\\.com/foto/\\d+/(\\d+)$", "res": ":\nvar i = $._.indexOf('var fotos =')\nif(i<0) { return null; }\nvar t = $._.indexOf('function BootFotoViewer', i);\nif(t<0) { return null; }\nvar res = []\nvar re = new RegExp(\"fotoID: \"+$[1]+\",[\\\\S\\\\s]+?originalURL: '(https?:\\/\\/cdn\\\\.promodj\\\\.com\\/afs\\/[^']+)',\",\"mg\");\nvar a = re.exec( $._.substring(i,t) );\nif (a) {res.push([a[1]]);}\nreturn res", "note": "Rodny + Baton34V (fix)\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=1540#12\n\nПРИМЕРЫ / EXAMPLES\nhttp://promodj.com/foto/1135763#list\nhttp://promodj.com/foto/1135763#middlelist" }, "public-pic.de-h": { "link": "public-pic\\.de/image/show/[^/]+/[a-z0-9]+", "res": "<img src=\"([^\"]+)\" alt=\"\n<h1 style=\"margin-bottom: 10px\"><i>([^<]+)", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/130svfu/comment/jn8v5j7\n\nEXAMPLES\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1360#11" }, "puush|puu.sh-h": { "link": "^(puush\\.me/[^/]+/Gallery)$", "url": "$1/feed", "res": ":\ntry {\n $ = JSON.parse($._).objects, i = $.length, u = '//puu.sh/';\n while(i--) $[i] = [u + $[i].id + '/' + $[i].name, null, u + 't/' + $[i].id];\n return $;\n} catch (ex) {return null}", "img": "^(puu\\.sh/)(?:t/)?(.+)", "to": "$1$2", "note": "EXAMPLES\nhttps://www.reddit.com/domain/puu.sh/new/" }, "QuestionableContent": { "link": "^questionablecontent\\.net\\.?/view\\.php\\?comic=(\\d+).*", "to": "questionablecontent.net/comics/$1.#png jpg gif#", "note": "EXAMPLES\nhttps://www.reddit.com/domain/questionablecontent.net/new/" }, "QuestZone.ru": { "link": "^(questzone\\.ru/)showpic\\.php\\?(\\w+/\\w+/.+\\.(?:jpe?g|png|gif))$", "img": "^(questzone\\.ru/solutions/pics/)small/(.+\\.(?:jpe?g|png|gif))$", "to": "$1$2", "note": "Rodny\n\nПРИМЕРЫ\nhttps://questzone.ru/screenshots/9443/\nhttps://questzone.ru/solutions/deponiaj_1.php\nhttps://questzone.ru/solutions/eyeofaraj_3.php#15" }, "QuestZone.ru_Albums": { "link": "^(questzone\\.ru/)[^/]+/game(/\\d+).*", "url": "https://$1screenshots$2/", "res": ":\nreturn [...$._.matchAll(/<a href=\"\\/showpic\\.php\\?([^\"]+)/g)].map(i=>['//'+$[1]+i[1]])", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/nxyp8es\n\n!!!\nКурсор следует наводить на название альбома.\n\nEXAMPLES\nhttps://questzone.ru/screenshots/" }, "Rambler.ru": { "link": "^(?:images\\.rambler\\.ru/.+image_url=([^&]+).*|news\\.rambler\\.ru/\\w+/\\d+-[\\w-]+/$)", "dc": 1, "img": "^([^/]+\\.rambler\\.ru/img/[^?]+).*", "to": ":\nreturn $[1]||this.node.closest('[role=\"article\"]').querySelector('img').src.match(/^[^?]+/)[0]", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/nxz69h6\nOLD\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/lglc7ii\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1060#13\n\nПРИМЕРЫ\nhttps://news.rambler.ru/\nhttps://images.rambler.ru/search?query=cats" }, "RanmaBooks-x": { "useimg": 1, "link": "^ranmabooks\\.com/([^/]+/)*?image\\.php\\?", "res": "src=\"([^\"]+)\" alt=\"([^\"]+)\" /", "img": "^(ranmabooks\\.com/([^/]+/)+?)RHGt/(?!index\\.)", "to": "$1", "note": "!!!\nНужен аккаунт." }, "Rasfokus.ru-g": { "img": "(rasfokus\\.ru\\/images\\/photos\\/)(?:small|mini|topday)(\\/\\w+\\.\\w+)", "to": "$1medium$2", "note": "Baton34V\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=2000#8\n\nПРИМЕРЫ\nhttp://rasfokus.ru/barsik198/allphoto.html\nhttp://rasfokus.ru/photos/108\nhttp://rasfokus.ru/photos/105/topmonth.html" }, "Rasfokus.ru_blog": { "img": "(rasfokus\\.ru\\/upload\\/blogs\\/)(?:small|mini|topday)\\/(\\w+\\.\\w+)", "to": "$1$2", "note": "Baton34V\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=2000#10\n\nПРИМЕРЫ\nhttp://rasfokus.ru/blogs/blog-lidi-kazyrovoi/vystavka-2011-goda-v-kameronovoi-galere.html\nhttp://rasfokus.ru/blogs/blog-iriny-rdionovoi/prazdniki-i-lyudi-v-moih-fotografijah.html" }, "Ravelry": { "link": "^ravelry\\.com/patterns/library/.+", "res": ":\nconst upgrade = (x) => ['#'+x?.replace(/_[^_.]+\\.(?!.*\\.)/,'.').replace(/webp[/#]/g,''), x?.replace(/_[^_.]+\\.(?!.*\\.)/,'_medium2.').replace(/webp[/#]/g,'')];\n\n$=new DOMParser().parseFromString($._,\"text/html\");\n$=[...$.querySelectorAll('img[data-photo-id]')];\nreturn $.map(i=>[upgrade(i.src),i.alt])", "img": "^((avatar|image)s\\d?-[a-z].ravelrycache.com/)(?:(flickr/[^?]+)_[a-z]|((?:uploads/)?[^/]+/\\d+/)(?:webp/)?([^.]+(?:\\.fw)?)_(?:small(?:2?|_best_fit)|medium2?|square|large)(?:\\.(\\w+))?(?:#(\\w+))?)", "to": ":\nreturn $[1] + ($[3] || ($[4] + $[5] + ($[2]=='avatar'?'_xlarge':'# _b#') + ($[7]||$[6] ? '.' + ($[7]||$[6]) : '')))", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/lkmy7ux\n\nEXAMPLES\nhttps://www.ravelry.com/designers/evelyn-koerselman\nhttps://www.ravelry.com/designers/ashlee-brotzell?page=2\nhttps://www.ravelry.com/yarns/library/hobby-lobby-i-love-this-yarn-sport-weight-solids" }, "RBT.ru-s": { "link": "^(\\w+\\.)?rbt\\.ru/cat/[\\w-]+/[\\w-]+/[\\w-]+/", "res": ":\n$=$._.match(/id=\"__NEXT_DATA__\" type=\"application\\/json\">({.+?})<\\//);\n$=$&&JSON.parse($[1]).props?.pageProps?.initialState?.product?.card;\nconst id=$?.ids[0];\nreturn $?.entities?.[id]?.images?.map(i=>[i])||''\n\n", "img": "^cdn\\.rbt\\.ru/images/gen/item_image/image/\\d+/\\d+/\\w+\\.jpg.*", "to": ":\nreturn this.node.parentNode.parentNode.getAttribute('data-img-gal');\n", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/mv1g86a\nOLD\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1460#10\n\nПРИМЕРЫ\nhttps://msk.rbt.ru/cat/kuhonnaya_tehnika/holodilniki/\nhttps://bataysk.rbt.ru/cat/gadzhety/fitnes_braslety/" }, "Reach-CMS": { "img": "^([^/]{4,70}/(?:[\\w-]+/){0,3}article\\d+\\.ece/)ALTERNATES/[^/]+", "to": "$1BINARY", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/1oj8sg6/comment/nm1feeb/\n\nEXAMPLES\nhttps://www.reddit.com/r/imagus/comments/1oj8sg6/uk_news_sites_full_size_images/" }, "Realbooru-x-p": { "link": "^realbooru\\.com/index\\.php\\?page=post&s=view&id=\\d+.*", "res": "src=\"([^\"]+)\" (?:type=\"video/mp4|id=\"image)\"", "note": "imqswt\nhttps://www.reddit.com/r/imagus/comments/1i74beu/comment/m8in79t\n\n\n!!!\nДанный фильтр должен быть расположен ПЕРЕД фильтром Rule34.xxx-x-q-p.\n==\nThis sieve should be located IN FRONT OF the Rule34.xxx-x-q-p sieve.\n\n\nEXAMPLES\nhttps://realbooru.com/index.php?page=post&s=list&tags=shorts+" }, "REDDIT_Avatar": { "img": "^(styles\\.redditmedia\\.com/[^/]+/styles/[a-z]+Icon_(?:snoo([a-f0-9-]{36}))?[^?]+).*", "to": ":\nreturn $[2] ? `https://i.redd.it/snoovatar/avatars/${$[2]}.png` : $[1]", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/1o85l0u/comment/njxmqdb\n\n!!!\nShows images on users' avatars (if any)." }, "REDDIT_gallery": { "link": "^(?:old\\.)?(reddit\\.com/)gallery/([\\da-z]+).*", "url": ": `https://www.${$[1]}by_id/t3_${$[2]}.json${this.node?.src ? '?'+Date.now() : ''}`", "res": ":\nconst upgrade = r => r?.replace(/preview(\\.redd.it\\/[^?]+).*/, 'i$1');\n$=JSON.parse($._).data.children[0].data, n=0, s=this.node?.src;\n$=($.gallery_data && $.gallery_data.items || []).map(function(c, i) {\n var m=$.media_metadata[c.media_id], u=m.s, l=u.y>1080 && u.x>1920 && m.p?.filter(x=>x.y<=1080 || x.x<=1920).pop()?.u;\nif(s&&u.u&&upgrade(s)===upgrade(u.u))n=i;\n return [\n (u.u ? l ? ['#'+upgrade(u.u), l] : upgrade(u.u) : (u.mp4 ? u.mp4 + '#mp4' : u.gif)),\n (!i ? '[' + new Date($.created_utc*1e3).toLocaleString() + ' | ' + $.title + '] ' : '') + (c.caption || '')\n ]\n})\nreturn s ? {\"\":$,idx:n} : $", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/1nqmfhf/comment/ni6pje3\nOLD\nhttps://www.reddit.com/r/imagus/comments/1m6ekb4/comment/n4uxopd\n\n!!!\nFor more details, see the FAQ, p.16.\n\nПРИМЕРЫ / EXAMPLES\nhttps://www.reddit.com/domain/reddit.com/\nhttps://www.reddit.com/r/all/?feedViewType=compactView" }, "REDDIT_gifs": { "link": "^redditgif/\\?(.+)", "url": "//www.reddit.com/by_id/$1.json", "res": ":\n$=JSON.parse($._).data.children[0].data\nreturn [$.preview?.images[0].variants?.mp4?.source.url.replace(/.+/,'$&#mp4')||$.url, '[' + new Date($.created_utc*1e3).toLocaleString() + '] ' + $.title]", "img": "^i\\.redd\\.it/[\\da-z]+\\.gif", "loop": 2, "to": ":\nvar n = window.location.hostname.slice(-10) == 'reddit.com' && this.TRG||this.node\nif(!n) return $[0]\nif(n.matches('div.link a.thumbnail,div.link a.thumbnail>img, div.link a.title, div.link a.thumbnail.image')) {\n\twhile((n = n.parentNode) && !n.matches('div.link'));\n\tn=n.getAttribute('data-fullname')\n\tif(n)return '//redditgif/?'+n\n}\nreturn $[0]", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/1fausni/comment/llxaauk\nOLD\nhttps://www.reddit.com/r/imagus/comments/1dmq1ks/comment/l9zjsnh\nhttps://www.reddit.com/r/imagus/comments/zznk76/comment/j2ea0a9\n\n!!!\nIt will load a small .mp4 instead of the original .gif (~3 MB vs. ~50 MB for example above). Sieve uses the original gif if mp4 isn't available.\n\nПРИМЕРЫ / EXAMPLES\nhttps://www.reddit.com/r/gifs/\nhttps://old.reddit.com/r/gifs/" }, "REDDIT_media": { "link": "^((?:[a-z]{2,5}(?:-[a-z]{2})?\\.)?reddit\\.com/(?:r|user)/[^/]+/)(?:comments/([\\da-z]+)/[^/]+/(?:\\?utm_content=(?:title|thumbnail).*)?)?$", "loop": 3, "img": "^(g\\.redditmedia\\.com/[\\w-]+\\.gif\\?(?:[^&]+&)*?fm=mp4[^#]*)(.*)", "to": ":\nif (location.hostname === 'reddtastic.com' && this.node.closest('.post')?.querySelector('img,video')) return '//reddtastic/' + $[2]\n\nif ($[3] !== 0) return $[3] == '#mp4' ? $[0] : $[2] + '#mp4'\nvar u, p, c, n = window.location.hostname.slice(-10) == 'reddit.com' && this.TRG || this.node\n\nif (!n) return ''\nif (!$[2] && /^\\/r\\/[^\\/]+\\/comments\\//.test(location.pathname)) {\n u = n.closest('shreddit-post')?.id\n if (u) return 'https://www.reddit.com/by_id/' + u + '.json'\n}\n\nif (!this.find_original && n.matches('shreddit-post > a.absolute')) {\n this.find_original = this.find;\n this.find = function(trg, x, y) {\n if (trg.matches?.('faceplate-img')) {\n let href = trg.closest?.('shreddit-post')?.querySelector('a.absolute')?.href;\n if (href) return this.find_original({ href, IMGS_TRG: trg })\n }\n return this.find_original(trg, x, y);\n }\n}\n\nif (n.matches('div.link a.thumbnail,div.link a.thumbnail>img, div.link a.title, div.link a.thumbnail.image')) {\n p = n;\n while ((p = p.parentElement) && !p.matches('div.link'));\n u = p && p.dataset, u = u && (u.url || u.hrefUrl)\n if (u && /(v\\.redd\\.it|\\.reddit\\.com\\/gallery)\\//.test(u)) return u\n c = p && p.querySelector('div.expando[data-cachedhtml]')\n c = c && c.getAttribute('data-cachedhtml')\n u = c && c.match(/(?:<a href|(?:class=\"preview\"|<source) src)=\"([^\"]+)/g)\n if (u) {\n u = u.map(function(i) {\n var u = i.slice(i.lastIndexOf('\"') + 1).replace(/&/g, '&');\n return u + (i[1] == 's' ? '#mp4' : '')\n });\n u = c.indexOf('<source') != -1 ? u.reverse() : u\n return u.length ? u.join('\\n') : ''\n }\n u = p.dataset, u = u.url || u.hrefUrl\n\n} else if (n.matches('a.Post__titleLink')) {\n u = n.closest('.Post__top').querySelector('a.PostThumbnail').href\n\n} else if (\n n.matches('a[data-click-id=body] > div > h3, .Post div > div[role=img], faceplate-img, a.thumbnail > img') ||\n n.matches('shreddit-post > a.absolute') &&\n !n.parentElement.querySelector('faceplate-img:not(.avatar, .shreddit-subreddit-icon__icon, .absolute, .flair-image)') ||\n n.closest('div[data-id=\"search-media-post-unit\"]') ||\n n.closest('[data-testid=\"post-thumbnail\"]')\n) {\n // if (/^(?:text|multi_media)$/.test(n.offsetParent?.getAttribute('post-type'))) return ''\n if (/^(?:text)$/.test(n.offsetParent?.getAttribute('post-type'))) return ''\n p = n.closest('div[id^=t3_]');\n if (p && p.querySelector('p, i.icon-text')) return ''\n p = p && p.querySelector('a > .icon-external_link')\n p = p ? p.parentElement : { href: '//www.reddit.com/by_id/t3_' + $[2] + '.json' }\n p = this.find({ href: p.href, IMGS_TRG: n })\n n.title = n.getAttribute('aria-label') || n.title\n return (Array.isArray(p) ? p.join('\\n') : (p === null ? 'null' : p)) || ''\n}\n\nreturn u && /^(https?:)?\\/\\/i\\.redd\\.?it/.test(u) ? u : ''", "note": "hababr\nhttps://www.reddit.com/r/imagus/comments/1o0khf4/comment/nm1rv2p\nOLD\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/ne99lb1\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/nc5e2po\n\n\n\n\n\n!!!\n- To view videos and albums on sh.reddit.com, you should hover your cursor over the entire post block (next to the title);\n- To view videos in posts, hover your cursor over the subreddit link at the top.\n- For more details, see the FAQ, p.16.\n\n\nПРИМЕРЫ / EXAMPLES\nhttps://www.reddit.com/r/imagus/new/?feedViewType=compactView\nhttps://www.reddit.com/r/ipl/?feedViewType=cardView\nhttps://www.reddit.com/search/?q=Animals&type=media\nhttps://sh.reddit.com/?feed=home&feedViewType=classicView\nhttps://www.reddit.com/r/videos/?feedViewType=cardView\nhttps://sh.reddit.com/r/kpopfap/" }, "REDDIT_post": { "link": "^reddit\\.com/by_id/(t3_[\\da-z]+)", "res": ":\n$ = JSON.parse($._).data.children[0].data\nif ($.crosspost_parent&&$.crosspost_parent_list?.length) $ = $.crosspost_parent_list[0]\n\nconst loop = !$?.url.includes('.reddit.com/')&&this.find({href: $.url})\nif(loop !== false && loop !== '')return {loop:$.url}\n\nif ($.preview?.images?.[0]?.variants?.mp4?.source.url) {\n return [$.preview.images[0].variants.mp4.source.url + '#mp4', $.title]\n}\n\nif ($.preview?.reddit_video_preview?.hls_url) {\n return { loop: $.preview?.reddit_video_preview?.hls_url }\n}\n\n// prevent looping to the same page\n//if ($.url.includes($.permalink)) return true;\n\nreturn !$.url.includes($.permalink) && ($.is_video || $.is_gallery || this.TRG?.matches?.('faceplate-img') || ['youtube.com', 'youtu.be'].includes($.domain)) ? { loop: $.url } : $.preview?.images?.map(i=>i?.source?.url) || Object.values($.media_metadata||{})?.map(i=>i.s?.u) || true", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/ndyybc4\nOLD\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/mxiush3\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/lheshaq\n\n\n!!!\nДля просмотра видео и альбомов на sh.reddit.com курсор следует наводить на весь блок с публикацией (рядом с названием). На одиночных картинках фильтр работает как обычно.\n==\nTo view videos and albums on sh.reddit.com, you should hover your cursor over the entire post block (next to the title). On single images, the sieve works as usual.\n\n\nПРИМЕРЫ / EXAMPLES\nhttps://www.reddit.com/search/?q=rtwlingo666\nhttps://sh.reddit.com/r/kpopfap/?feedViewType=cardView" }, "REDDIT_thumbs": { "link": "^rt/\\?(http.+)", "loop": 3, "url": "$1", "res": ":\nif($[1].includes('//old.reddit.com/')){\n$=[...$._.matchAll(/<p><a href=\"(https?:\\/\\/(?:preview\\.redd\\.it|reddit\\.com\\/link)\\/[^\"]+)/g)].map(i=>[i[1].replace(/&/g,'&')])\nreturn $.length ? $ : !1\n}\nvar t, r=['<meta[^>]+?property=[\\'\"]?og:','[\\'\"]?\\\\s[^>]*?content=[\\'\"]([^\\'\">]+)'], m = $._.match(RegExp(r[0]+'image(?::url)?'+r[1]))\nreturn m ? [m[1], (t = $._.match(RegExp(r[0]+'title'+r[1])))&&t[1]] : !1", "img": "^(?:i\\.r(eddituploads\\.com|ddt\\.co)/[\\da-f]{32}\\?|[a-f]\\.thumbs\\.redditmedia\\.com/[\\w-]{16,43}\\.jpg$|external-preview\\.redd\\.it/[\\w-]{16,43}\\.\\w+\\?).*", "to": ":\nvar n=!$[1]&&this.node,x=n&&(n.matches('.Post div>div[role=img]')||n.offsetParent?.offsetParent?.getAttribute('content-href')),u=x;\nn && (n.title = n.getAttribute('aria-label') || n.title);\nvar f=this.find({href:x});\nvar r=n.parentNode?.getAttribute('data');\nr=r&&JSON.parse(r).postId||n?.closest('.text-neutral-content')?.querySelector('.i18n-list-item-post-content')?.getAttribute('post-id');\nreturn x&&(x=(n.closest('.Post')) && (x=x.querySelector('div>a[data-click-id=body][href]')) || f!==false&&f!==''&&x)\n? x.href||x\n: n&&n.matches('div.link>a.thumbnail>img, .PostThumbnail>img, a>div[role=img]')&&n.parentNode.href||u ? '//rt/?'+(n.parentNode.href||u) : r ? '//reddit.com/by_id/'+r+'.json' : $[0]", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/1ki4tj4/comment/mrvhu3t\nOLD\nhttps://www.reddit.com/r/imagus/comments/1hdmrb4/comment/m24xnde\n\n\nПРИМЕРЫ / EXAMPLES\nhttps://www.reddit.com/r/aww/" }, "REDDIT_video": { "link": "^(?:v\\.redd\\.it|(?:[^.]{2,5}\\.)?reddit\\.com/link/[\\da-z]+/video)(/[\\da-z]+).*", "url": ": (()=>{this.use_reddit_MP4 = false /*Set to true to use MP4 video without audio*/;return this.use_reddit_MP4 ? `//v.redd.it${$[1]}/DASHPlaylist.mpd` : 'data:,'+$[0]})()", "res": ":\nif(this.use_reddit_MP4){\nvar v=0,u,m=$._.match(/width=\"\\d+\">\\s*<BaseURL>([^<]+)/g)\nif(!m)return m\nm.forEach(function(m){\n m=m.match(/\"(\\d+)\">[^>]+>(.+)/)\n if(m[1] > v) {v=m[1]|0; u=m[2]}\n})\nreturn (/^https:\\/\\//.test(u)?u:'//v.redd.it'+$[1]+'/'+u)+'#mp4'\n}\nthis.TRG.IMGS_ext_data = [\n '//' + 'data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1280\" height=\"720\"></svg>',\n `<imagus-extension type=\"videojs\" url=\"https://v.redd.it${$[1]}/DASHPlaylist.mpd\"></imagus-extension>${this.TRG.IMGS_caption}`\n]\nreturn {loop:'imagus://extension'}", "img": "^preview(\\.redd.it/[^?]+\\?.*)", "to": ":\nif (this.TRG?.hasAttribute(\"src\") && !this.TRG.src) {\n this.TRG.src = this.TRG.getAttribute(\"src\");\n}\nreturn $[0].indexOf('format=mp4') > 0 ? $[0]+'#mp4' : 'i'+$[1]", "note": "hababr\nhttps://www.reddit.com/r/imagus/comments/1o0khf4/comment/nm1u9oy\nOLD\nhttps://www.reddit.com/r/imagus/comments/1f4dxjw/comment/lkyo1t4\n\n!!!\nIn the second field, you can choose which video should show the sieve - HLS or MP4.\nFor more details, see the FAQ, p.16.\n\n\nПРИМЕРЫ / EXAMPLES\nhttps://old.reddit.com/r/all/\nhttps://www.reddit.com/domain/v.redd.it/new/\nhttps://www.reddit.com/r/videos/?feedViewType=cardView\nhttps://old.reddit.com/r/Grocerycost/comments/1cacltn/7512_in_berlingermany_single_but_i_regularly_get/" }, "Reddtastic-g-p": { "link": "^reddtastic/(.+)", "url": "https://www.reddit.com/by_id/t3_$1.json", "res": ":\n$=JSON.parse($._).data?.children?.[0]?.data;\n$=$.secure_media?.reddit_video?.hls_url||!/reddit\\.com\\/(?:r|u(?:ser)?)\\//.test($.url)&&$.url||$.preview?.reddit_video_preview?.dash_url||$.preview?.images?.[0]?.variants?.mp4?.source?.url||$.preview?.images?.[0]?.source?.url;\nreturn $?.length?/\\.gif\\b/.test($)?$:{loop:$}:''", "note": "imqswt\nhttps://www.reddit.com/r/imagus/comments/1bp0x7a/comment/kywegxt\nOLD\nhttps://www.reddit.com/r/imagus/comments/1bp0x7a/comment/kx3btvh\n\n!!!\nWhen you put the cursor over the video cover, the sieve shows the video (in MP4 format) without sound. To view videos with sound (in HLS format), move the cursor over the video title. To download videos with sound in HLS format it is recommended to use a special program, for example, IDM (Internet Download Manager).\n\nEXAMPLES\nhttps://reddtastic.com/r/funny" }, "Reddxxx-x-p": { "url": ": 'https://reddxxx.com/api/db/post?postId='+this.node.closest('div[role=\"gridcell\"]').querySelector('a[href*=\"/comments/\"]').pathname.match(/\\/comments\\/(\\w+)/)[1]", "res": ":\n$._=JSON.parse($._).Media\nif($._.some(i=>i.galleryIndex))return $._.map((i,n)=>$._.filter(i=>i.galleryIndex===n).sort((a,b)=>b.height-a.height)[0]).filter(Boolean).map(i=>['https://'+$[1]+i.loc+$[2]+i.id])\nif($._.some(i=>i.type==='video')){\n$._=$._.filter(i=>i.type==='video').sort((a,b)=>b.height-a.height)[0]\nreturn 'https://'+$[1]+$._.loc+$[2]+$._.id\n}\n$._=$._.sort((a,b)=>b.height-a.height)[0]\nreturn 'https://'+$[1]+$._.loc+$[2]+$._.id", "img": "^(cdn)\\d(\\.reddxxx\\.com/).+", "note": "imqswt\nhttps://www.reddit.com/r/imagus/comments/174tf0r/comment/k4jf09a\n\n\nEXAMPLES\nhttps://reddxxx.com/r/ass\nhttps://reddxxx.com/r/kpopfap\nhttps://reddxxx.com/c/Rule34\nhttps://reddxxx.com/u/strickland_banks" }, "REDGIFs_gallery-x-q-p": { "link": "^(?:(?:i|v\\d)\\.)?redgifs\\.com/(?:watch|i(?:fr)?)/(\\w+).*", "url": ": !this.rg_auth&&(location.hostname!=='www.redgifs.com'||!localStorage.getItem('session_data')||this.rg_auth_fail) ? 'https://api.redgifs.com/v2/auth/temporary' : 'data:,'+$[1]", "res": ":\nif(!this.rg_auth)this.rg_auth=$._[0]==='{' ? JSON.parse($._).token : JSON.parse(localStorage.getItem('session_data')).token\nlet x=new XMLHttpRequest()\nx.open('GET','https://api.redgifs.com/v2/gifs/'+$[1].toLocaleLowerCase()+'?_redgifs_headers_',false)\nx.setRequestHeader(\"Authorization\",\"Bearer \"+this.rg_auth)\nx.send()\nif(x.status!==200){\nif(!this.rg_auth_fail&&location.hostname==='www.redgifs.com'){\nthis.rg_auth_fail=true\ndelete this.rg_auth\nreturn {loop:$[0]}\n}\nreturn null\n}\nconst jsn=JSON.parse(x.responseText).gif, t=[jsn.tags.join(\", \").replace(/.+/,'[$&]'),jsn.userName,new Date(jsn.createDate*1000).toLocaleString(),jsn.description].filter(Boolean).join(\" | \")\nif(!jsn.gallery){\nreturn [[['#'+jsn.urls.hd,jsn.urls.sd],t]]\n}else{\nx.open('GET','https://api.redgifs.com/v2/gallery/'+jsn.gallery+'?_redgifs_headers_',false)\nx.setRequestHeader(\"Authorization\",\"Bearer \"+this.rg_auth)\nx.send()\nreturn JSON.parse(x.responseText).gifs.map((i,n)=>[i.urls.hd,(!n?t:'')])\n}", "img": "^(?:thumbs\\d+|files|media)\\.redgifs\\.com/([^-]+?)(?:-\\w+)?\\.jpg.*", "note": "imqswt\nhttps://www.reddit.com/r/imagus/comments/1ox33x3/comment/noyb847\nOLD\nhttps://www.reddit.com/r/imagus/comments/1fudu77/comment/lumw9nu\nhttps://www.reddit.com/r/imagus/comments/1fudu77/comment/lq01otu\n\n\n\n!!!\n- Данный фильтр должен находиться ПЕРЕД фильтром REDGIFs-x-p;\n- Для работы фильтра требуется SMH (см.ЧаВО, п.12);\n- Для показа видео и альбома курсор следует наводить на его ДАТУ (нижний левый угол).\n==\n- This sieve should be placed BEFORE the RedGIFs-x-p sieve;\n- For the sieve to work, the SMH is required (see FAQ, p.12);\n- To view the video and album, hover your cursor over its DATE (lower left corner).\n\n\nПРИМЕРЫ / EXAMPLES\nhttps://www.reddit.com/domain/i.redgifs.com/new/\nhttps://www.redgifs.com/explore/images?order=new\nhttps://www.redgifs.com/gifs/white-hair?tab=images\nhttps://www.redgifs.com/niches/thick-booty\nalbums\nhttps://www.reddit.com/r/imagus/comments/1ox33x3/comment/noy6urm" }, "REDGIFs-x-q-p": { "link": "^((gfycat)|(?:[^.]+\\.)?redgifs|gifdeliverynetwork)\\.com/+(?:\\w\\w\\w?/|watch/)?(?!popular|privacy|support|partners|gifbrewery|gaming|reaction|upload|create|signup|cajax/)(?:ifr/|amp/)?(?:(?:(?:gifs/)?detail/)?([a-zA-Z]{7,})[^/?#]*/?(?:[?#].*)?|@([\\w.-]+)(?:/[^/]+)*/([\\w-]+).*)$", "url": ": 'https://api.'+($[2]||'redgifs')+'.com/v1/' + ($[4] ? 'users/'+$[4]+'/album_links/'+$[5] : 'gfycats/'+$[3])", "res": ":\nvar u,g,i=0,r=[], o=JSON.parse($._),rg='redgifs';\nif(o.errorMessage)return $[1]==rg ? null : {loop: $[0].replace($[1], rg)}\no=o.publishedGfys||[o.gfyItem]\nwhile(g=o[i++]) {\n u=['#'+g.webmUrl, '#'+g.mp4Url]\n g.mobileUrl&&u.push(g.mobileUrl)\n r.push([u, (g.title||'') + (g.tags&&g.tags.length ? ' ['+g.tags.join(', ')+']':'')])\n}\nreturn r.length ? r : null", "img": "^(?:zippy|fat|giant|thumbs\\d*)\\.((gfycat)|redgifs)\\.com/([a-zA-Z]+).*", "note": "imqswt\nhttps://www.reddit.com/r/imagus/comments/14z7zfs/comment/js1uhjs\n\n\n!!!\n- Для работы фильтра требуется SMH (см.ЧаВО, п.12);\n- Для показа видео и альбома курсор следует наводить на его ДАТУ (нижний левый угол);\n- Переключение на HD/SD качество - клавиша TAB. \n==\n- For the sieve to work, the SMH is required (see FAQ, p.12);\n- To view the video and album, hover your cursor over its DATE (lower left corner);\n- Switch to HD/SD quality - TAB key.\n\nПРИМЕРЫ / EXAMPLES\nhttps://www.redgifs.com/explore\nhttps://www.redgifs.com/niches/tits-sucking\nhttps://www.reddit.com/domain/redgifs.com/new\nhttps://www.reddit.com/domain/gifdeliverynetwork.com/new" }, "Redlib-p": { "link": "^((?:libreddit|lr?|red(?:dit(?!\\.com/)|lib)?|rl?|snoo)\\.[^/]+|(?:\\w+\\.)?safereddit\\.com)/(?:r/\\w+/(?:comments/[a-z0-9]+|s)/\\w+|(u(?:ser)?/[\\w-]+))", "loop": 1, "url": ": (location.hostname===$[1]?'data:,':'')+$[0]", "res": ":\nconst use_HLS = true // <- For sound with HLS player, set to true. For mp4 video without sound, set to false.\n\nif($.base[0]==='d'){\nconst x=new XMLHttpRequest();\nx.open('GET',$[0],false);\nx.send();\n$._=x.responseText;\n}\nconst u = 'https://'+$[1];\nlet m, t;\nif($[2]){\nt = $._.match(/(?:\"user_description\">([^<]+)<.+?)?<label>(Karma)<\\/label>[^<]+<label>(Created)<\\/label>[^<]+<div>([^<]+)<\\/div>[^<]+<div>([^<]+)<\\/div>/s);\nreturn [u+$._.match(/id=\"user_icon\"\\n?\\s+src=\"([^\"]+)/)?.[1].replace(/&/g,'&'),[t[1],t[2]+': '+t[4],t[3]+': '+t[5]].filter(Boolean).join(', ')];\n}\nt = $._.match(/<div class=\"post_body\">(?:\\n\\s+)?<!-- SC_OFF --><div class=\"md\"><p>(.+?)<\\/p>/s)?.[1]||'';\nm = [...$._.matchAll(/<figure>[^<]+<a href=\"([^\"]+)\".+?<figcaption>[^<]+<p>([^<]*)<\\/p>/gs)].map((i,n)=>[u+i[1].replace(/&/g,'&'),[(!n?t:''),i[2]].filter(Boolean).join(' | ')]);\nif(!m?.length)m = ($._.match(/\"og:video\" content=\"([^\"]+)/)?.[1]||$._.match(/<a id=\"post_url\" href=\"([^\"]+)/)?.[1]||$._.match(/<a href=\"([^\"]+)\" class=\"post_media_image\"/)?.[1])?.replace(/&/g,'&').replace(/^\\//,u+'/')||'';\nif(use_HLS&&/vid\\/[^/]+\\/\\d+\\.mp4$/.test(m)){\nm = m.replace(/vid(\\/[^/]+\\/)\\d+\\.mp4/,'hls$1HLSPlaylist.m3u8');\nthis.TRG.IMGS_ext_data = ['//data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"640\" height=\"480\"></svg>',`<imagus-extension type=\"videojs\" url=\"${m}\"></imagus-extension>${t}`];\nreturn 'imagus://extension'\n}\nreturn Array.isArray(m) ? m : [m,t]", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/neb4xs2\nOLD\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/m45zfna\nhttps://www.reddit.com/r/imagus/comments/1d38g2k/comment/l68m7ok\n\n!!!\nBy default, the sieve plays video with sound using the [Extension] sieve from the rule-set. To use mp4 video without sound, set use_HLS in the sieve code to false.\n\n\nEXAMPLES\nhttps://l.opnxng.com/search?q=GREEN\nhttps://redlib.freedit.eu/r/popular\netc" }, "RedTube|Tube8|YouPorn-x-q-p": { "link": "^(?:[a-z]{2}\\.)?(redtube|tube8|youporn)\\.com/(?:watch/\\d+/|(?:(?!pornstar/|cat/)[^/]+/[^/]+|porn-video)/\\d+|\\d{3}.*?(?:\\/|\\?|$)|(video/get_media|media/mp4/?\\?s=))", "url": ": !$[2]&&RegExp(`${$[1]}\\.com$`).test(location.hostname) ? 'data:,'+$[0] : $[0]", "res": ":\nconst max_resolution = 1080\nconst low_resolution_first = false\n\nif($.base[0]==='d'){\nconst x=new XMLHttpRequest();\nx.open('Get',$[0],false);\nx.send();\n$._=x.responseText;\n}\nif(!$[2])return {loop:JSON.parse($._.match(/mediaDefinition:\\s*(\\[[^\\]]+mp4[^\\]]+\\])/)[1]).find(i=>i.format==='mp4').videoUrl.replace(/^\\//,'//'+$[1]+'.com/')}\n$=JSON.parse($._).filter(i=>i.quality<=max_resolution)\nreturn [[[(!low_resolution_first?'#':'')+$.pop().videoUrl,(!low_resolution_first?'':'#')+$[Math.floor($.length/2)]?.videoUrl]]]", "note": "imqswt\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/leoi9tp\nOLD\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/lej3bqr\nhttps://www.reddit.com/r/imagus/comments/14vub0r/comment/k34a3da\n\n\n!!!\n- На некоторых прокси фильтр не работает;\n- Курсор рекомендуется наводить на название;\n- По умолчанию стоит высокое разрешение видео, его можно поменять так (в третьем поле сверху):\nconst low_resolution_first = true.\n==\n- It is better to hover the cursor over the name of the video;\n- Switching content quality: const low_resolution_first = false (false - lower quality is disabled, true - lower quality is enabled).\n\n\nEXAMPLES\nhttps://www.tube8.com/cat/erotic/11/\nhttps://redtube.com/39048311\nhttps://www.youporn.com/\nhttps://www.reddit.com/domain/redtube.com/new/\nhttps://www.reddit.com/domain/tube8.com/new/\nhttps://www.reddit.com/domain/youporn.com/new/" }, "Regard.ru-s": { "link": "^regard\\.ru/product/\\d+/.+", "res": ":\nlet i = $._.indexOf('<div class=\"swiper-wrapper\">');\nif(i<0) { return null; }\nlet t = $._.indexOf('<div class=\"product-pagination\">', i);\nif(t<0) { return null; }\nlet res = [];\nlet re = /data-src=\"([^\"]+)\"/gi\nlet data=$._.substring(i,t);\nlet a = re.exec(data);\nif (a==null) {\n re=/<img src=\"([^\"]+)\"/gi\n a = re.exec(data);\n}\nwhile(a) {\n res.push([a[1]]);\n a = re.exec(data);\n}\nreturn res;", "note": "Baton34V\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1020#16\nOLD\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=640#10\n\n!!!\nКурсор наводить на название товара.\n\nПРИМЕРЫ\nhttps://www.regard.ru/catalog/1014/zhestkie-diski-hdd\nhttps://www.regard.ru/catalog/1351/mikrovolnovye-pechi" }, "Render.ru|Renderu.com-g": { "link": "^renderu?\\.(ru\\/ru|com\\/en)\\/gallery\\/artwork\\/(\\d+)", "res": "target=\"_blank\"><img itemprop=\"image url\" src=\"(https?:\\/\\/[^\\)]+?)\" alt=", "note": "Baton34V\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=1560#2\n\nПРИМЕРЫ \nhttps://render.ru/ru/gallery\nhttps://renderu.com/en/gallery" }, "Renderotica_gallery-g-x": { "link": "^renderotica\\.com/gallery/shorturl/\\d+/.+", "url": ": (/renderotica\\.com$/.test(location.hostname)?'data:,':'')+$[0]", "res": ":\nif($.base[0]==='d'){\nconst x=new XMLHttpRequest();\nx.open('GET',$[0],false);\nx.send();\n$._=x.responseText;\n}\nvar i = $._.indexOf('<div id=\"galleryimage\">');\nif(i<0) { return null; }\nvar t = $._.indexOf('<div class=\"clearfix\">', i);\nif(t<0) { return null; }\nvar res = [];\nvar re = /<a target=[\"']_blank[\"'] href=[\"']([^\"']+)[\"']>/gi\nvar a = re.exec( $._.substring(i,t) );\nif (a==null) {\n re = /file: '([^']+)',/i\n a = re.exec( $._.substring(i,t) );\n}\nvar author=$._.match(/href=\"\\/artists\\/([^\"\\/]+)\\/Gallery\"/)?.[1].replace(/[^\\w.-]/g,'_');\nvar name=$._.match(/<img src='\\/sys\\/GetGalleryItem\\.ashx\\?ID=[^']+' title='([^']+)/)?.[1].replace(/[^\\w.-]/g,'_');\nif(author&&name)this.CNT.filename=author+' - '+name;\nreturn a[1];", "note": "imqswt\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/n07qx9n\nOLD\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/lpm0fl5\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/kgkj8gu\n\n\n!!!\n- Чтобы фильтр работал, нужен аккаунт.\n- фильтр умеет сохранять скачанные изображения с названием [автор] - [название].[ext] - но только при сохранении с помощью горячей клаивши и только из галереи автора. Также любые включенные в браузере расширения менеджеры закачек могут мешать работе фильтра (перед использованием данной функции их необходимо отключать).\n==\n- In order for the sieve to work, you need an account.\n- The sieve can save downloaded images with the name: [author] - [title].[ext] - but only when saved using a hotkey and only from the author's gallery. Also, any download manager extensions (for example, IDM) enabled in the browser may interfere with the sieve (they must be disabled before using this feature).\n\n\nПРИМЕРЫ / EXAMPLES\nhttps://www.renderotica.com/gallery.aspx\nhttps://www.renderotica.com/gallery/search?searchfor=blond" }, "Renderotica_store-g-x": { "link": "^renderotica\\.com/store/sku/.+", "res": ":\nvar i = $._.indexOf('<div class=\"image-navigation\">');\nif(i<0) { return null; }\nvar t = $._.indexOf('<div class=\"Pager\">', i);\nif(t<0) { return null; }\nvar res = [];\nvar re = /<a href\\s*=\\s*[\"']([^\"']+)[\"']/gi\nvar a = re.exec( $._.substring(i,t) );\nwhile(a) {\n res.push([a[1]]);\n a = re.exec( $._.substring(i,t) );\n}\nvar author=$._.match(/class=\"vendor\" href=\"[^\"]+\">([^<]+)/)?.[1].replace(/[^\\w.-]/g,'_');\nvar name=$._.match(/p_lt_zoneContentBody_CGBytes_ProductDetail_lblName\">([^<]+)/)?.[1].replace(/[^\\w.-]/g,'_');\nif(author&&name)this.CNT.filename=author+' - '+name;\nreturn res;", "note": "imqswt\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/n07qx9n\nOLD\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/kgkj8gu\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=2720#3\n\n\n!!!\nЧтобы фильтр работал, нужен аккаунт.\n==\nIn order for the sieve to work, you need an account.\n\n\nПРИМЕРЫ / EXAMPLES\nhttps://www.renderotica.com/store.aspx" }, "Rezat.ru-s": { "link": "^rezat\\.ru/[\\w-]+/[\\w-]+/[\\w-]+", "res": ":\n$=[...new DOMParser().parseFromString($._,\"text/html\").getElementById('gallery-big').querySelectorAll('img[src],source[src],iframe[src]')];\nif($.some(i=>i.nodeName==='IFRAME')){\nthis.TRG.IMGS_ext_data=$.map(i=>i.nodeName==='IFRAME'?['',`<imagus-extension type=\"iframe\" url=\"${i.src}\"></imagus-extension>`]:[i.src,'']);\nreturn {loop:'imagus://extension'}\n}\nreturn $.map(i=>[i.src])", "img": "^(rezat\\.ru/db\\.img/catalog/gallery/)preview\\.", "to": "$1wm/", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/m9m5f7p\nOLD\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3660#3\n\n\nПРИМЕРЫ\nhttps://rezat.ru/knifes/universalnye/\nhttps://rezat.ru/kollekcionnye_avtorskie_i_kastomnye_nozhi/kastomnye_nozhi_artklassa/" }, "Reuters-m": { "link": "^reuters(?:agency|connect)?\\.com/(?:(?:item/.+|[a-z]{2}/licensereuterscontent/)\\?utm_medium|(video/).+|null(.*))", "url": ": $[1]?$[0]:'data:'+Date.now()", "res": ":\nif($[1]){\nthis.TRG.IMGS_ext_data = ['//data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1920\" height=\"1080\"></svg>',`<imagus-extension type=\"videojs\" url=\"${$._.match(/<meta property=\"og:video:url\" content=\"([^\"]+)/)[1]}\"></imagus-extension>${$._.match(/\"description\":\\s*\"([^\"]+)/)?.[1]}`]\nreturn {loop:'imagus://extension'}\n}else{\nlet m, n=this.node\ntry{\nm=JSON.parse(document.body.outerHTML.match(/Fusion\\.globalContent=({.+?});/)[1]).result.related_content.galleries.find(i=>i.content_elements.find(x=>x.alt_text===n.attributes?.alt?.textContent||x.caption?.match(/^[^.]+/)[0]===n.previousSibling?.textContent?.match(/^[^.]+/)[0])).content_elements.map(i=>[i.url,i.caption])\n}catch(e){\nm=[...n.closest('div[data-testid^=\"gallery-\"],div[data-testid^=\"primary-gallery\"],div[class^=\"carousel-\"][role=\"presentation\"],div[class^=\"gallery-modal__gallery-carousel__\"]')?.querySelectorAll('div[data-testid=\"Image\"]')||[]]\nm=m?.length?m.map(i=>[i.querySelector('img[src]')?.src||i.lastChild.innerText.match(/img\\s+src=\"([^\"]+)/)[1]]):n.closest('figure').querySelector('img')?.src?.match(/^[^&]+/)[0]\n}\nconst i=$[2]&&m.findIndex(i=>RegExp(`${$[2].replaceAll('.','\\\\.')}`).test(i[0]))||0\nreturn {\"\":m,idx:i}\n}", "img": "^(ajo\\.prod.reuters\\.tv/api/v\\d/img/[\\w-]+|static\\.reuters\\.com/resources/r/\\?.*&t=|(reuters\\.com/resizer/[^&]+)).*", "loop": 2, "to": ":\nif($[2]&&this.node.closest('div[class^=\"carousel\"][role=\"presentation\"]'))return 'https://www.reutersagency.com/null'+this.node.src\ntry{\nreturn JSON.parse(document.scripts.__NEXT_DATA__.innerText).props.initialState.video.playlist.find(i=>RegExp(`${$[1].replace('?','\\\\?')}`).test(i.image)).canonical_url\n}catch(e){\nconst u=document.body.outerHTML.match(/https:\\/\\/[^\\/]+\\/reuters\\//)?.[0]\nreturn $[2]&&u?u+$[2].match(/([^\\/?]+)\\?/)?.[1]+'\\n//'+$[2]:'//'+($[2]||$[0]).replace(/.*filters:quality\\(\\d+\\)\\/(.*)/,'$1')\n}", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/n9cfz4t\nOLD\nhttps://www.reddit.com/r/imagus/comments/16khx6t/comment/l108irw\nhttps://www.reddit.com/r/imagus/comments/16khx6t/comment/k0wklje\n\n\n!!!\n- The cursor should hover over the link below the album - \"Acquire Licensing Rights\" / \"Purchase Licensing Rights\".\n- Video partially supported, partially - only audio.\n\nEXAMPLES\nhttps://www.reuters.com/world/africa/\nhttps://www.reuters.com/video/legal-news\n(albums):\nhttps://www.reuters.com/world/africa/magnitude-7-earthquake-strikes-morocco-gfz-2023-09-08/\nhttps://www.reddit.com/r/imagus/comments/14b0e93/comment/k02tect" }, "Reverb-s-p": { "link": "^reverb\\.com/item/\\d+-", "res": ":\nconst t=$._.match(/description__content\">(.+?)<\\//)?.[1].replaceAll('<br>',' - ')||''\nreturn [...$._.matchAll(/meta itemProp=\"image\" content=\"([^\"]+)/g)].map((i,n)=>[['#'+i[1].replace(/\\/quality=[^/]+/,''),i[1]],!n?t:''])", "img": "^(rvb-img\\.reverb\\.com/i/[\\w-]+)/quality=[^/]+", "to": "$1", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/16oxtmq/comment/o2le542\nOLD\nhttps://www.reddit.com/r/imagus/comments/16oxtmq/comment/k1pcpt4\n\n\nEXAMPLES\nhttps://reverb.com/p/peterson-strobostomp-mini?sort=price%7Casc\nhttps://reverb.com/marketplace?product_type=effects-and-pedals" }, "RiotPixels": { "link": "^\\w+\\.riotpixels\\.com/games/[^/]+/(screenshots|covers|promos|artworks)/\\d+/", "res": "<div class=\"big-image\">\\n\\s+<a target=_blank href=\"(http://s\\d+\\.riotpixels\\.net/data/[^/]+/[^/]+/[^\"]+)\">", "note": "Rodny\n\nПРИМЕРЫ / EXAMPLES\nhttp://ru.riotpixels.com/games/call-of-duty-infinite-warfare/screenshots/\nhttp://ru.riotpixels.com/games/call-of-duty-infinite-warfare/promos/" }, "RottenTomatoes-p": { "link": "^(rottentomatoes\\.com/(?:m|tv)/[^/]+(?:/s\\d+)?)(/(?:trailer|picture|video)s)?.*", "url": ": (()=>{if(/https:\\/\\/www\\.rottentomatoes\\.com\\/(?:m|tv)\\/[^\\/]+(?:\\/s\\d+)?$/.test(location.href)){let thumbs=[...document.querySelectorAll('rt-img[data-qa=\"carousel-item-img\"],rt-link[href$=\"/pictures\"]')];thumbs.map(i=>i.outerHTML=i.outerHTML.replace(/\\brt-(img|link)\\b/g,(a,b)=>b==='img'?'img':'a'))};return $[0]})()", "res": ":\nif(!$[2]){\nconst combine = (...n) => n.filter(Boolean).join(' - ')\nlet isDir = false\nconst cast=(JSON.parse($._.match(/\"castAndCrewData\" type=\"application\\/json\">({.+?})<\\/script/)?.[1]||'{}')?.people||[...$._.matchAll(/\"insetText\" aria-label=\"([^\"]+)/gs)]).flatMap(i=>!/Director/.test(i[1])?[[i.name||i[1],i.role].filter(Boolean).join(' - ')]:[]).join('\\n').replace(/.+/,'\\n<b>Top Cast</b>\\n$&')\nconst plot=$._.match(/\"synopsis-value\">([^<]+)/)?.[1]?.replace(/.+/,'\\n<b>Plot</b>\\n$&')\n$._=JSON.parse($._.match(/type=\"application\\/ld\\+json\">(?:\\n\\s+)?({.+?})(?:\\n|<\\/script)/)[1])\nconst title=`<span style=\"font-size: 120%; font-weight: bold;\">${$._.name}</span>`\nconst duration=$._.duration\nconst date=new Date($._.dateCreated).toLocaleDateString(navigator.language,{year:'numeric',month:'short',day:'2-digit'})\nconst genre=$._.genre.join(', ')\nconst rating=$._.contentRating\nconst tomatoRating=$._.aggregateRating?.ratingValue.replace(/.+/,'TomatoMeter: $&%')\nconst director=$._.director?.map(i=>i.name)?.join(', ').replace(/.+/,(t)=>'\\n<b>Director'+($._.director.length>1?'s':'')+': </b>'+t)\nconst author=$._.author?.map(i=>i.name)?.join(', ').replace(/.+/,(t)=>'<b>Writer'+($._.author.length>1?'s':'')+': </b>'+t)\nconst info=[title, combine(duration,date), combine(genre,rating), tomatoRating, plot, director, author, cast].filter(Boolean).join('\\n')\nthis._RT_imgs=[[$._.image,`<imagus-extension type=\"sidebar\">${info}</imagus-extension>`]]\nreturn {loop:'https://www.'+$[1]+'/pictures'}\n}\nif($[2][1]==='p'){\n$._=JSON.parse($._.match(/\"photosCarousel\" type=\"application\\/json\" hidden>\\n?\\s*({.+?})\\n?\\s*<\\/script/)?.[1]||'[]').images?.map(i=>[i.imageUrl?.replace(/^https:\\/\\/resizing\\.flixster.+\\/(https:\\/\\/)/,'$1'),i.caption||''])\nif(!this._RT_imgs)return $._\n$._.forEach(i=>this._RT_imgs.push(i))\nreturn {loop:'https://www.'+$[1]+'/videos'}\n}\nif(/^[vt]$/.test($[2][1])){\n$=JSON.parse($._.match(/id=\"videos\"\\s+type=\"application\\/json\">(\\[.+?\\])<\\/script/)?.[1]||'[]').map(i=>[i.file?.match(/^[^?]+/)[0]+'#mp4',i.description||''])\nif(!this._RT_imgs)return $\n$.forEach(i=>this._RT_imgs.push(i))\n}\nthis.TRG.IMGS_ext_data=this._RT_imgs\ndelete this._RT_imgs\nreturn {loop:'imagus://extension'}", "img": "^(?:resizing\\.flixster\\.com/.+/(https://resizing\\.flixster\\.com/)|rottentomatoes\\.com/.+)", "to": ":\nif(/https:\\/\\/www\\.rottentomatoes\\.com\\/(?:m|tv)\\/[^\\/]+(?:\\/s\\d+)?$/.test(location.href)){\nlet thumbs=[...document.querySelectorAll('rt-img[data-qa=\"carousel-item-img\"],rt-link[href$=\"/pictures\"]')]\nthumbs.map(i=>i.outerHTML=i.outerHTML.replace(/\\brt-(img|link)\\b/g,(a,b)=>b==='img'?'img':'a'))\n}\nreturn $[1]||''", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/o2ldp1s\nOLD\nhttps://www.reddit.com/r/imagus/comments/1b9k30f/comment/ku1yoxj\n\n!!!\n- this sieve does not work in the \"Pictures\" section;\nhttps://www.rottentomatoes.com/m/poor_things/pictures\n- place your cursor over the movie title (below the cover).\n\nEXAMPLES\nworks:\nhttps://www.rottentomatoes.com/search?search=snow\nhttps://www.rottentomatoes.com/tv/the_witcher/videos\npartially:\nhttps://www.rottentomatoes.com/browse/movies_in_theaters/sort:newest\nnot works:\nhttps://www.rottentomatoes.com/tv/the_witcher/s02/pictures\nhttps://www.rottentomatoes.com/tv/the_witcher/s02/cast-and-crew" }, "RoumenovoMaso.cz-x": { "link": "^(roumenovomaso\\.cz/)masoShow\\.php\\?file=([^&]+).*", "img": "^(roumenovomaso\\.cz/)(?:thumbnails|archived)/(?:POH)?([^?]+).*", "to": "$1#upload signed archived trash#/$2", "note": "imqswt\nhttps://www.reddit.com/r/imagus/comments/130svfu/comment/jr9iz3u\n\n\nEXAMPLES\nhttps://www.roumenovomaso.cz/?agree=on\nhttps://www.roumenovomaso.cz/masoArchive.php\nhttps://www.roumenovomaso.cz/masoListTop.php" }, "Rouming.cz": { "link": "^(rouming\\.cz/)roumingShow\\.php\\?file=([^&]+).*", "img": "^(rouming\\.cz/)(?:thumbnails|archived)/(?:POH)?([^?]+).*", "to": "$1#upload signed archived trash#/$2", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/130svfu/comment/jr9iz3u\nOLD\nhttps://www.reddit.com/r/imagus/comments/bywq51/comment/ers570y\n\nEXAMPLES\nhttps://www.rouming.cz/\nhttps://rouming.cz/roumingListTop.php\nhttps://www.rouming.cz/roumingComments.php\nhttps://www.rouming.cz/roumingArchive.php" }, "Rozetka.com.ua-s-p": { "link": "^(?:\\w+\\.)?rozetka\\.com\\.ua/(ua/)?[^/]+/p\\d+", "res": ":\n$=JSON.parse($._.match(/\"script_seo_markupProduct\">(.+?)<\\//)?.[1]||'{}');\nconst t=$.description;\nreturn $.image?.map((i,n)=>[i.replace('base_action','original'),!n?t:''])||''", "img": "^(content\\d*\\.rozetka\\.com\\.ua/goods/images/)(?:base_action|big(?:_tile)?|(?:mobile_)?large|(?:mobile_)?medium|preview|small)", "to": "#$1original\n$1big", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/m9t02fu\nOLD\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/loi4z1z\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1660#20\n\n\nПРИМЕРЫ / EXAMPLES\nhttps://rozetka.com.ua/all-tv/c80037/unique=50134/\nhttps://rozetka.com.ua/mobile-phones/c80003/filter/preset=budget_smartphones/" }, "RTGallery-x": { "link": "^rtgallery\\.net/[^/]+/\\d+\\.html", "res": "src=\"([^\"]+\\.mp4[^\"]*)", "note": "imqswt\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/mnjy5vq/\n\nEXAMPLES\nhttps://rtgallery.net/nude-celebs/\nhttps://rtgallery.net/search/blond/" }, "Rule34.dev-x-p": { "link": "^(app\\.rule34\\.dev/r34/\\d)[^?]*(\\?id=\\d+).*", "url": "$1$2", "res": ":\n$=$._.match(/\"__NEXT_DATA__\" type=\"application\\/json\">({.+?})<\\//)\n$=$&&JSON.parse($[1]).props?.pageProps?.newResult[0][0]\nreturn $ ? $.file_url : ''", "note": "imqswt\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/mw3my9n\nOLD\nhttps://www.reddit.com/r/imagus/comments/167kjzv/comment/jyxqzci\n\n\nEXAMPLES\nhttps://app.rule34.dev/gel/1/score:%3E10+haruno_sakura\nhttps://app.rule34.dev/r34/0/score:%3E10+animated+" }, "Rule34.Paheal-x-p": { "useimg": 1, "link": "^rule34\\.paheal\\.net/post/view/\\d+", "res": ":\nvar t=$._.match(/<title>([^<]+)/)?.[1]\n$=$._.match(/(?:id='main_image'|<source)\\s+src='([^']+)('\\s+type='video\\/mp4')?/)\nreturn [$[1]+($[2]?'#mp4':''),t]", "img": "^(?:(r34i.paheal-cdn.net/[a-f0-9]{2}/[a-f0-9]{2}/[a-f0-9]+)|[^.]+\\.paheal\\.net/_thumbs((/[a-f0-9]{2})([a-f0-9]{2})[^/]+)/thumb\\.(?:pn|jpe?)g)$", "to": ":\nreturn $[1]?$[1]+'\\n'+$[1]+'#mp4':'//r34i.paheal-cdn.net'+$[3]+'/'+$[4]+$[2]+'\\n//r34i.paheal-cdn.net'+$[3]+'/'+$[4]+$[2]+'#mp4'", "note": "imqswt\nhttps://www.reddit.com/r/imagus/comments/197c11b/comment/ki3sh25\nOLD\nhttps://www.reddit.com/r/imagus/comments/jr9r3e/can_i_get_some_help_with_this_site/\n\n\nEXAMPLES\nhttps://rule34.paheal.net/post/list\nhttps://rule34.paheal.net/post/list/Abigail_Lincoln/1\nhttps://rule34.paheal.net/post/list/Byleth_%28female%29/1\nhttps://rule34.paheal.net/post/list/animated/1" }, "Rule34.us-x-p": { "link": "rule34\\.us\\/index\\.php\\?r=posts\\/view&id=\\d+", "res": ":\nconsole.log(\"Rule34.us Sieve\");\n\norig_img_url=$._.match(/href=\"([^\"]*?)\".{1,100}Original/)[1];\n\nvar returnval = [\n [orig_img_url, \"\"]\n ];\nconsole.log(\"returnval: \", returnval);\nreturn returnval;", "note": "iceiller9999\nhttps://www.reddit.com/r/imagus/comments/11s43t5/comment/jccdpl7\n\nEXAMPLES\nhttps://rule34.us/index.php?r=posts/index&q=2girls\nhttps://rule34.us/index.php?r=posts/index&q=mina_ashido" }, "Rule34.xxx|Rule34.wtf-x-q-p": { "link": "^(rule34\\.(?:xxx|wtf))/index\\.php\\?page=post&s=view&id=\\d+.*", "url": ": (location.hostname.endsWith($[1])?'data:,':'')+$[0]", "res": ":\nconst low_quality_first = false // Set to true to show lower quality image first. Switch to high quality with TAB when hovering over links. To have it show lower quality first when hovering over image thumbnails, edit the variable in the 'to' field below.\n\nif($.base[0]==='d'){\nconst x=platform.firefox ? new content.XMLHttpRequest() : new XMLHttpRequest();\nx.open('GET',$[0],false);\nx.send();\n$._=x.responseText;\n}\nconst l=cfg.hz.hiRes&&low_quality_first, hd_url=$._.match(/\"og:image\" itemprop=\"image\" content=\"([^\"]+)/)?.[1], sd_url=$._.match(/src=[\"']([^\"']+\\/samples\\/[^\"']+)/)?.[1], t=$._.match(/<meta name=\"keywords\" content=\"[^\"]+?, ([\\da-h][^\"]+)/)?.[1]||'';\nif(t)this.CNT.filename=t.match(/(?:\\S+\\s?){1,3}/)?.[0]?.replace(/[^\\w.-]/g,'_')?.trim()+'-'+(hd_url||sd_url)?.match(/([\\w-]+)\\.\\w+(?:\\?|$)/)?.[1];\nreturn [[[hd_url?(l?'':'#')+hd_url:'',sd_url?(l?'#':'')+sd_url:''],t]]", "useimg": 1, "img": "^(wimg|api-cdn)(\\.rule34\\.xxx//?)thumbnail(s/\\d+/)thumbnail_([a-f0-9]{32,40}\\.)(.+)", "to": ":\nconst low_quality_first = false // Set to true to show lower quality image first. Switch to high quality with TAB. This works when hovering over images. For links, edit the variable in the 'res' field above.\n\nconst l=cfg.hz.hiRes&&low_quality_first;\nreturn $[1]==='api-cdn' ? $[1]+$[2]+'image'+$[3]+$[4]+$[5] : this.node.classList?.contains('webm-thumb')||$[0][0]==='a' ? `https://ahrimp4${$[2]}image${$[3]+$[4]}mp4` : `${l?'':'#'}https://wimg${$[2]}image${$[3]+$[4]}#jpg jpeg png gif#\\n${l?'#':''}https://wimg${$[2]}sample${$[3]}sample_${$[4]}#jpg jpeg png gif#`", "note": "imqswt\nhttps://www.reddit.com/r/imagus/comments/1oaldk7/comment/nkg4lad\nOLD\nhttps://www.reddit.com/r/imagus/comments/1mut3iw/comment/nadxosq\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/na13hxv\n\n\n\n!!!\n- возможно изменение разрешения изображений (для тех у кого прокси или медленное соединение). \nconst low_quality_first = false/true\nhttps://postimg.cc/2Vj4fYfr\nПереключение между средним и выскоим разрешением - клавиша TAB;\n- Могут быть проблемы с видео с русского IP (нужен VPN, желательно американский).\n==\n- it is possible to change the resolution of images (for those who have proxy or slow connection).\nconst low_quality_first = false/true\nhttps://postimg.cc/2Vj4fYfr\nSwitch between medium and high resolution - TAB key.\n\n\nПРИМЕРЫ / EXAMPLES\nhttps://www.reddit.com/domain/rule34.xxx/new/\nhttps://rule34.xxx/index.php?page=post&s=list&tags=short\nhttps://rule34.xxx/index.php?page=post&s=list&tags=video+\nhttps://rule34.xxx/index.php?page=post&s=list&tags=animation\nhttps://rule34.wtf/index.php?page=post&s=list&tags=video" }, "Rule34Collection-x-p": { "link": "^rule34collection\\.com(/[\\w-]+)/$", "loop": 1, "res": ":\nvar id=$._.match(/src=\"([^\"]+\\/)embed(\\/\\d+)/);\nreturn id ? id[1]+'video'+id[2]+$[1] : !1;", "note": "imqswt\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/ncv9k2c\n\nEXAMPLES\nhttps://rule34collection.com" }, "Rule34gen|Rule34Video|Rule34-videos-x-q-p": { "link": "^(rule34(video|-videos|gen)\\.(?:party|com))/videos?/(?:\\d+/.*?/|[\\w-]+/)", "url": ":(location.hostname===$[1]?'data:,':'')+$[0]", "res": ":\nconst low_resolution_first = false\n\nif($.base[0]==='d'){\nconst x=platform.firefox ? new content.XMLHttpRequest() : new XMLHttpRequest();\nx.open('GET',$[0],false);\nx.send();\n$._=x.responseText;\n}\nif($[2]==='-videos')return {loop:$._.match(/\"contentUrl\":\\s*\"([^\"]+)/)?.[1]||''};\nlet title = /<title>([^<]+)/gm.exec($._)[1];\nfunction deobfuscate(r,t){let e=(r=r.split(\"/\").splice(2))[5],n=\"\",l=\"\";l=n=e.substring(0,32);let o=\"\";for(f=\"\",g=1;g<t.length;g++)f+=parseInt(t[g])?parseInt(t[g]):1;for(s=parseInt(f.length/2),$=parseInt(f.substring(0,s+1)),(g=(_=parseInt(f.substring(s)))-$)<0&&(g=-g),f=g,(g=$-_)<0&&(g=-g),f+=g,f*=2,f=\"\"+f,i=10,u=\"\",g=0;g<s+1;g++)for(h=1;h<=4;h++)(a=parseInt(t[g+h])+parseInt(f[g]))>=i&&(a-=i),u+=a;o=u;for(var s=l,$=l.length-1;$>=0;$--){for(var _=$,u=$;u<o.length;u++)_+=parseInt(o[u]);for(;_>=l.length;)_-=l.length;for(var a=\"\",b=0;b<l.length;b++)a+=b==$?l[_]:b==_?l[$]:l[b];l=a}return r[5]=e.replace(n,l),r.join(\"/\")}\nlet videovars = /var flashvars = ({[\\n].+});/gm.exec($._);\neval(\"videovars = \"+videovars[1]);\nlet l = low_resolution_first, urls = [];\nfor(el in videovars){\n if(el.match(/^video.*?url\\d?$/)){\n urls.push([deobfuscate(videovars[el], videovars.license_code)+'#mp4', videovars[el+'_text'] ? videovars[el+'_text'] : title]);\n }\n}\nthis.CNT.filename=$._.match(/<span class=\"name\">([^<]+)/)?.[1]+' - '+$._.match(/<title>([^<]+)/)?.[1]\nreturn [[[(!l?'#':'')+urls[urls.length-1][0],(l?'#':'')+urls[0][0]]]];", "note": "imqswt\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/nyk9wxg\nOLD\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/ncv9k2c\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/n1rufl8\n\n\n!!!\n- Для тех, у кого низкая скорость соединения или медленный прокси, в фильтре есть возможность установить качество видео SD вместо HD:\nconst low_resolution_first = true\n- Для Rule34gen нужен хороший американский прокси.\n==\nFor those with slow connection speeds or slow proxies, the sieve has an option to set the video quality to SD instead of HD:\nconst low_resolution_first = true\n\n\nПРИМЕРЫ / EXAMPLES\nhttps://rule34video.com\nhttps://rule34-videos.com\nhttps://rule34gen.com" }, "Rule34Hentai-x-p": { "useimg": 1, "link": "^(rule34hentai\\.net)/post/view/\\d+", "res": ":\nreturn '//'+$[1]+$._.match(/<a href=\"([^\"]+)\" download[>=]/)[1]", "img": "^(rule34hentai\\.net/)_thumbs(/[\\da-f]{32}).*", "to": "$1_images$2\n$1_images$2#mp4", "note": "imqswt\nhttps://www.reddit.com/r/imagus/comments/1cpjqwn/comment/l3uard7\nOLD\nhttps://www.reddit.com/r/imagus/comments/15m46xu/comment/jvf3ieu\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=300#12\n\nEXAMPLES\nhttps://rule34hentai.net/post/list/Animated/1\nhttps://rule34hentai.net/post/list/DC_Comics/1\nhttps://rule34hentai.net/post/list/3D/1" }, "Ruliweb": { "link": "^bbs\\.ruliweb\\.com/\\w+/(?:\\d+/)?board/\\d+/", "res": ":\nreturn [...$._.matchAll(/(?:muted=\"\" playsinline=\"|img loading=\"lazy\" [^>]+|href=\"#\"><img width=\"\\w+)\" (?:fetchpriority=\"high\" )?src=\"(https?:\\/\\/i?\\w+\\.ruliweb\\.com\\/(?:img|osi)[^\"]+)\" (?:alt|style)=|\"thumbnailUrl\": \"([^\"]+)/g)].map(i=>[[i[1]?.replace('/img/','/ori/')||i[2],i[1]]])", "img": "^(i?[a-z0-9]+\\.ruliweb\\.com/)(?:thumb(/[^.]+\\.)([a-z0-9]+)|img(/.+))", "to": ":\nreturn $[3]==='gif'||$[4]?$[1]+'ori'+($[4]||$[2]+'mp4'):$[1]+'img'+$[2]+$[3]", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/o2dqc49\nOLD\nhttps://www.reddit.com/r/imagus/comments/1hginjj/comment/m2k2wg7\nhttps://www.reddit.com/r/imagus/comments/15sx7lx/comment/jwp1lwo\n\nEXAMPLES\nhttps://bbs.ruliweb.com/family/212/board/300064?page=3\nhttps://bbs.ruliweb.com/search?q=@#gsc.tab=0&gsc.q=search&gsc.page=1" }, "Rumble-h-q-p": { "link": "^rumble\\.com/.+\\.html", "res": ":\nconst lower_quality_first = false // true shows lowest quality video first. Press TAB to switch to highest quality.\n\nlet l=lower_quality_first, res=[];\nlet vh=$._.match(/\"video\":\"(\\w+)\",\"div\":\"videoPlayer\"/i)[1];\nlet x=new XMLHttpRequest();\nx.open('GET','https://rumble.com/embedJS/u3/?request=video&ver=2&v='+vh,false);\nx.send();\nlet js=JSON.parse(x.responseText).ua;\nlet hls = js.hls?.auto?.url;\nlet media = js.mp4&&Object.values(js.mp4)?.sort((a,b)=>a.meta.h-b.meta.h);\nreturn media?.length ? [[[(!l?'#':'')+media.pop().url,(!l?'':'#')+media?.[0]?.url]]] : hls ? {loop:hls} : ''", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/nskd6s5\nOLD\nhttps://www.reddit.com/r/imagus/comments/1g5ndy3/comment/lsfi6oy\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=4000#14\n\nEXAMPLES\nhttps://rumble.com/category/news\nEXT LINKS\nhttps://www.reddit.com/domain/rumble.com/new/\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=4000#13\nSIDEBAR\nhttps://rumble.com/vh7597-dancing-bears-make-waves-at-the-zoo.html" }, "RussianPlanes-g": { "link": "^(russianplanes\\.net/id)(\\d+)$", "res": "<img src=\"(https?:\\/\\/russianplanes\\.net\\/images\\/to\\d+\\/0?$2\\.(?:jpe?g|png|bmp))\"", "to": "\n", "note": "Baton34V\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=1680#8\n\nПРИМЕРЫ\nhttps://russianplanes.net/new\nhttps://russianplanes.net/7days\nhttps://russianplanes.net/type/!Aviation_engines!/ASh-62" }, "RuTracker|Pornolab-x-p": { "link": "^(?:(?:rutracker\\.org|pornolab\\.net)/forum/(?:viewtopic|tracker)\\.php(?!.+&).+|rutracker_loop/(.+))", "url": ": $[1]||$[0]", "res": ":\n// Get movie poster\nconst poster = !$[1] && [...$._.matchAll(/(?:\"postImg postImgAligned img-right\"|<div class=\"post-align\" style=\"text-align: center;\"[^&]+?) title=\"(http[^\"]+)/gs)].pop()?.[1];\n\n// Get page title\nconst title = $._.match(/title>([^<]+)/)?.[1]||'';\n\n// Get the part of the page source that contains image links\nconst linksSource = !$[1] && $._.match(/<(?:div class=\"sp-head folded\"><span|h3 class=\"sp-title\")>.+?<!--\\/post_body-->/s)?.[0];\n\n// Get image link URLs and their thumbnail URLs\nconst imgLinks = linksSource ? [...linksSource.matchAll(/<a href=\"(http[^\"]+)\" class=\"postLink\"><var class=\"postImg\" title=\"([^\"]+)/g)].map(i => [i[1], i[2]]) : [];\n\n// Get images that don't have a link to another page\nconst pageImgs = linksSource ? [...linksSource.matchAll(/(?<!class=\"postLink\">)<var class=\"postImg\" title=\"([^\"]+)/g)].map(i => ['', i[1]]) : [];\n\n// Combine image links and and images. Add links first since since some of the page images may not be wanted\nconst links = [...imgLinks, ...pageImgs]\n\nconst rt = this._rutracker_ || {};\nlet img, i = rt.num + 1 || 0, urls = rt.links || links, imgs = rt.imgs || (poster ? [[poster, title]] : []);\n\n// If the sieve has been looped with an image page, try to get the full size image\nif ($[1]) {\n const thumbnail = urls[i-1][1];\n\n // Test the links for which site it is and try to get the full size image from the page source\n if($[1].includes('imageban.ru/'))img = $._.match(/data-original=\"([^\"]+)/)?.[1];\n else if($[1].includes('fastpic.org/'))img = $._.match(/<img src=\"([^\"]+)\" class=\"image img-fluid\"/)?.[1];\n else if($[1].includes('imagevenue.com/'))img = $._.match(/img src=\"([^\"]+)\" id=\"main-image\"/)?.[1];\n\n // If site not supported, try to get the default page image\n else img = $._.match(/property=\"og:image\" content=\"([^\"]+)/)?.[1];\n\n imgs.push([[img||thumbnail], $[1]]);\n}\n\n// Run a for loop to test if the thumbnail can be upgraded to the full size image\nfor (; i < urls.length; ++i) {\n let link = urls[i][0], thumbnail = urls[i][1];\n\n // Fastpic page URLs look like image URLs interfering the the sieve looping. Try converting it to HTML URL\n if(link.includes('.fastpic.org/'))link = link.replace(/^(https?:\\/\\/)i(\\d+)\\.(fastpic\\.org\\/)big(\\/\\d+\\/\\d+)\\/\\w+([^.]+\\.(?:jpe?|pn)g)$/, '$1$3view/$2$4$5.html');\n\n // Test if another sieve can upgrade the thumbnail\n img = this.find({src: thumbnail});\n img = img!==thumbnail&&img;\n\n // If the thumbnail can't be upgraded and the page link isn't an image URL, save the variables in 'this._rutracker_' and loop the sieve with the page URL\n if (!img && link && !/\\.(?:jpe?|pn)g(?:\\?|$)/.test(link)){\n this._rutracker_ = {\n links: urls,\n imgs: imgs,\n num: i\n }\n\n // Add '//rutracker_loop/' to URL so it will match this sieve\n return {loop: '//rutracker_loop/' + link};\n }\n imgs.push([[img||link, thumbnail], link]);\n}\n\n// Delete 'this._rutracker_' object\ndelete this._rutracker_;\nreturn imgs;", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/nzbmvdb\nOLD\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/n08ebtu\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1600#9\n\n\n!!!\n- показывает постер + скриншоты при наведении на название раздачи на форуме;\n- для работы данного фильтра необходимо расширение SMH (см.ЧаВо, п.12);\n- в начале на пару секунд фильтр показывает желтый спиннер, это нормально;\n- иногда (редко) требуется повторное наведение курсора;\n- фильтр поддерживает только наиболее крупные хостинги (90% раздач) - в остальных случаях он будет выдавать ошибку;\n\n\nПРИМЕРЫ\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1360#11" }, "RUTUBE.ru-h": { "link": "^rutube\\.ru/(?:video|shorts)/([a-f0-9]+)/.*", "url": "//rutube.ru/api/play/options/$1/?pver=v2", "res": ":\n$=JSON.parse($._);\nif(!$)return null;\nconst t=[$.title,$.author?.name,$.description].filter(Boolean).join(\" | \");\n$=$.video_balancer?.m3u8;\nthis.TRG.IMGS_ext_data = [ '//' + 'data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"640\" height=\"360\"></svg>', `<imagus-extension type=\"videojs\" url=\"${$}\"></imagus-extension>${t}` ];\nreturn {loop:'imagus://extension'}", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/lfbh47p\n\nПРИМЕРЫ\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1360#11" }, "Safebooru|XBooru-x-p": { "link": "^(?:safebooru\\.org|xbooru\\.com)/index\\.php\\?page=post&s=view&id=\\d+", "res": "src=\"(https?://(?:safe|(?:img\\.)?x)booru\\.[^/]+/+(?:imag|sampl)es/[^\"]+)", "useimg": 1, "img": "^(safebooru\\.org/+)(?:sample|thumb(?:nail)?)s/(\\d+)/(?:thumbnail|sample)_([\\da-f]+)\\.([^?]+).*", "to": "#$1/images/$2/$3.#$4 png gif#\n$1/samples/$2/sample_$3.$4", "note": "imqswt\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/n4vjka0\nOLD\nhttps://www.reddit.com/r/imagus/comments/g7hwtc/safebooru_wont_load_png_files/\n\n\nEXAMPLES\nhttps://www.reddit.com/domain/safebooru.org/new/\nhttps://safebooru.org/index.php?page=post&s=list&tags=hifumi_(blue_archive)\nhttps://xbooru.com/index.php?page=post&s=list&tags=topless&pid=126" }, "Sahibinden": { "img": "^(i\\d\\.shbdn\\.com/photos/\\d+/\\d+/\\d+/)[^_]+", "to": "$1#x16 big x5#", "note": "https://www.reddit.com/r/imagus/comments/8xfmn5/comment/e2h3vbu\n\n!!!\nНужен аккаунт" }, "Sankaku-x-q-p": { "link": "^((?:idol|chan)\\.)?(sankaku)complex(\\.com/)(?:\\w{2}/)?(post)s?/(?:show/)?([a-zA-Z0-9]+).*", "url": ": !$[1] ? `https://${$[2]}api${$[3]+$[4]}s/${$[5]}/fu` : (this.no_auth?'':'data:,')+$[0]", "res": ":\n//if set to false, the largest possible media will be selected rather as opposed to web optimized media\nlet prefer_lowres = false;\n\nif($._[0]!=='{'){\nconst access_token=/sankakucomplex\\.com$/.test(location.hostname)&&document.cookie.match(/(?:^|;\\s*)accessToken=([^;]+)/)?.[1];\nif(/^data:/.test($.url[0])){\nif(access_token&&/sankakucomplex\\.com$/.test(location.hostname)){\nconst x=new XMLHttpRequest();\nx.open('GET','https://capi-v2.sankakucomplex.com/posts?lang=en&page=1&limit=1&tags=id_range:'+$[1],false);\nx.setRequestHeader(\"Authorization\",\"Bearer \"+access_token);\nx.send();\n$._=x.responseText;\nif(x.status!==200||!/file_url/.test(x.responseText)){\nthis.no_auth = true\nreturn {loop:$[0]}\n}\n}else{\nthis.no_auth = true\nreturn {loop:$[0]}\n}\n}\n}\nlet meta = document.querySelector('head > meta[name=\"referrer\"]');\nif (!meta) {\n meta = document.createElement('meta');\n meta.name = 'referrer';\n meta.content = 'same-origin';\n document.getElementsByTagName('head')[0].appendChild(meta);\n} else if (meta.attributes.content.value !== 'same-origin') {\n meta.attributes.content.value = 'same-origin';\n}\nlet lowres_url, highres_url, plr=prefer_lowres;\nlowres_url = $._.match(/(?:(?:Resized: <a|<a id=\"lowres\"[^>]+?) href=|sample_url\": ?)\"([^\"]+)/)?.[1];\nhighres_url = $._.match(/(?:(?:Original: <a|<a id=\"highres\"[^>]+?) href=\"|file_url\":\"?)([^(,\")]+)/)?.[1];\nreturn highres_url||lowres_url ? [[[(plr?'':'#')+highres_url, (plr?'#':'')+lowres_url]]] : '';", "note": "imqswt\nhttps://www.reddit.com/r/imagus/comments/1m67oow/comment/n4o7uo8\nOLD\nhttps://www.reddit.com/r/imagus/comments/1euwjkk/comment/liur3pp\nhttps://www.reddit.com/r/imagus/comments/17r7qqq/comment/k9ri2ym\n\n!!!\nOption to switch image size (in the third field from the top):\nlet prefer_lowres=\ntrue - web optimized / false - maximal\nBy default, the parameter is set false. Switching is done using the TAB key.\n\n\nEXAMPLES\nhttps://www.sankakucomplex.com/ru?tags=sex\nhttps://idol.sankakucomplex.com/ru/posts?tags=red\nhttps://chan.sankakucomplex.com/?tags=contentious_content&commit=Search" }, "Sankaku.app-x-q-p": { "link": "^(?:beta\\.sankakucomplex\\.com|sankaku\\.app)/(?:\\w{2}/)?posts?/(?:show/)?(\\w+).*", "url": "https://sankakuapi.com/posts/$1/fu", "res": ":\n$=JSON.parse($._).data\nreturn [[['#'+$.file_url,$.sample_url]]]", "note": "imqswt\nhttps://www.reddit.com/r/imagus/comments/1q20wur/comment/nxeruuj\nOLD\nhttps://www.reddit.com/r/imagus/comments/1acru2t/comment/kjydxe2\nhttps://www.reddit.com/r/imagus/comments/16gtfgu/comment/k0dobso\n\n\n\n!!!\nOption to switch image size (in the third field from the top):\nlet prefer_lowres=\ntrue - web optimized / false - maximal\nBy default, the parameter is set false.\n\n\nПРИМЕРЫ / EXAMPLES\nhttps://sankaku.app/?tab=explore\nhttps://sankaku.app/?tags=user%3AGrenex\nhttps://beta.sankakucomplex.com/?tags=sex" }, "Saro-Knives.ru-s": { "link": "^saro-knives\\.ru/products/[\\w-]+", "res": ":\nvar i = $._.indexOf('class=\"avatar-view \">');\nif(i<0) {return null; }\nvar t = $._.indexOf('</noindex>', i);\nif(t<0) {return null; }\nvar res = [];\nvar re = /\"\\s+href=\".+top\\/([^\"]+)\"/gi\nvar data=$._.substring(i,t);\nvar a = re.exec(data);\nwhile(a) {\n res.push(['https://' + a[1]]);\n a = re.exec(data);\n}\nreturn res;\n", "note": "Baton34V\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3660#3\n\nПРИМЕРЫ\nhttps://saro-knives.ru/products/category/4725402" }, "SaveImg.ru-h": { "useimg": 1, "link": "^saveimg\\.ru/show-image.php\\?id=\\w+$", "res": "<img src='(http://saveimg\\.ru/pictures/[^']+)'", "img": "^(saveimg\\.ru/)thumbnails(/\\d{2}-\\d{2}-\\d{2}/\\w+\\.(?:jpe?g|png|gif))$", "to": "$1pictures$2", "note": "Rodny\n\n!!!\nUpload закрыт?, но старые фотки работают.\n\nПРИМЕРЫ\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48073&start=3080#15\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=20#14" }, "Screencast-h-p": { "link": "^(?:app\\.)?screencast\\.com/(?:t/)?[^/]+$", "res": ":\nconst rx1 = /<meta property=\"og:video\" content=\"([^\"]+)\"/g;\nconst video = rx1.exec($._);\nif (video) return (video[1]);\n\nconst rx2 = /<meta property=\"og:image\" content=\"([^\"]+)\"/g;\nconst image = rx2.exec($._);\nif (image) return (image[1]);\nreturn;\n", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/nskd6s5\nOLD\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1120#17\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=2400#19\n\nEXAMPLES\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1360#11" }, "Screensider-h": { "img": "^((?:img\\.)?screensider\\.com/images/albums/\\d+/[^/]+)-(?:top|th|md)(\\.(?:jpe?g|png|gif|bmp))$", "to": "#$1$2\n$1-md$2", "note": "Rodny + Baton34V (fix)\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=1540#12\n\nEXAMPLES\nhttps://screensider.com/#/album/115/page-4" }, "Scrolller-x-p": { "link": "^scrolller\\.com/(?:[^_-]+[_-])+[a-z0-9]+$", "res": ":\nconst media = m => {\nm=m.mediaSources;\nif(m.some(i=>/\\.mp4/.test(i.url)))return m.find(i=>/\\.mp4/.test(i.url)).url;\nlet l=m.filter(i=>i.height<1080).sort((a,b)=>b.height-a.height)[0]?.url;\nm=m.sort((a,b)=>b.height-a.height)[0]?.url;\nreturn m?.length?[[['#'+m,l]]]:'';\n}\n$=$._.match(/[{,]\\\\\"post\\\\\":({.+?})}\\]\\]\\\\n/)?.[1].replace(/(?<!\\\\)\\\\\"/g,'\"').replace(/\"\\]\\)<\\/script><script>self[^,]+,\"/g,'');\n$=$&&JSON.parse($);\nreturn $ ? $.albumContent?.map(media) || media($) : ''", "note": "imqswt\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/nz4rch3\nOLD\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/n1s92i9\nhttps://www.reddit.com/r/imagus/comments/1aoy7k4/comment/l44rpq5\n\n\n\nEXAMPLES\nhttps://scrolller.com/\nhttps://scrolller.com/r/Witcher_NSFW\nhttps://scrolller.com/r/imaginarycosmere\nhttps://scrolller.com/r/Witcher_NSFW?filter=albums\nhttps://scrolller.com/r/Witcher_NSFW?filter=videos" }, "SeaArt-g-p": { "link": "^(seaart\\.ai)/(artWorkD|explore/d|models/d)etail/([^\\/?]+)", "url": ": (location.hostname==='www.'+$[1]?'data:,':'')+$[0]", "res": ":\nif($.base[0]==='d'){\nconst x=new XMLHttpRequest();\nx.open('POST',`https://www.${$[1]}/api/v1/${$[2][0]==='a'?'portfolio':$[2][0]==='m'?'model':'artwork'}/detail`,false);\nx.setRequestHeader('Content-Type','application/json');\nx.send(`{\"id\":\"${$[3]}\"}`);\n$=JSON.parse(x.responseText).data;\nreturn $.list ? $.list.map(i=>[i.banner.url]) : $.samples ? $.samples.map(i=>[i.url]) : $.banner.url\n}\nreturn [...$._.matchAll(/src=\"([^\"]+)\" (?:(?:width=\"\\d+\" height=\"\\d+\" )?data-v-|autoplay=)/g)].map(i=>[i[1]])", "img": "^seaart\\.ai/[^/]+/.+|^image\\.cdn\\d\\.seaart\\.me/temp-convert-.+", "loop": 2, "to": ":\nconst n=this.node;\nlet m;\nif(m=location.hostname.endsWith('seaart.ai')&&n.closest('a[class=\"waterfall-item\"][href*=\"/explore/detail/\"]')?.href)return m;\nreturn (n.src||n.querySelector('img')?.src||n.closest('[class=\"content-box\"]')?.querySelector('img')?.src||n.offsetParent.querySelector('img')?.src)?.replace(/temp-convert-\\w+\\/(\\w+)\\/([^_]+).*/,'$2.$1').replace('.highwebp','_high.webp')||''", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/1j4yxei/comment/mgtth17\nOLD\nhttps://www.reddit.com/r/imagus/comments/15dz344/comment/ju4u4rh\n\nEXAMPLES\nhttps://www.seaart.ai/model\nhttps://www.seaart.ai/tagInfo/anime\nhttps://www.seaart.ai/user/Quiron" }, "sendfile.su-h": { "link": "^(sendfile\\.su/)(\\d+).*", "url": "http://$1get_download_link.php :file_id=$2", "res": ":\nconst u=`http://s1.${$[1]}download/${$[2]}/${$._}`\nreturn $._.length?[[[u+'#mp4',u]]]:''", "img": "^s1\\.sendfile\\.su/download/\\d+/\\w+$", "to": "$&#mp4", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/130svfu/comment/mptdk3z\n\nПРИМЕРЫ / EXAMPLES\nhttp://sendfile.su/search/0/1/0/0/\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1360#11" }, "SendSpace-h": { "link": "^sendspace\\.com/file/\\w+", "res": "\"download_page_button button1\" href=\"([^\"]+)", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/njf32v3\n\nEXAMPLES\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1360#11" }, "SendVid-h": { "link": "^(sendvid\\.com/)(?:embed/)?([\\da-z]{8})\\W*", "url": "$1embed/$2", "res": ":\nconst m=($._.match(/=\"og:video:secure_url\" content=\"([^\"]+)/)||[,''])[1]\nconst t=($._.match(/=\"og:title\" content=\"([^\"]+)/)||[,''])[1]\nconst h=($._.match(/video:height\" content=\"(\\d+)/)||[,''])[1]\nconst w=($._.match(/video:width\" content=\"(\\d+)/)||[,''])[1]\nthis.TRG.IMGS_ext_data = [\n '//' + `data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"${w}\" height=\"${h}\"></svg>`,\n `<imagus-extension type=\"videojs\" url=\"${m}\"></imagus-extension>${t}!`\n]\nreturn m?{loop:'imagus://extension'}:''", "note": "imqswt\nhttps://www.reddit.com/r/imagus/comments/130svfu/comment/jspp9q8\n\n!!!\nНа некоторых хромиум-браузерах (Cent, Chrome) может возникать ошибка - \"белый экран\".\n==\nOn some chrome browsers (Cent, Chrome) you may get an error - \"white screen\".\n\nEXAMPLES\nhttps://www.reddit.com/domain/sendvid.com/new/" }, "Servimg-h": { "link": "servimg\\.com/view/\\d+/\\d+$", "res": "<meta property=\"og:image\" content=\"([^\"]+)", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/130svfu/comment/jxydqur\nOLD\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=260#12\n\nПРИМЕРЫ / EXAMPLES\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=34533&start=1080#5" }, "Sex.com-x-p": { "useimg": 1, "link": "^(sex\\.com)/picture/(\\d+).*", "res": "=\"image_src\" href=\"([^\"?]+)", "img": "^(images\\.sex\\.com/images/pinporn/\\d{4}/[01]\\d/[0-3]\\d/)(?!620/|video/)[^/]+", "to": "$1620", "note": "!!!\n- Some of the videos in some sections don't work (probably need an account).\n- The sieve doesn't work in the Shorts section.\n\nEXAMPLES\nhttps://www.reddit.com/domain/sex.com/new/\nhttps://www.sex.com/en/categories/6\nhttps://www.sex.com/en/categories/6/gifs" }, "Sexy-eGirls-x": { "img": "^forum\\.sexy-egirls\\.com/attachments/[^/]+-([A-Za-z\\d]{3,4})\\.\\d+/", "to": ":\nreturn $[0] + (/m(4v|p[34])|webm/i.test($[1]) ? '#mp4' : '')", "note": "https://www.reddit.com/r/imagus/comments/iuzzqb/comment/g6gf56u\n\n!!!\nНужен аккаунт." }, "shottr-h": { "link": "shottr\\.cc/s/.*", "res": "<meta property='og:image' content='([^']+)", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/130svfu/comment/jn8v5j7\n\nEXAMPLES\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1360#11" }, "Shakker|liblib.cloud-g": { "link": "^(shakker\\.ai/)(image|model)info(/[^/]+).*", "url": ":(()=>{this.node.closest('div[class^=\"mantine-\"]')?.querySelector('div[class^=\"___ref-maskCard\"]')?.remove();return `https://www.${$[1]}api/www/${$[2][0]==='m'?$[2]:'img/group'}/get${$[2][0]==='m'?'ByUuid':''}${$[3]}?timestamp=${Date.now()} :{}`})()", "res": ":\n$._=JSON.parse($._).data;\n$=$[2][0]==='m' ? $._.versions[0].imageGroup : $._;\nreturn $?.images?.map(i=>[i.imageUrl])||''", "img": "^(liblibai-online\\.liblib\\.cloud/img/[^?]+).*", "to": "$1", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/1mr721a/comment/n8zcsfq\n\n\nEXAMPLES\nhttps://www.shakker.ai/userpage/2bd7fef1c7e4448b9a02d50b14764be9/publish/image\nhttps://www.shakker.ai/userpage/88609db92e1b4312b0f4332761fbb9b5/publish/model" }, "ShemaleHD-x-p": { "link": "^shemalehd.sex/\\w+/[\\w-]+", "res": ":\nreturn $._.match(/video_url: '([^']+)/)[1]+'#mp4'", "note": "imqswt\nhttps://www.reddit.com/r/imagus/comments/15f41bk/comment/jubiohy\n\nEXAMPLES\nhttps://www.shemalehd.sex/pantyhose.porn\nhttps://www.shemalehd.sex/search/BOOBS/" }, "ShemaleTubeVideos-x-p": { "link": "^shemaletubevideos.com/video/[\\w\\-\\.]+", "res": "<source data-res=\\\"480p\\\" type=\\\"video/mp4\\\" src=\\\"([^\\\"]+)", "note": "DracoSerge\nhttps://www.reddit.com/r/imagus/comments/150zrnk/nsfw_i_want_to_share_sieves_some_i_made_and_some/\n\n!!!\nNo album support:\nhttps://www.shemaletubevideos.com/galleries/shemale/bathroom-view.html\n\n\nEXAMPLES\nhttps://www.shemaletubevideos.com/videos/all/video-view.html\nhttps://www.shemaletubevideos.com/videos/shemale/teen-recent.html" }, "Shopee-s": { "useimg": 1, "link": "^(shopee\\.(?:com?\\.)?[a-z]{2})/.+", "img": "^(?:[^.]+\\.img\\.susercontent|play-[^.]+\\.vod\\.shopee)\\.com/.+", "to": ":\nif($[1]&&$[1]!==location.hostname)return ''\nlet a=[...document.getElementsByClassName('shopee-rating-media-list-image__content--blur')]\nfor(let i=0;i<a.length;i++)a[i].remove()\nconst n=this.node\nreturn n.parentNode.nextSibling?.className==='rating-media-list__video-cover' ? n.closest('.rating-media-list').querySelector('video').src : (/\\/[a-z]{2}?-50009109-/.test($[0]) ? n.parentNode.parentNode.querySelector('img[src^=\"https://down-\"]:not([src*=\"-50009109-\"])')?.src||n.attributes?.style?.textContent?.match(/https:[^_]+/)?.[0]||n.nextSibling?.nextSibling?.firstChild?.attributes?.style?.textContent?.match(/https:[^_]+/)?.[0]||'' : $[1] ? n.src||n.querySelector('img[src]')?.src||'' : $[0]).match(/^([^_]+)/)?.[1]||''", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/17udk0c/comment/kbdqmmk\nOLD\nhttps://www.reddit.com/r/imagus/comments/17udk0c/comment/ka5hrzt\nhttps://www.reddit.com/r/imagus/comments/cdfrr5/comment/eu8r18g\n\n!!!\n- Для проверки требуется аккаунт\n- It is impossible to view the album of the product for this site (see the link to the sieve).\n+\nTo view photos and videos in customer responses, you need to install the uBO (uBlock Origin) extension:\nIn uBO Settings -> My Filters -> Add this line:\nshopee.cl,shopee.co.id,shopee.co.th,shopee.com.co,shopee.com.mx,shopee.com.my,shopee.ph,shopee.sg,shopee.tw,shopee.vn##.shopee-rating-media-list-image__content--blur\n\nEXAMPLES\nhttps://shopee.sg/Entertainment-col.935698\nhttps://shopee.com.my/Groceries-Pets-cat.11000003\nhttps://shopee.com.my/search?category=11001724&keyword=casio%20watch" }, "ShopGoodwill-s-p": { "link": "^shopgoodwill\\.com/item/(\\d+).*", "url": "https://buyerapi.shopgoodwill.com/api/ItemDetail/GetItemDetailModelByItemId/$1", "res": ":\nconst use_sidebar = true\n\n$=JSON.parse($._)\nif(!$.imageUrlString)return ''\nlet m=[],s=$.imageServer,u=$.imageUrlString.split(';')\nfor(i=0;i<u.length;i++)m.push([s+u[i],(!i?use_sidebar?`<imagus-extension type=\"sidebar\">${$.description}</imagus-extension>`:$.description:'')])\nif(use_sidebar)this.TRG.IMGS_ext_data=m\nreturn use_sidebar?{loop:'imagus://extension'}:m\n", "img": "^(shopgoodwillimages\\.azureedge\\.net/production/\\d+/Items/[\\d-]+/[a-z0-9-]+_\\d+)t?(\\d*\\.).+", "to": "$1$2#jpg png jpeg#", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/18wxgza/comment/kg3t2o5\n\n!!!\nSieve has sidebar support for the items description. If you don't want that, set use_sidebar to false.\n\n\nEXAMPLES\nhttps://shopgoodwill.com/categories/computers-electronics" }, "ShutterStock-g-b": { "link": "shutterstock.com/.*", "res": ":\nconst url = $[0];\n\nfunction syncFetch(u) {\n const x = new XMLHttpRequest();\n x.open('GET', u, false);\n x.send();\n if (x.readyState != 4) return;\n if (x.status != 200) return;\n return JSON.parse(x.responseText);\n}\n\nfunction findLargestImage(displays) {\n if (!displays) {\n return;\n }\n let largest = {\n width: 0,\n };\n for (const val of Object.values(displays)) {\n if (val.width > largest.width) {\n largest = val;\n }\n }\n // console.log(largest);\n return largest.src;\n}\n\nfunction removeQueryParams(string) {\n if (!string) {\n return string;\n }\n const index = string.indexOf('?');\n if (index < 0) {\n return string;\n }\n return string.substring(0, index);\n}\n\nfunction getIdFromSlug(slug) {\n const splits = slug.split('-');\n if (splits.length === 0) {\n return;\n }\n return removeQueryParams(splits[splits.length - 1]);\n}\n\nconst profileGalleryRegex = /shutterstock\\.com\\/(.*\\/)*g\\/(.*)/;\nmatch = url.match(profileGalleryRegex);\nif (match && match.length >= 2) {\n console.log(match[match.length - 1]);\n const profile = removeQueryParams(match[match.length - 1]);\n if (!profile) {\n return;\n }\n console.log(profile);\n const json = syncFetch(`https://www.shutterstock.com/_next/data/123/en/_shutterstock/g/${profile}.json`);\n const assets = json.pageProps.assets;\n return assets.map(asset => {\n const imageUrl = findLargestImage(asset.displays);\n const caption = asset.title;\n return [imageUrl, caption];\n });\n}\nconst imageEditorialRegex = /shutterstock\\.com\\/(.*\\/)*editorial\\/image-editorial\\/(.*)/;\nmatch = url.match(imageEditorialRegex);\nif (match && match.length >= 2) {\n const slug = match[match.length - 1];\n const id = getIdFromSlug(slug);\n if (!id) {\n return;\n }\n // console.log(id);\n const json = syncFetch(`https://www.shutterstock.com/_next/data/123/en/_shutterstock/editorial/image-editorial/${id}.json`);\n const imageUrl = findLargestImage(json.pageProps.asset.displays);\n const caption = json.pageProps.asset.title;\n return [imageUrl, caption];\n}\nconst imagePhotoRegex = /shutterstock\\.com\\/(.*\\/)*image-photo\\/(.*)/;\nmatch = url.match(imagePhotoRegex);\nif (match && match.length >= 2) {\n const slug = match[match.length - 1];\n const id = getIdFromSlug(slug);\n if (!id) {\n return;\n }\n // console.log(id);\n const json = syncFetch(`https://www.shutterstock.com/studioapi/images/${id}`);\n const imageUrl = findLargestImage(json.data.attributes.displays);\n const caption = json.data.attributes.title;\n return [imageUrl, caption];\n}\nconst videoSearchRegex = /shutterstock\\.com\\/(.*\\/)*video\\/search\\/(.*)\\/*/;\nmatch = url.match(videoSearchRegex);\nif (match && match.length >= 2) {\n const term = removeQueryParams(match[match.length - 1]);\n const json = syncFetch(`https://www.shutterstock.com/_next/data/123/en/_shutterstock/video/search/${term}.json`)\n // console.log(json);\n if (!json || !json.pageProps || !json.pageProps.videos) {\n return;\n }\n const videos = json.pageProps.videos;\n const caption = (json.pageProps.query && json.pageProps.query.term) || term;\n return videos.map(video => [video.previewVideoUrls.mp4, caption]);\n}\nconst imgSearchRegex = /shutterstock\\.com\\/(.*\\/)*search\\/(.*)\\/*/;\nmatch = url.match(imgSearchRegex);\nif (match && match.length >= 2) {\n const term = removeQueryParams(match[match.length - 1]);\n const json = syncFetch(`https://www.shutterstock.com/_next/data/123/en/_shutterstock/search/${term}.json`)\n // console.log(json);\n if (!json || !json.pageProps || !json.pageProps.assets) {\n return;\n }\n const assets = json.pageProps.assets;\n const caption = (json.pageProps.query && json.pageProps.query.term) || term;\n // console.log(assets);\n return assets.map(asset => [findLargestImage(asset.displays), caption]);\n}", "img": "shutterstock.com/.*", "note": "ammar786\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/j0tzgxh\nOLD\nhttps://www.reddit.com/r/imagus/comments/co5d0k/comment/ewj7k9s\n\n\nEXAMPLES\nhttps://www.shutterstock.com/ru/search/bruce-willis\nhttps://www.shutterstock.com/ru/video/search/dance\nhttps://www.shutterstock.com/ru/image-photo/stylish-man-woman-dancing-hiphop-bright-1823945150\nhttps://www.shutterstock.com/ru/search/yellow-flowers?image_type=illustration\nhttps://www.shutterstock.com/ru/search/yellowstone?image_type=vector" }, "Sight.photo-g": { "link": "^(sight\\.photo)/photos/\\d+", "url": ": location.hostname===$[1] ? 'data:,'+$[0] : $[0]", "res": ":\nif($.base[0]==='d'){\nconst x=new XMLHttpRequest();\nx.open('Get',$[0],false);\nx.send();\n$._=x.responseText;\n}\nreturn $._.match(/id=\"big_photo\" src=\"([^\"]+)\" alt=\"[^\"]+\"/)?.[1]", "img": "^(?:(?:icon\\.)?s|img-(?:[^.]+)|cdn)(\\.sight\\.photo/img/(?:[\\da-z]+)/(?:[\\da-z]{3}/\\d+_))(?!xlarge)[^.]+", "to": "cdn$1#x #large", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/lt5e4qp\nOLD\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=440#9\n\nПРИМЕРЫ\nhttps://sight.photo/photos/category/2/\nhttps://sight.photo/search/search_word/?query=ЖЕЛТЫЙ" }, "Sima-land.ru-s": { "link": "^sima-land\\.ru/\\d+/(?:\\w+-)+\\w+/", "res": ":\nconst include_360_images = false // True includes images from 360 view in album if available.\n\nlet m = [];\nconst o=JSON.parse($._.match(/\\[\"product__serverData\"\\]\\s*=\\s*JSON\\.parse\\(\"({.+?})\"\\);<\\/script/)?.[1].replace(/\\\\\"/g,'\"').replace(/\\\\\\\\/g,'\\\\'));\no.media.items.filter(i=>i.src||i.videoSrc).forEach(i=>m.push([[(i.srcIncreased||i.videoSrc)?.replace(/.+/,'#$&'),i.src||i.videoSrc]])); o.reviews?.items?.filter(i=>i.photos?.length).forEach(i=>i.photos?.forEach(x=>m.push([x.src,i.text])));\nif(include_360_images)o.media.items.find(i=>i.type==='360')?.photos?.forEach(i=>m.push([i]));\nreturn m", "img": "^(goods-photos\\.static1-sima-land\\.com/items/\\d+/\\d+/)\\d+(\\.\\w+).*", "to": "#$11600$2\n$1700$2", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/m850z8b\nOLD\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/l7ny10s\nhttps://www.reddit.com/r/imagus/comments/1akz6th/comment/kpbqh6b\n\nПРИМЕРЫ\nhttps://www.sima-land.ru/vazy/?c_id=345&catalog=new-catalog\nhttps://www.sima-land.ru/akkumulyatornye-dreli-shurupoverty/?sort=rating\nhttps://www.sima-land.ru/search/?per-page=20&q=телевизоры%2055&sort=price&viewtype=list" }, "Simkl-p": { "img": "simkl.(in)/posters/(\\d\\d)/([a-z0-9]+_)(c).*", "to": "simkl.net/posters/$2/$30.jpg", "note": "akovia\nhttps://www.reddit.com/r/imagus/comments/pndm75/simkl_sieve/\n\n\nEXAMPLES\nhttps://simkl.com/movies/\nhttps://simkl.com/movies/162400/avatar-the-way-of-water#" }, "Skeb.jp-g": { "link": "^skeb\\.jp/@([^/]+)/works/(\\d+)", "url": "data:,$1$2", "res": ":\nvar x = new XMLHttpRequest()\nx.open('GET','https://skeb.jp/api/users/'+$[1]+'/works/'+$[2],false)\nx.setRequestHeader('Authorization','Bearer null')\nx.send()\nlet jsn = JSON.parse(x.responseText)\nreturn [jsn.article_image_url].concat(jsn.previews.map(i=>i.url+(/fcdn/.test(i.url)?'#mp4':''))).filter(Boolean).map(i=>[i])", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/1qv69yc/comment/o3flk47\nOLD\nhttps://www.reddit.com/r/imagus/comments/130svfu/comment/jqhm6hq\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3760#17\n\n\n\n!!!\nДля некоторых видео курсор нужно наводить на красный значок Seeking в левом верхнем углу обложки.\n==\nFor some videos, you need to hover your cursor over the red Seeking icon in the upper left corner of the cover.\n\n\nEXAMPLES\nhttps://skeb.jp/#new_art_works\nhttps://skeb.jp/works?sort=date&genre=video" }, "Skrinshoter.ru|skr.sh-h": { "link": "^skr\\.sh/\\w{11}", "res": "<meta property=\"og:image\" content=\"([^\"]+)\"/>", "img": "^(skrinshoter\\.ru)/s/(\\d+)/(\\w+)", "to": "$1/i/$2/$3.png", "note": "Baton34V\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=840#5\n\nПРИМЕРЫ\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1360#11" }, "Skroutz.gr-s-p": { "link": "^skroutz\\.gr/s/\\d+/.+", "res": ":\nconst re = /\"ImageObject\",\"contentUrl\":\"(?<img>[^\"]+)/g;\nconst m = $._.matchAll(re);\nreturn [...m].map((el) => [el.groups?.img, '']);", "note": "gpl2731\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=2720#16\n\nEXAMPLES\nhttps://www.skroutz.gr/c/25/laptops.html?lang=en\nhttps://www.skroutz.gr/c/285/men-s-clothes.html?lang=en" }, "Slushe-x": { "link": "^slushe\\.com/(galleries|video)/[\\w-]+\\.html", "res": ":\nlet cloud_vid = [...$._.matchAll(/cloud_vid = '([^']+)/g)];\nif(cloud_vid.length > 0) return {loop: 'https://videodelivery.net/'+cloud_vid[1][1]+'/manifest/video.m3u8'};\nlet i = $._.indexOf('<div class=\"gallery-photo');\nif(i<0) { return null; }\nlet t = $._.indexOf('</section>', i);\nif(t<0) { return null; }\nlet res = [];\nlet re = /href=\"([^\"]+)\" target=\"_blank\"/gi\nlet data = $._.substring(i,t);\nlet a = re.exec(data);\nwhile(a) {\n res.push([a[1]]);\n a = re.exec(data);\n}\nreturn res;", "note": "Randlai\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=2720&limit=1&m=1#1\n\n\nEXAMPLES\nhttps://slushe.com/most-recent/page2.html\nhttps://slushe.com/artists\nhttps://slushe.com/PAT20XX/page2.html" }, "slow.pics-h": { "link": "^slow\\.pics/(c/)?(\\w{8})/?$", "res": ":\nif(!$[1])return $._.match(/\"card-body\"\\s*>\\[IMG\\]([^[]+)/)?.[1]||'';\nconst img = i => [u+i.publicFileName,i.name];\nconst u=$._.match(/cdnUrl\\s*=\\s*\"([^\"]+)/)?.[1].replace(/\\\\/g,'')||'//i.slow.pics/';\nlet m=[], o=JSON.parse($._.match(/collection\\s*=\\s*([^;]+)/)?.[1]||'{}'), a=o.key===$[2];\no=o.comparisons||o.images||[];\nif(a)o.forEach(i=>i.images?i.images?.forEach(i=>m.push(img(i))):m.push(img(i)));\nelse o.find(i=>i.key===$[2])?.images.forEach(i=>m.push(img(i)));\nreturn m", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/lzde70o\nOLD\nhttps://www.reddit.com/r/imagus/comments/130svfu/comment/jn8v5j7\n\nEXAMPLES\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1360#11" }, "SMBC-comics": { "link": "^smbc-comics\\.com\\/(?:comics?\\/.+|(?:index\\.php)?\\?(?:db=comics(?:_[^&]+)?&)?id=\\d+)", "res": ":\nlet comic = $._.match(/\" src=\"([^\"]+)\" id=\"cc-comic\"/)[1];\nlet comicTitle = $._.match(/ title=\"([^\"]*)\" src=\"[^\"]+\" id=\"cc-comic\"/)[1];\nlet extra = $._.match(/<div id=\"aftercomic\" onclick='toggleBlock\\(\"aftercomic\"\\)' style=\"display:none;\" class=\"mobilehide\"><img src='([^']+)'/)[1];\nreturn [[comic, comicTitle], [extra, \"Extra\"]];", "note": "borderpeeved\nhttps://www.reddit.com/r/imagus/comments/xa2irk/improved_filter_for_smbccomicscom\n\nEXAMPLES\nhttps://www.reddit.com/domain/smbc-comics.com/new/" }, "Smotrim.ru-h": { "link": "^(?:player\\.)?smotrim\\.ru/(?:(brand|video)/(\\d+)|iframe/video/id/(\\d+)).*", "url": ": $[1]==='brand' ? $[0] : `//player.smotrim.ru/iframe/datavideo/id/${$[2]||$[3]}/sid/smotrim`", "res": ":\nif($[1]==='brand')return {loop:$._.match(/\\/\\/player\\.smotrim\\.ru\\/iframe\\/video\\/id\\/[^\"]+/)?.[0]||''}\n$=JSON.parse($._).data;\nif(!$)return null;\nconst x=new XMLHttpRequest(), t=$.tagsTitle||'';\n$=$.playlist?.medialist[0]?.sources.m3u8?.auto;\nx.open('GET',$,false)\nx.send()\n$=$.replace(/playlist\\.m3u8.+/,x.responseText.match(/chunklist_[^\\n]+/)[0])\nthis.TRG.IMGS_ext_data = [ '//' + 'data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"640\" height=\"360\"></svg>', `<imagus-extension type=\"videojs\" url=\"${$}\"></imagus-extension>${t}` ];\nreturn $ ? {loop:'imagus://extension'} : null", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/lfgjinr\n\n!!!\nВ случае если наблюдается \"дрожание\" плеера - рекомендуется очистить кэш и обновить страницу.\n\nПРИМЕРЫ\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1360#11" }, "SmugMug-h": { "img": "^[^.]+\\.smugmug\\.com/.+(?:T[ih]|S|M|L|X[2L]|\\d+x\\d+)(?:-\\d)?\\.[^.]{3,4}$", "to": ":\nreturn $[0].replace(/(?:(\\/)(?:T[ih]|S|M|L|X[2L]|\\d+x\\d+)(\\/)|(-)(?:T[ih]|S|M|L|X[2L]|\\d+x\\d+)([.\\/]))/g, '$1$35K$2$4');", "note": "Limn0\nhttps://www.reddit.com/r/imagus/comments/su09vy/update_smugmug_sieve\n\n\nEXAMPLES\nhttps://www.reddit.com/domain/smugmug.com/new/" }, "Softodrom.ru": { "img": "^(soft\\.softodrom\\.ru/screens/soft/\\d+/\\d+/)small_(\\d+\\.(?:jpe?g|png))$", "to": "$1$2", "note": "Rodny\n\nПРИМЕРЫ\nhttps://soft.softodrom.ru/Скриншот/5628/" }, "SoftoRoom": { "img": "^(softoroom\\.(?:net|org)/images/(?:server\\d+/)?out\\.php/)t([^/]+\\.(?:jpe?g|gif|png))$", "to": "$1i$2", "note": "gpl2731\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1120#17\n\nEXAMPLES\nhttp://softoroom.net/topic85478.html\nhttp://softoroom.net/topic85488.html" }, "Softpedia": { "link": "^softpedia\\.com/get/.+/[\\w-.]+\\.shtml", "url": ": /softpedia\\.com$/.test(location.hostname) ? 'data:,'+$[0] : $[0]", "res": ":\nif($.base[0]==='d'){\nconst x=new XMLHttpRequest();\nx.open('Get',$[0],false);\nx.send();\n$._=x.responseText;\n}\nlet i = $._.indexOf('<div class=\"slide\">');\nif(i<0) { return $._.match(/<img width=\"32\" height=\"32\" src=\"([^\"]+)\"/)[1]; }\nlet t = $._.indexOf('</div>', i);\nif(t<0) { return null; }\nlet res = [];\nlet re = /href=\"([^\"]+)\"/gi\nlet data=$._.substring(i,t);\nlet a = re.exec(data);\nwhile(a) {\n res.push([a[1]]);\n a = re.exec(data);\n}\nreturn res || 'https://cdn-icons-png.flaticon.com/512/1179/1179237.png';", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/lglgeyn\nOLD\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=640#17\n\nEXAMPLES\nhttps://www.softpedia.com/downloadTag/start%20menu,3\nhttps://www.softpedia.com/downloadTag/launcher,3" }, "SoftPortal": { "link": "^softportal\\.com/software-\\d+-[\\w-]+\\.html", "res": ":\nvar i = $._.indexOf('<div class=\"zoom-button\">');\nif(i<0) { return null; }\nvar t = $._.indexOf('</div></div>', i);\nif(t<0) { return null; }\nvar res = [];\nvar re = /<link itemprop=\"contentUrl\" href=\"([^\"]+)\"/gi\nvar data=$._.substring(i,t);\nvar a = re.exec(data);\nwhile(a) {\n res.push([a[1]]);\n a = re.exec(data);\n}\nreturn res;", "img": "^(softportal\\.com/scr/\\d+/[^/]+-)(tmb|mid)(-\\d+\\.(?:jpe?g|png))$", "to": "$1#big mid#$3", "note": "Rodny + Baton34V (fix)\n\n!!!\nКурсор наводить на название программы.\n\nПРИМЕРЫ\nhttps://www.softportal.com/dlcategory-284-3-0-0-0.html\nhttps://www.softportal.com/software-35544-everylang.html" }, "SourceForge": { "link": "^sourceforge\\.net/(projects|software/product)/[^\\/]+/$", "res": ":\nvar i = $._.indexOf('<div class=\"owl-carousel');\nif(i<0) { return null; }\nvar t = $._.indexOf('</div>', i);\nif(t<0) { return null; }\nvar res = [];\nvar re = /<img itemprop=\"screenshot\" src=\"([^\"]+)\\/\\d+\\/\\d+\\/\\d+\"/gi\nvar data=$._.substring(i,t);\nvar a = re.exec(data);\nwhile(a) {\n res.push([a[1]]);\n a = re.exec(data);\n}\nreturn res;\n", "img": "^((?:a\\.fsdn\\.com/con/app/proj|sourceforge\\.net/projects)/[^/]+/screenshots/[^/]+).*", "to": "$1", "note": "Baton34V\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=640#20\n\nПРИМЕРЫ / EXAMPLES\nhttps://sourceforge.net/software/crm/?page=10\nhttps://sourceforge.net/directory/?q=down\nhttps://sourceforge.net/directory/business-enterprise/office/" }, "SpankBang-x-q-p": { "link": "^([\\w-]+\\.)?spankbang\\.com/(.*?/video|[^-]+-.+?/playlist)/.*", "res": ":\nconst max_resolution = 2160\nconst use_mp4 = false // True uses mp4 player, false uses HLS player\n\n$=JSON.parse($._.match(/stream_data\\s*=\\s*({[^;]+})/)?.[1].replaceAll(\"'\",'\"')||'{}')\nconst hls=$.m3u8[0]\n$=Object.entries($).filter(i=>/^\\d+[pk]$/.test(i[0])&&parseInt(i[0].match(/^(\\d+)[pk]$/)[1].replace(/^4$/,'2160'))<=max_resolution).sort((a,b)=>parseInt(a[0].match(/^(\\d+)[pk]$/)[1].replace(/^4$/,'2160'))-parseInt(b[0].match(/^(\\d+)[pk]$/)[1].replace(/^4$/,'2160'))).map(i=>i[1][0]).filter(Boolean)\nreturn use_mp4&&$?.length?[[['#'+$.pop(),$?.[Math.floor($.length/2)]]]]:{loop:hls||''}", "note": "imqswt\nhttps://www.reddit.com/r/imagus/comments/1jyysi3/comment/mn4wmug\nOLD\nhttps://www.reddit.com/r/imagus/comments/iv556b/comment/kb417oa\nhttps://www.reddit.com/r/imagus/comments/iv556b/comment/jrdo6wu\n\n\n!!!\nПереключение качества видео (480/720/1080/2160):\nconst max_resolution = \n==\nSwitching video quality (480/720/1080/2160):\nconst max_resolution = \n\nEXAMPLES\nhttps://spankbang.com/8i2k2/playlist/mrinmoy?\nhttps://www.reddit.com/domain/spankbang.com/new/" }, "Sportmaster.ru-s": { "link": "^sportmaster\\.ru/product/\\d+/", "res": ":\n$=JSON.parse($._.match(/__PINIA_INITIAL_STATE__\\s*=\\s*(.+?);\\n/)?.[1]||'{}').product?.product;\nreturn $.media.photoImages.map((i,n)=>[['#'+i.high,i.og],!n?$.description:''])", "img": "^cdn\\.sportmaster\\.ru/upload/mdm/media_content/resize/([^.]+)\\.jpg.*", "to": ":\nlet o=document.body.outerHTML.match(/__PINIA_INITIAL_STATE__\\s*=\\s*(.+?);\\n/)?.[1]\no=o&&JSON.parse(o).product?.product?.media?.photoImages?.find(i=>Object.values(i).find(x=>RegExp($[1]).test(x)));\nreturn o?.high||''", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/lohqhfa\nOLD\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1340#20\n\nПРИМЕРЫ\nhttps://www.sportmaster.ru/product/25608060299/\nhttps://www.sportmaster.ru/catalog/zhenskaya_odezhda/kurtki/\nhttps://www.sportmaster.ru/catalog/trenazhery_i_fitnes_/kardiotrenazhery/velotrenazhery/?sortType=BY_PRICE_DESC" }, "Sports.ru": { "link": "^(?:cyber\\.)?sports\\.ru/[^/]+/\\d+(?:-\\w+)+-?\\.html$", "url": ": (()=>{if(location.hostname.endsWith('.sports.ru')&&!/(?:Фот|Виде)о/.test(this.node.closest('a')?.previousElementSibling?.innerText||''))throw '';return $[0]})()", "res": ":\nlet m,o=$._;\n\nif(m=o.match(/src=\"[^\"]+(\\.webcaster\\.pro\\/)iframe\\/feed(\\/[^?]+)/))return {loop:'//bl'+m[1]+'media'+m[2]+'.m3u8'};\n\nif(m=o.match(/href=\"(https:\\/\\/vk(?:video\\.ru|\\.com)\\/video[^\"]+)/))return {loop:m[1].replace(/_ext.php\\?oid=([^&]+)&(?:amp;)?id=([^&]+).*/,'-$1_$2')};\n\nm=[...o.matchAll(/data-telegram-post=\"([^\"]+)/g)];\nif(m?.length)return {loop:m.map(i=>'//t.me/'+i[1]).join('!')};\n\nif(m=o.match(/\"sb-iframe\" src=\"([^\"]+)/)?.[1]?.replace(/&/g,'&')){\nconst l=this.find({href:m});\nif(l!==false&&l!=='')return {loop:m};\nthis.TRG.IMGS_ext_data=[['',`<imagus-extension type=\"iframe\" url=\"${m}\"></imagus-extension>`]];\nreturn {loop:'imagus://extension'};\n}\n\nreturn [...o.matchAll(/data-hight-src=\"([^?\"]+)(?![^\"]*\"><picture>)/g)].map(i=>[i[1]]);", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/mpg5fm9\nOLD\nhttps://www.reddit.com/r/imagus/comments/1iklqrk/comment/mknkibc/\nhttps://www.reddit.com/r/imagus/comments/1iklqrk/comment/mbzqaxv\n\n\nПРИМЕРЫ\nhttps://www.sports.ru/news/#menu-sub" }, "Sprinttyott": { "link": "^([^/]+\\.sprinttyott\\.com/)(?:embed|video)(/[^?]+).*", "loop": 1, "url": "data:,$&", "res": ":\nthis.TRG.IMGS_ext_data=[['',`<imagus-extension type=\"iframe\" url=\"https://${$[1]}embed${$[2]}?autoplay=1\"></imagus-extension>`]]\nreturn 'imagus://extension'", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/mktmrla\n\n\nПРИМЕРЫ\nhttps://www.sports.ru/news/#menu-sub" }, "Sp-Shopogoliki.ru": { "link": "(foto\\.sp-shopogoliki\\.ru/images/[^.]+\\.[^.]+).html", "img": "(foto\\.sp-shopogoliki\\.ru/images/[^.]+\\.[^.]+).html", "to": "$1", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/130svfu/comment/jnrcrmb\n\nПРИМЕРЫ\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1360#11" }, "Squarespace": { "img": "^((?:static\\d\\.squarespace\\.com/static|images\\.squarespace-cdn\\.com/content)/[^?]+).*", "to": ":\nvar u=$[1].replace(/-\\d+(?:w|x\\d+)(?=\\.jpg)$/,'#-2500w #');\nreturn u == $[1] ? u + '#?format=2500w #' : u", "note": "!!!\nНужен аккаунт." }, "SS.lv-s": { "link": "^ss\\.lv/msg/(lv|ru)/.+\\.html$", "res": ":\nvar i = $._.indexOf('class=\"ads_photo_label\">');\nif(i<0) { return null; }\nvar t = $._.indexOf('</div></div><div', i);\nif(t<0) { return null; }\nvar res = [];\nvar re = /<a href=\"([^\"]+)\"/gi\nvar data=$._.substring(i,t);\nvar a = re.exec(data);\nwhile(a) {\n res.push([a[1]]);\n a = re.exec(data);\n}\nreturn res;\n", "img": "^i\\.ss\\.lv/images/\\d{4}-\\d{2}-\\d{2}/\\d+/[^/]+=/\\d-1\\.th2\\.jpg$", "note": "Rodny + Baton34V (fix)\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3760#11\n\nПРИМЕРЫ / EXAMPLES\nhttps://www.ss.lv/lv/animals/dogs/\nhttps://www.ss.lv/lv/transport/cars/jaguar/s-type/" }, "Startpage": { "link": "^.*?startpage\\.com/av/anon-image\\?piurl=.+", "url": ":''", "res": ":\nreturn (new URL($[0])).searchParams.get('piurl');", "img": "^.*?startpage\\.com/av/proxy-image\\?piurl=(.+)&sp=.+", "to": ":\nconst data = JSON.parse(document.documentElement.outerHTML.match(/UIStartpage.AppSerpImages, (.+?)\\)[\\n,]/)[1]);\n\nconst img_array = data.render.presenter.regions.mainline.filter(i=>i.display_type==='images-bing').map(i=>i.results).flat();\n\nconst img = img_array.find(i=>i.thumbnailUrl?.includes($[1]))\nreturn img ? img.anonImageViewUrl+'\\n'+img.rawImageUrl : ''", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/n9cfz4t\nOLD\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1060#13\n\nПРИМЕРЫ / EXAMPLES\nhttps://startpage.com/sp/search" }, "StashApp-x": { "img": "^(localhost:9999/image/.*?/)thumbnail(\\?.*)", "to": "$1image$2", "note": "imqswt\nhttps://www.reddit.com/r/imagus/comments/14cfsdh/comment/joxtqwx" }, "Steam": { "img": "^((?:(?:cloud[-\\d]*|images\\.akamai)\\.steam(?:powered|usercontent)\\.com|steamuser(?:images|content)[^.]*\\.akamaihd\\.net)/ugc/\\d+/[\\dA-F]{40}).*", "to": "$1/", "note": "https://www.reddit.com/r/imagus/comments/j0dmgm/default_steam_filter_only_partially_working/\n\nПРИМЕРЫ / EXAMPLES\nhttps://store.steampowered.com/app/1342260/SAMURAI_SHODOWN/\nhttps://store.steampowered.com/app/814000/ONE_PIECE_ODYSSEY/\nhttps://store.steampowered.com/app/228280/Baldurs_Gate_Enhanced_Edition/" }, "SteamStore-s": { "img": "((?:(?:cdn|shared)\\.(?:edgecast|akamai|cloudflare|fastly)\\.steamstatic\\.com|steamcdn-[a-z]\\.akamaihd\\.net)/(?:store_item_assets/)?steam/apps/\\d+/)([a-f0-9]{40}/)?(?:(movie)[_.]\\d+x\\d+\\.|(\\w+))[^/]+$", "to": ":\nreturn $[1]+($[3] ? $[3]+'_max.#mp4 webm#' : $[2] ? $[2] + $[4]+'.jpg' : $[4]+'.jpg')", "note": "R500N\nhttps://www.reddit.com/r/imagus/comments/1kdsb06/comment/mqdeljj\nOLD\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/mjskear\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/m850z8b\n\n\n\nEXAMPLES\nhttps://store.steampowered.com/app/655500/MX_Bikes/\nhttps://store.steampowered.com/app/1292630/3on3_FreeStyle_Rebound/\nhttps://store.steampowered.com/app/3260240/Drivers_of_the_Apocalypse/" }, "SteamStore_sidebar-q-s": { "link": "^store\\.steampowered\\.com/app/(\\d+).*", "url": ":(()=>{const browserLang=navigator.language;const baseLang=browserLang.split('-')[0];const steamLanguageMap={'ar':'arabic','bg':'bulgarian','zh-CN':'schinese','zh-TW':'tchinese','cs':'czech','da':'danish','nl':'dutch','en':'english','fi':'finnish','fr':'french','de':'german','el':'greek','hu':'hungarian','id':'indonesian','it':'italian','ja':'japanese','ko':'koreana','no':'norwegian','pl':'polish','pt':'portuguese','pt-BR':'brazilian','ro':'romanian','ru':'russian','es':'spanish','es-419':'latam','sv':'swedish','th':'thai','tr':'turkish','uk':'ukrainian','vi':'vietnamese',};const lang=steamLanguageMap[browserLang]||steamLanguageMap[baseLang]||'english';return(`https://store.steampowered.com/api/appdetails?appids=${$[1]}&l=${lang}`);})()", "res": ":\nconst useSidebar = true; //Set to true, details will be displayed in the sidebar.\nconst allowMaxResolution = true; //true:Maximum resolution (if any). false:Full HD at maximum.\nconst lowResolutionFirst = false; //Set to true, display low resolution images first. Press TAB to switch to full size image.\n\nconst DEBUG_MODE = false;\nconst log = (DEBUG_MODE) ? console.log.bind(console) : () => { };\n\nlog($);\nconst appID = $[1];\nconst data = JSON.parse($._)[appID].data;\nlog(data);\nconst title = data.name;\nconst price = (data.is_free) ? 'Free Play' : (data.price_overview?.final_formatted) ? data.price_overview.final_formatted : '';\nconst caption = (price) ? title + ': ' + price : title;\nconst desc = data.about_the_game;\nconst DRMNotice = (data.drm_notice) ? data.drm_notice : '';\nconst extAccountNotice = (data.ext_user_account_notice) ? data.ext_user_account_notice : '';\nconst notices = (DRMNotice && extAccountNotice) ? [DRMNotice, extAccountNotice] : [DRMNotice] || [extAccountNotice];\nconst releaseDate = data.release_date?.coming_soon === true ? data.release_date.date : '';\nconst backgroundImage = data.background;\nconst css = `\n#imagus-extension.imagus-sidebar {\n background-color: rgb(36, 44, 54);\n background-image: url(${backgroundImage});\n\th1, h3, p {\n\t\tcolor: rgb(200, 200, 200);\n\t}\n\n h1 {\n font-size: 22px;\n }\n h2 {\n font-size: 20px;\n color: rgb(83, 145, 181);\n }\n h3 {\n font-size: 18px;\n }\n p.notice {\n color: #e1c48a;\n background: -webkit-gradient(\n linear,\n left top,\n right bottom,\n color-stop(0%, rgba(130, 114, 81, 0.5)),\n color-stop(100%, rgba(226, 197, 139, 0.5))\n );\n margin-bottom: 5px;\n }\n img {\n max-width: 100%;\n height: auto;\n }\n}\n`;\nconst l = lowResolutionFirst;\nconst m = allowMaxResolution;\nconst fixProtocol = url => url.replace(/^http:\\/\\//, 'https://');\nconst images = data.screenshots?.map(image => [\n\t[`${(!l) ? '#' : ''}${(!m) ? image.path_full : image.path_full.replace(/\\.\\d+x\\d+\\./, '.')}`, `${(!l) ? '' : '#'}${image.path_thumbnail}`]\n]) ?? [];\nconst videos = data.movies?.map(video => [\n\t[`${(!l) ? '#' : ''}${fixProtocol(video.mp4.max)}`, `${(!l) ? '' : '#'}${fixProtocol(video.mp4[\"480\"])}`],\n\tvideo.name\n]) ?? [];\nconst res = [...images, ...videos];\n\nconst prepResult = (res, content) => {\n\tif (useSidebar) {\n\t\tif (!lowResolutionFirst) res.splice(1, 0, [res[0][0]]);//first image is hard to see in the sidebar, so I'll register two.\n\t\tres[0][1] = `<imagus-extension type=\"sidebar\"><style>${css}</style><h1>${title}</h1><h3>${price}</h3><h3>${releaseDate}</h3>${notices.map(notice => `<p class=\"notice\">${notice}</p>`).join('')}<br>${content}</imagus-extension>`;\n\t\tthis.TRG.IMGS_ext_data = res\n\t\treturn { loop: 'imagus://extension' }\n\t} else {\n\t\tres[0][1] = `${caption} | ${data.short_description}`;\n\t\treturn res\n\t}\n}\n\nreturn prepResult(res, desc);", "note": "R500N\nhttps://www.reddit.com/r/imagus/comments/1kdsb06/steam_albums_sieve/\n\n!!!\n- Фильтр при наведении показывает сайдбар с информацией об игре.\n- Есть опции вкл/откл высокого разрешения (возможно переключение по TAB) и сайдбара в третьем поле сверху.\n==\n- The sieve, when hovered over, shows a sidebar with game information.\n- There are options to enable/disable high resolution (can be switched by TAB) and the sidebar in the third field from the top.\n\n\nПРИМЕРЫ / EXAMPLES\nhttps://store.steampowered.com/category/action/?offset=12\nhttps://store.steampowered.com/category/action/?tab=10" }, "StopGame.ru": { "img": "(stopga\\.me\\/images\\/uploads\\/images\\/\\d+\\/form\\/\\d+\\/\\d+\\/\\d+\\/)(?:normal|small)_(\\d+\\.(?:jpe?g|png|bmp))", "to": "$1$2", "note": "Baton34V\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=1640#11\n\nПРИМЕРЫ\nhttps://stopgame.ru/blogs/topic/66047\nhttps://stopgame.ru/newsdata/56568/bumer_shuter_dread_templar_pokinet_ranniy_dostup_26_yanvarya" }, "StopGame.ru_2": { "img": "(stopga\\.me\\/images\\/articles\\/\\d+\\/\\d+\\/\\d+\\/\\w+-\\d+)-s(\\.(?:jpe?g|png|bmp))", "to": "$1$2", "note": "Baton34V\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=1680#8\n\nПРИМЕРЫ\nhttps://stopgame.ru/show/58933/anatomiya_igr_nachalo" }, "Streamable-h-p": { "link": "^(streamable\\.com/)(?!about|documentation|privacy|terms|signup|login|tools|videos|albums|dashboard|search|clipper)(?:\\w/|album|ajax/groups/)?([\\da-z]+).*", "url": "$1s/$2", "res": ":\n$._ = $._.match(/var videoObject = (\\{[^\\n]+\\})/)\nif(!$._) return null\n$._=JSON.parse($._[1])\nvar t;\nif($._.group) {t=$._.name;$._=$._.group.videos} else {$._=[$._]}\nreturn $._.map(function(x,i) {\n var f=x.files, u=[];\n ['mp4', 'webm', 'mp4-mobile', 'webm-mobile'].forEach(function(t,ii){\n f[t]&&u.push((ii<2?'#':'')+f[t].url)\n })\n return [u, (!i&&t ? '['+t+'] ':'') + ($._.title || '')]\n})", "img": "^cdn\\.(streamable\\.com/)video/[^/]+/([^.]+).*", "note": "EXAMPLES\nhttps://www.reddit.com/domain/streamable.com/new/" }, "Streamain-h": { "link": "^(streamain\\.com/)(?:\\w\\w/)?(\\w+)/watch.*", "url": "$1embed/$2", "res": "data-link=\"([^\"]+)\nvideoTitle = \"([^\"]+)\n", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/1mfm0k1/comment/n6i3rp9\n\nEXAMPLES\nhttps://www.reddit.com/domain/streamain.com/new/" }, "Streamff-h-p": { "link": "^(streamff\\.)[a-z]{2,18}/v(/\\w+).*", "to": "ffedge.$1com/uploads$2.mp4", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/1nq4hb0/comment/ngyvxlx/\nOLD\nhttps://www.reddit.com/r/imagus/comments/1fjhyik/comment/lnq7i2x\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/l9ag11t\n\n\nEXAMPLES\nhttps://www.reddit.com/domain/streamff.co/new/" }, "Streamin-h": { "link": "^(streamin\\.)[a-z]{2,18}/v(/\\w+).*", "to": "c-cdn.$1one$2.mp4\nv-cdn.$1one/uploads$2.mp4", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/1nq4hb0/comment/ng7mf0v\nOLD\nhttps://www.reddit.com/r/imagus/comments/130svfu/comment/jrdn2ly\n\n!!!\nДля работы фильтра с Яндекс-Диском необходимо правило для SMH (см.ЧаВо п.12).\n==\nFor the sieve to work with Yandex Disc, you need a rule for SMH (see FAQ, p.12).\n\nEXAMPLES\nhttps://www.reddit.com/domain/streamin.me/new/\nhttps://www.reddit.com/domain/streamin.one/new/\nhttps://www.reddit.com/domain/streamin.link/new/\nhttps://www.reddit.com/domain/streamin.top/new/" }, "Streamlala-h-p": { "link": "streamlala\\.com/\\w+", "res": "<meta property=\"og:video:secure_url\" content=\"([^\"]+)\">", "note": "Baton34V\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=4000#14\n\nEXAMPLES\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1360#11" }, "Streamvi-h": { "link": "^(streamvi\\.com/)watch(?:/|\\.php\\?video=)(\\d+).*", "to": "cdn2.$1uploads/$2.mp4", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/nswnd3k\nOLD\nhttps://www.reddit.com/r/imagus/comments/130svfu/comment/jns5il6\n\nEXAMPLES\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1360#11" }, "StripDir-x-p": { "link": "(stripdir.com/sd/\\?strip=[^&]*)", "url": ": $[1] + '&maxpp=all'", "res": ":\nvar doc = new DOMParser().parseFromString($._, \"text/html\");\nvar images = doc.querySelectorAll('img[id^=\"#sdimg\"]');\nvar imgurls=Array.from(images).map(img => img.src);\nvar baseurl=$.base.replace(new RegExp('((https?://)?[/]).','gi'), '$1');\nvar dirurl=$.base.split(\"/\");\ndirurl.pop();\ndirurl=dirurl.join(\"/\");\nvar i=imgurls.map(function (item) {\n item = item.replace(/src=\"/gi, \"\");\n if ( item.search(/https?:\\/\\//) == -1) {\n if (item[0] == \"/\") item = baseurl + item; else item = dirurl + \"/\" + item;\n }\n return [item, '']; \n});\nreturn i;", "note": "regexfan1245\nOLD\nhttps://www.reddit.com/r/imagus/comments/r5b0ic/sieve_for_stripdircom/\n\n!!!\n- В РФ нужен прокси (сам сайт открыт, но использует медиа с закрытых сайтов).\n- Работа фильтра на всех ссылках не гарантируется, так как это агрегатор и использует контент из самых разных источников.\n==\nThe operation of the sieve on all links is not guaranteed, since it is an aggregator and uses content from a variety of sources.\n\n\nEXAMPLES\nhttp://www.stripdir.com/sd/?view=recent100" }, "Super-H.fr-h": { "img": "^(img.super-h.fr/images/[0-9a-f]+)\\.(md|th)\\.(\\w+)", "to": "$1.$3", "note": "mooms01\nhttps://www.reddit.com/r/imagus/comments/vlyl5u/sieve_for_imgsuperhfr_and_rehostdiberiecom\n\nEXAMPLES\nhttps://forum.hardware.fr/hfr/Discussions/Viepratique/hebergement-gratuit-anonyme-sujet_118598_28.htm#t65791920" }, "Sutochno.ru-s": { "link": "^sutochno.ru/front/searchapp/detail/(\\d+).*", "url": ": (()=>{debugger; if (!this.node.closest('.card__img, .card-map__img')) throw ''; return 'data:,'+$[1]})()", "res": ":\nconst x = new XMLHttpRequest;\nx.open('GET', `https://sutochno.ru/api/json/objects/getObject?id=${$[1]}`, false);\nx.setRequestHeader('Api-Version', '1.10');\nx.setRequestHeader('Token', 'Hy6U3z61fflbgT2yJ/VdlQ2719');\nx.send();\nconst data = JSON.parse(x.responseText).data;\n\nconst res = data.object.media.map(i => [i.image_url, i.comment || '']);\n\nconst short = data.object.short_description;\nconst descr = data.object.properties.detail_description?.properties?.find(i => i.name === 'description').value || '';\n\nconst text = [\n `<b>${short}</b>`,\n descr,\n].join('\\n\\n');\n\nif (res.length) {\n res[0][1] = `<imagus-extension type=\"sidebar\">${text}</imagus-extension>`;\n}\n\nthis.TRG.IMGS_ext_data = res;\nreturn { loop: 'imagus://extension' };", "note": "hababr\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=2440#12\n\nПРИМЕРЫ\nhttps://kazan.sutochno.ru/flats?occupied=2023-11-16;2023-11-17\nhttps://spb.sutochno.ru/flats?occupied=2023-11-16;2023-11-17\nhttps://sutochno.ru/front/searchapp/search?is_apartment=1&guests_adults=2&occupied=2023-11-16;2023-11-17&sortings=rating.desc&id=312416&type=city&term=Калининград&SW.lat=54.66713422755213&SW.lng=20.272956688964804&NE.lat=54.74188899002655&NE.lng=20.674644311035124" }, "Svadba-g": { "img": "^(svadba\\.pro/images/(?:users/avatar|(photo))s/)(?:small|mini|medium)/([\\da-f]{32})", "to": ":\nreturn $[1] + ($[2] ? 'medium/': '/') + $[3];", "note": "ПРИМЕРЫ\nhttp://svadba.pro/photos/123\nhttp://svadba.pro/sobokar/allphoto.html" }, "Svalko-g": { "img": "(svalko\\.org/data/)thumbs/(\\w+\\.(?:jpe?g|bmp|png))", "to": "$1$2", "note": "Baton34V\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=2720#15\n\nПРИМЕРЫ\nhttps://svalko.org/images.html" }, "T.ME_embed": { "link": "^(t\\.me/\\w+/\\d+)[^!]*(?:!(.+))?", "url": "$1?embed=1", "res": ":\nif($[2])this.t_me_urls=$[2].split('!');\nlet m=this.t_me_imgs||[];\nconst t=$._.match(/js-message_text\" dir=\"\\w+\">(.+?)<\\/div>/)?.[1]||'', idx=[...this.node.closest('div[class=\"tgme_widget_message_grouped_layer js-message_grouped_layer\"]')?.querySelectorAll('a[href]')||[]].findIndex(i=>i.href===$[0]);\n$=[...$._.matchAll(/(?:<video[^>]+src=\\\\?\"|(?![\\W\\w]+<video src=);background-image:url\\(')([^\"']+)/g)];\n$=[...new Map($)].map((i,n)=>[i[1],!n?t:'']);\nm.push(...$);\nif(this.t_me_urls?.length){\nthis.t_me_imgs=m;\nreturn {loop:this.t_me_urls.shift()}\n}\ndelete this.t_me_urls;\ndelete this.t_me_imgs;\nreturn idx>0 ? {\"\":m,idx:idx} : m", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/mpg5fm9\nOLD\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/mkbcl65\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/mjagbto\n\n\n!!!\nПоддержка фреймов с фото и видео из Телеграм.\n==\nSupport frames with photos and videos from Telegram.\n\n\nПРИМЕРЫ / EXAMPLES\nhttps://t.me/davankov/1409" }, "TBIB-x-p": { "link": "tbib\\.org\\/index\\.php\\?page=post&s=view&id=\\d+", "res": ":\nconsole.log(\"TBIB.org Sieve\");\n\norig_img_url=$._.match(/href=\"([^\"]*?)\".{1,200}Original image/)[1];\n\nvar returnval = [\n [orig_img_url, \"\"]\n ];\nconsole.log(\"returnval: \", returnval);\nreturn returnval;", "note": "iceiller9999\nhttps://www.reddit.com/r/imagus/comments/11s43t5/comment/jccdpl7\n\nEXAMPLES\nhttps://tbib.org/index.php?page=post&s=list&tags=solo\nhttps://tbib.org/index.php?page=post&s=list&tags=smile" }, "Telegraph.co.uk-m": { "link": "^telegraph\\.co\\.uk/.+", "img": "^(telegraph\\.co\\.uk/content/dam/[^?]+).*", "to": ":\nconst disable_on_links = false\n\nif($[1])return '#'+$[1]+'\\n'+$[1]+'?imwidth=1280'\nlet t=this.node;\nt=t.closest('article')?.querySelector('img[src]:not([src*=\"%20\"])')?.src?.match(/^([^?]+).*/)?.[1];\nreturn !disable_on_links&&t?.length?'#'+t+'\\n'+t+'?imwidth=1200':''", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/kuu2fo0\n\nEXAMPLES\nhttps://www.telegraph.co.uk/sport/\nhttps://www.telegraph.co.uk/travel/" }, "Tenor": { "link": "^tenor\\.com/(?:view/[\\w-]+|\\w+\\.gif$)", "res": "property=\"og:video\" content=\"([^\"]+)\">", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/1k7vypy/comment/mp435df\nOLD\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=240#6\n\n\nПРИМЕРЫ / EXAMPLES\nhttps://tenor.com/search/green-gifs\nhttps://www.reddit.com/domain/tenor.com/new/" }, "Tensor-g": { "link": "^tensor\\.art/images/\\d+(?:\\?post_id=\\d+)?", "res": ":\n$=$._.match(/id=\"__NUXT_DATA__\">(\\[.+?\\])<\\//);\n$=$&&JSON.parse($[1])||[];\nreturn $.flatMap(i=>typeof i==='string'&&i.startsWith('https://image.tensorartassets.com/posts/images/')?[[i]]:[])", "img": "^(image\\.tensorartassets\\.com)/cdn-cgi/image/[^/]+", "to": "$1", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/1l1rkod/comment/mvq5wan\n\n\nEXAMPLES\nhttps://tensor.art/search?q=green\nhttps://tensor.art/u/865235463214995649\nhttps://tensor.art/models?tag=3D" }, "TESall.ru": { "link": "^media\\.tesall\\.(?:club|ru)/image/[\\w-]+", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/lxwait4\nOLD\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3720#11\n\nПРИМЕРЫ\nhttps://tesall.ru/files/modi-dlya-skyrim/vizualnie-effekti/10676-prosto-svet\nhttps://tesall.ru/files/file/3902-alternativnyj-start-zhivi-drugoj-zhiznyu/" }, "TheGuardian-m": { "link": "^theguardian\\.com/[\\w-]+/(video/|gallery/)?\\d{4}/\\w+/\\d+/.+", "url": ": $[1] ? $[0] : ''", "res": ":\nif($[1]==='video/')return {loop:'//youtube.com/embed/'+$._.match(/data-video-id=\"([^\"]+)/)?.[1]};\nif($[1]==='gallery/'){\n$=JSON.parse($._.match(/\"page\":\\s*({.+?}),\\n/)?.[1]||'{}').lightboxImages?.images||[];\nreturn $.map(i=>[i.src.replace(/\\?.+/,'?width=2000&dpr=1&s=none&crop=none'),i.caption]);\n}\nreturn this.node.parentNode?.querySelector('img')?.src?.replace(/\\?.+/,'?width=2000&dpr=1&s=none&crop=none')", "img": "^(i\\.guim\\.co\\.uk/img/media/[^?]+\\?width=)\\d+", "to": "$12000", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/1isyupe/comment/me520mu\n\n!!!\nTo view a video, it is recommended to move the cursor over its title. Not all videos work, just the YouTube frames.\n\n\nEXAMPLES\nhttps://www.theguardian.com/uk-news\nhttps://www.theguardian.com/culture?page=3\nhttps://www.theguardian.com/video" }, "ThePlace.ru-g": { "img": "^(theplace\\.ru/)cache/(archive/\\S+/img/\\S+)-gthumb-.+\\.jpg", "to": "$1$2.jpg", "note": "Baton34V\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1700#9\n\nПРИМЕРЫ\nhttps://www.theplace.ru/photos/natalya_rudina/" }, "Thetv.jp-m": { "img": "^(thetv\\.jp/i/\\w+/\\d+/\\d+\\.jpg).*", "to": "#$1?w=5000\n$1?h=1200", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/17n3qm8/comment/k7r2hz8\n\nEXAMPLES\nhttps://thetv.jp/news/detail/1165669/" }, "Thingiverse": { "link": "(www\\.)?thingiverse\\.com\\/thing:(\\d+)", "res": ":\nvar res=[];\nx = new XMLHttpRequest();\nx.open('GET', 'https://api.thingiverse.com/things/' + $[2] + '/images',false);\n//x.timeout=3000;\nx.setRequestHeader('Authorization', 'Bearer 56edfc79ecf25922b98202dd79a291aa');\nx.send();\nif (x.readyState != 4) return;\nif (x.status != 200) return;\nvar c = JSON.parse(x.responseText);\nc.forEach(function(obj) {\n obj.sizes.forEach(function(obj1) {\n if (obj1.type=='display' && obj1.size=='large') {\n res.push([obj1.url, obj.name]);\n }\n });\n});\nreturn res;", "note": "gpl2731\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1140#14\nOLD\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=2320#5\n\nEXAMPLES\nhttps://www.thingiverse.com/education?page=1&subjects=History\nhttps://www.thingiverse.com/search?q=table&page=1&type=things&sort=relevant" }, "Threads": { "link": "^threads\\.(?:net|com)/(?:@[\\w-]+/post/[\\w-]+|\\?(\\d+)!(.+))$", "url": ": $[1]?'data:,'+$[0]:this.node.offsetParent.offsetParent.querySelector('video[src]').src", "res": ":\n$._=$[2].split('!').map(i=>[i])\nreturn {\"\":$._,idx:Number($[1])}", "img": "^(?:[^/.]+\\.)*(?:fbcdn\\.net|cdninstagram\\.com)/(?:(?:[^_]+_)+p\\d+x\\d+[\\w.]*&|(?:[^.]+\\.)+\\w+\\?(?:stp=dst-[\\w.]+&)?)efg=.+", "loop": 2, "to": ":\nconst n=this.node;\nlet s=n.closest('div[class=\"x1xmf6yo\"]')?.querySelectorAll('picture');\ns=s&&[...s].map(i=>(i.querySelector('img[srcset]')||i.querySelector('img'))?.src);\nconst m=(n.querySelector('img[srcset]')||n.querySelector('img'))?.src, b=s?.length>1, i=m&&b&&s.indexOf(m);\nreturn b&&i>-1 ? '//threads.net/?'+i+'!'+s.join('!') : m||$[0]", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/1l7k4bj/comment/mx5ejss\nOLD\nhttps://old.reddit.com/r/imagus/comments/1hcx75f/threads_popup_is_smaller_resolution_can_that/m1ru0kq/\nhttps://www.reddit.com/r/imagus/comments/1enc7kt/comment/lh908bb\n\n!!!\nTo activate the video - hover over the timestamp.\n\nEXAMPLES\nhttps://www.threads.net/\nhttps://www.threads.net/@wallpaper_edits73/post/DDfEIWJzb6Y" }, "ThumbSnap-h-p": { "link": "thumbsnap\\.com/(\\w/)?\\w+$", "res": "<meta property=\"og:(?:image|video)\" content=\"([^\"]+)\"\n", "note": "Baton34V\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=260#5\nOLD\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=120#3\n\n\nПРИМЕРЫ / EXAMPLES\nhttps://www.reddit.com/domain/thumbsnap.com/new/\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=100#16" }, "Tiermaker": { "img": "^tiermaker\\.com/images/chart/chart/.+", "to": "$&", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/1c8awq8/comment/l0knfbm\n\nEXAMPLES\nhttps://tiermaker.com/search/?q=good\nhttps://tiermaker.com/categories/beauty-cosmetics\nhttps://tiermaker.com/create/video-game-franchises-450-70151" }, "TIKTOK-p": { "link": "^(?:(v[tm]\\.tiktok\\.com/\\w+|tiktok\\.com/t/[^/]+)|(?:m\\.)?(tiktok\\.com/)(?:(?:share|@[^/]+)/video|(?:embed/)?v2?|embed(?:/v\\d)?)(/\\d+)).*", "url": ": $[3]&&!/tiktok\\.com$/.test(location.hostname) ? 'https://www.tiktok.com/embed/v2'+$[3] : $[0]", "res": ":\nif(!$[3]||/tiktok\\.com$/.test(location.hostname)){\n$=JSON.parse($._.match(/\"__UNIVERSAL_DATA_FOR_REHYDRATION__\" type=\"application\\/json\">({.+?})<\\/script/)[1]).__DEFAULT_SCOPE__['webapp.video-detail'].itemInfo.itemStruct;\nif(/tiktok\\.com$/.test(location.hostname)){\nlet a=$.author?.nickname,m=$.music,t=['[' + new Date($.createTime*1e3).toLocaleString() + ']', '@'+a, $.desc, '♪', m.authorName + ' - ' + m.title].join(' '),v=$.video.playAddr?.length ? $.video : $.imagePost.images.map((i,n)=>[i.imageURL.urlList[0],(!n?t:'')]);\nthis.CNT.filename=(a+' - '+$.desc?.match(/(?:\\S+\\s?){1,5}/)?.[0].trim()).replace(/[<>:\"\\/|\\\\?*]/g,'_');\nreturn Array.isArray(v) ? v : [(v.playAddr || v.downloadAddr) + '#mp4',t]\n}\nreturn {loop:'https://www.tiktok.com/embed/v2/'+$.id}\n}\n$=JSON.parse($._.match(/\"__FRONTITY_CONNECT_STATE__\" type=\"application\\/json\">({.+?})<\\/script/)[1]).source.data[`/embed/v2${$[3]}`].videoData;\nlet a=$.authorInfos?.nickName,m=$.musicInfos,t=[new Date($.itemInfos?.createTime*1e3).toLocaleString(), '@'+a, $.itemInfos?.text, '♪', m.authorName + ' - ' + m.musicName].join(' '),v=$.itemInfos.video.urls[0];\nthis.CNT.filename=(a+' - '+$.itemInfos?.text?.match(/(?:\\S+\\s?){1,5}/)?.[0].trim()).replace(/[<>:\"\\/|\\\\?*]/g,'_');\nreturn [v+'#mp4',t]", "img": "^blob:https://www\\.tiktok\\.com/[a-f\\d-]{36}$", "loop": 2, "to": ":\nconst n=this.node\nreturn n.closest('a[href^=\"https://www.tiktok.com/@\"][href*=\"/video/\"]').href", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/o4rvzhu\nOLD\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/o0fs5rp\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/ktl6lch\n\n\n\n!!!\n- Для показа внешних ссылок и фреймов необходимо правило для SMH (см.ЧаВо, п.12);\n- Загрузка видео в Хроме стабильно работает только через контекстное меню; \n- Курсор рекомендуется наводить на нижнюю часть видео или счетчик лайков;\n- В некоторых редких случаях на ВНЕШНИХ ссылках фильтр может показывать ошибку (красный спиннер).\n==\n- To display external links and frames, you need a rule for SMH (see FAQ, p.12);\n- Downloading videos in Chrome works stably only through the context menu;\n- It is recommended to move the cursor over the bottom part of the video or on the likes counter.\n- In some rare cases, the sieve may show an error on EXTERNAL links (red spinner).\n\n\nПРИМЕРЫ / EXAMPLES\nhttps://www.reddit.com/domain/tiktok.com/new/\nhttps://www.tiktok.com/search/video?q=yellow\nhttps://www.tiktok.com/search?q=машина&t=1681301904701\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=620#3" }, "TinyURL": { "link": "^(tinyurl\\.com/[\\w-]{5,30})(?:$|\\?)", "loop": 1, "url": ": $[1]+'?'+Date.now()", "res": "<meta property=\"og:url\" content=\"([^\"]+)", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/1b7d4tx/comment/ktwvhwf\n\nEXAMPLES\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1360#11" }, "Tistory-g": { "link": "^[^.]+\\.(?:(?:tistory|comnewb|tensornova|bskyvision|martian36|opnay|iconsketch|readiz|mintmeter)\\.com|(?:openipc|helpot|marketingplus|creativestudio|kinesis|bosim)\\.kr|donza\\.net)/\\d+$", "img": "^[^.]+\\.daumcdn\\.net/thumb/[A-Z]\\d+x\\d+/.+fname=(http.+)", "dc": 2, "to": ":\nlet n=this.node;\nn=n.parentNode?.parentNode?.querySelector('img[class=\"thumb_g\"]')?.src?.match(/^.+fname=(http.+)/)?.[1];\nreturn !$[1]&&n?decodeURIComponent(n):$[1]||''", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/kuyo8ug\n\n!!!\nIn the gallery, the cursor should be placed on the image title.\n\nEXAMPLES\nhttps://www.tistory.com/userskin/gallery" }, "TnAFlix-x-p": { "useimg": 1, "link": "^(?:tnaflix.com/(?:[a-z]{2}/)?[\\w-]+/.+?/video(\\d+)|tnaflix\\.com/gallery/.+)", "url": ": $[1]?'https://www.tnaflix.com/ajax/video-player/'+$[1]:$[0]", "res": ":\nif(!$[1]){\nif(!this.gallery)this.gallery=[]\nif(!this.ls)this.ls=0\nthis.gallery.push(...[...$._.matchAll(/<a class=\"no_ajax\" href=\"([^\"]+)/g)].map(i=>[i[1]]))\nif(/<link rel=\"next\" href=\"/.test($._)&&this.ls<25){\nthis.ls++\nreturn {loop:$._.match(/<link rel=\"next\" href=\"([^\"]+)/)[1]}\n}else{\nlet a = this.gallery\ndelete this.gallery\ndelete this.ls\nreturn a\n}\n}else{\n$=[...$._.matchAll(/<source src=\\\\\"([^\"]+)/g)]\nconst l=Math.floor($.length/2)-1\nreturn [[$.flatMap((i,n)=>!n||n===l?(!n?'#':'')+i[1].replace(/\\\\/g,''):[])]]\n}", "img": "^(img\\.tnastatic\\.com/)[^/]+(/pics/alpha/[^.]+\\.(?:jpe?g|png))", "to": "$1q80w900r$2", "note": "imqswt\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/kwscpo5\nOLD\nhttps://www.reddit.com/r/imagus/comments/1593h2c/comment/jtxampt\nhttps://www.reddit.com/r/imagus/comments/1593h2c/comment/jtdioop\n\n\nEXAMPLES\nhttps://www.tnaflix.com/gallery/perfect-ass-in-tight-leggings-2549094446\nhttps://www.tnaflix.com/search.php?what=redhead&tab=galleries\nhttps://www.tnaflix.com/profile/jacobs_richard?section=videos" }, "TopHotels.ru-s": { "link": "^tophotels\\.ru/hotel/(\\w+)/media/(?:gallery$|list\\?type=(?:photo|(video)))", "url": ": $[2] ? $[0] : `https://tophotels.ru/hotel/${$[1]}/media/fsg-items?tab=photos`", "res": ":\nif($[2]){\nthis.TRG.IMGS_ext_data=[...$._.matchAll(/data-src=\"([h\\/][^\"]+)/g)].map(i=>!/\\/\\/video\\.tophotels\\.ru|\\.mp4\\b/.test(i[1])?['',`<imagus-extension type=\"iframe\" url=\"${i[1].replace(/^\\/\\//,'https://')}\"></imagus-extension>`]:[i[1]+'#mp4','']);\nreturn {loop:'imagus://extension'}\n}\n$=JSON.parse($._).items||[];\nreturn $.map(i=>[i.src,i.description])", "img": "^(?:(tophotels\\.ru/icache/(?:hotel|user)_photos/[0-9/]+_)\\d+x\\d+\\.|(video\\.tophotels\\.ru/poster/\\w+/(?:\\S/)?[^./]+\\.jpg))", "loop": 2, "to": ":\nif($[2])return this.node.parentNode.firstElementChild?.getAttribute('data-src')+'#mp4'||$[0];\nreturn $[1]+'#1600x1200 1140x820#.'", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/l8pddir\nOLD\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=580#11\n\nПРИМЕРЫ\nhttps://tophotels.ru/catalog/hotel/83?sort=5" }, "toiimg-CDN": { "link": "(static\\.toiimg\\.com/)[^/]+(/[^.]+\\.cms).*", "img": "(static\\.toiimg\\.com/)[^/]+/([^.]+\\.cms).*", "to": "$1photo$2", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/130svfu/comment/jn8v5j7\n\nEXAMPLES\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1360#11" }, "Toptoon-g": { "link": "^toptoon\\.(?:com|net)/.*", "img": "^(?:toptoon\\.(?:com|net)/|(?:shtosebzjw|twattraction)\\.akamaized\\.net/).*", "to": ":\nconst n = this.node\nreturn n.src||n.dataset?.src||n.style[\"background-image\"]?.match(/url\\(\"([^\"]+)/)?.[1]||n.parentNode?.querySelector('div[style^=\"background-image\"]')?.style?.backgroundImage?.match(/url\\(\"([^\"]+)/)?.[1]||''", "note": "imqswt\nhttps://www.reddit.com/r/imagus/comments/13h211q/comment/kw6eank\nOLD\nhttps://www.reddit.com/r/imagus/comments/13h211q/comment/js5py39\n\n!!!\nО работе данного фильтра / About the operation of this sieve:\nhttps://www.reddit.com/r/imagus/comments/13h211q/comment/js6a4fm\n\nEXAMPLES\nhttps://toptoon.com/weekly#weekly6" }, "TradingView": { "link": "^tradingview\\.com/x/.+", "res": "<main.+\\n?.+?<img.+?src=['\"](\\S+)['\"]", "note": "64h\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1100#12\n\nПРИМЕРЫ\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1100#12" }, "Trakt.tv": { "img": "^(walter\\.trakt\\.tv/images/(?:[^/]+/)+?)(?:thumb|medium|large)/", "to": "$1#full large#/", "note": "EXAMPLES\nhttps://trakt.tv/movies/popular\nhttps://trakt.tv/shows/recommended/weekly" }, "Trampt": { "link": "^trampt\\.com/item/[\\w-]+", "res": ":\nreturn JSON.parse($._.match(/\"__NEXT_DATA__\" type=\"application\\/json\">({.+?})</)?.[1]||'{}').props?.pageProps?.metadata?.images?.map(i=>['//img.trampt.com/'+i.original.location])||''", "img": "^(img\\.trampt\\.com/[^?]+).*", "to": "$1", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/1f7saew/comment/ll9rp6z\n\n!!!\nIt is recommended to move the cursor over the image name.\n\nEXAMPLES\nhttps://www.trampt.com/collect?query=GREEN\nhttps://www.trampt.com/artist/jie-peng-xifeng-t7BXeiiqHu0pbL" }, "Tranny-x-p": { "link": "^tranny\\.one/view/\\d+", "res": "<video src=\"([^\"]+)", "note": "DracoSerge\nhttps://www.reddit.com/r/imagus/comments/150zrnk/nsfw_i_want_to_share_sieves_some_i_made_and_some/\n\nNo album support:\nhttps://www.tranny.one/pics/\nNo HD support:\nhttps://www.tranny.one/hd/\n\nEXAMPLES\nhttps://www.tranny.one/user/312899/view/\nhttps://www.tranny.one/c2050/stockings/\nhttps://www.tranny.one/pornstars/10726/khloe-kay/" }, "TrannyTube-x-p": { "link": "^(?:|[a-z]+)trannytube\\.(com|tv|net)+(\\/\\w+)+[\\w\\-\\.]+", "res": "<source src=\"([^\"]+)", "note": "DracoSerge\nhttps://www.reddit.com/r/imagus/comments/150zrnk/nsfw_i_want_to_share_sieves_some_i_made_and_some/\n\n\nEXAMPLES\nhttps://www.trannytube.tv/newest\nhttps://www.trannytube.tv/category/shemale-on-shemale\nhttps://www.trannytube.net/channels/transbella" }, "TrannyVideosX-x-p": { "link": "^trannyvideosx\\.com\\/video\\/[\\d]+\\/[\\w\\-]+", "res": "source src=\"([^\"]+)", "note": "DracoSerge\nhttps://www.reddit.com/r/imagus/comments/150zrnk/nsfw_i_want_to_share_sieves_some_i_made_and_some/\n\nEXAMPLES\nhttps://www.trannyvideosx.com/search/videos/blonde\nhttps://www.trannyvideosx.com/search/videos/alice" }, "TransPhoto-g": { "img": "^(transphoto\\.org/photo/\\d+/\\d+/\\d+/\\d+)_s(\\.jpg)$", "to": "$1.#jpg gif png#", "note": "Baton34V\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=1560#2\n\nEXAMPLES\nhttps://transphoto.org/articles/1123/\nhttps://transphoto.org/comments.php?cid=217&t=1" }, "Trinixy.ru-g": { "link": "^trinixy\\.ru/\\d+-[\\w-\\.]+\\.html", "res": ":\nvar res=[];\nvar re,a;\nvar i = $._.indexOf('<img itemprop=\"image\"');\nif(i>0) {\n var t = $._.indexOf('<div class=\"clear\"', i);\n if(t>0) {\n var data=$._.substring(i,t);\n re = /src=\"([^\"]+)\" alt=\"([^\"]+)\"/gi\n a = re.exec(data);\n while(a) {\n res.push([a[1],a[2]]);\n a = re.exec(data);\n }\n }\n}\nre = /<source src=\"([^\"]+)\" type=\"video\\/mp4\">/gi\na = re.exec($._);\nwhile(a) {\n res.push([a[1]+'#mp4']);\n a = re.exec($._);\n}\nreturn res;", "note": "Baton34V\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=620#21\nOLD\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3900#20\n\n\nПРИМЕРЫ\nhttps://www.reddit.com/domain/trinixy.ru/new/" }, "Tripadvisor-s": { "link": "^tripadvisor\\.com/[\\w-]+\\.html", "res": ":\nlet res = []\n\ntry {\n let data = JSON.parse(JSON.parse(decodeURIComponent(/<script.+src=\"(data:text.+)/.exec($._)[1]).match(/JSON.parse\\((\".+}\")/)[1]))\n const mediaData = JSON.parse(Object.values(data.urqlSsrData.results).find(v => /mediaWindow\\\":/.test(v.data)).data)\n res.push(...mediaData.mediaWindow.windowPanes[0].albums[0].mediaList.map(img => [img.photoSizes.reduce((prev, cur) => prev.width > cur.width ? prev : cur).url, '']))\n} catch (error) {}\nif (res.length) return res\n\nreturn [...new DOMParser().parseFromString($._, \"text/html\").querySelectorAll('.mobile_flex_container img')]\n .map(i => [i.dataset.lazyurl.replace(/\\/photo-\\w\\//, '/photo-o/')])\n", "img": "^(?:dynamic-)?(media-cdn\\.tripadvisor\\.com/media/(?:[^/]+/)*?photo-)[a-z](?:/[\\dx]+)?(/(?:[\\da-f]{2}/){4}[^?]+).*", "to": "$1#o s#$2", "note": "hababr\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=2120#14\nOLD\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1480#11\n\n!!!\nКурсор следует наводить на название объекта в каталоге.\n==\nThe cursor should be pointed at the name of the object in the catalog.\n\nEXAMPLES\nhttps://www.tripadvisor.com/Restaurants-g187147-zfp6-Paris_Ile_de_France.html\nhttps://www.tripadvisor.com/Attractions-g187147-Activities-c42-t183-Paris_Ile_de_France.html\nhttps://www.tripadvisor.com/Hotels-g34438-a_ufe.true-Miami_Florida-Hotels.html\nhttps://www.tripadvisor.com/Hotels-g34438-a_ufe.true-Miami_Florida-Hotels.html#MAPVIEW" }, "TrueImages.ru|prtscr.site-h": { "link": "^(trueimages\\.ru|prtscr\\.site)/(view/)?\\w+$", "res": "<meta property=\"og:image\" content=\"([^\"]+)\"", "note": "Rodny + Baton34V (fix)\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3720#20\n\n!!!\ntimg.in - не работают на самом сайте.\n\n\nПРИМЕРЫ\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1360#11" }, "TSModelsTube-x-p": { "link": "^tsmodelstube\\.com/videos/[\\w-]+\\.html", "res": "<source src=\"([^\"]+)", "note": "http://www.reddit.com/r/imagus/comments/9h3el8/nsfw_sieve_request/e6fbbfc\n\nEXAMPLES\nhttps://tsmodelstube.com/\nhttps://tsmodelstube.com/channels/10/gangbang/page1.html" }, "Tuchong-g": { "link": "^(?:[^.]+\\.(tuchong\\.com/)(?:(\\d+)|artist/[^~]+~)|(tuchong\\.com/)\\d+/(\\d+))(?!/?#image\\d+).*", "url": ": $[2]||$[4] ? `//${$[1]||$[3]}rest/posts/${$[2]||$[4]}` : $[0]", "res": ":\nif(!$[2]&&!$[4]){\n$=$._.match(/searchResult=([^;]+)/)\n$=$&&JSON.parse($[1]).hits||[]\nreturn $.map(i=>['https://cdn'+[3,6,9][Math.floor(Math.random()*3)]+'-banquan.ituchong.com/weili/image/l/'+i.image_id+'.jpg',i.title])\n}\nvar p,d='http://photos.'+($[1]||$[3])\n$ = JSON.parse($._)\nif(!$||!$.images)return null\np=$.post?[$.post.title, $.post.exerpt].filter(Boolean).join(' - '):'';\np = p ? '['+p+' by '+$.post.author.name+'] ':''\n$=$.images\nreturn $&&$.length ? $.map(function(x,i) {\n return [d + x.user_id + '/f/' + x.img_id + '.jpg', (!i&&p ? p : '')+[x.title, x.description].filter(Boolean).join(' - ')]\n}) : null", "img": "^(?:(photos\\.tuchong\\.com/\\d+/)(?!f/)[^/]+|(cdn\\d+-banquan\\.ituchong\\.com/weili/image/)[a-z]{1,3}(/\\d+\\.)\\w+)", "to": ":\nreturn $[1] ? $[1]+'f' : `${$[2]}l${$[3]}#jpg jpeg png#`\n", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/lf0wn7y\n\nEXAMPLES\nhttps://stock.tuchong.com/search?source=tc_pc_home_search&term=green\nhttps://stock.tuchong.com/topic?topicId=50759&from=精选图集-设计素材-热门" }, "Tudocdn-CDN": { "link": "^(?:[a-z]+\\.)?tudocdn\\.net/\\d+", "to": "$&", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/130svfu/comment/k1zeaje\n\nПРИМЕРЫ / EXAMPLES\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1360#11" }, "Tumbex-g-p": { "link": "^tumbex\\.com/[^.]+\\.tumblr/post/\\d+", "loop": 1, "res": ":\nreturn JSON.parse($._.match(/window\\.launcher\\(({.+?}), /)?.[1]||'{}').params?.content.posts[0].blocks[0].content.filter(i=>i.hd||i.media?.url||i.url).map(i=>i.hd?[['#'+i.hd,i.md]]:[i.media?.url||i.url])||''", "note": "imqswt\nhttps://www.reddit.com/r/imagus/comments/189cxxu/comment/kbsudd8\n\nПРИМЕРЫ / EXAMPLES\nhttps://www.reddit.com/domain/tumbex.com/new/\nhttps://www.tumbex.com/search?q=Care\nhttps://www.tumbex.com/tastefullyoffensive.tumblr/video" }, "TUMBLR_video-g-p": { "img": "(va\\.media\\.tumblr\\.com/tumblr_\\w+\\.mp4)", "to": "$1", "note": "Baton34V\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=660#18\n\n!!!\nДля работы фильтра на внешних ссылках необходимо расширение SMH (см. ЧаВо, п.12)\n==\nThe SMH extension is required for the sieve to work on external links (see FAQ, p.12).\n\nПРИМЕРЫ / EXAMPLES\nhttps://www.tumblr.com/tagged/video?sort=recent" }, "TurboImageHost-h": { "link": "^turboimagehost.com/p/\\d+/.*", "res": "=\"og:image\" content=\"([^\"]+)", "note": "ПРИМЕРЫ / EXAMPLES\nhttps://www.reddit.com/domain/turboimg.net/new/\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1360#11" }, "tv2.no-m": { "img": "^(breaking-general\\.aws\\d\\.tv2\\.no/post/[a-f0-9]+/[a-f0-9]+)/resized/750x0", "to": "#$1\n$1/resized/1500x0", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/c9zlcm/comment/jocp1zl" }, "Twibooru-x": { "img": "^(cdn.twibooru.org/img.+/).+", "to": "#$1full.#png jpg jpeg gif webp mp4 webm#", "note": "_1Zen_\nhttps://www.reddit.com/r/imagus/comments/1djehsq/comment/l9gj5i8\n\nEXAMPLES\nhttps://twibooru.org/galleries/458\nhttps://twibooru.org/tags/tumblr\nhttps://twibooru.org/search?q=WEBM" }, "TWITCH": { "img": "^(static-cdn\\.jtvnw\\.net\\/)(?:((?:ttv-boxart|(j)tv_user_pictures|(p)reviews-ttv)\\/[^?\\/]+)[-_]\\d+x\\d+(\\.[^?]+).*|((emoticons|badges)\\/[^.]+\\/)\\d+)", "to": ":\nreturn $[1]+($[2] ? $[2]+($[3]?'-600x600':($[4]?'-0x0':''))+$[5] : $[6]+($[7][0]=='b'?3:5))", "note": "ПРИМЕРЫ / EXAMPLES\nhttps://www.reddit.com/domain/twitch.tv/new/\n\n\n!!!\nДля показа фото профилей можно отключить фильтр TWITCH_Video&Live. Но в этом случае фильтр не будет показывать прямые трансляции.\n==\nTo show profile photos, you can disable the TWITCH_Video&Live sieve. But in this case, the sieve will not show live streams." }, "TWITCH_clips-q": { "link": "^(?:clips\\.twitch\\.tv/(?:embed\\?clip=)?|(?:m\\.)?twitch\\.tv/(?:\\w+/)?clip/)([\\w-]+).*", "url": ": ''", "res": ":\nvar p = this,x = new XMLHttpRequest\nx.open('POST', 'https://gql.twitch.tv/gql')\nx.timeout = 3000\nx.setRequestHeader('Client-ID', 'kimne78kx3ncx6brgo4mv6wki5h1ko')\nx.send('[{\"operationName\":null,\"variables\":{},\"query\":' + JSON.stringify('{clip(slug:\"' + $[1] + '\"){broadcaster{displayName} createdAt game{name} video{id} title}}') + '},{\"operationName\":\"VideoAccessToken_Clip\",\"variables\":{\"slug\":\"' + $[1] + '\"},\"extensions\":{\"persistedQuery\":{\"version\":1,\"sha256Hash\":\"36b89d2507fce29e5ca551df756d27c1cfe079e2609642b4390aa4c35796eb11\"}}}]');\nx.onloadend = function() {\n const response = JSON.parse(this.responseText);\n const c = response[0].data.clip;\n const c2 = response[1].data.clip;\n const signature = c2.playbackAccessToken.signature;\n const token = JSON.parse(c2.playbackAccessToken.value);\n p.prepareCaption(p.node, '[' + (c.game && c.game.name) + '] ' + [c.title, c.broadcaster && c.broadcaster.displayName, (new Date(c.createdAt)).toLocaleString(), c.video && 'https://twitch.tv/videos/' + c.video.id].filter(Boolean).join(' | '));\n p.set(c2.videoQualities.sort((a, b) => parseInt(b.quality) - parseInt(a.quality)).map(function(v, i) { return (i ? '' : '#') + (v.sourceURL + '?sig=' + signature + '&token=' + encodeURIComponent(JSON.stringify(token)))}));\n}\nreturn null", "note": "wakeuph8 + Imagus_fan (fix)\nhttps://www.reddit.com/r/imagus/comments/182tffy/comment/kaolsiy\nOLD\nhttps://www.reddit.com/r/imagus/comments/nlqxa6/comment/gzmswp3\n\n!!!\n- Курсор рекомендуется наводить на название видео или на имя автора. Иногда требуется повторное наведение курсора (если фильтр не сработает с первого раза).\n- В данном фильтре возможно переключение качества видео с помощью клавиши TAB.\n==\n- It is recommended to hover the cursor over the title of the video or the author's name. Sometimes you need to hover the cursor again (if the sieve doesn't work the first time).\n- In this sieve, it is possible to switch the video quality using the TAB key.\n\nПРИМЕРЫ / EXAMPLES\nhttps://www.reddit.com/r/TwitchClips/\nhttps://www.reddit.com/domain/clips.twitch.tv/new/" }, "TWITCH_Video&Live": { "link": "^(?:m\\.)?twitch\\.tv/(?:(?!directory|downloads|jobs|store|twitchartists|turbo|privacy)(\\w+)$|(?:\\w+/)?videos/(\\d+))", "url": "data:,$&", "res": ":\nconst url = $[1] ? 'api/channel/hls' : 'vod', x = new XMLHttpRequest(), hex = ['A','B','C','D','E','F','0','1','2','3','4','5','6','7','8','9'];\nx.open('POST','https://gql.twitch.tv/gql',false);\nx.setRequestHeader('Client-ID','kimne78kx3ncx6brgo4mv6wki5h1ko');\nx.send(`{\"operationName\":\"PlaybackAccessToken_Template\",\"query\":\"query PlaybackAccessToken_Template($login: String!, $isLive: Boolean!, $vodID: ID!, $isVod: Boolean!, $playerType: String!, $platform: String!) { streamPlaybackAccessToken(channelName: $login, params: {platform: $platform, playerBackend: \\\\\"mediaplayer\\\\\", playerType: $playerType}) @include(if: $isLive) { value signature authorization { isForbidden forbiddenReasonCode } __typename } videoPlaybackAccessToken(id: $vodID, params: {platform: $platform, playerBackend: \\\\\"mediaplayer\\\\\", playerType: $playerType}) @include(if: $isVod) { value signature __typename }}\",\"variables\":{\"isLive\":${$[1]?'true':'false'},\"login\":\"${$[1]||''}\",\"isVod\":true,\"vodID\":\"${$[2]||''}\",\"playerType\":\"site\",\"platform\":\"web\"}}`);\nconst p = Math.floor(999999*Math.random()), tokens = JSON.parse(x.responseText).data[($[1]?'stream':'video')+'PlaybackAccessToken'];\nlet id = '';\nfor(i=0;i<32;i++)id+=hex[Math.floor(Math.random()*16)];\nconst vid = `https://usher.ttvnw.net/${url}/${$[1]||$[2]}.m3u8?acmb=eyJBcHBWZXJzaW9uIjoiYjlhNjU4ZWMtMTcyMS00Y2FjLThkMjgtZjk0NmJmY2E3YzUwIn0%3D&allow_source=true&p=${p}&platform=web&play_session_id=${id}&sig=${tokens.signature}&supported_codecs=av1,h264&token=${encodeURIComponent(tokens.value)}&transcode_mode=cbr_v1`;\nthis.TRG.IMGS_ext_data = ['//data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"640\" height=\"360\"></svg>',`<imagus-extension type=\"videojs\" url=\"${vid}\"></imagus-extension>`];\nreturn {loop:'imagus://extension'}", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/1gr8wi2/comment/lx8r570\n\n\n!!!\n- Курсор следует наводить на самый край видео (любой). Или на кнопку \"Присоединиться к трансляции\".\n- При наведении курсора на LIVE-трансляцию (значок \"В эфире\") перед воспроизведением видео появляется экран рекламной паузы в течение 10-15 секунд.\n==\n- The cursor should be placed on the very edge of the video (any). Or on the “Join the broadcast” button.\n- When hovering over a live stream, the video has a commercial break screen for 10-15 seconds before the video plays.\n\n\nПРИМЕРЫ / EXAMPLES\nhttps://www.twitch.tv/directory/category/just-chatting\nhttps://www.twitch.tv/directory/all\nhttps://www.twitch.tv/directory/category/dota-2/videos/all" }, "uDrop-h": { "link": "^(udrop\\.com/)([^/]+/[^./]+\\.(?!7z|exe|msi|pdf|rar|zip)\\w{3,4}\\b)", "img": "^(udrop\\.com/)cache/plugins/(?:filepreview|mediaconvert)er/\\d+/[^.]+\\.(?:jpe?|pn)g", "to": ":\nif(this.node.parentNode?.parentNode?.className===\"thumbIcon\")return null\nreturn $[1]+'file/'+($[2]||location.hostname==='www.udrop.com'&&location.pathname.slice(1))", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/l44adg5\nOLD\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=2580#16\n\n\nEXAMPLES\nhttps://www.reddit.com/domain/udrop.com/new/" }, "Upload.ee-h": { "link": "^(upload\\.ee/)(?:files/|gallery/\\d+/[^?]+\\?vid=)(\\d+).*", "loop": 1, "res": "=\"(https?://www.$1(?:image|download)/$2[^\"]+)", "img": "^(upload\\.ee/)(?:thumb|preview|files)(/.+\\.(?:jpe?g|a?png|gif|bmp))(\\.html)?$", "to": "$1image$2", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/130svfu/comment/jtd4cv9\n\nEXAMPLES\nhttps://www.upload.ee/?page=myfiles\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1360#11" }, "UploadBETA-h-p": { "useimg": 1, "link": "uploadbeta\\.com/share-picture/\\w+", "res": "Full Image Resolution: <a href=[\"']([^\"']+)", "img": "(uploadbeta\\.com/_s/upload/[^.]+\\.[a-z]{3,4}).*", "to": "$1", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/130svfu/comment/jnrcrmb\n\n\nEXAMPLES\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1360#11" }, "UploadDeImagens.com.br-h-p": { "link": "uploaddeimagens\\.com\\.br/imagens/\\w+", "res": "<a class=\"fancybox\" href=\"([^?\"]+)", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/130svfu/comment/jn8v5j7\n\nEXAMPLES\nhttps://www.reddit.com/domain/uploaddeimagens.com.br/new/" }, "UploadHouse-h": { "link": "^(.*)uploadhouse\\.com/imgs/\\d{8}/", "res": "value=\\\"\\[img\\](.+(?:jpe?g|a?png|gif|svgz?|webp|w?bmp|xbm|pict|j(?:if|fif?)))\\[/img\\]", "note": "destiny child\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1380#10\n\nEXAMPLES\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1360#11" }, "Uploadir-h": { "link": "uploadir\\.com/(\\d+/)(.*)", "loop": 1, "res": "<(?:div style=\"padding: 20px;\">|source)[^<s]+(?:<img src=\"|src=\")([^\"]+)", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/130svfu/comment/jn8v5j7\n\nEXAMPLES\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1360#11" }, "UrleBird_TikTok": { "link": "^urlebird\\.com/(?:[a-z]{2}/)?(?:video|song)/(?:[^-/]+-)*(\\d+)/.*", "res": ":\nconst media = $._.match(/=\"og:(?:vide|audi)o\" content=\"([^\"]+)/)?.[1]\nreturn media?.length ? [media+'#mp4', $._.match(/=\"og:description\" content=\"([^\"]+)/)[1]] : {loop:`//www.tiktok.com/embed/v2/${$[1]}`}", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/kz1q4td\nOLD\nhttps://www.reddit.com/r/imagus/comments/1abomvc/comment/kjtsk2u\nhttps://www.reddit.com/r/imagus/comments/fkv5o8/comment/fl3z7cx\n\n\n!!!\nВ зависимости от региона (IP) ТикТок может не показывать пользователю некоторые ролики. В этом случае фильтр будет выдавать ошибку - серый или красный спиннер. Иногда может помочь прокси.\n==\nDepending on the region (IP) TikTok may not show some clips to the user. In this case the sieve will give an error - gray or red spinner. Sometimes proxy can help.\n\n\nПРИМЕРЫ / EXAMPLES\nhttps://www.reddit.com/domain/urlebird.com/new/\nhttps://urlebird.com/videos/\nhttps://urlebird.com/search/?q=LIB\nhttps://urlebird.com/user/laurie.geller/" }, "Userapi_CDN": { "link": "sun\\d{1,2}-\\d{1,2}\\.userapi\\.com\\/\\w{7}\\/\\w{10}\\/\\w{5,6}\\/[\\w-]{11}\\.(?:jpe?g|png|bmp|gif)", "note": "Baton34V\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=1340#19\n\nEXAMPLES\nhttps://vrotmnen0gi.livejournal.com/3391084.html" }, "Userstyles": { "img": "^(userstyles\\.org/(?:auto_)?style_screenshot)(?:_thumbnail)?(s/\\d+[_-]after)(?:-thumbnail)?(\\.(?:jpe?g|png|gif)\\?r=\\d+)$", "to": "$1$2$3", "note": "Rodny\n\nEXAMPLES\nhttps://userstyles.org/styles/browse/youtube\nhttps://userstyles.org/styles/browse/NNM" }, "Utkonos.ru-s": { "link": "^utkonos\\.ru/item/\\d+", "url": "data:,$&", "res": ":\nconst x=new XMLHttpRequest();\nx.open('GET',$[0],false);\nx.send();\n$=JSON.parse(x.responseText.match(/id=\"ng-state\" type=\"application\\/json\">({.+?})<\\//)[1]);\n$=Object.values($).find(i=>i.b?.images)?.b.images||[];\nreturn $.map(i=>[['#'+i.original,i.large]])", "img": "^(scdn\\.utkonos\\.ru/resample/)webp/(\\d+)x\\d+(/photo/(\\d+)/(?:[a-f0-9_-]+|(\\d+)[A-Z])\\.[a-z]+)", "loop": 2, "to": ":\nif($[2]==='250'&&this.node.className===\"lu-product-card-image ng-star-inserted\")return 'https://www.utkonos.ru/item/'+($[5]||$[4])\nreturn '#'+$[1]+'0x0'+$[3]+'\\n'+$[1]+'900x900'+$[3]", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/m9t02fu\nOLD\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=100#13\n\n\nПРИМЕРЫ\nhttps://www.utkonos.ru/catalog/1808\nhttps://www.utkonos.ru/search/печенье%20юбилейное" }, "Vero": { "link": "^vero/\\?album(.*)", "url": "data:,$1", "res": ":\nreturn [...this.node.closest('div[class=\"slick-track\"]').children].map(i=>[[\"#\"+i.firstElementChild.src.match(/^[^_]+/),i.firstElementChild.src.replace(/_\\d+x\\d+/,\"_c1246x1246\")]])", "img": "^(?:(d1dpu3msttfsqg\\.cloudfront\\.net/[a-f0-9-]{36}/[a-f0-9-]{36})_\\d+x\\d+(\\.[a-z]{3,4})|(d2hzlifut58gpa\\.cloudfront\\.net/[a-f0-9-]{36}/[a-f0-9-]{36}/)p0)", "loop": 2, "to": ":\nreturn this.node.alt === \"Album image\" ? '//vero/?album'+$[0] : $[3] ? $[3]+'v0#mp4' : `#${$[1]}\\n${$[1]}_c1246x1246${$[2]}`", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/130svfu/comment/joowxsu\n\nEXAMPLES\nhttps://vero.co/zacksnyder/posts/photos\nhttps://vero.co/zacksnyder/posts/videos" }, "VFL.ru-h": { "link": "^vfl\\.ru/fotos/(\\w{8})(\\d+)(?:.*)\\.html$", "res": "(//images\\.vfl\\.ru/ii/\\d+/\\w{8}/\\d+\\.(?:jpe?g|png|bmp|gif))", "img": "(images\\.vfl\\.ru\\/ii\\/\\d+\\/\\w{8}\\/\\d+)_[ms](\\.(?:jpe?g|png|bmp|gif))", "to": "$1$2", "note": "Baton34V\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=860#20\nOLD\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=860#6\n\n\nПРИМЕРЫ\nhttps://rutracker.org/forum/viewtopic.php?t=5673439\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=37201&start=3540&limit=1" }, "VG.no_TV-m": { "link": "^tv\\.vg\\.no/video/\\d+/", "res": ":\nconst o = JSON.parse($._.match(/window.ASSET = ({.+?);/)[1]).streamUrls\nif(o.mp4){\nreturn o.mp4\n}else{\nthis.TRG.IMGS_ext_data = [\n '//' + 'data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1920\" height=\"1080\"></svg>',\n `<imagus-extension type=\"videojs\" url=\"${o.hls}\"></imagus-extension>`\n]\nreturn {loop:'imagus://extension'}\n}", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/c9zlcm/comment/jrxjw5n\n\nEXAMPLES\nhttps://tv.vg.no/kategori/1/nyheter\nhttps://tv.vg.no/kategori/1/nyheter?popup_id=66a8157a0747260012dcb31d" }, "Vidble-h": { "useimg": 1, "link": "^(vidble\\.com/)(?:(?:show|explore[^/]*|album)/|watch\\?v=)([\\da-zA-Z]+).*", "res": ":\nvar x = $._.match(RegExp(\"src='/[\\\\da-zA-Z]+(_[^.]*)?\\\\.[^']+\", 'g')), t = $._.match(/<h2[^>]*>([^<]+)/), l = 'http://' + $[1];\nreturn x ? x.map(function(i, n) {return ['#' + l + i.replace(/_[^.]+/, ''), !n && t && t[1]]}) : x", "img": "^(vidble\\.com/[\\dA-Za-z]+)(?:_[^.]+)?\\.", "to": "#$1.", "note": "EXAMPLES\nhttps://www.reddit.com/domain/vidble.com/new/" }, "Vimeo-h": { "link": "^(\\w+\\.)?vimeo\\.com\\/(?!($|for-|user\\d|groups(?!.*\\/videos\\/\\d)|.*?\\/(collections|likes)|((?!\\d+\\/?($|\\?))[^\\/]*?)?(\\/?$|\\?|#)|channels(?!\\/(.*?\\/\\d+))|(((categories|showcase|videoschool|watch|live|log.?in|faq|join|blog|pro|s|help|staff|hc|stock|solutions|settings|features|enterprise|vicdigital|ondemand|store|up(grade|load)|create|cart|ott|site|domain|jobs|about|terms|privacy|dmca|cookie_policy))($|\\/|\\?|#)))).*", "loop": 1, "res": ":\nlet url;\nconst json = $._.match(/^\\{/);\nif (json) {\n return parseConfig($._);\n}\n\nconst config = $._.match(/config_url\":\".*?\"/);\nif (config) {\n url = config[0].replace(/config_url\":\"(.*)?\"/, '$1').replace(/\\\\\\//g, '/');\n return url;\n}\n\nconst vUrl = $._.match(/<meta property=\"og:video:url\" content=\"(.+?)\"/)?.[1];\nif (vUrl) {\n return vUrl.replace(/&/g, '&');\n}\n\nconst embedConfig = $._.match(/{.+\"streams\":\\[.*?\\].+}/);\nif (embedConfig) {\n return parseConfig(embedConfig[0]);\n}\n\nlet chanVidID = $._.match(/ content=\"https:\\/\\/vimeo\\.com\\/channels\\/.*?\\/\\d+\"/);\nif (chanVidID) {\n chanVidID = chanVidID[0].replace(/.*\\/channels\\/.*?\\/(\\d+)\"/, '$1');\n const regex = new RegExp(`data-config-url=\".*?\\\\/${chanVidID}.*?\"`) \n const chanVidConfig = $._.match(regex);\n if (chanVidConfig) {\n url = chanVidConfig[0].replace(/data-config-url=\"(.*?)\"/, '$1').replace(/&/g, '&');\n return url;\n }\n}\n\nconst id = $[0].match(/\\/(\\d+)(\\?|\\/|$)/)?.[1];\nconst pUrl = `https://player.vimeo.com/video/${id}?autoplay=1`;\nif (id && pUrl != $[0]) {\n return pUrl;\n}\n\nfunction parseConfig(config) {\n config = JSON.parse(config);\n\n const qualities = config.request.files.progressive;\n if (qualities?.length) {\n return selectQuality(qualities);\n }\n\n const cdns = config.request.files.hls.cdns;\n const cdn = cdns.akfire_interconnect_quic || cdns.google_mediacdn;\n return cdn.url;\n}\n\nfunction selectQuality(qualities) {\n let res = qualities[0].width;\n let url = qualities[0].url;\n for (let i = 0; i < qualities.length; i++) {\n if (qualities[i].width > res) {\n res = qualities[i].width;\n url = qualities[i].url;\n }\n }\n\n return url;\n}", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/nswnd3k\nOLD\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=2080#13\nhttps://www.reddit.com/r/imagus/comments/j2p0ng/a_sieve_for_vimeo_videos/\n\n\nПРИМЕРЫ / EXAMPLES\nhttps://www.reddit.com/domain/vimeo.com/new/\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1360#11" }, "Vipr|Vipergirls-h-x-p": { "link": "^(vipr\\.im/)([^/.]+\\.jpe?g/[^?#]+).*", "url": "$1$2", "res": ":\nlet meta = document.querySelector('head > meta[name=\"referrer\"]');\nif (!meta) {\n meta = document.createElement('meta');\n meta.name = 'referrer';\n meta.content = 'same-origin';\n document.getElementsByTagName('head')[0].appendChild(meta);\n} else if (meta.attributes.content.value !== 'same-origin') {\n meta.attributes.content.value = 'same-origin';\n}\nlet url = ($._.match(/src=\"(https?:\\/\\/[^\"]+)\" (?:\\w+=\"[^\"]+\"\\s+)*?(?:class=\"pic|id=\"[^\"]+\"\\s*>)/) || [])[1];\nreturn [url];\n", "img": "^i\\d\\.(vipr\\.im\\/)th\\/\\d{5}\\/(\\w+)\\.jpe?g$", "note": "imqswt\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/mhcy2yi\nOLD\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=2900#12\n\n\nEXAMPLES\nhttps://vipergirls.to/threads/5829954-MARLENE-HOLY-MARL-Jan-14-2021-X57-8256px\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1369&limit=1&m=1#1" }, "VixenMediaGroup-x-q-p": { "link": "(vixen|tushy|tushyraw|blacked|blackedraw|slayed|deeper|milfy|wifey)\\.com/videos/.+", "url": "data:,$&", "res": ":\nconst max_resolution = 900;\n\nconst req = new XMLHttpRequest();\nreq.open('GET', $[0], false);\nreq.send();\n$._=req.responseText;\nconst vidId = $._.match(/(?:videoTokenId|newId)\":\"(?<id>\\d+)/)?.groups?.id;\nif (!vidId) return;\n\nreq.open('POST', `https://www.${$[1]}.com/graphql`, false);\nreq.setRequestHeader('Content-Type', 'application/json');\nreq.send(\n `{\"operationName\":\"getToken\",\"variables\":{\"videoId\":\"${vidId}\",\"device\":\"trailer\"},\"query\":\"query getToken($videoId: ID!, $device: Device!) {generateVideoToken(input: {videoId: $videoId, device: $device}) {p270 {token}p360 {token}p480 {token}p720 {token}p1080 {token}p2160 {token}}}\"}`\n);\nif (req.status !== 200) return;\n\nlet streams = {};\ntry { streams = JSON.parse(req.responseText)?.data?.generateVideoToken;} catch (e) { return; }\n\nconst trailers = Object.keys(streams)\n .map(s => ({ res: Number(s.replace(/\\D/g, '')), url: streams[s]?.token }))\n .filter(a => a.res <= max_resolution)\n .sort((a, b) => a.res - b.res);\n\nreturn trailers.pop()?.url || null;", "note": "numso531\nhttps://hastebin.com/share/nokajowawa.swift\nOLD\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/ldwp0kw\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1943&limit=1&m=1#1\n\n\nSUPPORTED SITES:\nblacked.com\nblackedraw.com\ndeeper.com\nmilfy.com\nslayed.com\ntushy.com\ntushyraw.com\nvixen.com\n\n!!!\nChange max_resolution to your max preferred resolution -\nconst max_resolution = \n1080 will result in 1080p video\n900 will result in 720p video\n\nEXAMPLES\nhttps://www.blackedraw.com/videos?search=cuckold&sort=rating\nhttps://www.deeper.com/videos?search=big+tits\nhttps://www.slayed.com/videos?search=natural+tits\nhttps://www.milfy.com/videos?search=Doggystyle\nhttps://www.vixen.com/videos?search=cow+girl" }, "VK-h": { "link": "^(?:vk\\.com/(?:([\\w.]+)\\?pfp_thumb$|(doc[0-9_]+\\?hash=)|(video_ext\\.php\\?oid=-?\\d+&id=\\d+)|(album-?[0-9_]+)|[\\w-]+\\?(?:own=1&)?(z=photo-|reply=)|(video-?\\d+_\\d+)\\?list=).*|vk_album/(?:([^!]+)!)?(.+)|vk_gallery/([^!]+)!(.+))", "url": ": (()=>{this.enable_on_video = true /*If false, VK_video-q also needs to be disabled*/; const t=this.node, n=t.IMGS_TRG||t, l_id=$[4]||$[7]||!n.href&&(n.closest('div[class^=\"ui_gallery__inner\"]')?.querySelector('div[data-list-id]')?.getAttribute('data-list-id')||n.closest('.post_info')?.querySelector('div[class^=\"PostBottomAction PostBottomAction--transparent PostButtonReactions\"]')?.getAttribute('data-reaction-target-object')), p_id=$[8]||!n.href&&(n.closest('div[class^=\"ui_gallery__inner\"]')?.querySelector('div[data-photo-id]')?.getAttribute('data-photo-id')||n.parentNode?.href?.match(/photo(-\\d+_\\d+)/)?.[1]);if(!this.enable_on_video&&($[3]||$[6]))throw '';return $[1] ? '//vk.com/'+$[1] : $[6]&&!n.closest('.vkuiCarouselBase__slide')&&!n.closest('.vkitBaseGallery__slide--JhgoZ')&&(/^vkitMediaGridImage__image--\\w+ vkitOverlay__root--\\w+$/.test(n.getAttribute('class'))||n.parentNode?.getAttribute('data-video')||n.getAttribute('data-list'))||$[9] ? 'data:,'+($[6]||$[9]) : !$[2]&&!$[3]&&!$[5]&&!n.getAttribute('data-list')&&n.parentNode?.className!=='lnk'&&n.className!=='MediaGrid__imageElement'&&($[6]||l_id) ? 'https://vk.com/al_photos.php?act=show :act=show&al=1'+(l_id?'&list='+l_id:'')+(p_id?'&photo='+p_id:'') : $[0]})()", "res": ":\nconst max_images = 300 // Maximum number of images in album. Lower number loads faster.\n\nlet vk_data = this.vk_data || {}, n=this.node, m;\ndelete this.vk_data;\nconst getVid=u=>{\nlet x=new XMLHttpRequest()\nx.open('POST','https://vk.com/al_video.php?act=show',false);\nx.setRequestHeader('content-type','application/x-www-form-urlencoded');\nx.setRequestHeader('x-requested-with','XMLHttpRequest');\nx.send(`act=show&al=1&video=${u.match(/\\/video([\\d_-]+)/)[1]}`);\nx=JSON.parse(x.responseText).payload[1][4].player?.params?.[0];\nreturn Object.entries(x).filter(i=>/^url\\d+/.test(i[0])).pop()[1]+'#mp4'\n}\nif($[1]){\nconst t=[...$._.matchAll(/\"photo_\\d+\":\"(https:\\\\\\/\\\\\\/sun[\\-0-9]+\\.userapi\\.com\\\\\\/(?:s\\\\\\/v1\\\\\\/i\\w\\d\\\\\\/[^.]+\\.jpg\\?quality=\\d+&crop=(?:\\d+,?)+&as=(?:(\\d+x\\d+),?)+&ava=\\d&u=[^&]+&cs=|impf\\\\\\/[^\"]+))[^\"]*/g)].pop();\nreturn t?.length?t[2]?t[1].replace(/\\\\/g,'')+t[2]:t[1]:''\n}\nif($[2])return $._.match(/\"docUrl\":\"([^\"]+)/)?.[1].replace(/\\\\/g,'')\nif($[9]&&$.base[0]==='d'){\nconst m=$[10].split('!'), n=m.indexOf($[9]);\nreturn {\"\":m.map(i=>[/\\/video/.test(i)?getVid(i):i.replace(/=(\\d+x\\d+)$/,'='+i.match(/&as=(\\d+x\\d+,?)+/)?.[1])]),idx:n<0?0:n}\n}\nif(m=$[6]&&(/^vkitImageSingle__image--\\w+ vkitOverlay__root--\\w+$/.test(n.getAttribute('class'))||/^vkitMediaGridImage__image--\\w+ vkitOverlay__root--\\w+$/.test(n.getAttribute('class')))&&n.closest('[class=\"vkitBaseGallery__layer--JNMtq\"],[class=\"vkitMediaGrid__root--FEt3Y vkitMediaGridTwoRows__root--ItwHW\"],[class=\"vkuiCarouselBase__layer\"],[class=\"post_info\"]')){\nm=[...m.querySelectorAll('[class^=\"vkitImageSingle__image--\"][class*=\"vkitOverlay__root--\"],[class^=\"vkitMediaGridImage__image--\"][class*=\"vkitOverlay__root--\"]')].sort((a,b)=>/\\/video/.test(a.parentNode?.href) ? 0 : -1)\nif(m.length>1)return m.map(i=>[/\\/video/.test(i.parentNode?.href)?getVid(i.parentNode?.href):i.src?.replace(/=(\\d+x\\d+)$/,'='+i.src.match(/&as=(\\d+x\\d+,?)+/)?.[1])])\n}\nif($[6]&&$.base[0]==='d')return {loop:$[0].replace('?','&')}\nif(!$[7]&&$[8]&&!vk_data.album?.length){\n$=JSON.parse($._.slice($._.indexOf('{'))).payload[1][3].find(i=>$[8]===i.id);\nreturn $&&($.w_src||$.z_src||$.y_src||$.x_src)\n}\nif($[3]||$[4]||$[6]||$[7]||$[8]){\nlet s, has_video=false;\nvk_data.vids=vk_data.vids||[...n.closest('.post_content,post_info')?.querySelectorAll('div[class^=\"vkitOverlay__root--\"]>a[data-video],a[class^=\"vkitInteractiveWrapper__root--\"][href*=\"video\"]')||[]];\nvk_data.vid_length=vk_data.vid_length||vk_data.vids.length;\nvk_data.vid_num=vk_data.vid_num||0;\nvk_data.num;\nvk_data.gallery_length=vk_data.gallery_length||n.closest('.post_content')?.querySelectorAll('div[class^=\"PhotoPrimaryAttachment__\"]')?.length;\nvk_data.album=vk_data.album||[];\nvk_data.loop_stop=vk_data.loop_stop||0;\nvk_data.loop_stop++;\nif(this.enable_on_video&&$[3]||($[6]&&(n.getAttribute('data-list')||n.parentNode?.getAttribute('data-video')||n.parentNode?.className==='lnk'||n.className==='MediaGrid__imageElement'))&&!/al_photos\\.php/.test($.url[0])){\nhas_video=true;\n$=JSON.parse($._.match(/var playerParams = ({.+?});/)?.[1]||$._.match(/'al_video\\.php[^[]+(.+])\\)/)?.[1]||'{}');\n$=($[4]?.player?.params||$.params)?.[0]||[];\nif($.extra_data)return {loop:'https://www.youtube.com/embed/'+$.extra_data};\n$=Object.entries($).filter(i=>/^url\\d+$/.test(i[0])).map(i=>i[1]).reverse();\nif($?.length)vk_data.album.push([['#'+$[0]+'#mp4',$[Math.floor($.length/2)]+'#mp4']])\n}else{\nconst l=$[4]||$[7], src=$[8];\n$=JSON.parse($._.slice($._.indexOf('{'))).payload[1];\ns=$[1];\n$=$[3]||[];\nvk_data.num=n.nodeName==='IMG'&&$.findIndex(i=>i.id===src);\nconst id=$.length?$[$.length-1].id:'';\n$=$.flatMap((i,n)=>!vk_data.album.some(x=>x[0][1]===(i.z_src||i.y_src||i.x_src))?[[[(i.w_src?'#'+i.w_src:''),(i.z_src||i.y_src||i.x_src)]]]:[]);\nif(vk_data.gallery_length===1)$=[$[4]];\nvk_data.album.push(...$);\nif((!vk_data.gallery_length||vk_data.gallery_length>1)&&vk_data.album.length<s&&vk_data.album.length<max_images&&$.length>0&&vk_data.loop_stop<150){\nthis.vk_data=vk_data;\nreturn {loop:'//vk_album/'+(l?l+'!':'')+id}}\n}\nconst vid=(vk_data.vids[vk_data.vid_num]?.getAttribute('data-video')||vk_data.vids[vk_data.vid_num]?.getAttribute('href')?.match(/\\/video([\\w-]+)/)?.[1])?.split('_');\nvk_data.vid_num++;\nif(this.enable_on_video&&vid){\nthis.vk_data=vk_data;\nreturn {loop:'https://vk.com/video_ext.php?oid='+vid[0]+'&id='+vid[1]}\n}\n$=vk_data.album;\nreturn vk_data.num ? {\"\":$,idx:vk_data.num} : $\n}\n$=JSON.parse($._.match(/{\"zFields\"[^\\)]+/)[0])?.zOpts?.temp;\nreturn $&&($.w||$.w_||$.z||$.z_||$.y||$.y_||$.x||$.x_) ? [[[($.w||$.w_)&&'#'+($.w||$.w_),($.z||$.z_||$.y||$.y_||$.x||$.x_)?.[0]]]] : !1", "img": "^(sun[\\-0-9]+\\.userapi\\.com/)(?:.+?size=[\\dx]+&quality=\\d+&sign=\\w+|([^.]+\\.jpg\\?)(quality=\\d+(?:&crop=(?:\\d+,?)+)?(?:&blur=(?:\\d+,?)+)?&as=(?:(\\d+x\\d+),?)+&(?:(?:ava=\\d|from=\\w+)&(?:u=[^&]+&)?cs|sign)=|size=\\d+x\\d+&quality=\\d+&crop=)).*", "loop": 2, "to": ":\nvar y, l, x=this.node, p=x&&x.parentNode;\n\nif (location.hostname==='vk.com'&&x) {\n if ((y=x.getAttribute('onclick')||p.getAttribute('onclick')) && y.indexOf('showPhoto(')>0) {\n x=y.indexOf('temp')>0&&JSON.parse(y.match(/(\\{.+\\})/)[0]).temp;\n x=x&&(x.w ? '#' + x.w + '\\n' : '') + (x.z || x.y || x.x);\n if(x?.length){\n return x;\n }\n y=y.match(/showPhoto\\('([^']+)',\\s*'([^']+)/);\n return /\\/rev$/.test(y[2]) ? '//vk_album/'+y[1] : location.hostname+location.pathname+(location.search==='?own=1'?location.search+'&':'?')+'z=photo'+y[1]+'/'+y[2];\n }\n if(y=p.getAttribute('data-photo-id')){\n l=p.getAttribute('data-list-id');\n if(p.parentNode?.className===\"PhotoPrimaryAttachment PhotoPrimaryAttachment--thinBorder PhotoPrimaryAttachment--inCarousel\"){\n return '//vk_album/'+l+'!'+y;\n }\n return location.hostname+location.pathname+'?z=photo'+y+(l?'/'+l:'');\n }\nif(y=p.href?.match(/photo(-\\d+_\\d+)/)?.[1]){\n if(l=(!/^vkitImageSingle__image--\\w+ vkitOverlay__root--\\w+$/.test(x.getAttribute('class'))||p.closest('div[class=\"vkuiCarouselBase__layer\"],.post_info').querySelector('a[data-video]'))&&x.closest('.post_info')?.querySelector('div[class^=\"PostBottomAction PostBottomAction--transparent PostButtonReactions\"]')?.getAttribute('data-reaction-target-object')){\n return '//vk_album/'+l+'!'+y;\n }\n }\n if(y=(/^vkitImageSingle__image--\\w+ vkitOverlay__root--\\w+$/.test(x.getAttribute('class'))||/^vkitMediaGridImage__image--\\w+ vkitOverlay__root--\\w+$/.test(x.getAttribute('class')))&&x.closest('[class^=\"vkitBaseGallery__layer--\"],[class^=\"vkitMediaGrid__root--\"][class*=\"vkitMediaGridTwoRows__root--\"],[class=\"vkuiCarouselBase__layer\"],[class=\"post_info\"]')){\n y=[...y.querySelectorAll('[class^=\"vkitImageSingle__image--\"],[class^=\"vkitMediaGridImage__image--\"][class*=\"vkitOverlay__root--\"]')].map(i=>/\\/video/.test(i.parentNode?.href)?i.parentNode?.href:i.src);\nif(y.length>1)return 'vk_gallery/https://'+$[0]+'!'+y.join('!')\n }\n if(y=p.getAttribute('id')==='pv_photo'){\n y=p.closest('[class=\"clear_fix pv_photo_wrap\"]')?.querySelector('a[class^=\"like_btn share _share\"]');\n l=y?.getAttribute('onclick')?.match(/'list':'([^']+)/)?.[1];\n y=y?.getAttribute('onmouseover')?.match(/this, 'photo([^']+)/)?.[1];\n if(l&&y)return '//vk_album/'+l+'!'+y;\n }\n}\nreturn $[4] ? $[1]+$[2]+$[3]+$[4] : $[0];", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/nd27k0o\nOLD\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/n8mtkah\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/n8marj8\n\n\n\n!!!\n- Размещать ПЕРЕД фильтром [wordpress].\n- Иногда может потребоваться повторное наведение курсора.\n- Отключить работу фильтра на видео (оставить только фото) - this.enable_on_video = false (второе поле сверху).\n- Просмотр альбомов (несколько изображений в публикации) в группе возможен при наведении на любое фото альбома. Если в альбоме присутствует видео, оно будет в конце альбома.\n- На странице альбомов просмотр всего альбома также возможен при наведении на его миниатюру.\n- Для более комфортного просмотра альбомов рекомендуется создать слеюущее правило для uBO (Ublock Origin):\nvk.com##.description.photos_album_description\n- NB! - VK очень крупный и сложный портал, который часто меняет свой код. Фильтр находится в состоянии постоянной разработки, поэтому нормально, когда что-то может не работать.\n\n\nПРИМЕРЫ\nhttps://vk.com/leprazo\nhttps://vk.com/wall-41437811_2301950?reply=2301954\nhttps://vk.com/photos-141834632?act=comments\nКоллаж в ленте группы:\nhttps://vk.com/wall-87292497_8451770\nhttps://vk.com/wall-636950_753196\nВсе альбомы группы:\nhttps://vk.com/albums-141834632\nhttps://vk.com/id845231355?from=search&z=albums845231355\nВидео в коллаже:\nhttps://vk.com/wall-6980140_33052\nhttps://vk.com/wall313466799_110403" }, "VK_Play": { "link": "^live\\.vk(?:play|video)\\.ru(/\\w+)(/(record|clip)/[a-f0-9-]+|$).*", "url": ": `https://api.live.vkvideo.ru/v1/${$[3]==='clip'?'channel'+$[1]:'blog'+$[1]+'/public_video_stream'}${$[2]}`", "res": ":\nlet data = JSON.parse($._).data;\nif(!data)return '';\nif($[2]){\ndata = data[$[3]]?.data[0]?.playerUrls?.filter(i=>i.url);\nif(!data)return '';\nconst high = (data.find(i=>i.type==='quad_hd')||data.find(i=>i.type==='ultra_hd')||data.find(i=>i.type==='full_hd')||data.find(i=>i.type==='high'))?.url||'';\nconst low = (data.find(i=>i.type==='medium')||data.find(i=>i.type==='low')||data.find(i=>i.type==='lowest')||data.find(i=>i.type==='tiny'))?.url||'';\nreturn high||low ? [[[high&&'#'+high+'#mp4',low?low+'#mp4':'']]] : ''\n}\nconst url = data[0]?.playerUrls?.find(i=>i.type==='live_hls')?.url;\nthis.TRG.IMGS_ext_data = ['//data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"640\" height=\"360\"></svg>',`<imagus-extension type=\"videojs\" url=\"${url}\"></imagus-extension>`];\nreturn url ? {loop:'imagus://extension'} : ''", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/lz7t0u7\nOLD\nhttps://www.reddit.com/r/imagus/comments/1goqedt/comment/lwqq7x0\n\n\nПРИМЕРЫ\nhttps://live.vkplay.ru/\nhttps://live.vkplay.ru/legion/records\nhttps://live.vkplay.ru/citizen_play/video\nhttps://live.vkplay.ru/sky_line/clips\nhttps://live.vkplay.ru/sh0tnik/record/524456e5-0f2b-4142-87db-6fdafca758e9/records" }, "VK_video-h-q": { "link": "^(?:\\w+\\.)?(vk(?:video)?\\.(?:com|ru)/)(?:(?:playlist/[\\w-]+/)?video(?:_ext\\.php\\?oid=)?|(?:clips/[a-z]+\\?z=)?clip)(-?\\d+)(?:_|&id=)(\\d+)(&list=\\w+)?.*", "url": ": /vk(?:video)?\\.(?:com|ru)$/.test(location.hostname)&&window.top===window.self ? 'data:,'+$[0] : `https://${$[1]}video_ext.php?oid=${$[2]}&id=${$[3]}`", "res": ":\nconst max_resolution = 1080\n\nif($.base[0]==='d'){\nconst x=new XMLHttpRequest()\nx.open('POST',`https://${$[1]}al_video.php?act=show`,false)\nx.setRequestHeader('content-type','application/x-www-form-urlencoded')\nx.setRequestHeader('x-requested-with','XMLHttpRequest')\nx.send(`act=show&al=1${$[4]||''}&video=${$[2]}_${$[3]}`)\n$._=x.responseText\n}\nconst params = ($.base[0]!=='d' ? JSON.parse($._.match(/playerParams = ({.+?});/)?.[1]||'{}') : JSON.parse($._.slice($._.indexOf('{'))).payload[1][4]?.player)?.params[0]\nconst max_res_url = (i) => i[Object.keys(i).reduce((a, c) => (/^url\\d+$/.test(c) && Number(c.slice(3)) <= max_resolution && Number(c.slice(3)) > Number(a.slice(3))) ? c : a, '')]\nreturn !/^ya(?:ndex)?\\./.test(location.hostname) && Array.isArray(params) && Object.keys(params).some(i=>/^url\\d+$/.test(i)) ? [ max_res_url(params) + '#mp4', params.md_title ] : {loop:params?.hls_live||params?.hls||params?.dash_ondemand||params?.hls_ondemand||$._.match(/src=\\\\\"([^\"]+)/)?.[1].replace(/\\\\/g,'')||''}", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/o41n8nw\nOLD\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/nn7hikb\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/nd86k31\n\n\n\n!!!\n- данный фильтр должен располагаться ПОСЛЕ фильтра VK-h;\n- фильтр работает только для ЗАЛОГИНЕННЫХ пользователей;\n- для изм размера видео - заменить разрешение в параметре (480/720/1080/2160): const max_resolution;\n- раздел \"Клипы\" (vkvideo.ru/@[user]/clips) и галерея с видео пользователя (vk.com/video/@[user]) на данный момент не поддерживаются.\n\n\nПРИМЕРЫ\nhttps://vk.com/video/@leprazo\nhttps://vk.com/clips/leprazo\nhttps://vkvideo.ru/@tennisprimesport/all\nвнешние ссылки:\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1360#11" }, "Vogue-p": { "link": "^(?:vogue\\.com/video/.+|voguegallery/(.*)$)", "url": ": $[1]?'data:'+$[1]:$[0]", "res": ":\nconst visible_gallery_image_first = true // <- Set to true for the visible image to be the first image in the album, false to keep the first gallery image as the first album image.\nconst a = visible_gallery_image_first\nif(!$[1]){\nconst o=JSON.parse(($._.match(/__PRELOADED_STATE__ = ({.+?});/)||[,'{}'])[1]).transformed?.video\nif(!o)return null\nreturn [o.sources.mp4.src,o.title+' | '+o.description]\n}else{try{\nlet m = Object.values(JSON.parse([...document.scripts].find(i=>RegExp(`${$[1]}`).test(i.textContent)).textContent.match(/^[^{]+({.+?});/)[1]).transformed.article.body).find(i=>i[1]?.props?.contentType==='gallery')[1].props.slides.map(i=>[['#'+i.image.sources.md.url.replace(/\\/w_\\d+[^/]+/,''),i.image.sources.md.url],i.dangerousHed])\nif(a)m=m.concat(m.splice(0,m.findIndex(i=>RegExp(`${$[1]}`).test(i[0]))))\nreturn m\n}catch{\nreturn this.node.src?.replace(/\\/(?:4:3\\/[^/]+|master\\/w_[^/]+)/,'/master')\n}\n}", "img": "^(?:(images\\.vogue\\.it/photovogue/[^_]+_)admin-thumbnail|(assets\\.vogue\\.com/photos/([^/]+)/.+)|vogue\\.com/(?:photovogue/photos|article)/.*|dwgyu36up6iuz\\.cloudfront\\.net/.+)", "ci": 2, "loop": 2, "to": ":\nreturn $[3]&&RegExp(`\"slides\":\\\\[.+?\"id\":\"${$[3]}\",\"`).test(document.body.textContent)?'//voguegallery/'+$[3]:$[1]?$[1]+'gallery':$[2]?$[2].replace(/\\/(?:4:3\\/[^/]+|master\\/w_[^/]+)/,'/master'):/cloudfront/.test($[0])&&/\\/video/.test(this.node.baseURI)?this.node.closest(`div[data-in-view='{\"pattern\":\"SummaryItem\"}']`)?.querySelector('a[href^=\"https://www.vogue.com/video/\"]')?.href??$[0]:this.node.src?.replace('admin-thumbnail','gallery')??this.node.parentNode.parentNode.parentNode.querySelector('img[src]')?.src?.replace(/\\/(?:4:3\\/[^/]+|master\\/w_[^/]+)/,'/master')??''", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/130svfu/comment/jvkro5n\n\nEXAMPLES\nhttps://www.vogue.com/video\nhttps://www.vogue.com/beauty/skin\nhttps://www.vogue.com/photovogue/photos/best\n(альбом)\nhttps://www.vogue.com/article/serena-williams-pregnant-met-gala-2023" }, "Vprok.ru-s": { "link": "^(zoo\\.)?vprok\\.ru/product/[\\w-]+", "res": ":\nconst data = JSON.parse($._.match(/__NEXT_DATA__[^{]+(.+)<\\/script>/)[1]);\nconst res = data.props.pageProps.initialStore.productPage.product.images.map(i => [i.url.replace('<SIZE>', 'x1400'), '']);\nif (res.length > 0) {\n res[0][1] = data.props.pageProps.initialStore.productPage.product.description;\n}\n\nreturn res.length ? res : false;", "img": "^(media\\.vprok\\.ru/.+)/x\\d+/(.+)", "to": "$1/x1400/$2", "note": "hababr\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=2120#10\nOLD\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1680#2\n\n!!!\nКурсор нужно наводить на название товара (для показа всех фото товара).\n\nПРИМЕРЫ\nhttps://zoo.vprok.ru/catalog/1571/suhoy-korm\nhttps://www.vprok.ru/catalog/1532/chay?sort=price_asc" }, "vsco-x": { "img": "^(?:i(?:m(?:age(?:-aws[\\w-]+)?)?)?)(\\.vsco\\.co/)(?:[^/]{1,23}/)*?([\\da-f]{24}).*", "to": "//i$1$2", "note": "!!!\nВнешние ссылки на галереи не работают.\n==\nExternal links to galleries does not work.\n\n\nEXAMPLES\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1360#11" }, "VseInstrumenti.ru-s": { "link": "^(?:\\w+\\.)?(vseinstrumenti\\.ru)\\/product\\/", "url": ": (location.hostname.endsWith($[1])?'data:,':'')+$[0]", "res": ":\nif($.base[0]==='d'){\nconst x=new XMLHttpRequest();\nx.open('GET',$[0],false);\nx.send();\n$._=x.responseText;\n}\nconst res = [];\n\nconst data = JSON.parse(/id=\"__NUXT_DATA__\">(\\[.+?\\])<\\//.exec($._)[1]);\nconst guid = data.find(i=>/^(?:\\w+-){4}\\w+$/.test(i));\nconst images = data.filter(i=>/images\\/goods\\/.+\\/96x84\\//.test(i));\n\ntry {\n const custImages = JSON.parse(/customerImages:\\s*(\\[.+?\\])/.exec(data)[1]);\n images.push(...custImages);\n} catch (error) {}\n\n\nfor (let img of images) {\n res.push([img.replace(/\\/\\d+x\\d+\\//, '/1200x800/')]);\n}\n\ntry {\n let i = 1;\n function getReviews(){\n const x = new XMLHttpRequest();\n x.open('GET', `https://bff.vseinstrumenti.ru/api/v1/reviews/group-products?sortBy=createdAt&sortDirection=desc&itemsPerPage=40&page=${i}&productGuid=${guid}`, false);\n x.withCredentials = true;\n x.send();\n const info = JSON.parse(x.responseText);\n\n for (let r of info.reviews) {\n if(!r.imagesV2&&!r.videos) continue;\n const text = [r.productRating + '⭐'];\n if (r.content.advantages) text.push('👍🏻 ' + r.content.advantages);\n if (r.content.disadvantages) text.push('👎🏻 ' + r.content.disadvantages);\n if (r.content.comment) text.push(r.content.comment);\n if (r.content.reasonToBuy) text.push(r.content.reasonToBuy);\n if(r.imagesV2)for (const img of r.imagesV2) {\n res.push(['https://cdn.vseinstrumenti.ru'+img.url.replace('{width}x{height}', '1200x800'), text.join(' | ')]);\n }\n if(r.videos)for (const vid of r.videos) {\n res.push([vid.url.replace(/(\\.mp4).*/,'$1'), text.join(' | ')]);\n }\n }\ni++;\nif(info.reviews.length===40&&i<5)getReviews();\n}\ngetReviews();\n} catch (error) {\n console.error(error);\n}\n\nreturn res;", "img": "^(cdn\\.vseinstrumenti\\.ru/images/(?:responses|goods)/.+)/\\d+x\\d+/(.+\\.jpg)", "to": "$1/1200x800/$2\n", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/mv28g3f\nOLD\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1960#17\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=2680#6\n\n!!!\nФильтр поддерживает также показ фото и видео покупателей.\n\nПРИМЕРЫ\nhttps://www.vseinstrumenti.ru/category/akkumulyatornye-dreli-shurupoverty-15/\nhttps://bryansk.vseinstrumenti.ru/category/schetchiki-vody-6935/?asc=asc&orderby=price" }, "Vsemayki.ru-s": { "link": "^vsemayki\\.ru/product/.+", "res": ":\n$=JSON.parse($._.match(/\"__NEXT_DATA__\" type=\"application\\/json\">(.+?)<\\/script/)[1]).props.initialReduxState.product.activeVariant.sides;\nreturn $.map(i=>[['#'+i.big.replace('500.','700.'),i.big]])", "img": "^(storage\\.vsemayki\\.ru/images/(?:\\d+/)+previews/(?:[^_]+_)+)\\d+\\.", "to": "#$1700.\n$1500.", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/m9m5f7p\nOLD\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/l6ahcr8\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3760#11\n\n\nПРИМЕРЫ\nhttps://www.vsemayki.ru/\nhttps://www.vsemayki.ru/catalog/Mayki_games/metal_gear" }, "Wallhaven-g": { "link": "^(wallhaven\\.cc/)w/(([\\da-z]{2})[\\da-z]{4}).*", "img": "^th\\.(wallhaven\\.cc/)[^/]+/\\w\\w/(([\\da-z]{2})[\\da-z]{4}).*", "to": "w.$1full/$3/wallhaven-$2.#jpg png#", "note": "EXAMPLES\nhttps://wallhaven.cc/random\nhttps://wallhaven.cc/search?q=green&categories=110&purity=100&sorting=random&order=desc&seed=slzFfC&page=2" }, "WallHere-g": { "link": "^(wallhere\\.com/)\\w\\w/(wallpaper)/(\\d+).*", "img": "^c\\.(wallhere\\.com/)photos/\\w\\w/\\w\\w/([^.]+)-(\\d+).*", "to": "get.$1photo/$2-$3.jpg", "note": "EXAMPLES\nhttps://wallhere.com/en/random\nhttps://wallhere.com/en/wallpapers?q=adam" }, "Walmart-s-p": { "link": "^walmart.com/ip/.+/\\d+", "res": ":\nconst res = [];\nconst images = JSON.parse(/\"allImages\":\\s*(\\[.+?\\])/.exec($._)[1]);\nfor (let img of images) {\n res.push([img.url]);\n}\nreturn res;", "img": "^(i\\d\\.walmartimages\\.com/[^?]+).+", "to": "$1", "note": "hababr\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1940#20\nOLD\nhttps://www.reddit.com/r/imagus/comments/fdqbls/comment/fjkohxy\n\nEXAMPLES\nhttps://www.walmart.com/search?page=1&query=meat+grinder&sort=price_high\nhttps://www.walmart.com/browse/cell-phones/samsung-galaxy-phones/1105910_7551331_1986562" }, "Weasyl-g": { "link": "^(weasyl\\.com)/(?:~[^/]+/)?(?:submissions?|character)(/\\d+)/[\\w-]+", "res": "href=\"(https://cdn\\.$1/(?:~[^/]+/submissions$2|static/(?:character|submission))/[\\da-f/]+/[^\"]+)\n<title>([^<]+)", "note": "EXAMPLES\nhttps://www.weasyl.com/popular\nhttps://www.weasyl.com/search?q=dog" }, "Webfail-h": { "useimg": 1, "link": "^(?:(?:en|de)\\.)?(webfail\\.com/)([\\da-f]{11})(?:\\?tag=\\w+)?$", "loop": 1, "res": "(?:src=\"about:blank\" data-cmp-vendor=\"s30\" data-cmp-|<img class=\"wf-image\" )src=\"([^\"]+)", "img": "^cdn\\.(webfail\\.com/)upl/img/([\\da-f]{11})/(?!post).+", "to": "cdn.$1upl/img/$2/post2.jpg", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/130svfu/comment/jnit0kk\n\nEXAMPLES\nhttps://www.reddit.com/domain/webfail.com/new/" }, "WebmShare-h": { "link": "^(webmshare\\.com/)(?!terms)(?:play/|done/)?(\\w{5})(?:[#?]|$)", "url": "$1play/$2", "res": "=\"og:video\" content=\"([^\"]+)\n=\"og:title\" content=\"([^\"|]+)", "note": "EXAMPLES\nhttps://www.reddit.com/domain/webmshare.com/new/\nhttps://webmshare.com/c/random/latest" }, "WEIBO-h": { "link": "^(?:(?:imagus(album)?\\.)?weibo\\.com/\\d+/(\\w+).*|weiboalbum/([^/]+)/(.+))", "url": ": $[2] ? 'https://weibo.com/ajax/statuses/show?id='+$[2]+($[1]?'&'+Date.now():'') : ''", "res": ":\nconst video=this._video_backup, album=this._album_backup;\ndelete this._video_backup;\ndelete this._album_backup;\nif($[3]&&$[4]){\nlet array=$[4].split(\"!\").map(i=>[i]), num=(array.findIndex(i=>RegExp(`${$[3]}`).test(i[0])))\nthis.TRG.IMGS_album=$[3];\nthis.stack[$[3]]=array;\nthis.stack[$[3]].unshift(1);\nthis.album(num);\nreturn [[['','']]]\n}\n$=JSON.parse($._);\nconst t=(new Date($.created_at)?.toLocaleString().replace(/.+/,'[$&] ')||'')+($.text_raw||'');\nif($.pic_infos){\n$=Object.values($.pic_infos).slice(this._num);\ndelete this._num;\n$=$.map((i,n)=>[i.video?.replace(/.+/,'$&#mp4')||i.largest?.url||i.large.url,!n?t:''])\nif(this._imgId){\n$=$.slice($.findIndex(i=>RegExp(`${this._imgId}`).test(i[0])));\n$[0][1]=t\ndelete this._imgId;\n}\nreturn $\n}\nif($.mix_media_info?.items){\nreturn $.mix_media_info?.items.map(i=>[i.media_info?.mp4_hd_url||i.data?.media_info?.mp4_hd_url||i.data?.video?.replace(/.+/,'$&#mp4')||i.data?.large?.url,t])\n}\nif($.page_info?.media_info){\n$=$.page_info?.media_info;\nconst hd=Object.entries($).find(i=>/^mp4_\\d+p_mp4$/.test(i[0]))?.[1]||'';\nreturn [[[hd?.replace(/.+/,'#$&'),$.mp4_hd_url||''],t]]\n}\n$=video||album||'';\nreturn $", "img": "^(?:((w[a-z]|tva|mu)\\d\\.sinaimg\\.cn/)(?!large)[^/]+/(.+)|(video\\.weibo\\.com/media/play\\?livephoto=https?(?:%3A%2F%2F|://).+(?:/|%2F)([^.]+)\\..+))", "loop": 2, "to": ":\nconst show_gallery_thumbs_as_album = true // Show posts with multiple thumbnail images as album\nconst truncate_album = true // Removes images before hovered thumbnail in album\nconst show_caption_with_video = true // Displays the caption with the video but is slower to load\n\nconst n=this.node, l=n.parentNode?.querySelector('video')?.src, h=n.closest('[class^=Feed_body_],.card-feed')?.querySelector('[class^=head-info_time],a[href][target=\"_blank\"][suda-data$=\"click:wb_time\"]')?.href?.match(/^[^?]+/)?.[0].replace('//','//imagus.');\nif($[4]){\nthis._imgId=$[5];\nreturn h?.replace(/(imagus)/,'$1album')\n}\nif(show_gallery_thumbs_as_album){\nconst m=show_gallery_thumbs_as_album&&[...n.closest('.wbpro-feed-content,div[class=\"media media-piclist\"]')?.querySelectorAll('img[class*=\"_focusImg\"],img[data-gifviedo=\"\"],img[class=\"woo-picture-img\"]')||[]].map(i=>[i.src?.replace(/\\/(?:orj?|mw|thumb)\\d+\\//,'/original/')]);\nthis._num=m&&m.findIndex(i=>RegExp(`${$[3]}`).test(i[0]));\nthis._video_backup=l;\nthis._album_backup=m;\nif(truncate_album)this._album_backup=this._album_backup.slice(this._num);\nreturn l?.length ? show_caption_with_video&&h||l : m?.length>1 ? truncate_album&&h?.replace(/(imagus)/,'$1album')||'//weiboalbum/'+$[3]+'/'+m.join(\"!\") : ($[2]=='mu' ? 'http://' : $[1]+'large/') + $[3]\n}\nreturn l||($[2]=='mu' ? 'http://' : $[1]+'large/') + $[3]", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/1g24n4h/comment/lrsn5gx\nOLD\nhttps://www.reddit.com/r/imagus/comments/e9wvb3/request_weibo/kuy45bp/\n\n\n!!!\nIn order for the sieve to work correctly, you need to install the uBO (uBlock Origin) extension:\nIn uBO Settings -> My Filters -> Add this line:\nweibo.com##.woo-picture-slot\n+\nThe sieve doesn't work with videos, but can zoom in on covers:\nhttps://weibo.com/tv/home\nhttps://www.reddit.com/r/imagus/comments/e9wvb3/comment/kui4xmh\n\n\nEXAMPLES\nhttps://weibo.com/tv/home\nhttps://weibo.com/1886176512/O4pEby0t0\nhttps://weibo.com/7412351656/4981317911972411\nhttps://weibo.com/newlogin?tabtype=weibo&gid=102803&openLoginLayer=0&url=https%3A%2F%2Fweibo.com%2F" }, "Weverse": { "img": "^(phinf\\.wevpstatic\\.net/[^?]+).*", "to": "$1", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/1f6o59z/comment/ll2sv3a\n\n!!!\nThe sieve does not work with the videos on this site:\nhttps://www.reddit.com/r/imagus/comments/1f6o59z/comment/llriyln\n\n\nEXAMPLES\nhttps://weverse.io/jeremyzucker/fanpost/4-169375513" }, "WikiArt-g-p": { "img": "^(uploads\\d\\.wikiart\\.org/[^!]+)!.*", "to": "$1", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/kuu2fo0\nOLD\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=1560#2\n\n\nПРИМЕРЫ / EXAMPLES\nhttps://www.wikiart.org/en/artists-by-nation/norwegian#!#resultType:masonry\nhttps://www.wikiart.org/en/paintings-by-genre/jewelry#!#filterName:all-works,viewType:masonry" }, "Wikimedia-g": { "link": "^[^/]{4,70}/(?:[^/#?]*/)*?(?:index\\.php\\?title=)?(?:(?:%\\w\\w){2,42}|[ABDFIPST](?:%\\w\\w|[^\\d:/?&#]){2,10})(?::|%3A)[^/&]{1,1000}\\.(?:jp(?:g|eg?)|a?png|gif|svgz?|web[pm]|bmp|og[gv]|mp[g34]|wav)(?!&action=)", "ci": 3, "dc": 1, "res": ":\nlet m=[...$._.matchAll(/<source src=\"([^\"]+)\"\\s+type=\"(?!video\\/ogg)[^>]+data-width=\"([\\d.]+)/g)].sort((a,b)=>Number(a[2])-Number(b[2]));\nreturn m.pop()?.[1]||$._.match(/\"og:image\" content=\"([^\"]+)/)?.[1]||''", "useimg": 1, "img": "^([^/]+/+([^/]+/+)*?)(?:thumb|(images|avatars))/((?:archive/)?\\w{1,2}/\\w{1,4}/([^/]+(?:\\.(jpe?g|gif|png|svgz?|tif)|(?=/revision/))))(?:/(lossy-page\\d+-)?\\d+px-(?:\\3|thumbnail).*|(/revision/)[^?]*)", "to": ":\nif($[7])return $[1] + 'thumb/' + $[4] + '/' + $[7] + '2048px-' + $[5] + '.jpg';\nreturn '#' + $[1] + ($[3] ? $[3] + '/' : '') + $[4] + (!$[8] && !$[1].lastIndexOf('upload.wikimedia.org',0) && !/^gif/i.test($[6]) ? '\\n'+ $[1] + 'thumb/' + $[4] + '/1024px-' + $[5] + (/^svg/i.test($[6]) ? '.png' : '') : ($[8] ? $[8] + 'latest' : ''))", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/17zsllc/comment/m46jycr\nOLD\nhttps://www.reddit.com/r/imagus/comments/17zsllc/comment/kxo1ema\nhttps://www.reddit.com/r/imagus/comments/17zsllc/comment/kvv0a22\n\n\nEXAMPLES\nhttps://commons.wikimedia.org/wiki/Category:Camcorders\nhttps://commons.wikimedia.org/wiki/Category:Animated_GIF_files_between_50_MP_and_100_MP\nhttps://commons.wikimedia.org/wiki/Category:Videos_taken_with_Panasonic\nhttps://en.wikipedia.org/wiki/Pantsir_missile_system#Fire_control" }, "WILDBERRIES.ru-s": { "link": "^(global\\.)?wildberries\\.ru/(?:catalog/|product/[-\\w]+-)(\\d+)(?:/(detail\\.aspx|feedbacks)(\\S+)?)?", "url": "data:,$&", "res": ":\n// debugger;\nlet show_videos = true;\nlet show_reviews_sidebar = true;\n\nlet asyncMode = false;\nlet hasVideo = false;\nvar r = [];\nvar that = this;\n\n// show images only for global.wildberries.ru\nif ($[1]) {\n show_videos = false;\n asyncMode = true;\n}\n\nconst x = new XMLHttpRequest();\nconst cardInfoUrl = constructHostV2($[2], 'nm') + `/info/ru/card.json`;\nx.open('GET', cardInfoUrl, asyncMode);\nx.onloadend = function () {\n const info = JSON.parse(this.responseText);\n\n // fetch item photos\n // skip when triggered by feedback links or elements\n if (($[2] || $[3] == 'detail.aspx') && !$[4]?.includes('#Comments')\n && !that.TRG.className?.includes('product-review')\n && !that.TRG.className?.includes('product-product-review__rating')\n && !that.TRG.className?.includes('product-review__count-review'))\n {\n // const folder = 1e4 * Math.floor(info.nm_id / 1e4);\n if (info.media.has_video && show_videos) {\n // r.push([`https://video.wbstatic.net/video/new/${folder}/${info.nm_id}.mp4`, info.imt_name]);\n r.push(['', `<imagus-extension type=\"videojs\" url=\"${urlVideoProduct(info.nm_id, \"hls\", \"1440p\")}\"></imagus-extension>${info.imt_name}`]);\n hasVideo = true;\n }\n\n for (var i = 1; i <= info.media.photo_count; i++) {\n r.push([imageUrl(info.nm_id, 'big', i), info.imt_name]);\n }\n }\n\n const x2 = new XMLHttpRequest();\n\n // fetch feedback photos page by page\n x2.open('GET', `${feedbackDomain(info.imt_id)}/feedbacks/v1/${info.imt_id}`, asyncMode);\n x2.onloadend = function () {\n const resp = JSON.parse(this.responseText);\n\n // put current item's feedbacks first\n resp.feedbacks?.sort((a, b) => {\n return a.nmId === info.nm_id && b.nmId !== info.nm_id ? -1 :\n a.nmId !== info.nm_id && b.nmId === info.nm_id ? 1 :\n new Date(b.createdDate) - new Date(a.createdDate);\n });\n\n let fbTexts = [];\n resp.feedbacks?.forEach(f => {\n let text = [\n `<span class=\"s s${f.productValuation}\">⭐ ${f.productValuation}</span>`,\n f.nmId !== info.nm_id ? `ДРУГОЙ ВАРИАНТ` : '',\n f.text,\n f.pros ? '👍 ' + f.pros : '',\n f.cons ? '👎 ' + f.cons : '',\n f.createdDate.substring(0, 10),\n ].filter(Boolean).join(' | ');\n f.photo?.forEach(p => r.push([urlFeedbackPhoto(p), text]))\n\n if ((f.text || f.pros || f.cons) && fbTexts.length < 100) fbTexts.push(text);\n\n if (show_videos && f.video) {\n hasVideo = true;\n let [idx, id] = f.video.id.split('/');\n let vUrl = `https://videofeedback${String(idx).padStart(2, '0')}.wbbasket.ru/${id}/index.m3u8`;\n r.push(['', `<imagus-extension type=\"videojs\" url=\"${vUrl}\"></imagus-extension>${text}`]);\n }\n });\n\n if (r.length && !asyncMode && show_reviews_sidebar) {\n const fbIndx = r[0][1].startsWith('<imagus-extension') ? 1 : 0;\n const distr = resp.valuationDistributionPercent;\n const distrKeys = Object.keys(distr).reverse();\n r[fbIndx][1] =\n `<imagus-extension type=\"sidebar\"><div>\n <style>\n #imagus-extension > div { display: flex; flex-direction: column; row-gap: 10px; padding-top: 6px; }\n #imagus-extension .valuation-distr { display: flex; }\n #imagus-extension .valuation-distr > * { padding: 4px 6px; border: 1px solid gray; margin: 0 -1px 0 0; text-align: right; }\n #imagus-extension p { border-bottom: 1px solid #80808080; padding-bottom: 6px; }\n #imagus-extension .s { padding: 2px 4px; border-radius: 4px; }\n #imagus-extension .s1 { background: #cb0000; }\n #imagus-extension .s2 { background: #d16c00; }\n #imagus-extension .s3 { background: #b99300; }\n #imagus-extension .s4 { background: #99b33a; }\n #imagus-extension .s5 { background: #1f8600; }\n </style>\n <div class=\"valuation\">Оценка: ⭐ ${resp.valuation} • ${resp.feedbackCount}</div>\n <div class=\"valuation-distr\">\n <span>${distrKeys.map(k => `${k} ⭐`).join('<br>')}</span>\n <span>${distrKeys.map(k => `${distr[k]}%`).join('<br>')}</span>\n <span>${distrKeys.map(k => `<progress max=\"100\" value=\"${distr[k]}\">${distr[k]}%</progress>`).join('<br>')}</span>\n </div>\n ${fbTexts.map(t => `<p>${t}</p>`).join('')}\n </div></imagus-extension>${r[fbIndx][1]}`;\n }\n\n if (r.length == 0) {\n r = false;\n\n } else if (!asyncMode) {\n that.TRG.IMGS_ext_data = r;\n r = { loop: 'imagus://extension' };\n if (!that.TRG.IMGS_c_resolved?.URL) {\n that.TRG.IMGS_c_resolved = { URL: that.TRG.href };\n }\n\n } else if (asyncMode && (that.TRG?.IMGS_ext_data?.length || r?.length)) {\n that.TRG.IMGS_album = $[0];\n that.stack[$[0]] = that.TRG?.IMGS_ext_data || r;\n that.stack[$[0]].unshift(1);\n that.album(0);\n }\n }\n x2.send();\n}\nx.send();\n\nif (asyncMode) {\n return null\n}\n\nreturn r;\n\nfunction urlFeedbackPhoto(e) {\n const n = parseInt(e, 10);\n return `${constructHostV2(n, \"feedbackPhoto\")}/photos/fs.webp`\n}\n\nfunction feedbackDomain(t) {\n const e = crc16Arc(t) % 100 >= 50 ? \"2\" : \"1\";\n return `https://feedbacks${e}.wb.ru`;\n}\n\nfunction imageUrl(id, size, number) {\n var i = parseInt(id, 10);\n var ext = \"webp\";\n var url = constructHostV2(i);\n return \"\".concat(url, \"/images/\").concat(size, \"/\").concat(null != number ? number : 1, \".\").concat(ext)\n}\n\nfunction volHostV2(e) {\n let r;\n const n = ~~(e / 1e5);\n switch (!0) {\n case n >= 0 && n <= 143: r = \"01\"; break;\n case n <= 287: r = \"02\"; break;\n case n <= 431: r = \"03\"; break;\n case n <= 719: r = \"04\"; break;\n case n <= 1007: r = \"05\"; break;\n case n <= 1061: r = \"06\"; break;\n case n <= 1115: r = \"07\"; break;\n case n <= 1169: r = \"08\"; break;\n case n <= 1313: r = \"09\"; break;\n case n <= 1601: r = \"10\"; break;\n case n <= 1655: r = \"11\"; break;\n case n <= 1919: r = \"12\"; break;\n case n <= 2045: r = \"13\"; break;\n case n <= 2189: r = \"14\"; break;\n case n <= 2405: r = \"15\"; break;\n case n <= 2621: r = \"16\"; break;\n case n <= 2837: r = \"17\"; break;\n case n <= 3053: r = \"18\"; break;\n case n <= 3269: r = \"19\"; break;\n case n <= 3485: r = \"20\"; break;\n case n <= 3701: r = \"21\"; break;\n case n <= 3917: r = \"22\"; break;\n case n <= 4133: r = \"23\"; break;\n case n <= 4349: r = \"24\"; break;\n case n <= 4565: r = \"25\"; break;\n case n <= 4877: r = \"26\"; break;\n case n <= 5189: r = \"27\"; break;\n case n <= 5501: r = \"28\"; break;\n case n <= 5813: r = \"29\"; break;\n case n <= 6125: r = \"30\"; break;\n case n <= 6437: r = \"31\"; break;\n case n <= 6749: r = \"32\"; break;\n case n <= 7061: r = \"33\"; break;\n case n <= 7373: r = \"34\"; break;\n default: r = \"35\"\n }\n return `basket-${r}.wbbasket.ru/vol${n}`\n}\n\nfunction volFeedbackPhotoHost(e) {\n let r;\n const n = ~~(e / 1e5);\n switch (!0) {\n case n >= 0 && n <= 431: r = \"01\"; break;\n case n <= 863: r = \"02\"; break;\n case n <= 1199: r = \"03\"; break;\n case n <= 1535: r = \"04\"; break;\n case n <= 1919: r = \"05\"; break;\n case n <= 2303: r = \"06\"; break;\n case n <= 2687: r = \"07\"; break;\n case n <= 3071: r = \"08\"; break;\n case n <= 3455: r = \"09\"; break;\n case n <= 3839: r = \"10\"; break;\n default: r = \"11\"\n }\n return `feedback${r}.wbbasket.ru/vol${n}`\n}\n\nfunction volVideoHost(e) {\n let r;\n const n = e % 144;\n switch (!0) {\n case n >= 0 && n <= 11: r = \"01\"; break;\n case n <= 23: r = \"02\"; break;\n case n <= 35: r = \"03\"; break;\n case n <= 47: r = \"04\"; break;\n case n <= 59: r = \"05\"; break;\n case n <= 71: r = \"06\"; break;\n case n <= 83: r = \"07\"; break;\n case n <= 95: r = \"08\"; break;\n case n <= 107: r = \"09\"; break;\n case n <= 119: r = \"10\"; break;\n case n <= 131: r = \"11\"; break;\n case n <= 143: r = \"12\"; break;\n default: r = \"13\"\n }\n return `videonme-basket-${r}.wbbasket.ru/vol${n}`\n}\n\nfunction constructHostV2(e, t = \"nm\", r = !1) {\n const n = parseInt(e, 10)\n , s = \"video\" === t ? ~~(n / 1e4) : ~~(n / 1e3);\n let o;\n return \"nm\" === t ? o = volHostV2(n, r) : \"feedbackPhoto\" === t ? o = volFeedbackPhotoHost(n, r) : \"video\" === t && (o = volVideoHost(n, r)),\n `https://${o}/part${s}/${n}`\n}\n\nfunction urlVideoProduct(e, t = \"mp4\", r = \"360p\") {\n const n = parseInt(e, 10);\n return `${constructHostV2(n, \"video\")}/${t}/${r}/${\"mp4\" === t ? \"1.mp4\" : \"index.m3u8\"}`\n}\n\nfunction numToUint8Array(r) {\n const t = new Uint8Array(8);\n for (let n = 0; n < 8; n++) {\n t[n] = r % 256;\n r = Math.floor(r / 256);\n }\n return t;\n}\n\nfunction crc16Arc(r) {\n const t = numToUint8Array(r);\n let n = 0;\n for (let r = 0; r < t.length; r++) {\n n ^= t[r];\n for (let r = 0; r < 8; r++)\n (1 & n) > 0 ? n = n >> 1 ^ 40961 : n >>= 1;\n }\n return n;\n}\n", "img": "^(?:(feedback-?\\d+\\.(?:wb|wbbasket)\\.ru/(?:.+/photos|[-\\d\\w]+))/[fm]s\\.(?:webp|jpg)|(basket-\\d+\\.(?:wb\\.ru|wbcontent\\.net|wbbasket\\.ru)/.+/images)/c\\d+x\\d+/(\\d+\\.webp)|(videofeedback\\d+\\.(?:wb|wbbasket)\\.ru/.+)/preview\\.(?:webp|jpg))", "ci": 2, "loop": 2, "to": ":\nif (!this.styleAdded && document.URL.includes('/feedbacks')) {\n const style = document.createElement(\"style\")\n style.textContent = `\n .sw-slider-thumbs-gallery .gallery-set .gallery-set__item::before { z-index: 0 !important; }\n .gallery-set__list > li > img.hide-desktop { display: block !important;}\n `\n document.head.appendChild(style)\n this.styleAdded = true;\n}\n\nif ($[1]) {\n\treturn `${$[1]}/fs.webp`\n} else if ($[2]) {\n\treturn `${$[2]}/big/${$[3]}`\n} else if ($[4]) {\n return `${$[4]}/index.m3u8`\n}\n", "note": "hababr\nhttps://pastebin.com/jwQbJypP\nOLD\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/nalrci7\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/n9qmdzx/\n\n\n\n\n!!!\nКурсор рекомендуется наводить на область с названием товара.\n+\nФильтр показывает видео (если есть) + оценку + фото/видео/отзывы покупателей.\n+\nНа первом фото есть сайдбар с рейтингом и отзывами покупателей, его, как и видео, можно отключить в фильтре так:\nlet show_videos = false;\nlet show_reviews_sidebar = false;\n\n\nПРИМЕРЫ\nhttps://global.wildberries.ru/catalog?search=свитер+женский&tail-location=SNS\nhttps://www.wildberries.ru/catalog/pitanie/tags/zefir-v-shokoladnoi-glazuri?sort=newly&page=1\nhttps://www.wildberries.ru/seller/664010\nhttps://www.wildberries.ru/catalog/igrushki/igrovye-nabory\nhttps://www.wildberries.ru/catalog/0/search.aspx?search=мини%20пылесос\nhttps://www.wildberries.ru/catalog/58113505/feedbacks?imtId=43628090" }, "Wired-m": { "link": "^wired\\.com/video/watch/.+", "res": ":\n$=$._.match(/__PRELOADED_STATE__\\s*=\\s*({.+?});?<\\//)\n$=$&&JSON.parse($[1])\nreturn $.transformed?.video?.sources?.mp4?.src||''", "img": "^(?:(media\\.wired\\.com/photos/\\w+)/[\\d:]+/[^/]+|wired\\.com/[^/]+/.+)", "to": ":\nif($[1])return $[1];\nconst m = 'https://media.wired';\nlet t = this.node;\nt = RegExp(`^${m}`).test(t.src) ? t.src : t.querySelector(`img[src^=\"${m}\"]`)?.src||'';\nreturn t.replace(/\\/(?:\\d{1,2}:\\d{1,2}|w_\\d+[^/]+)/g,'')", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/n9cfz4t\nOLD\nhttps://www.reddit.com/r/imagus/comments/130svfu/comment/jo3ahc3\n\n!!!\nThe cursor should be hovered on the video title.\n\n\nEXAMPLES\nhttps://www.wired.com/video/\nhttps://www.wired.com/category/culture/\nhttps://www.wired.com/tag/video-games/" }, "WordPress-CMS_fix-p": { "img": "^(.+/wp-content/uploads/.+)-(?:\\d+x\\d+|scaled)(\\.jpg)$", "to": "$1$2", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/1ogt8o1/comment/nliyxun/\n\n\nEXAMPLES\nhttps://www.ride-mtb.com/en/spotguide/teneriffa\nhttps://manningfineart.co.uk/shop/map-of-the-north-of-scotland-17th-century-hand-coloured-map-by-gerardus-mercator/" }, "wsimg-CDN": { "link": "(wsimg.com/(?:isteam/)?ip/[^.]+\\.[^/]+)", "img": "((?:[^.]+\\.)?wsimg.com/(?:isteam/)?ip/[^.]+\\.[^/]+)", "to": "$1", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/130svfu/comment/jn8v5j7\n\nEXAMPLES\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1360#11" }, "Wykop.pl-m-p": { "img": "^((?:x\\w\\.)?(?:cdn\\d+\\.imgwykop\\.pl|wykop.pl/cdn)/c\\d+/[^,]+),[^.]+", "to": "$1", "note": "EXAMPLES\nhttps://wykop.pl/tag/informacje\nhttps://wykop.pl/szukaj/wszystkie/star" }, "X.COM-q-p": { "link": "^(?:m(?:obile)?\\.)?(?:x|(api\\.[fv]x)?twitter)\\.com/(?:[^/]+/)*status/(\\d+)(?:\\?img_id/(.+))?.*", "url": ": (()=>{const use_on_timestamp = true , use_account_token = true , n=this.node;if(/^https:\\/\\/platform\\.twitter/.test(n.baseURI)||/^(?:x|twitter)\\.com$/.test(location.hostname)&&!RegExp(`^(?:svg|path${use_on_timestamp?'|time':''})$`).test(n.localName)&&!n.IMGS_TRG)throw '';return use_account_token&&!$[1]&&location.hostname==='x.com'&&/\\bct0=/.test(document.cookie)?'data:,'+$[2]+$[3]:$[1]||!$[2]?$[0]:'https://cdn.syndication.twimg.com/tweet-result?id='+$[2]+'&token='+((Number($[2])/1e15)*Math.PI).toString(6**2).replace(/(0+|\\.)/g,'')+($[3]?'&'+$[3]:'')})()", "res": ":\n// To have the sieve work on media from private accounts, change 'use_account_token' in the above text box to true. When logged in, the sieve will use the token when requesting the media data file.\n\nconst config = {\n // Edit these variables to change how the sieve shows media\n\n show_480p_video_first: false, // Show 480p video, switch to higher with TAB\n\n show_thumbs_as_album: true, // Multi-image posts show images as an album\n\n show_pfp_if_no_media: false, // Show profile image instead of 'No Media' message\n\n use_vxtwitter_api_fallback: true, // Use third party API VXTwitter as backup\n\n use_fxtwitter_api_fallback: true, // Use third party API FXTwitter as backup\n\n // If both VXTwitter and FXTwitter are set to true, one is randomly chosen\n\n hide_third_party_api_message: false // Remove third party API caption message\n}\n\nif($.base[0]==='d'){\nconst token = document.cookie.match(/\\bct0=([^;]+)/)?.[1], lang = document.cookie.match(/\\blang=([^;]+)/)?.[1], x = new XMLHttpRequest();\nif(!token)return '';\nx.open('GET',`https://x.com/i/api/graphql/nBS-WpgA6ZG0CyNHD517JQ/TweetDetail?variables=%7B%22focalTweetId%22:%22${$[2]}%22,%22with_rux_injections%22:false,%22rankingMode%22:%22Relevance%22,%22includePromotedContent%22:false,%22withCommunity%22:false,%22withQuickPromoteEligibilityTweetFields%22:false,%22withBirdwatchNotes%22:false,%22withVoice%22:false%7D&features=%7B%22rweb_tipjar_consumption_enabled%22:false,%22responsive_web_graphql_exclude_directive_enabled%22:false,%22verified_phone_label_enabled%22:false,%22creator_subscriptions_tweet_preview_api_enabled%22:false,%22responsive_web_graphql_timeline_navigation_enabled%22:false,%22responsive_web_graphql_skip_user_profile_image_extensions_enabled%22:false,%22communities_web_enable_tweet_community_results_fetch%22:false,%22c9s_tweet_anatomy_moderator_badge_enabled%22:false,%22articles_preview_enabled%22:false,%22responsive_web_edit_tweet_api_enabled%22:false,%22graphql_is_translatable_rweb_tweet_is_translatable_enabled%22:false,%22view_counts_everywhere_api_enabled%22:false,%22longform_notetweets_consumption_enabled%22:false,%22responsive_web_twitter_article_tweet_consumption_enabled%22:false,%22tweet_awards_web_tipping_enabled%22:false,%22creator_subscriptions_quote_tweet_preview_enabled%22:false,%22freedom_of_speech_not_reach_fetch_enabled%22:false,%22standardized_nudges_misinfo%22:false,%22tweet_with_visibility_results_prefer_gql_limited_actions_policy_enabled%22:false,%22rweb_video_timestamps_enabled%22:false,%22longform_notetweets_rich_text_read_enabled%22:false,%22longform_notetweets_inline_media_enabled%22:false,%22responsive_web_enhance_cards_enabled%22:false%7D`,false);\nx.setRequestHeader('authorization','Bearer AAAAAAAAAAAAAAAAAAAAANRILgAAAAAAnNwIzUejRCOuH5E6I8xnZz4puTs%3D1Zv7ttfk8LF81IUq16cHjhLTvJu4FA33AGWWjCpTnA');\nx.setRequestHeader('content-type','application/json');\nx.setRequestHeader('x-twitter-client-language',lang);\nx.setRequestHeader('x-csrf-token',token);\nx.send();\nif(x.status!==200)return '';\n$._=x.responseText;\n}\nlet data = $._[0]==='{'&&JSON.parse($._);\nif(!data)return null;\nlet qtData = data.data?.threaded_conversation_with_injections_v2?.instructions?.find(i=>i.entries)?.entries?.find(i=>i.entryId==='tweet-'+$[2])?.content?.itemContent?.tweet_results?.result?.quoted_status_result?.result || data.quoted_tweet;\ndata = data.data?.threaded_conversation_with_injections_v2?.instructions?.find(i=>i.entries)?.entries?.find(i=>i.entryId==='tweet-'+$[2])?.content?.itemContent?.tweet_results?.result || data;\ndata = data.tweet || data;\nqtData = qtData?.tweet || qtData;\nconst upgradeImage = img => ['#'+img+'?name=orig'.replace('webp','jpg'), '#'+img+'?name=orig'.replace('webp','png'), img+'?name=large'.replace('webp','jpg'), img+'?name=large'.replace('webp','png')];\nlet idx, media = [], l = cfg.hz.hiRes&&config.show_480p_video_first;\nconst imgIdRegex = new RegExp(`${$[3]}`), pfp = (data.user||data.core?.user_results?.result?.legacy)?.profile_image_url_https?.replace(/_[a-z0-9]+\\./, '.'), backupURL = config.use_fxtwitter_api_fallback&&config.use_vxtwitter_api_fallback ? ['v', 'f'][Math.floor(Math.random()*2)] : config.use_vxtwitter_api_fallback ? 'v' : config.use_fxtwitter_api_fallback ? 'f' : '';\nif(!$[1]){\nconst text = data.text||data.legacy?.full_text||'', qtText = qtData?.text||qtData?.legacy?.full_text||'';\nlet mediaDetails = data.mediaDetails||data.legacy?.entities?.media||[], qtMediaDetails = qtData?.mediaDetails||qtData?.legacy?.entities?.media||[], card = data.card?.legacy?.binding_values||data.card?.binding_values?.unified_card?.string_value||data.card?.binding_values;\nconst filename = $[0].match(/^https:\\/\\/[^\\/]+\\/([^\\/]+)\\/status\\/(\\d+).*/);\nif(filename)this.CNT.filename = filename[1]+' - '+(text?.match(/(?:\\S+\\s?){1,5}/)?.[0].trim().replace(/[<>:\"\\/|\\\\?*]/g,'_')||filename[2]);\nif(!$[3]){\nif(mediaDetails)mediaDetails.forEach(i => {\n\tconst isVideo = i.video_info ? true : false;\n\ti = isVideo ? i?.video_info?.variants.filter(i=>i.content_type==='video/mp4').sort((a,b)=>b.bitrate-a.bitrate).map(i=>i.url) : i.media_url_https;\n\tmedia.push(isVideo ? [[(l?'':'#')+i[0],(l?'#':'')+i.find(i=>/x[2,3,4]\\d{2}\\//.test(i))||''],(qtMediaDetails?.length?'Main tweet media: ':'')+text+(!qtMediaDetails?.length&&qtText?' | Quote tweet text: '+qtText:'')] : [upgradeImage(i),(qtMediaDetails?.length?'Main tweet media: ':'')+text+(!qtMediaDetails?.length&&qtText?' | Quote tweet text: '+qtText:'')]);\n\t})\nif(qtMediaDetails)qtMediaDetails.forEach(i => {\n\tconst isVideo = i.video_info ? true : false;\n\ti = isVideo ? i?.video_info?.variants.filter(i=>i.content_type==='video/mp4').sort((a,b)=>b.bitrate-a.bitrate).map(i=>i.url) : i.media_url_https;\n\tmedia.push(isVideo ? [[(l?'':'#')+i[0],(l?'#':'')+i.find(i=>/x[2,3,4]\\d{2}\\//.test(i))||''],'Quote tweet media: '+qtText+(!mediaDetails?.length&&text?' | Main tweet text: '+text:'')] : [upgradeImage(i),'Quote tweet media: '+qtText+(!mediaDetails?.length&&text?' | Main tweet text: '+text:'')]);\n\t})\n if(card){\n const embed = card.player_url?.string_value||Array.isArray(card)&&card.find(i=>i.key==='player_url')?.value?.string_value;\n if(embed){\n const loop = this.find({href:embed});\n if(loop !== false && loop !== '')return {loop:embed};\n }\n if(Array.isArray(card)){\nmedia.push([card.find(i=>i.value?.type==='IMAGE').value.image_value.url.replace(/(&name=).+/,'$1orig'),text]);\n }else{\n media.push([typeof card==='string' ? [Object.values(JSON.parse(card)?.media_entities)?.[0]?.media_url_https,text] : ['#'+(card.photo_image_full_size_original||card.player_image_original||card.thumbnail_image_x_large)?.image_value?.url, (card.photo_image_full_size_large||card.player_image_x_large)?.image_value?.url],text]);\n }\n }\n}else{\n const videoId = mediaDetails.concat(qtMediaDetails).find(i=>imgIdRegex.test(i.media_url_https))?.video_info?.variants?.filter(i=>i.content_type==='video/mp4').sort((a,b)=>b.bitrate-a.bitrate)?.[0].url?.match(/\\/([^\\/.]+)\\.mp4/)?.[1]||'', videoIdRegex = videoId ? new RegExp(videoId) : null;\nif(mediaDetails?.video_info?.variants?.some(i=>imgIdRegex.test(i.poster))||mediaDetails?.some(i=>imgIdRegex.test(i.media_url_https)))mediaDetails.forEach(i => {\n\tconst isVideo = i.video_info ? true : false;\n\ti = isVideo ? i.video_info.variants.filter(i=>i.content_type==='video/mp4').sort((a,b)=>b.bitrate-a.bitrate).map(i=>i.url) : i.media_url_https;\n\tmedia.push(isVideo ? [[(l?'':'#')+i[0],(l?'#':'')+i.find(i=>/x[2,3,4]\\d{2}\\//.test(i))||''],text] : [upgradeImage(i),text]);\n\t})\n\tif(qtMediaDetails?.video_info?.variants?.some(i=>imgIdRegex.test(i.poster))||qtMediaDetails?.some(i=>imgIdRegex.test(i.media_url_https)))qtMediaDetails.forEach(i => {\n\tconst isVideo = i.video_info ? true : false;\n\ti = isVideo ? i.video_info.variants.filter(i=>i.content_type==='video/mp4').sort((a,b)=>b.bitrate-a.bitrate).map(i=>i.url) : i.media_url_https;\n\tmedia.push(isVideo ? [[(l?'':'#')+i[0],(l?'#':'')+i.find(i=>/x[2,3,4]\\d{2}\\//.test(i))||''],qtText] : [upgradeImage(i),qtText]);\n\t})\n if(card){\n const embed = card.player_url?.string_value||Array.isArray(card)&&card.find(i=>i.key==='player_url')?.value?.string_value;\n if(embed){\n const loop = this.find({href:embed});\n if(loop !== false && loop !== '')return {loop:embed};\n }\n if(Array.isArray(card)){\n media.push([card.find(i=>i.value?.type==='IMAGE').value.image_value.url.replace(/(&name=).+/,'$1orig'),text]);\n }else{\n media.push([typeof card==='string' ? [Object.values(JSON.parse(card)?.media_entities)?.[0]?.media_url_https,text] : ['#'+(card.photo_image_full_size_original||card.player_image_original||card.thumbnail_image_x_large)?.image_value?.url, (card.photo_image_full_size_large||card.player_image_x_large)?.image_value?.url],text]);\n }\n }\nidx = $[3]&&media.findIndex(i=>imgIdRegex.test(i[0][0])||videoIdRegex?.test(i[0][0]));\n\t}\nreturn media?.length ? (!$[3] ? media : !config.show_thumbs_as_album ? [media[idx]] : {\"\":media,idx:idx}) : !text&&!qtText&&backupURL ? {loop:'https://api.'+backupURL+'xtwitter.com/status/'+$[2]+($[3]?'?img_id/'+$[3]:'')} : no_media(text)\n} else {\n const backupMessage = !config.hide_third_party_api_message?'A third party API, '+$[1].slice(4).toUpperCase()+'Twitter, was used to get this media. For faster loading, the sieve can be set to use the account token when logged in. For more information, see the notes section of the X.COM-h-p sieve. | ':'';\n let videoId, videoIdRegex;\n if($[1][4]==='v'){\n this.loopStop = this.loopStop||0;\n const text = data.text;\n let mediaURLs = data.media_extended;\n if($[3]){\n if(!mediaURLs.some(i=>imgIdRegex.test(i.thumbnail_url))&&this.loopStop===0&&data.qrtURL){\n this.loopStop=1;\n return {loop:data.qrtURL.replace(/^.+(\\.com\\/).*(status\\/\\d+).*/,(t,g1,g2)=>'https://api.vxtwitter'+g1+g2+($[3]?'?img_id'+$[3]:''))};\n }\n videoId = mediaURLs.find(i=>imgIdRegex.test(i.thumbnail_url))?.url?.match(/\\/([^\\/.]+)\\.mp4/)?.[1]||'', videoIdRegex = videoId ? new RegExp(videoId) : null;\n }\n media = mediaURLs.map(i=>[(i.type==='video'||/\\.mp4/.test(i.url)?i.url:upgradeImage(i.url)),backupMessage+text]);\n idx = $[3]&&media.findIndex(i=>imgIdRegex.test(i[0])||videoIdRegex?.test(i[0]));\n delete this.loopStop;\n} else {\n const text = data.tweet?.text||'',qtText = data.quote?.text||'';\n let mediaURLs = data.media?.all||[],qtMediaURLs = data.quote?.media?.all||[];\n if(!$[3]){\n mediaURLs.forEach(i => {\n\tconst isVideo = /\\.mp4/.test(i.url) ? true : false;\n\ti = isVideo ? i?.variants.filter(i=>i.content_type==='video/mp4').sort((a,b)=>b.bitrate-a.bitrate).map(i=>i.url) : i.url;\n\tmedia.push(isVideo ? [[(l?'':'#')+i[0],(l?'#':'')+i.find(i=>/x[2,3,4]\\d{2}\\//.test(i))||''],backupMessage+text] : [upgradeImage(i),backupMessage+text]);\n\t})\n }else{\n videoId = mediaURLs.concat(qtMediaURLs).find(i=>imgIdRegex.test(i.thumbnail_url))?.variants?.filter(i=>i.content_type==='video/mp4').sort((a,b)=>b.bitrate-a.bitrate)?.[0].url?.match(/\\/([^\\/.]+)\\.mp4/)?.[1]||'', videoIdRegex = videoId ? new RegExp(videoId) : null;\n if(mediaURLs?.some(i=>imgIdRegex.test(i.thumbnail_url))||mediaURLs?.some(i=>imgIdRegex.test(i.url)))mediaURLs.forEach(i => {\n\tconst isVideo = /\\.mp4/.test(i.url) ? true : false;\n\ti = isVideo ? i.variants.filter(i=>i.content_type==='video/mp4').sort((a,b)=>b.bitrate-a.bitrate).map(i=>i.url) : i.url;\n\tmedia.push(isVideo ? [[(l?'':'#')+i[0],(l?'#':'')+i.find(i=>/x[2,3,4]\\d{2}\\//.test(i))||''],backupMessage+text] : [upgradeImage(i),backupMessage+text]);\n\t})\n\tif(qtMediaURLs?.some(i=>imgIdRegex.test(i.thumbnail_url))||qtMediaURLs?.some(i=>imgIdRegex.test(i.url)))qtMediaURLs.forEach(i => {\n\tconst isVideo = i.format?.startsWith('video') ? true : false;\n\ti = isVideo ? i.variants.filter(i=>i.content_type==='video/mp4').sort((a,b)=>b.bitrate-a.bitrate).map(i=>i.url) : i.url;\n\tmedia.push(isVideo ? [[(l?'':'#')+i[0],(l?'#':'')+i.find(i=>/x[2,3,4]\\d{2}\\//.test(i))||''],qtText] : [upgradeImage(i),backupMessage+qtText]);\n\t})\n idx = media.findIndex(i=>imgIdRegex.test(i[0][0])||videoIdRegex?.test(i[0][0]));\n\t}\n\t}\nreturn media?.length ? (!$[3] ? media : !config.show_thumbs_as_album ? [media[idx]] : {\"\":media,idx:idx}) : ''\n}\nfunction no_media(t){\nreturn config.show_pfp_if_no_media&&pfp ? [pfp,'No media. Tweet text: '+t] : [ 'data:image/svg+xml,' + encodeURIComponent(`\n <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"100\" width=\"540\" style=\"background-color: #2a2a2a;\">\n <foreignObject height=\"100%\" width=\"100%\">\n <div xmlns=\"http://www.w3.org/1999/xhtml\" style=\"display: table; height: 100%; width: 100%;\">\n <span style=\"color: tomato; display: table-cell; font: 36px sans-serif; vertical-align: middle; text-align: center; white-space: pre-wrap;\">\n No media\n </span>\n </div>\n </foreignObject>\n </svg>`.replace(/\\n\\s+/g, '')), 'Tweet text: '+t ]\n}", "useimg": 1, "img": "^(?:(pbs\\.twimg\\.com/(?:(profile_banners/\\d+/\\d+/)|(?:[^?]+\\?format=[^&]+&name=)|(?!profile_images/)[^.]+\\.)).*|((?:x|twitter)\\.com/\\w+(?:/photo|\\?|$).*))", "loop": 2, "to": ":\nconst n=this.node, id=$[0].match(/\\/([^\\/?.]+)(?:[?.]|$)/)?.[1]||'';\n\nconst upgrade = img => '#'+img.replace(/\\.([a-z0-9]{3,4}):?\\w*$|\\?format=(\\w+)&.+/,'.$1$2?name=orig').replace('webp','#jpg png#')+'\\n'+img.replace(/\\.([a-z0-9]{3,4}):?\\w*$|\\?format=(\\w+)&.+/,'.$1$2?name=large').replace('webp','#jpg png#');\n\nif($[2])return $[1]+'1500x500';\n\nif($[3])return n.closest('a')?.querySelector('img[src][draggable=\"true\"]')?.src?.replace(/_[a-z0-9]+\\./, '.')||'';\n\nif(!/\\b(?:x|twitter)\\.com$/.test(location.hostname))return upgrade($[0]);\n\nreturn (n.closest('article')?.querySelector('a[href*=\"/status/\"][aria-label]')||n.closest('a[href*=\"/status/\"][role=\"link\"]')||n.closest('article,div[class=\"css-1dbjc4n r-1iusvr4 r-16y2uox r-a5pmau r-bnwqim\"],div[class=\"css-1dbjc4n r-1iusvr4 r-16y2uox r-bnwqim\"]')?.querySelector('a[href*=\"/status/\"]')||n.closest('[class=\"css-175oi2r r-184en5c\"]')?.nextSibling?.querySelector('a[href*=\"/status/\"]'))?.href?.replace(/^(https:\\/\\/[^\\/]+\\/[^\\/]+\\/status\\/\\d+).*/, '$1?img_id/'+id)||upgrade($[0]);", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/o4rvzhu\nOLD\nhttps://www.reddit.com/r/imagus/comments/1mrcozx/comment/nhbv7gr\nhttps://www.reddit.com/r/imagus/comments/1np7jns/comment/nfxrtin\n\n\n!!!\nВся информация о возможностях и особенностях фильтра, а также о представленных в нем опциях: см. FAQ, стр. 19.\n==\nAll information about the capabilities and features of the sieve, and also about the options presented in it: see FAQ, p.19.\n\n\nEXAMPLES\nhttps://www.reddit.com/domain/x.com/new\nhttps://www.reddit.com/domain/twitter.com/new\nhttps://www.reddit.com/r/imagus/comments/159jk73/comment/jti74is\nhttps://x.com/otosalex/media\nhttps://x.com/search?q=example&src=typed_query&f=media" }, "X.COM_pic.x": { "link": "^pic\\.(?:x|twitter)\\.com/\\w+", "loop": 1, "res": "(?:URL=|<title>)([^<>]+)", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/130svfu/comment/mptdk3z\n\nEXAMPLES\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1360#11" }, "X.COM_proxy": { "img": "^o\\.twimg\\.com/2/proxy\\.jpg\\?(?:[^&]+&)*?t=([^&]+).*", "loop": 2, "to": ":\nreturn decodeURIComponent(window.atob($[1].replace(/_/g, '/')).replace(/^[^h]*(https?:\\/\\/[^\\/]+\\/([\\w\\-.~:/?#\\[\\]@!$&'()*+,;=]|%\\d\\d)+).*/, '$1'))" }, "xGames.zone-x-p": { "link": "^(xgames\\.zone)/(?!category)(?:[\\w-]+/){2}$", "url": ": location.hostname===$[1] ? 'data:,'+$[0] : $[0]", "res": ":\nif($.base[0]==='d'){\nconst x=new XMLHttpRequest();\nx.open('GET',$[0],false);\nx.send();\n$._=x.responseText;\n}\nreturn [...$._.matchAll(/src=\"([^\"]+)\"+\\s+alt=\"([^\"]*)/g)].map(i=>[i[1].replace(/\\/img\\.|\\/thumb\\//g,'/').replace(/^\\/[^\\/]/,'//'+$[1]+'$&'),i[2]])", "note": "imqswt\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/lvi2xaj\n\nEXAMPLES\nhttps://xgames.zone/?s=3D\nhttps://xgames.zone/category/indie-games/page/2/" }, "xHamster_gallery-x-p": { "link": "^(?:[a-z]{2}\\.)?xhamster2?\\.(?:com|desi)/photos/gallery/[\\w-]+(?:/(\\d{5,}))?", "res": ":\nlet o=$._.match(/\"(?:photo|total\":\\d+,\"item)s\":(\\[[^\\]]+\\])/), n=$._.match(/href=\"([^\"]+)\" rel=\"next\"/), m=this._xh_||[];\ndelete this._xh_;\no=o?JSON.parse(o[1]):[];\nif($[1])return o.find(i=>i.id==$[1])?.imageURL;\no.forEach(i=>m.push([i.imageURL]));\nif(n&&n[1]!==$[0]){\nthis._xh_=m;\nreturn {loop:n[1]};\n}\nreturn m", "note": "imqswt\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/n5rsx11\nOLD\nhttps://www.reddit.com/r/imagus/comments/15hwwri/comment/juvh7os\n\nEXAMPLES\nhttps://xhamster.com/photos/categories/blonde" }, "xHamster_video-x-q-p": { "link": "^(?:[a-z]{2}\\.)?xh(?:amster2?|spot)\\.(?:com|desi)/(?:video|moment)s/.+-.+", "res": ":\nconst use_HLS = false // Set to true to use HLS player instead of mp4 video\n\n$=$._.match(/\"sources\":({.+?}}}),\"/);\n$=$&&JSON.parse($[1]);\nvar h=Math.imul||function(e,t){var i=65535&e,n=65535&t;return i*n+(((e>>>16&65535)*n+i*(t>>>16&65535)&65535)<<16)|0};\nvar decode=e=>{if(!e||'object'!=typeof e)return e;let t=Array.isArray(e)?[]:{};return Object.keys(e).forEach(i=>{e[i]&&'object'==typeof e[i]?t[i]=decode(e[i]):'url'===i||'fallback'===i?t[i]=function(e){if('string'!=typeof e)return e;var t=0|e.length;if(!(t>0&&(1&t)==0&&/^[0-9a-fA-F]+$/.test(e)))return e;var i=function(e){if('string'!=typeof e)throw Error('not string');var t=e.length;if((1&t)!=0)throw Error('bad hex length');for(var i=Array(t>>1),n=0,s=0;n<t;n+=2){var r=parseInt(e.substr(n,2),16);if(r!=r)throw Error('bad hex');i[s++]=r}return i}(e);if(i.length<5)return e;var n=0|i[0];if(1!==n&&2!==n&&3!==n)return e;for(var s=function(e,t){var i=0|t;if(1===e)return function(){return 255&(i=h(i,1664525)+0x3c6ef35f|0)};if(2===e)return function(){return i|=0,i^=i<<13,i^=i>>>17,i^=i<<5,255&(i|=0)};if(3===e)return function(){var e=i=i+0x9e3779b9|0;return e^=e>>>16,e=0|h(e,0x85ebca77),e^=e>>>13,e=0|h(e,0xc2b2ae3d),255&(e^=e>>>16)};throw Error('Id: '+e)}(n,i[1]|i[2]<<8|i[3]<<16|i[4]<<24),r=Array(i.length-5),o=5,a=0;o<i.length;o++,a++)r[a]=(i[o]^s())&255;return function(e){for(var t='',i=0;i<e.length;i++){var n=e[i].toString(16);n.length<2&&(n='0'+n),t+='%'+n}try{return decodeURIComponent(t)}catch(t){for(var s='',r=0;r<e.length;r++)s+=String.fromCharCode(e[r]);return s}}(r)}(e[i]):t[i]=e[i]}),t};\n$=$&&decode($);\nif(use_HLS)return {loop:$.hls?.h264?.url||''};\n$=$.standard?.h264;\nreturn $ ? [[['#'+$.pop()?.url,$.find(i=>/^(36|48)0p/.test(i.quality))?.url||'']]] : ''", "note": "imqswt\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/nhov4j0\nOLD\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/n5rsx11\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/l3faz1j\n\n\n!!!\n- в фильтре есть возможность выбрать тип видео - HLS/mp4. Качество видео в формате HLS выше, но его сложнее загружать. Переключатель находится в третьем поле сверху:\nconst use_HLS = (false/true);\n- в некоторых случаях требуется повторное наведеие курсора.\n==\n- The sieve has the option to select the type of video - HLS/mp4. HLS has a higher video quality, but it is more difficult to download. The switch is located in the third field from the top:\nconst use_HLS = (false/true);\n- in some cases, pointing the cursor again is required.\n\n\nПРИМЕРЫ / EXAMPLES\nhttps://xhamster.com/categories/milf\nhttps://xhamster.com/categories/milf/shorts\nhttps://www.reddit.com/domain/xhamster.com/new\nhttps://www.reddit.com/domain/xhamster.desi/new" }, "Xiaohongshu": { "link": "^xiaohongshu\\.com/(?!user/profile/[a-f0-9]{24}$)(?:[^/]+/)*([a-f0-9]{24})(?:$|\\?)", "res": ":\nconst use_sidebar = true\n\n$=JSON.parse($._.match(/__INITIAL_STATE__\\s*=\\s*({.+?})<\\//)[1].replace(/:undefined/g,':\"\"')).note.noteDetailMap[$[1]].note;\nconst t=[$.title,$.user?.nickname,new Date($.time).toLocaleDateString(),$.desc].filter(Boolean).join(use_sidebar?'\\n':' | ');\n$=($.video?.media?.stream?.h264||$.imageList||[]).map((i,n)=>[i.urlDefault||i.masterUrl,!n?t:'']);\nif(use_sidebar){\n$[0][1]=`<imagus-extension type=\"sidebar\">${t}</imagus-extension>`;\nthis.TRG.IMGS_ext_data=$;\n}\nreturn use_sidebar?{loop:'imagus://extension'}:$", "img": "^(sns-(?:avatar|webpic)-qc\\.xhscdn\\.com/[^?]+).*", "to": "$1", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/1artw9b/comment/kr34nny\n\n\n!!!\nHow to turn on / disable sidebar:\nconst use_sidebar = true / false\n\n\nEXAMPLES\nhttps://www.xiaohongshu.com/explore" }, "xkcd": { "link": "^(?:m\\.)?(xkcd\\.(?:org|com)/\\d{1,5})/?$", "url": "$1/info.0.json", "res": ":\nif ($._[0] != '{') $ = false\nelse $ = JSON.parse($._), $ = [[$.num > 1050? [$.img.replace(/(\\.\\w+)$/, '_2x$1'), $.img] : $.img, [$.year, ('0'+$.month).slice(-2), ('0'+$.day).slice(-2)].join('-') + ' (#' + $.num + ') | ' + $.safe_title + ' - ' + $.alt + ' ' + $.link]]\nreturn $", "note": "EXAMPLES\nhttps://xkcd.com/archive/\nhttps://www.reddit.com/domain/xkcd.com/new/" }, "XNXX-x-p": { "link": "(.*\\.)?xnxx.com|xnxx-ru.com\\/(prof-)?video-.*", "res": ":\nconst url = $._.match(/setVideoUrlHigh.*\\.mp4\\?.*?'/)[0].replace(/setVideoUrlHigh.*\\('(.*?)'/, '$1');\n\nreturn url;", "note": "gpl2731\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=220#13\nOLD\nhttps://www.reddit.com/r/imagus/comments/iv556b/nsfw_bunch_of_sieves_for_popular_adult_site_videos/\n\n\n!!!\n- небольшой размер видео потому что сайт использует HLS для HD-видео (пока не поддерживается) \n- платные видео (значок GOLD) недоступны.\n==\n- HD videos are in HLS only (not supported so far) \n- paid videos (GOLD icon) are not available.\n\nПРИМЕРЫ / EXAMPLES\nhttps://www.xnxx.com/search/3d-hentai/8\nhttps://www.xnxx.com/search/milf+blowjob" }, "XVideos|XV-ru-x-q-p": { "link": "^(?:[^/]+\\.)?(?:xvideos(?:-ru\\d+)?|xv-ru|xv-vid)\\.com\\/(?:search-video\\/|video[\\d./]).+", "loop": 1, "res": ":\nconst use_mp4 = true; // <- Set to true for mp4 video, false for HLS.\nif(!use_mp4){\n$=$._.match(/html5player\\.setVideoHLS\\('([^']+)/)?.[1]||''\nthis.TRG.IMGS_ext_data = [\n '//' + `data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"640\" height=\"480\"></svg>`,\n `<imagus-extension type=\"videojs\" url=\"${$}\"></imagus-extension>`\n]\nreturn $?{loop:'imagus://extension'}:''\n}\nreturn $._.match(/setVideoUrlHigh\\([\"']([^\"']+)/)?.[1]||''", "note": "imqswt\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/mz4tmu4\nOLD\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/kwscpo5\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=220#13\n\n\n!!!\nВ фильтре есть возможность настроить размер (от 480 до 1080) и формат (MP4 / HLS). MP4 позволяет сохранить видео, но имеет более низкое разрешение. Для сохранения видео в высоком разрешении пользуйтесь специализированными программами загрузки, например IDM.\nНайдите и замените на нужное значение:\nconst use_mp4 = false; // <- Set to true for mp4 video, false for HLS.\nconst HLS_resolution = 1080;// <- Set resolution\n==\nThe sieve has the ability to adjust the size (from 480 to 1080) and format (MP4 / HLS). MP4 allows you to save videos, but has a lower resolution. To save videos in high resolution, use specialized download programs, such as IDM.\nFind and replace with the desired value:\nconst use_mp4 = false; // <- Set to true for mp4 video, false for HLS.\nconst HLS_resolution = 1080;// <- Set resolution\n\n\nПРИМЕРЫ / EXAMPLES\nhttps://www.xv-ru.com/c/Milf-19/4\nhttps://ru.xvideos-ru3.com/\nhttps://www.xv-ru.com/c/s:uploaddate/Teen-13\nhttps://www.xv-ru.com/?k=perfect" }, "XYZcomics-x-p": { "link": "^xyzcomics\\.com/.*/$", "res": ":\nlet parser = new DOMParser();\nlet doc = parser.parseFromString($._, \"text/html\");\nlet images = doc.querySelectorAll('#jig1-html ul li a');\nif(images.length === 0) return null;\nlet final = [];\nfor(image of images){\n final.push([image.href])\n}\nreturn final;", "note": "Randlai\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=620#12\n\n\nПРИМЕРЫ / EXAMPLES\nhttps://xyzcomics.com/porn-dude/\nhttps://xyzcomics.com/tag/3dcaptor/" }, "Yahoo-m-p": { "link": "^(?:(?:images|video)\\.search\\.yahoo\\.com/(?:search/images|images/view|video/play)[?;](?:[^&]+&)*?(?:imgurl|rurl)=(?:https?(?:%3A%2F%2F|://))?([^&]+).*|news\\.yahoo\\.com/.+)", "dc": 3, "loop": 3, "img": "^(?:[sl]\\d?\\.yimg\\.com/|yahoo.com/\\w\\w/)\\w\\w/api/res/(?:[^/]+/)+?(https?://.+)", "to": ":\nif(!$[1])$[1] = this.node.offsetParent.querySelector('img[src]')?.src\nreturn $[1] ? ($[2] ? ($[1]||'//') + $[2] : $[1].replace(/\\.cf\\.\\w{3,4}$/, '')) : ''", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/130svfu/comment/jtd4cv9\n\nEXAMPLES\nhttps://news.yahoo.com/us/\nhttps://news.yahoo.com/politics/\nhttps://video.search.yahoo.com/search/video;?p=funny\nhttps://images.search.yahoo.com/search/images;?p=valentine&fr2=piv-web&fr=sfp" }, "YANDEX_Archive": { "img": "^(yandex\\.ru/archive/api/image\\?id=.+&type)=thumb", "ci": 2, "to": "$1=original", "note": "hababr\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=3020#17\n\nПРИМЕРЫ\nhttps://yandex.ru/archive/search?text=затмение&index=mass_media&updateDate=0\nhttps://yandex.ru/archive/search?text=соревнования&index=mass_media&updateDate=0" }, "YANDEX_Disk-h": { "link": "^(?:yadi\\.sk|disk\\.yandex\\.(?:com|ru))/\\w/\\w+(/\\w+)?", "res": ":\nlet meta = document.querySelector('head > meta[name=\"referrer\"]');\nif (!meta) {\n meta = document.createElement('meta');\n meta.name = 'referrer';\n meta.content = 'same-origin';\n document.getElementsByTagName('head')[0].appendChild(meta);\n} else if (meta.attributes.content.value !== 'same-origin') {\n meta.attributes.content.value = 'same-origin';\n}\nlet u, m=$._.match(/id=\"store-prefetch\">({.+?})<\\/script/)?.[1];\nif(m)m=JSON.parse(m);\nif(m?.resources)m=Object.values(m.resources);\nif(u=m?.[0]?.videoStreams?.videos?.pop()?.url)return {loop:u};\nif(u=$[1]&&m?.find(i=>i.meta?.original))return u.meta.original;\nreturn m?.filter(i=>i.meta?.original||i.meta.xxxlPreview).map(i=>[i.meta.original||i.meta.xxxlPreview])||''", "img": "^(?:\\d\\.)?downloader\\.disk\\.yandex\\.(?:com|ru)/preview/[\\da-f]{64}/(?:inf/)?[^?]+\\?(?:[^&]+&)*?(?:content_type=image).+", "to": ":\nreturn $[0].replace(/&crop=[^&]*/,'').replace(/(&size=)[^&]+/,'$110000x10000')", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/m0idya2\nOLD\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/lfbh47p\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3540#20\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=1160#6\n\n\n!!!\nSometimes got a gray spinner but it was caused by redirection to a captcha page.\n\n\nПРИМЕРЫ\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1360#11" }, "YANDEX_Fotki-h": { "img": "^(img\\d*-fotki\\.yandex\\.(?:ru|net)/get/\\d+/\\S+/\\w+_).+", "to": "$1orig", "note": "64h\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1080#8\n\nПРИМЕРЫ\nhttps://forum.rutoken.ru/topic/2673/" }, "YANDEX_Images": { "link": "^ya(?:ndex)?\\.\\w+/images/search\\?\\S+?img_url=([^&]+).*", "loop": 1, "img": "^avatars\\.mds\\.yandex\\.net/i\\?id=[\\da-f]+-\\d+-images-thumbs&ref=rim&n=33&w=\\d{3}&h=[123]\\d\\d$", "to": ":\nif(!$[1])return $[0].slice(0,-9)+'0&h=0'\n\nconst original_img_url = decodeURIComponent($[1]);\nconst inner_html = this.TRG.parentNode.innerHTML.replace(/&/g, '&');\nconst yandex_thumb_url = inner_html.match(/avatars\\.mds\\.yandex\\S+n=13|yandex-images\\.clstorage\\.net\\/[^\"]+/)?.[0]||'';\n\nreturn original_img_url + '\\n' + yandex_thumb_url;", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/1heqtn2/comment/m78u8tw\nOLD\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/kuh3hxu\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1080#8\n\n\n!!!\n- Если увеличения не происходит, рекомендуется навести на значок с размером изображения (внизу справа).\n- Фильтр не работает на странице самой картинки (раздел \"Похожие\" внизу), показывает только 400*300.\n\n\nПРИМЕРЫ\nhttps://yandex.ru/search/?text=дятел&lr=38&clid=2359101\nhttps://yandex.ru/images/search?rpt=imageview&lr=38&url=https://avatars.mds.yandex.net/get-images-cbir/1974228/VFn0quRacFJhdGBgIsq2BQ8757/orig&cbir_id=1974228/VFn0quRacFJhdGBgIsq2BQ8757" }, "YANDEX_Images_sideblock": { "img": "^(?:avatars\\.mds\\.yandex\\.net/i\\?id=\\S+images-thumbs|yandex-images\\.clstorage\\.net).+", "loop": 2, "to": ":\n\n// --- MM Gallery (Left Sideblock) ---\n\nif (this.TRG.className == 'MMThumbImage-Image') {\n for (const item of window.wrappedJSObject.Ya.SerpContext.serpItems) {\n if (item.thumb.url.includes($[0])) return item.img_href + '\\n' + item.thumb.url;\n }\n}\n\n// --- Related Images (Right Sideblock) ---\n\nif (this.TRG.className == 'RelatedImages-Thumb') {\n for (const element of window.wrappedJSObject.Ya.reactBus.e['cbir:drag-start']) {\n if (element.ctx === undefined) continue;\n for (const rim_item of element.ctx._reactInternals.return.pendingProps.state.rimForItem) {\n if (rim_item.thumb.url.includes($[0])) {\n let urls = '';\n for (const preview_item of rim_item.preview) {\n urls += preview_item.origin?.url ? preview_item.origin?.url + '\\n' + preview_item.url + '\\n' : preview_item.url + '\\n';\n }\n return urls;\n }\n }\n }\n}\n\nreturn $[0];", "note": "64h\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1120#21\nOLD\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1080#3\n\n!!!\nДля увеличения Я-Картинки > ЛКМ > \"Cвязанные картинки\". Работает пока только в Firefox / Waterfox." }, "YANDEX_Market-s": { "link": "^market\\.yandex\\.[^/]+/(?:product-|c(?:c|ard)/).*", "res": ":\nlet newUrl = $._.match(/window\\.location\\.replace\\(\"(.+?)\"\\)/)?.[1] || $[0];\nnewUrl = newUrl.replace(/(\\/reviews)?\\?/, '/reviews?');\n\nlet x = new XMLHttpRequest;\nx.open('GET', newUrl, false);\nx.send();\n$._ = x.responseText + $._;\nconst page = new DOMParser().parseFromString($._, \"text/html\");\n\n// product images\nlet isVideo = (o => o?.video || o?.entity === \"yandex_video\");\nlet hasVideo = false, data = JSON.parse($._.match(/({\"widgets\":{\"@card\\/[^<]+?\"origUrl\".+?})<\\/noframes>/)[1]);\nlet imgs = [];\nObject.values(data.collections.mediaItem).forEach(o => {\n let origImg = isVideo(o) ? ['',`<imagus-extension type=\"videojs\" url=\"${o.streams?.[0]?.url}\"></imagus-extension>${o.title||''}`] : o.origUrl ? [o.origUrl] : '';\n if (isVideo(o)) hasVideo = true;\n // skip duplicates\n if(origImg&&!o.picture&&!imgs.find(i => i[0]?.[0] == origImg))imgs.push(origImg);\n});\n\n// gallery\nlet mediaInfo;\ntry {\n mediaInfo = JSON.parse($._.match(/>({\"widgets\":{\"@MarketNode\\/UgcMediaGallery\".+?})<\\//)?.[1]);\n} catch (error) {}\n\n// reviews\nif (mediaInfo?.collections?.review) {\n for (const r of Object.values(mediaInfo.collections.review).reverse()) {\n r.photos.forEach(p => {\n const text = ['⭐' + r.averageGrade];\n if (r.comment) text.push(r.comment);\n if (r.pro) text.push('👍🏻 ' + r.pro);\n if (r.contra) text.push('👎🏻 ' + r.contra);\n if (r.created) text.push(new Date(r.created).toISOString().substring(0,10))\n imgs.push([`https://avatars.mds.yandex.net/get-${p.namespace}/${p.groupId}/${p.imageName}/orig`, text.join(' | ')]);\n })\n }\n}\n\nlet userImgs = [...page.querySelectorAll('[data-zone-name=\"ugc-media-gallery\"] img')].map(i => i.src.replace(/\\/\\d+x\\d+$/, '/orig'));\nfor (const ui of userImgs) {\n if (!imgs.find(i => i[0] == ui)) {\n imgs.push([ui, 'User Image']);\n }\n}\n\n// videos\nif (mediaInfo?.collections?.ugcvideo) {\n let vidInfo = Object.values(mediaInfo?.collections?.ugcvideo);\n for (const img of imgs) {\n // let id = i[0].match(/\\/get-vh\\/\\d+\\/(\\w+)\\//)?.[1];\n if (!img[0].includes('/get-vh/')) continue;\n let info = vidInfo.find(v => v.metaInfo?.thumbnail == img[0]);\n if (!info) continue;\n hasVideo = true;\n img[1] = `<imagus-extension type=\"videojs\" url=\"${info.metaInfo.streamUrl}\"></imagus-extension>${info.title}`;\n img[0] = '';\n }\n}\n\nif (hasVideo) {\n this.TRG.IMGS_ext_data = imgs;\n return { loop: 'imagus://extension' };\n}\n\nreturn imgs;", "img": "^mdata\\.yandex\\.[^/]+/i\\?path=[^/]+\\.(?:jpe?g|png|gif|bmp)$", "note": "hababr + Imagus_fan (edit)\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/nv8qweo\nOLD\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/mo8966x\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/lw25occ\n\n\n!!!\n- Есть показ фото и видео покупателей.\n- Курсор следует наводить на название или на весь блок с описанием товара.\n\n\nПРИМЕРЫ\nhttps://market.yandex.ru/catalog--televizory/26960210\nhttps://market.yandex.ru/product--pylesos-kitfort-kt-509/12349421/reviews?cpa=1&uniqueId=920840\nhttps://market.yandex.ru/catalog--planshety/54545\nвнешние ссылки:\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1360#11" }, "YANDEX_Realty-s": { "link": "^realty\\.ya(?:ndex)?\\.ru/offer/\\d+", "ci": 1, "res": ":\nconst ret = [];\n\nconst data = JSON.parse(/window.INITIAL_STATE\\s*=\\s*({[^]+?})[;\\s]*<\\/script>/gm.exec($._)[1]);\n\nfor (let i = 0; i < data.offerCard.card.fullImages.length; i++) {\n ret.push([\n data.offerCard.card.fullImages[i],\n i === 0 ? data.offerCard.card.description : ''\n ]);\n}\n\nreturn ret;", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/m9t02fu\nOLD\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=2060#7\n\n!!!\nКурсор наводить на название объекта, либо на весь блок с информацией об объекте.\n\nПРИМЕРЫ\nhttps://realty.ya.ru/snyat/komnata/\nhttps://realty.ya.ru/kupit/kvartira/dvuhkomnatnaya/\nhttps://realty.ya.ru/kupit/kommercheskaya-nedvizhimost/" }, "YANDEX_video": { "link": "^(?:yandex_vid/([^!]+)!(.+)|frontend\\.vh\\.yandex\\.com/player/.+|(ya(?:ndex)?\\.(?:ru|com)/video/preview/\\d+).*)", "url": ": $[3] || !$[1] ? $[0] : this.yandex_vid_data ? '' : $[2]", "res": ":\nif($[3])return {loop:$._.match(/SourcePathLink\"[^>]+href=\"([^\"]+)/)?.[1]||''}\nif(!$[1]){\n$=JSON.parse($._).content?.streams?.pop()?.url;\nreturn $ ? {loop:$} : ''\n}\nthis.yandex_vid_data=this.yandex_vid_data||Object.values(JSON.parse($._.match(/({\"widgets\":{\"@card\\/(?:Actions|StickyOffer|PublicProfileReviewSnippet)\":.+?)<\\/noframes>/)?.[1]||'{}').collections?.mediaItem);\n$=this.yandex_vid_data.find(i=>RegExp($[1].slice(0,-7)).test(i.previewUrl));\nreturn {loop:$.streams[0].url}", "img": "^(avatars(?:\\.mds)?\\.yandex\\.net/get-([^?]+)/)[^?].*", "loop": 2, "to": ":\nconst vid=$[2].slice(0,3)==='vh/', id=vid&&location.pathname?.startsWith('/maps/')&&document.body.outerHTML.match(RegExp(`\"id\":\"([^\"]+)\"[^{[\\\\]}]+?${$[2]}`))?.[1]\nif(id)return 'https://frontend.vh.yandex.com/player/'+id+'.json?hidden[]=report&hidden[]=externalPlayback&adsdk-container-width=0&adsdk-container-height=0&vpuid=qc27k7jegl';\nreturn vid&&/\\/(?:reviews|public-profile)/.test(location.pathname) ? '//yandex_vid/'+$[2]+'!'+location.href : $[1]+'orig'", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/nne1tgq\nOLD\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/ndsddye\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/mhctzzm\n\n\n\nПРИМЕРЫ\nhttps://yandex.ru/video/\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1360#11\n+\nhttps://market.yandex.ru/card/krossovki-zhenskiye-iskusstvennaya-kozha-tekstil-polimernyy-material/103813746415/reviews?do-waremd5=0Rrp6f3H2U0CkyHxZuuh5A&context=withMedia-model&ogV=-3\nhttps://market.yandex.ru/public-profile/luxurypersonnel-sochi?selectedTab=GRADE\n+\nhttps://yandex.ru/maps/org/az_art/93043778463/gallery/?display-text=%D0%9C%D1%83%D0%B7%D0%B5%D0%B8&ll=37.637054%2C55.756629" }, "YAPfiles.ru-h": { "link": "^yapfiles\\.ru\\/show\\/\\d+\\/.*\\.html$", "ci": 1, "res": "name=\"direct_link\" value=\"([^\"]+)\"", "note": "Baton34V\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=220#20\nOLD\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=1020#14\n\nПРИМЕРЫ\nhttps://www.yapfiles.ru/\nhttps://www.reddit.com/domain/yapfiles.ru/new/" }, "YaPlakal": { "img": "(\\w\\d\\d?\\.yaplakal\\.com/pics/pics_)preview(/\\d+/\\d+/\\d+/\\d+\\.jpg)", "to": "$1original$2", "note": "Baton34V\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=2940#9\n\nПРИМЕРЫ\nhttps://pics.yaplakal.com/\nhttps://www.yaplakal.com/forum2/topic2653766.html" }, "Yapx.ru-h": { "link": "^yapx\\.ru/(?:album|image)s?/\\w+", "res": ":\n$=JSON.parse($._.match(/view_image\\s*=\\s*(.+?)<\\/script/)[1]);\nreturn $.images.map(i=>[i.pl?.src])", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/l6ahcr8\nOLD\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3720#20\n\nПРИМЕРЫ\nhttps://rutracker.org/forum/viewtopic.php?t=5615920\nhttps://rutracker.org/forum/viewtopic.php?t=6499793\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1360#11" }, "Yarn-h-p": { "link": "^(yarn\\.co/)yarn-clip/([\\da-f-]{36}).*", "img": "^y\\.(yarn\\.co/)([\\da-f-]{36}).*", "to": "y.$1$2.mp4", "note": "EXAMPLES\nhttps://yarn.co/yarn-find?text=movie&p=1\nhttps://www.reddit.com/domain/yarn.co/new/" }, "Yelp": { "useimg": 1, "link": "^yelp\\.com/biz(?:/[a-z0-9-]+|_photos/\\w+)$", "res": ":\nconst max_images = 300 // Maximum images in album. Lower number loads faster.\n\nconst x=new XMLHttpRequest(), u=$._.match(/(biz_photos)(\\/[\\w-]+)(?=[?\"])/);\nlet o, m=[];\nfor(i=0;i<max_images;i+=30){\nx.open('GET','https://www.yelp.com/'+u[1]+'/get_media_slice'+u[2]+'?start='+i+'&dir=f',false);\nx.setRequestHeader(\"X-Requested-With\",\"XMLHttpRequest\");\nx.send();\no=x.responseText[0]==='{'&&JSON.parse(x.responseText).media||[];\nm.push(...o.map(x=>[x.src?.replace(/(video_contribution\\/\\d+\\/)[^\\/]+(\\/.+)/,'$1progressive_video_high$2#mp4'),x.media_data?.caption]));\nif(o.length<30)break;\n}\nreturn m", "img": "^(?:(s\\d(yelp\\d-a\\.akamaihd\\.net|-media\\d\\.\\w\\w\\.yelp(?:cdn|assets)\\.com)/[a-z]?photo/[\\w-]+/)(?!o)[^.]+|yelp\\.com/\\w+/consumer_video_contribution/.+)", "to": ":\nreturn $[1] ? $[1]+'o' : $[0]?.replace(/(video_contribution\\/\\d+\\/)[^\\/]+(\\/.+)/,'$1progressive_video_high$2#mp4')", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/lkmy7ux\n\nEXAMPLES\nhttps://www.yelp.com/search?cflt=beautysvc&find_loc=San+Francisco%2C+CA%2C+US\nhttps://www.yelp.com/search?cflt=nightlife&find_loc=San+Francisco%2C+CA%2C+US\nhttps://www.yelp.com/search?cflt=restaurants&find_loc=San+Francisco%2C+CA%2C+US" }, "Ylilauta-g": { "img": "^([a-z]\\.ylilauta\\.org/)(\\w+)/([^-]+)-[^.]+\\.avif", "to": "$1$3.$2", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/131uisg/comment/k4yfb7c\nOLD\nhttps://www.reddit.com/r/imagus/comments/131uisg/comment/jo3ba7h\n\nEXAMPLES\nhttps://ylilauta.org/pelit/\nhttps://ylilauta.org/esports/" }, "Yodayo-g": { "link": "^(yodayo\\.com/)(1/posts/[a-f\\d-]{36}).*", "url": "https://api.$1v$2?width=2400", "res": ":\n$=JSON.parse($._);\nif(!$.video_media)return $.photo_media.map(i=>[i.url]);\n$=[...$.photo_media||[], ...$.video_media||[]];\nthis.TRG.IMGS_ext_data=$.map(i=>i.dash_url||i.hls_url ? ['',`<imagus-extension type=\"videojs\" url=\"${i.dash_url||i.hls_url}\"></imagus-extension>`] : [i.url]);\nreturn {loop:'imagus://extension'}", "img": "^((?:model)?photos\\.yodayo\\.com/[a-f\\d-]{36})(?:_width=\\d+&height=\\d+)?([^?]*).*", "to": "$1#$2 .png .jpg .jpeg #\n$&", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/n5e9jew\nOLD\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/lmkqkl2\nhttps://www.reddit.com/r/imagus/comments/15dz344/comment/jubjesu\n\n\nEXAMPLES\nhttps://yodayo.com/1/users/2cd3c9cd-1148-42b1-8b45-69035ac43804/\nhttps://yodayo.com/explore/?key=GREEN&type=posts&sort=recent\nhttps://yodayo.com/1/users/a06f278b-7781-43a4-87cb-5354925afa96/?tab=overview" }, "YouJizz-x-p": { "link": "(.*\\.)?youjizz.com\\/videos\\/.*-(.*?)\\.html.*", "url": "https://www.youjizz.com/videos/embed/$2", "res": ":\nconst url = $._.match(/dataEncodings.*?filename\\\":\\\".*264\\.mp4\\?.*?\\\"/)[0].replace(/dataEncodings.*(\\\\\\/\\\\\\/.*?)\\\"/, '$1').replace(/\\\\\\//g, '/');\n\nreturn `https:${url}`;", "note": "papadocTOMP\nhttps://www.reddit.com/r/imagus/comments/iv556b/nsfw_bunch_of_sieves_for_popular_adult_site_videos/\n\nEXAMPLES\nhttps://www.youjizz.com" }, "Youla.ru-s": { "link": "youla\\.ru/\\S+/\\S+/\\S+/\\S+", "res": ":\nvar i = $._.indexOf('window.__YOULA_STATE__ = {');\nif(i<0) {return null;}\nvar t = $._.indexOf('};', i);\nif(t<0) {return null;}\nvar js=JSON.parse($._.substring(i+25,t+1));\nvar res = [];\nfor (let img of js.entities.products[0].images){\n res.push([img.url]);\n}\nreturn res;\n", "img": "((?:cache3|cdn\\d)\\.youla\\.io/files/images/)\\d+_\\d+(?:_out)?(/\\w+/\\w+/\\S+\\.\\w+)", "to": "$1orig$2", "note": "Baton34V\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3360#17\n\nПРИМЕРЫ\nhttps://youla.ru/moskva/auto\nhttps://youla.ru/moskva/smartfony-planshety" }, "YouPic-g": { "link": "^youpic\\.com/image/\\d+", "res": ":\nvar x=JSON.parse($._.match(/{\"@context\"[^\\n]+/)[0]), i = x.image.split(/(?:huge|large|medium|small|link)/)\nreturn [[['#'+i[0]+'huge'+i[1], i[0]+'large'+i[1]], [x.name, x.description].filter(Boolean).join(' | ')]]", "img": "^((?:cdn\\.youpic\\.com|df0179xsabjj8\\.cloudfront\\.net)/)(?:huge|large|medium|small|tiny)(/\\d+_[\\da-z]+_\\d+)", "to": "#$1huge$2\n$1#large medium#$2", "note": "Baton34V\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3360\n\nПРИМЕРЫ / EXAMPLES\nhttps://youpic.com/inspiration" }, "YOUTUBE-h-q-p": { "link": "^(?:(?:(?:(?:\\w+\\.)?[yY][oO][uU][tT][uU][bB][eE](?:-nocookie|kids)?\\.com|youtube\\.googleapis\\.com)/(?:.*?\\#/)?(?:(?:(?:v|embed|(?:liv)?e|shorts)/(?!videoseries|live_stream))|(?:(?:(?:watch|movie)(?:_popup)?(?:\\.php)?/?)?(?:\\?|\\#!?)(?:.*?[&;])??v=)))|youtu\\.be/)([0-9A-Za-z_-]{11})(?:\\?(thumb\\b))?(?:[?&](?:star)?t=(\\d+(?:\\.\\d+)?)s?)?(?:&end=(\\d+(?:\\.\\d+)?)s?)?.*$", "url": ": (() => {\n var disable_on_thumbs = true,\n disable_on_links = false,\n disable_on_iframe = true;\n const n = this.node;\n if (\n disable_on_iframe && n.IMGS_TRG?.localName === 'iframe' ||\n disable_on_links && !n.IMGS_TRG && n.nodeName !== 'IMG' ||\n disable_on_thumbs && (/\\/embed\\/[\\w-]{11}\\?thumb\\?/.test(n.href) || n.id === \"thumbnail\" ||\n this.TRG.matches?.('.ytp-ce-covering-overlay, .ytp-modern-videowall-still') ||\n this.TRG.closest?.('.sponsorThumbnailLabel, .ytThumbnailViewModelHost, #thumbnail-container')\n ) ||\n\n (n.id !== undefined && n.id !== 'title' && n.id !== 'video-title' &&\n /^(?:yt-simple-endpoint style-scope ytd-compact-movie-renderer|movie-metadata style-scope ytd-compact-movie-renderer|badge badge-style-type-ypc style-scope ytd-badge-supported-renderer style-scope ytd-badge-supported-renderer|ytp-impression-link(?:-[a-z]+)?|badge badge-style-type-live-now-alternate style-scope ytd-badge-supported-renderer style-scope ytd-badge-supported-renderer|ytp-youtube-button ytp-button yt-uix-sessionlink|ytp-title-link yt-uix-sessionlink|style-scope ytd-thumbnail-overlay-hover-text-renderer|progress|style-scope ytd-thumbnail-overlay-toggle-button-renderer|playlist-drag-handle style-scope ytd-playlist-panel-video-renderer|style-scope ytd-thumbnail(?:-overlay-time-status-renderer)?|style-scope ytd-playlist-panel-video-renderer|editable style-scope ytd-playlist-panel-video-renderer style-scope ytd-playlist-panel-video-renderer|yt-simple-endpoint style-scope ytd-structured-description-playlist-lockup-renderer|style-scope ytd-macro-markers-list-item-renderer|style-scope ytd-structured-description-playlist-lockup-renderer|yt-simple-endpoint style-scope ytd-structured-description-video-lockup-renderer|style-scope ytd-structured-description-video-lockup-renderer|style-scope ytd-badge-supported-renderer|badge badge-style-type-simple style-scope ytd-badge-supported-renderer style-scope ytd-badge-supported-renderer|yt-simple-endpoint style-scope ytd-compact-video-renderer|badges style-scope ytd-compact-video-renderer|style-scope ytd-video-meta-block|yt-simple-endpoint style-scope ytd-comment-view-model)$/.test(n.className) ||\n this.TRG.matches?.('ytrb-likes, ytrb-dislikes, ytrb-bar, ytrb-no-rating, YTD-BADGE-SUPPORTED-RENDERER, .ytp-modern-videowall-still-image, .ytp-ce-video-duration, .ytp-modern-videowall-still-info-author, .ytp-modern-videowall-still-view-count-and-date-info, .ytp-modern-videowall-still-info-duration, .yt-lockup-view-model__content-image, yt-simple-endpoint') ||\n this.TRG.closest?.('.sponsorThumbnailLabel, .ytp-cued-thumbnail-overlay, .ytThumbnailHoverOverlayToggleActionsViewModelHost, .ytp-chrome-bottom, ytmusic-menu-navigation-item-renderer')\n )\n ) {\n this.TRG.IMGS_c = true;\n throw 'Imagus: ignore element';\n }\n return 'https://www.youtube.com/embed/' + $[1] + '?' + $[2] + '&' + $[3] + '&' + $[4]\n})()", "res": ":\n// config options\nvar config = {\n// change the display order of the image/videos by using 1, 2, 3, or 4. disable with 0\n order: {\n \"thumb\": 1,\n \"native (360p)\": 2,\n \"hls (1080p/4K)\": 3,\n \"embed (360p-1080p)\": 4\n },\n returnDislikes: true, // get dislikes and rating from ReturnYouTubeDislike.com\n useSidebar: true, // show description at the left of the thumbnail (Requires either thumbVideoInfo, nativeVideoInfo, or both to be set to true)\n useSmallerThumbnail: false, // use lower resolution thumbnail\n thumbVideoInfo: true, // display sidebar or detailed caption on thumbnail\n nativeVideoInfo: false, // display sidebar or detailed caption on native player\n nativeVideoTopComments: true, // display top comments with mp4 video\n showVerticalThumbnail: true // true shows vertical thumbnails on vertical videos\n}\n\nfallback = (error) => {\n this.TRG.IMGS_ext_data = [['', `<imagus-extension type=\"iframe\" url=\"https://youtube.com/embed/${$[1]}?${timeParam}\"></imagus-extension>${error}`]]\n return { loop: 'imagus://extension' }\n}\n\nif(config.order['embed (360p-1080p)']&&!config.order.thumb&&!config.order['native (360p)']&&!config.order['hls (1080p/4K)'])return fallback()\n\nvar fL, fH, f = {}, g = false, cipher, decsig, o, vo, mfr, ps, basejs, hls, player_param, visit_id = $._.match(/\"VISITOR_DATA\":\"([^\"]+)/)?.[1]\nvar x = new XMLHttpRequest\nwindow.imagusCache = window.imagusCache || {}\n\nvar timeParam = ($[3] ? 't=' + $[3] + ($[4] ? ',' + $[4] : '') + '&' : '')\nvar baseJsUrl = 'https://www.youtube.com' + JSON.parse($._.match(/\\\"[^\\\"]+player_[^\\\"]+\\/base.js[^\"]*\\\"/)[0])\nif (window.imagusCache[baseJsUrl]) {\n basejs = window.imagusCache[baseJsUrl]\n} else {\n try {\n x.open('GET', baseJsUrl, false)\n x.send()\n basejs = x.responseText\n window.imagusCache[baseJsUrl] = basejs\n } catch (e) {\n return fallback(this)\n }\n}\n\nconst escapeRegExp = s => s.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&')\nconst parseunthrottle = data => {\n const helper = [/'use strict';(var [A-Za-z0-9_$]+=[\"'][^\\n]+?[\"']\\.split\\([\"'][^\\n]+?[\"']\\)),/.exec(data)?.[1]||/'use strict';(var [A-Za-z0-9_$]+=\\[.+?\\]),[A-Za-z0-9_$]{1,3}[;,]/s.exec(data)?.[1], /[\\n;,]((?:var [A-Za-z0-9_$]{1,3}=function.+?;\\n\\n?){5,})[A-Za-z0-9_$]{1,3}=function/s.exec(data)?.[1]].filter(Boolean).join('\\n')\n const fnnameresult = /[A-Za-z0-9_$]=[A-Za-z0-9_$]\\[[A-Za-z0-9_$]\\[\\d+\\]\\]\\[[A-Za-z0-9_$]\\[\\d+\\]\\]\\|\\|null\\)&&\\([A-Za-z]=([^(]+?)(?:\\[(\\d+)\\])?\\([a-zA-Z0-9]\\)/.exec(data)\n var fnname = fnnameresult[1]\n if (fnnameresult[2]) fnname = new RegExp('var ' + escapeRegExp(fnname) + '\\\\s*=\\\\s*\\\\[(.+?)\\\\][,;]').exec(data)[1].split(',')[parseInt(fnnameresult[2])]\n const _argnamefnbodyresult = new RegExp(escapeRegExp(fnname) + '=function\\\\(([^\\\\)]+)\\\\){(.+?return \\\\w(?:\\\\.join\\\\([^\\\\)]+|\\\\[[A-Za-z0-9_$]\\\\[\\\\d+\\\\]\\\\]\\\\([A-Za-z0-9_$]\\\\[\\\\d+\\\\])\\\\))};', 's').exec(data)\n const [_, argname, fnbody] = _argnamefnbodyresult\n return new Function([argname], helper + '\\n' + fnbody.replace(/if\\(typeof [a-zA-Z0-9\\$_]+===[^\\),;]+\\)return \\w;/,''))\n}\ntry {\n var unthrottle = window.imagusCache[baseJsUrl + '_unthrottle'] || parseunthrottle(basejs)\n window.imagusCache[baseJsUrl + '_unthrottle'] = unthrottle\n} catch(e) {\n console.error('Imagus: cannot parse unthrottle function. Error:', e)\n}\n\nfunction nt(s) {\n var u = new URL(s)\n var p = u.searchParams\n var n = p.get('n')\n if (!n) return s\n p.set('n', unthrottle ? unthrottle(n) : '')\n u.search = p.toString()\n return u.toString()\n}\n\nconst getParam = (u='') => {\n try {\n x.open('GET', 'https://www.youtube.com/'+u+'#youtube_pp', false)\n x.send()\n var param = x.responseText.match(/\"playerParams\":\"([^\"]+)\",\"playerExtra/)?.[1]\n this._yt_player_param_ = param\n return param\n } catch (e) {\n console.error('Failed to get player param',e)\n return null\n }\n}\nplayer_param = this._yt_player_param_\n\nconst api_key = 'AIzaSyAO_FJ2SlqU8Q4STEHLGCilw_Y9_11qcW8'\nconst client_ver = '2.20211221.00.00'\nconst sigtime = Number(basejs.match(/signatureTimestamp\\s*:\\s*(\\d+)/)[1])\nconst vid = $[1]\nfunction player_response(embed) {\n x.open('POST', 'https://www.youtube.com/youtubei/v1/%70%6C%61%79%65%72?imagus&key=' + api_key, false)\n x.setRequestHeader('Content-Type', 'application/json')\n if (player_param) x.setRequestHeader('X-Goog-Visitor-Id', visit_id)\n var data = {\n context: {\n client: {\n clientName: 'WEB',\n clientVersion: client_ver\n }\n },\n videoId: vid,\n playbackContext: {\n contentPlaybackContext: {\n signatureTimestamp: sigtime,\n html5Preference: 'HTML5_PREF_WANTS'\n }\n },\n contentCheckOk: true,\n racyCheckOk: true\n }\n if (embed === 'agegate') data.context.client.clientScreen = 'EMBED'\n if (embed === 'embed') data.context.client = { clientName: 'TVHTML5_SIMPLY_EMBEDDED_PLAYER', clientVersion: '2.0' }\n if (embed) data.context.thirdParty = { embedUrl: 'https://www.youtube.com/' }\n if (player_param) data.params = player_param\n x.send(JSON.stringify(data))\n o = JSON.parse(x.responseText)\n mfr = o.microformat || mfr\n ps = o.playabilityStatus\n return ps.status === 'OK'\n}\n\nfunction video_response(embed) {\n x.open('POST', 'https://www.youtube.com/youtubei/v1/%70%6C%61%79%65%72?imagus&key=' + api_key, false)\n x.setRequestHeader('Content-Type', 'application/json')\n if (player_param) x.setRequestHeader('X-Goog-Visitor-Id', visit_id)\n var data = {\n context: {\n client: {\n clientName: 'ANDROID',\n clientVersion: '20.10.38',\n userAgent: 'com.google.android.youtube/20.10.38 (Linux; U; Android 11) gzip',\n osName: 'Android',\n osVersion: '11',\n }\n },\n videoId: vid,\n playbackContext: {\n contentPlaybackContext: {\n signatureTimestamp: sigtime,\n html5Preference: 'HTML5_PREF_WANTS'\n }\n },\n contentCheckOk: true,\n racyCheckOk: true\n }\n if (embed === 'agegate') data.context.client.clientScreen = 'EMBED'\n if (embed === 'embed') data.context.client = { clientName: 'TVHTML5_SIMPLY_EMBEDDED_PLAYER', clientVersion: '2.0' }\n if (embed) data.context.thirdParty = { embedUrl: 'https://www.youtube.com/' }\n if (player_param) data.params = player_param\n x.send(JSON.stringify(data))\n vo = JSON.parse(x.responseText)\n ps = o.playabilityStatus\n return ps.status === 'OK'\n}\n\nfunction getDislikes(id) {\n try {\n x.open('GET', `https://returnyoutubedislikeapi.com/Votes?videoId=${id}`, false)\n x.send()\n return JSON.parse(x.responseText)\n } catch (e) { }\n}\n\nconst prepResult = (res, content) => {\n // hls\n if(hls)res.push(['', `<imagus-extension type=\"videojs\" url=\"${hls}\"></imagus-extension>${title}`])\n // embeded player\n res.push(['', `<imagus-extension type=\"videojs\" url=\"https://youtube.com/embed/${$[1]}?${timeParam}\"></imagus-extension>`])\n\n if (config.useSmallerThumbnail) res[0][0] = res[0][0].replace('maxresdefault', '0')\n\n if (config.useSidebar) {\n content = content.replace(/https?:\\/\\/[\\w\\.\\/?=&+@#\\-]+/g, '<a href=\"$&\" target=\"_blank\">$&</a>')\n if(config.nativeVideoInfo&&fL?.length)res.find(i=>/\\.googlevideo\\.com\\/videoplayback\\?/.test(i[0]))[1] = `<imagus-extension type=\"sidebar\">${content}</imagus-extension>`\n if(config.thumbVideoInfo)res.find(i=>/\\.ytimg\\.com\\//.test(i[0]))[1] = `<imagus-extension type=\"sidebar\">${content}</imagus-extension>`\n } else {\n content = content.replace(/https?:\\/\\/[\\w\\.\\/?=&+@#\\-]+/g, '')\n content = content.replace(/[\\s\\n]*\\n[\\s\\n]*/g, ' | ')\n if(config.nativeVideoInfo&&fL?.length)res.find(i=>/\\.googlevideo\\.com\\/videoplayback\\?/.test(i[0]))[1] = content\n if(config.thumbVideoInfo)res.find(i=>/\\.ytimg\\.com\\//.test(i[0]))[1] = content\n }\n if(config.nativeVideoTopComments&&config.order['native (360p)']&&fL?.length)res.find(i=>/\\.googlevideo\\.com\\/videoplayback\\?/.test(i[0]))[1] = `<imagus-extension type=\"sidebar\">${getComments()}</imagus-extension>Sidebar comments can be disabled in the YOUTUBE-h-q-p sieve`\n var orderSort = Object.entries(config.order).filter(i=>i[1]>0).sort((a,b)=>a[1]-b[1]).map(i=>i[0])\n var ordered = orderSort.map(type => {\n switch (type) {\n case 'thumb': return res[0]\n case 'native (360p)': return res[1] || res[2]\n case 'hls (1080p/4K)': return res[2] || res[1]\n case 'embed (360p-1080p)': return res[3] || res[2] || res[1]\n }\n })\n ordered.length = res.length\n ordered = ordered.filter(Boolean)\n this.TRG.IMGS_ext_data = ordered\n return { loop: 'imagus://extension' }\n}\n\nif (!player_param) {\n for (let i of [null, 'embed', 'agegate']) if (player_response(i)) break\n if (['ERROR', 'LOGIN_REQUIRED'].indexOf(ps.status) != -1) player_param = getParam()||getParam('results?search_query=z')\n}\n\nif (player_param) for (let i of [null, 'embed', 'agegate']) if (player_response(i)) break\n\nif (['ERROR', 'LOGIN_REQUIRED'].indexOf(ps.status) != -1) return fallback('Failed to get thumbnail and video. Error: [' + ps.status + ', ' + ps.reason + ']. Using embed player as backup')\n// [ps.errorScreen.playerErrorMessageRenderer.thumbnail.thumbnails[0].url, '[' + ps.status + ', ' + ps.reason + ']']\n\nfor (let i of [null, 'embed', 'agegate']) if (video_response(i)) break\n\nvar q = o.videoDetails, r = mfr.playerMicroformatRenderer\nvar title = q.title, lenSec = parseInt(q.lengthSeconds), sText = r.title.simpleText, thumbnail = r.thumbnail.thumbnails[0].url+'?noloop'\nvar ss = lenSec % 60, mm = (lenSec - ss) / 60 % 60, hh = (lenSec - ss - mm * 60) / 3600\nvar lenStr = (hh === 0 ? '' : hh + ':') + ('0' + mm).slice(-2) + ':' + ('0' + ss).slice(-2)\nvar rt = Number(q.averageRating)\nvar dl = config.returnDislikes ? getDislikes(q.videoId) : undefined\nif (dl?.rating) {\n var colorShift = Math.round(120 * Math.max(0, dl.rating - 3) / 2) // rates from 0 to 3 will be red; from 3 to 5: scale from red to green\n var rateStyle = `background-color: hsl(${colorShift} 100% 31%); padding: 0 3px 0 1px; border-radius: 2px; color: white; line-height: 18px; display: inline-block`\n dl.rating = `<span style=\"${rateStyle}\">⭐${Math.round(dl.rating * 20 * 10) / 10}%</span>`\n}\nvar descr = [\n `<h3>${title}</h3>`,\n title !== sText && sText,\n 'Author:\\t<a href=\"//www.youtube.com/channel/' + q.channelId + '\" target=\"_blank\" style=\"color:white\">' + q.author + '</a>',\n 'Date:\\t' + (r.publishDate ? new Date(Date.parse(r.publishDate)).toLocaleString() : ''),\n 'Length:\\t' + lenStr,\n 'Views:\\t' + (q.viewCount | 0).toLocaleString(),\n dl ? `Rating:\\t${dl.rating} | 👍🏻${dl.likes?.toLocaleString()} | 👎🏻${dl.dislikes?.toLocaleString()} <br>(by returnyoutubedislike.com)` : '',\n '\\n' + q.shortDescription\n].filter(Boolean).join('\\n')\n\nif (ps.status !== 'OK') return prepResult([[thumbnail, '']], `<h3>${ps.status} - ${ps.reason}</h3><br>` + descr)\n\nvar fs = vo.streamingData.formats\n\nif (config.showVerticalThumbnail&&fs?.[0]?.height > fs?.[0]?.width) {\n try {\n var oar_thumbnail\n for (let i of ['default', '2']) {\n oar_thumbnail = thumbnail.replace(/\\/maxres[^.]+(\\.[^?]+).*/, '/oar' + i + '$1')\n x.open('HEAD', oar_thumbnail, false)\n x.send()\n if (x.status == 200) {\n thumbnail = oar_thumbnail + '?noloop'\n break\n }\n }\n } catch (e) {}\n}\n\nfunction getComments(){\n try {\n let c, id\n x.open('GET','https://www.youtube.com/watch?v='+$[1],false)\n x.send()\n id = x.responseText.match(/\"continuationCommand\":{\"token\":\"([^\"]+)/)[1]\n x.open('POST','https://www.youtube.com/youtubei/v1/next?prettyPrint=false',false)\n x.send(`{\"context\":{\"client\":{\"clientName\":\"WEB\",\"clientVersion\":\"2.20251212.01.00\"},},\"continuation\":\"${id}\"}`)\n c = JSON.parse(x.responseText).frameworkUpdates.entityBatchUpdate.mutations\n c = c.flatMap(i=>i.payload.commentEntityPayload||[])\n return c.map(i=>[i.author?.displayName+' '+i.properties?.publishedTime, i.properties?.content?.content, '👍🏻'+(/\\d/.test(i.toolbar?.likeCountNotliked) ? i.toolbar.likeCountNotliked : 0)+(/\\d/.test(i.toolbar?.replyCount) ? ' | Replies: '+i.toolbar.replyCount : '')].join('\\n')).join('\\n\\n')\n } catch(e) {\n return 'Error loading comments\\n'+e\n }\n}\n\nif(Number(config.order['hls (1080p/4K)']) > 0 && visit_id){\n x.open('POST', 'https://www.youtube.com/youtubei/v1/%70%6C%61%79%65%72?imagus&key=' + api_key, false)\n x.setRequestHeader('Content-Type', 'application/json')\n x.setRequestHeader('X-Goog-Visitor-Id', visit_id)\n var hls_data = {\n context: {\n client: {\n clientName: 'IOS',\n clientVersion: '20.10.4',\n deviceModel: 'iPhone16,2',\n 'userAgent': 'com.google.ios.youtube/20.10.4 (iPhone16,2; U; CPU iOS 18_3_2 like Mac OS X;)',\n }\n },\n videoId: vid,\n playbackContext: {\n contentPlaybackContext: {\n signatureTimestamp: sigtime,\n html5Preference: 'HTML5_PREF_WANTS'\n }\n },\n contentCheckOk: true,\n racyCheckOk: true\n }\n x.send(JSON.stringify(hls_data))\n hls = JSON.parse(x.responseText).streamingData?.hlsManifestUrl\n }\nif (!fs) return prepResult([[thumbnail, '']], '<h3>No suitable formats to download, probably livestreaming</h3><br>' + descr)\nfs.forEach(function (format) {\n if (format.url) { f[format.itag] = nt(format.url); return; }\n cipher = new URLSearchParams(format.signatureCipher)\n if (cipher.get('sig')) { f[format.itag] = `${cipher.get('url')}&signature=${cipher.get('sig')}`; return; }\n g = true\n})\nif (g) {\n try {\n descr = '*' + descr\n const parseDecsig = data => {\n if (data.startsWith('var script')) {\n // they inject the script via script tag\n const obj = {}\n const document = {\n createElement: () => obj,\n head: { appendChild: () => { } }\n }\n eval(data)\n data = obj.innerHTML\n }\n const fnnameresult = /=([a-zA-Z0-9\\$_]+?)\\(decodeURIComponent/.exec(data)\n const fnname = fnnameresult[1]\n const _argnamefnbodyresult = new RegExp(escapeRegExp(fnname) + '=function\\\\((.+?)\\\\){(.+?)}').exec(data)\n const [_, argname, fnbody] = _argnamefnbodyresult\n const helpernameresult = /;(.+?)\\..+?\\(/.exec(fnbody)||/;([A-Za-z0-9_$]+)/.exec(fnbody)\n const helpername = helpernameresult[1]\n const helperresult = new RegExp('var ' + escapeRegExp(helpername) + '={[\\\\s\\\\S]+?};').exec(data)\n const helper = helperresult[0]\n const helper2 = /'use strict';(var [A-Za-z0-9_$]+=[\"'][^\\n]+?[\"']\\.split\\([\"'][^\\n]+?[\"']\\)),/.exec(data)?.[1]||/'use strict';(var [A-Za-z0-9_$]+=\\[.+?\\]),[A-Za-z0-9_$]{1,3}[;,]/s.exec(data)?.[1]||''\n return new Function([argname], helper + '\\n' + helper2 + '\\n' + fnbody)\n }\n decsig = parseDecsig(basejs)\n } catch (ex) {\n decsig = () => { return }\n console.error(ex)\n }\n fs.forEach(function (format) {\n if (f[format.itag]) return\n cipher = new URLSearchParams(format.signatureCipher)\n f[format.itag] = nt(`${cipher.get('url')}&${cipher.get('sp') || 'signature'}=${decsig(cipher.get('s'))}`)\n })\n}\n\nfL = f[18] || f[59] || f[78] || f[46] || f[45] || f[44] || f[43] || f[37] || f[22]\nfH = f[37] || f[22] || f[18] || f[59] || f[78] || f[46] || f[45] || f[44] || f[43] || fL\nvar ct = (timeParam ? '#' + timeParam : '') + '#mp4'\n\nvar res = [[thumbnail, title]]\nif (fH) {\n fH = ['#' + fH + ct, fL + ct]\n res.push([fH, title])\n}\nreturn prepResult(res, descr)", "useimg": 1, "img": "^(?:i(?:\\d|mg)?\\.ytimg\\.com/(?:vi|an_webp)[^/]*/([\\w\\-]{11})/(?:[\\w]+?)\\.(?:\\w+)(?!.*[&?]noloop)|^(?:(?:(?:(?:\\w+\\.)?[yY][oO][uU][tT][uU][bB][eE](?:-nocookie|kids)?\\.com|youtube\\.googleapis\\.com)/(?:.*?\\#/)?(?:(?:(?:v|embed|e|shorts)/(?!videoseries|live_stream))|(?:(?:(?:watch|movie)(?:_popup)?(?:\\.php)?/?)?(?:\\?|\\#!?)(?:.*?[&;])??v=)))|youtu\\.be/)([0-9A-Za-z_-]{11})(?!&lc=)(?:\\?(thumb\\b))?(?:[?&](?:star)?t=(\\d+(?:\\.\\d+)?)s?)?(?:&end=(\\d+(?:\\.\\d+)?)s?)?.*$)", "loop": 2, "to": "www.youtube.com/embed/$1$2?thumb", "note": "Dulus_No + Imagus_fan/hababr (edit)\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/o307x82\nOLD\nhttps://www.reddit.com/r/imagus/comments/1pr9mc7/comment/nv36mor\nhttps://www.reddit.com/r/imagus/comments/1pken7c/comment/nu4mnpg\nhttps://www.reddit.com/r/imagus/comments/1omtq59/comment/nms2iyn\nhttps://www.reddit.com/r/imagus/comments/1nz5i3c/comment/ni0od3t\n\n\n!!!\nВся информация о возможностях и особенностях фильтра, а также о представленных в нем опциях: ЧаВо, п.11.\n==\nAll information about the capabilities and features of the sieve, and also about the options presented in it: see FAQ, p.11.\n\n\n\nПРИМЕРЫ / EXAMPLES\nhttps://www.reddit.com/domain/youtube.com/new\nhttps://www.reddit.com/domain/youtu.be/new/\nhttps://www.youtube.com/@jbmusicproductions516/videos\nhttps://www.reddit.com/r/imagus/comments/r19duk/comment/hxfd2pa\nhttps://www.reddit.com/r/imagus/comments/1oc16wu/comment/nl5c3jx\niFrames:\nhttps://www.reddit.com/r/imagus/comments/18pcszv/comment/kj7uh7s" }, "YOUTUBE_redirect": { "link": "youtube\\.com/redirect\\?event=comments&redir_token=\\w+&q=(.+?)&.+", "ci": 1, "dc": 1, "loop": 1, "to": "$1", "note": "Baton34V\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3920#8\n\nПРИМЕРЫ / EXAMPLES\nhttps://www.youtube.com/watch?v=j1e7-_Ho6dc&lc=UgzlD0vMw0oOl9KLbzd4AaABAg" }, "YOUTUBE_clip_redirect": { "link": "(?:www\\.)?youtube\\.com/clip/", "loop": 1, "res": ":\nvar u = $._.match(/(?:<link itemprop=\"embedUrl\" href=\"|<meta (?:property=\"og:video:(?:secure_)?url\"|name=\"twitter:player\") content=\")(https?:\\/\\/www\\.youtube\\.com\\/embed\\/[0-9A-Za-z_-]{11})/)[1]\nvar c = $._.match(/\"clipConfig\"\\s*:\\s*{([^}]+)}/)[1]\nvar s = Number(c.match(/\"startTimeMs\"\\s*:\\s*\"(\\d+)\"/)[1]) / 1000\nvar e = Number(c.match(/\"endTimeMs\"\\s*:\\s*\"(\\d+)\"/)[1]) / 1000\nreturn u + '?start=' + s.toFixed(3) + '&end=' + e.toFixed(3)", "note": "Dulus_No\nhttps://www.reddit.com/r/imagus/comments/r19duk/comment/hzvi9jd\nOLD\nhttps://www.reddit.com/r/imagus/comments/r19duk/comment/hxfqz6p\n\nПРИМЕРЫ / EXAMPLES\nhttps://www.reddit.com/r/imagus/comments/r19duk/comment/hxfd2pa" }, "YunPhoto|tmyun-g": { "link": "^yunphoto\\.net/(?:\\w+/)?photobase/yp(\\d+)\\.html$", "to": "#http://tmyun.com/jpeg/yun_$1.jpg\nhttp://www.tmyun.com/mid/yun_$1.jpg", "note": "Rodny\n\nEXAMPLES\nhttps://yunphoto.net/fr/photobase/yp3742.html" }, "Yupoo-s": { "link": "^[^.]+\\.x\\.yupoo\\.com/albums/.*", "res": ":\nlet m = [...$._.matchAll(/data-origin-src=\"([^\"]+)/g)].map(i=>[i[1]])\nm.unshift(m.splice(m.findIndex(i=>(i[0].match(/photo\\.yupoo\\.com\\/[^\\/]+\\/([^/]+)/)||[,''])[1]===(this.node.previousElementSibling.src.match(/photo\\.yupoo\\.com\\/[^\\/]+\\/([^/]+)/)||[,'null'])[1]),1)[0])\nreturn m", "img": "^[^.]+\\.yupoo\\.com/.+\\.(?:png|jpe?g)", "to": ":\nif(/ic_play/.test($[0])){\nlet m = this.node.closest('div[data-type=\"video\"]')?.firstElementChild.dataset;\nreturn m ? m.src.match(/\\/\\/[^\\/]+/) + m.path + (!/\\.mp4/.test(m.path) ? '#mp4' : '') : ''\n} else if (/\\/small/.test($[0])){\nreturn this.node.offsetParent.firstElementChild.dataset.originSrc\n} else {\nreturn $[0]\n}\n", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/14iuu77/comment/jpse4k9\n\nEXAMPLES\nhttps://copyaaa.x.yupoo.com/albums?tab=gallery\nhttps://no1factory.x.yupoo.com/albums?tab=gallery" }, "Zapodaj-h": { "link": "^(?:pro\\.)?zapodaj\\.net/[\\w-]+(?:\\.html)?$", "res": "\"(?:showImage\"><a|image_src\") href=\"([^\"]+)", "img": "^(zapodaj\\.net/)([^.]+\\.[^.]+)\\.html", "to": "$1images/$2", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/llxjbjy\nOLD\nhttps://www.reddit.com/r/imagus/comments/130svfu/comment/jn8v5j7\n\n!!!\nНеобходимо правило для SMH (см.ЧаВо, п.12).\n==\nNeed a rule for SMH (see FAQ, p.12).\n\n\nEXAMPLES\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1360#11" }, "ZdravCity.ru-s": { "link": "^zdravcity\\.ru/[\\w-]+\\.html", "res": ":\nreturn JSON.parse($._.match(/\"__NEXT_DATA__\" type=\"application\\/json\">({.+?})<\\/script/)[1]).props.pageProps.product.images.filter(i=>i.src).map(i=>[i.src])", "img": "^(static\\.zdravcity\\.ru/upload/iblock/\\w+/|partners\\.protek\\.ru/api/files/shared-download\\?filename=\\d+\\.\\d+)(?:\\d+_\\d+_|_\\d+x\\d+)", "to": "$1\n", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/l6ahcr8\nOLD\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1340#20\n\n\nПРИМЕРЫ\nhttps://zdravcity.ru/c_termometry/\nhttps://zdravcity.ru/search/?what=витамины\nhttps://zdravcity.ru/catalog/lekarstvennye-preparaty/antibakterialnye-sredstva/antibiotiki/r_ufa/" }, "Zerochan-g-p": { "useimg": 1, "link": "^(zerochan\\.net)(/)(?:full/)?(\\d{4,}).*", "img": "^s(?:[123]|tatic)\\.(zerochan\\.net/)(?:(?:\\d\\d/)+|([^/]*)\\.(?:\\d+|full)\\.)(\\d{4,})\\.", "to": "http://static.$1$2.full.$3.#jpg png gif#", "note": "EXAMPLES\nhttps://www.zerochan.net/Brown?q=brown&p=2\nhttps://www.zerochan.net/Star+%28Ikaruga%29?q=Star+%28Ikaruga%29" }, "zip2img-h": { "link": "zip2img\\.com/(?:i/)?\\?fv?=(.*)", "img": "zip2img\\.com/(?:i/)?\\?fv?=(.*)", "to": "zip2img.com/?f=$1", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/130svfu/comment/jn8v5j7\n\nEXAMPLES\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1360#11" }, "Zonerama-g": { "link": "eu.zonerama.com/(?:\\w+)/Photo/(?:\\d+)/(?:\\d+)", "res": "<meta property=\"og:image\" content=\"([^\"]+)\"", "note": "destiny child\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1620#2\n\nEXAMPLES\nhttps://eu.zonerama.com/Hrubasovofotoalbum/Album/5718541" }, "ZR.ru-m": { "link": "^forum\\.zr\\.ru/forum/gallery/album/.+", "res": ":\nreturn [...$._.matchAll(/class=\"galimageview\"><img src=\"([^\"]+)/g)].map(i=>[i[1]])", "img": "^\\w+(\\.zr\\.ru/_ah/img/[^=]+).*", "to": "img$1", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/130svfu/comment/kd6jo2n\nOLD\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=2660#20\n\n\n!!!\nДля работы некоторых изображений требуется установка расширения uBO (uBlock Origin). В Настройках на вкладке \"Мои фильтры\" нужно добавить эту строку:\nzr.ru##.lfaobO.styled__FullscreenButton-sc-z43jib-7\n\n\nПРИМЕРЫ\nhttps://www.zr.ru/news/\nhttps://www.zr.ru/content/news/942359-uzhasnaya-i-neudobnaya-na-chem-po/\nhttps://forum.zr.ru/forum/gallery/" }, "Zupimages-h-p": { "link": "^(.*)zupimages\\.net/viewer\\.php.+(?:jpe?g|a?png|gif|svgz?|webp|w?bmp|xbm|pict|j(?:if|fif?))", "res": "<a href=\\\"(.+(?:jpe?g|a?png|gif|svgz?|webp|w?bmp|xbm|pict|j(?:if|fif?)))\\\">", "to": "https://www.zupimages.net/$1", "note": "destiny child\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1380#10\n\nEXAMPLES\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1360#11" }, "[_dereferers_]": { "link": "^[^/]{3,70}/\\??(https?:[^?#]+\\.(?:jpe?g|a?png|gifv?|bmp|svgz?|web[pm]|og[gv])).*", "ci": 1, "dc": 1, "loop": 1, "to": "$1" }, "[Resize]": { "img": "^(?!(?:[a-z0-9.-]+\\.)?(?:reddit\\.com|redd\\.it))([^/]{4,70}/[^?]+)(?:-(?:\\d+x\\d+|thumb|scaled)(?=[^.]*\\.)|/c=\\d+(?:-\\d+)+(?=/)|\\?s=\\d{2,}$|((?:\\?(?:[^&]*&)*?)(?:w(?:idth)?|h(?:eight)?|(?:cro|stri)p|q(?:uality)?(?==[\\d.]+\\b)|auto|f(?:orma|i)t)=[\\w%.,]+(?:&|$).*))", "to": ":\nreturn `#${$[1]}${$[2]?.replace(/(?<=[?&])(?:w(?:idth)?|h(?:eight)?|(?:cro|stri)p|q(?:uality)?(?==[\\d.]+(?:&|$))|auto|f(?:orma|i)t)=[\\w%.,]+(?:&|$)/g,'')||'# -full -orig -original#'}\\n${$[0]}`", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/1oqdm5t/comment/nni74gr\nOLD\nhttps://www.reddit.com/r/imagus/comments/1ojdg1c/comment/nmbz79f\n!!!\n- About this sieve:\nhttps://www.reddit.com/r/imagus/comments/1ojdg1c/comment/nm2jzfv\n- This sieve must be at the end of the sieve list, before the [WordPress_CMD] sieve.\n\nEXAMPLES\nhttps://www.fsunews.com/\nhttps://www.azcentral.com/\nhttps://www.detroitnews.com/\netc (local american sites)" }, "[Audio Formats]": { "link": "\\.(?:aac|ac3|amr|ape|flac|m4a|opus|ra|wav|wma)(?:[?&]|$)", "to": "$&#mp3", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/130svfu/comment/jrdn2ly" }, "[Akina-Photohost]": { "link": "^([^/]+/)(demo/)?\\?v=(\\d{4}-\\d\\d)-(\\d\\d)_([^&]+).*", "img": "^([^/]+/)(demo/)?thumbs/(\\d{4}-\\d\\d)/(\\d\\d)/([^?]+).*", "to": "$1$2img/$3/$4/$5", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/130svfu/comment/jv5cpmr\n\nEXAMPLES\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=40#15" }, "[Discourse]": { "img": "(?:/optimized(/[1-8](?:\\.[1-9])?X/([\\da-f])(?:/[\\da-f])*?/\\2[\\da-f]{39})[^.]*|(^[\\da-z.-]+/user_avatar/[\\da-z.-]+\\.[a-z]+/[^/]{2,40}/)\\d{1,4}(/\\d+(?:_\\d)?\\.png))", "to": ":\nreturn $[1] ? '/original' + $[1] : $[3] + '1000' + $[4]", "note": "EXAMPLES\n???" }, "[Lemmy]": { "img": "^([^/]+/pictrs/image/[a-f0-9-]+\\.[a-z\\d]{3,4})\\?format=webp.*", "to": "$1", "note": "imqswt\nhttps://www.reddit.com/r/imagus/comments/14wceoz/comment/jrmquko\n\nEXAMPLES\nhttps://lemmy.world/\netc" }, "[PeerTube|PeerVideo]": { "link": "^([^/]+)/(?:videos/watch/([a-f0-9-]{36})|w/(\\w{22}))(?:[?/]|$)", "url": "https://$1/api/v1/videos/$2$3", "res": ":\nif(!/^\\{/.test($._))return ''\nconst o = JSON.parse($._), n = o.duration;\nlet m = o.files[0] ? o.files : o.streamingPlaylists[0]?.files\nm.reverse()\nreturn [[[\"#\"+m.pop().fileUrl,m&&m.length&&m[m.length-1].fileUrl],[o.name,o.account.name,new Date(o.createdAt).toDateString(),[Math.floor(n/3600).toString().replace('0',''),Math.floor((n%3600)/60).toString().replace(/^(\\d)$/,'0$1'),Math.floor(n%60).toString().replace(/^(\\d)$/,'0$1')].filter(Boolean).join(\":\"),o.description].filter(Boolean).join(\" | \")]]", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/130svfu/comment/ju6q9k5\nOLD\nhttps://www.reddit.com/r/imagus/comments/150zrnk/nsfw_i_want_to_share_sieves_some_i_made_and_some/\n\n!!!\nНа Chrome/Chromium длинное видео может долго грузиться (\"белый спиннер\").\n==\nOn Chrome/Chromium the video takes a long time to load (\"white spinner\").\n\n\nПРИМЕРЫ\nhttps://www.reddit.com/domain/peertube.su/new/\nhttps://peertube.tv/search?search=green&searchTarget=local\nhttps://peervideo.ru/videos/local" }, "[thumbor]": { "img": "^[^/]{4,70}/(?:thumbor/|(?:new-)?resizer/|v\\d)?[\\w\\-]{26}[\\w\\=-]{2}/(?:(?:smart|trim(?::(?:top-left|bottom-right))?|left|center|right|top|middle|bottom|(?:full-)?fit-in|-?(?:\\d+|orig)?x-?(?:\\d+|orig)?|\\d+x\\d+:\\d+x\\d+|filters:[^/]+)/)*((?:https?(?:%3[aA]|:)(?:%2[fF]|/){2})?(?:[^./]{1,70}\\.)+[a-z]{2,6}(?:%2[fF]|/)[^&?#]+).*", "to": ":\nif($[1].indexOf('%')>0)$[1] = decodeURIComponent($[1])\nreturn /^http/.test($[1]) ? $[1] : '//' + $[1]", "note": "EXAMPLES\n???" }, "[TUMBLR]-g-p": { "link": "^(?:([^/]{5,70})/(?:image|post)|tumblr\\.com/([\\w-]+))/(\\d{8,18})(?:(&.+)|\\D[^.?]*(?:$|[?#])|$).*|^tumblr/upgrade/(.+)", "url": ": !$[5] ? `https://api.tumblr.com/v2/blog/${$[1]||$[2]}/posts?id=${$[3]}&filter=raw&api_key=4AjWu4k7xrMxAqiJjppAHatW1QLQGxZ2NKo2XdTlcov4i8qZuw${$[4]||''}` : 'data:,'+$[5]", "res": ":\nconst n=this.node, s=n.src||n.currentSrc\nconst upgrade=url=>{\ntry{\nconst x=new XMLHttpRequest(), newUrl=url.replace(/\\/s\\d+x\\d+\\//,'/s999999999x999999999/')\nif(url===newUrl||url.includes('.gifv'))return url\nx.open('GET',newUrl,false)\nx.setRequestHeader('Accept','text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8')\nx.send()\nreturn x.responseText.match(/\"requestedImage\":\"([^\"]+)/)[1]\n}catch(e){\nreturn url\n}\n}\nif($[5])return upgrade($[5])\n$=JSON.parse($._)\nif($.meta.status!=200)return s ? upgrade(s) : ''\n$=$.response.posts[0]\nvar t=$.caption||''\n$=$.body ? [...new DOMParser().parseFromString($.body,'text/html').querySelectorAll('img,source')].map((i,n)=>[i.srcset?upgrade(i.srcset?.split(/\\s+\\d+w(?:,\\s+)?/).filter(Boolean).pop()):i.src,!n?t:'']) : $.photos ? $.photos.map((i,n)=>[upgrade(i.original_size?.url),!n?t:'']) : $.video_url ? [$.video_url,t] : $.permalink_url ? {loop:$.permalink_url} : s ? upgrade(s) : ''\nconst idx=s&&Array.isArray($)&&$.findIndex(([i])=>s.slice(11,80)===i.slice(11,80))\nreturn idx>0 ? {\"\":$,idx:idx} : $", "img": "^(?:((?:\\d\\d\\.)?media)|data)(\\.tumblr\\.com/)(?:((?:[\\da-f]{32}/)?tumblr_\\w+_)((?:\\d{2,4}|raw)\\.(?!gif)|frame\\d*\\.jpg)|([\\da-f]{32})/[\\da-f]{16}-\\w\\w/s\\d+x\\d+(?:_\\w+)?/[\\da-f]+\\.\\w+)", "loop": 2, "to": ":\nlet m, x, n=this.node;\nif(m=location.pathname.startsWith('/tagged/')&&[...document.scripts].find(i=>/{\"@type\":\"ItemList\"/.test(i.textContent))?.textContent){\nm=JSON.parse(m).itemListElement;\nx=[...n.closest('.grid')?.children||[]];\nx=x.findIndex(i=>i.querySelector(`img[src=\"${n.src}\"]`))+1;\nif(x)return m.find(i=>i.position===x)?.url?.replace(/(\\/\\d{8,18})\\/.*/,'$1&'+($[3]||$[5]))\n}\nif(location.hostname.endsWith('tumblr.com')){\nconst n=this.node, link=n.closest('div[class=\"LaNUG\"]')?.querySelector('[class=\"MvV_c mVBb2 BSUG4\"]')||n.closest('.post-content')?.querySelector('a[class=\"tumblr_blog\"][href*=\"tumblr.com/\"],.date>a[href]')?.href, id=!link&&n.closest('[class=\"So6RQ i4aRn YSitt\"],[class=\"So6RQ YSitt\"]')?.getAttribute('data-id'), domain=id&&n.closest('article[class^=\"FtjPK\"]')?.querySelector('a[class=\"BSUG4\"]')?.href;\nif(link||domain&&id)return (link?.replace(/(\\/\\d{8,18})\\/.*/,'$1')||domain.replace(/(\\.com\\/)$/,'$1post')+'/'+id)+'&'+($[3]||$[5]);\n}\nreturn $[5] ? 'tumblr/upgrade/https://'+$[0] : $[4][0]=='f' ? 'vt'+$[2]+'.mp4' : '//'+($[1]||'78.media')+$[2]+$[3]+'#1280 500 400#.'", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/1kanchm/comment/mptbssg\nOLD\nhttps://www.reddit.com/r/imagus/comments/1ka6szj/comment/mpmlotg\nhttps://www.reddit.com/r/imagus/comments/1jqgw1q/comment/mlu01i0\n\n\n\n!!!\n- Для работы фильтра на внешних ссылках необходимо расширение SMH (см. ЧаВо, п.12)\n==\n- The SMH extension is required for the sieve to work on external links (see FAQ, p.12).\n\n\nПРИМЕРЫ / EXAMPLES\nhttps://www.reddit.com/domain/tumblr.com/new/\nhttps://www.tumblr.com/search/yellow\nhttps://www.tumblr.com/strawberry-s0ap\nhttps://art.tumblr.com/archive\nhttps://www.tumblr.com/tagged/movie?sort=top\nhttps://www.tumblr.com/tagged/video?sort=top\nhttps://tokyokinky.tumblr.com/post/677591806489264128\nhttps://www.tumblr.com/aimeekb/752218052916084736/milky-way-arch-over-the-mojave-desert-california" }, "[SMF_images]": { "link": "^[^/]+/forum/index\\.php\\?(.+)\\;attach=\\d+\\;image$", "note": "Rodny\n\nEXAMPLES\n???" }, "[XenForo]": { "img": "/attachments/[^/]+[.-](?:jpe?g|png|gif)\\.\\d+/", "to": "$&", "note": "https://www.reddit.com/r/imagus/comments/jgp6id/xenforo/\n\nEXAMPLES\nhttps://www.hairlosstalk.com/interact/threads/exploring-the-hormonal-route-hair-life.109288/post-1870494\nhttps://www.hairlosstalk.com/interact/threads/exploring-the-hormonal-route-hair-life.109288/post-1870693" }, "[XFileSharing_post]": { "link": "^([^/]+/)([\\da-z]{12})(/[\\w.-]+\\.(?:[Jj][Pp][Ee]?[Gg]|png|PNG|gif|GIF|bmp|BMP)(?:\\.html)?)$", "url": "$1$2$3 :op=view&id=$2&pre=1", "res": "src=\"(https?://[^\"]+)\" (\\w+=\"[^\"]+\"\\s+)*?(?:class=\"pic|id=\"[^\"]+\"\\s*>)", "img": "^(?:i\\D{0,3}\\d*\\.|main\\.)?([^/]+/)(?:i/\\d{5}/([\\da-z]{12})_[^.]+|th/\\d{5}/([\\da-z]{12}))\\.jpg$", "note": "EXAMPLES\n???" }, "[Typepad]": { "img": "^(?:([^/]{3,70}/\\.a/[\\da-f]{34})(?:-(?:\\d+wi|popup|pi))?|typepad\\.com/showcase/images(/[^-]+).*)$", "to": ":\nreturn $[1] ? $[1] : this.node.parentNode.hostname ? '//'+this.node.parentNode.hostname+'/.a'+$[2] : ''\n", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/130svfu/comment/jr9iz3u\n\n\nEXAMPLES\nhttps://www.typepad.com/showcase/animals" }, "[porn-galleries]-x": { "img": "^(content\\d\\.[^.]{3,20}\\.[a-z]+/[\\da-z-]{3,20}(?:\\.[a-z]{2,5})?/(?:[a-z_-]+/){0,2}\\d+/(?:[^.]+_)?)tn_(?=\\d{2,3}\\.jpg)", "to": "$1", "note": "EXAMPLES\n???" }, "[NDsoft-kr-news]": { "img": "^([^/]{4,50}/news/)thumbnail(/\\d+/[\\d_]+)_v\\d+", "to": "$1photo$2", "note": "EXAMPLES\n???" }, "[Marginal-Hacks]": { "img": "^([^/]+/(?:[^/]+/+)*?)tn/([^/]+?)(?:(\\.(?:gif|png|bmp))\\.jpg|(?:\\.med)?(\\.(?:jpg|gif|png|bmp)))$", "ci": 2, "to": ":\nreturn $[4] ?\n'#' + $[1] + $[2] + $[4] + '\\n' + $[1] + 'tn/' + $[2] + '.med' + $[4] :\n'#' + $[1] + $[2] + $[3] + '\\n' + $[1] + 'tn/' + $[2] + $[3];", "note": "EXAMPLES\n???" }, "[Labrador-CMS]": { "img": "^([^/]+/(?:[^.]+\\.webp\\?imageId=\\d+|images/\\d+\\.webp\\?)).*?&width=\\d+&height=\\d+.*&format=webp", "to": "$1&width=-1&height=-1&format=webp", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/c9zlcm/comment/jocbjvr" }, "[URL_image]": { "img": "^[^/]{4,70}/[^?]*\\?url=(https?(?:%3A%2F%2F[^%]+%|://[^/]+/)[^&]+\\.[a-z0-9]{3,4}(?!\\w)[^&]*).*", "to": ":\n$=decodeURIComponent($[1])\nreturn !/redd\\.?it\\//.test($) && this.find({src:$}) || $", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/1hxtp67/comment/nmid1fw\n\n!!!\nIt's a generic sieve that matches any URL with a ?url= parameter. It gets the URL after the = and tries to show it as an image.\n\nEXAMPLES\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/ne4tj7j" }, "[Cloudinary]": { "img": "^([^/]{4,70}/(?:[\\w-]+/){0,2})(?:(image/(?:upload|fetch|sprite|facebook|twitter|gplus|instagram_name|gravatar|youtube|hulu|vimeo|animoto|worldstarhiphop|dailymotion))(?:/s--[\\da-zA-Z]{8}--)?(?:/(?:(?:[eghloqrtuwxyz]|\\$\\w+|ar?|bo?|c[os]?|d(?:l|n|pr)?|fl?|if|pg)_[^,/]+,?)+)*|(video/upload)(?:/s--\\w{8}--)?(?:/(?:(?:[ghloqwxyr]|a[cfr]?|b[or]?|co?|d[lu]|eo?|fl?|s[op]|v[cs])_[^,/]+,?)+)*)(/[^?#]+).*", "to": "$1$2$3$4", "note": "EXAMPLES\nhttps://www.reddit.com/domain/cloudinary.com/new" }, "[CbsiStatic]": { "img": "^([^/]{4,50}/)(?:((?:hub/)?i/)r/(\\d{4}/\\d\\d/\\d\\d/[\\da-f-]{30,}/)[^/]+/[\\dxauto]+/|(img/)[\\w=-]+/(?:[\\dx:]+/)?\\d+x\\d+/)", "to": "$1$2$3$4", "note": "EXAMPLES\n???" }, "[WixStatic]": { "img": "^(static.wixstatic\\.com/[^.]+\\.[a-zA-Z]+).*", "to": "$1", "note": "EXAMPLES\n???" }, "[vBulletin]": { "link": "^[^/]{5,70}/(?:forums?/)?attachment\\.php\\?(?:[^&]+&)*?attachmentid=(\\d+).*", "img": "^[^/]{5,70}(?:/[^/]+)?/attachment\\.php\\?(?:[^&]+&)*?thumb=(1)(?:$|&.*)", "to": ":\nvar n=this.node, r=/\\.(jpe?g|gif|png|bmp|web[mp]|mp[34])\\b/i\nconsole.log(n.title)\nreturn $[1]==1 || r.test(n.textContent) || r.test(n.title) || ~(n.src||'').indexOf($[1]) || n.classList.contains('thumbnail') ? $[0].replace(/thumb=1&?/,'') : ''", "note": "EXAMPLES\n???" }, "[ImgShot-script]": { "useimg": 1, "link": "^[^/]+/(?:[a-z]{1,5}/)?i(?:/|mg-)[\\da-f]{13}\\.html$", "url": "$& :imgContinue=", "res": "<img.+?' src=[\"']([^\"']+)", "img": "^([^/]+/[^/]+/)small(/\\d{4}/\\d{2}/\\d{2}/[\\da-f]{13}\\..+)", "to": "$1big$2", "note": "EXAMPLES\n???" }, "[CF-Image-Host]": { "img": "^([^/]+/)(?:(?:[pd][mtl](-\\d+)|((?:[^/]+/)*?)[pd][mtl](/[\\dA-Z]{3,6}/.+))\\.(?:jpe?g|png|gif|bmp|html)$|(?:i(?:ndex|mage)\\.php)?\\?[pd][mtl]=([\\dA-Z]{3,6}))", "to": ":\nreturn 'http://'+$[1]+($[5] ? '#image.php #?di=' + $[5] : ($[3]||'')+ 'di' +($[2]||'') + ($[4]||'') +'.jpg');", "note": "EXAMPLES\n???" }, "[CF-Image-Host_stock-photos]": { "link": "^[^/]+/p/\\d{4,10}(?:_\\d)?\\.html$", "res": "src=\"([^\"]+)", "note": "EXAMPLES\n???" }, "[image-host-script]": { "link": "/share(?:-|\\.php\\?id=)([\\dA-F]{4}_[\\dA-F]{8}).*", "url": "/share.php?id=$1", "res": "\\[img\\]([^\\[]+/image\\.php\\?id=$1[^\\[]+)\n<h1>([^<]+)", "img": "/(?:thumb|image)(?:-|\\.php\\?id=)([\\dA-F]{4}_[\\dA-F]{8}).*", "note": "EXAMPLES\n???" }, "[Video_formats]": { "link": "\\.(?:3g[2p]|a(?:mv|sf|vi)|drc|f(?:lv|4[vpab])|m(?:[42ko]v|ng|p[g42ev]|peg|2?ts|xf)|nsv|og[vg]|r(?:m(?:vb)?|oq)|svi|ts|v(?:iv|ob)|w(?:ebm|mv)|yuv)(?:\\?.*|$)", "ci": 1, "to": "$&#mp4", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/o487sfo\nOLD\nhttps://www.reddit.com/r/imagus/comments/1pvkqip/comment/nwbt51v\n\n!!!\n- Поддержка воспроизведения видео-файлов с локального диска в браузере;\n- Данный фильтр должен находиться ПЕРЕД фильтром [LinkedMedia].\n==\n- Support for playing video files from a local drive in a browser;\n- This sieve must be placed BEFORE the [LinkedMedia] sieve." }, "[LinkedMedia]": { "link": "^[^?#]{6,4096}\\.(?:jp(?:g|eg?)|heic|3gp|a?png|gif|web[pm]|bmp|xbm|pict|j(?:if|fif?)|flv|m2ts|mkv|mov|mpeg|mpg|og[gv]|mp[34]|m4[va]|svgz?|ts|rm|wm[va])(?:$|[?#]).*", "ci": 3, "img": "^[^?#]{6,4096}\\.(?:jp(?:g|eg?)|heic|3gp|a?png|gif|web[pm]|bmp|xbm|pict|j(?:if|fif?)|flv|m2ts|mkv|mov|mpeg|mpg|og[gv]|mp[34]|m4[va]|svgz?|ts|rm|wm[va])(?:$|[?#]).*", "to": ":\nconst disable_on_video = false\n\nif (location.hostname === 'www.google.com') return '';\nconst n = this.node;\nif ( disable_on_video && n?.nodeName === 'VIDEO') return '';\nif (!disable_on_video && n?.nodeName === 'VIDEO') n.title = 'Imagus activating on videos can be disabled in the [LinkedMedia] sieve';\n\nif (!RegExp.prototype.test_original) {\n /* workaround for Imagus bug, force RexExp.test to ignore case */\n RegExp.prototype.test_original = RegExp.prototype.test;\n RegExp.prototype.test = function(str) {\n if (this.source?.startsWith(\"^[^?#]+\\\\.\")) {\n return (new RegExp(this.source, 'i')).test_original(str)\n } else {\n return this.test_original(str)\n }\n }\n}\n\n// width and height of the tagret element should be more that 39px\nif (this.TRG?.localName !== 'a' && \n this.TRG?.clientWidth && this.TRG?.clientWidth < 40 && \n this.TRG?.clientHeight && this.TRG?.clientHeight < 40)\n{\n return '';\n}\n\n// Imagus fix\nif (this.TRG?.hasAttribute(\"src\") && !this.TRG.src) {\n this.TRG.src = this.TRG.getAttribute(\"src\");\n}\n\nreturn $[0];", "note": "hababr\nhttps://www.reddit.com/r/imagus/comments/1f4dxjw/comment/lkty6h3\nOLD\nhttps://www.reddit.com/r/imagus/comments/1em6o9c/comment/lgwseyq\nhttps://www.reddit.com/r/imagus/comments/1dvfa8n/comment/lbpyemi\nhttps://www.reddit.com/r/imagus/comments/1blyg8c/comment/kwbchh9\n\n\n!!!\nЭтот универсальный фильтр реагирует на расширения файлов в ссылках и пытается загрузить изображение, если находит ссылку на медиафайл.\n==\nThis universal sieve reacts to file extensions on links and tries to launch Imagus if it finds a link to a media file.\n\n\nEXAMPLES\nhttps://www.photo.net/search/?q=yellow&quick=1\nhttps://code.visualstudio.com/updates/v1_87" }, "[Local_Files]": { "link": "^file:///.+", "url": ": (()=>{if($[0].length>=location.href.length)throw '';return 'data:,'+$[0]})()", "res": ":\nreturn [...document.getElementsByClassName('file')].map(i=>[i.href,i.href.match(/[^\\/]+$/)?.[0]||'']).filter(([i])=>/\\.(?:jp(?:g|eg?)|heic|3gp|a?png|gif|web[pm]|bmp|xbm|pict|j(?:if|fif?)|flv|m2ts|mkv|mov|mpeg|mpg|og[gv]|mp[34]|m4[va]|svgz?|ts|rm|wm[va])/.test(i)).map(i=>/m[ok]v|ts|flv/.test(i[0]) ? [i[0]+'#mp4',i[1]] : [i[0],i[1]]);", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/1pvkqip/comment/nvxqvhm/\nOLD\nhttps://www.reddit.com/r/imagus/comments/1g1f2d2/comment/ls0e822\n\n!!!\n- Если перенести папку с медиа (изображения иили видео) из файлового браузера на вкладку браузера, Имагус будет работать на этой вкладке с локальными ссылками. При наведении на \"Родительский каталог\" будет показано все содержимое папки в виде альбома;\n- Данный фильтр должен находиться ПЕРЕД фильтром [LinkedMedia].\n==\n- If you move a folder with media (images or videos) from file browser to a browser tab, Imagus will work on that tab with local links. Hovering over “Parent Catalog” will show the entire contents of the folder as an album;\n- This sieve must be placed BEFORE the [LinkedMedia] sieve." }, "[phpGraphy]": { "img": "^([^/]+/(?:[^/]+/)*?index\\.php\\?)(?:display(?:pic)?|previewpic)=([^&]+).*", "to": ":\nreturn $[2].slice(-13) === 'directory.jpg' ? $[0] : $[1] + 'displaypic=' + $[2];", "note": "EXAMPLES\n???" }, "[WordPress-CMS]": { "img": "^(?:(?![^/]*userapi\\.com))^([^/]{4,70}(?:/[^/?#]+){1,10})(?:(/)(?:(gallery/(?:[^/]+/)*?)thumbs/thumbs_|((?:upload|image(?:s_blog)?|file)s/)(?:(?:thumbnails_\\d+x\\d+/thumb_([^.]+?)(?:-\\d+x\\d+)?|([^?]+)-\\d{2,}x\\d{2,})(\\.[a-z]{3,4})))|(.{5})/?\\?(?:[^&]*&)*?(?:quality=[\\d.]+|fit=[\\d%C]+|(?:w(?:idth)?|h(?:eight)?|resize)=\\d+(?:(?:%2C|,)\\d+)?)(?:&.*|$))", "ci": 2, "loop": 2, "to": ":\nif(/\\.php$/.test($[8]))return !1\nif(/[&?]s=[\\da-f]{32}/.test($[0]))return $[0]\nvar m=$[0].match(/[&?](?:url|src)=([^&]+)/)\nif(m)return decodeURIComponent(m[1])\nvar x=$[8]&&$[8].match(/^(.*\\.)(jpe?g|gif|png)$/i)\nreturn $[1] + ($[2] || '') + ($[3] || '') + ($[4] || '') + ($[5] || '') + ($[6] ? $[6] + $[7] : '') + (x && x[2] ? x[1] + (x[2]!='j' ? x[2] : '#jpg jpeg png gif#') : $[8]||'')", "note": "64h\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1571#1" }, "[Chevereto]-h": { "link": "^(?!(?:x|twitter)\\.com|(?:gallery\\.)?minitokyo\\.net)[^/]{4,}/(?:(a|alb|album)|(g|i|ib|image|images|imagine|img|view))/(?:[^\\./]+\\.)?\\w{1,7}$", "res": ":\nreturn $[1] ? [...$._.matchAll(/img\\s+src=\"([^\"]+)\"\\s+alt/g)].map(i => [i[1]]) : [ $._.match(/=\"og:image\" content=\"([^\"]+)/)[1], $._.match(/=\"og:title\" content=\"([^\"]*)/)[1] ]", "note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/lt55y97\nOLD\nhttps://www.reddit.com/r/imagus/comments/16s3qjn/comment/kdqo4ui\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=2220#9\n\n!!!\nДанный специализированный фильтр предназначен для поддержки медиа-хостингов на движке Chevereto (более 80 хостингов). Если включен более универсальный фильтр [MediaGrabber], то данный фильтр нужно выключить.\n==\nThis specialized sieve is designed to support media hostings based on the Chevereto engine (more than 80 hostings). If you have the more universal sieve [MediaGrabber] enabled, then this sieve needs to be turned off.\n\nПРИМЕРЫ / EXAMPLES\nhttps://www.reddit.com/r/imagus/comments/152pg3l/comment/jsq30ra\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=20#14" }, "[MediaGrabber]": { "link": "^(?!(?:[a-z0-9.-]+\\.)?(?:8muses\\.(?:com|io)|4chan(?:nel)?\\.org|alphacoders\\.com|bdnews24\\.com|bleachbooru\\.org|clips4sale\\.com|dropbox\\.com|furry34\\.com|geograph\\.org\\.uk|google\\.com|hentaisea\\.com|joemonster\\.org|kemono\\.cr|kg-portal\\.ru|kinopoisk\\.ru|kinorium\\.com|last\\.fm|livejournal\\.com|minitokyo\\.net|mp4porn\\.space|nexusmods\\.com|nhentai\\.net|photos\\.google\\.com|pornx\\.rip|rule34\\.dev|rule34\\.xxx|twitter\\.com|t\\.co|vk\\.com|ya\\.ru|yandex\\.ru|x\\.com)/).*(?:^z\\.photos/i|alb|album|cld|cloud|drop|file|files|fotka|foto|g|gallery|gif|gifs|host|hosting|i|im|ima|imag|image|images|imagine|img|jpg|jpeg|keep|load|media|meme|orig|origin|original|phot|photo|photos|pic|pica|pico|pics|pict|picu|pik|pix|pixs|png|post|put|save|scr|screen|send|share|shot|snap|stock|stream|thumb|thumbnail|thumbnails|upl|upload|vi|vid|video|view|watch|webp/\\w+).*", "url": ": (()=>{this.oImg = this.node.src??this.node.closest('a').querySelector('img[title]')?.src??'';if(!this.sReg)this.sReg=new RegExp(cfg.sieve.filter(i=>i.off!==1).map(i=>i.img?.source).filter(Boolean).join(\")|(?:\").replace(/.*/,'(?:$&)'));return this.sReg.test(this.oImg.replace(/^https?:\\/\\/(?:www\\.)?/,'')) ? 'data:'+$[0] : $[0]})()", "res": ":\nif(/^data:/.test($.base))return {loop:this.oImg}\nreturn /\\/(?:a|alb|album)\\//.test($[0])?[...$._.matchAll(/img\\s+src=\"([^\"]+)\"\\s+alt/g)].map(i=>[i[1]]):($._.match(/<meta property=\"og:image\" content=\"([^\"]+)\"/)||[,''])[1]", "note": "imqswt\nhttps://www.reddit.com/r/imagus/comments/18bz31i/comment/kchhhm7\nOLD\nhttps://www.reddit.com/r/imagus/comments/152pg3l/comment/jstukym\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1740#6\n\n\n!!!\nДанный универсальный фильтр не только поддерживает хостинги на движке Chevereto, но и является мощным граббером (поисковиком, сборщиком) медиа - с ним Imagus Mod начинает работать там, где он работать до этого без фильтра не мог (например, увеличивает аватарки в VK и т.п.). Появляется частичная поддержка тысяч новых сайтов. Обратной стороной данного преимущества является более частое \"ложное срабатывание\" расширения (появление вращающегося индикатора). Чтобы отменить это - достаточно просто отвести курсор от ссылки или миниатюры, для которых увеличение не требутся.\n==\nThis universal sieve \"media-grabber\" not only supports hosting on the Chevereto engine, but is also a powerful media grabber - Imagus / Imagus Mod starts working with it where it could not work without a sieve before. Partial support for thousands of new sites appears. The downside of this advantage is the more frequent “false positive” of the extension (appearance of a rotating indicator). To cancel this, simply move the cursor away from the link or thumbnail that does not require magnification. Learn more about the sieve:\nhttps://www.reddit.com/r/imagus/comments/1bhii34/comment/kvk0an2\n\nПРИМЕРЫ / EXAMPLES\n(для Chevereto / for Chevereto)\nhttps://www.reddit.com/r/imagus/comments/152pg3l/comment/jsq30ra\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=20#14", "off": 1 } }