{"[R_Google_Images]":{"link":"^google\\.\\S+/imgres\\?imgurl=.+","url":":''","res":":\nthis.node.IMGS_fallback_zoom = null\nreturn new URL($[0]).searchParams.get('imgurl')","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=/.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 // SERP Features: Image Pack | moz.com/learn/seo/serp-features#image-pack / dataforseo.com/serp-features#images\n if (/\\/search\\?/.test(document.URL)) {\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 function 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 }\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":"64h\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1480#16\nOLD:\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1020#19\nhttps://www.reddit.com/r/imagus/comments/qi8smy/sieve_for_google_pictures/\n\n!!!\nФильтр должен всегда располагаться перед [data:image]. Для увеличения видео в результатах поиска - курсор наводить на название ролика.\n==\nThe sieve must be placed always before [data:image]. To show video in the search results - hover over the title of the video.\n\nПРИМЕРЫ / EXAMPLES\nhttps://www.google.com/search?q=Wes+Anderson\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1480#14"},"[data:image]":{"link":"(^data:image.+)","img":"(^data:image.+)","to":"$1","note":"Rodny + hababr (fix) + Baton34V (fix)\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=4000#16\n\nПРИМЕРЫ / EXAMPLES:\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=1980#20"},"[HLS_Player-Test]":{"link":".+\\.(m3u8|mpd)","loop":1,"url":"data:,$0","res":":\nthis.TRG.IMGS_ext_data = [\n '//' + 'data:image/svg+xml,',\n `test!`\n]\nreturn 'imagus://extension'","to":"64h\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1484&limit=1&m=3#1","note":"64h\nhttp://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:\nhttp://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 that.reset_original = that.reset\n that.reset = preventImmediateHover => {\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 }\n\n return that.reset_original(preventImmediateHover)\n }\n\n platform.onkeydown_original = platform.onkeydown\n platform.onkeydown = e => {\n const url = that.TRG.IMGS_ext?.attributes['url']?.textContent\n if (url && [ e.code.replace(/^Key/, ''), e.key ].includes(cfg.keys.hz_open)) {\n Port.send({ cmd: 'open', url: url, nf: e.shiftKey })\n } else {\n return platform.onkeydown_original(e)\n }\n }\n\n that.fzClickAct_original = that.fzClickAct\n that.fzClickAct = e => !that.EXTENSION.contains(e.target) ? that.fzClickAct_original(e) : undefined\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 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) {\n return\n } else {\n return that.show_original(msg, delayed)\n }\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 switch (type[0]) {\n case 'sidebar':\n that.EXTENSION.innerHTML = ext.innerHTML\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 `.replace(/\\n\\s*/g, '')\n break\n\n case 'videojs':\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-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 ) + result.slice(1).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 preload: 'auto'\n }\n\n videojs(that.EXTENSION.VIDEOJS, playerOptions, () => {\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 filterDuplicateHeights: false,\n filterDuplicates: false,\n showBitrates: true\n }\n const mqSelector = player.maxQualitySelector(mqSelectorOptions)\n \n const setSVG = (width, height) => {\n if (!player.isFullscreen()) {\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\n qLevels.on('change', (e) => {\n setSVG(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 setSVG(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)\n that.EXTENSION.style.zIndex = 'auto'\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: ${this.DIV.style.border};\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.borderWidth} - 1px);\n padding: 5px 8px 6px;\n position: absolute;\n top: -${this.DIV.style.borderWidth};\n white-space: pre-wrap;\n width: 360px;\n z-index: -1;\n }\n #imagus-extension.imagus-sidebar > b {\n font-weight: bold;\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 .vjs-max-quality-selector-button .vjs-menu {\n width: 12em;\n }\n #imagus-extension .vjs-max-quality-selector-button .vjs-menu .vjs-menu-content {\n padding: 5px;\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\nreturn this.TRG.IMGS_ext_data","note":"64h\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1484&limit=1&m=1#1\nOLD\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1379&limit=1&m=1#1\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1272&limit=1&m=1#1\n\n!!!\nДинамически загружаемый Video.js (https://github.com/videojs/video.js), поддерживающий HLS, DASH и выбор разрешения.\n==\nDynamically loaded Video.js (https://github.com/videojs/video.js), supporting HLS, DASH and resolution selection.\n+\nБоковая панель с доп.инфо для некоторых сайтов (пока только IMDB)./ Side panel with add.info for some sites (so far only IMDB):\nhttps://i.imgur.com/se6MwJ6.png\n\nПРИМЕРЫ / EXAMPLES:\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1480#6\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1240#9"},"R_2GIS":{"img":"^(i\\d+\\.photo\\.2gis\\.\\w+/images/\\S+)(?:_\\d+x\\d+\\.)(jpe?g|gif|png)","to":"$1.$2","note":"64h\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1100#5\n\nПРИМЕРЫ / EXAMPLES\nhttps://2gis.ru/moscow/gallery/firm/4504127908875338/photoId/30258560077653165?m=37.615442%2C55.760211%2F16.95\nhttps://2gis.ua/dnepropetrovsk/geo/14778071932476788%2C35.03944%2C48.467462/firm/70000001022130112/mediaTab/photos?queryState=center%2F35.033373%2C48.46717%2Fzoom%2F17\nhttps://2gis.ru/sochi/gallery/route/4222730366606936/photoId/30258560047830220?m=39.724498%2C43.58493%2F18.73"},"R_220-volt.ru":{"link":"220-volt\\.ru/catalog-\\d+/","res":":\nvar i = $._.indexOf('
');\nif(i<0) {return null; }\nvar t = $._.indexOf('
', 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\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3920#11\nOLD\nhttp://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/frezernye-stanki/\nhttps://www.220-volt.ru/catalog/gazonokosilki/"},"R_35photo.pro":{"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ПРИМЕРЫ / EXAMPLES\nhttps://35photo.pro/photo_1334844/#author/1334844\nhttps://35photo.pro/naskens/albums/6699/\nhttps://35photo.pro/nevmerzhitskaya/albums/5981/"},"R_3DHentaiX.com-x":{"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)\nhttp://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ПРИМЕРЫ / EXAMPLES\nhttps://3dhentaix.com/school-girls/"},"R_3dtotal.com":{"link":"3dtotal\\.com\\/galleries\\/\\w+\\/\\S+","res":":\nvar i = $._.indexOf('data-project-on-big-screen');\nif(i<0) { return null; }\nvar t = $._.indexOf('\"}\\'', i);\nif(t<0) { return null; }\nvar res = [];\nvar re = /\"full\": [\\s\\S]+?\"url\": \"(https?:\\/\\/assets\\.3dtotal\\.com\\/[^\"]+)\"/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;","note":"Baton34V\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=1680#8\n\nПРИМЕРЫ / EXAMPLES\nhttps://3dtotal.com/galleries/staff-picks"},"R_4PDA.to_video":{"link":"^4pda\\.to/forum/dl/post/(\\d+)/.+\\.mp4","url":"https://4pda.to/forum/index.php?act=attach&id=$1","res":":\nreturn $._.match(//)[1]+'#mp4';\n","note":"Baton34V\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1580#9\n\nПРИМЕРЫ\nhttps://4pda.to/forum/index.php?showtopic=1033108&view=findpost&p=119337312\nhttps://4pda.to/forum/index.php?showtopic=1033108&view=findpost&p=119314713"},"R_500px":{"link":"^(?:photos\\.)?(500px\\.)com/(?:photo/)?(\\d+).*","url":"https://api.$1com/v1/photos?ids=$2&image_size[]=34&image_size[]=2048","res":":\nvar i=JSON.parse($._).photos[$[2]],u=i.image_url\nreturn [[['#'+u[1], u[0]], [i.name, i.description, i.location, i.camera, i.lens, 'by ' + i.user.username + ' (' + i.user.fullname + ')'].filter(Boolean).join(' | ')]]","img":"^(?:pp?|drs)cdn\\.(500px\\.)org/+(?:photo/)?(\\d+)/+[^/]+/.+","note":"Baton34V + Gros-Poulet (SMH rule)\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=940#16\n\n!!!\nФильтр не работает для авторизованных пользователей в Хромиум-браузерах. Для того, чтобы фильтр работал для авторизованных пользователей в браузере FireFox, необходима подмена реферера. см. ЧаВо: п.12.\n==\nThe rule does not work for authorized users in Chromium browsers. In order for the rule to work for authorized users in Firefox, it is necessary to replace the referrer. See FAQ: p.12.\n\nПРИМЕРЫ / EXAMPLES\nhttps://500px.com/editors"},"R_8muses.com-x":{"link":"comics\\.8muses\\.com/comics/album/.+","res":":\nvar i = $._.indexOf('div class=\"gallery\"');\nif(i<0) { return null; }\nvar t = $._.indexOf(' ', i);\nif(t<0) { return null; }\nvar res = [];\nvar re = /', i);\nif(t<0) { return null; }\nvar jsr=$._.substring(i+12,t).replace(/\\\\\"/g,'\"').replace(/\\\\\\\\/g,'');\nvar json=JSON.parse(jsr);\nif (json.data.post.type=='Animated')\n {return json.data.post.images.image460sv.vp9Url;}\nreturn json.data.post.images.image700.webpUrl;","note":"Baton34V\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3340#18\n\n\nПРИМЕРЫ / EXAMPLES\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3340#13\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3340#17"},"R_Abload.de":{"img":"^(.*abload.de/im)age.php\\?img=(.+\\.(?:jpe?g|a?png|gif|svgz?|webp|w?bmp|xbm|pict|j(?:if|fif?)))","to":"$1g/$2","note":"destiny child\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1360#17\n\nEXAMPLES\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1369&limit=1&m=1#1"},"R_ADmagazine.ru":{"img":"^(media\\.admagazine\\.ru/photos/\\w+/master/w_)\\d+(,c_limit/\\S+\\.\\w{3,4})","to":"$110000$2","note":"Baton34V\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3700#15\nOLD\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=2840#16\n\n!!!\nВ РФ нужен прокси.\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"},"R_Adultempire.com-x":{"img":"^(.*adultempire\\.com/products/\\d+/\\d+)m.*","to":"$1h.#jpg jpeg#","note":"gpl2731\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3616#1"},"R_AEBN.net-x":{"img":"^(.*aebn\\.net/(dis/i)?/Stream/Movie/BoxCovers/[^_]+).+","to":"$1_xlf.#jpg jpeg#","note":"gpl2731\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3616#1\n\nEXAMPLE\nhttps://straight.aebn.com/straight/search/movies/page/1?criteria=%7B%22sort%22%3A%22Newest%22%2C%22tagFilters%22%3A%5B507%5D%7D&fmc=1\nhttps://straight.aebn.com/straight/search/movies/page/1?criteria=%7B%22sort%22%3A%22Newest%22%7D"},"R_AG.ru":{"link":"ag\\.ru/screenshots/(\\w+/\\d+)","url":"http://www.ag.ru/screenshots/$1","res":"
{\n res.push([item.hiRes]);\n});\nreturn res;\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":"gpl2731\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3780#11\nOLD\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3360#2"},"R_Airbnb":{"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":":\nvar pics = /\"mediaItems\":(\\[.+?\\])/.exec($._);\npics = JSON.parse(pics[1]);\nreturn pics.map(p => [p.baseUrl.replace('/pictures/','/im/pictures/') + '?im_w=1920', p.accessibilityLabel]);\n","img":"^(..\\.muscache\\.com/im/pictures/.+\\.jpe?g\\?im_w)=\\d+","to":"$1=1920","note":"hababr\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=660#4\n\nПРИМЕРЫ / EXAMPLES\n(ссылка в виде кода)\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=660#3"},"R_Airplane-Pictures.net":{"img":"^(cdn\\.airplane-pictures\\.net\\/images\\/uploaded-images\\/\\d{4}\\/\\d+\\/\\d+\\/\\d+)\\w+(\\.jpg)$","to":"$1$2","note":"Baton34V\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=1680#8"},"R_AliExpress":{"link":"(?:\\w\\w|www)?\\.?aliexpress\\.(com|ru)/item/(?:[\\w-]*?/)?(\\d+)\\.html.*","url":"aliexpress.$1/item/$2.html","res":":\nconst r = [];\nconst oldStyle=$._.match('data: ({.+})\\s*};');\nif (oldStyle) {\n const jsn=JSON.parse(oldStyle[1]);\n for (const url of jsn.imageModule.imagePathList) {\n r.push([url, '']);\n }\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 = $[2];\n const x = new XMLHttpRequest;\n x.open('POST', 'https://aliexpress.ru/aer-jsonapi/review/v1/desktop/product/reviews?product_id=' + id +'&_bx-v=2.2.3', false);\n x.send('{\"productId\":\"' + id + '\",\"pageSize\":20,\"pageNum\":1,\"reviewFilters\":[\"ReviewFilter_WITH_PHOTO\"],\"starFilter\":\"StarFilter_ALL_STARS\",\"sort\":\"ReviewSort_USEFUL\"}');\n JSON.parse(x.responseText).data.reviews.forEach(f=>{\n if (f.additionalReview && f.additionalReview.images && f.additionalReview.images.length) {\n f.text += ' | 💬 ' + f.additionalReview.text;\n f.images = f.images.concat(f.additionalReview.images);\n }\n f.images.forEach(p => r.push([p.url, f.grade + '⭐ | ' + f.text]))\n });\n\n} catch (e) {}\n\nreturn r;","img":"(.*\\.alicdn\\.com/.+)_\\d+x\\d+\\.(jpe?g|png)","to":"$1","note":"hababr + Baton34V (fix)\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1700#4\nOLD\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1460#5\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1220#21\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3600#20\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3280#9\n\n!!!\nКурсор нужно наводить на название товара. Данный фильтр показывает не только фото товара, но и фотографии в отзывах покупателей с текстами их отзывов.\n==\nThe cursor is recommended to hover over the product name. The sieve shows not only photos of the product, but also photos in customer reviews with the texts of their reviews.\n\nПРИМЕРЫ\nhttps://aliexpress.ru/popular/shockproof-armor-case.html\nhttps://aliexpress.ru/category/202000005/home-appliances.html?spm=a2g2w.home.category.3.75df5931pbFi9W\nhttps://aliexpress.com/w/wholesale-Shockproof-Armor-Case.html\nhttps://www.aliexpress.com/w/wholesale-TV.html?SearchText=TV&catId=200002397"},"R_Allanal|Analonly|Nympho|Swallowed_trailers-x":{"link":"(?:tour.)?(?:allanal|analonly|nympho|swallowed|trueanal).com/(?:view|scenes)/.*","res":"(?:src|href)=\"([^\"]+)\" (?:type|class)=(?:'video/mp4'|\"download-trailer\")","note":"gpl2731\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1163&limit=1&m=1#1\n\n!!!\nВ РФ нужен прокси.\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"},"R_AlternativeTo.net":{"link":"^alternativeto\\.net/software/[^/]+/about/","res":":\nconst result = JSON.parse($._.match(/__NEXT_DATA__[^{]+([^<]+)/)[1]).props.pageProps.mainItem.images.filter((i) => i.type === 'Screenshot').map((i) => [ `https://d2.alternativeto.net/dist/s/${i.fileName}?format=${/\\.gif$/.test(i.fileName) ? 'gif' : 'png'}` ])\nreturn result.length > 0 ? result : false","img":"^d4\\.alternativeto\\.net.+\\/(\\w+)\\.\\w+$","to":":\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":"64h\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1500#15\n\nПРИМЕРЫ:\nhttps://alternativeto.net/software/pdf-expert/\nhttps://alternativeto.net/software/lucidchart/about/\nhttps://alternativeto.net/software/rxdb/about/\nhttps://alternativeto.net/software/wiztree/?platform=windows&sort=addeddate"},"R_AnalVids.com-x":{"link":"analvids.com/watch/\\d+/.+","res":":\nmax_resolution = 1080;\n\nconst textObj = $._.match(/\"qualities\":(?\\[.+?\\])/i)?.groups?.clips;\nif (!textObj) return;\n\nconst res_map = {'1080p': 1080, hd: 720, vga: 480, web: 240};\nconst trailers = JSON.parse(textObj)\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\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3780#21\nOLD\nhttp://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"},"R_Anime-Pictures.net":{"link":"^anime-pictures\\.net/pictures/view_post/\\d+\\?lang=","res":"href=\"(/pictures/download_image/[^\"]+)\"\nhref=\"(/pictures/get_image/[^\"]+)\"","note":"Rodny\n\nПРИМЕРЫ / EXAMPLES\nhttps://anime-pictures.net/pictures/view_posts/0?lang=ru\nhttps://anime-pictures.net/posts?page=4&order_by=date&ldate=0&lang=ru"},"R_APKPure-b":{"link":"^apkpure\\.com/[\\w-%]+/[\\w.]+","res":":\nlet i = $._.indexOf('
', 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 if (a[1].startsWith('http')) {\n res.push([a[1]]);\n }\n a = re.exec(data);\n}\nreturn res;","note":"Baton34V\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=640#12\n\n!!!\nВ настоящее время фильтр не работает.\n==\nThe rule is currently not working.\n\nПРИМЕРЫ / EXAMPLES\nhttps://apkpure.com/search?q=Metro&t=app\nhttps://apkpure.com/search?q=player&t=app"},"R_APNews.com":{"link":"^apnews\\.com/article/[\\w-]+","res":":\nlet json=JSON.parse($._.match(/window\\['titanium-state'\\] = ({.+?})\\s/)[1]).content.data;\nlet res = [];\nfor (obj of json[Object.keys(json)[0]].media) {\n if (obj.imageMimeType.startsWith('image/')) {\n res.push([''+obj.gcsBaseUrl+obj.imageRenderedSizes[0]+obj.imageFileExtension,obj.caption]);\n }\n}\nreturn res;","note":"Baton34V\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1500#15\n\n!!!\nВ РФ нужен прокси. Видео не поддерживается\n==\nthe video is not supported.\n\nEXAMPLES\nhttps://apnews.com/hub/travel\nhttps://apnews.com/hub/sports\nhttps://apnews.com/hub/health"},"R_Apple.com_music":{"link":"music\\.apple\\.com/\\w\\w/album/[^/]+/\\d+","res":"","note":"Baton34V\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3560#9\n\n!!!\nНаводить курсор на название альбома\n==\nHover over album name.\n\nПРИМЕРЫ / EXAMPLES\nhttps://music.apple.com/ru/search?term=Beautiful"},"R_Apteka.ru":{"link":"^apteka\\.ru/product/.*/","res":":\nvar i = $._.indexOf('
');\nif(i<0) { return null; }\nvar t = $._.indexOf('', i);\nif(t<0) { return null; }\nvar res = [];\nvar re = /src=\"([^\"]+)\"/gi\nvar a = re.exec( $._.substring(i,t) );\nwhile(a) {\n res.push([a[1].replace('preview','original')]);\n a = re.exec( $._.substring(i,t) );\n}\nreturn res;\n","img":"(images\\.apteka\\.ru\\/)medium(_.+\\.jpeg)","to":"$1original$2","note":"Baton34V\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1660#20\nOLD\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=2860#3\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=2280#21\n\nПРИМЕРЫ\nhttps://apteka.ru/search/?q=витамины"},"R_Apteka.Magnit.ru":{"link":"^apteka\\.magnit\\.ru/product/[\\w-]+","res":":\nlet i = $._.indexOf('