Skip to content

Instantly share code, notes, and snippets.

@Jaid
Last active June 10, 2024 20:39
Show Gist options
  • Save Jaid/6c4214730ec863038e149631c606cdf5 to your computer and use it in GitHub Desktop.
Save Jaid/6c4214730ec863038e149631c606cdf5 to your computer and use it in GitHub Desktop.
Imagus Sieves
{
"format_version": "1.2",
"target_page": "",
"headers": [
{
"url_contains": "i.4cdn.org",
"action": "delete",
"header_name": "referer",
"header_value": "-",
"comment": "4CHAN",
"apply_on": "req",
"status": "on"
},
{
"url_contains": "api.500px.com/v1/photos",
"action": "add",
"header_name": "X-500PX-TOKEN",
"header_value": "fetch",
"comment": "500PX",
"apply_on": "req",
"status": "on"
},
{
"url_contains": "archiveofsins.com/",
"action": "delete",
"header_name": "referer",
"header_value": "-",
"comment": "ARCHIVED.MOE / ARCHIVEOFSINS.COM",
"apply_on": "req",
"status": "on"
},
{
"url_contains": "cyberfile.me",
"action": "modify",
"header_name": "origin",
"header_value": "https://cyberfile.me",
"comment": "CYBERFILE.ME_1",
"apply_on": "req",
"status": "on"
},
{
"url_contains": "cyberfile.me",
"action": "add",
"header_name": "access-control-allow-origin",
"header_value": "*",
"comment": "CYBERFILE.ME_2",
"apply_on": "res",
"status": "on"
},
{
"url_contains": "enf-cmnf.com/",
"action": "modify",
"header_name": "referer",
"header_value": "https://enf-cmnf.com/",
"comment": "ENF-CMNF",
"apply_on": "req",
"status": "on"
},
{
"url_contains": "erome.com",
"action": "add",
"header_name": "referer",
"header_value": "https://www.erome.com",
"comment": "EROME",
"apply_on": "req",
"status": "on"
},
{
"url_contains": "exporntoons.net/play",
"action": "add",
"header_name": "referer",
"header_value": "https://exporntoons.net",
"comment": "EXPORNTOONS_1",
"apply_on": "req",
"status": "on"
},
{
"url_contains": "exporntoons.net/play",
"action": "delete",
"header_name": "origin",
"header_value": "-",
"comment": "EXPORNTOONS_2",
"apply_on": "req",
"status": "on"
},
{
"url_contains": "exporntoons.net/play",
"action": "add",
"header_name": "access-control-allow-origin",
"header_value": "*",
"comment": "EXPORNTOONS_3",
"apply_on": "res",
"status": "on"
},
{
"url_contains": "ifbvid_redirect",
"action": "modify",
"header_name": "origin",
"header_value": "https://www.facebook.com",
"comment": "FB_1",
"apply_on": "req",
"status": "on"
},
{
"url_contains": "ifbvid_redirect",
"action": "modify",
"header_name": "Access-Control-Allow-Origin",
"header_value": "*",
"comment": "FB_2",
"apply_on": "res",
"status": "on"
},
{
"url_contains": "ifbvid_redirect",
"action": "modify",
"header_name": "Sec-Fetch-Mode",
"header_value": "navigate",
"comment": "FB_3",
"apply_on": "req",
"status": "on"
},
{
"url_contains": "fb.watch/",
"action": "add",
"header_name": "Access-Control-Allow-Origin",
"header_value": "*",
"comment": "FB_4",
"apply_on": "res",
"status": "on"
},
{
"url_contains": "fb.watch/",
"action": "add",
"header_name": "Sec-Fetch-Mode",
"header_value": "navigate",
"comment": "FB_5",
"apply_on": "req",
"status": "on"
},
{
"url_contains": "fb.watch/",
"action": "add",
"header_name": "origin",
"header_value": "https://www.facebook.com",
"comment": "FB_6",
"apply_on": "req",
"status": "on"
},
{
"url_contains": ".xx.fbcdn.net/",
"action": "modify",
"header_name": "origin",
"header_value": "https://www.facebook.com",
"comment": "FB_7",
"apply_on": "req",
"status": "on"
},
{
"url_contains": ".xx.fbcdn.net/",
"action": "modify",
"header_name": "Access-Control-Allow-Origin",
"header_value": "*",
"comment": "FB_8",
"apply_on": "res",
"status": "on"
},
{
"url_contains": "failiem.lv/down.php?i=",
"action": "modify",
"header_name": "referer",
"header_value": "https://files.fm/",
"comment": "FILES.FM_1",
"apply_on": "req",
"status": "on"
},
{
"url_contains": "failiem.lv/thumb_",
"action": "modify",
"header_name": "referer",
"header_value": "https://files.fm/",
"comment": "FILES.FM_2",
"apply_on": "req",
"status": "on"
},
{
"url_contains": "algolia.net",
"action": "add",
"header_name": "referer",
"header_value": "https://www.adulttime.com/",
"comment": "GAMMA ENT.",
"apply_on": "req",
"status": "on"
},
{
"url_contains": "happy-team.org",
"action": "modify",
"header_name": "referer",
"header_value": "https://happy-team.org/",
"comment": "HAPPY-TEAM",
"apply_on": "req",
"status": "on"
},
{
"url_contains": "gd-hbimg.huaban.com",
"action": "modify",
"header_name": "referer",
"header_value": "https://huaban.com",
"comment": "HUABAN",
"apply_on": "req",
"status": "on"
},
{
"url_contains": "imagebam.com/%",
"action": "cookie_add_or_modify",
"header_name": "nsfw_inter",
"header_value": "1",
"comment": "IMAGEBAM",
"apply_on": "req",
"status": "on"
},
{
"url_contains": "imagebam.com/%",
"action": "add",
"header_name": "Access-Control-Allow-Origin",
"header_value": "*",
"comment": "IMAGEBAM",
"apply_on": "res",
"status": "on"
},
{
"url_contains": "cdn-fck.moviefap.com/moviefap",
"action": "add",
"header_name": "referer",
"header_value": "https://www.imagefap.com",
"comment": "IMAGEFAP",
"apply_on": "req",
"status": "on"
},
{
"url_contains": "imagenpic.com/",
"action": "delete",
"header_name": "referer",
"header_value": "-",
"comment": "IMAGENPIC",
"apply_on": "req",
"status": "on"
},
{
"url_contains": "imageshack.com",
"action": "delete",
"header_name": "referer",
"header_value": "-",
"comment": "IMAGESHACK",
"apply_on": "req",
"status": "on"
},
{
"url_contains": "imageshimage.com/",
"action": "delete",
"header_name": "referer",
"header_value": "-",
"comment": "IMAGESHIMAGE",
"apply_on": "req",
"status": "on"
},
{
"url_contains": "imagetwist.com/",
"action": "delete",
"header_name": "referer",
"header_value": "-",
"comment": "IMAGETWIST",
"apply_on": "req",
"status": "on"
},
{
"url_contains": "imghost.pl",
"action": "modify",
"header_name": "referer",
"header_value": "http://www.imghost.pl/",
"comment": "IMGHOST.PL",
"apply_on": "req",
"status": "on"
},
{
"url_contains": "imgtraffic.com",
"action": "delete",
"header_name": "referer",
"header_value": "-",
"comment": "IMGTRAFFIC",
"apply_on": "req",
"status": "on"
},
{
"url_contains": "cdninstagram.com",
"action": "delete",
"header_name": "cross-origin-resource-policy",
"header_value": "-",
"comment": "INSTAGRAM",
"apply_on": "res",
"status": "on"
},
{
"url_contains": "joyreactor.cc/",
"action": "modify",
"header_name": "referer",
"header_value": "https://joyreactor.cc/",
"comment": "JOYREACTOR",
"apply_on": "req",
"status": "on"
},
{
"url_contains": "clips.kick.com",
"action": "modify",
"header_name": "referer",
"header_value": "https://kick.com",
"comment": "KICK.COM_1",
"apply_on": "req",
"status": "on"
},
{
"url_contains": "clips.kick.com",
"action": "modify",
"header_name": "origin",
"header_value": "https://kick.com",
"comment": "KICK.COM_2",
"apply_on": "req",
"status": "on"
},
{
"url_contains": "clips.kick.com",
"action": "modify",
"header_name": "access-control-allow-origin",
"header_value": "*",
"comment": "KICK.COM_3",
"apply_on": "res",
"status": "on"
},
{
"url_contains": "cloud.mail.ru/videowl/view/",
"action": "add",
"header_name": "access-control-allow-origin",
"header_value": "*",
"comment": "MAIL.RU_CLOUD_1",
"apply_on": "res",
"status": "on"
},
{
"url_contains": "cloud.mail.ru/videowl/view/",
"action": "modify",
"header_name": "referer",
"header_value": "https://cloud.mail.ru/",
"comment": "MAIL.RU_CLOUD_2",
"apply_on": "req",
"status": "on"
},
{
"url_contains": "mat6tube.com/play",
"action": "add",
"header_name": "referer",
"header_value": "https://mat6tube.com",
"comment": "MAT6TUBE_1",
"apply_on": "req",
"status": "on"
},
{
"url_contains": "mat6tube.com/play",
"action": "delete",
"header_name": "origin",
"header_value": "-",
"comment": "MAT6TUBE_2",
"apply_on": "req",
"status": "on"
},
{
"url_contains": "mat6tube.com/play",
"action": "add",
"header_name": "access-control-allow-origin",
"header_value": "*",
"comment": "MAT6TUBE_3",
"apply_on": "res",
"status": "on"
},
{
"url_contains": "motorsport.tv/admin/transcoding/license/acquisition/",
"action": "modify",
"header_name": "referer",
"header_value": "https://motorsport.tv",
"comment": "MOTORSPORT_1",
"apply_on": "req",
"status": "on"
},
{
"url_contains": "motorsport.tv/admin/transcoding/license/acquisition/",
"action": "modify",
"header_name": "origin",
"header_value": "motorsport.tv",
"comment": "MOTORSPORT_2",
"apply_on": "req",
"status": "on"
},
{
"url_contains": "motorsport.tv/admin/transcoding/license/acquisition/",
"action": "add",
"header_name": "access-control-allow-origin",
"header_value": "*",
"comment": "MOTORSPORT_3",
"apply_on": "res",
"status": "on"
},
{
"url_contains": "mrjh.org",
"action": "add",
"header_name": "referer",
"header_value": "https://www.mrjh.org/",
"comment": "MRJH.ORG",
"apply_on": "req",
"status": "on"
},
{
"url_contains": "cdn.pvvstream.pro",
"action": "modify",
"header_name": "referer",
"header_value": "https://noodlemagazine.com",
"comment": "NOODLE_1",
"apply_on": "req",
"status": "on"
},
{
"url_contains": "noodlemagazine.com",
"action": "add",
"header_name": "access-control-allow-origin",
"header_value": "*",
"comment": "NOODLE_2",
"apply_on": "res",
"status": "on"
},
{
"url_contains": "noodlemagazine.com",
"action": "delete",
"header_name": "origin",
"header_value": "",
"comment": "NOODLE_3",
"apply_on": "req",
"status": "on"
},
{
"url_contains": "noodlemagazine.com",
"action": "modify",
"header_name": "referer",
"header_value": "https://noodlemagazine.com/",
"comment": "NOODLE_4",
"apply_on": "req",
"status": "on"
},
{
"url_contains": "pximg.net/img",
"action": "add",
"header_name": "referer",
"header_value": "https://i.pximg.net/",
"comment": "PIXIV",
"apply_on": "req",
"status": "on"
},
{
"url_contains": "pixroute.com/",
"action": "delete",
"header_name": "referer",
"header_value": "-",
"comment": "PIXROUTE",
"apply_on": "req",
"status": "on"
},
{
"url_contains": "reddit.com/",
"action": "modify",
"header_name": "Content-Security-Policy",
"header_value": "*",
"comment": "REDDIT_1",
"apply_on": "res",
"status": "on"
},
{
"url_contains": "sh.reddit.com/",
"action": "modify",
"header_name": "Content-Security-Policy",
"header_value": "*",
"comment": "REDDIT_2",
"apply_on": "res",
"status": "on"
},
{
"url_contains": "api.redgifs.com",
"action": "modify",
"header_name": "origin",
"header_value": "https://www.redgifs.com",
"comment": "REDGIFS_1",
"apply_on": "req",
"status": "on"
},
{
"url_contains": "api.redgifs.com",
"action": "modify",
"header_name": "access-control-allow-origin",
"header_value": "*",
"comment": "REDGIFS_2",
"apply_on": "res",
"status": "on"
},
{
"url_contains": "sinaimg.cn",
"action": "add",
"header_name": "referer",
"header_value": "https://weibo.com/",
"comment": "SINAIMG",
"apply_on": "req",
"status": "on"
},
{
"url_contains": "yandex.ru",
"action": "add",
"header_name": "referer",
"header_value": "https://yandex.ru",
"comment": "STREAMIN_1",
"apply_on": "req",
"status": "on"
},
{
"url_contains": "yandex.net",
"action": "add",
"header_name": "referer",
"header_value": "https://yandex.ru",
"comment": "STREAMIN_2",
"apply_on": "req",
"status": "on"
},
{
"url_contains": "tiktok.com",
"action": "add",
"header_name": "referer",
"header_value": "https://www.tiktok.com/",
"comment": "TIKTOK_1",
"apply_on": "req",
"status": "on"
},
{
"url_contains": ".tiktokcdn",
"action": "modify",
"header_name": "referer",
"header_value": "https://www.tiktok.com",
"comment": "TIKTOK_2",
"apply_on": "req",
"status": "on"
},
{
"url_contains": "media.tumblr.com",
"action": "delete",
"header_name": "referer",
"header_value": "-",
"comment": "TUMBLR",
"apply_on": "req",
"status": "on"
},
{
"url_contains": "ukdevilz.com/play",
"action": "add",
"header_name": "referer",
"header_value": "https://ukdevilz.com",
"comment": "UKDEVILZ_1",
"apply_on": "req",
"status": "on"
},
{
"url_contains": "ukdevilz.com/play",
"action": "delete",
"header_name": "origin",
"header_value": "-",
"comment": "UKDEVILZ_2",
"apply_on": "req",
"status": "on"
},
{
"url_contains": "ukdevilz.com/play",
"action": "add",
"header_name": "access-control-allow-origin",
"header_value": "*",
"comment": "UKDEVILZ_3",
"apply_on": "res",
"status": "on"
},
{
"url_contains": "weibocdn.com",
"action": "add",
"header_name": "referer",
"header_value": "https://weibo.com/",
"comment": "WEIBO",
"apply_on": "req",
"status": "on"
},
{
"url_contains": "youtube.com/s/player/",
"action": "modify",
"header_name": "origin",
"header_value": "https://music.youtube.com",
"comment": "YT_1",
"apply_on": "req",
"status": "on"
},
{
"url_contains": "youtube.com/s/player/",
"action": "modify",
"header_name": "access-control-allow-origin",
"header_value": "*",
"comment": "YT_2",
"apply_on": "res",
"status": "on"
},
{
"url_contains": "youtube.com/youtubei/v1/player?imagus&key=",
"action": "modify",
"header_name": "origin",
"header_value": "https://music.youtube.com",
"comment": "YT_3",
"apply_on": "req",
"status": "on"
},
{
"url_contains": "youtube.com/youtubei/v1/player?imagus&key=",
"action": "modify",
"header_name": "access-control-allow-origin",
"header_value": "*",
"comment": "YT_4",
"apply_on": "res",
"status": "on"
},
{
"url_contains": "zapodaj.net",
"action": "modify",
"header_name": "referer",
"header_value": "https://zapodaj.net/",
"comment": "ZAPODAJ.NET",
"apply_on": "req",
"status": "on"
}
],
"debug_mode": false,
"show_comments": true,
"use_url_contains": true
}
{
"date": "",
"[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\nreturn new URL($[1]).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 if (/\\/search\\?\\S*udm=2/.test(document.URL)) // 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 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": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/1cpdjsp/comment/l3kbg4h\nOLD\nhttps://www.reddit.com/r/imagus/comments/1bercv8/comment/kxh2934\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1480#16\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+\nДля увеличения видео в результатах поиска - курсор наводить на название ролика. Фильтр НЕ работает для результатов поиска в Инстаграм и Фейсбук.\n==\nThe sieve must be placed always 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?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]": {
"link": "^[^?]+\\.(m3u8|mpd)",
"loop": 1,
"url": "data:,$0",
"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=\"${$[0]}\"></imagus-extension>Video`\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": "hababr\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=2560#11\nOLD\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 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 }\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 console.log('IMAGUS EXTENSION: setSVG ' + arguments);\n clearInterval(that.timers.onReady);\n that.set(`data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"${width}\" height=\"${height}\"></svg>`)\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 = (node, keepAlbum) => {\n if (node === that.TRG) reset()\n return that.resetNode_original(node, keepAlbum)\n }\n\n that.reset_original = that.reset\n that.reset = preventImmediateHover => {\n reset()\n return that.reset_original(preventImmediateHover)\n }\n\n /*let lastScrollTop = 0\n document.addEventListener('scroll', function (ev) {\n var st = document.documentElement.scrollTop\n if (st > lastScrollTop) {\n // downscroll code\n console.log('scroll down :>> ');\n } else if (st < lastScrollTop) {\n console.log('scroll up :>> ');\n // upscroll code\n }\n lastScrollTop = st <= 0 ? 0 : st\n }, false)*/\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 window.removeEventListener(platform[\"wheel\"], that.wheeler, true)\n that.wheeler_original = that.wheeler\n that.wheeler = function (ev) {\n if (that.EXTENSION.contains(ev.target) && that.EXTENSION.scrollHeight > that.EXTENSION.clientHeight) {\n return\n }\n /* if (!ev.ctrlKey) {\n var fullZmBackup = that.fullZm\n that.fullZm = 0\n } */\n return that.wheeler_original(ev)\n // that.fullZm = fullZmBackup ?? that.fullZm\n }\n window.addEventListener(platform[\"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\n that.prepareCaption_original = that.prepareCaption\n that.prepareCaption = (trg, caption = '') => {\n const m = caption.match(/(<imagus-extension.+<\\/imagus-extension>)?(.*)/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) {\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 = `<iframe type=\"text/html\" frameborder=\"0\" allowfullscreen=\"true\" allow=\"autoplay\" src=\"https://www.youtube.com/embed/${ytId}?&autoplay=1&fs=1&iv_load_policy=3&rel=1&version=3&enablejsapi=1&loop=1&playlist=${ytId}&start=${t}\"></iframe>`\n\n } else {\n html = `<iframe src=\"${url}\"></iframe>`\n }\n that.EXTENSION.innerHTML = `<div class=\"imagus-iframe-control\">Click to enable/disable iframe control</div>${html}`\n that.EXTENSION.IFRAME = that.EXTENSION.querySelector(':scope > iframe')\n const h = [1440, 1080, 720, 360].find(i => i <= window.innerHeight) || 360;\n setSVG(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 <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"${url}\">\n <svg viewBox=\"0 0 360 96\">\n <foreignObject width=\"100%\" height=\"100%\">\n <div>\n <span>${ext.getAttribute('text')}</span>\n </div>\n </foreignObject>\n </svg>\n </a>\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/[email protected]/dist/video-js.min.css',\n 'https://cdn.jsdelivr.net/npm/[email protected]/dist/videojs-max-quality-selector.css'\n // 'https://unpkg.com/[email protected]/dist/video-js.min.css',\n // 'https://unpkg.com/[email protected]/dist/videojs-max-quality-selector.css'\n ]\n\n const urlsJS = [\n 'https://cdn.jsdelivr.net/npm/[email protected]/dist/video.min.js',\n 'https://cdn.jsdelivr.net/npm/[email protected]/dist/videojs-contrib-quality-levels.min.js',\n 'https://cdn.jsdelivr.net/npm/[email protected]/dist/videojs-max-quality-selector.min.js'\n // 'https://unpkg.com/[email protected]/dist/video.min.js',\n // 'https://unpkg.com/[email protected]/dist/videojs-contrib-quality-levels.min.js',\n // 'https://unpkg.com/[email protected]/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', `<style>${result.map(i => i.replace(/^@charset.+?;/, '')).join('')}</style>`)\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 loop: 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 defaultQuality: 2,\n // maxHeight: window.screen.height,\n // maxWidth: window.screen.width,\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 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 }\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 max-height: calc(100% + ${this.DIV.style.borderWidth} * 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 .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\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,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"640\" height=\"360\"></svg>'\n})\n\nreturn this.TRG.IMGS_ext_data",
"note": "64h + Hababr (fix)\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=2560#4\nOLD\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=2419&limit=1&m=1#1\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=2212&limit=1&m=1#1\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1484&limit=1&m=1#1\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1379&limit=1&m=1#1\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), supporting HLS, DASH and resolution selection.\nTo stop video looping, set the loop parameter to \"false\":\nhttps://i.imgur.com/iMVa3OF.png\n+\nБоковая панель с доп.инфо для некоторых сайтов (IMDB, YouTube)./ Side panel with add.info for some sites (IMDB, YouTube):\nhttps://i.imgur.com/se6MwJ6.png\n+\nПоддержка видео Ютуба во фреймах.\n==\nYoutube video support in frames.\n\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"
},
"[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"
},
"1x": {
"useimg": 1,
"link": "^1x\\.com/photo/(\\d+)",
"res": "photos-feed-image-[^\"]+\" src=\"([^\"]+)\n<title>([^<]+)\n",
"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/130svfu/comment/jr9iz3u\nOLD\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": {
"useimg": 1,
"link": "^123rf\\.com/photo_\\d+",
"res": "\"fileFormat\":\"image/[^\"]+\",\"url\":\"([^\"]+)\"\n<title>([^<]+)",
"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\nEXAMPLES\nhttps://www.123rf.com/clipart-vector/music.html?imgtype=1&oriSearch=music\nhttps://www.123rf.com/clipart-vector/green_apple.html?imgtype=1"
},
"1688-b": {
"link": "^((?:i\\d\\d|img)\\.(?:c|china)\\.(?:aliimg|alibaba)\\.com/img/ibank/\\d{4}/\\d{3}/\\d{3}/[0-9_]+)\\.[0-9a-z]+(\\.(?:jpe?g|png|gif|bmp))(?:_\\.webp)?$",
"to": "$1$2",
"note": "khox\nhttps://www.reddit.com/r/imagus/comments/2xcn05/sieve_fo1688com\n\n\nEXAMPLE\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"
},
"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ПРИМЕРЫ\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"
},
"22pixx-x": {
"link": "^(22pixx\\.xyz/)[^-]+-(\\w/[^?]+)\\.html.*",
"img": "^(22pixx\\.xyz/[or])s(/[^?]+).*",
"to": "$1$2",
"note": "imqswt\nhttps://www.reddit.com/r/imagus/comments/17ixrr3/comment/k6xuphr\nOLD\nhttps://www.reddit.com/r/imagus/comments/130svfu/comment/k0jqmfs\nhttps://www.reddit.com/r/imagus/comments/ipuury/22pixxxyz_sieve/\n\n\nEXAMPLES\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1369&limit=1&m=1#1\nhttps://www.reddit.com/r/imagus/comments/17ixrr3/22pixxxyz_sieve_needs_updating"
},
"23hq": {
"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.reddit.com/domain/23hq.com/new/\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": {
"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\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/"
},
"3DHentaiX-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/\nhttps://3dhentaix.com/uncensored/"
},
"3dtotal": {
"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"
},
"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/"
},
"4chan-p": {
"img": "^(i\\.4cdn\\.org/[\\da-z]+/\\d+)s\\..*",
"to": "$1.#jpg png webm gif#",
"note": "!!!\nFor the sieve to work on external links, you need a rule for SMH (see FAQ, p.12).\n\n\nEXAMPLES\nhttps://boards.4channel.org/vr/catalog\nhttps://boards.4channel.org/an/\nhttps://boards.4channel.org/g/\nhttps://boards.4chan.org/pol/"
},
"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\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"
},
"4shared": {
"link": "4shared\\.com/(?:s|all-images|photo|video)/.*",
"res": ":\nif(/4shared\\.com\\/all-images\\//.test($.base)){\nif(!this.array){this.array = []}\nthis.array.push(...[...$._.matchAll(/<img class=\"jsImageThumbnailLink\" src=\"([^\"]+)/g)].map(i=>[i[1]]));\nreturn /<a class=\"jsAllImagesNext submit-gray no-line\" href=\"/.test($._) ? {loop:'https://www.4shared.com'+$._.match(/<a class=\"jsAllImagesNext submit-gray no-line\" href=\"([^\"]+)/)[1]} : (()=>{const res = this.array; delete this.array; return res})();\n} else {\nreturn $._.match(/(?:<img id=\"zoom_image\" src=\"|[^{]file: ')(https:\\/\\/[^.]+\\.4shared\\.com\\/img\\/[^'\"]+)/)[1]\n}",
"img": "((?:[^.]+\\.)?4shared\\.com/img/[^?]+/)s20(/.*)",
"to": "$1s23$2",
"note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/130svfu/comment/jn8v5j7\n\nПРИМЕРЫ / EXAMPLES\nhttps://www.4shared.com/s/fc-dAX9fsea\nhttps://www.4shared.com/s/fweqrZWJcea\nhttps://www.4shared.com/all-images/2fZt0j6U/Свечи.html"
},
"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"
},
"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\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=2700#4\n\n!!!\nВ данное время фильтр поддерживает режим альбома при просмотре, но не поддерживает увеличение отдельных картинок на странице комикса.\n==\nCurrently, the sieve supports album mode when viewing, but does not support enlarging individual images on a comic book page.\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 i = $._.indexOf('JSON.parse');\nif(i<0) { return null; }\nvar t = $._.indexOf('\");</script>', 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\nhttps://www.reddit.com/domain/9gag.com/new/\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"
},
"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=1360#11"
},
"ADmagazine.ru-p": {
"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ПРИМЕРЫ\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-p-b": {
"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\n\n\nEXAMPLES\nhttps://www.adultempire.com/sex-toys.html\nhttps://www.adultempire.com/385/category/milf-porn-videos.html\nhttps://www.adultempire.com/clips?scene_attribute=390"
},
"Aftershock.news": {
"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+\\/(-\\/screenshots\\/\\w+\\/\\w+\\.\\w+)",
"to": "$1/1920/$2",
"note": "gpl2731\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1140#3\nOLD\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=1560#18\n\nПРИМЕРЫ\nhttps://ag.ru/games/devastationzone-troopers/screenshots\nhttp://www.ag.ru/games/warlock-2-the-exiled/screenshots"
},
"AIBooru.online-x": {
"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": {
"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"
},
"Airplane-Pictures": {
"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"
},
"Alamy-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"
},
"Allanal|Analonly|Nympho|Swallowed_trailers-p-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\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"
},
"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 += ' | &#128172; ' + f.additionalReview.text;\n f.images = f.images.concat(f.additionalReview.images);\n }\n f.images.forEach(p => r.push([p.url, f.grade + '&#11088; | ' + 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\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ПРИМЕРЫ / EXAMPLES\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"
},
"ALIEXPRESS+Taobao": {
"img": "^((?:img[^.]*|g(?:[^.]*\\.?){1,2}?|asearch|\\w\\w\\d\\d)\\.(?:taobao|tb|ali)cdn\\.c(?:om|n)/)(.+)_\\d+x\\d+.+",
"to": "$1$2"
},
"Allegroimg": {
"link": "(\\w\\.allegroimg\\.com/)(?:original|s\\d+)(/.*)",
"img": "(\\w\\.allegroimg\\.com/)(?:original|s\\d+)(/.*)",
"to": "$1original$2",
"note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/130svfu/comment/jn8v5j7\n\nEXAMPLES\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1360#11"
},
"AlphaCoders-p": {
"img": "^(\\w*\\.alphacoders\\.com/.+)thumb(?:big)?-(.+\\.)\\w{3,4}$",
"to": "$1$2#png jpg#",
"note": "Rodny + Baton34V (fix)\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3720#11\n\n\nПРИМЕРЫ / EXAMPLES\nhttps://wall.alphacoders.com/by_category.php?id=3&name=Anime+Wallpapers\nhttps://art.alphacoders.com/search?t=DRAGON\nhttps://alphacoders.com/users/profile/239750\nhttps://wall.alphacoders.com/profile.php?id=239750"
},
"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) => [i.signedImages[0].signedURL])\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": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/130svfu/comment/jyduj9s\nOLD\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1500#15\n\n\n!!!\nКурсор наводить на название программы (в результатах поиска).\n==\nHover the cursor over the name of the program (in the search results).\n\n\nПРИМЕРЫ\nhttps://alternativeto.net/software/pdf-expert/\nhttps://alternativeto.net/software/lucidchart/about/\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": {
"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+",
"res": ":\nconst n=this.node.offsetParent?.querySelector('img[class=\"s-image\"]')?.src?.replace(/(?:_AC)?_[A-Z]{2}\\d+_[^.]*\\./,'')\nvar i= $._.indexOf(\"{ 'initial':\");\nif (i<0) {return n||null;}\nvar t= $._.indexOf('}]},',i)\nif (t<0) {return n||null;}\nvar js= $._.substring(i,t+3).replaceAll(\"'\",'\"');\nvar imgArray=JSON.parse(js).initial;\nvar res=[];\nimgArray.forEach((item)=> {\n res.push([item.hiRes?.replace(/(?:_AC)?_[A-Z]{2}\\d+_[^.]*\\./,'')]);\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": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/1bkb9o3/comment/kw60y6p\nOLD\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3780#11\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3360#2\n\n\nПРИМЕРЫ / EXAMPLES\nhttps://www.amazon.com/s?k=gaming+mouse&_encoding=UTF8&ref=pd_gw_unk\nhttps://www.amazon.com/b?node=6669703011&ref=MARS_NAV_desktop_plswitcher\nhttps://www.amazon.com/s?k=face%2Foff+4K&crid=11KYSVKVE6FK5&sprefix=face%2Foff+4k%2Caps%2C409&ref=nb_sb_noss_1\nhttps://www.amazon.com/gp/new-releases/home-garden/3737201/ref=zg_bsnr_nav_home-garden_3_289814"
},
"Aminus3": {
"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": {
"link": "analvids.com/watch/\\d+/.+",
"res": ":\nmax_resolution = 1080;\n\nconst textObj = $._.match(/\"qualities\":(?<clips>\\[.+?\\])/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"
},
"AnandTech": {
"img": "^(images\\.anandtech\\.com/[^/]+/\\d+/[^?]+)_(?:thumb|\\d+px|\\d+x\\d+|carousel)",
"to": "$1"
},
"Ancensored-x": {
"link": "^(ancensored\\.com/)clip/[^/]+/[^/]+/([\\da-f]+).*",
"url": "//$1clip/-/-/$2",
"res": "<source type=\"video/mp4\"\\s+src=\"([^\"]+)\n=\"description\" content=([^\"]+)",
"img": "^(ancensored\\.com/)files/new_video/preview_sprite/\\d+/sprite-([^.]+).*",
"note": "https://www.reddit.com/r/imagus/comments/ecqqkd/comment/feyd0cn/\n\nEXAMPLES\nhttp://ancensored.com/video\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.net": {
"link": "^anime-pictures\\.net/pictures/view_post/\\d+\\?lang=",
"res": "href=\"(/pictures/download_image/[^\"]+)\"\nhref=\"(/pictures/get_image/[^\"]+)\"",
"note": "Rodny\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-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\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1880#17\nOLD\nhttp://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": {
"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\nhttp://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"
},
"Artvee": {
"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/"
},
"Apple_music": {
"link": "music\\.apple\\.com/\\w\\w/album/[^/]+/\\d+",
"res": "<meta property=\"og:image:secure_url\" content=\"([^\"]+)\">",
"note": "Baton34V\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3560#9\n\n!!!\nНаводить курсор на название альбома. Поддержки видео пока нет.\n==\nHover over album name. There is no video support yet.\n\nEXAMPLES\nhttps://music.apple.com/ru/search?term=Beautiful\nhttps://music.apple.com/ru/search?term=green"
},
"Apteka.ru": {
"link": "^apteka\\.ru/product/.*/",
"res": ":\nvar i = $._.indexOf('<div class=\"ViewProductPage__photo\">');\nif(i<0) { return null; }\nvar t = $._.indexOf('</ul>', 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\n\n\nПРИМЕРЫ\nhttps://apteka.ru/search/?q=витамины"
},
"Apteka.Magnit.ru": {
"link": "^apteka\\.magnit\\.ru/product/[\\w-]+",
"res": ":\nlet i = $._.indexOf('<div class=\"product-slider__box\" ');\nif(i<0) { return null; }\nlet t = $._.indexOf('</div></div></div>', i);\nif(t<0) { return null; }\nlet res = [];\nlet re = /<img data-url=\"([^\"]+)\"/gi\nlet data=$._.substring(i,t);\nlet a = re.exec(data);\nwhile(a) {\n res.push([a[1].replace(/resize\\/\\d+x\\d+\\//,'resize/1000x1000/')]);\n a = re.exec(data);\n}\nreturn res;",
"note": "Baton34V\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=640#7\n\n!!!\nДля сайта http://apteka.magnit.ru (\"незащищенное соединение\") в браузере Хром рекомендуетя добавить следующее правило:\nchrome://settings/content/insecureContent\n[*.]apteka.magnit.ru\n\nПРИМЕРЫ\nhttps://apteka.magnit.ru/search?q=биодобавки\nhttps://apteka.magnit.ru/search?q=антибиотики\nhttps://apteka.magnit.ru/catalog/vitaminy_i_bad/vitaminy_i_mineraly/"
},
"Arazu.io": {
"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/"
},
"Arca.live-p": {
"link": "^(arca\\.live/b/\\w+/\\d+).*",
"url": "$1",
"res": ":\nif(/<iframe src=\"\\w/.test($._))return {loop:$._.match(/<iframe src=\"([^\"]+)/)[1]}\nlet h=[...new DOMParser().parseFromString($._, \"text/html\").querySelector('div[class=\"article-body\"]')?.querySelectorAll('img:not([class=\"twemoji\"]),video')]||[]\nreturn h.map(i=>[i.src])",
"note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/172yg3u/comment/k43f7ro\nOLD\nhttps://www.reddit.com/r/imagus/comments/16qjg5w/comment/k1yn6rt\n\nEXAMPLES\nhttps://www.reddit.com/r/imagus/comments/15qpek4/comment/jw4wvh1"
},
"Archive.org-p-b": {
"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\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=60#3\n\n!!!\nИзображения в настоящее время не поддерживаются, только видео.\n==\nImages are not currently supported, only videos.\n\nПРИМЕРЫ / EXAMPLES\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\nhttps://archive.org/details/CNNW_20230218_090000_CNN_Newsroom_Live/"
},
"Archived.moe": {
"link": "^archived\\.moe/\\w{1,5}/redirect/",
"res": "; url=([^\"]+)",
"note": "!!!\nДля корректной работы необходимо правило для SMH (см.ЧаВо, п.12).\n==\nTo work correctly, you need a rule for SMH (see FAQ, p.12).\n\n\nEXAMPLES\nhttps://archived.moe/h/thread/6528287/"
},
"ArtLimited": {
"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": {
"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"
},
"R_ArtUntamed-x": {
"link": "^artuntamed\\.com/index\\.php\\?media/[\\w-.]+/",
"res": ":\nlet i = $._.indexOf('<div class=\"p-body-content\">');\nif(i<0) { return null; }\nlet t = $._.indexOf('<div class=\"block-outer block-outer--after\">', 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;",
"note": "Baton34V\nПМ (09-03-22)\n\n!!!\nДля корректной работы фильтра нужно войти в аккаунт.\nВ результатах поиска курсор нужно наводить на название изображения. \n==\nFor the sieve to work correctly, you need to log in to your account.\nIn the search results, the cursor should be hovered over the name of the image.\n\n\nПРИМЕРЫ / EXAMPLES\nhttps://artuntamed.com/index.php?media/featured\nhttps://artuntamed.com/index.php?members/odastein.34/#xfmgAlbums\nhttps://artuntamed.com/index.php?search/75126/&q=blondes&t=xfmg_media&o=date\nhttps://artuntamed.com/index.php?search/75130/&q=black&t=xfmg_album&o=date"
},
"ArtUntamed_attach-x": {
"link": "^artuntamed\\.com/index\\.php\\?attachments/[\\w-.]+/",
"note": "by Baton34V\nПМ (09-03-22)\n\nПРИМЕРЫ / EXAMPLES\nhttps://artuntamed.com/index.php?ams/blender-3-0-and-a-new-era-has-started.59"
},
"Aryion-x-p-b": {
"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\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": {
"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": {
"link": "^(?:[a-z]*\\.)*ashemaletube\\.com\\/videos\\/\\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\n\nno album support:\nhttps://www.ashemaletube.com/pics/cartoon/best-recent/\n\n\nEXAMPLES\nhttps://www.ashemaletube.com/videos/big-cock/best-recent/\nhttps://www.ashemaletube.com/model/domino-presley-796/"
},
"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\nhttp://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": {
"link": "(www\\.)?auchan\\.ru/product/[\\w-]+/",
"res": ":\nvar i = $._.indexOf('<div class=\"swiper-container\">');\nif(i<0) { return null; }\nvar t = $._.indexOf('</picture></div></div>', i);\nif(t<0) { return null; }\nvar res = [];\nvar re = /img src=\"([^\"]+)\" alt/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\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3040#9\n\nПРИМЕРЫ\nhttps://www.auchan.ru/catalog/hlebnaya-vypechka/\nhttps://www.auchan.ru/catalog/zootovary/"
},
"Auction.ru": {
"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/tovary_dlja_doma_i_sporta-17\nhttps://auction.ru/listing/offer/plastinki-101689"
},
"AusCelebs": {
"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": {
"link": "^auto\\.ru/(?:\\w+/)+[\\da-f-]+/",
"res": ":\nlet i = $._.indexOf('<div class=\"ImageGalleryDesktop__image-container\">');\nif(i<0) { return null; }\nlet t = $._.indexOf('</div></div></div><div class=\"ImageGalleryDesktop__thumbs-container\"', i);\nif(t<0) { return null; }\nlet res = [];\nlet re = /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",
"note": "Baton34V\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=180#5\n\nПРИМЕРЫ\nhttps://auto.ru/scooters/all/\nhttps://auto.ru/cars/all/body-allroad/"
},
"Auto.RIA.com-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\nEXAMPLES\nhttps://auto.ria.com/car/opel/astra/"
},
"Auto.RIA.com_2-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В РФ нужен прокси.\n\nEXAMPLES\nhttps://auto.ria.com/car/opel/astra/"
},
"AutoTrader.co.uk-p-b": {
"img": "^((?:m|ec)\\.atcdn\\.co\\.uk/(?:a/)?media/)(?:[^/]+/)?([^?]+).*",
"to": "$1$2",
"note": "https://www.reddit.com/r/imagus/comments/gph1ts/comment/frmipmi\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": {
"link": "^avito\\.ru/(?:[^/]+/[^/]+/.+_\\d{10,}|(web/5/user/[a-f0-9]+/ratings\\?limit=100(?:&offset=\\d+&sortRating=.+)?))",
"res": ":\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__\">(.+?)<\\/script/)?. [1] ||\n decodeURIComponent($._.match(/__initialData__\\s*=\\s*\"(.+?)\"/)?. [1]);\nif (!data) console.dir($);\nconst data_json = JSON.parse(data);\n\nfor (const key in data_json) {\n if (key.includes('@avito/bx-item-view')) {\n media = data_json[key].buyerItem.galleryInfo.media;\n }\n}\n\nlet 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\nif (hasVideo) {\n this.TRG.IMGS_ext_data = res;\n return {\n loop: 'imagus://extension'\n };\n}\n\nreturn res;",
"img": "^\\d+\\.img\\.avito\\.st/image/1/1\\.[\\w-]+\\.[\\w-]+$",
"loop": 2,
"to": ":\nlet id, img, imgs = [], n = this.node, 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": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/l5qjb98\nOLD\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=2600#9\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=2340#16\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1120#2\n\n\n!!!\nКурсор рекомендуется наводить на название товара.\n\n\nПРИМЕРЫ\nhttps://www.avito.ru/orel?bt=1&q=samsung\nhttps://www.avito.ru/orel/kvartiry/prodam/1-komnatnye/vtorichka-ASgBAgICA0SSA8YQ5geMUsoIgFk?context=H4sIAAAAAAAA_0q0MrSqLraysFJKK8rPDUhMT1WyLrYyt1JKTixJzMlPV7KuBQQAAP__dhSE3CMAAAA\nhttps://www.avito.ru/samara/avtomobili/bmw_x3_2.0_at_2019_125000km_3634614814\nhttps://www.avito.ru/brands/i1047444/all?sellerId=32f011bc19e1fe0f908fcdc295097da6"
},
"AwesomeScreenshot": {
"link": "^awesomescreenshot\\.com/image/\\d+/",
"res": "<meta property=\"og\\:image\" content=\"([^\"]+)\"\n<meta name=\"twitter\\:image\" content=\"([^\"]+)\"",
"note": "Baton34V\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=300#5\n\n\nПРИМЕРЫ / EXAMPLES\nhttps://www.reddit.com/domain/awesomescreenshot.com\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=280#20"
},
"AwesomeScreenshot_sharekey": {
"useimg": 1,
"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;",
"note": "hababr\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=2000#9\nOLD\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=300#5\n\n\nПРИМЕРЫ / EXAMPLES\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=280#20"
},
"Badfon.ru|Goodfon.ru": {
"link": "(?:avto\\.)?(?:bad|good)fon\\.ru/(?:[^/]+/)?(?:wallpaper/?.+\\.html|download\\.php\\?id=\\d+&rash=\\d+x\\d+|download/[^/]+/\\d+x\\d+/?)$",
"res": ":\nlet res;\nlet mtch=$._.match(/<meta property=\"og:image\" content=\"(https?:\\/\\/img\\d\\.(?:good|bad)fon\\.ru\\/)wallpaper\\/big(\\/\\w\\/\\w+\\/.+\\.jpe?g)\"[\\s\\S]+<meta property=\"og:description\" content=\"автор:[^:]+: (\\d+x\\d+)/);\nif (mtch!=null) {\n res=mtch[1]+'original/'+mtch[3]+mtch[2];\n}\nelse {\n mtch=$._.match(/<a href=\"([^\"]+)\" id=\"/);\n res=mtch[1];\n}\nreturn res;",
"note": "Rodny + Baton34V(fix)\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=580#13\n\nПРИМЕРЫ\nhttps://www.badfon.ru/catalog/cars/\nhttps://www.goodfon.ru/catalog/landscapes/"
},
"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"
},
"BakaSHOTS.me": {
"img": "^(bakashots\\.me/[\\w-]{10,}=?=?)[./].+",
"to": "$1"
},
"Banal.cc-x": {
"link": "^banal\\.cc/watch/\\d+",
"res": ":\n$=[...$._.matchAll(/<source type=\"video\\/mp4\" src=\"([^\"]+)/g)].map(i=>[i[1]+'#mp4'])\nreturn $.length?[[['#'+$[0],$[Math.floor($.length/2)]]]]:''",
"note": "imqswt\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/l3eoqqd"
},
"Bayimg": {
"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\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1380#12\n\nПРИМЕРЫ / EXAMPLES\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1380#11"
},
"BBC-p": {
"link": "^(?:open\\.live\\.)?bbc\\.[a-z.]{3,5}/(?:news/av|mediaselector/6/select/version/2.0/mediaset/pc/vpid)/.+",
"res": ":\nif($._[0]!=='{'){\nthis.desc=($._.match(/name=\"description\" content=\"[^\"]+/)||[,''])[1]\nreturn /\"items\\\\\":\\[\\{\\\\\"id\\\\\":\\\\\"/.test($._)?{loop:'https://open.live.bbc.co.uk/mediaselector/6/select/version/2.0/mediaset/pc/vpid/'+$._.match(/\"items\\\\\":\\[\\{\\\\\"id\\\\\":\\\\\"(\\w+)/)[1]}:''\n}\nthis.TRG.IMGS_ext_data = [\n '//' + 'data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"960\" height=\"540\"></svg>',\n `<imagus-extension type=\"videojs\" url=\"${JSON.parse($._).media[1].connection[0].href}\"></imagus-extension>${this.desc}`\n]\nreturn {loop:'imagus://extension'}",
"img": "^(ichef(?:-\\d+)?\\.bbci\\.co\\.uk/news/)\\d+",
"to": "$12048",
"note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/130svfu/comment/jyil8u7\n\nДля работы фильтра нужно разрешить \"небезопасный контент\" в настройках браузера (см. ЧаВо, п.24):\n[*.]akamaized.net\n[*.]bbc.com\n==\nFor the sieve to work, you need to allow \"unsafe content\" in the browser settings (см. ЧаВо, п.24):\n[*.]akamaized.net\n[*.]bbc.com\n\n\nAs a workaround you can add a filter to your blocker: \nwww.bbc.com##a::after\nhttps://www.reddit.com/r/imagus/comments/j9gn22/comment/ga14d6b\n\n\nEXAMPLES\nhttps://www.bbc.com/news/world-us-canada-64461305"
},
"bdnews24": {
"img": "^(media\\.assettype\\.com/bdnews[^?]+).*",
"to": ":\nconst t=this, n=t.node, m='https://'+$[1];\nn.src+='';\nif(t.CNT?.srcset)t.CNT.srcset=m;\nif(t.IMG?.srcset)t.IMG.srcset=m;\nreturn m",
"note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/1bqm6b1/comment/kxdwstm\n\nEXAMPLES\nhttps://bdnews24.com/economy\nhttps://bdnews24.com/media-en/image"
},
"Bdsmlr-x": {
"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-p": {
"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\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=2000#9\nOLD\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3760#8\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3140#17\n\nПРИМЕРЫ\nhttps://www.behance.net/vdpinto"
},
"Besplatka.ua-p": {
"link": "^besplatka\\.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\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=500#2\nOLD\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=2060#14\n\nПРИМЕР\nhttps://besplatka.ua/ru/avtozapchasti/audio-i-videotehnika"
},
"BestBlades.ru": {
"link": "^bestblades\\.ru/[\\w-]+/[\\w-]+/[\\w-]+/([\\w-]+)?",
"res": ":\nvar i = $._.indexOf('<div class=\"product-gallery__previews');\nif(i<0) { return null; }\nvar t = $._.indexOf('<div class=\"product-main__summary-cart', 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": "destiny child\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1600#15\nOLD\nhttp://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/"
},
"BidBaits.ru": {
"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\nhttp://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-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\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=500#2\n\n\nПРИМЕРЫ\nhttp://bigl.ua/Mobilnye-telefony\nhttp://bigl.ua/t-Akkumulyatornye-batarei-k-noutbukam"
},
"Bild.de-p": {
"img": "^(bilder\\.bild\\.de/fotos)-skaliert(/[^/]+/)(\\d+),(?!h=2000)[^.]+",
"to": "$1$2Bild/$3",
"note": "EXAMPLES\nhttps://www.bild.de/politik/ausland/politik-ausland/home-15683414.bild.html\nhttps://www.bild.de/lifestyle/startseite/lifestyle/lifestyle-15478526.bild.html"
},
"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"
},
"BitСhute-p": {
"link": "(?:www\\.)?bitchute\\.com/video/\\w+/",
"res": "<source src=\"([^\"]+)\" type=\"video/mp4\"",
"note": "Baton34V\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=2520#9\n\nEXAMPLES\nhttps://www.bitchute.com/search/?query=alas&kind=video\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=2520#8"
},
"Bluesky|Bsky.app": {
"img": "^(cdn\\.bsky\\.app/img/feed_)thumbnail",
"to": "#$1fullsize\n$&",
"note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/1bztu7c/comment/kyu7g9o\n\nEXAMPLES\nhttps://www.reddit.com/domain/bsky.app/new/\nhttps://bsky.app/profile/hhammerh.bsky.social"
},
"BoardGameGeek": {
"link": "^boardgamegeek\\.com/image/(\\d+).*",
"url": "//api.geekdo.com/api/images/$1",
"res": ":\n$._=JSON.parse($._)\nreturn [[['#'+$._.images.original.url, $._.images.large.url], '['+ $._.href.substr($._.href.lastIndexOf(\"/\")+1).replace(/-/g,\" \").toUpperCase() +'] ' + $._.caption]]",
"img": "^cf\\.geekdo-images\\.com/(?:[^/?]+/)+?pic(\\d+).*",
"note": "GreyEternal\nhttps://www.reddit.com/r/imagus/comments/qj7cqo/improved_boardgamegeek_bggsieve/\n\n\nEXAMPLES\nhttps://boardgamegeek.com/crowdfunding\nhttps://boardgamegeek.com/videos/boardgame/all\nhttps://boardgamegeek.com/geeklist/318487/mikkos-top-100-2023-edition"
},
"Booking.com": {
"link": "^(booking.com/hotel/.*\\.html)\\?.+$",
"url": "$1",
"res": ":\nreturn [...$._.matchAll(/highres_url:\\s*'(.+?)'/g)].map(i => [i[1], '']);",
"img": "(bstatic\\.com/.*images/hotel)/(?:square60|max\\d+(?:x\\d+)?)/(.*\\.jpg.*)",
"to": "$1/max2048x2048/$2",
"note": "hababr\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=660#2\n\nПРИМЕРЫ / EXAMPLES\nhttps://www.booking.com/searchresults.ru.html?city=-1456928\nhttps://www.booking.com/searchresults.ru.html?city=-126693"
},
"Booru.io-x-p": {
"link": "^(booru\\.io/)p/([\\w-]+)",
"url": "$1api/legacy/entity/$2",
"res": ":\nvar x=JSON.parse($._);\nvar bq=0;\nvar u='';\nObject.entries(x.transforms).forEach(([key, value]) => {\n var q=parseInt(key.match(/width=(\\d+):image\\/jpeg/)[1]);\n if (q>bq) {\n bq=q;\n u='https://booru.io/api/legacy/data/' + value;}\n});\nreturn u;",
"note": "Baton34V\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=300#5\nOLD\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3360\n\nПРИМЕРЫ / EXAMPLES\nhttps://booru.io/q/ribbon\nhttps://booru.io/q/animated%23meta"
},
"Booru.plus-x-p": {
"link": "^booru\\.plus/\\+.+",
"res": ":\nif(/source\\s+src=/.test($._))return $._.match(/source\\s+src=(\\S+)/)[1]+'#mp4'\nreturn $._.match(/<meta\\s+content=(\\S+)\\s+property=og:image>/)[1]",
"note": "imqswt\nhttps://www.reddit.com/r/imagus/comments/17ekh1h/comment/k6j0ulb\n\n!!!\nИногда требуется повторное наведение курсора.\n==\nSometimes you need to hover the cursor again.\n\nEXAMPLES\nhttps://booru.plus/+elderscrolls\nhttps://booru.plus/+madokamagica\nhttps://booru.plus/+nsfwanimegifs"
},
"BoundHub-x-p": {
"link": "^boundhub\\.com/(album|video)s/\\d+/.+",
"res": ":\nif($[1]==='album'){\nreturn [...$._.matchAll(/<a href=\"([^\"]+)\" class=\"item\"/g)].map(i=>[i[1]])\n}\n$=$._.match(/video_url: '([^']+)/)?.[1]||''\nreturn $?.length?$+'#mp4':''",
"note": "imqswt\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.reddit.com/domain/boundhub.com/new"
},
"Brazzers|Digitalplayground|Mofos|Realitykings-x-p": {
"link": "(?:brazzers|rk|realitykings|mofos|digitalplayground|twistys)\\.com\\/(?:video|scene|series)\\/(\\d+)\\/.+",
"res": ":\nconst max_resolution = 1080;\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);\n} catch (e) {\n return;\n}\n\nlet streams = data.result.children.find(c => c.type.toLowerCase() === 'trailer')\n ?.videos?.full?.files;\n\nif (!streams) {\n streams = data?.result?.videos?.mediabook?.files;\n}\nif (!streams) return;\n\nconst trailers = Object.keys(streams)\n .map(s => ({\n res: Number(s.replace(/\\D/g, '')),\n url: streams[s].urls.download,\n }))\n .filter(a => a.res <= max_resolution)\n .sort((a, b) => b.res - a.res);\n\nif (!trailers.length) return;\nreturn trailers[0].url;\n",
"note": "gpl2731\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3780#4\nOLD:\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3660#19\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3600#18\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.brazzers.com/videos\nhttps://www.digitalplayground.com/scenes?groups=9031"
},
"Brutalica.ru": {
"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\nhttp://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)$/i.exec(n.title || n.textContent)?.[1];\nreturn q && ~q.textContent.indexOf('image/') || ext || n.classList.contains('lightbox') ? $[0] + (ext ? '#' + ext : '') : ''",
"note": "hababr\nhttp://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-x-p": {
"link": "^(?:[^.]+\\.)?bunkr+\\.[a-z]+/[vi]/.+",
"res": ":\n$=$._.match(/(?:source|img)\\s+src=\"([^\"]+)/)?.[1]||''\nreturn $+(/\\.m[ok]v$/i.test($)?'#mp4':'')",
"note": "imqswt\nhttps://www.reddit.com/r/imagus/comments/17cnl32/comment/l4v5vir\nOLD\nhttps://www.reddit.com/r/imagus/comments/17cnl32/comment/kz8323g\nhttps://www.reddit.com/r/imagus/comments/17cnl32/bunkr_not_working/k5tgzdh\n\n\n!!!\nВ некоторых случаях фильтр может выдавать ошибку (красный спиннер) по разным причинам, например \"Too many requests\".\n==\nIn some cases, the sieve may throw an error (red spinner) for various reasons, for example \"Too many requests\".\n\n\nПРИМЕРЫ / EXAMPLES\nhttps://bunkr-albums.io/\nhttps://www.reddit.com/domain/bunkr.si/new\nPhoto\nhttps://bunkr.si/a/uqZSLA31\nhttps://bunkr.si/a/Tu8XPcUx\nVideo\nhttps://bunkr.si/a/w8rfEv3x\nhttps://bunkr.si/a/ur4lQWje"
},
"Casimages": {
"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\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=40#15"
},
"Catalog.Onliner.by": {
"link": "^catalog\\.onliner\\.by/\\w+/\\w+/\\w+",
"res": ":\nvar i = $._.indexOf('<div id=\"product-gallery\"');\nif(i<0) {console.log('123');return null; }\nvar t = $._.indexOf('<div id=\"product-gallery-fotorama\"', i);\nif(t<0) {console.log('456');return null; }\nvar res = [];\nvar re = /data-original=\"([^\"]+)\"/gi\ndata=$._.substring(i,t);\nvar a = re.exec(data);\nwhile(a){\nconsole.log(a[1]);\n res.push([a[1]]);\n a = re.exec(data);\n}\nreturn res;\n",
"img": "^(content2\\.onliner\\.by/catalog/device/)\\w+(/[0-9a-f]+\\.jpe?g)$",
"to": "$1main$2",
"note": "Rodny+Baton34V (fix)\nhttp://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/prices"
},
"Celeb.gate.cc-x-b": {
"img": "^(celeb\\.gate\\.cc/media/cache/)[^/]+",
"to": "$1original",
"note": "https://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\nhttps://celeb.gate.cc/melissa-rauch/gallery.html#videos\nhttps://celeb.gate.cc/oona-chaplin/gallery.html#videos"
},
"Ceneo.pl": {
"useimg": 1,
"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)=>!n?[i,o.description]:[i])",
"img": "^(image\\.ceneostatic\\.pl/data/products/\\d+/)[^i]",
"to": "$1i",
"note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/130svfu/comment/joowxsu\n\n!!!\nTo see all the product photos, you need to hover the cursor over the product name.\nSome products (rarely) may have a \"yellow indicator\".\n\n\nEXAMPLES\nhttps://www.ceneo.pl/Komputery\nhttps://www.ceneo.pl/Pokrycia_dachowe/Lokalizacja:Warszawa.htm\nhttps://www.ceneo.pl/Konsole_do_gier;szukaj-konsole+do+gier"
},
"CGSociety": {
"link": "^(.+)\\.cgsociety\\.org/art/.+",
"res": "data-image-largest=\"([^\"]+)\"",
"img": "^(cgimg\\.s\\d+\\.amazonaws\\.com/t/g\\d+.+)_\\d+(\\.jpe?g)$",
"to": "#$1_orig$2\n$1_large$2\n",
"note": "Rodny\n\nПРИМЕРЫ / EXAMPLES\nhttps://cgsociety.org/galleries/featured"
},
"CGSociety_2": {
"link": "((?:\\w+\\.)?cgsociety\\.org)(?:/c)?(?:/.+)?(/\\w{4,})/[^/]+$",
"url": "$1/api/images$2",
"res": ":\nlet jsn=JSON.parse($._);\nlet res=[];\nfor (image of jsn.included)\n{\n if (image.type=='works') {\n if (image.attributes.work_type=='image') {\n res.push([image.attributes.original_url]);\n }\n else if (image.attributes.work_type=='embed') {\n res.push([image.attributes.medium_url]);\n }\n }\n}\nreturn res;",
"note": "Baton34V\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=500#19\nOLD\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=2580#17\n\n\nПРИМЕРЫ / EXAMPLES\nhttps://cgsociety.org/galleries/recent\nhttps://cgsociety.org/search/works?query=GREEN\nhttps://cgsociety.org/?channel_genre=Character%20Art&homepage_section=workshops"
},
"ChipDip.ru": {
"link": "(?:www\\.)?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}\nreturn res;",
"note": "Baton34V\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=2380#3\nOLD\nhttp://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.org_bugs": {
"img": "^(bugs\\.chromium\\.org/p/chromium/issues/attachment\\?aid=\\d+(?:&[^&]+)*?&inline=[^&]+).*",
"to": "$1"
},
"CIAN.ru": {
"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\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=2920#9\nOLD\nhttp://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": {
"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\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=2100#8\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3380#20\nhttp://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": {
"useimg": 1,
"link": "^civitai\\.com/(?:\\w+/\\d+/.+|(?:models|images)/\\d+)",
"res": ":\nlet u = $._.match(/https:\\/\\/image\\.civitai\\.com\\/[^\\/]+\\//);\nif(!u)u = 'https://image.civitai.com/xG1nkqKTMzGDvpLrqFT7WA/'\nlet o = JSON.parse($._.match(/\"application\\/json\">({.*?})</)[1]).props.pageProps.trpcState.json.queries[0].state.data;\nreturn o.pages ? o.pages[0].items.map(i=>[u+i.url+'/'+i.name]) : u+o.url+'/'+o.name",
"img": "^(image\\.civitai\\.com/[^/]+/[^/]+)/width=\\d+",
"to": "$1",
"note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/14a8zx7/comment/joek6i1\n\nEXAMPLES\nhttps://civitai.com/articles\nhttps://civitai.com/tag/green\nhttps://civitai.com/user/no_data/models\nhttps://www.reddit.com/domain/civitai.com/new/"
},
"clip2net|c2n.me": {
"link": "(?:^clip2net\\.com/s/|^c2n\\.me/)\\w+$",
"res": "<meta property=\"og:image\" content=\"([^\"]+)\">",
"note": "Baton34V\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=2580#13\nOLD\nhttp://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/"
},
"ClippitUser.tv": {
"link": "^(clippit)user\\.tv/c(/\\w{6}).*",
"img": "^clips.(clippit).tv(/\\w{6})/thumbnail.*",
"to": "#//clips.$1.tv$2/720.mp4\n//clips.$1.tv$2/360.mp4",
"note": "EXAMPLES\nhttps://www.reddit.com/domain/clippituser.tv/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\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3620#12\nhttp://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"
},
"ComixZilla-x-p": {
"link": "^comixzilla\\.com/en/comic-g/.*/$",
"res": ":\nlet parser = new DOMParser();\nlet doc = parser.parseFromString($._, \"text/html\");\nlet images = doc.querySelectorAll('.dgwt-jg-item a');\nlet final = [];\nfor(image of images){\n final.push([image.href]);\n}\nreturn final;",
"note": "Randlai\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=620#12\n\nEXAMPLES\nhttps://comixzilla.com/en/art-a/fantasy/\nhttps://comixzilla.com/en/c-publisher/cartoon/"
},
"Communities.win": {
"img": "^media\\.communities\\.win/preview/\\w+\\.\\w+",
"to": ":\nlet urlNode=this.node.parentNode.parentNode.nextElementSibling.children[1].firstChild;\nconsole.log(urlNode.getAttribute('href'));\nreturn urlNode.getAttribute('href');",
"note": "Baton34V\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1160#20\n\nПРИМЕРЫ / EXAMPLES\nhttps://communities.win/c/all\nhttps://communities.win/c/Animals/"
},
"ComputerUniverse": {
"link": "^computeruniverse\\.net/\\w\\w/p/\\d+",
"res": ":\nlet res=[];\nlet jsn=JSON.parse($._.match(/<script id=\"__NEXT_DATA__\" type=\"application\\/json\">(.+?)<\\/script>/)[1]);\nif (jsn.props.pageProps.legacyFormat==false) {\nconsole.log((jsn.props.pageProps.edgeContextEncoded));\n jsn=JSON.parse(decodeURIComponent(jsn.props.pageProps.edgeContextEncoded));\n}\nelse {\n jsn=jsn.props.pageProps.edgeContext;\n}\nfor (let imgUrl of jsn.pageData.staticData.product.ProductPictures) {\n res.push(['https://img.computerunivers.net'+imgUrl.ImageUrlBig]);\n}\nreturn res;\n",
"img": "(img\\.computerunivers\\.net/images/)\\d\\dx\\d\\d(/[A-F0-9]+\\.\\w{3,4})$",
"to": "$11000x1000$2",
"note": "Baton34V\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1600#4\nOLD\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1200#13\n\n\n!!!\nТребуется повторное наведение курсора.\n==\nRe-hovering of the cursor is required.\n\nПРИМЕРЫ / EXAMPLES\nhttps://www.computeruniverse.net/ru/c/noutbuki-planshety-i-pk/bloknoty-i-aksessuary"
},
"COOMER|KEMONO-x-p": {
"link": "^(beta\\.)?(?:kemono|coomer)\\.(?:party|su)/[^/]+/user/[^/]+/post/\\d+",
"res": ":\nreturn [...$._.matchAll(/(?:class=\"fileThumb\"[^\\w]+href|src(?==\"[^>]+type=\"video\\/[^\"]{3,4}\"))=\"([^\"]+)\"(?:[^>]+>[^>]+src=\"([^\"]+))?/g)].map(i=>[['#'+i[1],i[2]]])",
"img": "^img(\\.(?:coomer|kemono)\\.(?:party|su)/)thumbnail",
"to": "c2$1",
"note": "imqswt\nhttps://www.reddit.com/r/imagus/comments/14b0e93/comment/jt3vi50\nOLD\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1740#6\nhttps://www.reddit.com/r/imagus/comments/xv9tah/betakemonoparty_rule\n\n!!!\nВ фильтре есть возможность переключать высокое/среднее разрешение - клавишей TAB.\n==\nThe rule has the ability to switch high/medium resolution - with the TAB key.\n\n\nEXAMPLES\nhttps://kemono.su/fanbox/user/16051830?o=100\nhttps://kemono.party/patreon/user/49965584\nhttps://coomer.party/onlyfans/user/onlyhentai69\nhttps://coomer.su/onlyfans/user/twinhentai\nhttps://www.reddit.com/domain/kemono.party/new\nhttps://www.reddit.com/domain/coomer.party/new"
},
"Coub": {
"link": "^coub\\.com\\/view\\/\\w{4,6}",
"res": ":\nvar i = $._.indexOf(\"<script id='coubPageCoubJson' type='text/json'>\");\nif(i<0) { return null; }\nvar t = $._.indexOf(\"script>\",i);\nif(t<0) { return null; }\nvar re=/{.*}/gi\nvar sourcesSTR = re.exec($._.substring(i,t));\nvar ulr;\nvar js1=JSON.parse(sourcesSTR)\nvar url = js1.file_versions.share?.default;\nif (url==null) {\n url=js1.file_versions.html5?.video?.higher?.url;\n}\nif (url==null) {\n url=js1.file_versions.html5?.video?.high?.url;\n}\nreturn url||''",
"note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/kgkh2pt\nOLD\nhttp://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://moscow.craigslist.org/search/hhh?areaAbb=moscow\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\nhttp://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 rule for Ublock Origin extension (it is necessary for the sieve to work in Galleries):\ncsfd.cz,csfd.sk##.media-img > picture > img:style(pointer-events: auto !important)\n\nEXAMPLES\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1080#13"
},
"CyberDrop.me-x": {
"link": "^(cyberdrop\\.me/)(f/)(\\w+)",
"url": "https://$1api/$2$3",
"res": ":\n$=JSON.parse($._)\nreturn $.url+($.type?.startsWith('video')?'#mp4':'')",
"note": "imqswt\nhttps://www.reddit.com/r/imagus/comments/1bs0clo/comment/kxis1yh\n\nEXAMPLES\nhttps://cyberdrop.me/a/v6NStYbB\nhttps://cyberdrop.me/a/PFB78qek\nhttps://www.reddit.com/domain/cyberdrop.me/new/"
},
"CyberFile.me": {
"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\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1360#11"
},
"DailyMail": {
"link": "(dailymail\\.co\\.uk/.*)",
"url": ": $[1]",
"res": ":\n//console.log(\"imagus: reading \" + $[1]);\nvar doc = new DOMParser().parseFromString($._, \"text/html\");\n// dailymail has duplicates - correct one has data-src\nvar images = doc.querySelectorAll('img.img-share[data-src]');\nvar imgurls=Array.from(images).map(img => img.getAttribute(\"data-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(/data-src=\"/gi, \"\");\n if ( item.search(/https?:\\/\\//) == -1) {\n if (item[0] == \"/\") item = baseurl + item; else item = dirurl + \"/\" + item;\n }\n return [item, item]; \n});\nreturn i;",
"note": "regexfan1245\nhttps://www.reddit.com/r/imagus/comments/tutndw/sieve_for_dailymailcouk_images/"
},
"DailyMotion-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На некоторых браузерах может не работать.\n==\nIt may not work on some browsers.\n\n\nEXAMPLES\nhttps://www.reddit.com/domain/dailymotion.com/new\nhttps://www.dailymotion.com/video/x86advk\nhttps://www.dailymotion.com/search/SPORT/videos"
},
"Danbooru.Donmai.us-x-p": {
"link": "^(?:(?:safe|dan)booru\\.|hijiribe\\.|sonohara\\.)?(donmai\\.us)/post(?:s|/show)/(\\d+).*",
"url": "//danbooru.$1/posts/$2.json",
"res": ":\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": "^((?:(?:safe|dan)booru\\.|hijiribe\\.|sonohara\\.)?donmai\\.us/data/)[^/]+/(?:sample-)?([\\da-f]{32}\\.).+",
"to": "#$1$2#jpg png gif webm#\n$1sample/sample-$2#jpg png gif#",
"note": "ПРИМЕРЫ / EXAMPLES\nhttps://danbooru.donmai.us/artists/337081\nhttps://danbooru.donmai.us/posts?tags=yoshikirino\nhttps://danbooru.donmai.us/posts?page=3&tags=genshin_impact"
},
"Darudar": {
"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\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=580#11\n\nПРИМЕРЫ\nhttps://darudar.org/"
},
"Daz3D-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\nПРИМЕРЫ / EXAMPLES\nhttps://www.daz3d.com/animals-and-creatures\nhttps://www.daz3d.com/people-and-wearables"
},
"dcinside": {
"link": "^gall\\.dcinside\\.com/(?:(?:(?:[^/]+/)?board/view/|list\\.php)\\?id=[^&]+&no=|\\w+/)\\d+",
"res": ":\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/15qpek4/comment/jw9n6dy\n\n!!!\nВидео не поддерживается / Video not supported.\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\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1360#11"
},
"DeepSkyHosting": {
"img": "(deepskyhosting\\.com/img/\\w/)\\d+(/\\d+\\.\\w+)",
"to": "$1full$2",
"note": "Baton34V\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=700#11\n\nПРИМЕРЫ / EXAMPLES\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\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3520#5\nOLD\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=2460#12\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\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3720#11\nOLD\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=1540#12\n\n\nEXAMPLES\nhttps://www.defense.gov/Multimedia/Photos/"
},
"dePIC.me": {
"link": "^depic\\.me/\\w+/.+",
"res": "<img src=\"([^\"]+)\"[^>]+id=\"pic\"",
"note": "Rodny+Baton34V (fix)\nhttp://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-x-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 true, the largest possible media will be displayed. Useful for downloading highest quality content.\n//if set to false, web-optimized media will be displayed. Best choice for fast browsing and low internet speeds.\nconst prefer_largest_media = true;\n\n//Set true to view debugging console messages\nconst debug = false;\n\n\nif(debug) console.log(\"DeviantArt Verbose Sieve V2.4\");\n\nlet pagedefinitionsJSON=$._.match(/\\.__INITIAL_STATE__\\s*=\\s*JSON\\.parse\\((\"[^\\n]+\")/)\nif(!pagedefinitionsJSON) //If page definitions could not be parsed, fallback to regex attempt\n{\n pagedefinitionsJSON=$._.match(/collect_rid=\"[^\"]+\" src=\"([^\"]+)\"[^>]+alt=\"([^\"]+)\"[^>]+=\"dev-content-full/)\n return pagedefinitionsJSON&&[pagedefinitionsJSON[1], pagedefinitionsJSON[2]]\n}\n\n//This deviationdefinition_all let is thorough information about the deviation, including the user and related deviations\nlet deviationdefinition_all=JSON.parse(eval(pagedefinitionsJSON[1]))['@@entities'];\n//if(debug) console.log(\"Deviation Definition (All)\", deviationdefinition_all);\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\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.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\n\n //Define the top text\n toptext = datestring + ' | ' + deviationdefinition_specific.title + ' | ' + \n deviationdefinition_all.user[deviationdefinition_specific.author].username;\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 \n\n //Define the top text\n toptext = deviationdefinition_specific.title + \n ' | ' + deviationdefinition_all.user[deviationdefinition_specific.author].username + \n (descriptionlength == 0 ? \"\" : ' | ' + descriptionlength);\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;\nif(!baseuri)return;\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//There are 0 or 1 or 2 tokens in the mediatoken definition for some reason. Which one works is guesswork.\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\nlet medialinkobject;//final goal is to fill in this object\n\nif(prefer_largest_media) {\n //If download info exists, use link directly. Handles most GIFs and images.\n if(deviationdefinition_all.deviationExtended[deviationkey].download) {\n if(debug) console.log(\"Direct download link found.\")\n let downloadlink = deviationdefinition_all.deviationExtended[deviationkey].download.url;\n\n if(downloadlink.match(/\\.(?:7z|rar|zip|pdf)\\?/) == null) {//Exclude filetypes not displayed with imagus\n medialinkobject = [downloadlink];\n\n //Construct the final return object\n let returnval = [\n [medialinkobject, toptext]\n ];\n if(debug) console.log(\"Final Return Value\", returnval)\n return returnval;\n }\n if(debug) console.log(\"Undisplayable filetype detected, skipping download link.\");\n }\n\n if(debug) console.log(\"Direct download link not found or not an Imagus media type.\")\n\n // Extract meaningful objects that contain identifiers\n let fullview;\n let preview;\n let largestvideo;\n let gif;\n let has_valid_definition = !!(mediadefinition.types);\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 if(currentdefinition.t == 'video') {\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 continue;\n }\n if(currentdefinition.t == 'gif') {\n gif = currentdefinition;\n continue;\n }\n }\n\n\n if(largestvideo) {// Video definition exists. Use this.\n if(debug) console.log(\"Video detected.\");\n medialinkobject = [largestvideo.b];\n }\n else if(gif) {// GIF definition exists\n if(debug) console.log(\"GIF detected.\");\n medialinkobject = [gif.b+mediatokenstring0];;\n }\n else if(fullview) {// Fullview exists\n if(debug) console.log(\"Fullview definition of image detected.\");\n if(debug) console.log(\"fullview\", fullview);\n if(fullview.b||fullview.c) { //url parts are in this definition\n medialinkobject = [baseuri+(fullview.b||fullview.c).replace('<prettyName>', deviationdefinition_specific.media['prettyName']) + mediatokenstring0];\n }\n else {\n if(debug) console.log(\"Fullview definition incomplete. Attempting basic url construction...\");\n medialinkobject = [baseuri+mediatokenstring0];\n }\n }\n else {//no valid definitions\n if(debug) console.log(\"No sized preview definition found. Attempting basic url construction...\");\n medialinkobject = [baseuri+mediatokenstring0];\n }\n}\nelse {//Attempt to get web optimized media instead\n\n //Get viewport to optimize against\n const viewportwidth = Math.max(document.documentElement.clientWidth || 0, window.innerWidth || 0);\n const viewportheight = Math.max(document.documentElement.clientHeight || 0, window.innerHeight || 0);\n if(debug) console.log(\"Viewport: \" + viewportwidth + \" by \" + viewportheight);\n\n if(mediadefinition.baseUri.includes(\".gif\")) {//handle GIFs special as they don't have a definition in the mediadefinition types\n if(debug) console.log(\"GIF detected.\");\n\n //Construct the final return object\n medialinkobject = [mediadefinition.baseUri+mediatokenstring0];\n let returnval = [\n [medialinkobject, toptext]\n ];\n \n if(debug) console.log(\"Final Return Value\", returnval)\n return returnval;\n }\n\n // Extract meaningful objects that contain identifiers\n let fullview;\n let preview;\n let bestvideosizematch;\n let bestvideosizecloseness = 10000.0;//large number is a bad fit, start this number with arbitrarily bad ratio\n let gif;\n let bestimagesizematch;\n let bestimagesizecloseness = 10000.0;//large number is a bad fit, start this number with arbitrarily bad ratio\n let has_valid_definition = !!(mediadefinition.types); \n for(let i=0; i<mediadefinition.types.length; i++) {\n let currentdefinition = mediadefinition.types[i];\n if(currentdefinition.t == 'preview') {//save preview definition as a default case\n preview = currentdefinition;\n }\n if(currentdefinition.t == 'video') {\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 continue;\n }\n if(currentdefinition.t == 'gif') {//GIFs only have one definition if they exist\n gif = currentdefinition;\n continue;\n }\n\n //If none of the special cases are matched, 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) console.log(\"currentsizecloseness\", currentsizecloseness);\n if(currentsizecloseness < bestimagesizecloseness) {\n bestimagesizecloseness = currentsizecloseness;\n bestimagesizematch = currentdefinition;\n if(debug) console.log(\"New best match at closeness \", bestimagesizecloseness, \" type \", bestimagesizematch.t);\n }\n }\n\n }\n\n\n if(bestvideosizematch) {// Video definition exists. Takes precedence over other media types.\n if(debug) console.log(\"Video detected.\");\n medialinkobject = [bestvideosizematch.b];\n }\n else if(gif) {// GIF definition exists. Takes precedence over everything but video.\n if(debug) console.log(\"GIF detected.\");\n medialinkobject = [gif.b+mediatokenstring0];;\n }\n else{// Attempt image media definition\n \n if(bestimagesizematch.b||bestimagesizematch.c) { //Use bset size match if it has a complete definition\n medialinkobject = [baseuri+(bestimagesizematch.b||bestimagesizematch.c).replace('<prettyName>', deviationdefinition_specific.media['prettyName']) + 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 medialinkobject = [baseuri+(preview.b||preview.c).replace('<prettyName>', deviationdefinition_specific.media['prettyName']) + mediatokenstring0];\n \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 medialinkobject = [baseuri+mediatokenstring0];\n }\n }\n}\n\n\n\n//Construct the final return object\nlet returnval = [\n [medialinkobject, toptext]\n ];\nif(debug) console.log(\"Final Return Value\", returnval)\nreturn returnval;",
"img": "^images-wixmp-ed30a86b8c4ca887773594c2\\.wixmp\\.com/[a-z]/[\\da-f-]{36}/([\\da-z]+)-.*",
"note": "iceiller9999\nv2.4\nhttps://www.reddit.com/r/imagus/comments/15iej6p/deviantart_sieve_bug_fix/\nOLD\nhttps://www.reddit.com/r/imagus/comments/sjeohm/deviantart_comprehensive_sieve\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=240#4\n\n\n!!!\nУмеет открывать картинки в более высоком или низком разрешении (опционально) - см расшифровку \"флагов\" ниже (англ).\n==\nOpens pictures in a higher resolution (optional). See the explanation of the \"flags\" below:\n\n1. imagus_description_style. Set flag \"true\" to use Imagus description style. Set to \"false\" to use a more concise version. More details in the code comments.\n\n2. prefer_largest_media. Set flag \"false\" to load web optimized media, good for speed/bandwidth. Set flag \"true\" to load the largest media size possible, excellent for downloading."
},
"DeviantArt_sta.sh-x-p": {
"link": "sta\\.sh/\\w+",
"res": ":\nlet z=$._.match(/src=\"([^\"]+)\"[^>]+class=\"dev-content-full\">/);\nif (z!=null) {\n return z[1];\n}\nlet i = $._.indexOf('script><div class=\"stash-thumb-container');\nif(i<0) { return null; }\nlet t = $._.indexOf('<div id=\"empty-item\" class=\"invisible\">', i);\nif(t<0) { return null; }\nlet res = [];\nlet re = /data-super-full-img=\"([^\"]+)\"/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\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1440#7\n\n!!!\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": {
"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\nhttp://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\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1600#12\nOLD\nhttp://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.net": {
"useimg": 1,
"link": "^(?:s\\d+\\.)?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://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\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1160#16\nOLD\nhttp://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\\w/)?(release|master)/(\\d+)[^\\/?]+(?:(?:/|\\?)image(?:=(\\d+))?(?:.+))?",
"url": ": 'https://www.discogs.com/internal/release-page/api/graphql?operationName='+ ($[3] || $[1]=='release' ? 'ReleaseAllImages' : 'MasterReleaseAllImages') +'&variables={\"discogsId\":' + ($[3] ? $[3] : $[2]) + ',\"count\":500}&extensions={\"persistedQuery\":{\"version\":1,\"sha256Hash\":\"'+ ($[3] || $[1]=='release' ? '13e41f41a02b02d0a7e855a71e1a02478fd2fb0a2d104b54931d649e1d7c6ecd' : '4faa70a6b17ca38aa060fd37ecb4ba5646706154d970c3b2ea9198c18be79a73') +'\"}}';",
"res": ":\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": "Baton34V\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1160#18\nOLD\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3080#17\n\n\n!!!\n^discogs\\.com/(?:\\w\\w/)?(release|master)/(\\d+)[^\\/]+(?:/|\\?)image(?:=(\\d+))?(?:.+)\nСрабатывает на обложках и в блоке \"Релизы\".\n==\nIt works on the covers and in the \"Releases\" block.\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\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1160#16\nBaton34V\nhttp://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"
},
"DMM.co.jp-x-p": {
"link": "dmm.co.jp/digital/videoa/-/detail/=/cid=.+",
"res": ":\nvar str = $._\nconsole.log(str);\nvar str1 = /href=\"(.+?pl\\.jpg)\"/i;\nconsole.log(str1);\nvar found = str.match(str1);\nconsole.log(found[1]);\nvar i = $._.indexOf('id=\"sample-image-block\"');\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);\nconsole.log(a);\nres.push([found[1]]);\nwhile(a) {\n res.push([a[1]]);\n a = re.exec(data);\n}\nconsole.log(res);\nreturn res;",
"img": "(dmm\\.(co\\.jp|com)\\/.+)(ps|pt|-\\d+)\\.jpg",
"ci": 2,
"to": ":\nif ($[3] == \"pt\" || $[3] == \"ps\") {\nconsole.log($[1] + \"pl.jpg\");\nreturn $[1] + \"pl.jpg\"\n} else {\nconsole.log($[1] + $[3] + \".jpg\");\nreturn $[1] + $[3] + \".jpg\"\n}\n",
"note": "loveqianool\nhttps://www.reddit.com/r/imagus/comments/116g0uo/comment/jcxris0\nOLD\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"
},
"DNS-shop.ru": {
"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\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=100#2\nOLD\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=2900#4\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=2520#12\n\nEXAMPLES\nhttps://www.dns-shop.ru/catalog/17a8cf4816404e77/massazhery/\nhttps://www.dns-shop.ru/catalog/recipe/ecb3d99d171a79ba/58---65/"
},
"DNS-shop.ru_club": {
"url": ": !this.dns_shop_json?'https://www.dns-shop.ru/catalog/product/get-media-content/?id='+document.body.innerHTML.match(/data-product-card=\"([^\"]+)/)[1]:'data:,'+$[1]",
"res": ":\nif(!this.dns_shop_json)this.dns_shop_json=$._\nreturn JSON.parse(this.dns_shop_json).data.tabs[0].objects.find(i=>RegExp(`${$[1]}`).test(i.thumbSrc.orig))?.origSrc?.orig||''",
"img": "^c\\.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/khngdf6\nOLD\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=220#4\n\nПРИМЕРЫ\nhttps://club.dns-shop.ru/digest/64394-v-windows-11-obnarujili-novyii-dizain-dispetchera-zadach-naiti/"
},
"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/features#video\nhttps://www.dpreview.com/reviews/1107allinoneprinters"
},
"DogDrip": {
"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/dogdrip?sort_index=popular\nhttps://www.dogdrip.net/dogdrip/503225703?sort_index=popular&page=2\nhttps://www.dogdrip.net/?_filter=search&act=&vid=&mid=dogdrip&category=&search_target=title&search_keyword=@@"
},
"DogfartNetwork_gallery-x-p": {
"link": ".*dogfartnetwork\\.com/tour/scenes/.+/.+/pics/\\d+\\.jpg\\?p=\\d+",
"res": "img src=\"(.*)\" alt=\"\"",
"note": "gpl2731\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3616#1\n\nEXAMPLES\nhttps://www.dogfartnetwork.com/en/photos\nhttps://www.dogfartnetwork.com/en/videos/categories/amateur\nhttps://www.dogfartnetwork.com/en/videos/categories/femdom"
},
"DogfartNetwork_trailer-x-p": {
"link": "dogfartnetwork\\.com/tour/sites/.+?/.+?/\\?nats=.*",
"res": "data-trailer=\"yes\">\\r\\n.*<a href=\"([^\"]+)",
"note": "gpl2731\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3616#1\n\nEXAMPLES\nhttps://www.dogfartnetwork.com/tour/sites/\nhttps://www.dogfartnetwork.com/tour/scenes/\nhttps://www.dogfartnetwork.com/tour/categories/big_tits/"
},
"Domclick.ru": {
"link": "^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": "img.dmclk.ru/$1",
"note": "hababr\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=2480#18\nOLD\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=2060#7\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3760#8\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": {
"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"
},
"Doujins-x": {
"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!!!\nНеобходима установка расширения uBlock Origin (uBO) и правила для него / You need to install the uBlock Origin (uBO) extension and the rule for it:\ndoujins.com##.thumbnail-cover\n\nПРИМЕРЫ / EXAMPLES\nhttps://doujins.com/artists/Katou+Jun\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"
},
"DPChallenge": {
"img": "^(images\\.dpchallenge\\.com/images_[^/]+/\\d+-\\d+/\\d+/)120/",
"to": "$1800/",
"note": "EXAMPLES\nhttps://www.dpchallenge.com/photo_gallery.php?GALLERY_ID=24\nhttps://www.dpchallenge.com/photo_gallery.php?GALLERY_ID=17"
},
"Dribbble": {
"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\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1600#9\nOLD\nhttps://www.reddit.com/r/imagus/comments/c1vjns/comment/ers70h4\nhttp://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://dribbble.com/riskified\nhttps://dribbble.com/shots/popular/animation\nнужен аккаунт / account needed:\nhttps://dribbble.com/search/green"
},
"Drive2.ru": {
"link": "drive2\\.ru\\/\\w/\\d+/",
"res": ":\nvar i = $._.indexOf('<div class=\"c-post__pic\"');\nif(i<0) { return null; }\nvar t = $._.indexOf('<div class=\"c-post-meta o-group o-group--justify\">', i);\nif(t<0) { return null; }\nvar res = [];\nvar re = /<a href=\"([^\"]+)\" class=\"c-lightbox-anchor c-pic-zoom\"/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\n",
"note": "Baton34V\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3320#8\n\nПРИМЕРЫ\nhttps://www.drive2.ru/experience/renault/g3151/"
},
"Drom.ru": {
"link": "\\w+\\.drom\\.ru/.+/.+/\\d+\\.html",
"res": ":\nreturn [...new DOMParser().parseFromString($._,\"text/html\").querySelectorAll('[data-ftid=\"bull-page_bull-gallery_thumbnails\"] a')].map(i=>[i.href]);",
"note": "hababr\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=2120#8\nOLD\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=160#17\n\nПРИМЕРЫ\nhttps://auto.drom.ru/mercedes-benz/\nhttps://baza.drom.ru/sankt-peterburg/wheel/\nhttps://moto.drom.ru/sankt-peterburg/atv/"
},
"Drom.ru_review": {
"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\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=160#17\n\nПРИМЕРЫ\nhttps://www.drom.ru/reviews/"
},
"Dropbox": {
"link": "^(dropbox\\.com/[su]h?/[^?]+\\.(?:jp(?:g|eg?)|a?png|gif|svgz?|bmp|web[pm]|og[gv]|j(?:if|fif?))).*",
"ci": 1,
"to": "https://dl.$1",
"note": "EXAMPLES\nhttps://www.reddit.com/domain/dropbox.com/new"
},
"DTF.ru": {
"img": "^(leonardo\\.osnova\\.io/[\\da-f-]+/)-/.+",
"to": "$1",
"note": "Baton34V\nhttp://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": {
"link": "^(?:clip\\.)?dubz\\.[a-z]{2,4}/[a-z]{1,}/([a-z0-9]{6,})$",
"to": "https://dubzalt.com/storage/videos/$1.mp4",
"note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/16s6g6c/comment/k283ned\nOLD\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": {
"img": "^(external-content\\.duckduckgo\\.com/iu/\\?u=.+)",
"loop": 2,
"to": ":\nfunction inject(code) {\n const s = document.createElement('script');\n s.textContent = code;\n s.onload = function() { this.remove(); };\n (document.head || document.documentElement).appendChild(s);\n}\n\nconst thumb_url = (new URL('https://' + $[0])).searchParams.get('u');\nconst thumb_id = (new URL(thumb_url)).searchParams.get('id');\nconst tc = this.TRG.className;\n\nif (!(tc.includes('tile--img__img') || tc.includes('module--images__thumbnails__image'))) return thumb_url;\n\ninject('sessionStorage.setItem(\"DDGData\", JSON.stringify(window.DDG.Data.answers._definitions[1].model.items));');\n\nconst ddg_images = JSON.parse(sessionStorage.getItem('DDGData'));\n\nfor (const item of ddg_images) {\n if (item.thumbnail.includes(thumb_id)) return item.image;\n}",
"note": "64h\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1060#11\n\nEXAMPLES\nhttps://duckduckgo.com/?q=cat+pics\nhttps://duckduckgo.com/?q=cat+pics&ia=images&iax=images"
},
"Dumpert.nl": {
"link": "^(dumpert\\.nl/)(?:mediabase|item)(/\\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]\nreturn x.media.map(function(m,i){\n var v = {};\n m.variants.forEach(function(m){return v[m.version]=m.uri})\n return [v['720p'] || v.tablet || v.mobile || v.photo, !i && [x.date, x.title, x.description].filter(Boolean).join(' | ')]\n})",
"img": "^media\\.(dumpert\\.nl/)(?:sq_thumb|still)s/medium(/\\d+)_([\\da-f]+).+",
"note": "https://www.reddit.com/r/imagus/comments/dntaa7/comment/fexkxw6\n\nEXAMPLES\nhttps://www.dumpert.nl/zoek/ANIMALS\nhttps://www.dumpert.nl/zoek/CHILD\nhttps://www.dumpert.nl/toppers\nhttps://www.dumpert.nl/latest"
},
"e621|e926|e6ai-x-p": {
"link": "^e(621|926)\\.net/pools/\\d+",
"res": ":\nlet i = $._.indexOf('<div id=\"posts-container\">');\nif(i<0) { return null; }\nlet t = $._.indexOf('<div class=\"paginator\">', 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": "Baton34V + imqswt (edit)\nhttps://www.reddit.com/r/imagus/comments/17chaqm/comment/k5t8bhf\nOLD\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=680#13\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=640#5\n\n\nEXAMPLES\nhttps://e6ai.net/posts\nhttps://e621.net/pools/gallery\nhttps://e621.net/pools/14205\nhttps://e621.net/posts?tags=keke_%28artist%29\nhttps://e621.net/posts?tags=kyrakupetsky"
},
"eApteka.ru": {
"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\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1340#20\nOLD\nhttp://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=эхинацея"
},
"EBAY": {
"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\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1200#11\nOLD\nhttp://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-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\">&gt;</);\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-b": {
"link": "ehentai\\.to|nhentai\\.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.xyz/galleries/\\d+/\\d+)t(\\.\\w+)",
"to": "$1#.png .jpg .gif#",
"note": "Baton34V\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=740#5\n\n\nПРИМЕРЫ / EXAMPLES\nhttps://nhentai.to/g/403031"
},
"eKnives.ru": {
"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\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3660#18\n\nПРИМЕРЫ\nhttps://www.eknives.ru/brandMrblade/"
},
"Eksisozluk": {
"link": "^(eksisozluk(.+)?\\.com/img|soz\\.lk/i)/[\\da-z]+",
"res": "property=\"og:image\" content=\"([^\"]+)",
"note": "mortyobnoxious\nhttps://www.reddit.com/r/imagus/comments/167b83i/comment/kergxj3\nOLD\nhttps://www.reddit.com/r/imagus/comments/167b83i/comment/k1jt9r8\nhttps://www.reddit.com/r/imagus/comments/167b83i/updated_rule_for_eksisozlukcom_that_will_work\n\n\nEXAMPLES\nhttps://www.reddit.com/r/imagus/comments/167b83i/comment/keqhmxf"
},
"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": {
"link": "^eldorado\\.ru\\/cat\\/detail\\/.+",
"res": ":\nvar i = $._.indexOf('<div class=\"slider-native slider-preview js-slider-with-preview\">');\nif(i<0) { return null; }\nvar t = $._.indexOf('<div class=\"slider-item-image-check-age\">', i);\nif(t<0) { return null; }\nvar res = [];\nvar re = /src=\"(https?:\\/\\/static\\.eldorado\\.ru\\/.+?)\\/resize\\/.*\\/\"/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": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/18n32dx/comment/kegj1ka\nOLD\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3840#3\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=2380#5\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память\nhttps://www.eldorado.ru/c/gazovye-plity/b/GEFEST/f/s_grilem"
},
"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/14.html\nhttp://www.emovieposter.com/agallery/archiveitem/12885732.html"
},
"ENF-CMNF-x": {
"link": "^enf-cmnf\\.com/(?:tube/videos|\\d{4}/\\d{2})/.+",
"res": ":\n$=$._.match(/(?:type=\"video\\/mp4\" src=\"|video_url: ')([^\"']+)/)?.[1]||''\nreturn $?.length?$+'#mp4':''",
"note": "imqswt\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/kwxhmsm\n\nEXAMPLES\nhttps://enf-cmnf.com/tube/search/reporter/\nhttps://enf-cmnf.com/tube/categories/risky-outdoors/\nhttps://www.reddit.com/domain/enf-cmnf.com/new"
},
"EnterDesk": {
"img": "^(up\\.enterdesk\\.com\\/edpic).+((?:\\/\\w\\w){3}\\/\\w{32}\\.jpg)$",
"to": "$1$2",
"note": "Rodny + Baton34V (fix)\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=1560#5\n\nEXAMPLES\nhttps://www.enterdesk.com/tag-%E9%9D%99%E8%B0%A7/\nhttps://www.enterdesk.com/tag-%E7%BE%8E%E8%85%BF/\nhttps://www.enterdesk.com/tag-%E7%99%BE%E5%AE%B6%E5%A7%93/"
},
"Epicentrk.ua-p": {
"link": "epicentrk\\.ua/(?:ua/)?shop/.+\\.html",
"res": ":\nconst rx = /\"SRC\":\\{\"\\d+\":\"(https?.+?jpe?g)/g;\nconst m = [...$._.matchAll(rx)].map(e => [e[1], \"\"]);\nif (!m.length) return;\nreturn m;",
"note": "gpl2731\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1120#10\nOLD\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=2600#10\n\n!!!\nВ РФ нужен прокси.\n\nПРИМЕРЫ\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\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-p": {
"link": "^eporner\\.com/(?:hd-porn|video).*",
"res": ":\nconst max_resolution = 1080;\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: `https://www.eporner.com${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;\n",
"note": "gpl2731\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3720#8\nOLD\nhttps://www.reddit.com/r/imagus/comments/iv556b/nsfw_bunch_of_sieves_for_popular_adult_site_videos/\n\n!!!\nВ РФ нужен прокси. Показ галерей не работает.\n==\nThe gallery display does not work.\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 = `(?:lasyload\" data-src=\"([^\"]+))\" src=\"data:image`;\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": "gpl2731\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1140#5\n\n!!!\nДля показа видео необходимо правило для SMH (см.ЧаВо, п.12).\n==\nTo show the video, you need a rule for SMH (see FAQ, p.12).\n\nEXAMPLES\nhttps://www.erome.com/Bootyallday3\nhttps://www.erome.com/search?q=michelle\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\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3360\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": {
"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\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1120#10\nhttp://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-p": {
"img": "^(i(?:mg\\d*)?\\.etsystatic\\.com/[^_]*/i[^_]+_)\\d+x[\\dN]+",
"to": "$1fullxfull",
"note": "EXAMPLES\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|Noodlemagazine|Ukdevilz-x-p": {
"link": "^(?:[^.]+\\.)?((?:mat6tube|noodlemagazine|ukdevilz)\\.com|exporntoons\\.net)/(v/video|watch)/.+",
"res": ":\nconsole.log('Main page')\nif($[2]==='v/video'){\nreturn {loop:$._.match(/id=\"iplayer\" src=\"([^\"]+)/)?.[1]||''}\n}\nconst x=new XMLHttpRequest, u='https://'+$[1]\n$=$._.match(/id=\"iplayer\" src=\"([^\"]+)/)?.[1].replace('&amp;','&')\nif(!$)return ''\nx.open('Get',u+$,false)\nx.send()\nconsole.log('iPlayer page',x.status,x.getAllResponseHeaders())\n$=x.responseText.match(/window\\.playlistUrl='([^']+)/)?.[1]\nif(!$)return ''\nx.open('Get',u+$,false)\nx.send()\nconsole.log('Playlist page',x.status,x.getAllResponseHeaders())\n$=JSON.parse(x.responseText).sources\nconsole.log('Media sources:', JSON.stringify($))\nif(!$)return ''\nreturn [[['#'+$.shift().file+'#mp4',$?.[Math.floor($.length/2)]?.file+'#mp4']]]",
"note": "imqswt\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/kw0gdbt\nOLD\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/kvvmpfs\nhttps://www.reddit.com/r/imagus/comments/1aoy7k4/comment/kq7ii83\nhttps://www.reddit.com/r/imagus/comments/15gys1d/comment/k1jhpoj\n\n\n!!!\nДля работы с внешними ссылками необходимо правило для SMH (см. ЧаВо, п.12).\n+\nВозможен выбор качества видео (по клавише TAB).\n==\nTo work with external links, you need a rule for SMH (see FAQ, p. 12).\n+\nPossible choice of video quality, using the TAB key.\n\n\nEXAMPLES\nhttps://www.reddit.com/domain/ukdevilz.com/new/\nhttps://www.reddit.com/domain/noodlemagazine.com/new\nhttps://hot.ukdevilz.com/video/haley%20reed\nhttps://main.noodlemagazine.com/v/category/documentary\nhttps://adult.noodlemagazine.com/video/green\nhttps://hot.exporntoons.net/watch/-137573872_456240073\nhttps://hot.mat6tube.com/watch/-137573872_456239799"
},
"F1CD.ru": {
"img": "^(f1cd\\.ru/d/\\d+/\\d+/\\d+/\\d+/)(?:m|logo)_(\\d+\\.(?:jpe?g|png|gif|bmp))$",
"to": "$1$2\n$1m2_$2",
"note": "Rodny\n\nПРИМЕРЫ\nhttp://www.f1cd.ru/show/79979/\nhttp://www.f1cd.ru/input/reviews/a4tech_kd-600l/"
},
"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": ": (this.node.dataset||{}).ploi || (((this.node.parentNode || {}).dataset) || {}).ploi ? '' : 'https://www.facebook.com/' + ($[1] ? $[1] + $[2] : 'photo.php?fbid=' + $[2])",
"res": ":\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\np=p&&p.match(/^\\/([\\w.-]+)\\/?$/)\nreturn 'https://facebook.com/' + (p?p[1].replace(/^\\w+-(\\d{8,})$/, '$1')+'/photos/' : 'photo.php?fbid=') + $[1]",
"note": "!!!\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)."
},
"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)"
},
"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].replace('watch/?v=','')).replace(/.+/,(t)=>t+(/\\?/.test(t)?'&':'?')+'ifbvid_redirect'),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)){\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=\"${$+'&ifbvid_redirect'}\"></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(/.+/,'#$&').replace(/.+/,(t)=>t+(/\\?/.test(t)?'&':'?')+'ifbvid_redirect'),$.browser_native_sd_url?.replace(/.+/,(t)=>t+(/\\?/.test(t)?'&':'?')+'ifbvid_redirect')],t]]:''\n}",
"note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/1cutolb/comment/l4pp538\nOLD\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=400#10\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=2300#18\n\n!!!\nКурсор следует наводить на название. Для Reels курсор наводить на имя пользователя (сверху).\n==\nThe cursor should be placed over the name. 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/\nhttp://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\nhttp://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\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1140#3\nOLD\nhttp://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/"
},
"Farpost.ru": {
"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\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1600#9\nOLD\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=160#17\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": {
"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\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3280#15\n\nПРИМЕРЫ\nhttps://rutracker.org/forum/viewtopic.php?t=6087782\nhttps://rutracker.org/forum/viewtopic.php?t=6087790\nhttps://rutracker.org/forum/viewtopic.php?t=6087791"
},
"FastPic_2": {
"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\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3280#15"
},
"FastPic_fpic.in": {
"link": "^fpic\\.in/\\w+",
"res": "<img src=\"([^\"]+)\" class=\"image img-fluid\"",
"note": "Baton34V\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3240#9\n\n\nПРИМЕРЫ\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3240#5"
},
"FastPic_go.php2": {
"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\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=260#13\nOLD\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3280#15\n\n\nПРИМЕРЫ\nhttps://v38.underver.se/viewtopic.php?t=171462\nhttps://rutracker.org/forum/viewtopic.php?t=6087782"
},
"Favim": {
"link": "^favim2?\\.com/image/\\d+/$",
"res": "<link rel=\"preload\" href=\"([^\"]+)\"",
"note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/130svfu/comment/jv5cpmr\nOLD\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3760#8\n\nПРИМЕРЫ\nhttps://favim.com/blanket/"
},
"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": {
"link": "^fetlife\\.com/users/\\d+/pictures/\\d+",
"res": ":\n$=JSON.parse($._.match(/\"story-data\" type=\"application\\/json\">({.+?})<\\//)[1]).attributes.pictures[0]\nreturn [[[$.src2x?.replace(/.+/,'#$&')||'',$.src1x]]]",
"note": "imqswt\nhttps://www.reddit.com/r/imagus/comments/18sefly/comment/kfjrb8d\nOLD\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\nhttps://fetlife.com/users/10170568/pictures"
},
"FEX.net-p": {
"link": "^(.*fs\\d{2}\\.fex\\.net/preview/\\d{10}/(?:.+))",
"note": "destiny child\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1360#17\n\n\nПРИМЕРЫ\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1369"
},
"FilePicker.io": {
"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://www.reddit.com/domain/filepicker.io/new/\nhttps://cdn.filepicker.io/api/file/YV95RZINRKF3y0EufywX/convert?fit=max&h=874&w=1312&compress=true\nhttps://cdn.filepicker.io/api/file/JLLAQcr7TCmTDbtrhY24?\nhttps://www.filepicker.io/api/file/SWqegzqTn6SwVodEEGC2"
},
"Files.fm": {
"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\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1620#4\nhttp://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|Filestackcontent": {
"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://cdn.filestackcontent.com/9uzTBRcZR5KcZagOJRqg\nhttps://cdn.filestackcontent.com/resize=w:1300,f:max/ZGpFtp5uSGzbmw1yAPjw"
},
"Finn.no": {
"link": "^(?:finn\\.no/(?:[^.]+\\.html\\?finnkode=)?\\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?m.concat(m.splice(0,m.findIndex(i=>RegExp(`${t}`).test(i[0])))):m\n",
"img": "^([^.]*images\\.finncdn\\.no/dynamic/)[^/]+(/[^.]+\\.(?:jpe?g|png))(?!#)",
"loop": 2,
"to": ":\nreturn /(?=.*object-contain)(?=.*object-center)/.test(this.node.attributes.class.value)?'finn/album?gallery'+$[2]:$[1]+'1600w'+$[2]+'#'",
"note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/e2i020/comment/kd63kgm\nOLD\nhttps://www.reddit.com/r/imagus/comments/e2i020/comment/jymco9f\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/fast-youtube-load\nhttps://addons.mozilla.org/ru/firefox/addon/free-vpn-proxy-planetvpn"
},
"FishingSib.ru": {
"link": "(?:www\\.)?fishingsib\\.ru/forum/attachments/\\d+/",
"note": "Baton34V\nhttp://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": {
"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\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1800#7\nOLD\nhttp://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"
},
"F-List": {
"img": "^(static\\.f-list\\.net/images/char)thumb/",
"to": "$1image/",
"note": "!!!\nНужен аккаунт."
},
"FlashTranny-x": {
"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": {
"link": "^flic\\.kr/p/\\w",
"res": "(?:=\"og:image\" content|id=\"target\" src)=\"([^\"]+)\n<title>([^|]+)",
"note": "EXAMPLES\nhttps://www.reddit.com/domain/flic.kr/new/"
},
"Flickr": {
"link": "^(?:secure\\.)?flickr\\.com/photos/[^/]+/(\\d+)/?(?:in/.+|lightbox/?|sizes.+|\\?.+|#/photos/.+)?$",
"url": "https://api.flickr.com/services/rest/?photo_id=$1&method=flickr.photos.getSizes&format=json&nojsoncallback=1&api_key=9bb671af308f509d0c82146cbc936b3c",
"res": ":\nlet res=[];\nlet sizeAr=JSON.parse($._).sizes.size;\nlet last=sizeAr.pop();\nif (last.media=='video') {\n\tlet best_quality=0;\n\tlet best_videoUrl='';\n\tdo {\n\t\tif (parseInt(last.height) > best_quality) {\n\t\t\tbest_quality=parseInt(last.height);\n\t\t\tbest_videoUrl=last.source;\n\t\t}\n\t\tlast=sizeAr.pop();\n\t} while (last.media=='video');\n\tres.push([best_videoUrl+'#mp4']);\n}\nelse {\n\tres.push([last.source]);\n}\nreturn res;\n",
"img": "^(?:(?:farm|c)\\d+\\.|live\\.)?static\\.?flickr\\.com/(?:\\d+/){1,2}(\\d+)_[\\da-f]+(?:_[sqtmn])?\\.jpg$",
"note": "Baton34V (fix)\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=140#9\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"
},
"Flickr_albums": {
"link": "^flickr\\.com/photos/(?:[^/]+/albums/(\\d+)$|(\\d+)/([a-f0-9]+)/(\\d+)(?:/([\\w@]+)/([\\w:]+))?/$)",
"url": ": $[2] ? '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='+$[2]+'&format=json&method=flickr.photosets.getPhotos&api_key='+$[3]+'&per_page='+$[4]+($[5] ? '&viewerNSID='+$[5]+'&csrf='+$[6] : '')+'&nojsoncallback=1' : $[0]",
"res": ":\nif($[2]) {\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 return res;\n}\nlet api=$._.match(/root.YUI_config.flickr.api.site_key = \"([^\"]+)\";/)[1];\nconsole.log(api);\nlet length=$._.match(/<span class=\\\"photo-counts\\\">(\\d+) photos?<\\/span>/)[1];\nconsole.log(length);\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/' + $[1] + '/' + api + '/' + length +'/'+(csrf ? vnsid+'/'+csrf+'/' : \"\")};\n",
"note": "Baton34V\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=340#17\nOLD\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=340#11\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=340#3\n\n\nПРИМЕРЫ / EXAMPLES\nhttps://www.flickr.com/photos/carolsgardenofphotos/albums\nhttps://www.flickr.com/photos/donthomaso84/albums"
},
"Flipkart-p": {
"link": "^flipkart\\.com/.+?pid.+",
"res": ":\nlet i = $._.search('<ul class=\"[^\"]+\" style=\"-webkit-transform');\nif(i<0) {return null; }\nlet t = $._.indexOf('</ul>', i);\nif(t<0) {return null; }\nlet res = [];\nlet re = /src=\"([^?]+)\\?q=\\d+\"/gi\nlet data=$._.substring(i,t);\nlet a = re.exec(data);\nwhile(a) {\n res.push([a[1].replace('128/128','2000/2000')]);\n a = re.exec(data);\n}\nreturn res;\n",
"img": "^(rukminim\\d\\.flixcart\\.com/[^/]+/)\\d+/\\d+([^?]+).*",
"to": "#$12000/2000$2\n$11024/1024$2",
"note": "Baton34V\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1480#4\n\n!!!\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"
},
"FocalPrice": {
"link": "focalprice\\.com/\\S+\\.html",
"res": ":\nvar i = $._.indexOf('<ul id=\"thumbs_list_frame\">');\nif(i<0) { return null; }\nvar t = $._.indexOf('</ul>', 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;",
"img": "^(img\\.focalprice\\.com/+)(?!860x666)\\d+x\\d+/",
"to": "$1860x666/",
"note": "Baton34V\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3360\n\nПРИМЕРЫ\nhttps://www.focalprice.com/toys-hobbies-43\nhttps://www.focalprice.com/xiaomi-120"
},
"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": "Baton34V\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=720#12\n\nПРИМЕРЫ\nhttp://foobar2000.ru/forum/viewtopic.php?p=24980#p24980"
},
"Forest-Home.ru": {
"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\nhttp://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/"
},
"Forfun|Gifer-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\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=680#10\n\nПРИМЕРЫ / EXAMPLES\nhttps://forfun.com/ru/t/креативно\nhttps://forfun.com/ru/t/животные\nhttps://www.reddit.com/domain/gifer.com\nhttps://gifer.com/en/gifs/forest"
},
"FotoKto.ru": {
"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": {
"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\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1460#17\nOLD\nhttp://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": {
"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ПРИМЕРЫ\nhttp://fotozavr.ru/image/25302.html\nhttp://fotozavr.ru/image/25303.html"
},
"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": {
"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": {
"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\nhttp://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://ansel.frgimages.com/new-york-knicks/stephon-marbury-isiah-thomas-signed-espn-the-magazine-new-york-knicks-autograph_ss2_p-10908711+u-udpmxpek4t3ad0au6xx+v-fcdce519ec974cedab0e57bd3e1c6498.jpg?_hv=1&w=900\nhttps://fanatics.frgimages.com/productimages/_3661000/altimages/ff_3661809-e477075f96b81ee74a30alt1_full.jpg\nhttps://fanatics.frgimages.com/FFImage/thumb.aspx?i=/productimages/_3066000/altimages/ff_3066350alt1_full.jpg&w=325"
},
"fs|brb|cxz": {
"img": "^((?:s\\d+|img)\\.dotua\\.org/fsua_items/[^/]+/(?:\\d\\d/){3})(?!1/)\\d(/\\d+)",
"to": "$11$2"
},
"FunnyJunk-p": {
"link": "^funnyjunk\\.com/(?:(?:channel/[^/]+/)?[A-za-z0-9+]+/[A-Za-z-]+/(?:\\d+/?)?|\\w+/\\d+/[\\w+]+)",
"res": ":\nreturn [...$._.matchAll(/(?:img style=\"width: 100%;[^=]+src|\"video\\/mp4\" data-original|data-cachedvideosrc)=\"([^\"]+)/g)].map(i=>[i[1],($._.match(/\"innerContentDescription\"><h2>([^<]+)/)||[,''])[1]])\n",
"note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/130svfu/comment/jv5cpmr\n\nEXAMPLES\nhttps://funnyjunk.com/channel/wholesome\nhttps://funnyjunk.com/Aight+you+aint+so+bad/fvnbRsi/\nhttps://www.reddit.com/domain/funnyjunk.com/new"
},
"Furaffinity-p": {
"link": "^furaffinity\\.net/view/(\\d+)/$",
"url": "//www.furaffinity.net/full/$1/",
"res": "data-fullview-src=\"([^\"]+)\n<title>([^<]+?) --",
"img": "^t\\.facdn\\.net/(\\d+)@.+",
"note": "EXAMPLES\nhttps://www.furaffinity.net/search/?q=green\nhttps://www.furaffinity.net/search/?q=NIN\nhttps://www.furaffinity.net/favorites/wittnv/"
},
"FurryNetwork": {
"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-b": {
"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Видео пока не поддерживается / Video currently is not supported:\nhttps://gab.com/timeline/videos\n\nПРИМЕРЫ / EXAMPLES\nhttps://gab.com/groups/976"
},
"Gamma_Entertainment-x-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\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1120#19\nOLD\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3620#12\n\n!!!\nДля работы фильтра требуется правило для SMH (см.ЧаВО, п.12).\n==\nFor the sieve to work, a rule for SMH is required (see FAQ, p.12).\n\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"
},
"Gallery.ru": {
"link": "^(gallery\\.ru/watch\\?a=\\S+)$",
"res": ":\nvar i = $._.indexOf('<div id=\"mygallery\"');\nif(i<0) { return null; }\nvar t = $._.indexOf('</div>', i);\nif(t<0) { return null; }\nvar res = [];\nvar re = /<img src=\"(https?:\\/\\/data\\d+\\.gallery\\.ru\\/albums\\/gallery\\/\\w+-\\w+-\\w+-)\\d+(?:-\\w+)?\\.jpg\"/gi\nvar dat=$._.substring(i,t);\nvar a = re.exec(dat);\nwhile(a) {\n res.push([a[1] + '.jpg']);\n a = re.exec(dat);\n}\nreturn res;\n",
"img": "^(data\\d+\\.(?:i\\.)?gallery\\.ru/albums/gallery/\\d+-[\\da-f]+-\\d+-)[^.-]+",
"to": "#$1\n$11024",
"note": "Baton34V\n\nПРИМЕРЫ\nhttp://gallery.ru/?panel=list&user_type=3\nhttp://gallery.ru/watch?a=tvS-bkiV"
},
"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Поддержки видео нет / There is no video support:\nhttps://gamefaqs.gamespot.com/ps5/292803-stray/videos\n\nEXAMPLES\nhttps://gamefaqs.gamespot.com/ps4/366186-mothmen-1966/images\nhttps://gamefaqs.gamespot.com/ps5/292803-stray/images"
},
"Gamekult": {
"img": "^(cdn\\.gamekult\\.com/optim/images/.+?)__[^.]+",
"to": "$1",
"note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/130svfu/comment/jtd4cv9\nOLD\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3720#11\n\nПРИМЕРЫ / EXAMPLES\nhttp://www.gamekult.com/actu/zoom-portal-2-A0000089965.html\nhttp://www.gamekult.com/actu/neverdead-en-douze-images-A0000098884.html"
},
"Gameru": {
"link": "^gameru.net/post/\\d+",
"res": ":\nreturn [...$._.matchAll(/<img src=\"([^\"]+)\" class=\"linked-image\"/g)].map(i=>[i[1].replace('thumb','image/direct')])",
"img": "^images\\.gameru\\.net/(?:image|thumb)/(\\w+\\.\\w+).*",
"to": "images.gameru.net/image/direct/$1",
"note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/130svfu/comment/jxydqur\nOLD\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3200#13\n\nПРИМЕРЫ\n(постер проги)\nhttps://www.gameru.net/post/55915\nhttps://www.gameru.net/feed/type=news&tag=screenshot\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=49250&start=20#1\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1360#11"
},
"GameSpot_video": {
"link": "^gamespot\\.com/videos/",
"res": "\"contentUrl\": \"([^\"]+?)\"",
"note": "borderpeeved\nhttps://www.reddit.com/r/imagus/comments/xdzxo9/comment/ioko84w\n\nEXAMPLES\nhttps://www.gamespot.com/videos/"
},
"Gazeta.pl": {
"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"
},
"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\nEXAMPLE\nhttps://www.geograph.org.uk/finder/recent.php\nhttps://www.geograph.org.uk/browser/#!/taken=,1999-12-31/decade+%22190tt%22/sort=submitted_down\nhttps://www.geograph.org.uk/browser/#!/taken=,1999-12-31/decade+%22195tt%22/country+%22Scotland%22/sort=submitted_down/sample=takenmonth/page=2"
},
"GetaPic.me": {
"link": "getapic\\.me/\\w+/\\w+",
"res": "<li><span>Ссылка на картику:</span><br>\\s+<input onclick=\"select_field\\(this\\);\" value=\"([^\"]+)\"",
"note": "Baton34V\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=2980#21\n\nПРИМЕРЫ / EXAMPLES\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=40#15\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3100#9"
},
"GetCloudApp|cl.ly-b": {
"link": "^cl\\.ly/image/([^/]+).*",
"res": "=\"og:image\" content=\"([^\"]+)\n<title>([^<]+)",
"img": "^thumbs\\.(?:cl\\.ly|getcloudapp\\.com)/(?:image/)?(\\w+)",
"to": "http://cl.ly/image/$1/$1.jpg",
"note": "EXAMPLES\nhttps://www.reddit.com/domain/cl.ly/new\nhttps://www.reddit.com/domain/getcloudapp.com/new"
},
"GettyImages": {
"link": "^(gettyimages\\.com)(?:\\.au)?/detail/[^/]+/[^/]+/(\\d+).*",
"res": ":\n$=JSON.parse($._.match(/data-component='AssetDetail'>[^{]+([^\\n]+)/)[1]).asset\nreturn $.filmCompUrl||[[['#'+$.highResCompUrl,$.defaultMainImageURL]]]",
"img": "^(?:media\\.(gettyimages\\.com)/[^/]+|cache\\d+\\.asset-cache\\.net/xr)/(?:[^?]+?-id)?([\\d+-]+).*",
"to": "//media.$1/photos/-id$2#?s=2048x2048&w=5 #",
"note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/196ypny/comment/khyg817\nOLD\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/photos/family?assettype=image&license=rf&alloweduse=availableforalluses&family=creative&phrase=family&sort=best\nhttps://www.gettyimages.com/videos/adventure?assettype=film&family=creative&phrase=adventure&sort=best&license=rf,rr"
},
"gif-animated.ru|gif-pictures.ru": {
"link": "(gif-(?:pictures|animated)\\.ru/)\\?v=(.*)",
"img": "(gif-(?:pictures|animated)\\.ru/)\\?v=(.*)",
"to": "$1images/$2",
"note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/130svfu/comment/jnrcrmb\n\nПРИМЕРЫ\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1360#11"
},
"Gifbin": {
"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\nhttp://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/"
},
"Gifly-b": {
"link": "^(gifly\\.com/)(\\w)(\\w)(\\w)(\\w)/*[^/]*$",
"img": "^(?:i\\.)?(gifly\\.com/+)media_gifly/(\\w)/(\\w)/(\\w)/(\\w)/b/.*",
"to": "$1media_gifly/$2/$3/$4/$5/b/$2$3$4$5.#mp4 gif#",
"note": "!!!\nПроблема с проверкой безопасности (из-за нее - красный индикатор).\n==\nThere is a problem with the security check (because of it - the red spinner).\n\n\nПРИМЕРЫ / EXAMPLES\nhttps://www.reddit.com/domain/gifly.com/new/\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1360#10"
},
"Gifs-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": {
"link": "gifyu\\.com/image/\\w{4}",
"res": "<meta property=\"og:image\" content=\"([^\"]+)\"",
"note": "Baton34V\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=2600#6\n\nПРИМЕРЫ / EXAMPLES\nhttps://www.reddit.com/domain/gifyu.com/new/\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50519&start=900#21"
},
"Giphy": {
"useimg": 1,
"link": "^(g(?:iphy\\.com/(?:gifs|embed)|ph\\.is(?:/g)?)/)([\\w-]+).*",
"url": "$1$2",
"res": ":\n$=/gif:\\s*(\\{[^\\n]+\\})/.exec($._)\n$=$&&JSON.parse($[1])\nreturn $ && [[[$.images.original.mp4, $.images.original.url], $.alt_tag]]",
"img": "^media\\d?\\.((giphy)\\.com/)media/(\\w+)/.*",
"to": "media.$1media/$3/$2.#mp4 gif#",
"note": "ПРИМЕРЫ / EXAMPLES\nhttps://www.reddit.com/domain/giphy.com/new"
},
"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 следует наводить на самую нижнюю часть изображения.\n==\nThe cursor on the GIF should be placed on the lowest part of the image.\n\n\nEXAMPLES\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\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1163&limit=1&m=1#1\nOLD\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3616#1\n\nEXAMPLES\nhttps://gloryholeswallow.com/tour/\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-p": {
"img": "^javascript:void\\(0\\)$",
"loop": 2,
"to": ":\nif(!/^(?:gofile\\.io|(?:[a-z]{2}\\.)?files\\.fm)$/.test(location.hostname))return ''\n// Files.fm also uses this URL. This code loops to the Files.fm sieve if on that site\nif(/^(?:[a-z]{2}\\.)?files\\.fm$/.test(location.hostname)){\nreturn this.node.parentNode.parentNode.querySelector('div[data-clipboard-text]')?.dataset?.clipboardText||''\n}\n$=this.node.parentNode?.parentNode?.nextSibling?.nextSibling?.nextSibling\n$=$?.children[1].textContent==='Play'?$?.lastChild?.querySelector('a[href]')?.href:''\nreturn $+(/m[ok]v$/.test($)?'#mp4':'')",
"note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/ktwgt80\nOLD\nhttps://www.reddit.com/r/imagus/comments/19ahx46/comment/kiqda5c\n\n!!!\nНа данный момент внешние ссылки на видео не поддерживаются.\n==\nExternal links to videos are not supported at this time.\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/ktwseps\n\n\nEXAMPLES\nhttps://www.reddit.com/domain/gofile.io/new\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1360#10"
},
"GOG": {
"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\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=580#21\nOLD\nhttp://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"
},
"Goodreads": {
"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": {
"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\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=2421&limit=1&m=1#1\nOLD\nhttp://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/\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=2400#21\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3240#16"
},
"GOOGLE_Drive_video": {
"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\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=2400#21\nOLD\nhttp://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/\nhttp://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\nhttp://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://new.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.log('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\\.com/)(?:([_-](?:[\\w\\-]{11}/){3}[\\w\\-]{11,}/)([^/]+)(/[^?#=]+)?|([^=]+)).*",
"loop": 2,
"to": ":\nconst n=this.node;\nif(location.pathname?.startsWith('/maps/')&&(/\\d:\\d{2}$/.test(n.offsetParent?.offsetParent?.querySelector('div[class^=\"fontLabelMedium \"]')?.innerText||''))){\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]) : '#' + $[1] + ($[5] ? $[5] + '=' : $[2]) + (c?'s1600'+c:'s0') + ($[4]||($[5]?'':'/')) + '\\n' + $[1] + ($[5] ? $[5] + '=' : $[2]) + 's1024' + c + ($[4]||($[5]?'':'/'))",
"note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/1bmxcr5/comment/l1ll4jo\nOLD\nhttps://www.reddit.com/r/imagus/comments/1bmxcr5/comment/kzc5812\nhttps://www.reddit.com/r/imagus/comments/1bmxcr5/comment/kwgk2se\n\n\n!!!\nДля просмотра альбомов курсор нужно наводить на дату.\n==\nYou have to hover over the date to view albums.\n\n\nEXAMPLES\n(ALBUMS)\nhttps://www.youtube.com/post/UgkxwyUqrYgCJmFtsnZc-bua9w6Fgl1bikP-\nhttps://www.youtube.com/channel/UChqUTb7kYRX8-EiaN3XFrSQ/community?lb=Ugkx6t8bAsb2HO2a6XBhnjkYrj4DY4ajUfnw\n(GIF)\nhttps://www.reddit.com/r/imagus/comments/14fyk2l/comment/k0yktt9\n(VIDEO)\nhttps://www.google.com/maps/place/La+Buchetta+Food+%26+Wine+Restaurant/@43.7673626,11.2591505,3a,75y,90t/data=!3m8!1e5!3m6!1sAF1QipMUbjl-1eXZAUNBH0H1r3ZUXV8Yt33hWlmuZkVj!2e10!3e10!6shttps:%2F%2Flh5.googleusercontent.com%2Fp%2FAF1QipMUbjl-1eXZAUNBH0H1r3ZUXV8Yt33hWlmuZkVj%3Dw203-h270-k-no!7i1440!8i1920!4m13!1m2!2m1!1sRestaurants!3m9!1s0x132a54075f14f9d1:0x65488f81958ea60a!8m2!3d43.7673626!4d11.2591505!10e5!14m1!1BCgIgARICCAQ!15sCgtSZXN0YXVyYW50c1oNIgtyZXN0YXVyYW50c5IBCnJlc3RhdXJhbnTgAQA!16s%2Fg%2F1tcwz46f?entry=ttu\nhttps://www.google.com/maps/contrib/106755468845773661160/photos/@43.7673626,11.2591505,3a,75y,90t/data=!3m7!1e5!3m5!1sAF1QipO-O8D6XME00s_rxeMxBqkevFlMm5OzORyuxqQA!2e10!6shttps:%2F%2Flh5.googleusercontent.com%2Fp%2FAF1QipO-O8D6XME00s_rxeMxBqkevFlMm5OzORyuxqQA%3Dw462-h260-k-no!7i1920!8i1080!4m3!8m2!3m1!1e1?entry=ttu\n+\n(blogspot.com)\nhttps://vickiboucher.blogspot.com/2023/10/colour-inkspiration-challenge-c154.html"
},
"GooglePlay-p": {
"link": "^playstorealbum/[^!]+!(.+)",
"url": "data:,$&",
"res": ":\nreturn $[1].split('!').map(i=>[['#'+i+'s0',i+'s1024']])",
"img": "^(play-lh\\.googleusercontent\\.com/[^=]+=).*",
"loop": 2,
"to": ":\nconst show_thumbnail_gallery = true\nconst truncate_album = true\n\nconst n=this.node;\nif(show_thumbnail_gallery&&n.className===\"T75of B5GQxf\"){\nconst num=n.attributes?.['data-screenshot-index']?.value;\nreturn '//playstorealbum/'+$[1]+'!'+[...n.offsetParent?.querySelectorAll('img')].filter((i,n)=>n>=(truncate_album&&Number(num)||0)).map(i=>i.src.match(/^[^=]+=/)[0]).join('!')\n}\nreturn $[1]+'s0\\n'+$[1]+'s1024'",
"note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/1bpg3s8/comment/kwxjhnb\n\n!!!\nIt may need to be before GoogleContent|YouTube_Gallery for it to work.\n\nПРИМЕРЫ / EXAMPLES\nhttps://play.google.com/store/apps/details?id=org.mozilla.firefox&pli=1"
},
"Grailed": {
"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/streetwear\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\nhttp://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": {
"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/"
},
"Happy-Team_himagem": {
"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://happy-team.org/himagem/?pm=9TK3\nhttps://happy-team.org/himagem/?pm=EA47\nhttps://happy-team.org/himagem/?pm=A0RZ"
},
"Hardwareluxx.ru": {
"link": "^hardwareluxx\\.[a-z]+/index\\.php/artikel/.+",
"res": ":\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/.+_)100px",
"to": "$11920px",
"note": "Imagus_fan\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"
},
"Head-Fi": {
"link": "^head-fi\\.org/media/albums/[^.]+\\.\\d+",
"res": ":\nreturn [...$._.matchAll(/-image' src='([^']+)/g)].map(i=>[i[1].replace(\"_thumb\",\"\")])",
"img": "^head-fi\\.org/media/[^.]+\\.\\d+",
"to": ":\nconsole.log($,this.node)\nreturn this.node.src.replace(\"_thumb\",\"\")",
"note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/130svfu/comment/joowxsu\nOLD\nhttps://www.reddit.com/r/imagus/comments/44oxs0/sieve_for_headfiorg\n\nEXAMPLES\nhttps://www.head-fi.org/media/\nhttps://www.head-fi.org/media/albums/page-4"
},
"Hearst(Cosmo|Delish|DigitalSpy|Elle|Esquire|Harper": {
"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\nhttp://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-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\nhttp://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": {
"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\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1431#1\n\n!!!\nНекоторые видео не грузятся, т.к. нужен премиум аккаунт.\n==\nSome videos are not loaded, because you need a premium account.\n\nПРИМЕРЫ / EXAMPLES\nhttps://hentai0.com/popular\nhttps://hentai0.com/tag/elf-16\nhttps://hentai0.com/search?keyword=MAID"
},
"Hentai-Foundry-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/user/Aphrodos/profile\nhttps://www.hentai-foundry.com/pictures/user/PurpleMantis\nhttps://www.hentai-foundry.com/search/index?query=MIMI&page=2"
},
"Hentai-Moon-x-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\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1429#1\nOLD\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=620#8\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\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=620#10\n\nПРИМЕРЫ / EXAMPLES\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/"
},
"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]])\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] + \" png#\"",
"note": "imqswt\nhttps://www.reddit.com/r/imagus/comments/17j6lqh/comment/k72qvqo\n\nПРИМЕРЫ / EXAMPLES\nhttps://www.reddit.com/r/imagus/comments/17j6lqh/comment/k6z1arg"
},
"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\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1470&limit=1&m=1#1\n\nПРИМЕРЫ / EXAMPLES\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\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1470&limit=1&m=1#1\n\n!!!\nВ РФ нужен прокси.\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 getSc(url) {\n const x = new XMLHttpRequest();\n x.open('GET', url, false);\n x.send();\n return x.responseText;\n}\n\nfunction unobfusc_0(hash) {\n var retval = 'b';\n\n var b = 16;\n \n var r = /[0-9a-f]{61}([0-9a-f]{2})([0-9a-f])/;\n var m = r.exec(hash);\n if (!m) {\n return 'a';\n }\n \n var g = parseInt(m[2]+m[1], b);\n if (!isNaN(g)) {\n retval = String.fromCharCode(97 + gg.m(g)) + retval;\n }\n\n if(retval == \"bb\")\n return \"ba\";\n if(retval == \"ab\")\n return \"aa\";\n \n return retval;\n}\n\nfunction unobfusc_2(h) { \n var m = /(..)(.)$/.exec(h); \n return parseInt(m[2]+m[1], 16).toString(10); \n}\n\n//Get deobfuscation object called 'gg'\nlet ggjs = getSc('https://ltn.hitomi.la/gg.js');\neval(ggjs.match(/(gg = .*)/s)[1]);\n\nvar galleryId=$[1];\n\neval(getSc('https://ltn.hitomi.la/galleries/'+galleryId+'.js'));\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 file = galleryinfo.files[i];\n\n //Two URL styles, AVIF and WEBP\n let filetype;\n\n if(file.hasavif == 1) {\n filetype = \"avif\";\n }\n else { //(file.haswebp == 1)\n filetype = \"webp\";\n }\n\n //Multiple obfuscations in the url itself, have to decode them.\n let unobfusc0 = unobfusc_0(file.hash);\n let unobfusc1 = gg.b;\n let unobfusc2 = unobfusc_2(file.hash);\n\n let link = \"https://\" + unobfusc0 + \".hitomi.la/\" + filetype + \"/\" + unobfusc1 + unobfusc2 + \"/\" + file.hash + \".\" + filetype;\n\n res.push([link]);\n}\nreturn res;",
"note": "iceiller9999\nhttps://www.reddit.com/r/imagus/comments/102rqm3/comment/j3koy3a\nOLD\nhttp://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": {
"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\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1360#11"
},
"HLSPlayer.net_mp4": {
"link": ".*hlsplayer.net/mp4-player.*",
"res": ":\nconst url = new URL($[0]);\nlet hash = url.hash;\nif (!hash) { return; }\nhash = hash.substring(1);\nlet src = new URLSearchParams(hash).get('src');\nsrc = decodeURI(src);\nreturn src;",
"note": "ammar786\nhttps://www.reddit.com/r/imagus/comments/zjqhud/comment/izx73rt\n\nEXAMPLES\n??"
},
"Holodilnik.ru": {
"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\nhttp://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_refrigerators_and_freezing_chambers"
},
"HomeMoviesTube-x-p": {
"link": "(.*\\.)?homemoviestube\\.com\\/videos\\/(.*?)(\\/|$|\\?).*",
"url": "https://www.homemoviestube.com/embed/$2",
"res": ":\nconst url = $._.match(/src=\\\".*?videos\\.cdn\\.homemoviestube\\.com.*?\\\"/)[0].replace(/src=\\\"(.*?videos\\.cdn\\.homemoviestube\\.com.*?)\\\"/, '$1');\n\nreturn url;",
"note": "papadocTOMP\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": {
"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": "ПРИМЕРЫ\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1360#11"
},
"HostPic": {
"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\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1360#11"
},
"Hotline.ua-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\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=500#7\n\n\nПРИМЕРЫ\nhttps://hotline.ua/dom/ofisnye-kresla/\nhttps://hotline.ua/ua/sr/?q=диваны"
},
"Huaban": {
"link": "^huaban\\.com/boards/(\\d+)",
"url": "https://api.huaban.com/boards/$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\\.huaban\\.com/[^_]+)_.*",
"to": "$1",
"note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/130svfu/comment/jye4kqo\nOLD\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=640#5\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": {
"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\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3360\n\n\nEXAMPLES\nhttps://hubblesite.org/images"
},
"HuffingtonPost": {
"img": "^(img\\.huffingtonpost\\.com/+asset/)(?:[^/]+/)?([^?]+).*",
"to": "$1$2",
"note": "EXAMPLES\nhttps://www.huffpost.com/impact/business\nhttps://www.huffpost.com/news/politics"
},
"hurimg-CDN": {
"link": "^(i\\.hurimg\\.com/i/hurriyet/)\\d{2}/\\d+x\\d+/(.*)",
"img": "^(i\\.hurimg\\.com/i/hurriyet/)\\d{2}/\\d+x\\d+/(.*)",
"to": "$1$2",
"note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/130svfu/comment/jn8v5j7\n\nEXAMPLES\nhttp://i.hurimg.com/i/hurriyet/75/770x0/5652ecce67b0a9453cd934db\nhttp://i.hurimg.com/i/hurriyet/90/770x0/581f8cc4c03c0e2648bb9c4d\nhttp://i.hurimg.com/i/hurriyet/75/770x0/5a8ecb0dc03c0e1154900c0e"
},
"Icedrive.net|Icedrive.io": {
"link": "icedrive\\.net/(?:s/\\w+|API/Internal/V1/\\?.*)",
"res": ":\nif(!/^\\{/.test($._)){\nreturn {loop:(/data-id=\"/.test($._)?'https://icedrive.net/API/Internal/V1/?request=collection&type=public&folderId='+$._.match(/data-id=\"([^\"]+)/)[1]+'&sess=1':'https://icedrive.net/API/Internal/V1/?request=file-preview&id='+$._.match(/previewItem\\('([^']+)/)[1]+'&sess=1')}\n} else {\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')])]:''\n}",
"note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/130svfu/comment/jn8v5j7\n\nEXAMPLES\nhttps://icedrive.net/s/abKRG5sS2w\nhttps://icedrive.net/s/k13fVNwiWPuyaa2hNDx9Z8NyPgWj\nhttps://icedrive.net/s/PCY53zB4X3DkQZxYT4QCByt1ByFY"
},
"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\nhttp://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/"
},
"ImageBam": {
"link": "^(imagebam\\.com/)(image|view)/(\\w+).*",
"url": "data:,$&",
"res": ":\nconst x=new XMLHttpRequest()\ntry{\n//URL is edited to match SMH rules. '%76%69%65%77' = view, '%69%6d%61%67%65' = image\nx.open('Get','https://www.'+$[1]+($[3]&&$[2][0]==='v'?'%76%69%65%77/':'%69%6d%61%67%65/')+($[3]||$[2]),false)\nx.send()\n}catch(e){\nalert(\"Rules for the 'Simple-Modify-Headers' extension are needed for the Imagebam sieve to work on external links. These are included in the rule-set zip file.\")\n}\nreturn x.responseText.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/l1bsss3\nOLD\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3120#17\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3020#13\n\nEXAMPLES\nhttps://www.reddit.com/domain/imagebam.com/new/\nhttps://pornolab.net/forum/viewtopic.php?t=1858230\nhttps://vipergirls.to/threads/5101059-Sabrina-Bloom-Magical-x50-5760px-(3-Mar-2020)\nhttp://forum.ru-board.com/topic.cgi?forum=1&topic=8691&start=200#11"
},
"ImageBan.ru|ibn.im": {
"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\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1640#17\nOLD\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=1720#21\n\n!!!\nДля ibn.im рекомендуется разрешить просмотр через HTTP в браузере (Настройки безопасности).\n\n\nПРИМЕРЫ\nhttps://rutracker.org/forum/viewtopic.php?t=3762986\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1640#13"
},
"ImageEvent": {
"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-x-p": {
"link": "^imagefap\\.com/(?:photo/|/image\\.php\\?id=)(\\d+).*",
"url": "https://www.imagefap.com/photo/$1/",
"res": "original=\"([^?]+$1[^\"]+)",
"img": "^(?:cdn|cdnh\\d*\\.imagefap\\.com|(?:x\\d*\\.)?fap\\.to)/images/[^?]+/(\\d+).*",
"note": "!!!\nДля показа видео необходимо правило для SMH (см.ЧаВо, п.12).\n==\nTo show the video, you need a rule for SMH (see FAQ, p.12).\n\nПРИМЕРЫ / EXAMPLES\nhttps://www.reddit.com/domain/imagefap.com/new\nhttps://www.imagefap.com/pictures/11026026/captions"
},
"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\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3920#13\n\n!!!\nДля работы фильтра требуется правило для SMH (см.ЧаВО, п.12).\nКурсор наводить на название ролика.\n+\nFor the sieve to work, a rule for SMH is required (see FAQ, p.12).\nThe cursor should be pointed at the title of the video.\n\n\nПРИМЕРЫ / EXAMPLES\nhttps://www.imagefap.com/browse-video.php?page=6"
},
"ImageNetz.de": {
"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://www.imagenetz.de/v43un"
},
"ImageShack_1": {
"link": "^(imageshack\\.com/\\w/\\w+)",
"note": "Baton34V\nhttp://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\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3720#21"
},
"ImageShack_2": {
"img": "^imagizer\\.imageshack\\.com/(?:img(\\d+)/\\d+|v2/\\w+/(?:\\w/)?(\\d+))(/\\w+\\.jpg)",
"to": "imagizer.imageshack.us/v2/download/$1$2$3",
"note": "Baton34V\nhttp://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/\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3720#21"
},
"ImageSharing": {
"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\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1360#11"
},
"ImageTitan": {
"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\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1360#17\n\nПРИМЕРЫ / EXAMPLES\nhttps://www.reddit.com/domain/imagetitan.com/new\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1369#2"
},
"ImageTwist|ImageNpic|ImageShimage|ImgTraffic|Pixroute-x": {
"link": "^((?:imagetwist|imageshimage|imagenpic|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|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\nhttp://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://www.reddit.com/domain/pixroute.com/new\nhttps://xxxclub.to/torrents/details/159895\nhttps://xxxclub.to/torrents/details/197070\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=311#1"
},
"imageup.ru": {
"link": "^(imageup\\.ru/img(?:.+))\\.html$",
"to": "$1",
"note": "Rodny\n\nПРИМЕРЫ\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1360#11"
},
"imageup.ru_2": {
"link": "^imageup\\.ru/\\d+",
"res": "<tr><td align=center><img src=\"([^\"]+)\"",
"note": "Baton34V\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3720#20\n\nПРИМЕРЫ\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1360#11"
},
"ImageUpper": {
"link": "^imageupper\\.com/[gi]+/\\?(galID=)?\\w+",
"res": ":\nlet i = $._.indexOf('<TD CLASS=\"base\">');\nif(i<0) { return null; }\nlet t = $._.indexOf('</TABLE>', i);\nif(t<0) { return null; }\nlet res = [];\nlet re = /<IMG[^/]+SRC=\"([^\"]+)\"/gi\nlet data=$._.substring(i,t);\nlet a = re.exec(data);\nwhile(a) {\n res.push([a[1].replace('_t','')]);\n a = re.exec(data);\n}\nreturn res;\n",
"img": "^(s\\d\\d\\.imageupper\\.com/\\d)_t(/\\d/\\w+\\.jpg)",
"to": "$1$2",
"note": "Baton34V\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1380#14\n\nEXAMPLES\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1360#11"
},
"ImageVenue": {
"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\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=2560#17\nOLD\nhttp://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\nhttp://pornolab.net/forum/viewtopic.php?t=129738\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=2100#19\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=1900#13"
},
"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}&ndash;${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>&#x2B50;</b> ${Number(rs.aggregateRating).toFixed(1)} (${rs.voteCount?.toLocaleString()})`, top ].filter(Boolean).join(' &middot; ') : ''\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.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.nominations\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}&nbsp;win${wins.total > 1 ? 's' : ''}${noms.total ? ' & ' : ''}`\n if (noms.total > 0) all += `${noms.total}&nbsp;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.countriesOfOrigin?.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(' &middot; '),\n [ genres, certificate ].filter(Boolean).join(' &middot; '),\n get_rating(1000),\n [ '\\n<b>Plot</b>', plot ],\n [ '', get_principal_credits() ],\n [ '\\n<b>Top cast</b>', get_top_cast(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": "64h\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=2220#11\nOLD\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=2126#1\n\n\n!!!\nВ т.ч. поддержка внешних ссылок с информационной панелью (сайдбар).\n==\nIncl. support for external links with information panel (sidebar).\n\nПРИМЕРЫ / EXAMPLES\nhttps://www.imdb.com/name/nm0027572/\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3880#16"
},
"IMDb_mediaindex": {
"link": "^(?:m\\.)?imdb\\.com/(name|title)/(\\w+)/mediaindex.*?(page=\\d+|refine=\\w+|$).*",
"url": "https://m.imdb.com/_ajax/$1/$2/mediaindex?$3",
"res": ":\nreturn JSON.parse($._).data.map(i => [i.src.replace(/\\._.*/, ''), i.alt])",
"note": "64h\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1480#16\nOLD\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=80#10\n\nПРИМЕРЫ / EXAMPLES\n\"99+ photos\" + \"Photos 119\"\nhttps://www.imdb.com/name/nm0027572/"
},
"img.onl|istreetview": {
"link": "img\\.onl/\\w+",
"res": "<img id=\"img\" src=\"([^\"]+)",
"note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/130svfu/comment/jn8v5j7\n\nEXAMPLES\nhttps://img.onl/NK6mbh\nhttps://img.onl/Q3MAFZ\nhttps://img.onl/uY1dKb"
},
"Imgaa": {
"link": "^imgaa\\.com/image/\\w{22}",
"res": "<img class=\"image\" src=\"([^\"]+)\"",
"note": "Baton34V\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1440#20\n\n!!!\nФильтр может не срабоать из-за защиты сайта по IP(?)\n==\nThe rule may not work due to the protection of the site by IP(?)\n\nEXAMPLES\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1440#16"
},
"imgBB|ibb.co-p": {
"link": "^(i(?:bb\\.co|mgbb\\.com)/\\w{6,7}).*",
"url": "$1",
"res": "=\"og:image\" content=\"([^\"]+)\n=\"og:title\" content=\"([^\"]+)",
"img": "^i(?:mage)?\\.(i(?:bb\\.co|mgbb\\.com)/\\w+).*",
"note": "ПРИМЕРЫ / EXAMPLES\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50152&start=2660#14\nhttp://www.centbrowser.net/en/showthread.php?tid=4927&pid=21932#pid21932\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50839&start=2420#2\nhttps://github.com/DeaDBeeF-Player/deadbeef/issues/2932"
},
"imgbox": {
"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\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1360#11"
},
"ImgChest": {
"link": "^imgchest\\.com/p/[a-z0-9]+",
"res": ":\nreturn [...$._.matchAll(/<meta (?:name=\"twitter:image|property=\"og:video)\" content=\"([^\"]+)/g)].map(i=>[i[1]])",
"note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/1axu5jc/comment/krwpxgs\nOLD\nhttps://www.reddit.com/r/imagus/comments/130svfu/comment/ju44i2m\n\nEXAMPLES\nhttps://imgchest.com/u/moods\nhttps://www.reddit.com/domain/imgchest.com/new/?count=25&after=t3_1ayazw9\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1360#11"
},
"Imgflip": {
"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": {
"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\nEXAMPLES\nhttp://www.imghost.pl/?id=e3f603ee58\nhttp://imghost.pl/index.php?id=fd81809566\nhttp://imghost.pl/index.php?id=0e8124552b"
},
"Imginn|Imgsed": {
"link": "^imginn\\.com|imgsed\\.com/p/[\\w-]+/",
"res": ":\nlet parser = new DOMParser();\nlet doc = parser.parseFromString($._, \"text/html\");\n\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;",
"note": "Wallery\nhttps://www.reddit.com/r/imagus/comments/1abomvc/new_imginn_sieve_old_one_doesnt_work/\nOLD\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=140#11\n\n\n!!!\nДля работы фильтра на внешних ссылках необходимо правило для SMH (см.ЧаВо, п.12).\n+\nДля получения фото в разрешении 1440x - нужно навести курсор на \"Download\".\n==\nFor the sieve to work on external links, you need a rule for SMH (see FAQ, p.12).\n+\nTo get a photo in 1440x resolution, you need to hover over “Download”.\n\n\nПРИМЕРЫ / EXAMPLES\nhttps://imginn.com/aleranaofficial\nhttps://imgsed.com/therealap01\nhttps://imginn.com/dianapenty"
},
"Imgisto.site": {
"link": "imgisto\\.site/[a-z0-9]{4,5}$",
"res": "\"og:image\" content=\"([^\"]+)",
"img": "(imgisto\\.site/_i/[^?]+)\\?dl",
"to": "$1",
"note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/130svfu/comment/jn8v5j7\n\nEXAMPLES\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1360#11"
},
"Imglink.ru": {
"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)\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=2720#15\n\n! RES parameter is using by default, rule works on links without thumbnails. \"img\" and \"to\" are not required.\nCheck \"use img\" to work with thumbnail only.\n\nПРИМЕРЫ\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50689&start=40#1\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50689&start=40#2"
},
"imgsh": {
"img": "(imgsh\\.net/)\\w+(/\\w+\\.\\w+)",
"to": "$1i$2",
"note": "Baton34V\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=580#21\n\nПРИМЕРЫ / EXAMPLES\nhttps://forum.mozilla-russia.org/viewtopic.php?pid=799710#p799710"
},
"ImgSpice-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\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3740#4\n\n\nEXAMPLES\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1369&limit=1&m=1#1"
},
"iMGSRC.ru": {
"link": "^imgsrc\\.ru/([^/]+)/(\\d+)\\.html.*",
"url": "//imgsrc.ru/$1$3/$2$4.html",
"res": ":\nconst rx = /source srcset='([^']+)' type='image\\/jpeg/g;\nconst m = [...$._.matchAll(rx)].map(el => el[1]);\nif (!m) return;\nreturn m[m.length - 1];",
"img": "^\\w+\\.\\w+\\.icdn\\.ru/\\w/(\\w+)/\\w+/(\\d+).*",
"note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/130svfu/comment/kd6jo2n\nOLD\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1120#13\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=120#3\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"
},
"IMGUR": {
"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\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3720#10\nOLD\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3200#6\n\n!!!\nКурсор нужно наводить на название (особенно это касается альбомов с несколькими изображениями/видео).\n==\nYou need to hover the cursor over the title (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\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3720#3"
},
"IMGUR-set": {
"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</title>';\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\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3720#3"
},
"IMGUR.io_redirect": {
"link": "^imgur\\.io/(\\w+(?:(?:\\?\\w+)|(?:/\\w+(?:\\.\\w+)?))?)",
"loop": 1,
"to": "https://imgur.com/$1",
"note": "Baton34V\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1720#19\n\nПРИМЕРЫ / EXAMPLES\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1700#10"
},
"imgway.cz": {
"link": "^(?:.*)(imgway\\.cz/s/\\w{0,5})",
"url": "https://$1",
"res": "img src=\\\"(.+/v/.+\\.(?:jpe?g|a?png|gif|svgz?|webp|w?bmp|xbm|pict|j(?:if|fif?)))\\\" style",
"note": "destiny child\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1380#10\n\nEXAMPLES\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1369#2"
},
"IMHentai.xxx-x-p": {
"link": "^imhentai\\.xxx/gallery/\\d+/$",
"res": ":\nconst f=this.find, u=$._.match(/data-src=\"(https:\\/\\/(?:[^\\/]+\\/)+)1(t\\.[^\"]+)/), n=parseInt($._.match(/<li class=\"pages\">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 .png .gif#",
"note": "imqswt\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/kjxz6dc\nOLD\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=400#13\n\n\nПРИМЕРЫ / EXAMPLES\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/kjt39la"
},
"IMX.to-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"
},
"Inkbunny-x-p": {
"link": "inkbunny\\.net\\/s\\/\\d+",
"res": ":\n\nlet highdefinition = true;\n\nlet debug = false;\n\nlet singleitemmatch=$._.match(/submission-standarddefURL.*?(https:\\/\\/\\w\\w\\.ib\\.metapix\\.net\\/files\\/screen\\/\\d+\\/\\d+[^'\\\"]*?)['\\\"]/);\nlet galleryitemsiterator=$._.matchAll(/<a.*?href=['\\\"][^'\\\"]*?pictop['\\\"].*?src=['\\\"]([^'\\\"]*)['\\\"]/g);\nlet titlematch = $._.match(/<meta name=\"og:title\" content=\"(.+)? &lt;/);\n\nlet galleryitemsmatch = Array.from(galleryitemsiterator);\n\nif(debug) console.log($._);\nif(debug) console.log(singleitemmatch);\nif(debug) console.log(galleryitemsmatch);\nif(debug) console.log(titlematch);\n\nlet returnval;\nlet toptext = titlematch[1];\n\n\n//If no single image found, try special cases\nif(singleitemmatch == null) {\n\n //MP3s and Video\n let mp3match = $._.match(/jwplayer-file.*?value=['\\\"](.*?)['\\\"]/);\n if(mp3match != null) {\n if(debug) console.log(\"Video/MP3 Media Context.\");\n let mp3medialink = mp3match[1];\n\n returnval = [\n [mp3medialink, toptext]\n ];\n return returnval;\n }\n\n //Image from pool case\n let poolmatch = $._.match(/src=['\\\"](https:\\/\\/\\w\\w\\.ib\\.metapix\\.net\\/files\\/screen\\/\\d+\\/.*?)['\\\"]/);\n if(poolmatch != null) {\n if(debug) console.log(\"Pool Image Media Context.\");\n let poolmedialink = poolmatch[1];\n\n returnval = [\n [poolmedialink, toptext]\n ];\n return returnval;\n }\n\n //Final try for general thumbnail. Happens with literature posts as an example.\n let generalthumbmatch = $._.match(/<meta content=['\\\"](.*?)['\\\"] property=['\\\"]og:image['\\\"]>/);\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<galleryitemsmatch.length; i++) {\n let currentthumburl = galleryitemsmatch[i][1];\n currentthumburl = currentthumburl.replace(\"/thumbnails/medium/\", replaceurltext);\n currentthumburl = currentthumburl.replace(\"_noncustom\", \"\");\n currentthumburl = currentthumburl.replace(\".jpg\", filetype);\n returnval.push([currentthumburl, toptext])\n }\n}\n\nif(debug) console.log(\"Final Return Value\", returnval);\nreturn returnval;\n\n\n\n",
"note": "iceiller9999\nhttps://www.reddit.com/r/imagus/comments/vvxi32/comment/ifn4bvt\nOLD\nhttps://www.reddit.com/r/imagus/comments/7268xq/anybody_have_inkbunny_imagus_sieve_data/\n\nEXAMPLES\nhttps://inkbunny.net/s/2904154-p2-#pictop\nhttps://inkbunny.net/gallery/ValiantZ/1/9f61b1100f\nhttps://inkbunny.net/gallery/Caitsith511/1/868d60410a\nhttps://inkbunny.net/submissionsviewall.php?rid=c6f18f24ee&mode=pool&pool_id=76632&page=1"
},
"inoSMI.ru": {
"link": "inosmi\\.ru\\/\\d{8}\\/[\\w-]+-\\d+\\.html",
"res": "data-photoview-src=\"([^\"]+)\"",
"note": "Baton34V\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=360#4\nOLD\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=260#9\n\n\nПРИМЕРЫ\nhttps://inosmi.ru/today/"
},
"INSTAGRAM_pub_api_a1-p": {
"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/${$[1]==='reel/'?'tv/':$[1]}${$[2]}/?__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 ? `<imagus-extension type=\"sidebar\">${c}</imagus-extension>` : 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/1bhj0jh/comment/kwgp6w6\n\nOLD\nhttps://www.reddit.com/r/imagus/comments/1aujfau/comment/krr1bo1\nhttps://www.reddit.com/r/imagus/comments/1aujfau/comment/kr4cf1d\nhttps://www.reddit.com/r/imagus/comments/17mr4t7/comment/k8cm03n\n\n\n!!!\nСайдбар можно отключить командой: const use_sidebar = false.\nДля показа внешних ссылок и фреймов необходимо правило для SMH (см.ЧаВо, п.12).\nНа домашней странице в \"ленте\" фильтр также работает - для этого следует навести курсор на количество лайков, либо на дату.\nВ случае если данный фильтр у вас не будет работать, можно его отключить и включить один из альтернативных фильтров.\nАльтернативный просмотр Инстаграм: IMGINN.COM/IMGSED.COM.\n==\nSidebar can be turned off by the command: const use_sidebar = false.\nTo display external links and frames, you need a rule for SMH (see FAQ, p.12).\nOn the home page in the \"feed\" the rule works if you hover over the number of likes or the date.\nIf this sieve does not work for you, you can disable it and enable one of the alternative sieves.\nAlternative Instagram viewer: IMGINN.COM/IMGSED.COM.\n\n\nПРИМЕРЫ / EXAMPLES\n(внешние ссылки / external links)\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=200#19"
},
"INSTAGRAM_graphql-p": {
"off": 1,
"link": "^instagram\\.com/(?:[^/]+/)*(?:p|reel)/([\\w-]+).*",
"url": "data:,$1",
"res": ":\nif (location.hostname !== 'www.instagram.com') return null\n\nconst use_60fps_video = true // If set to true, uses a silent 60 fps video if available.\n\nconst elem = document.createElement('script')\nelem.textContent = 'sessionStorage.setItem(\"__imagus_fb_dtsg\", fb_dtsg); sessionStorage.setItem(\"__imagus_doc_id\", require(\"PolarisPostRootQuery\").params.id); document.currentScript.remove();'\ndocument.head.appendChild(elem)\nconst fb_dtsg = sessionStorage.getItem('__imagus_fb_dtsg')\nconst doc_id = sessionStorage.getItem('__imagus_doc_id')\nsessionStorage.removeItem('__imagus_fb_dtsg')\nsessionStorage.removeItem('__imagus_doc_id')\n\nconst xhr = new XMLHttpRequest()\nxhr.open('POST', 'https://www.instagram.com/api/graphql', false)\nxhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded')\nxhr.setRequestHeader('X-IG-App-ID', '936619743392459') // not required, just in case\nxhr.send(`fb_dtsg=${encodeURIComponent(fb_dtsg)}&variables=%7B%22shortcode%22%3A%22${$[1]}%22%7D&doc_id=${doc_id}`)\nconsole.log('Instagram data:',xhr.responseText)\nconst item = JSON.parse(xhr.responseText).data.xdt_api__v1__media__shortcode__web_info.items[0]\n\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) => [ use_60fps_video&&i.video_dash_manifest.match(/(?:frameRate=[^\"]*\"60[^\"]*\"\\s+ sar=|-hfr_).+?<BaseURL>([^<]+)/)?.[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\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=2140#8\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1520#20\n\n\n!!!\nДля показа внешних ссылок и фреймов необходимо правило для SMH (см.ЧаВо, п.12).\n+\nconst use_60fps_video = true // Если установлено значение true, то будет показано видео 60fps, если оно доступно. Но оно будет без звука:\nhttps://www.reddit.com/r/imagus/comments/18j8q59/instagram_video_popout_for_download_is_30fps_even\n+\nНа домашней странице в \"ленте\" фильтр также работает - для этого следует навести курсор на количество лайков, либо на дату.\n+\nВ случае ошибки - фильтр выдает сообщение с кодом ошибки.\n+\nАльтернативный просмотр Инстаграм: IMGINN.COM/IMGSED.COM.\n==\nTo display external links and frames, you need a rule for SMH (see FAQ, p.12).\n+\nconst use_60fps_video = true // If set to true, a 60 fps video will be shown if it is available. But it will be silent:\nhttps://www.reddit.com/r/imagus/comments/18j8q59/instagram_video_popout_for_download_is_30fps_even\n+\nOn the home page in the \"feed\" the rule works if you hover over the number of likes or the date.\n+\nIn case of an error, the rule issues a message with an error code.\n+\nAlternative Instagram viewer: IMGINN.COM/IMGSED.COM.\n\n\nПРИМЕРЫ / EXAMPLES\n(внешние ссылки / external links):\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=200#19"
},
"INSTAGRAM_html-p": {
"off": 1,
"link": "^instagram\\.com/(?:p|reel)/([\\w-]+).*",
"url": "data:,$1",
"res": ":\nif (location.hostname !== 'www.instagram.com') return\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()\n\nconst item = JSON.parse(xhr.responseText.match(/xdt_api__v1__media__shortcode__web_info\":(.+)},\"extensions/)[1]).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 ]\n\nreturn item.carousel_media?.map((e) => res(e)) || res(item)",
"note": "64h\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=2140#8\nOLD\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1520#20\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=960#10\n\n\n!!!\nДля показа внешних ссылок и фреймов необходимо правило для SMH (см.ЧаВо, п.12).\n+\nНа домашней странице в \"ленте\" фильтр также работает - для этого следует навести курсор на количество лайков, либо на дату. \n+\nВ случае ошибки - фильтр выдает сообщение с кодом ошибки.\n+\nАльтернативный просмотр Инстаграм: IMGINN.COM/IMGSED.COM.\n+\nЕсли с данным фильтром возникнут проблемы, можно его отключить и включить один из альтернативных фильтров (R_Instagram_pub_api_a1 / O_Instagram_pub_api_gql).\n==\nTo display external links and frames, you need a rule for SMH (see FAQ, p.12).\n+\nOn the home page in the \"feed\" the rule works if you hover over the number of likes or the date.\n+\nIn case of an error, the rule issues a message with an error code.\n+\nAlternative Instagram viewer: IMGINN.COM/IMGSED.COM.\n\n\nПРИМЕРЫ / EXAMPLES\n(внешние ссылки / external links):\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=200#19"
},
"INSTAGRAM_priv_api-p": {
"off": 1,
"link": "^instagr(?:am\\.com|\\.am)/(?: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 <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"120\" width=\"360\" 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: 18px sans-serif; vertical-align: middle; text-align: center; white-space: pre-wrap;\">\n Something went wrong\\nHTTP status ${x.status}: ${x.statusText}\n </span>\n </div>\n </foreignObject>\n </svg>`.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/170lv0t/comment/k3nf9mi\nOLD\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1520#20\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=960#10\n\n!!!\nДля показа внешних ссылок и фреймов необходимо правило для SMH (см.ЧаВо, п.12).\n+\nВ случае ошибки - фильтр выдает сообщение с кодом ошибки.\n+\nНа домашней странице в \"ленте\" фильтр также работает - для этого следует навести курсор на количество лайков, либо на дату. \n+\nvar disable_on_timestamps = true (во втором текстовом поле) - запрещает срабатывание фильтра на дате комментария.\n+\nАльтернативный просмотр Инстаграм: IMGINN.COM/IMGSED.COM.\n+\nЕсли с данным фильтром возникнут проблемы, можно его отключить и включить один из альтернативных фильтров.\n==\nTo display external links and frames, you need a rule for SMH (see FAQ, p.12).\n+\nOn the home page in the \"feed\" the rule works if you hover over the number of likes or the date.\n+\nvar disable_on_timestamps = true (in the second text field) - prohibits the operation of the sieve on comment dates.\n+\nIn case of an error, the rule issues a message with an error code.\n+\nAlternative Instagram viewer: IMGINN.COM/IMGSED.COM.\n\n\nПРИМЕРЫ / EXAMPLES\n(внешние ссылки / external links):\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=200#19"
},
"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\nhttp://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.ee": {
"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+",
"res": "source src=\"([^\"]+)\" type=\"video/mp4\"",
"img": ".*?\\.iwantclips.com/uploads/contents/videos/.*?",
"note": "gpl2731\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3616#1\n\nEXAMPLES\nhttps://iwantclips.com/fetish/amateur_fetish\nhttps://www.reddit.com/domain/iwantclips.com/new/"
},
"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ПРИМЕРЫ\nhttp://ixbt.photo/?id=user:309928\nhttp://ixbt.photo/?id=album:48286"
},
"j-p-g.net-p": {
"link": "^(j-p-g\\.net/)if(/\\d{4}/\\d{2}/\\d{2}/\\d+\\.(?:jpe?g|png|gif|bmp))\\.html$",
"img": "^(j-p-g\\.net/)it(/\\d{4}/\\d{2}/\\d{2}/\\d+\\.(?:jpe?g|png|gif|bmp))$",
"to": "$1if$2",
"note": "Rodny\n\n!!!\nХостинг периодически \"лежит\".\n==\nHosting periodically \"down\".\n\n\nПРИМЕРЫ\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=2580#20"
},
"JD.com": {
"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"
},
"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\nhttp://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(/<a class=\"swipe-link swipe-left\" href=[^<]+<img src=\"([^\"]+)/s)[1].replace('large_thumb_',''):($._.match(/src=\"([^\"]+)\"[\\W]+class=\"image\"/)||[,''])[1]\nif(!res&&!/\\?next/.test($.url[0]))return /class=\"swipe-link swipe-right\"/.test($._)?{loop:$._.match(/<a class=\"swipe-link swipe-right\" href=\"([^\"]+)/)[1]+'?next'}:''\nreturn res",
"img": "^((?:img|vader)\\.joemonster\\.org/(?:mg/albums/.+?|upload/[a-z]{3}/))(?:thumb|s)_([^.]+\\.).*",
"to": "$1$2#jpg png gif#",
"note": "imqswt\nhttps://www.reddit.com/r/imagus/comments/15cpnoh/comment/ju25pg0\n\nEXAMPLES\nhttps://www.reddit.com/domain/joemonster.org/new\nhttps://joemonster.org/mg/lastup/2?edition=210\nhttps://joemonster.org/mg/album/126/7\nhttps://joemonster.org/szaffa/najnowsze_fotki/strona/4"
},
"Joxi.ru": {
"link": "^(joxi\\.ru/[^/]+)$",
"to": "$1/download\n$1.#jpg png gif#",
"note": "Rodny\n\nEXAMPLES\n??"
},
"JulesJordan_gallery-x": {
"img": "^(thumbs\\.julesjordan\\.com/trial/content/.+)thumbs(.+)",
"to": "$1photos$2",
"note": "gpl2731\nhttp://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"
},
"JulesJordan_trailer-x-b": {
"link": "^julesjordan\\.com/trial/scenes/.+vids",
"res": ":\nregex = new RegExp(/id:\"\\d+\",path:\"([^\"]+)\",.+movie_height:\"(\\d+)/g);\nstreams = [...$._.matchAll(regex)];\nif (!streams.length) return null;\nlet output = \"\",\n highest = 0;\nstreams.forEach(el => {\n let height = parseInt(el[2]);\n if (height > highest) {\n highest = height;\n output = el[1];\n }\n});\nreturn output;\n",
"note": "gpl2731\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3616#1\n\nEXAMPLES\nhttps://www.julesjordan.com/trial/categories/movies_3_d.html\nhttps://www.julesjordan.com/trial/dvds/dvds.html?sw=c&s=d"
},
"JumpShare|jmp.sh": {
"link": "^(jmp\\.sh|jumpshare.com)\\/\\w\\/\\w+$",
"res": "data-original-image-src=\"([^\"]+)\"",
"note": "Rodny + Baton34V (fix)\nhttp://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\nПРИМЕРЫ / EXAMPLES\nhttps://www.reddit.com/domain/jmp.sh/new"
},
"JustJared": {
"img": "^(cdn\\.justjared(?:jr)?\\.com/wp-content/uploads/(?:\\d+/\\d+/)?[^/]+/)(?:headlines|thumbs/)(.+)",
"to": "$1$2",
"note": "gpl2731\nhttp://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/"
},
"kbin.social": {
"link": "^[^/]+/m/[^/]+/[pt]/\\d+(?!.*#comments).*",
"loop": 1,
"img": "^([^/]+)/media/cache/(?:resolve/)?[^/]+(/.*)(?:\\.webp)?",
"to": ":\nif($[1])return `//#${$[1]}/media media.${$[1]}#${$[2]}`\nconst t = this.node.closest('article,div');\nlet l = t&&t.querySelector('button[class=\"show-preview\"]')?.dataset.previewUrlParam;\nreturn l??t.querySelector('img')?.src??''",
"note": "imqswt\nhttps://www.reddit.com/r/imagus/comments/14cetar/comment/ju6b0lg\n\nEXAMPLES\nhttps://kbin.social/d/imgur.com\nhttps://kbin.social/microblog?p=1\nhttps://kbin.social/m/playingcards\nhttps://kbin.social/u/Teali0/threads\nhttps://kbin.social/m/[email protected]/t/67916/it-s-treason-then\nhttps://kbin.social/search?q=redgifs"
},
"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ПРИМЕРЫ\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1140#15"
},
"Kick": {
"link": "^(?:kick\\.com/(.*)\\?clip=)(.*)",
"loop": 1,
"url": "https://kick.com/api/v2/clips/$2",
"res": ":\nkick_json=JSON.parse($._)\nkick_clip_playlist=kick_json.clip.video_url\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 'imagus://extension'\n",
"note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/15gc9ia/comment/jva48dp\nOLD\nhttps://www.reddit.com/r/imagus/comments/15gc9ia/updated_kickcom_clip_sieve\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\nhttps://www.reddit.com/r/imagus/comments/15gc9ia/comment/jva1hd8"
},
"Kick_VoD": {
"link": "^(?:kick\\.com/video/)([a-zA-Z0-9-]+).*",
"loop": 1,
"url": "https://kick.com/api/v1/video/$1",
"res": ":\n// Valid options are:\n// 1080p60, 720p60, 480p30, 360p30, 160p30. It could vary by streamer.\nquality=\"1080p60\"\nkick_json=JSON.parse($._)\nsource_playlist = kick_json.source\nquality_playlist = quality + \"/playlist.m3u8\"\nvod_playlist = source_playlist.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 'imagus://extension'",
"note": "th3virus\nhttps://www.reddit.com/r/imagus/comments/11ldeys/sieve_for_kickcom_clips\n\n!!!\nНеобходимо правило для SMH (см.ЧаВо, п.12).\n==\nNeed a rule for SMH (see FAQ, p.12).\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": {
"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": "\"trailer-src\" data-url=\"([^\"]+)",
"note": "gpl2731\nhttp://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ПРИМЕРЫ\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/posters/\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\nhttp://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\nhttp://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+)/(?:shooting|stills|posters|wall|covers|fanart|promo|screenshots|concept)/$",
"res": ":\nlet res=[];\nlet jsn1=JSON.parse($._.match(/<script id=\"__NEXT_DATA__\" type=\"application\\/json\".+?({.+?)<\\/script>/)[1]).props.apolloState.data;\nfor (let jsn2 in jsn1) {\n if (jsn1[jsn2].id && jsn1[jsn2].id==$[1]) {\n let jsn=jsn1[jsn2];\n for (let nod in jsn) {\n if (jsn[nod].hasOwnProperty('items')) {\n for (let item of jsn[nod].items) {\n res.push([item.image.avatarsUrl+'/orig']);\n }\n }\n }\n }\n}\nreturn res;",
"note": "Baton34V\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3900#10\n\nПРИМЕРЫ\nПункт \"Изображения\" на странице фильма/сериала."
},
"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\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1600#7\nOLD\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3900#14\nhttp://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\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3900#14\nOLD\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3900#10\nhttp://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\nhttp://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=война"
},
"KizlyarExtreme.ru": {
"link": "^kizlyarextreme\\.ru/[\\w-]+/[\\w-]+",
"res": ":\n$=JSON.parse($._.match(/data-product-json=\"([^\"]+)/)[1].replaceAll('&quot;','\"'))\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\nhttp://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": {
"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\nhttp://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(/content=\"([^\"]*?)\" property=\"og: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://konachan.com/post?tags=bed\nhttps://konachan.com/wiki/show?title=kanniiepan"
},
"Kufar.by": {
"link": "^(\\w+\\.)?kufar\\.by/(item|vi)/\\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/130svfu/comment/jxydqur\nOLD\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=580#13\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"
},
"Lamnia": {
"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\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3660#18\n\nПРИМЕРЫ\nhttps://www.lamnia.com/ru/br/16/ножи-и-складные-ножи-b&#246;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"
},
"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' : '')"
},
"Lenta-b": {
"link": "lenta\\.com/product/[\\w-]+/",
"res": ":\nlet i = $._.indexOf('<div class=\"sku-images-slider sku-page__slider-inner\">');\nif(i<0) { return null; }\nlet t = $._.indexOf('<div class=\"sku-page__info\">', i);\nif(t<0) { return null; }\nlet res = [];\nlet re = /<img\\s+src=\"([^\\?]+)(\\?preset=\\w+)\"/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;",
"img": "(lenta\\.gcdn\\.co/globalassets/\\d/-/[^\\?]+)\\?preset=.+",
"to": "$1",
"note": "Baton34V\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=100#8\n\n!!!\nПри проверке - сразу банит (считает атакой).\nДля просмотра галереи целиться чуть в сторону от фото товара.\n\nПРИМЕРЫ\nhttps://lenta.com/catalog/myaso-ptica-kolbasa/\nhttps://lenta.com/catalog/bytovaya-tehnika-i-elektronika/"
},
"LeroyMerlin.ru": {
"link": "^(?:\\w+\\.)?leroymerlin\\.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\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1460#21\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=540#19\n\n\nПРИМЕРЫ\nhttps://leroymerlin.ru/offer/tovary-dlya-uyuta-v-dome/\nhttps://tver.leroymerlin.ru/search/?q=кухонные%20гарнитуры&suggest=true\nhttps://kemerovo.leroymerlin.ru/catalogue/stoly-dlya-dachi/?fromRegion=6607"
},
"Letterboxd": {
"link": "^(letterboxd\\.com/)(?:[^/]+/)?(film/[^/]+).*",
"url": "https://$1$2/",
"res": ":\nconst show_background_image = true\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(/runTime:\\s(\\d+)/)?.[1]||''\nconst releaseDate = o.releasedEvent[0]?.startDate\nconst genre = o.genre?.join(\", \")\nconst rating = (o.aggregateRating?.ratingValue?.toFixed(1)||'undefined')+' / 5'\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 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 = [[$._.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':'',releaseDate].filter(Boolean).join(\" | \"),genre,'Rating: '+rating,'\\n<b>Plot</b>\\n'+plot,'\\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\"):''].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/kg3skkr\nOLD\nhttps://www.reddit.com/r/imagus/comments/10yldvb/comment/kb443a9\n\nПРИМЕРЫ / EXAMLPLES\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": {
"img": "^(photos\\.lifeisphoto\\.ru/\\d+/)[012](/\\d+\\.(?:jpe?g|gif|png))$",
"to": "$1#3 2 0#$2",
"note": "Rodny\n\nПРИМЕРЫ\nhttp://www.lifeisphoto.ru/gallery.aspx\nhttp://www.lifeisphoto.ru/theme.aspx?id=20\nhttp://www.lifeisphoto.ru/page.aspx?id=75365"
},
"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": {
"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": {
"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\nhttp://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\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3500#5\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\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3500#5\nOLD\nhttp://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\nhttp://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.space": {
"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?t=pop\nhttps://www.mage.space/explore?t=characters\nhttps://www.mage.space/explore?q=sunrise"
},
"MagnitCosmetic.ru": {
"link": "^magnitcosmetic\\.ru/catalog/[\\w-/]+/\\d+/",
"res": ":\nvar i = $._.indexOf('<div class=\"action-card__col action-card__col_image\">');\nif(i<0) { return null;}\nvar t = $._.indexOf('<div class=\"action-card__slider action-card__slider_nav js-slider_nav\"', i);\nif(t<0) { t = $._.indexOf('<div class=\"action-card__col\">', 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;",
"note": "Baton34V\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1800#17\n\nПРИМЕРЫ\nhttps://magnitcosmetic.ru/catalog/tovary_dlya_doma/\nhttps://magnitcosmetic.ru/search/?q=Alerana+Pharma+Care&cat="
},
"MAIL.RU_cloud": {
"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(/\\\\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>test!`\n]\nreturn {loop:'imagus://extension'}\n}\nconst t=`<imagus-extension type=\"\"></imagus-extension>` // This is needed to fix a bug where [Extension] interferes with albums sometimes.\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/kstwfsp\nOLD\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1140#3\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3380#2\n\n!!!\nФильтру для работы с \"облачным\" видео на хромиум-браузерах требуется правило для SMH (см. ЧаВо п.14).\n\n\nПРИМЕРЫ\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3360#21\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1360#11"
},
"MAIL.RU_news": {
"link": "^(?:.+\\.)?mail\\.ru/[^/]+/[^/]*\\d{6,}/",
"res": ":\n$=JSON.parse($._.match(/\"application\\/ld\\+json\">({.+?})<\\//)[1])\nreturn [$.image.url,$.articleBody]",
"img": "^(retina\\.news\\.mail\\.ru/)prev\\d+x\\d+/",
"to": "$1/",
"note": "Imagus_fan\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": {
"link": "^my\\.mail\\.ru/(?:[^/]+/){0,3}video/(?:(?:[^/]+/)*\\d+\\.html|meta)",
"res": ":\nif($._[0]!=='{')return {loop:$._.match(/\"metaUrl\":\\s+\"([^\"]+)/)[1]}\n$=JSON.parse($._)\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=\"https:${$.videos[0].url}\"></imagus-extension>${$.meta?.title||''}`\n]\nreturn {loop:'imagus://extension'}",
"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/ksj1la8\n\nEXAMPLES\nhttps://my.mail.ru/mail/cyrella/video\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1360#11\nhttps://www.reddit.com/domain/my.mail.ru/new/"
},
"MakeAGif-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": {
"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"
},
"ManyVids-x-p-b": {
"link": "^manyvids\\.com/Video/\\d+/",
"res": ":\nconst arr = []\nconst title_re = /twitter:title\" content=\"([^\"]+)/g.exec($._)\nconst cover = /data-video-screenshot=\"([^\"]+)/g.exec($._);\nconst video = /data-video-filepath=\"([^\"]+)/g.exec($._);\n\nconst title = title_re ? title_re[1] : \"\";\nif (cover) arr.push([cover[1], title]);\nif (video) arr.push([video[1], title]);\nreturn arr;",
"note": "gpl2731\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3720#4\n\nПРИМЕРЫ\nhttps://www.manyvids.com/Vids/?content_type=1&search_type=0&sort=1&page=1\nhttps://www.manyvids.com/Vids/?content_type=1,2,3&search_type=0&sort=9&page=1"
},
"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://www.reddit.com/r/imagus/comments/17ga8mw/mlbpark_orbi_sieve/\nhttps://www.reddit.com/r/imagus/comments/17ga8mw/comment/k6t3rdo"
},
"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ПРИМЕРЫ\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1360#11"
},
"MediaFire": {
"link": "mediafire\\.com/view/(.*)",
"url": "https://www.mediafire.com/file/$1",
"res": ":\nconst m = $._.match(/window.location.href = '(ht[^']+)/)\nreturn m?m[1]:''",
"note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/130svfu/comment/jn8v5j7\n\nEXAMPLES\nhttps://www.mediafire.com/view/fludv4lm29fl9ar/httpsiseesedu.in_%25282%2529.jpg/file\nhttps://www.mediafire.com/view/39q4i3oblc8oazw/software_development_courses_in_mahad.jpg/file"
},
"Medium-p": {
"img": "^((?:cdn-images-\\d|miro)\\.medium\\.com/)[^?]+/([^?]+).*",
"to": "#$1$2\n$1max/1024/$2",
"note": "EXAMPLES\nhttps://medium.com/tag/fintech\nhttps://vulcanchain.medium.com/node-validators-read-this-info-2201cafb458"
},
"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\nhttps://www.meetup.com/london-east-asian-friends-leaf/events/299253626/"
},
"Megafon.ru": {
"link": "\\w+\\.shop\\.megafon\\.ru/[\\w-]+/\\d+$",
"res": ":\nvar i = $._.indexOf('<div class=\"b-gallery__images\">')\nif(!i) { return null; }\nvar t = $._.indexOf('<div class=\"b-gallery__bottom\">', i);\nif(!t) { return null; }\nvar res = []\nvar re = /data-lazy=\"([^\"]+)\"/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=50874&start=1020#16\nOLD\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=2380#5\n\nПРИМЕРЫ\nhttps://spb.shop.megafon.ru/planshet?page=3&archVal=0&pageType=1\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"
},
"MegaMarket.ru": {
"link": "^megamarket\\.ru/catalog/details/[\\w-]+-([\\d_]+)/",
"res": ":\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 = new XMLHttpRequest();\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/18n32dx/comment/kebeozx\nOLD\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=2120#2\n\n\n!!!\nДля корректной работы фильтра в результатах поиска сначала нужно открыть хотя бы один товар (чтобы сайт сделал \"проверку браузера\").\n+\nФильтр показывает не только галерею фото товара, но и фото от самих покупателей (несколько первых). В некоторых случаях требуется повторное наведение курсора на фото товара.\n\nПРИМЕРЫ\nhttps://megamarket.ru/catalog/chay/\nhttps://megamarket.ru/catalog/divany/\nhttps://megamarket.ru/catalog/kleenki-na-stol/#?related_search=клеенки+на+стол"
},
"MemeGenerator-p": {
"link": "^(?:(?:ru|es)\\.)?memegenerator\\.net/(instance)/(\\d+)(\\d{3}).*",
"res": "<meta property=\"og:image\" content=\"([^\"]+)\"",
"img": "^cdn\\.meme(?:\\.am|generator\\.net)/(?:cache/)?(instance)s/(?:folder\\d+/)?\\d+x\\d*/(\\d+)(\\d{3}).*",
"to": "https://cdn.meme.am/cache/$1s/folder$3/$2$3.jpg",
"note": "Baton34V\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3360\n\n\nПРИМЕРЫ / EXAMPLES\nhttps://memegenerator.net/Willy-Wonka\nhttps://www.reddit.com/domain/memegenerator.net/new/\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1440#16"
},
"Memozee": {
"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\nПРИМЕРЫ / EXAMPLES\nhttp://animal.memozee.com/list.php\nhttp://animal.memozee.com/list.php?&p=3800"
},
"Meshok": {
"link": "^meshok\\.net/(?:[a-z]{2}/)?item/(\\d+)_[\\w%-]+",
"res": ":\nreturn [...$._.matchAll(RegExp(`(https:[^\"]+${$[1]}\\\\.\\\\d+\\\\.[a-z]+)`,'g'))].map(i=>[i[1].replaceAll('\\\\u002F','/')])",
"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/130svfu/comment/jyduj9s\nOLD\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3660#7\n\nПРИМЕРЫ\nhttps://meshok.net/listing?good=1011\nhttps://meshok.net/listing?good=2817"
},
"Metro-cc.ru": {
"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"
},
"MGStage-x": {
"img": "(image\\.mgstage\\.com\\/images\\/.+\\/)pf_\\w{2}(_\\w+-\\d+.jpg)",
"to": "$1pb_e$2",
"note": "loveqianool\nhttps://www.reddit.com/r/imagus/comments/zmmjs8/comment/j1rc5ny\n\nEXAMPLES\nhttps://www.mgstage.com/search/cSearch.php?sort=new&list_cnt=120&type=top\nhttps://www.mgstage.com/product/product_detail/530DG-232/"
},
"Microscope": {
"useimg": 1,
"link": "^microscope\\.com/(?:catalog/product/view/id/\\d+/category/\\d+/|[^-]+-[^.]+\\.html$)",
"res": ":\nconst html = new DOMParser().parseFromString($._, \"text/html\");\nreturn [...html.querySelectorAll('img[class=\"gallery-image lazyload\"]')].map(i=>[i.dataset.src])",
"img": "^microscope\\.com/media/catalog/product/cache/\\d/(?:small_image|thumbnail)/\\d+x/[a-f0-9]+/(.*)",
"to": "https://www.microscope.com/media/catalog/product/cache/2/image/9df78eab33525d08d6e5fb8d27136e95/$1",
"note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/130svfu/comment/joowxsu\nOLD\nhttps://www.reddit.com/r/imagus/comments/c8sfyl/comment/estqr02\n\n!!!\nЧтобы увидеть все фото продукта, курсор нужно наводить на название товара.\n==\nTo see all the product photos, you need to hover the cursor over the product name.\n\n\nEXAMPLES\nhttps://www.microscope.com/accessories\nhttps://www.microscope.com/stereo-microscopes\nhttps://www.microscope.com/compound-microscopes"
},
"Mile-stone.jp": {
"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": {
"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/Ah%21+Megami-sama\nhttp://www.minitokyo.net/The+Legend+of+Heroes+Illustration+Artbook"
},
"mrJH.org": {
"link": "^(mrjh\\.org/)gallery\\.php\\?entry=(images/[^.]+\\.jpg)",
"img": "^(mrjh\\.org/)gallery\\.php\\?entry=(images/[^.]+\\.jpg)",
"to": "$1$2",
"note": "imqswt\nhttps://www.reddit.com/r/imagus/comments/130svfu/comment/jspp9q8\n\n!!!\nНеобходимо правило для SMH (см. ЧаВо, п.12).\n==\nNeed a rule for SMH (see FAQ, p. 12).\n\nEXAMPLES\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1369&limit=1&m=1#1"
},
"Mobygames": {
"link": "(?:www\\.)?mobygames\\.com\\/game\\/[^,]+?,\\d+\\/",
"res": "og:image\" content=\"([^\"]+)\"",
"note": "Baton34V\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=2400#7\n\nПРИМЕРЫ / EXAMPLES\nhttps://www.mobygames.com/game/flatout/screenshots"
},
"ModDB": {
"link": "(?:www\\.)?moddb\\.com\\/mods\\/.+\\/videos\\/.+",
"res": ":\nvar i = $._.indexOf('<video id=\"mediaplayer\"');\nif(i<0) { return null; }\nvar t = $._.indexOf('<div class=\"normalbox\" id=\"comments\">', i);\nif(t<0) { return null; }\nvar res = [];\nvar re = /<source src=\"([^\"]+)\" type=\"video\\/mp4\" label=\"([^\"]+)\"/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}\nreturn res;\n",
"img": "(media\\.moddb\\.com\\/)cache\\/(images\\/\\w+\\/\\d+\\/\\d+\\/\\d+\\/)crop_\\w+\\/(.+)",
"to": "$1$2$3",
"note": "Baton34V\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=2420#12\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/4652848/viewall\nhttps://www.modelmayhem.com/portfolio/2442527/viewall"
},
"Motherless-x-p": {
"link": "^(lm\\d\\.)?motherless\\.com/\\w{1,7}",
"res": "__fileurl = '([^']+)",
"note": "gpl2731\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=220#13\n\n\nПРИМЕРЫ / EXAMPLES\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": {
"link": "^motorsport\\.tv/(?:[^/]+/)*video/.+",
"res": ":\nconst m = $._.match(/<source src=\"([^\"]+)/)?.[1]||''\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=\"${m}\"></imagus-extension>`\n]\nreturn m?.length?{loop:'imagus://extension'}:''",
"note": "Imagus_fan\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://www.reddit.com/r/imagus/comments/173v0mm/motorsporttv/"
},
"mp4porn.rip-x": {
"link": "^(mp4porn\\.space|mp4porn\\.rip)/video/.+",
"res": ":\nreturn '//'+$[1]+$._.match(/url_v = \"([^\"]+)/)[1].replace(/(play)_/,'$1')+'#mp4'",
"note": "imqswt\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/ktlr02x\n\nEXAMPLES\nhttps://mp4porn.space/videos/pure-taboo\nhttps://mp4porn.space/pornstar/alina-lopez\nhttps://mp4porn.space/category/creampie"
},
"MSPAbooru-x": {
"useimg": 1,
"link": "^(?:mspabooru\\.com|[\\da-z-]{1,30}\\.booru\\.org)/index\\.php\\?page=post&s=view&id=\\d+",
"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": "Baton34V\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3360\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"
},
"Multihoster.Saxonia-Fighter.de": {
"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\nhttp://multihoster.saxonia-fighter.de/viewer.php?is_random=7&file=88942379338019984241.gif\nhttp://multihoster.saxonia-fighter.de/viewer.php?is_random=8&file=55173549683265195542.gif"
},
"MVideo.ru": {
"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\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=380#20\nOLD\nhttp://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"
},
"MyFile": {
"link": "myfile\\.is/[^_]+_(\\w+)",
"res": ":\nconst res = $._.match(RegExp(`href=\"([^\"]+\\.${$[1]}[^\"]*)`));\nreturn res?res[1]:''",
"note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/130svfu/comment/jn8v5j7\n\nEXAMPLES\nhttps://myfile.is/j6P1E6ndz7/4gkzX2GUEj_jpg\nhttps://myfile.is/l5P3Efndzf/7re4xVQvRE_jpg\nhttps://myfile.is/HdPaEbnaz0/4156347976230_mp4"
},
"My-Files.su|My-Files.ru|Global-Files.net": {
"link": "global-files\\.net|my-files\\.su/\\w+",
"res": "<a class=\"btn btn-success breakword\" itemprop=\"url\" href=\"([^\"]+)\">\n",
"note": "Baton34V\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1440#7\nOLD\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1380#10\n\n!!!\nВ РФ нужен прокси (для My-Files.ru)\n\nПРИМЕРЫ\nhttps://my-files.su/catalog/Images\nhttps://my-files.su/catalog/Videos\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1369#2"
},
"MyPhoto.eu": {
"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\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1380#10\n\nEXAMPLES\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1360#11"
},
"Myvi.ru-p": {
"link": "^myvi\\.ru/(watch/[\\w-]+$|player/embed/html/([\\w-]+))",
"res": ":\nif ($[2]) {\n let i = $._.indexOf('createPlayer(\"v=');\n if(i<0) { return null; }\n let t = $._.indexOf('tp=video', i);\n if(t<0) { return null; }\n return url=decodeURIComponent($._.substring(i+16,t-6));\n}\nelse {\n let nexturl=$._.match('<meta property=\"og:video\" content=\"([^\"]+)\"')[1];\n return nexturl && {loop: nexturl};\n}",
"note": "Baton34V\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=440#21\n\n!!!\nФильтр работает только в FireFox.\n\nПРИМЕРЫ\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=440#8"
},
"Myvi.top": {
"link": "^(myvi\\.(?:top|tv))/(\\w+)\\?v=(\\w+)",
"url": "https://api.myvi.tv/api/1.0/channel/$2/detail?featured_size=10&host=www.$1&video_id=$3",
"res": ":\njsn=JSON.parse($._);\nreturn jsn.featured[0].player.mediaConfig.source[0].file;",
"note": "Baton34V\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=440#21\n\nПРИМЕРЫ\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=440#8"
},
"Myvi.top_embed": {
"link": "^myvi\\.(?:top|tv)/embed/\\w+",
"res": ":\nlet i = $._.indexOf('PlayerLoader.CreatePlayer(\"v=');\nif(i<0) { return null; }\nlet t = $._.indexOf('tp=video', i);\nif(t<0) { return null; }\nlet url=decodeURIComponent($._.substring(i+29,t-6));\nreturn url;",
"note": "Baton34V\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=440#21\n\nПРИМЕРЫ\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=440#8"
},
"NASA.gov": {
"img": "^(nasa.gov/sites/default/files/)styles/.+/public/(thumbnails/image/.+\\.jpg)",
"ci": 2,
"to": "$1$2",
"note": "hababr\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1640#6\n\nПРИМЕРЫ / EXAMPLES\nhttps://www.nasa.gov/mission_pages/station/images/index.html\nhttps://www.nasa.gov/multimedia/imagegallery/iotd.html\nhttps://www.nasa.gov/content/nasa-history-images-archive"
},
"NASA.gov_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.gov_eoimg": {
"img": "^(eoimages\\.gsfc\\.nasa\\.gov/images/.+)_front\\.jpg",
"ci": 2,
"to": "$1_lrg.jpg",
"note": "hababr\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1640#6\n\nПРИМЕРЫ / EXAMPLES\nhttps://visibleearth.nasa.gov/?page=6\nhttps://earthobservatory.nasa.gov/topic/life\nhttps://earthobservatory.nasa.gov/global-maps\nhttps://earthobservatory.nasa.gov/topic/image-of-the-day"
},
"NASA.gov_eol.jsc": {
"img": "(.*eol\\.jsc\\.nasa\\.gov/.*)/small/(.*\\.jpg)",
"ci": 2,
"to": "$1/large/$2",
"note": "hababr\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3840#12\n\nПРИМЕРЫ / EXAMPLES\nhttps://eol.jsc.nasa.gov/SearchPhotos/ShowQueryResults-Lightcycle.pl?results=Latest_ISS_Imagery"
},
"NASA.gov_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\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=2060#5\nOLD\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1640#9\n\nПРИМЕРЫ / EXAMPLES\nhttps://images.nasa.gov/\nhttps://images.nasa.gov/search-results?q=ORION&page=1&media=image,video&yearStart=1920&yearEnd=2023"
},
"NatGeo": {
"link": "^nationalgeographic\\.com/\\w+/article/[\\w-]+",
"res": ":\nvar jsn=JSON.parse($._.match(/window\\['__natgeo__'\\]=(.+);<\\/script>/i)[1]);\nvar edgs=jsn.page.content.article.frms[0].mods;\nvar res=[];\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 (typeof item[Object.keys(item)[i]] == \"object\"){\n customFilter(item[Object.keys(item)[i]]);\n }\n }\n}\nreturn res;",
"note": "Baton34V\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"
},
"Naver": {
"link": "^(?:m\\.)?tv\\.(naver\\.com/)v/(?:(\\d+)(?:$|[/?#])|([\\dA-F]+)/(\\w+)).*",
"url": ": $[3] ? 'https://global.apis.'+$[1]+'rmcnmv/rmcnmv/vod_play_videoInfo.json?key='+$[4]+'&videoId='+$[3] : $[0]",
"res": ":\nif($[2]) {\n var x=typeof $._=='string'&&$._.match(/\"videoId\"\\s*:\\s*\"([^\"]+)\",\\s+\"inKey\"\\s*:\\s*\"([^\"]+)/)\n return x&&{loop:'https://tv.'+$[1]+'v/'+x[1]+'/'+x[2]}\n}\n$._=JSON.parse($._)\nreturn [$._.videos.list[3].source, $._.meta.subject+' by '+ $._.meta.user.id]",
"note": "Baton34V\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=260#5\n\nEXAMPLES\nhttps://www.naver.com/\nhttps://www.reddit.com/domain/tv.naver.com/new"
},
"NeatClip-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": {
"link": "^newegg\\.com/[\\w-]+/[\\w-]+",
"res": ":\nlet i = $._.indexOf('<div class=\"product-view-container\">');\nif(i<0) {return null; }\nlet t = $._.indexOf('<div class=\"product-hover-area\"></div>', i);\nif(t<0) {return null; }\nlet res = [];\nlet re = /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": "^((?: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": "Baton34V\nhttp://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": {
"link": "^newgrounds\\.com/art/view/[^/]+/[^/]+",
"res": "=\"(https://art\\.ngfiles\\.com/images/[^\"]+)\n=\"og:title\" content=\"([^\"]+)",
"img": "^newgrounds\\.com/downloads/wallpapers/get\\.php\\?id=\\d+.*",
"to": "$&",
"note": "EXAMPLES\nhttps://www.newgrounds.com/art\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???"
},
"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\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1163&limit=1&m=1#1\nOLD\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3616#1\n\nEXAMPLES\nhttps://www.naughtyamerica.com/new-porn-videos"
},
"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"
},
"NexusMods_img": {
"link": "^(nexusmods\\.com/[\\w-]+/mods/\\d+)$",
"url": ": $[1]+'?tab=images';",
"res": ":\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": "Baton34V\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1680#17\n\nПРИМЕРЫ / EXAMPLES\nhttps://www.nexusmods.com/sacred2?tab=popular+%28all+time%29\nhttps://www.nexusmods.com/skyrimspecialedition/images/195296\nhttps://www.nexusmods.com/skyrimspecialedition/users/49002333?tab=images"
},
"nhentai.net-x-p": {
"link": "^nhentai\\.net/g/\\d+/$",
"url": "data:,$&",
"res": ":\nvar x=new XMLHttpRequest();\nx.open('Get',$[0],false);\nx.send();\n$._=x.responseText\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.nhentai').replace('t.','.')]);\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(\\.\\w+)",
"to": "i$1#.png .jpg .gif#",
"note": "imqswt\nhttps://www.reddit.com/r/imagus/comments/1cnxvef/comment/l3eso03\nOLD\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=400#15\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3680#18\n\nПРИМЕРЫ / EXAMPLES\nhttps://nhentai.net/tag/animated\nhttps://nhentai.net/g/409848/\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3000#6"
},
"NicoVideo.jp-p": {
"link": "nicovideo\\.jp/watch/(sm|so|nm)(\\d+).*",
"res": ":\nlet parser = new DOMParser();\nlet doc = parser.parseFromString($._, \"text/html\");\nlet dataNode = doc.querySelector('#js-initial-watch-data');\nlet data = JSON.parse(dataNode?.dataset?.apiData);\nlet final = [];\nif (data) {\n final.push(data.video.thumbnail.player);\n let sec = data?.video?.duration;\n let hh = Math.floor(sec / 3600);\n let mm = Math.floor((sec % 3600) / 60);\n let ss = sec % 60;\n let duration = `${hh ? hh.toString().padStart(2, '0') + \":\" : \"\"}${mm.toString().padStart(2, '0')}:${ss.toString().padStart(2, '0')}`;\n final.push(`${data?.video?.title} | ${data?.owner?.nickname} | 👁 ${data?.video?.count?.view} | ${duration} | ${data?.video?.registeredAt} | ${data?.video?.description}`);\n}\nreturn final;",
"note": "onurtag\nhttps://www.reddit.com/r/imagus/comments/18hwm0n/new_sieve_for_nicovideojp/\n\n!!!\nThis sieve is showing the thumbnail and also the title, uploader, views, date, length and description.\n\n\nEXAMPLES\nhttps://www.reddit.com/r/imagus/comments/18hwm0n/comment/kdapdv2"
},
"Nijie-x": {
"link": "nijie\\.info\\/view\\.php\\?id=\\d+",
"res": ":\nu = $._.match(/data-original=\"([^\"]+)\"/)\nvar i = $._.indexOf('id=\"img_filter\"');\nvar t = $._.indexOf('view-middle-right', i);\nvar res = [];\nvar re = /src=\"([^\"]+)\"/gi\nvar data=$._.substring(i,t);\nvar zdata=data.replace('/pic/filter/width/1.png','')\nvar a = re.exec(zdata);\nwhile(a)   {\n   res.push([a[1].replace('/__rs_l120x120','')]);\n   a = re.exec(zdata);\n}\nif(i<0) {\n res.push([u[1]]);\n return res;\n}else{\n return res;\n}",
"note": "loveqianool\nhttps://www.reddit.com/r/imagus/comments/10n6czx/comment/jcvilgp\n\n!!!\nНужен аккаунт.\n\nEXAMPLES\n???"
},
"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"
},
"Ning": {
"img": "^(api\\.ning\\.com/files/[\\w-*]+/[^?]+)\\?.+",
"to": "$1",
"note": "!!!\nНужен аккаунт.\n\nEXAMPLES\n???"
},
"NIX.ru": {
"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\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1620#18\nOLD\nhttp://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://astrahan.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.to-p": {
"link": "nnmclub\\.to/forum/viewtopic\\.php",
"res": ":\nlet res = [];\n//let re = /<meta property=\\\"og:image\\\" content=\\\"([^\\\"]+)/gi;\nlet re = /class=\\\"postImg postImgAligned img-right\\\" title=\\\"([^\\\"]+)/gi;\nlet a = re.exec($._);\nif (a) {\n res.push([a[1]]);\n} else return null;\n//re = /<a href=\\\"(http[^\\\"]+)\\\" style.+?class=\\\"highslide\\\"/gi;\nre = /class=\\\"highslide\\\".+?<var class=\\\"postImg\\\" title=\\\"(http[^\\\"]+)/gi;\na = re.exec($._);\nwhile(a) {\n res.push([a[1]]);\n a = re.exec($._);\n}\nreturn res;",
"note": "destiny child\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1600#9\n\n!!!\nПоказывает постер + миниатюры скриншотов на внешних ссылках раздачи.\n\nПРИМЕРЫ\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1360#11"
},
"NoelShack": {
"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\nhttp://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": {
"link": "(?:www\\.)?nozhikov\\.ru\\/product\\/[\\w-]+",
"res": ":\nvar i = $._.indexOf('<div class=\"swiper-wrapper\">')\nif(i<0) { return null; }\nvar t = $._.indexOf('<div class=\"thumbs-pagination\"><\\/div>', i);\nif(t<0) { return null; }\nvar res = []\nvar re = /href=\"(https?:\\/\\/img\\.nozhikov\\.ru\\/images\\/products\\/\\d\\/\\d+\\/\\d+\\/[\\w-\\.]+\\.(?:jpe?g|png|bmp))\"/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=1180#17\n\nПРИМЕРЫ\nhttps://www.nozhikov.ru/collection/best\nhttps://www.nozhikov.ru/collection/raskladnye-nozhi\nhttps://www.nozhikov.ru/collection/svetodiodnye-fonari"
},
"NozhiMAN.ru": {
"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\nhttp://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/"
},
"NRK.no": {
"link": "^(?:nrk/no\\?album|(?:nrk\\.no/video/[^_]+_|tv\\.nrk\\.no/(?:program|serie|direkte)/)(.*))",
"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{\nlet m = [...[...document.querySelectorAll('div[data-scroll-container]')].find(i=>RegExp(`${this.oImage}`).test(i.innerHTML))?.children].map(i=>{img=i.firstChild?.firstChild?.srcset?.split(/,\\s*/); return img ? [['#'+img.pop().replace(/\\s\\d+w.*/gs,''),img.filter(i=>/\\s1\\d{3}w$/.test(i))[0]?.replace(/\\s\\d+w.*/gs,'')],i.lastChild.innerText]:''}).filter(Boolean)\ndelete this.oImage\nreturn m\n}\n",
"img": "^(?:mediaorigin|gfx)\\.nrk\\.no/.+",
"loop": 2,
"to": ":\nif(this.node.offsetParent.attributes[\"data-scroll-container\"]){\nthis.oImage = $[0].replace(/[?+.*]/g,'\\\\$&')\nreturn 'nrk/no?album'+$[0]}\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://old.reddit.com/r/imagus/comments/c9zlcm/rules_request/jueuhf0/\nOLD\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://m2.nsimg.net/biopic/240x180/35927427\nhttps://m2.nsimg.net/biopic/original4x3/81765358"
},
"OBI.ru": {
"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\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1660#20\n\n!!!\nКурсор наводить на название товара.\n\nПРИМЕРЫ\nhttps://obi.ru/search?search=DAEWOO\nhttps://obi.ru/sad-i-dosug/sadovaja-mebel/nabory-sadovoj-mebeli\nhttps://obi.ru/vannaja-komnata/smesiteli-i-dushevoe-oborudovanie"
},
"OK.ru_album": {
"link": "(ok\\.ru\\/\\w+\\/album\\/\\d+\\/(\\d+))",
"url": "$1",
"res": ":\nconst rx1 = new RegExp(`img src=\"([^\"]+)\" class=\"image-layer_img image__4rmea\" loading=\"eager\" data-photo-id=\"${$[2]}`, \"g\");\nconst still = rx1.exec($._);\nif (still) return(still[1]);\n\nconst rx2 = new RegExp(`data-photoId=\"${$[2]}\" data-gifSrc=\"([^\"]+)`, \"\");\nconst gif = rx2.exec($._);\nif (gif) return(gif[1]);\n\nreturn;",
"note": "gpl2731\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1120#13\nOLD\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=2220#17\n\nПРИМЕРЫ\nhttps://ok.ru/kinofilmu/album/52319206834266?st._aid=Groups_Photo_Album_List_openAlbum&st._aid=GroupAlbumsList_Albums_OverTitle"
},
"okccdn-CDN": {
"img": "^(a?k(?:\\d|cdn)\\.okccdn\\.com/php/load_okc_image\\.php/images/)(?:16/)?(?:\\d+x\\d+/)+?\\d/",
"to": "$10/"
},
"Old.REDDIT_i.redd.it_gif": {
"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 + '#mp4', '[' + 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.node\nif(!n) return '$&'\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 '$&'",
"note": "Dulus_No\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)\n\nEXAMPLES\nhttps://old.reddit.com/r/gifs/"
},
"Old.REDDIT_v.redd.it": {
"link": "^(?:v\\.redd\\.it|(?:[^.]{2,5}\\.)?reddit\\.com/link/[\\da-z]+/video)(/[\\da-z]+).*",
"loop": 1,
"url": "data:,$0",
"res": ":\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 'imagus://extension'",
"img": "^preview(\\.redd.it/[^?]+)\\?.*",
"to": ":\nreturn $[0].indexOf('format=mp4')>0 ? $[0]+'#mp4' : 'i'+$[1]",
"note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/1cb21vr/comment/l102c4r\nOLD\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/kymwf6u\nhttps://www.reddit.com/r/imagus/comments/zznk76/comment/j2ea0a9\n\n!!!\nВместе с фильтром [Extension] включает проигрывание роликов со звуком.\n==\nWith [Extension] enables playback with sound.\n\nEXAMPLES\nhttps://old.reddit.com/r/all/\nhttps://old.reddit.com/r/Grocerycost/comments/1cacltn/7512_in_berlingermany_single_but_i_regularly_get/"
},
"Oldi.ru": {
"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\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1620#18\nOLD\nhttp://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-p": {
"useimg": 1,
"link": "^(([^\\.]+\\.)?[^\\.]+\\.)?olx\\.\\w\\w\\/\\w?(\\/\\w+)?/(obyavlenie|oferta)\\/[^\\/]+\\.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": "Baton34V\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1800#5\nOLD\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1000#17\n\n\n!!!\nКурсор наводить на область чуть ниже названия товара (вся карточка товара).\n+\nHover the cursor over the area just below the product name (the entire product card).\n\nПРИМЕРЫ\nhttps://fanatik.olx.ua/\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/\nhttps://www.olx.ua/list/q-трубогиб/"
},
"Olx_pm-p": {
"link": "^(?:slando\\.ua|olx\\.by|olx\\.ua)/attachment/attachments_.+\\.(jpe?g|png|gif)/$",
"note": "Rodny\n\nПРИМЕРЫ / EXAMPLES\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\nEXAMPLES\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": {
"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\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=640#7\nOLD\nhttp://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/"
},
"OpenDirViewer-x-p-b": {
"link": "^opendirviewer\\.net\\/view.php\\?url=(.*)",
"loop": 1,
"url": ": $[1]",
"res": ":\nvar i=$._.match(RegExp(/href=\"([^\"]+)\\.(?:jpe?g|a?png|gifv?|bmp|svgz?|web[pm]|og[gv])/gi));\nvar baseurl=$[1].replace(new RegExp('((https?://)?[^/]*).*','gi'), '$1')\nconsole.log($[1]+\"->\"+baseurl)\ni=i.map(function (item) { return [item.replace(/href=\"/gi, baseurl+\"/\"), '']; });\nreturn i;",
"note": "regexfan1245\nhttps://www.reddit.com/r/imagus/comments/r6rblo/sieve_for_opendirviewernet/\n\n\nEXAMPLES\nhttps://opendirviewer.net/latest_100.php\nhttps://opendirviewer.net/latest_500.php"
},
"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\nhttp://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/"
},
"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==\nGalleries are 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"
},
"Otomoto.pl": {
"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"
},
"OSzone.net": {
"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/\nhttp://soft.oszone.net/subcat/53/?page=7\nhttp://soft.oszone.net/program/11113/Display_Tuner/"
},
"Otzovik": {
"useimg": 1,
"link": "^otzovik\\.com/review_\\d+.html$",
"res": ":\nreturn [...$._.matchAll(/<img (?:class=bigimg\\s+)?src=\"([^\"]+)\"\\s+loading=\"lazy\"\\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/l3op0bk\nOLD\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=2020#21\n\nПРИМЕРЫ\nhttps://otzovik.com/reviews/zeleniy_goroshek_greenola/\nhttps://otzovik.com/reviews/elektronnaya_kniga_pocketbook_iq_701/gallery/"
},
"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)\nhttp://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\nhttps://forums.overclockers.ru/viewtopic.php?p=14169428&sid=85b6151a19c27d0e319103f46cac94bd#p14169428"
},
"OZON.ru": {
"link": "^(ozon\\.ru/(?:product/[\\w-]+|context/detail/id/\\d+))/.*?(?:\\?|$)",
"res": ":\nconst r = []\ntry {\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 = $[0].match(/^(.+?\\/product\\/[\\w-]+)(\\/|$)/)?.[1] + '/reviews/?sort=usefullness_desc';\n const x = new XMLHttpRequest;\n x.open('GET', rUrl, false);\n x.send();\n const data = JSON.parse(x.responseText?.match(/<div id=\"state-webListReviews.+?data-state='(.+?)'/i)[1]);\n\n data.reviews.forEach(f => {\n const c = f.content;\n [...c.photos||[], ...c.videos||[]].forEach(p => {\n const text = ['&#11088;' + c.score];\n if (c.comment) text.push(c.comment);\n if (c.positive) text.push('&#128077;&#127995; ' + c.positive);\n if (c.negative) text.push('&#128078;&#127995; ' + 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+|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\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=2560#4\nOLD\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=2480#7\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=2238&limit=1&m=1#1\n\n\n\n!!!\nВ поисковой выдаче подгружает не только фото товара, но и фото сделанные покупателями + отзывы.\n+\nКурсор рекомендуется наводить на описание товара.\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/"
},
"Paixin": {
"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"
},
"Parovoz": {
"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\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1120#19\nOLD\nhttp://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=&REGION=RU22\n+\n(ссылки на фото в комментариях (черные стрелки) / links to photos in the comments (black arrows))\nhttps://parovoz.com/newgallery/pg_blog.php?FROM=650&LNG=&REGION=RU22"
},
"Pasteboard": {
"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/"
},
"PasteNow|paste.pics": {
"useimg": 1,
"link": "^(?:[a-z]{2}\\.)?paste(?:now)?\\.(?:pics|ru)/(\\w+).*",
"img": "^i\\d+?\\.paste\\.pics/(\\w+)\\..+",
"to": "//i.paste.pics/$1.#png jpg#",
"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=720#15\n\nПРИМЕРЫ\nhttps://www.reddit.com/domain/pastenow.ru/new/\nhttps://www.reddit.com/domain/paste.pics/new/\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1360#11"
},
"PBase": {
"link": "^(pbase\\.com/)(?:[^/]+/)?image(/\\d+).*",
"res": "imgurl=\"([^\"]+)\" imgx=\"\\d+\" imgy=\"\\d+\" imgsize=\"original\"",
"img": "^m\\d\\.i\\.(pbase\\.com/).+(/\\d+).*",
"note": "gpl2731\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1120#13\nOLD\nhttp://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": {
"link": "^pepper\\.ru/[a-z]+/[\\w-]+$",
"res": ":\nreturn JSON.parse($._.match(/window.__INITIAL_STATE__\\s*=\\s*(.+?);\\n/)[1]).threadDetail.galleryImages.map(i=>['//static.pepper.ru/'+i.path+'/'+i.name+'.jpg'])",
"img": "^(static\\.pepper\\.ru/threads/raw/\\w+/[\\d_]+)/re/\\d+x\\d+",
"to": "$1",
"note": "Imagus_fan\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\nhttps://www.pepper.ru/search?q=samsung"
},
"Phica.eu-x-b": {
"img": "^phica\\.eu/forums/attachments/[^/]+jpg\\.\\d+/",
"to": "$&",
"note": "https://www.reddit.com/r/imagus/comments/c4hnv6/comment/es0qn42\n\nEXAMPLES\nhttps://www.phica.eu/forums/media/page-4\nhttps://www.phica.eu/forums/media/categories/coppie.9/"
},
"PhoneArena": {
"link": "^phoenarenaalbum/(.+)",
"url": "data:,$1",
"res": ":\nreturn $[1].split(\"!\").map(i=>[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?'phoenarenaalbum/'+n:$[2]?`//${$[1]}${$[2]}image${$[4]}`:'//'+$[1]+$[3]+$[4]",
"note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/kuu2fo0\n\nEXAMPLES\nhttps://www.phonearena.com/news/Best-Android-browsers-2015-edition-speed-features-and-design_id67848#media-179533\nhttps://www.phonearena.com/reviews/galaxy-tab-s9-review_id5887\nhttps://www.phonearena.com/reviews/iphone-14-vs-galaxy-z-flip-4_id5509"
},
"Photo.Sibnet.ru": {
"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(внешние ссылки / external links)\nhttps://photo.sibnet.ru/red/ft2270385/\nhttps://photo.sibnet.ru/alb53715/ft2271849/"
},
"Photo-Forum.net": {
"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": {
"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ПРИМЕРЫ\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1360#11"
},
"Perekrestok.ru": {
"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\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1940#9\nOLD\nhttp://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"
},
"Performance-PCs-p": {
"link": "^performance-pcs\\.com\\/[^.]+\\.html$",
"res": ":\nconst t = ($._.match(/<meta name=\"description\" content=\"([^\"]+)/)||[,''])[1]\nreturn [...$._.matchAll(/<span class=\"alternate_image_url\">([^<]+)/g)].map((i,n)=>[i[1],(!n?t:'')])",
"note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/130svfu/comment/jyduj9s\nOLD\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=820#11\n\nEXAMPLES\nhttps://www.performance-pcs.com/search/logisys?p=4\nhttps://www.performance-pcs.com/chassis/midtower-chassis.html?p=3\nhttps://www.performance-pcs.com/system-hardware/motherboards.html?brand=3340"
},
"Photo.net": {
"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": {
"link": "photo\\.i\\.ua\\/(?:user|channel)\\/(?:\\d+\\/)*",
"res": ":\nvar i = $._.indexOf('<div class=\"block_gamma_bg image_viewer');\nif(i<0) { return null; }\nvar t = $._.indexOf('<div class=\"viewer_toolbar clear\">', i);\nif(t<0) { return null; }\nvar res = [];\nvar re = /bsrc=\"([^\"]+)\"/gi\nvar data=$._.substring(i,t);\nvar a = re.exec(data);\nif (a == null) {\n re = /src=\"([^\"]+)\"/gi\n a = re.exec(data);\n}\nwhile(a) {\n res.push([a[1]]);\n a = re.exec(data);\n}\nreturn res;\n",
"note": "destiny child\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1600#9\nOLD\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=1540#12\n\nПРИМЕРЫ\nhttps://photo.i.ua/user/829348/\nhttps://photo.i.ua/user/829348/259729/\nhttps://photo.i.ua/user/829348/99304/"
},
"Photoforum.ru": {
"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.2023.0.0.0.0.0.6.en.html\nhttps://www.photoforum.ru/photos.3.0.0.0.0.0.0.date.desc.l.2023.2.0.0.0.0.1.en.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": {
"img": "^((?:kura|art)\\d+\\.photozou\\.jp/pub/\\d+/\\d+/photo/\\d+).*\\.",
"to": "$1_org.",
"note": "EXAMPLES\nhttp://photozou.jp/photo/pickup\nhttp://photozou.jp/photo/tagged/pub/%B2%D6%B2%D0"
},
"Pic.Maxiol": {
"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ПРИМЕРЫ\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1360#11"
},
"pic.oscdn|club.Osinka.ru": {
"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/picture-546456?p=2418841\nhttps://club.osinka.ru/picture-169860?p=1135123\nhttps://club.osinka.ru/images.php?q=актуально&f=t&tid=19641&start=80\nhttps://club.osinka.ru/topic-77044-imgs"
},
"Pic4a.ru": {
"link": "^pic4a\\.ru\\/[\\w-]{4}\\/?$",
"res": "<a class=\"a_img\" href=\"(https?:\\/\\/pic4a\\.ru\\/\\w+\\/[\\w-]+\\.\\w+)\">",
"img": "^(pic4a\\.ru\\/\\d+\\/[\\w-]+)_scale_150x150\\.(jpe?g|png|bmp|gif)$",
"to": "$1# .jpg .png .bmp .jpeg .gif#",
"note": "Baton34V\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=1080#20\n\nПРИМЕРЫ\nhttp://forum.ru-board.com/topic.cgi?forum=62&topic=31146&start=1340#6"
},
"Pic4Net|Geekpic": {
"link": "pic4net\\.com|geekpic\\.net/pm-\\w+\\.html",
"res": "<a href=\"([^\"]+)\" class=\"download-img\"",
"note": "Baton34V\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=660#10\n\nПРИМЕРЫ\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=40#15\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=11411&start=1480#3"
},
"Pic-Upload.de": {
"link": "^pic-upload\\.de/view-\\d+",
"res": "' src='([^']+)",
"note": "EXAMPLES\nhttps://www.reddit.com/domain/pic-upload.de/new/"
},
"Picbit": {
"link": "picbit\\.net/view/[^.]+\\.jpg",
"res": "<p><a href=\"(/image/[^\"]+)",
"note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/130svfu/comment/jn8v5j7"
},
"Hoff.ru": {
"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\nhttp://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\nhttps://hoff.ru/catalog/tovary_dlya_doma/osveschenie/lustry_i_potolochnye_svetilniki/nastenno_potolochnye_svetilniki/\nhttps://hoff.ru/catalog/kresla/?page=all&direct=redirect_from_search&query=Кресла"
},
"Picabox.ru": {
"link": "picabox\\.ru/pic/\\d+",
"res": "<meta property=\"og:image\" content=\"([^\"]+)\"",
"note": "Baton34V\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3560#13\n\nПРИМЕРЫ\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3560#11"
},
"PicCash": {
"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\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=260#7\nOLD\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3800#10\n\n\nПРИМЕРЫ\nhttps://piccash.net/photos"
},
"picforall.ru": {
"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ПРИМЕРЫ\nhttp://pornolab.net/forum/viewtopic.php?t=2645304\nhttp://pornolab.net/forum/viewtopic.php?t=2644662\nhttp://pornolab.net/forum/viewtopic.php?t=2644652"
},
"Picrew": {
"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://picrew.me/share?cd=RJ0bvFOIOY\nhttps://picrew.me/share?cd=iuINQYftuX\nhttps://picrew.me/en/search?q%3At=girl&s%3At=2&page=4"
},
"PicState": {
"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\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1360#11"
},
"PicturePush": {
"img": "^((?:www\\d?\\.)?picturepush\\.com/photo/\\w/\\d+/)(?!img)[^/]+(/[^?]+).*",
"to": "$1640$2",
"note": "EXAMPLES\nhttps://picturepush.com/explore\nhttps://picturepush.com/taken/2022-10-05\nhttps://polonus.picturepush.com/album/46654/p-Rodzina%2C-dom.html\nhttps://www.reddit.com/domain/picturepush.com/new/\n+\nвидео / video\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1360#11"
},
"PictureShack.ru": {
"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": "<img [^>]+ data-large-image=\"(http://c?s(?:\\d+)?\\.pikabu\\.ru/post_img[^\"]+)\"",
"img": "^(c?s(?:\\d+)?\\.pikabu\\.ru/post_img/)(\\d{4}/\\d{2}/\\d{2}/\\d+/[0-9_]+)(\\.(?:jpe?g|png|gif|bmp|webp))",
"to": "$1$2.gif\n$1big/$2.jpg\n$1big/$2$3\n$1$2$3",
"note": "Rodny\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=1700#20\n\n!!!\nВидео пока не поддерживается.\n\nПРИМЕРЫ\nhttps://pikabu.ru/tag/Зима/hot?page=3\nhttps://pikabu.ru/story/menyaem_vzglyad_na_sozdanie_postov_3815560\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1360#11"
},
"Pikabu_comments": {
"img": "^(c?s(?:\\d+)?\\.pikabu\\.ru/images/)previews_gif_comm(/.+\\.gif)$",
"to": "$1big_size_comm$2\n$1big_size_comm_an$2",
"note": "Rodny\n\nПРИМЕРЫ\nhttps://pikabu.ru/story/kutila_9309829#comments\nhttps://pikabu.ru/story/nu_zhe_podpryigni__2184010#comments"
},
"Pikky": {
"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\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1360#11"
},
"PimpAndHost-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ПРИМЕРЫ / 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Для \"скриншот от пользователя\".\n\nПРИМЕРЫ\nhttps://pingvinus.ru/"
},
"Pinterest": {
"useimg": 1,
"link": "^(?:[a-z]{2}\\.)?pinterest(?:\\.[a-z]{2,3}){1,2}/pin/[\\w-]+/$",
"ci": 3,
"loop": 3,
"res": ":\nconst res = [];\nconst data = JSON.parse(/<script id=\"__PWS_DATA__\"[^>]*>({.+?)<\\s*\\/\\s*script/.exec($._)[1]);\nconst pins = data.props.initialReduxState.pins;\nfor (const pin of Object.values(pins)) {\n let url;\n if (pin.videos) {\n const list = pin.videos.video_list || {};\n url = (list.V_1080P || list.V_720P || list.V_HLSV4)?.url;\n }\n\n if (!url) {\n url = pin.image_medium_url.replace(/\\/\\d+x\\//, '/736x/');\n }\n\n if (url) {\n res.push([url, pin.rich_metadata?.description?.trim() || pin.description.trim() || pin.closeup_description]);;\n }\n}\n\nreturn res;\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)[^.]+)?(?=\\.))(.*)",
"to": ":\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}\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)) || ''",
"note": "hababr\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=2000#14\n\nEXAMPLES\nhttps://www.reddit.com/domain/pinterest.com/\nhttps://ru.pinterest.com/sadlovernovels/cars/\nhttps://ru.pinterest.com/search/pins/?q=cackes&rs=typed\nhttps://ru.pinterest.com/search/videos/?q=cars&rs=filter"
},
"PixAI.art": {
"link": "^pixai\\.art/artwork/\\d+",
"res": "\"og:image\" content=\"([^\"]+)",
"note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/15dz344/comment/jubjesu\n\n!!!\nКартинки в профиле автора увеличить нельзя / The 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-1633876433281391791/artworks/"
},
"Pixelup": {
"useimg": 1,
"link": "pixelup\\.net/image\\.html\\?[^.]+.jpg",
"res": ":\nreturn $._.match(/<input type=\"text\" value=\"(https?:\\/\\/pixelup\\.net\\/images\\/[^\"]+)/)[1].replace(\"/p.\",\"/r.\")",
"img": "(pixelup\\.net/images/[^/]+/[^/]+/[^/]+/[^/]+/)p(\\.[a-z]{3,4})",
"to": "$1r$2",
"note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/130svfu/comment/jn8v5j7\n\nEXAMPLES\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1360#11"
},
"PiXhost": {
"useimg": 1,
"link": "^(pixhost\\.)(?:to|org)(/(?:gallery|show)/(?:\\d+/|\\w+))",
"url": "$1to$2",
"res": ":\nreturn /\\/gallery\\//.test($[2])?[...$._.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|img)(\\d+\\.pixhost\\.)(?:to|org)/(?:image|thumb)(s/.+)",
"to": "img$1to/image$2",
"note": "imqswt\nhttps://www.reddit.com/r/imagus/comments/130svfu/comment/jspp9q8\n\nПРИМЕРЫ / EXAMPLES\nhttps://www.reddit.com/domain/pixhost.to/new\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1369&limit=1&m=1#1"
},
"PIXIV-x-p": {
"link": "^(pixiv\\.net/)(?:(?:\\w\\w/)?artworks/|member_illust\\.php\\?mode=(?:[^&]+&)+?illust_id=)(\\d+).*",
"loop": 1,
"url": "$1ajax/illust/$2",
"res": ":\n$=JSON.parse($._)\nif($.error)return !1\nvar i=0,r=[],$=$.body\nfor(;i<$.pageCount;++i) r.push([$.urls.original.replace('_p0', '_p' + i)])\nr[0][1] = '['+$.title+' by ' + $.userName + ' | ' + new Date($.uploadDate).toLocaleString() + '] ' + $.description\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": "!!!\nДля показа внешних ссылок необходимо правило для SMH (см.ЧаВо, п.12).\nВ настоящее время есть проблемы с сохранением контента при использовании хоткея, рекомендуется пока использовать контекстное меню или сохранение перетаскиванием.\n==\nTo display external links, you need a rule for SMH (see FAQ, p.12).\nCurrently, there are problems with saving content when using a hotkey, it is recommended to use the context menu for now.\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": {
"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": {
"img": "^imageproxy\\.pimg\\.tw/zoomcrop\\?url=([^&]+).*",
"dc": 2,
"loop": 2,
"to": "$1"
},
"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": "Rodny + Baton34V(fix)\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=580#13\n\nПРИМЕРЫ\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/"
},
"Porevo.info-x-p": {
"link": "porevo\\.info\\/view\\.php\\?item=\\d{7}",
"res": "style=\"background-image: url\\((https?:\\/\\/(?:\\w\\.)?porevo\\.info\\/pics\\.php\\?q=[\\w%]+)\\)",
"note": "Baton34V\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=1540#20\n\n!!!\nПоддержки видео на данный момент нет.\n==\nThere is no video support at the moment.\n\n\nПРИМЕРЫ\nhttps://porevo.info/index.php?action=video\nhttps://porevo.info/index.php?action=photos&n=2\nhttps://porevo.info/index.php?action=photos&filter=last"
},
"Porn.com-x-b": {
"link": "^(?:[a-z]*\\.)?porn.com\\/videos\\/.+",
"res": "url:\"([^\"]+)",
"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.porn.com/search?sq=elsa\nhttps://www.porn.com/stepsister\nhttps://www.porn.com/brunette-porn?pg=5"
},
"Porn3dx-x": {
"link": "^porn3dx\\.com/post/\\d+/[\\w-]+",
"res": ":\nlet i = $._.indexOf('<div class=\"content-wrapper\">');\nif(i<0) { return null; }\nlet t = $._.indexOf('<div class=\"actions-container\">', i);\nif(t<0) { return null; }\nlet res = [];\nlet re = /data-full-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;",
"note": "Baton34V\n\n!!!\nПоддержки видео пока нет.\n==\nVideo currently not supported.\n\n\nEXAMPLES"
},
"PornBox-x": {
"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\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3780#21\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"
},
"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ПРИМЕРЫ / 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_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"
},
"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ПРИМЕРЫ / 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_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\nhttp://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://pornhub.com/view_video.php?viewkey=646473788a36e\nhttps://www.pornhub.com/model/throatterroristxx\nhttps://rt.pornhub.com/channels/mylf"
},
"PornWorld_trailer-x": {
"link": "^pornworld.com/watch/\\d+/.+",
"res": ":\nconst max_resolution = 1080;\n\nconst re = /source src=\"(?<url>.+?mp4.*?)\" size=\\\"(?<res>\\d+)\"/g\nconst mp4s = Array.from($._.matchAll(re))\n .map(a => ({ res: Number(a.groups.res), url: a.groups.url }))\n .filter(a => a.res <= max_resolution)\n .sort((a, b) => a.res - b.res);\n\nreturn mp4s.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=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"
},
"Positronica.ru": {
"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\nhttp://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.cc": {
"link": "^(postimg\\.cc/(gallery/)?\\w{7,8}/?$)|^(?:i\\.(postimg\\.cc/\\w{7,8})/\\S+$(?<!\\?dl=1))",
"url": ": $[1] || $[3]",
"res": ":\nif (!$[2]) return [ $._.match(/http[^?\"]+\\?dl=1/)[0], $._.match(/=\"imagename\">([^<]+)/)[1] ]\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\\.postimg\\.cc/.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 (!/postimg\\.cc/.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 => !/postimg\\.cc/.test(s) ? P.orig__preload(s) : P.orig__preload(await P.get(s))\n}\n\nreturn Object.entries(JSON.parse($._.match(/embed_value=([^}]+})/)[1])).map(e => [ 'https://postimg.cc/' + e[0], e[1][0] ])",
"note": "64h\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=2240#6\nOLD\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=2200#17\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=880#8\n\n!!!\nВнешние ссылки на галереи в браузере FireFox могут не работать.\n==\nExternal links to galleries in the FireFox browser may not work.\n\n\nПРИМЕРЫ / EXAMPLES\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=2200#17\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50839&start=3220#15"
},
"Powerlogo.ru": {
"link": "^powerlogo\\.ru/show-image\\.php\\?id=[0-9a-z]+$",
"res": "value=\"\\[URL=http://powerlogo\\.ru\\] \\[IMG\\]([^\\[]+)\\[/IMG\\]\\[/URL\\]\">",
"note": "Rodny\n\n!!!\nsimilar: powerlogo.ru\n\nПРИМЕРЫ\nhttps://powerlogo.ru/vandavizhn-5-seriya-novye-foto-podrobnosti.html"
},
"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\nhttp://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-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\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=400#8\nOLD\nhttp://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": {
"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\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1980#8\nOLD\nhttp://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": {
"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\nhttp://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"
},
"Profi.ru": {
"img": "^(cdn\\.profi\\.ru/xfiles/\\wfiles/(?:\\d+/)?\\w+\\.(?:jpg|png))\\S+",
"to": "$1",
"note": "64h\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=2180#20\n\nПРИМЕРЫ\nhttps://profi.ru/remont/electromontajnye-raboty/?seamless=1&tabName=PROFILES&searchTerm=электрик\nhttps://orel.profi.ru/remont/electromontajnye-raboty/?seamless=1&tabName=PROFILES&searchTerm=%FD%EB%E5%EA%F2%F0%E8%EA&profileId=PlptonovEN&profileTabName=reviews&fromSection=page_listing\nhttps://vologda.profi.ru/remont/santehnika/?seamless=1&tabName=PROFILES&searchTerm=%F1%E0%ED%F2%E5%F5%ED%E8%EA&gpId=&profileId=PetrovUV6&profileTabName=reviews&fromSection=page_listing"
},
"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 + by 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"
},
"PronPic-x": {
"img": "(pronpic\\.org\\/pic\\/\\d+\\/\\d\\d\\/\\d\\d\\/)th_(\\d+\\.\\w+)",
"to": "$1$2",
"note": "Baton34V\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=2080#9\n\nПРИМЕРЫ / EXAMPLES\nhttps://pronpic.org/?p=4"
},
"public-pic.de": {
"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\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1360#11"
},
"puush.me|puu.sh": {
"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.questionablecontent.net/archive.php\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/solutions/deponiaj_1.php\nhttps://questzone.ru/solutions/eyeofaraj_3.php#15"
},
"Rambler.ru": {
"link": "^images\\.rambler\\.ru\\/.+image_url=([^&]+).*",
"dc": 1,
"to": "$1",
"note": "64h\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1060#13"
},
"RanmaBooks-x": {
"useimg": 1,
"link": "^ranmabooks\\.com/([^/]+/)*?image\\.php\\?",
"res": "src=\"([^\"]+)\" alt=\"([^\"]+)\" /",
"img": "^(ranmabooks\\.com/([^/]+/)+?)RHGt/(?!index\\.)",
"to": "$1",
"note": "!!!\nНужен аккаунт."
},
"Rasfokus.ru": {
"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": {
"img": "^((avatar|image)s\\d?-[a-z].ravelrycache.com/)(?:(flickr/[^?]+)_[a-z]|((?:uploads/)?[^/]+/\\d+/)(?:webp/)?([^.]+)_(?:small(?:2?|_best_fit)|medium2?|square|large)(?:\\.(\\w+))?(?:#(\\w+))?)",
"to": ":\nreturn $[1] + ($[3] || ($[4] + $[5] + ($[2]=='avatar'?'_xlarge':'# _b#') + ($[7]||$[6] ? '.' + ($[7]||$[6]) : '')))",
"note": "EXAMPLES\nhttps://www.ravelry.com/designers/evelyn-koerselman\nhttps://www.ravelry.com/designers/ashlee-brotzell?page=2\nhttps://www.ravelry.com/patterns/sources/elaine-krenzeloks-ravelry-store/patterns\nhttps://www.ravelry.com/yarns/library/hobby-lobby-i-love-this-yarn-sport-weight-solids"
},
"RBT.ru": {
"link": "(\\W+\\.)?rbt\\.ru/cat/[\\w-]+/[\\w-]+/[\\w-]+/",
"res": ":\nlet i = $._.indexOf('<div class=\"item-card__carousel-inner');\nif(i<0) {return null; }\nlet t = $._.indexOf('</ul>', i);\nif(t<0) {return null; }\nlet res = [];\nlet re = /data-img-gal=\"([^\"]+)\"/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\\.rbt\\.ru/images/gen/item_image/image/\\d+/\\d+/\\w+\\.jpg",
"to": ":\nreturn this.node.parentNode.parentNode.getAttribute('data-img-gal');\n",
"note": "Baton34V\nhttp://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/\nhttps://vladivostok.rbt.ru/cat/kuhonnaya_tehnika/elektricheskie_plity/"
},
"Recordit": {
"link": "^recordit\\.co\\/\\w{10}",
"res": "<source src=\"([^\\\"]+)\"",
"note": "Baton34V\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=2220#5\n\nПРИМЕРЫ / EXAMPLES\nhttps://www.reddit.com/domain/recordit.co/new"
},
"REDDIT_gallery": {
"link": "^(reddit\\.com/)gallery/([\\da-z]+).*",
"url": "https://www.$1by_id/t3_$2.json",
"res": ":\n$=JSON.parse($._).data.children[0].data\nreturn ($.gallery_data && $.gallery_data.items || []).map(function(c, i) {\n var u=$.media_metadata[c.media_id].s\n return [\n (u.u ? u.u.replace(/preview(\\.redd.it\\/[^?]+).*/, 'i$1') : (u.mp4 ? u.mp4 + '#mp4' : u.gif)),\n (!i ? '[' + new Date($.created_utc*1e3).toLocaleString() + ' | ' + $.title + '] ' : '') + (c.caption || '')\n ]\n})",
"note": "ПРИМЕРЫ / EXAMPLES\nhttps://www.reddit.com/domain/reddit.com/\nhttps://www.reddit.com/r/all/?feedViewType=compactView"
},
"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/'+$[1]\n\nif ($[2] !== 0) return $[2] == '#mp4' ? $[0] : $[1] + '#mp4'\nvar u, p, c, n = window.location.hostname.slice(-10) == 'reddit.com' && this.node\n\nif (!n) return ''\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; 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(/&amp;/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.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.parentElement.querySelector('faceplate-img:not(.avatar, .shreddit-subreddit-icon__icon, .absolute, .flair-image)'))\n{\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_' + $[1] + '.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\n\nreturn u && /^(https?:)?\\/\\/i\\.redd\\.?it/.test(u) ? u : ''",
"note": "hababr + imqswt (edit)\nhttps://www.reddit.com/r/imagus/comments/1bp0x7a/comment/kz7kwi0\nOLD\nhttps://www.reddit.com/r/imagus/comments/1c1clq6/comment/kz2y0gp\nhttps://www.reddit.com/r/imagus/comments/1bp0x7a/comment/kyw4b4s\nhttps://www.reddit.com/r/imagus/comments/1bp72kd/comment/kwypr6z\n\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\nEXAMPLES\nhttps://www.reddit.com/r/ipl/?feedViewType=cardView\nhttps://sh.reddit.com/r/IRLgirls/?feedViewType=classicView\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[0]\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\nif ($.url.includes($.permalink)) return true;\n\nreturn $.is_video || $.is_gallery || this.TRG?.matches?.('faceplate-img') || ['youtube.com', 'youtu.be'].includes($.domain) ? { loop: $.url } : true",
"note": "hababr\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/kymwf6u\nOLD\nhttps://www.reddit.com/r/imagus/comments/1bp72kd/comment/kwzpsi7\nhttps://www.reddit.com/r/imagus/comments/1bagp1w/comment/ku7m9mc\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\nEXAMPLES\nhttps://sh.reddit.com/r/kpopfap/?feedViewType=cardView\nhttps://sh.reddit.com/r/IRLgirls/?feedViewType=cardView"
},
"REDDIT_thumbs": {
"link": "^rt/\\?(http.+)",
"url": "$1",
"res": ":\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$)",
"loop": 2,
"to": ":\nvar u,n=!$[1]&&this.node,x=n&&n.matches('.Post div>div[role=img]');\nn && (n.title = n.getAttribute('aria-label') || n.title);\nreturn x&&(x=n.closest('.Post')) && (x=x.querySelector('div>a[data-click-id=body][href]'))\n? x.href\n: n&&n.matches('div.link>a.thumbnail>img, .PostThumbnail>img, a>div[role=img]')&&n.parentNode.href ? '//rt/?'+n.parentNode.href : $[0]"
},
"REDDIT_v.redd.it": {
"link": "^(?:v\\.redd\\.it|(?:[^.]{2,5}\\.)?reddit\\.com/link/[\\da-z]+/video)(/[\\da-z]+).*",
"url": "//v.redd.it$1/DASHPlaylist.mpd",
"res": ":\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'",
"img": "^preview(\\.redd.it/[^?]+)\\?.*",
"to": ":\nreturn $[0].indexOf('format=mp4')>0 ? $[0]+'#mp4' : 'i'+$[1]",
"note": "!!!\nНужен для показа ссылок в формате preview.redd.it\n==\nNeeded to display links in the format preview.redd.it\n\n\nПРИМЕРЫ / EXAMPLES\nhttps://www.reddit.com/domain/v.redd.it/new/"
},
"Reddtastic": {
"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": {
"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": {
"link": "^(?:(?:i|v\\d)\\.)?redgifs\\.com/(?:watch|i(?:fr)?)/(\\w+).*",
"url": ": !this.rg_auth ? 'https://api.redgifs.com/v2/auth/temporary' : 'data:,'+$[1]",
"res": ":\nif(!this.rg_auth)this.rg_auth=JSON.parse($._).token\nlet x=new XMLHttpRequest()\nx.open('Get','https://api.redgifs.com/v2/gifs/'+$[1],false)\nx.setRequestHeader(\"Authorization\",\"Bearer \"+this.rg_auth)\nx.send()\nif(x.status!==200)return null\nconst jsn=JSON.parse(x.responseText).gif\nconst 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,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}",
"note": "imqswt\nhttps://www.reddit.com/r/imagus/comments/1cpunoh/comment/l44vysk\nOLD\nhttps://www.reddit.com/r/imagus/comments/16d1ij3/comment/jzsqwwn\n\n\n!!!\nДанный фильтр должен находиться ПЕРЕД фильтром RedGIFs|Gfycat|Gifdelivery-x.\n==\nThis sieve should be placed BEFORE the RedGIFs|Gfycat|Gifdelivery sieve.\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/celebrity"
},
"REDGIFs|Gfycat|Gifdelivery-x": {
"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==\nFor the sieve to work, the SMH is required (see FAQ, p.12).\nIn some cases, you need to hover the cursor over the TITLE or DATE of the video.\n\n\nПРИМЕРЫ / EXAMPLES\nhttps://www.reddit.com/domain/redgifs.com/new\nhttps://www.reddit.com/domain/gfycat.com/new\nhttps://www.reddit.com/domain/gifdeliverynetwork.com/new"
},
"Redlib|safereddit": {
"link": "^((?:libreddit|lr?|red(?:dit(?!\\.com/)|lib)?|rl?|snoo)\\.[^/]+|safereddit\\.com)/(?:r/\\w+/(?:comments/[a-z0-9]+|s)/\\w+|(u(?:ser)?/[\\w-]+))",
"loop": 1,
"url": ": location.hostname===$[1] ? 'data:,'+$[0] : $[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];\nif($[2]){\nlet t = $._.match(/(?:\"user_description\">([^<]+)<.+?)?<label>(Karma)<\\/label>[^<]+<label>(Created)<\\/label>[^<]+<div>([^<]+)<\\/div>[^<]+<div>([^<]+)<\\/div>/s);\nreturn [$._.match(/id=\"user_icon\" src=\"([^\"]+)/)?.[1],[t[1],t[2]+': '+t[4],t[3]+': '+t[5]].filter(Boolean).join(\", \")];\n}\nlet m, t = $._.match(/<div class=\"post_body\"><!-- SC_OFF --><div class=\"md\"><p>(.+?)<\\/p>/s)?.[1]||'';\nm = [...$._.matchAll(/<figure>[^<]+<a href=\"([^\"]+)\".+?<figcaption>[^<]+<p>([^<]*)<\\/p>/gs)].map((i,n)=>[u+i[1],[(!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(/^\\//,u+'/')||'';\nif(use_HLS&&/vid\\/([^/]+)\\/\\d+\\.mp4$/.test(m)){\nm = m.replace(/vid\\/([^/]+)\\/\\d+\\.mp4/,'hls/$1/HLSPlaylist.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>`];\nreturn 'imagus://extension'\n}\nreturn Array.isArray(m) ? m : [m,t]",
"note": "Imagus_fan\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://safereddit.com\nhttps://safereddit.com/r/ufc"
},
"RedTube-x-p": {
"link": "^(.*\\.)?redtube\\.com\\/(\\d{3}.*?)(\\/|\\?|$).*|redtube\\.com/media/mp4.*",
"loop": 1,
"url": ": $[2] ? 'https://www.redtube.com/'+$[2] : $[0]",
"res": ":\nconst max_resolution = 1080;\nif(!/^[{[]/.test($._)){\nreturn $._.match(/\"format\":\"mp4\",\"videoUrl\":\"([^\"]+)/)[1].replace(/\\\\/g,'')\n} else {\nconst vid=JSON.parse($._).filter(i=>parseInt(i.quality)<=max_resolution).sort((a,b)=>parseInt(b.quality)-parseInt(a.quality));\nreturn vid[0].videoUrl\n}\n\n",
"note": "imqswt\nhttps://www.reddit.com/r/imagus/comments/14kvena/comment/jpzgdx8\nOLD\nhttps://www.reddit.com/r/imagus/comments/iv556b/nsfw_bunch_of_sieves_for_popular_adult_site_videos/\n\nEXAMPLES\nhttps://www.reddit.com/domain/redtube.com/"
},
"Regard.ru": {
"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\nhttps://www.regard.ru/catalog/1000/materinskie-platy?search=материнская%20плата%20msi"
},
"Render.ru|Renderu.com": {
"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-x": {
"link": "^renderotica\\.com/gallery/shorturl/\\d+/.+",
"res": ":\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}\nreturn a[1];",
"note": "imqswt\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/kgkj8gu\nOLD\nhttp://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/gallery.aspx\nhttps://www.renderotica.com/gallery/search?searchfor=blond"
},
"Renderotica_store-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}\nreturn res;",
"note": "imqswt\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/kgkj8gu\nOLD\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=2720#3\n\nПРИМЕРЫ / EXAMPLES\nhttps://www.renderotica.com/store.aspx"
},
"Reuters": {
"link": "^reuters(?:agency)?\\.com/(?:[a-z]{2}/licensereuterscontent/\\?utm_medium|(video/).+|null(.*))",
"url": ": $[1]?$[0]:'data:'+Date.now()",
"res": ":\nconst visible_gallery_image_first = true\n\nif($[1]){\nthis.TRG.IMGS_ext_data = [\n'//' + 'data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1920\" height=\"1080\"></svg>',`<imagus-extension type=\"videojs\" url=\"${$._.match(/contentUrl\":\\s*\"([^\"]+)/)[1]}\"></imagus-extension>${$._.match(/\"description\":\\s*\"([^\"]+)/)?.[1]}`\n]\nreturn {loop:'imagus://extension'}\n}else{\nlet a=visible_gallery_image_first\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}\nif(a&&$[2])m=m.concat(m.splice(0,m.findIndex(i=>RegExp(`${$[2].replaceAll('.','\\\\.')}`).test(i[0]))))\nreturn m\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/16khx6t/comment/l108irw\nOLD\nhttps://www.reddit.com/r/imagus/comments/16khx6t/comment/k0wklje\nhttps://www.reddit.com/r/imagus/comments/14b0e93/comment/k033ydb\n\n!!!\nThe cursor should hover over the link below the album - \"Acquire Licensing Rights\". 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-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(/^(.*upload\\/).*\\/([^\\/]+\\/[^.]+\\..*)/,'$1$2'),i[1].replace('_large','_supersize')],!n?t:''])",
"note": "Imagus_fan\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\nhttps://reverb.com/marketplace?product_type=electric-guitars"
},
"Rezat.ru": {
"link": "^rezat\\.ru/[\\w-]+/[\\w-]+/[\\w-]+",
"res": ":\nvar i = $._.indexOf('<ul class=\"gallery__preview-list\">');\nif(i<0) { return null; }\nvar t = $._.indexOf('</ul>', i);\nif(t<0) { return null; }\nvar res = [];\nvar re = /<li class=\"gallery__preview-item\" num=\"\\d+\"><img src=\"([^\"]+)\"/gi\nvar data=$._.substring(i,t);\nvar a = re.exec(data);\nwhile(a) {\n res.push([a[1].replace('preview.','wm/')]);\n a = re.exec(data);\n}\nreturn res;\n",
"note": "Baton34V\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3660#3\n\nПРИМЕРЫ\nhttps://rezat.ru/knifes/universalnye/\nhttps://rezat.ru/kollekcionnye_avtorskie_i_kastomnye_nozhi/kastomnye_nozhi_artklassa/\nhttps://rezat.ru/uhod_obsluzhivanie_i_izgotovlenie_nozhej/instrumenty_i_srva_po_uhodu/"
},
"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/\nhttp://ru.riotpixels.com/games/call-of-duty-infinite-warfare/covers/\nhttp://ru.riotpixels.com/games/call-of-duty-infinite-warfare/artworks/"
},
"RottenTomatoes": {
"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(/\"cast-crew-item-link\">[^<]+<p>([^<]+)<\\/p>.+?<p class=\"p--small\">[^\\w]+([^<]+)/gs)]).flatMap(i=>{if(/Director/.test(i[2]))isDir=true;return !isDir?[[i.name||i[1],i.role||!/^p>/.test(i[2])&&i[2].replace(/\\n\\s*/g,' ').replace(/\\s(Voice)/,' ($1)')].filter(Boolean).join(\" - \")]:[]}).join(\"\\n\").replace(/.+/,'\\n<b>Top Cast</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 plot=$._.description?.replace(/.+/,'\\n<b>Plot</b>\\n$&')\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(/\"pictures-json\"\\s+type=\"application\\/json\">(\\[.+?\\])<\\/script/)?.[1]||'[]').map(i=>[i.srcFull?.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/1b9k30f/comment/ku1yoxj\n\n!!!\nTo view all photos and all videos of a movie/serial, you need to hover over \"View all videos\" and \"View all photos\"/\"View all\" respectively. In the /pictures section itself, the sieve does not work at the moment.\n\nEXAMPLES\nhttps://www.rottentomatoes.com/m/dune_2021\nhttps://www.rottentomatoes.com/tv/the_witcher/s02\nhttps://www.rottentomatoes.com/tv/the_witcher/videos\nhttps://www.rottentomatoes.com/m/poor_things/pictures\nhttps://www.rottentomatoes.com/search?search=snow\nhttps://www.rottentomatoes.com/browse/movies_in_theaters/sort:newest"
},
"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-p": {
"link": "^rozetka\\.com\\.ua/(ua/)?.*",
"res": ":\nvar source = $._.match(/},(&q;images&q;:\\[{.+?}\\]),/)[1].replace(/&q;/gi,'\"');\nvar jso=JSON.parse('{'+source+'}');\nvar res=[];\njso.images.forEach(function(item) {\n res.push([item.original.url]);\n});\nreturn res;\n",
"img": "^i\\d+\\.rozetka\\.ua/goods/\\d+/record_\\d+\\.jpg$",
"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=50874&start=1120#17\n\n\n\nПРИМЕРЫ\nhttps://rozetka.com.ua/all-tv/c80037/unique=50134/\nhttps://rozetka.com.ua/mobile-phones/c80003/filter/preset=budget_smartphones/"
},
"Rule34.dev-x": {
"link": "^rule/34\\?(.*)",
"url": "$1",
"res": ":\nconst proxy_url='https://proxy'+Math.ceil(Math.random()*5)+'.rule34.dev/proxy?q='\nconst proxy=this.use_proxy_url===true?proxy_url:''\nconst jsn=JSON.parse(($._.match(/__NEXT_DATA__\" type=\"application\\/json\">({.+?})</)||[,'{}'])[1]).props?.pageProps.newResult[0]??[]\nconst res=jsn.find(i=>i.id===this.id),ext=/\\.mp4$/.test(res?.file_url)?'#mp4':''\nreturn res?[[['#'+proxy+res.file_url+ext,proxy+res.sample_url+ext]]]:''",
"img": "^(?:rule34\\.dev/[^?]+\\?id=(\\d+)|cdn\\.rule34\\.dev/file/.*)",
"loop": 2,
"to": ":\nthis.use_proxy_url = true // Proxy through rule34.dev. May need to be set to true for some images to display.\nif(!$[1])return $[0]\nconst proxy_url='https://proxy'+Math.ceil(Math.random()*5)+'.rule34.dev/proxy?q='\nthis.id=parseInt($[1]),proxy=this.use_proxy_url===true?proxy_url:''\nif(!this.jsn)this.jsn=JSON.parse((this.node.ownerDocument.body.outerHTML.match(/__NEXT_DATA__\" type=\"application\\/json\">({.+?})</)||[,'{}'])[1]).props?.pageProps.newResult[0]??[]\nconst res=this.jsn.find(i=>i.id===this.id),ext=/mp4$/.test(res?.file_url)?'#mp4':''\nreturn res?'#'+proxy+res.file_url+ext+'\\n'+proxy+res.sample_url+ext:'rule/34?'+$[0]",
"note": "imqswt\nhttps://www.reddit.com/r/imagus/comments/167kjzv/comment/jyxqzci\n\nEXAMPLES\nhttps://rule34.dev/r34/0/score:%3E10+sakimichan\nhttps://rule34.dev/gel/1/score:%3E10+haruno_sakura\nhttps://rule34.dev/r34/0/score:%3E10+orange_background\nhttps://rule34.dev/r34/0/score:%3E10+animated+"
},
"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\nhttp://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"
},
"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|Realbooru-x-p": {
"link": "^(?:realbooru\\.com|rule34\\.xxx)/index\\.php\\?page=post&s=view&id=\\d+",
"res": "href=\"([^\"]+)[^>]+>\\s?Original",
"note": "Baton34V\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=520#21\nOLD:\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=520#11\n\n\n!!!\nPекомендуется установить uMatrix и ограничить рекламу и скрипты на данном сайте:\nhttp://imgur.com/o4TsHki\n==\nRecommend installing uMatrix and limiting ads and scripts on this site:\nhttp://imgur.com/o4TsHki\n\nПРИМЕРЫ / EXAMPLES\nhttps://rule34.xxx/index.php?page=post&s=list&tags=short\nhttps://rule34.xxx/index.php?page=post&s=list&tags=animation\nhttps://realbooru.com/index.php?page=post&s=list&tags=shorts+"
},
"Rule34Video.party-x-p": {
"link": "^rule34video\\.(?:party|com)/videos?/\\d+/.*?/",
"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": "imqswt\nhttps://www.reddit.com/r/imagus/comments/19er8qu/comment/kjh9otu\nOLD\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1429&limit=1&m=1#1\n\n!!!\nФильтр показывает несколько версий ролика разных размеров (от меньшего к большему). Рекомендуется наводить курсор на название ролика.\n==\nThe rule shows several versions of the video of different sizes (from smaller to larger). It is recommended to hover the cursor over the title of the video.\n\nПРИМЕРЫ / EXAMPLES\nhttps://rule34video.party/tags/1898/\nhttps://rule34video.party/search/SHORTS/\nhttps://rule34video.party/categories/ben-10/"
},
"Ruliweb": {
"link": "^bbs\\.ruliweb\\.com/\\w+/(?:/\\d+/)?board/\\d+/",
"res": ":\nreturn [...$._.matchAll(/(?:muted=\"\" playsinline=\"|img loading=\"lazy\" [^>]+)\" src=\"(https?:\\/\\/\\w+\\.ruliweb\\.com\\/(?:img|osi)[^\"]+)\" (?:alt|style)=/g)].map(i=>[i[1]])",
"img": "^([a-z0-9]+\\.ruliweb\\.com/)thumb(/[^.]+\\.)([a-z0-9]+)",
"to": ":\nreturn $[3]==='gif'?$[1]+'ori'+$[2]+'mp4':$[1]+'img'+$[2]+$[3]",
"note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/15sx7lx/comment/jwp1lwo\n\nEXAMPLES\nhttps://bbs.ruliweb.com/family/212\nhttps://bbs.ruliweb.com/news?&page=4\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\nhttps://bbs.ruliweb.com/hobby/board/300075/?search_type=subject&search_key=%EC%95%84%EB%A5%B4%EC%8A%A4%EB%85%B8%EB%B0%94DC"
},
"Overclockers.ru_blog": {
"img": "^overclockers\\.ru\\/st\\/\\w\\/\\d+/-/legacy/blog/(\\d+/\\w+_\\w.\\w+)",
"to": "st.overclockers.ru/legacy/blog/$1",
"note": "Baton34V\nhttp://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"
},
"Rumble": {
"link": "rumble\\.com/.+\\.html",
"res": ":\nlet 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);\nlet myMap = new Map(Object.entries(js.ua.mp4));\nlet maxRes=0;\nlet url=null;\nfor (const key of myMap.keys()) {\n if (maxRes<parseInt(key)) {\n url=myMap.get(key).url;\n }\n}\nreturn url;",
"note": "Baton34V\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=4000#14\n\nПРИМЕРЫ / EXAMPLES\nhttps://www.reddit.com/domain/rumble.com/\nhttps://rumble.com/vh7597-dancing-bears-make-waves-at-the-zoo.html\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=4000#13"
},
"RussianPlanes": {
"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-p": {
"link": "rutracker\\.org/forum/viewtopic\\.php(?!.+&).+",
"res": ":\nlet res = [];\nlet re = /class=\\\"postImg postImgAligned img-right\\\".+?=\\\"([^\\\"]+)/gi;\nlet a = re.exec($._);\nif (a) {\n if (a[1].includes(\"ipicture.ru\") ||\n a[1].includes(\"tinypic.com\") ||\n a[1].includes(\"imageshack.us\") ||\n a[1].includes(\"10pix.ru\") ||\n a[1].includes(\"imgur.com\") ||\n a[1].includes(\"photobucket.com\") ||\n a[1].includes(\"radikal.ru\") ||\n a[1].includes(\"vfl.ru\") ||\n a[1].includes(\"lostpic.tk\")) {\n res.push([\"https://static.t-ru.org/smiles/tr_oops.gif\"]);\n } else {\n res.push([a[1]]);\n }\n} else return null;\nlet substr = $._.substring($._.indexOf(\"Скриншоты\") + 1);\nsubstr = substr.substring(0, substr.indexOf(\"/go/1\"));\nre = /class=\\\"postImg\\\" title=\\\"([^\\\"]+)/gi;\na = re.exec(substr);\nwhile(a) {\n if (a[1].includes(\"ipicture.ru\") ||\n a[1].includes(\"tinypic.com\") ||\n a[1].includes(\"imageshack.us\") ||\n a[1].includes(\"10pix.ru\") ||\n a[1].includes(\"imgur.com\") ||\n a[1].includes(\"photobucket.com\") ||\n a[1].includes(\"radikal.ru\") ||\n a[1].includes(\"vfl.ru\") ||\n a[1].includes(\"lostpic.tk\")) {\n res.push([\"https://static.t-ru.org/smiles/tr_oops.gif\"]);\n } else {\n res.push([a[1]]);\n }\n a = re.exec(substr);\n}\nreturn res;",
"note": "destiny child\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1600#9\n\n\n!!!\nТолько для внешних ссылок. Показывает постер + миниатюры скриншотов.\n==\nOnly for external links. Shows the poster + thumbnails of screenshots.\n\n\nПРИМЕРЫ\n(внешние ссылки / external links)\nhttps://rutracker.org/forum/viewtopic.php?t=5189732\nhttps://rutracker.org/forum/viewtopic.php?t=6287240"
},
"Safebooru|XBooru-x-p": {
"useimg": 1,
"link": "^(?:safebooru\\.org|xbooru\\.com)/index\\.php\\?page=post&s=view&id=\\d+",
"res": "<li><a href=\"(https?://(?:safe|img\\.x)booru\\.[^/]+/+images/[^\"]+)",
"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": "https://www.reddit.com/r/imagus/comments/g7hwtc/safebooru_wont_load_png_files/\n\n\nEXAMPLES\nhttps://www.reddit.com/domain/xbooru.com/new/\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_beta|SANKAKU.app-x-p": {
"link": "^(?:beta\\.sankakucomplex\\.com|sankaku\\.app)/(?:\\w{2}/)?posts?/(?:show/)?(\\w+).*",
"url": ": this.no_auth?'https://chan.sankakucomplex.com/posts/show/'+$[1]:'data:,'+$[0]",
"res": ":\nconst access_token = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' // <- Put Access token here.\n\nif(/^data:/.test($.url[0])){\nif(access_token&&!/^x+$/.test(access_token)&&/sankaku(?:complex\\.com|\\.app)\\//.test(this.node.baseURI)){\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||!/sample_url/.test(x.responseText)){\nthis.no_auth = true\nreturn {loop:$[0]}\n}\n}else{\nthis.no_auth = true\nreturn {loop:$[0]}\n}\n}\nconsole.log($._)\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;\n//if set to false, the largest possible media will be selected rather as opposed to web optimized media\nlet prefer_lowres=true;\nif(prefer_lowres){\n url = ($._.match(/(?:(?:sample|file)_url\": ?|(?:Original:\\s+<a\\s+|id=\"(?:low|high)res\"[^<>]+)href=)\"([^\"]+)/) || [])[1];\n}else{\n url = ($._.match(/(?:file_url\":\"?|(?:Original:\\s+<a\\s+|id=\"highres\"[^<>]+)href=\")([^(,\")]+)/) || [])[1];\n}\nreturn [url];",
"note": "imqswt\nhttps://www.reddit.com/r/imagus/comments/1acru2t/comment/kjydxe2\nOLD\nhttps://www.reddit.com/r/imagus/comments/16gtfgu/comment/k0dobso\nhttps://www.reddit.com/r/imagus/comments/16gtfgu/fast_alt_chan_beta_sankakucomplex_sankaku_sieve/\n\n\n!!!\nfor advanced users:\nTo get a faster site response, you will need a free account on Sankaku. You also need to get a personal token. Go here:\nhttps://reqbin.com/f1coqyku\nand type in your username and password, then click Send. \nScroll down and you'll see \"access_token\": \"zzzzzzzzzz\"\nCopy what is in quotes (your individual key) and paste it into this sieve in the line const access_token. You should get something like this:\nconst access_token = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' // <- Put Access token here.\n+\nOption to switch image size:\nlet prefer_lowres=\ntrue - web optimized / false - maximal\n(by default, the parameter is set true)\n\n\nПРИМЕРЫ / EXAMPLES\nhttps://sankaku.app/?tags=user%3AGrenex\nhttps://sankaku.app/ru?tags=order%3Apopularity%20breasts\n+\nhttps://beta.sankakucomplex.com/?tags=sex"
},
"SANKAKU-x-p": {
"link": "^(?:idol|chan)\\.sankakucomplex\\.com/(?:\\w{2}/)?posts?/(?:show/)?([a-zA-Z0-9]+)",
"url": ": this.no_auth?$[0]:'data:,'+$[0]",
"res": ":\nconst access_token = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' // <- Put Access token here.\n\nif(/^data:/.test($.url[0])){\nif(access_token&&!/^x+$/.test(access_token)&&/sankakucomplex\\.com\\//.test(this.node.baseURI)){\nconst x=new XMLHttpRequest();\nx.open('Get','https://capi-v2.sankakucomplex.com/posts?lang=en&page=1&limit=1&tags=md5:'+$[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}\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;\n//if set to false, the largest possible media will be selected rather as opposed to web optimized media\nlet prefer_lowres=true;\nif(prefer_lowres){\n url = ($._.match(/(?:(?:(?:Original|Resized): <a|<a id=\"(?:low|high)res\"[^>]+?) href=|(?:sample|file)_url\": ?)\"([^\"]+)/) || [])[1];\n}else{\n url = ($._.match(/(?:(?:Original: <a|<a id=\"highres\"[^>]+?) href=\"|file_url\":\"?)([^(,\")]+)/) || [])[1];\n}\nreturn [url];",
"note": "throwawayS251 + imqswt\nhttps://www.reddit.com/r/imagus/comments/17r7qqq/comment/k9ri2ym\nOLD\nhttps://www.reddit.com/r/imagus/comments/17d33ij/comment/k5ycm31\nhttps://www.reddit.com/r/imagus/comments/16gtfgu/fast_alt_chan_beta_sankakucomplex_sankaku_sieve/\n\n\n!!!\nfor advanced users:\nTo get a faster site response, you will need a free account on Sankaku. You also need to get a personal token. Go here:\nhttps://reqbin.com/f1coqyku\nand type in your username and password, then click Send. \nScroll down and you'll see \"access_token\": \"zzzzzzzzzz\"\nCopy what is in quotes (your individual key) and paste it into this sieve in the line const access_token. You should get something like this:\nconst access_token = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' // <- Put Access token here.\n+\nOption to switch image size:\nlet prefer_lowres=\ntrue - web optimized / false - maximal\n(by default, the parameter is set true)\n\n\nПРИМЕРЫ / EXAMPLES\nhttps://idol.sankakucomplex.com/pool/show/80\nhttps://idol.sankakucomplex.com/?tags=video\nhttps://idol.sankakucomplex.com/?tags=kyleigh_reese\nhttps://chan.sankakucomplex.com/?tags=quartet&commit=Search\nhttps://chan.sankakucomplex.com/?tags=contentious_content&commit=Search\nhttps://chan.sankakucomplex.com/?tags=genshin_impact+order%3Apopular+extreme_content&commit=Search"
},
"Saro-Knives.ru": {
"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\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3660#3\n\nПРИМЕРЫ\nhttps://saro-knives.ru/products/category/4725402"
},
"SaveImg.ru": {
"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ПРИМЕРЫ\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=48073&start=3080#15\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=20#14"
},
"SberMarket.ru": {
"link": "sbermarket\\.ru/\\w+/[\\w-]+\\?sid=\\d+",
"res": ":\nvar i = $._.indexOf('<ul class=\"Carousel_container__');\nif(i<0) { return null; }\nvar t = $._.indexOf('</ul>', i);\nif(t<0) { return null; }\nvar res = [];\nvar re = /<source type=\"image\\/png\" srcSet=\"([^ ]+) 1x/gi\nvar data=$._.substring(i,t);\nvar a = re.exec(data);\nwhile(a) {\n res.push([a[1].replace('size-500-500','size-1646-1646')]);\n a = re.exec(data);\n}\nreturn res;",
"note": "Baton34V\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=2100#13\nOLD\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3260#8\n\n!!!\nДля корректной работы фильтра в результатах поиска сначала нужно открыть хотя бы один товар (чтобы сайт сделал \"проверку браузера\").\n\nПРИМЕРЫ\nhttps://sbermarket.ru/multisearch?q=кофе&sid=107\nhttps://sbermarket.ru/multisearch?q=чай%20в%20пакетиках&sid=107"
},
"Screencast": {
"link": "^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": "gpl2731\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1120#17\nOLD\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=2400#19\n\nПРИМЕРЫ / EXAMPLES\nhttps://www.reddit.com/domain/screencast.com/new\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=2400#17"
},
"Screensider": {
"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\nПРИМЕРЫ / EXAMPLES\nhttps://screensider.com/#/album/115/page-4"
},
"Scrolller-x-p": {
"link": "^(?:api\\.)?scrolller\\.com/(?:[^-]+-)+[a-z0-9]+$",
"url": ": this.sAlbumSrc?.length ? `https://api.scrolller.com/api/v2/graphql :{\"query\":\" query AlbumQuery( $url: String! $iterator: String ) { getAlbum(url: $url) { children( iterator: $iterator limit: 50 ) { iterator items { __typename mediaSources { url width height isOptimized } } } } } \",\"variables\":{\"url\":\"${this.sAlbumSrc}\"},\"authorization\":null}` : $[0]",
"res": ":\ndelete this.sAlbumSrc\n$=JSON.parse($._[0]==='{'?$._:JSON.parse($._.match(/scrolllerConfig\\s*=\\s*(\"{.+?}\")<\\//)?.[1].replace(/\\\\'/g,\"'\")||'{}'))\nif($.item?.albumUrl?.length||$.item?.__typename==='Album'){\n$=$.item\nthis.sAlbumSrc=$.albumUrl||$.url\nreturn {loop:'https://scrolller.com'+($.albumUrl||$.url)}\n}\nif($.data){\n$=$.data?.getAlbum?.children?.items\nreturn $?.length?$.map(i=>{i=i.mediaSources;return [i.some(i=>/\\.mp4/.test(i.url))?i.find(i=>/\\.mp4/.test(i.url)).url:i.sort((a,b)=>b.height-a.height)[0]?.url]}):''\n}\n$=$.item?.mediaSources||[];\nif($.some(i=>/\\.mp4/.test(i.url))){\nreturn $.find(i=>/\\.mp4/.test(i.url)).url\n}\nlet l=$.filter(i=>i.height<1080).sort((a,b)=>b.height-a.height)[0]?.url;\n$=$.sort((a,b)=>b.height-a.height)[0]?.url;\nreturn $?[[['#'+$,l]]]:''\n",
"note": "imqswt\nhttps://www.reddit.com/r/imagus/comments/1aoy7k4/comment/l44rpq5\nOLD\nhttps://www.reddit.com/r/imagus/comments/1aoy7k4/comment/kq7ii83\n\nПРИМЕРЫ / EXAMPLES\nhttps://scrolller.com/r/Witcher_NSFW\nhttps://api.scrolller.com/r/imaginarycosmere\nhttps://scrolller.com/r/Witcher_NSFW?filter=albums\nhttps://scrolller.com/r/Witcher_NSFW?filter=videos"
},
"SeaArt.ai": {
"link": "^seaart\\.ai/[^/]+/detail/.*",
"img": "^seaart\\.ai/[^/]+/detail/.*",
"to": ":\nconst n = this.node\nreturn n.src??n.querySelector('img')?.src??n.offsetParent.querySelector('img')?.src",
"note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/15dz344/comment/ju4u4rh\n\nEXAMPLES\nhttps://seaart.ai/explore?keyword=animal\nhttps://seaart.ai/explore?tagId=nature\nhttps://seaart.ai/explore/detail/ci1n6jp4msb0lpnt3m2g\nhttps://seaart.ai/user/Quiron"
},
"SendVid": {
"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\nEXAMPLES\nhttps://www.reddit.com/domain/sendvid.com/new"
},
"Servimg": {
"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\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=260#12\n\nПРИМЕР\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=34533&start=1080#5"
},
"Sex.com-x-p-b": {
"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": "ПРИМЕРЫ / EXAMPLES\nhttps://www.reddit.com/domain/sex.com/new/\nhttps://www.sex.com/iwishufuckme\nhttps://www.sex.com/s/tags?media=videos&q=teen\nhttps://www.sex.com/s/media?media=videos&q=green\nhttps://www.sex.com/user/widdd/fantasy-gifs-2/"
},
"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Нужен аккаунт."
},
"ShemaleHD.sex-x": {
"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/"
},
"ShemalesTube-x-b": {
"link": "^shemalestube\\.com\\/video\\/[a-z-]+\\/",
"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.shemalestube.com/tag/latina/\nhttps://www.shemalestube.com/pictures/tag/amateur/5/\nhttps://www.shemalestube.com/videos/search/CANDY/4/\nhttps://www.shemalestube.com/video/stunning-transexual-kelly-porter-pounds-her-lover-s-tight-ass-/playlist/5727/"
},
"ShemaleTubeVideos-x": {
"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": {
"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!!!\nIt 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 add a rule for uBO:\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/lenovoofficial#product_list\nhttps://shopee.sg/30-pin-USB-data-cable-for-ipad-2-3-4-iP4s-transmission-charging-cables-i.196657818.21735441748\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-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"
},
"Shorpy|Junipergallery": {
"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(/<title>([^:<]+)/)[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"
},
"shottr": {
"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://shottr.cc/s/BUiF/SCR-20220716-scg.png"
},
"ShutterStock-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": {
"link": "^sight\\.photo/photos/\\d+",
"res": "id=\"big_photo\" src=\"([^\"]+)\" alt=\"([^\"]+)\"",
"img": "^(?:(?:icon\\.)?s|img-(?:[^.]+)|cdn)(\\.sight\\.photo/img/(?:[\\da-z]+)/(?:[\\da-z]{3}/\\d+_))(?!xlarge)[^.]+",
"to": "cdn$1#x #large",
"note": "Deathamns + Mag_Keeper (fix)\nhttp://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": {
"link": "^sima-land\\.ru/\\d+/(?:\\w+-)+\\w+/",
"res": ":\nreturn JSON.parse(JSON.parse($._.match(/JSON\\.parse\\((.+?)\\);<\\/script/)?.[1])).media.items.filter(i=>i.src).map(i=>[[i.srcIncreased?.replace(/.+/,'#$&'),i.src]])",
"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/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": {
"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/130svfu/comment/jqhm6hq\nOLD\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3760#17\nhttps://www.reddit.com/r/imagus/comments/jra88g/sieve_for_skeb/\n\n\nEXAMPLES\nhttps://skeb.jp/#new_art_works\nhttps://skeb.jp/works?sort=date&genre=art\nhttps://skeb.jp/works?sort=date&genre=video"
},
"Skrinshoter.ru|skr.sh": {
"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\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=840#5\n\nПРИМЕРЫ\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=820#16\nhttps://www.linux.org.ru/forum/admin/15373790?cid=15374395\nhttps://www.linux.org.ru/forum/admin/15740612"
},
"Skype_web": {
"img": "^(api\\.asm\\.skype\\.com/v1/objects/[^/]+/views/imgpsh_)thumbnail_sx",
"to": "$1fullsize_anim",
"note": "https://www.reddit.com/r/imagus/comments/hkqinj/comment/fyoe8yl\n\n!!!\nНужен аккаунт."
},
"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"
},
"slow.pics": {
"link": "slow\\.pics/(?:c/)?\\w+/?$",
"res": "(?:<img id=\"image\" class=\"[^\"]+\" src=\"|<div class=\"card-body\" >\\[IMG\\])([^\"[]+)",
"note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/130svfu/comment/jn8v5j7\n\nEXAMPLES\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1360#11"
},
"Slushe-x": {
"link": "^slushe\\.com/galleries/[\\w-]+\\.html",
"res": ":\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": "Baton34V\n\n!!!\nВидео фильтр не поддерживает.\n==\nVideo does not support now.\n\n\nEXAMPLES\nhttps://slushe.com/most-viewed\nhttps://slushe.com/most-recent/page2.html\nhttps://slushe.com/artists\nhttps://slushe.com/PAT20XX/page2.html"
},
"SmugMug": {
"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\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1120#17\n\nПРИМЕРЫ / EXAMPLES\nhttp://softoroom.net/topic85478.html\nhttp://softoroom.net/topic85487.html\nhttp://softoroom.net/topic85488.html"
},
"Softpedia": {
"link": "^softpedia\\.com/get/.+/[\\w-.]+\\.shtml",
"res": ":\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": "Baton34V\nhttp://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\nhttps://www.softportal.com/dlcategory-284-1-0-0-0.html"
},
"SoundCloud": {
"img": "^(i\\d\\.sndcdn\\.com/a(?:rtwork|vatar)s-[^.]+-).*",
"to": "$1original.#jpg png gif#",
"note": "EXAMPLES\nhttps://soundcloud.com/search?q=nightcore&query_urn=soundcloud%3Asearch-autocomplete%3Ab7d271a2571b45259b5947fccd4d7cb3\nhttps://soundcloud.com/search?q=cole%20bennett&query_urn=soundcloud%3Asearch-autocomplete%3Abaed2305c2b44536ab0700da03cf7720"
},
"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\nhttp://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/"
},
"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://foto.sp-shopogoliki.ru/images/2023/03/4u14uvscso382ebvxny3.jpg.html\nhttps://foto.sp-shopogoliki.ru/images/2023/03/wneps6wfc96yn7cy5dji.jpg.html\nhttps://foto.sp-shopogoliki.ru/images/2023/03/8r470shklccwfjyn9ng1.png.html"
},
"SpankBang-x-p": {
"link": "^(.*\\.)?spankbang.com\\/(.*?\\/video|[^-]+-.+?\\/playlist)\\/.*",
"res": ":\nconst max_resolution = 2160\n\n$=JSON.parse($._.match(/stream_data\\s*=\\s*({[^;]+})/)?.[1].replaceAll(\"'\",'\"')||'{}')\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 $?.length?[[['#'+$.pop(),$?.[Math.floor($.length/2)]]]]:''",
"note": "imqswt\nhttps://www.reddit.com/r/imagus/comments/iv556b/comment/kb417oa\nOLD\nhttps://www.reddit.com/r/imagus/comments/iv556b/comment/jrdo6wu\nhttps://www.reddit.com/r/imagus/comments/iv556b/nsfw_bunch_of_sieves_for_popular_adult_site_videos/\n\nEXAMPLES\nhttps://spankbang.com/\nhttps://ru.spankbang.com/8i2k2/playlist/mrinmoy?\nhttps://www.reddit.com/domain/spankbang.com/new/"
},
"Sportmaster.ru": {
"link": "sportmaster\\.ru/product/\\d+/",
"res": ":\nvar i = $._.indexOf('<div class=\"swiper-container swiper\">');\nif(i<0) { return null; }\nvar t = $._.indexOf('</div></div></div>', i);\nif(t<0) { return null; }\nvar res = [];\nvar re = /src=\"([^=]+\\/)\\d+_\\d+_\\d+\\/(\\d+\\.\\w+)\"/gi\nlet data=$._.substring(i,t);\nvar a = re.exec(data);\nwhile(a) {\n res.push([a[1] + a[2]]);\n a = re.exec(data);\n}\nreturn res;\n",
"img": "(cdn\\.sptmr\\.ru/upload/resize_cache/iblock/\\w+/)\\d+_\\d+_\\d+/(\\d+\\.\\w+)$",
"to": "$1$2",
"note": "Baton34V\nhttp://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"
},
"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": {
"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)\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3760#11\n\nПРИМЕРЫ / EXAMPLES\nhttp://www.ss.lv/lv/animals/dogs/bichon-maltais/\nhttp://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\\.AppSerp, (.+?)\\),/)[1]);\nconst img_array = data.render.presenter.regions.mainline[0].results;\n\nfor (const n in img_array) {\n for (const key in img_array[n]) {\n if (typeof img_array[n][key] === 'string' && img_array[n][key].includes($[1])) return 'https://www.startpage.com' + img_array[n]['clickUrl'];\n }\n}",
"note": "64h\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1060#13\n\nПРИМЕРЫ / EXAMPLES\nhttps://startpage.com/sp/search"
},
"StashApp": {
"img": "^(localhost:9999/image/.*?/)thumbnail(\\?.*)",
"to": "$1image$2",
"note": "imqswt\nhttps://www.reddit.com/r/imagus/comments/14cfsdh/comment/joxtqwx"
},
"SteamPowered": {
"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/"
},
"SteamPowered_store": {
"img": "^((?:(?:cdn|shared)\\.(?:edgecast|akamai|cloudflare)\\.steamstatic\\.com|steamcdn-[a-z]\\.akamaihd\\.net)/(?:store_item_assets/)?steam/apps/\\d+/)(?:(movie)\\.\\d+x\\d+\\.|(\\w+))[^/]+$",
"to": ":\nreturn $[1]+($[2] ? $[2]+'_max.webm' : $[3]+'.jpg')",
"note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/1d097kp/comment/l5mbd3l\n\nEXAMPLES\nhttps://store.steampowered.com/app/655500/MX_Bikes/\nhttps://store.steampowered.com/app/1292630/3on3_FreeStyle_Rebound/\nhttps://store.steampowered.com/app/12120/Grand_Theft_Auto_San_Andreas/"
},
"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": {
"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/"
},
"Streamff": {
"link": "^streamff\\.com/v/(.+)",
"url": "https://streamff.com/api/videos/$1",
"res": ":\nif($._[0]==='{'){\nconst m = JSON.parse($._);\nreturn m.externalLink?m.externalLink+'#mp4':'';\n} else {\nreturn '';\n}",
"to": "\n\n",
"note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/130svfu/comment/jns5il6\nOLD\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=120#3\n\n\n\nEXAMPLES\n???"
},
"StreamGoals": {
"link": "^(streamgoals\\.com/)video/(?:embed/)?([\\da-f]+).*",
"to": "$1/cache/$2.mp4",
"note": "EXAMPLES\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1360#10"
},
"Streamin.me|Streamin.one|Cazn.me": {
"link": "^(?:cazn|streamin)\\.(?:one|me)/v/.*",
"res": ":\nreturn $._.match(/(?:og:video:secure_url[\"'] content=|<video src=)[\"']([^'\"]+)/)[1]+\"#mp4\"",
"note": "Imagus_fan\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\nПРИМЕРЫ / EXAMPLES\nhttps://www.reddit.com/domain/streamin.me/new/\nhttps://www.reddit.com/domain/streamin.one/new/"
},
"Streamja": {
"link": "^(streamja\\.com/)(?!login|terms)(?:embed/)?(\\w{3,5})(?:[?#].*)?$",
"url": "$1$2",
"res": "<source src=\"([^\"]+)",
"img": "^(streamja\\.com/)i/\\w+/(\\w+).*",
"note": "EXAMPLES\nhttps://www.reddit.com/domain/streamja.com/new/"
},
"Streamlala": {
"link": "streamlala\\.com/\\w+",
"res": "<meta property=\"og:video:secure_url\" content=\"([^\"]+)\">",
"note": "Baton34V\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=4000#14\n\nEXAMPLES\nhttps://www.reddit.com/domain/streamlala.com/new"
},
"Streamvi": {
"link": "^streamvi\\.com/watch(?:/|\\.php\\?video=)(\\d+).*",
"to": "//edge1.cdnvi.org/uploads/$1.mp4",
"note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/130svfu/comment/jns5il6\n\nEXAMPLES\nhttps://www.reddit.com/domain/streamvi.com/new"
},
"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": {
"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": {
"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\nhttp://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.pro": {
"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": {
"img": "(svalko\\.org/data/)thumbs/(\\w+\\.(?:jpe?g|bmp|png))",
"to": "$1$2",
"note": "Baton34V\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=2720#15\n\nПРИМЕРЫ\nhttps://svalko.org/images.html"
},
"SVGshare|SVGur": {
"link": "svg(ur|share)\\.com/s/(\\w+)",
"img": "svg(ur|share)\\.com/s/(\\w+)",
"to": "svg$1.com/i/$2.svg",
"note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/130svfu/comment/jn8v5j7\n\nEXAMPLES\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1360#11"
},
"Talk.op.gg": {
"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/"
},
"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-p": {
"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-]+",
"res": "<link class=\"dynamic\" rel=\"image_src\" href=\"([^\"]+)\">",
"note": "Baton34V\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=240#6\n\nПРИМЕРЫ / EXAMPLES\nhttps://tenor.com/search/green-gifs\nhttps://www.reddit.com/domain/tenor.com/new/"
},
"TESall.ru": {
"link": "media\\.tesall\\.ru/image/[\\w-]+",
"note": "Rodny+Baton34V (fix)\nhttp://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/"
},
"ThePlace.ru": {
"img": "^(theplace\\.ru/)cache/(archive/\\S+/img/\\S+)-gthumb-.+\\.jpg",
"to": "$1$2.jpg",
"note": "Baton34V\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1700#9\n\nПРИМЕРЫ\nhttps://www.theplace.ru/photos/natalya_rudina/"
},
"Thetv.jp": {
"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\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1140#14\nOLD\nhttp://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"
},
"ThumbSnap-p": {
"link": "thumbsnap\\.com/(\\w/)?\\w+$",
"res": "<meta property=\"og:(?:image|video)\" content=\"([^\"]+)\"\n",
"note": "Baton34V\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=260#5\nOLD\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=120#3\n\n\n\nПРИМЕРЫ / EXAMPLES\nhttps://www.reddit.com/domain/thumbsnap.com/new/\nhttp://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/[^/]+|@[^/]+/live))|(?:m\\.)?(tiktok\\.com/)(?:(?:share|@[^/]+)/video|(?:embed/)?v2?|embed(?:/v\\d)?)(/\\d+)).*",
"url": ": $[3] ? 'https://www.tiktok.com/embed/v2'+$[3] : $[0]",
"res": ":\nif(!$[3]){\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, '&#9834;', m.authorName + ' - ' + m.title].join(' '),v=$.video.playAddr.length?$.video:$.imagePost.images.map((i,n)=>[i.imageURL.urlList[0],(!n?t:'')]);\nreturn Array.isArray(v) ? v : [(v.playAddr || v.downloadAddr) + '#mp4',t]\n}\nthis._TikTokTime=new Date($.createTime*1e3).toLocaleString();\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=[this._TikTokTime?.replace(/.*/,'[ $& ]')||'', '@'+a, $.itemInfos?.text, '&#9834;', m.authorName + ' - ' + m.musicName].join(' '),v=$.itemInfos.video.urls[0];\ndelete this._TikTokTime;\nreturn [v+'#mp4',t]",
"img": "^(v\\d+-webapp.*\\.tiktok\\.com/(?:[a-f\\d]+/[a-f\\d]+/)?video/tos.+)",
"to": ":\nconst n=this.node\nreturn (n.src?n.src:$[0])+\"#mp4\"",
"note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/ktl6lch\nOLD\nhttps://www.reddit.com/r/imagus/comments/go2yu5/comment/jv5ezvt\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=620#2\n\n\n!!!\nДля показа внешних ссылок и фреймов необходимо правило для SMH (см.ЧаВо, п.12).\n+\nВ некоторых случаях требуется повторное наведение курсора.\n+\nВ Хромиум-браузерах сохранение видео по хоткею и в меню плеера не работает, рекомендуется использовать контекстное меню.\n==\nTo display external links and frames, you need a rule for SMH (see FAQ, p.12).\n+\nIn some cases, re-hovering the cursor is required.\n+\nIn Chromium browsers, saving videos by hotkey and in the player menu does not work, it is recommended to use the context menu.\n\n\nПРИМЕРЫ / EXAMPLES\nhttps://www.reddit.com/domain/tiktok.com/new\nhttps://www.tiktok.com/@bestfoodmy\nhttps://www.tiktok.com/search?q=машина&t=1681301904701\nhttps://www.tiktok.com/@chineseculture777/live\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=620#3\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1360#11"
},
"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\nПРИМЕРЫ / EXAMPLES\nhttps://www.reddit.com/r/imagus/comments/1b7d4tx/comment/ktl9jmf\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1360#11"
},
"Tistory": {
"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\nhttps://murasagi3705.tistory.com/m/22\nhttps://hylee1931.tistory.com/15851730"
},
"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!!!\nВ РФ нужен хороший прокси (и лучше американский).\n\n\nEXAMPLES\nhttps://www.tnaflix.com/brunette-porn\nhttps://www.tnaflix.com/brunette-porn?section=galleries\nhttps://www.tnaflix.com/search.php?what=redhead&tab=galleries\nhttps://www.tnaflix.com/profile/jacobs_richard?section=videos"
},
"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\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1360#11"
},
"TopHotels.ru": {
"link": "^tophotels\\.ru/hotel/\\w+/media/gallery$",
"res": ":\nlet i = $._.indexOf('<div class=\"hotelPhoto-list__block\"');\nif(i<0) { return null; }\nlet t = $._.indexOf('</section>', i);\nif(t<0) { return null; }\nlet data=$._.substring(i,t);\nlet res = [];\nlet re = /href=\"([^\"]+)\"/gi\nlet a = re.exec(data);\nwhile(a) {\n res.push([a[1]]);\n a = re.exec(data);\n}\nreturn res;",
"img": "^(tophotels\\.ru/icache/)((?:hotel|user)_photos/)([0-9/]+)(\\d+)_\\d+x\\d+\\.jpg",
"to": "$1$2$3$4_1140x820.jpg",
"note": "Rodny + Baton34V(fix)\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=580#11\n\nПРИМЕРЫ\nhttps://tophotels.ru/catalog/hotel/83?sort=5"
},
"Toptoon-x-p": {
"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 rule:\nhttps://www.reddit.com/r/imagus/comments/13h211q/comment/js6a4fm"
},
"TradingView": {
"link": "^tradingview\\.com/x/.+",
"res": "<main.+\\n?.+?<img.+?src=['\"](\\S+)['\"]",
"note": "64h\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1100#12\n\nПРИМЕРЫ\nhttp://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"
},
"Tranny.one-x-b": {
"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": {
"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-b": {
"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": {
"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"
},
"trbimg-CDN": {
"link": "(trbimg\\.com/img-[^/]+/.*)",
"img": "(trbimg\\.com/img-[^/]+/.*)",
"to": "$1",
"note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/130svfu/comment/jn8v5j7\n\nEXAMPLES\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1360#11"
},
"Trinixy.ru": {
"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\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=620#21\nOLD\nhttp://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": {
"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\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=2120#14\nOLD\nhttp://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|timg.in|prtscr.site": {
"link": "^(trueimages\\.ru|timg\\.in|prtscr\\.site)/(view/)?\\w+$",
"res": "<meta property=\"og:image\" content=\"([^\"]+)\"",
"note": "Rodny + Baton34V (fix)\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3720#20\n\n!!!\ntimg.in - не работают на самом сайте.\n\n\nПРИМЕРЫ\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1360#11"
},
"TSModelsTube-x": {
"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/search/Australian/page1.html\nhttps://tsmodelstube.com/channels/10/gangbang/page1.html"
},
"Tube8-x-p": {
"link": "^(?:[a-z]{2}\\.)?tube8\\.com/(?:(?!pornstar/|cat/)[^/]+/[^/]+|porn-video)/\\d+",
"res": ":\n$=JSON.parse(($._.match(/var flashvars\\s*=\\s*(.+?);\\n/)||[,'{}'])[1])\nconst t = $.video_title\nif(!t)return null\n$=Object.entries($).filter(i=>/^quality_/.test(i[0])&&i[1]!==false).sort((a,b)=>parseInt(a[0].match(/\\d+/))-parseInt(b[0].match(/\\d+/))).map(i=>i[1])\nreturn [[[\"#\"+$.pop(),$.length&&$[Math.floor($.length/2)]],t]]",
"note": "imqswt\nhttps://www.reddit.com/r/imagus/comments/150zrnk/comment/jsflzrx\nOLD\nhttps://www.reddit.com/r/imagus/comments/150zrnk/nsfw_i_want_to_share_sieves_some_i_made_and_some/\n\nEXAMPLES\nhttps://www.tube8.com/cat/erotic/11/\nhttps://www.tube8.com/channel/7272/brazzers/\nhttps://www.tube8.com/porntags/2+babes+1+cock/"
},
"Tuchong-b": {
"link": "^(?:[^.]+\\.(tuchong\\.com/)(\\d+)|(tuchong\\.com/)\\d+/(\\d+))(?!/?#image\\d+).*",
"url": "//$1$3rest/posts/$2$4",
"res": ":\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/)[^/]+",
"to": "$1f",
"note": "EXAMPLES\nhttps://stock.tuchong.com/search?source=tc_pc_home_search&term=green\nhttps://stock.tuchong.com/search?availableOnly=&page=3&platform=image&relevance_guarantee=false&search_id=7198213317452857659&size=100&sortBy=0&source=tc_pc_home_search&term=Landscapes&topic_id=\nhttps://stock.tuchong.com/topic?topicId=50759&from=精选图集-设计素材-热门\nhttps://stock.tuchong.com/topic?topicId=49436&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\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1360#11"
},
"Tumbex-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/posts?page=3\nhttps://www.tumbex.com/tastefullyoffensive.tumblr/video"
},
"TUMBLR-2-p": {
"link": "^(\\d\\d\\.media\\.tumblr\\.com/[\\da-f]{32}/[\\da-f]{16}-\\w\\w/)s\\d+x\\d+(/[\\da-f]+\\.\\w+)",
"res": ":\n",
"img": "^(\\d\\d\\.media\\.tumblr\\.com/[\\da-f]{32}/[\\da-f]{16}-\\w\\w/)s\\d+x\\d+(?:_\\w+)?(/[\\da-f]+\\.\\w+)",
"to": ":\nlet urlSet=this.node.getAttribute('srcset');\nlet urlArray=urlSet.split(/ \\d+w,? ?/);\nreturn urlArray[urlArray.length-2];",
"note": "Baton34V + Imagus_fan (edit)\nhttps://www.reddit.com/r/imagus/comments/17q5jnk/comment/k8bzaq9\nOLD\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=680#3\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\nEXAMPLES\nhttps://www.tumblr.com/tagged/painting?sort=top\nhttps://www.tumblr.com/tagged/acrylic?sort=recent\nhttps://www.tumblr.com/blog/view/twirld"
},
"TUMBLR_video-p": {
"img": "(va\\.media\\.tumblr\\.com/tumblr_\\w+\\.mp4)",
"to": "$1",
"note": "Baton34V\nhttp://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": {
"link": "^turboimagehost.com/p/\\d+/.*",
"res": "=\"og:image\" content=\"([^\"]+)",
"note": "ПРИМЕРЫ / EXAMPLES\nhttps://www.reddit.com/domain/turboimagehost.com/new/\nhttps://vipergirls.to/threads/6239200-Agatha-Game-Theory-120-Photos-Jul-23-2021"
},
"tv2.no": {
"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"
},
"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/"
},
"TWITCH_clips": {
"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В данном фильтре возможно переключение качества видео с помощью клавиши TAB\n==\nIn this sieve, it is possible to switch the video quality using the TAB key.\n\nEXAMPLES\nhttps://www.reddit.com/r/TwitchClips/\nhttps://www.reddit.com/r/livestreamfails/\nhttps://www.reddit.com/domain/clips.twitch.tv/new"
},
"X.COM_ext-p": {
"useimg": 1,
"link": "^(?:m(?:obile)?\\.)?(?:x|(api\\.[fv]x)?twitter)\\.com/(?:[^/]+/)*status/(\\d+)(?:\\?img_id(.+))?.*",
"url": ": (()=>{const use_on_timestamp = 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 new Error('Not used on this link');return $[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": ":\nconst show_post_with_multiple_images_as_album = true // Hovering over image in multi-image post shows images as an album.\n\nconst show_hovered_image_first_in_album = true // Shows the hovered over image first in the album.\n\nconst truncate_album_before_hovered_image = true // Removes images before hovered image in album.\n\nconst show_pfp_if_no_media = false // Show profile image instead of 'No Media' message.\n\nconst use_vxtwitter_api_fallback = true // Use third party API VXTwitter as backup\n\nconst use_fxtwitter_api_fallback = false // Use third party API FXTwitter as backup\n\n// If both VXTwitter and FXTwitter are set to true, one is randomly chosen\n\nconst hide_third_party_api_message = false // Hide API message on sensitive media\n\nif(!$[1]&&$._[0]!=='{'){\nconst x = new XMLHttpRequest();\nx.open('Get','https://cdn.syndication.twimg.com/tweet-result?id='+$[2]+'&token='+((Number($[2])/1e15)*Math.PI).toString(6**2).replace(/(0+|\\.)/g,''),false);\nx.send();\nif(x.status!==200)return '';\n$._ = x.responseText;\n}\nlet data = $._[0]==='{'?JSON.parse($._):'';\nif(!data)return null;\nconst upgradeImage = img => ['#'+img.replace(/\\.([a-z0-9]{3,4}$)/,'?format=$1&name=orig').replace('webp', 'jpg'), img.replace(/\\.([a-z0-9]{3,4}$)/,'?format=$1&name=large').replace('webp', 'jpg')];\nlet media = [];\nconst imgIdRegex = new RegExp(`${$[3]}`), pfp = data.user?.profile_image_url_https?.replace(/_[a-z0-9]+\\./, '.'), backupURL = use_fxtwitter_api_fallback&&use_vxtwitter_api_fallback ? ['v', 'f'][Math.floor(Math.random()*2)] : use_vxtwitter_api_fallback ? 'v' : use_fxtwitter_api_fallback ? 'f' : '';\nif(!$[1]){\nconst text = data.text, qText = data.quoted_tweet?.text;\nlet mediaDetails = data.mediaDetails||[], qtMediaDetails = data.quoted_tweet?.mediaDetails||[], card = data.card?.binding_values?.unified_card?.string_value||data.card?.binding_values;\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 ? [['#'+i[0],i?.[1]||''],(qtMediaDetails?.length?'Main tweet media: ':'')+text+(!qtMediaDetails?.length&&qText?' | Quote tweet text: '+qText:'')] : [upgradeImage(i),(qtMediaDetails?.length?'Main tweet media: ':'')+text+(!qtMediaDetails?.length&&qText?' | Quote tweet text: '+qText:'')]);\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 ? [['#'+i[0],i?.[1]||''],'Quote tweet media: '+qText+(!mediaDetails?.length&&text?' | Main tweet text: '+text:'')] : [upgradeImage(i),'Quote tweet media: '+qText+(!mediaDetails?.length&&text?' | Main tweet text: '+text:'')]);\n\t})\nif(card)media.push([typeof card === 'string' ? [Object.values(JSON.parse(card)?.media_entities)?.[0]?.media_url_https] : ['#'+card.photo_image_full_size_original?.image_value?.url, card.photo_image_full_size_large?.image_value?.url],text]);\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 ? [['#'+i[0],i?.[1]||''],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 ? [['#'+i[0],i?.[1]||''],qText] : [upgradeImage(i),qText]);\n\t})\nif(card)media.push([['#'+card.photo_image_full_size_original?.image_value?.url, card.photo_image_full_size_large?.image_value?.url],text]);\n if(!show_post_with_multiple_images_as_album)media=[media.find(i=>imgIdRegex.test(i[0][0])||videoIdRegex?.test(i[0][0]))];\n else if(truncate_album_before_hovered_image)media = media.splice(media.findIndex(i=>imgIdRegex.test(i[0][0])||videoIdRegex?.test(i[0][0])));\n\telse if(show_hovered_image_first_in_album)media = media.concat(media.splice(0,media.findIndex(i=>imgIdRegex.test(i[0][0])||videoIdRegex?.test(i[0][0]))));\n\t}\nreturn media?.length&&media||!text&&!qText&&backupURL&&{loop:'https://api.'+backupURL+'xtwitter.com/status/'+$[2]+($[3]?'?img_id'+$[3]:'')}||no_media(text)\n} else {\n const backupMessage = !hide_third_party_api_message&&'A third party API, '+$[1].slice(4).toUpperCase()+'Twitter, was used to get this media. This can be disabled in the sieve. For more information, see the notes section of the TWITTER_ext-p sieve. | '\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 if(!show_post_with_multiple_images_as_album){\n media = [mediaURLs.find(i=>imgIdRegex.test(i.thumbnail_url))].map(i=>[(i.type==='video'||/\\.mp4/.test(i.url)?i.url:upgradeImage(i.url)),backupMessage+text]);\n }else if(truncate_album_before_hovered_image){\n media = mediaURLs.splice(mediaURLs.findIndex(i=>imgIdRegex.test(i.thumbnail_url))).map(i=>[(i.type==='video'||/\\.mp4/.test(i.url)?i.url:upgradeImage(i.url)),backupMessage+text]);\n }else if(show_hovered_image_first_in_album){\n media = mediaURLs.concat(mediaURLs.splice(0,mediaURLs.findIndex(i=>imgIdRegex.test(i.thumbnail_url)))).map(i=>[(i.type==='video'||/\\.mp4/.test(i.url)?i.url:upgradeImage(i.url)),backupMessage+text]);\n }else{\n media = mediaURLs.map(i=>[(i.type==='video'||/\\.mp4/.test(i.url)?i.url:upgradeImage(i.url)),backupMessage+text]);\n }\n }else{\n media = mediaURLs.map(i=>[(i.type==='video'||/\\.mp4/.test(i.url)?i.url:upgradeImage(i.url)),backupMessage+text]);\n }\n delete this.loopStop;\n} else {\n const text = data.tweet?.text, qText = data.quote?.text;\n let mediaURLs = data.tweet?.media?.all||[],qtMediaURLs = data.tweet?.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 ? [['#'+i[0],i?.[1]||''],backupMessage+text] : [upgradeImage(i),backupMessage+text]);\n\t})\n }else{\n const 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.video_info.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 ? [['#'+i[0],i?.[1]||''],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.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.url;\n\tmedia.push(isVideo ? [['#'+i[0],i?.[1]||''],qText] : [upgradeImage(i),backupMessage+qText]);\n\t})\n if(!show_post_with_multiple_images_as_album)media=[media.find(i=>imgIdRegex.test(i[0][0])||videoIdRegex?.test(i[0][0]))];\n else if(truncate_album_before_hovered_image)media = media.splice(media.findIndex(i=>imgIdRegex.test(i[0][0])||videoIdRegex?.test(i[0][0])));\n\telse if(show_hovered_image_first_in_album)media = media.concat(media.splice(0,media.findIndex(i=>imgIdRegex.test(i[0][0])||videoIdRegex?.test(i[0][0]))));\n\t}\n }\n return media\n}\nfunction no_media(t){\nreturn 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}",
"img": "^(?:(pbs\\.twimg\\.com/(?:(profile_banners/\\d+/\\d+/)|([^?]+\\?format=[^&]+&name=)|(?!profile_images/)[^.]+\\.)).*|(twitter\\.com/\\w+(?:/photo|\\?|$).*))",
"loop": 2,
"to": ":\nconst n=this.node\nconst id=$[0].match(/\\/([^\\/?.]+)(?:[?.]|$)/)?.[1]||''\nif($[2])return $[1]+'1500x500'\n\nif($[4])return n.closest('a')?.querySelector('img[src][draggable=\"true\"]')?.src?.replace(/_[a-z0-9]+\\./, '.')||''\n\nif(!/(?:x|twitter)\\.com$/.test(location.hostname)||/\\/semantic_core_img\\//.test($[1]))return '#'+$[1].replace(/\\.([a-z0-9]{3,4}$)|\\?format=(\\w+)&.+/,'?format=$1$2&name=orig').replace('webp', '#jpg png#')+'\\n'+$[1].replace(/\\.([a-z0-9]{3,4}$)|\\?format=(\\w+)&.+/,'?format=$1$2&name=large').replace('webp', '#jpg png#')\n\nif((/(?:x|twitter)\\.com\\/(?:[^\\/]+\\/|search\\?q=.+=)media/.test(location.href) && !/\\/semantic_core_img\\//.test($[0]))){\n let el = n;\n while (el.parentNode && !el.querySelector('a[href*=\"/status/\"]')) {\n el = el.parentNode\n };\n return el.querySelector('a[href*=\"/status/\"]').href.replace(/^(https:\\/\\/[^\\/]+\\/[^\\/]+\\/status\\/\\d+).*/, '$1?img_id/'+id)\n}\n\nreturn (n.closest('article')?.querySelector('a[href*=\"/status/\"][aria-label]') || 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/\"]'))?.href?.replace(/^(https:\\/\\/[^\\/]+\\/[^\\/]+\\/status\\/\\d+).*/, '$1?img_id/'+id)",
"note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/1bg8o7a/comment/l37gkgo\nOLD\nhttps://www.reddit.com/r/imagus/comments/1bg8o7a/comment/kvpiolk\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=2590&limit=1&m=1#1\nhttps://www.reddit.com/r/imagus/comments/18emspa/comment/koaavz3\n\n\n!!!\nA sieve to support Twitter external links (videos and images + albums).\n+\nThis rule should PRECEDE the Twitter-p rule.\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\nEXAMPLES\nhttps://www.reddit.com/domain/twitter.com/new\nhttps://www.reddit.com/r/imagus/comments/159jk73/comment/jti74is\nhttps://twitter.com/otosalex\nhttps://twitter.com/search?q=example&src=typed_query&f=media\nhttps://twitter.com/rei_RR/status/1737115628472086910"
},
"X.COM-p": {
"useimg": 1,
"link": "^(?:m(?:obile)?\\.)?(?:x|(api\\.[fv]x)?twitter)\\.com/(?:[^/]+/)*status/(\\d+)(?:\\?img_id(.+))?.*",
"url": ": (()=>{const use_on_timestamp = 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 new Error('Not used on this link');return $[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": ":\nconst show_post_with_multiple_images_as_album = true // Hovering over image in multi-image post shows images as an album.\n\nconst show_hovered_image_first_in_album = true // Shows the hovered over image first in the album.\n\nconst truncate_album_before_hovered_image = true // Removes images before hovered image in album.\n\nconst show_pfp_if_no_media = false // Show profile image instead of 'No Media' message.\n\nconst use_vxtwitter_api_fallback = false // Use third party API VXTwitter as backup\n\nconst 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\nconst hide_third_party_api_message = false // Hide API message on sensitive media\n\nif(!$[1]&&$._[0]!=='{'){\nconst x = new XMLHttpRequest();\nx.open('Get','https://cdn.syndication.twimg.com/tweet-result?id='+$[2]+'&token='+((Number($[2])/1e15)*Math.PI).toString(6**2).replace(/(0+|\\.)/g,''),false);\nx.send();\nif(x.status!==200)return '';\n$._ = x.responseText;\n}\nlet data = $._[0]==='{'?JSON.parse($._):'';\nif(!data)return null;\nconst upgradeImage = img => ['#'+img.replace(/\\.([a-z0-9]{3,4}$)/,'?format=$1&name=orig').replace('webp', 'jpg'), img.replace(/\\.([a-z0-9]{3,4}$)/,'?format=$1&name=large').replace('webp', 'jpg')];\nlet media = [];\nconst imgIdRegex = new RegExp(`${$[3]}`), pfp = data.user?.profile_image_url_https?.replace(/_[a-z0-9]+\\./, '.'), backupURL = use_fxtwitter_api_fallback&&use_vxtwitter_api_fallback ? ['v', 'f'][Math.floor(Math.random()*2)] : use_vxtwitter_api_fallback ? 'v' : use_fxtwitter_api_fallback ? 'f' : '';\nif(!$[1]){\nconst text = data.text, qText = data.quoted_tweet?.text;\nlet mediaDetails = data.mediaDetails||[], qtMediaDetails = data.quoted_tweet?.mediaDetails||[], card = data.card?.binding_values?.unified_card?.string_value||data.card?.binding_values;\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 ? [['#'+i[0],i?.[1]||''],(qtMediaDetails?.length?'Main tweet media: ':'')+text+(!qtMediaDetails?.length&&qText?' | Quote tweet text: '+qText:'')] : [upgradeImage(i),(qtMediaDetails?.length?'Main tweet media: ':'')+text+(!qtMediaDetails?.length&&qText?' | Quote tweet text: '+qText:'')]);\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 ? [['#'+i[0],i?.[1]||''],'Quote tweet media: '+qText+(!mediaDetails?.length&&text?' | Main tweet text: '+text:'')] : [upgradeImage(i),'Quote tweet media: '+qText+(!mediaDetails?.length&&text?' | Main tweet text: '+text:'')]);\n\t})\nif(card)media.push([typeof card === 'string' ? [Object.values(JSON.parse(card)?.media_entities)?.[0]?.media_url_https] : ['#'+card.photo_image_full_size_original?.image_value?.url, card.photo_image_full_size_large?.image_value?.url],text]);\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 ? [['#'+i[0],i?.[1]||''],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 ? [['#'+i[0],i?.[1]||''],qText] : [upgradeImage(i),qText]);\n\t})\nif(card)media.push([['#'+card.photo_image_full_size_original?.image_value?.url, card.photo_image_full_size_large?.image_value?.url],text]);\n if(!show_post_with_multiple_images_as_album)media=[media.find(i=>imgIdRegex.test(i[0][0])||videoIdRegex?.test(i[0][0]))];\n else if(truncate_album_before_hovered_image)media = media.splice(media.findIndex(i=>imgIdRegex.test(i[0][0])||videoIdRegex?.test(i[0][0])));\n\telse if(show_hovered_image_first_in_album)media = media.concat(media.splice(0,media.findIndex(i=>imgIdRegex.test(i[0][0])||videoIdRegex?.test(i[0][0]))));\n\t}\nreturn media?.length&&media||!text&&!qText&&backupURL&&{loop:'https://api.'+backupURL+'xtwitter.com/status/'+$[2]+($[3]?'?img_id'+$[3]:'')}||no_media(text)\n} else {\n const backupMessage = !hide_third_party_api_message&&'A third party API, '+$[1].slice(4).toUpperCase()+'Twitter, was used to get this media. This can be disabled in the sieve. For more information, see the notes section of the TWITTER_ext-p sieve. | '\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 if(!show_post_with_multiple_images_as_album){\n media = [mediaURLs.find(i=>imgIdRegex.test(i.thumbnail_url))].map(i=>[(i.type==='video'||/\\.mp4/.test(i.url)?i.url:upgradeImage(i.url)),backupMessage+text]);\n }else if(truncate_album_before_hovered_image){\n media = mediaURLs.splice(mediaURLs.findIndex(i=>imgIdRegex.test(i.thumbnail_url))).map(i=>[(i.type==='video'||/\\.mp4/.test(i.url)?i.url:upgradeImage(i.url)),backupMessage+text]);\n }else if(show_hovered_image_first_in_album){\n media = mediaURLs.concat(mediaURLs.splice(0,mediaURLs.findIndex(i=>imgIdRegex.test(i.thumbnail_url)))).map(i=>[(i.type==='video'||/\\.mp4/.test(i.url)?i.url:upgradeImage(i.url)),backupMessage+text]);\n }else{\n media = mediaURLs.map(i=>[(i.type==='video'||/\\.mp4/.test(i.url)?i.url:upgradeImage(i.url)),backupMessage+text]);\n }\n }else{\n media = mediaURLs.map(i=>[(i.type==='video'||/\\.mp4/.test(i.url)?i.url:upgradeImage(i.url)),backupMessage+text]);\n }\n delete this.loopStop;\n} else {\n const text = data.tweet?.text, qText = data.quote?.text;\n let mediaURLs = data.tweet?.media?.all||[],qtMediaURLs = data.tweet?.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 ? [['#'+i[0],i?.[1]||''],backupMessage+text] : [upgradeImage(i),backupMessage+text]);\n\t})\n }else{\n const 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.video_info.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 ? [['#'+i[0],i?.[1]||''],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.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.url;\n\tmedia.push(isVideo ? [['#'+i[0],i?.[1]||''],qText] : [upgradeImage(i),backupMessage+qText]);\n\t})\n if(!show_post_with_multiple_images_as_album)media=[media.find(i=>imgIdRegex.test(i[0][0])||videoIdRegex?.test(i[0][0]))];\n else if(truncate_album_before_hovered_image)media = media.splice(media.findIndex(i=>imgIdRegex.test(i[0][0])||videoIdRegex?.test(i[0][0])));\n\telse if(show_hovered_image_first_in_album)media = media.concat(media.splice(0,media.findIndex(i=>imgIdRegex.test(i[0][0])||videoIdRegex?.test(i[0][0]))));\n\t}\n }\n return media\n}\nfunction no_media(t){\nreturn 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}",
"img": "^(?:(pbs\\.twimg\\.com/(?:(profile_banners/\\d+/\\d+/)|([^?]+\\?format=[^&]+&name=)|(?!profile_images/)[^.]+\\.)).*|((?:x|twitter)\\.com/\\w+(?:/photo|\\?|$).*))",
"loop": 2,
"to": ":\nconst n=this.node\nconst id=$[0].match(/\\/([^\\/?.]+)(?:[?.]|$)/)?.[1]||''\nif($[2])return $[1]+'1500x500'\n\nif($[4])return n.closest('a')?.querySelector('img[src][draggable=\"true\"]')?.src?.replace(/_[a-z0-9]+\\./, '.')||''\n\nif(!/(?:x|twitter)\\.com$/.test(location.hostname)||/\\/semantic_core_img\\//.test($[1]))return '#'+$[1].replace(/\\.([a-z0-9]{3,4}$)|\\?format=(\\w+)&.+/,'?format=$1$2&name=orig').replace('webp', '#jpg png#')+'\\n'+$[1].replace(/\\.([a-z0-9]{3,4}$)|\\?format=(\\w+)&.+/,'?format=$1$2&name=large').replace('webp', '#jpg png#')\n\nif((/(?:x|twitter)\\.com\\/(?:[^\\/]+\\/|search\\?q=.+=)media/.test(location.href) && !/\\/semantic_core_img\\//.test($[0]))){\n let el = n;\n while (el.parentNode && !el.querySelector('a[href*=\"/status/\"]')) {\n el = el.parentNode\n };\n return el.querySelector('a[href*=\"/status/\"]').href.replace(/^(https:\\/\\/[^\\/]+\\/[^\\/]+\\/status\\/\\d+).*/, '$1?img_id/'+id)\n}\n\nreturn (n.closest('article')?.querySelector('a[href*=\"/status/\"][aria-label]') || 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/\"]'))?.href?.replace(/^(https:\\/\\/[^\\/]+\\/[^\\/]+\\/status\\/\\d+).*/, '$1?img_id/'+id)",
"note": "!!!\nДанное правило должно стоять ПОСЛЕ правила Twitter_external-p.\n==\nThis rule must come AFTER the Twitter_external-p rule.\n+\nФикс для аватарок пользователей / Twitter profile pic fix:\nhttps://www.reddit.com/r/imagus/comments/uhl8v7/twitter_profile_pic_fix/\n\nПРИМЕРЫ / EXAMPLES\nhttps://www.reddit.com/domain/pbs.twimg.com/new\nhttps://twitter.com/FCBarcelona/status/1645515072737890304"
},
"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'))"
},
"uDrop": {
"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\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=2580#16\n\n\nEXAMPLES\nhttps://www.reddit.com/domain/udrop.com/new\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1360#11"
},
"Upload.ee": {
"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\nhttp://forum.ru-board.com/topic.cgi?forum=35&topic=80883&start=2900#5\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=49018&start=2100#21"
},
"UploadAgent.de": {
"img": "^(uploadagent\\.de/files/\\d+/)thumb_(.+\\.(?:jpe?g|png|gif))$",
"to": "$1$2",
"note": "Rodny\n\nEXAMPLES\n???"
},
"UploadBETA": {
"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\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1360#11"
},
"UploadDeImagens.com.br": {
"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/\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1360#11"
},
"UploadHouse": {
"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\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1380#10\n\nEXAMPLES\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1360#11"
},
"Uploadir": {
"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\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1360#11"
},
"Uploads.im|Uploads.ru": {
"useimg": 1,
"link": "^uploads\\.(?:im|ru)/.+\\.(?:jpe?g|png|gif|bmp|tiff|psd|pdf)$",
"res": "<img src=\"([^\"]+)\"[^>]+id=\"full_image\"",
"img": "^(s\\d+\\.uploads\\.(?:im|ru)/)t/(.+\\.(?:jpe?g|png|gif|bmp|tiff|psd|pdf))$",
"to": "$1$2",
"note": "Rodny\nhttp://forum.ru-board.com/misc.cgi?action=printtopic&forum=5&topic=48222\n\nПРИМЕРЫ\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=20#14"
},
"UrleBird": {
"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) ТикТок может не показывать пользователю некоторые ролики. В этом случае фильтр будет выдавать ошибку - серый или красный спиннер. Иногда может помочь смена вашего 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 changing your IP to another country via 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/\nhttps://urlebird.com/hash/pourtoi/\nhttps://urlebird.com/ru/user/helensingerdancer/"
},
"Userapi_sun*-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": {
"link": "^utkonos\\.ru/item/(\\d+)",
"url": "data:,$&",
"res": ":\nconst x=new XMLHttpRequest();\nx.open('Get',$[0],false);\nx.send();\nconst t=x.responseText.match(/class=\"product-tab_content\"><p _ngcontent-ng-c4047868991=\"\">([^<]+)/)[1]\nreturn [...x.responseText.matchAll(/src=\"(https:\\/\\/[^\\/]+\\/resample\\/)webp\\/50x50([^\"]+)/g)].map(i=>[['#'+i[1]+'0x0'+i[2],i[1]+'900x900'+i[2]],t])",
"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": "Baton34V\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=100#13\n\n!!!\nКурсор наводить на название товара.\n\nПРИМЕРЫ\nhttps://www.utkonos.ru/catalog/1808\nhttps://www.utkonos.ru/search/печенье%20юбилейное"
},
"Vero.co": {
"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#type=photo\nhttps://vero.co/zacksnyder#type=video\nhttps://vero.co/zacksnyder#type=person"
},
"VFL.ru": {
"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\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=37201&start=3540&limit=1"
},
"VG.no_TV": {
"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"
},
"Vidble-x-p": {
"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/\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1369&limit=1&m=1#1"
},
"Vimeo": {
"link": "^(.*\\.)?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": ":\n\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(/&amp;/g, '&');\n}\n\nconst embedConfig = $._.match(/{.+\"progressive\":\\[.*?\\].+}/);\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(/&amp;/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": "hababr\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=2080#13\nOLD\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://vimeo.com/categories/animation/2d/videos\nhttps://vimeo.com/categories/sports/bikes/videos"
},
"Vipr|Vipergirls.to-x-p": {
"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": "Baton34V + hababr (fix)\nOLD\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=2900#12\n\nEXAMPLES\nhttps://vipergirls.to/threads/5829954-MARLENE-HOLY-MARL-Jan-14-2021-X57-8256px\nhttps://vipergirls.to/threads/6010551-Riya-Lime-Green-100-Photos-Apr-03-2021?p=81831177&viewfull=1#post81831177"
},
"Vitacost-p": {
"img": "^(vitacost\\.com/Images/Products/)\\d+",
"to": "$11000",
"note": "https://www.reddit.com/r/imagus/comments/cmt5zz/comment/ewj5s52\n\nEXAMPLES\nhttps://www.vitacost.com/just-for-you\nhttps://www.vitacost.com/productsearch.aspx?t=lutein&s=TopRated&mp=1"
},
"Vixen_Media_Group-x-p": {
"link": "(vixen|tushy|tushyraw|blacked|blackedraw|slayed|deeper|milfy)\\.com/videos/.+",
"res": ":\nconst max_resolution = 1080;\n\nconst vidId = $._.match(/(?:videoTokenId|newId)\":\"(?<id>\\d+)/)?.groups?.id;\nif (!vidId) return;\n\nconst req = new XMLHttpRequest();\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": "gpl2731\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1943&limit=1&m=1#1\nOLD\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=220#11\n\n\nLIST\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.\ne.g.\n1080 will result in 1080p video\n900 will result in 720p video\n\nПРИМЕРЫ / EXAMPLES\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-2": {
"link": "^(?:vk\\.com/(?:([\\w.]+)\\?pfp_thumb$|[\\w-]+\\?(?:own=1&)?(?:z=photo-|reply=)|(doc[0-9_]+\\?hash=)|(video_ext\\.php\\?oid=-?\\d+&id=\\d+)|(album-?[0-9_]+)).*|vk_album/(?:([^!]+)!)?(.+))",
"url": ": $[1] ? '//vk.com/'+$[1] : $[4]||$[5]||$[6] ? 'https://vk.com/al_photos.php?act=show :act=show&al=1'+($[4]||$[5]?'&list='+($[4]||$[5]):'')+($[6]?'&photo='+$[6]:'') : $[0]",
"res": ":\nconst max_images = 300 // Maximum number of images in album. Lower number loads faster.\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($[3]||$[4]||$[5]||$[6]){\nlet s, m, n=this.node, has_video=false;\nthis.vk_vids=this.vk_vids||[...n.closest('.post_content')?.querySelectorAll('div[class=\"VideoPrimaryAttachment__thumbWrapper\"]>a[data-video]')||[]];\nthis.vk_vid_length=this.vk_vid_length||this.vk_vids.length;\nthis.vk_vid_num=this.vk_vid_num||0;\nthis.vk_gallery_length=this.vk_gallery_length||n.closest('.post_content')?.querySelectorAll('div[class^=\"PhotoPrimaryAttachment__\"]')?.length;\nthis.vk_album=this.vk_album||[];\nthis.loop_stop=this.loop_stop||0;\nthis.loop_stop++;\nif($[3]){\nhas_video=true;\n$=JSON.parse($._.match(/var playerParams = ({.+?});/)[1]||'{}').params?.[0]||[];\n$=Object.entries($).filter(i=>/^url\\d+$/.test(i[0])).map(i=>i[1]).reverse();\nif($?.length)this.vk_album.push([['#'+$[0]+'#mp4',$[Math.floor($.length/2)]+'#mp4']])\n}else{\nconst l=$[4];\n$=JSON.parse($._.slice($._.indexOf('{'))).payload[1];\ns=$[1];\n$=$[3];\nconst id=$[$.length-1].id;\n$=$.flatMap((i,n)=>!this.vk_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(this.vk_gallery_length===1)$=[$[4]];\nthis.vk_album.push(...$);\nif((!this.vk_gallery_length||this.vk_gallery_length>1)&&this.vk_album.length<s&&this.vk_album.length<max_images&&$.length>0&&this.loop_stop<150)return {loop:'//vk_album/'+(l?l+'!':'')+id}\n}\nconst vid=this.vk_vids[this.vk_vid_num]?.getAttribute('data-video').split('_');\nthis.vk_vid_num++;\nif(vid)return {loop:'https://vk.com/video_ext.php?oid='+vid[0]+'&id='+vid[1]}\n$=this.vk_album;\ndelete this.vk_album;\ndelete this.loop_stop;\ndelete this.vk_gallery_length;\ndelete this.vk_vids;\ndelete this.vk_vid_length;\ndelete this.vk_vid_num;\nreturn $\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+|(s/v1/if\\d/[^.]+\\.jpg\\?)(quality=\\d+&crop=(?:\\d+,?)+&as=(?:(\\d+x\\d+),?)+&ava=\\d&u=[^&]+&cs=|size=\\d+x\\d+&quality=\\d+&crop=)).*",
"loop": 2,
"to": ":\nif($[4])return $[1]+$[2]+$[3]+$[4];\nvar y, x = this.node,p=x&&x.parentNode;\nif($[3]){\ny=(p.href||x.href);\nreturn y?y+'?pfp_thumb':'';\n}\nif (location.hostname==='vk.com'&&x) {\n if ((y=x.getAttribute('onclick')) && y.indexOf('showPhoto(')>0) {\n x=JSON.parse(y.match(/(\\{.+\\})/)[0]).temp;\n 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 location.hostname+location.pathname+(location.search==='?own=1'?location.search+'&':'?')+'z=photo'+y[1]+'/'+y[2];\n }\n else if(y=p.getAttribute('data-photo-id')){\n var 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 }\n}\nreturn $[0];",
"note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/l5md1f8\nOLD\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=2280#18\n\n!!!\nРазмещать ПЕРЕД фильтром [wordpress].\nИногда может потребоваться повторное наведение курсора.\nПросмотр альбомов (несколько изображений в публикации) в группе возможен при наведении на любое фото альбома. На странице альбомов просмотр всего альбома возможен при наведении на его миниатюру.\n\nПРИМЕРЫ\nhttps://vk.com/leprazo\nhttps://vk.com/photos-141834632?act=comments\nАльбом в ленте группы:\nhttps://vk.com/wall-65960786_9343848\nhttps://vk.com/wall-65960786_9343848\nКоллаж в ленте группы:\nhttps://vk.com/wall-636950_753242\nhttps://vk.com/wall-636950_753196\nВсе альбомы группы:\nhttps://vk.com/albums-141834632\nhttps://vk.com/id845231355?from=search&z=albums845231355"
},
"VK_video": {
"link": "^(?:m\\.)?(vk\\.com/)(?:video|(?:clips/[a-z]+\\?z=)?clip)(-?\\d+_\\d+).*",
"url": "https://$1video$2",
"res": ":\nconst max_resolution = 2160\n\nconst params = JSON.parse($._.match(/'al_video\\.php[^[]+(.+])\\)/)[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 [ max_res_url(params) + '#mp4', params.md_title ];",
"note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/l5pz9kf\nOLD\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1571#1\n\n!!!\nДля изменения размера видео - заменить разрешение в параметре (480/720/1080/2160):\nconst max_resolution = \n\n\nПРИМЕРЫ\nhttps://vk.com/video/@leprazo\nhttps://vk.com/clips/leprazo\nвнешние ссылки:\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1360#11"
},
"Vogue": {
"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/carlos-alcaraz-defeats-novak-djokovic-for-first-wimbledon-title\n(альбом)\nhttps://www.vogue.com/article/serena-williams-pregnant-met-gala-2023"
},
"Vprok.ru": {
"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\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=2120#10\nOLD\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1680#2\n\n!!!\nКурсор рекомендуется наводить на название товара.\n\n\nПРИМЕРЫ\nhttps://zoo.vprok.ru/catalog/1571/suhoy-korm\nhttps://www.vprok.ru/catalog/1532/chay?sort=price_asc\nhttps://www.vprok.ru/catalog/3361/poroshki?naznachenie-poroshki%5B%5D=dlya-tsvetnyh-tkaney"
},
"vsco-x": {
"img": "^(?:i(?:m(?:age(?:-aws[\\w-]+)?)?)?)(\\.vsco\\.co/)(?:[^/]{1,23}/)*?([\\da-f]{24}).*",
"to": "//i$1$2",
"note": "!!!\nВ настоящее время фильтр частично не работает (внешние ссылки на галереи).\n==\nCurrently, the rule partially does not work (external links to galleries).\n\nEXAMPLES\nhttps://www.reddit.com/domain/vsco.co/new\nhttps://www.reddit.com/domain/vsco.page/new\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1360#11"
},
"VseInstrumenti.ru": {
"link": "^(\\w+\\.)?vseinstrumenti\\.ru\\/product\\/",
"res": ":\nconst res = [];\n\nconst data = /__NUXT__.+/.exec($._)[0];\nconst guid = /guid:\"(.+?)\"/.exec(data)[1];\nconst images = JSON.parse(/productImages:\\s*(\\[.+?\\])/.exec(data)[1]);\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 const x = new XMLHttpRequest();\n x.open('GET', `https://bff.vseinstrumenti.ru/product/reviews?guid=${guid}&sortBy=createdAt&sortDirection=desc&hasImages=true&itemsPerPage=40&page=1`, false);\n x.withCredentials = true;\n x.send();\n const info = JSON.parse(x.responseText);\n\n for (let r of info.reviews) {\n for (const img of r.images) {\n const text = [r.productRating + '&#11088;'];\n if (r.content.advantages) text.push('&#128077;&#127995; ' + r.content.advantages);\n if (r.content.disadvantages) text.push('&#128078;&#127995; ' + r.content.disadvantages);\n if (r.content.comment) text.push(r.content.comment);\n if (r.content.reasonToBuy) text.push(r.content.reasonToBuy);\n res.push([img.replace('{width}x{height}', '1200x800'), text.join(' | ')]);\n }\n }\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": "hababr\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1960#17\nOLD\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=2680#6\n\n!!!\nФильтр поддерживает показ фото покупателей и их отзывов (в галерее товара).\n\nПРИМЕРЫ\nhttps://www.vseinstrumenti.ru/category/motopompy-143/\nhttps://orel.vseinstrumenti.ru/category/nabory-stolyarno-slesarnogo-instrumenta-4264/\nhttps://bryansk.vseinstrumenti.ru/category/schetchiki-vody-6935/?asc=asc&orderby=price"
},
"Vsemayki.ru": {
"link": "^vsemayki\\.ru/product/.+",
"res": ":\n$=JSON.parse($._.match(/\"__NEXT_DATA__\" type=\"application\\/json\">(.+?)<\\/script/)[1]).props.initialReduxState.application.tagmanagerEvents[1].payload.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/l6ahcr8\nOLD\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3760#11\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=2000#3"
},
"Wallhaven": {
"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?categories=001&purity=100&sorting=date_added&order=desc&page=2\nhttps://wallhaven.cc/search?q=green&categories=110&purity=100&sorting=random&order=desc&seed=slzFfC&page=2"
},
"WallHere": {
"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-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\nhttp://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": {
"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": {
"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": {
"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/meme/latest\nhttps://webmshare.com/c/random/latest"
},
"WeHeartIt-p": {
"useimg": 1,
"link": "^weheartit\\.com/entry/(\\d+).*",
"url": "weheartit.com/entry/$1",
"res": "<meta property=\"og:image\" content=\"([^\"]+)\"\n<title>([^|<]*)",
"img": "^data\\d*\\.whicdn\\.com/images/(\\d+)/(?!original\\.).*",
"note": "Baton34V\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3360\n\nEXAMPLES\n???"
},
"Weibo": {
"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.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/e9wvb3/request_weibo/kuy45bp/\n\n\n!!!\nA uBlock Origin rule is required for the sieve to work:\nweibo.com##.woo-picture-slot\n+\nThe sieve currently doesn't work with videos, but can zoom in on covers\nhttps://weibo.com/tv/home\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"
},
"WikiArt-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": {
"useimg": 1,
"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": "(?:<td>[^<]+</td>(?:\\n[^<]*)?<td>[\\d.]+\\s+[A-Za-z]?bps</td>(?:\\n[^<]*)?<td|(?![\\W\\w]+id=\"transcodestatus\">)fullMedia\"[^>]*>(?:\\n[^<]*)?<p|class=\"fullImageLink\" id=\"file\")>(?:\\n[^<]*)?<a href=\"([^\"]+)",
"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/kxo1ema\nOLD\nhttps://www.reddit.com/r/imagus/comments/17zsllc/comment/kvv0a22\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1980#2\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"
},
"WILDBERRIES.ru": {
"link": "^(?:global\\.)?wildberries\\.ru/(?:catalog/|product\\?card=)(\\d+)(?:/(detail\\.aspx|feedbacks)(\\S+)?)?",
"url": ": ''",
"res": ":\nvar r = [];\nvar that = this;\nconst asyncMode = true;\n\nconst x = new XMLHttpRequest();\nconst cardInfoUrl = constructHostV2($[1], '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 (($[1] || $[2] == 'detail.aspx') && !$[3]?.includes('#Comments') && !that.TRG.className.includes('product-card__rating') && !that.TRG.className.includes('product-card__count')) {\n const folder = 1e4 * Math.floor(info.nm_id / 1e4);\n if (info.media.has_video) {\n r.push([`https://video.wbstatic.net/video/new/${folder}/${info.nm_id}.mp4`, info.imt_name]);\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 resp.feedbacks?.forEach(f => f.photo?.forEach(p => r.push([\n urlFeedbackPhoto(p),\n '&#11088;' + f.productValuation + ' | ' + f.text + ' | ' + f.createdDate.substring(0, 10)\n ])));\n\n if (r.length == 0) r = false;\n\n if (asyncMode && r?.length) {\n that.TRG.IMGS_album = $[0];\n that.stack[$[0]] = r;\n that.stack[$[0]].unshift(1);\n that.album(0);\n }\n }\n x2.send();\n}\nx.send();\n\nreturn asyncMode ? null : r;\n\nfunction urlFeedbackPhoto(e) {\n const n = parseInt(e, 10);\n return `${constructHostV2(n, \"feedback\")}/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 = \"jpg\";\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 t;\n switch (!0) {\n case e >= 0 && e <= 143: t = \"01\"; break;\n case e >= 144 && e <= 287: t = \"02\"; break;\n case e >= 288 && e <= 431: t = \"03\"; break;\n case e >= 432 && e <= 719: t = \"04\"; break;\n case e >= 720 && e <= 1007: t = \"05\"; break;\n case e >= 1008 && e <= 1061: t = \"06\"; break;\n case e >= 1062 && e <= 1115: t = \"07\"; break;\n case e >= 1116 && e <= 1169: t = \"08\"; break;\n case e >= 1170 && e <= 1313: t = \"09\"; break;\n case e >= 1314 && e <= 1601: t = \"10\"; break;\n case e >= 1602 && e <= 1655: t = \"11\"; break;\n case e >= 1656 && e <= 1919: t = \"12\"; break;\n case e >= 1920 && e <= 2045: t = \"13\"; break;\n case e >= 2046 && e <= 2189: t = \"14\"; break;\n default: t = \"15\"\n }\n return `basket-${t}.wbbasket.ru`\n}\n\nfunction volFeedbackHost(e) {\n let t;\n switch (!0) {\n case e >= 0 && e <= 431: t = \"01\"; break;\n case e >= 432 && e <= 863: t = \"02\"; break;\n case e >= 864 && e <= 1199: t = \"03\"; break;\n case e >= 1200 && e <= 1535: t = \"04\"; break;\n case e >= 1536 && e <= 1919: t = \"05\"; break;\n default: t = \"06\"\n }\n return `feedback${t}.wbbasket.ru`\n}\n\nfunction constructHostV2(e, t = \"nm\") {\n const r = parseInt(e, 10)\n , n = ~~(r / 1e5)\n , a = ~~(r / 1e3);\n return `https://${\"nm\" === t ? volHostV2(n) : volFeedbackHost(n)}/vol${n}/part${a}/${r}`\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)/ms\\.webp|(basket-\\d+\\.wb\\.ru/.+/images)/c\\d+x\\d+/(\\d+\\.webp))",
"ci": 2,
"to": ":\nif ($[1]) {\n\treturn `${$[1]}/fs.webp`\n} else if ($[2]) {\n\treturn `${$[2]}/big/${$[3]}}`\n}",
"note": "hababr\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=2514&limit=1&m=1#1\nOLD\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=2480#2\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=2460#10\n\n\n!!!\nКурсор рекомендуется наводить на область с названием товара.\n+\nФильтр показывает видео (если есть) + оценку + фото и тексты отзывов покупателей.\n\n\nПРИМЕРЫ\nhttps://global.wildberries.ru/catalog?search=свитер+женский&tail-location=SNS\nhttps://global.wildberries.ru/catalog?category=15584&sort=rate&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"
},
"Wildcritters-p-b": {
"useimg": 1,
"link": "^wildcritters\\.ws/post/show/\\d+",
"res": ": <a href=\"(http[^\"]+)\" id=\"highres\"",
"img": "^(wildcritters\\.ws/data/)(?:preview|sample)/([\\da-f]{32}\\.).+",
"to": "#$1$2#jpg png gif#\n$1sample/$2#jpg png gif#",
"note": "EXAMPLES\nhttps://wildcritters.ws/post/list/ambiguous_gender\nhttps://wildcritters.ws/post/list/open_mouth"
},
"Willhaben.at-p": {
"link": "^willhaben\\.at/iad/[^/]+/d/.+",
"res": ":\nconst json = JSON.parse($._.match(/\"application\\/json\">([^<]+)/)[1]).props.pageProps.advertDetails;\nconst desc = json.attributes.attribute[0]?.values[0] ?? '';\nreturn json.advertImageList.advertImage.map(i=>[i.referenceImageUrl, desc]);\n",
"img": "^(cache\\.willhaben\\.at/[\\w/-]+)_hoved(\\.\\w+)",
"to": "$1$2",
"note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/130svfu/comment/jnit0kk\nOLD\nhttps://www.reddit.com/r/imagus/comments/jrqtxt/update_sieve_for_willhabenat\n\n\nEXAMPLES\nhttps://www.willhaben.at/iad/kaufen-und-verkaufen/l/pullex\nhttps://www.willhaben.at/iad/kaufen-und-verkaufen/marktplatz/damen-jacken-maentel/winterjacken-3328/a/zustand-neu-22?PRICE_FROM=20&treeAttributes=23&treeAttributes=2546\nhttps://www.willhaben.at/iad/kaufen-und-verkaufen/marktplatz?keyword=ikea&topicId=1001"
},
"Wired": {
"useimg": 1,
"link": "^wired\\.com/[^/]+/.+",
"img": "^(media\\.wired\\.com/photos/\\w+/)[\\d:]+/w_\\d+(,c_limit/.+\\.\\w+)",
"to": ":\nif($[1])return $[1]+$[2];\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/130svfu/comment/jo3ahc3\n\nEXAMPLES\nhttps://www.wired.com/category/culture/\nhttps://www.wired.com/tag/video-games/"
},
"WMPics": {
"useimg": 1,
"link": "(wmpics\\.space/)[^-]+(-[^.]+)\\.html",
"res": "(?:itemprop=\"contentUrl\"|img) src=\"(//wmpics\\.space/di-[^\"]+)",
"img": "(wmpics\\.space/d)[^-]+(-[^.]+\\.[a-z0-9+]+)",
"to": "$1i$2",
"note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/130svfu/comment/jn8v5j7\n\nEXAMPLES\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1360#11"
},
"WordPress_fix": {
"img": "^(.+/wp-content/uploads/.+)-\\d+x\\d+(\\.jpg)$",
"to": "$1$2",
"note": "Rodny"
},
"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\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1360#11"
},
"Wykop.pl": {
"img": "^((?:x\\w\\.)?(?:cdn\\d+\\.imgwykop\\.pl|wykop.pl/cdn)/c\\d+/[^,]+),[^.]+",
"to": "$1",
"note": "EXAMPLES\nhttps://wykop.pl/k/technologia\nhttps://wykop.pl/k/informacje/strona/2\nhttps://wykop.pl/szukaj/wszystkie/star"
},
"xHamster_gallery-x-p": {
"link": "^(?:[a-z]{2}\\.)?xhamster2?\\.(?:com|desi)/photos/gallery/[\\w/-]+",
"res": ":\nif(!this.gallery)this.gallery=[]\nif(!this.ls)this.ls=0\nthis.gallery.push(...[...$._.matchAll(/<a href=\"([^\"]+)\" data-height=/g)].map(i=>[i[1]]))\nif(/data-page=\"next\" href=\"[^\"]/.test($._)&&this.ls<25){\nthis.ls++\nreturn {loop:$._.match(/data-page=\"next\" href=\"([^\"]+)/)[1]}\n}else{\nlet a = this.gallery\ndelete this.gallery\ndelete this.ls\nif(!a.length){\na=JSON.parse($._.match(/window\\.initials=(.+?);</)[1])\na=a.photosGalleryModel.photos.items.find(i=>i.id===a.photoModel.id).imageURL\n}\nreturn a\n}",
"note": "imqswt\nhttps://www.reddit.com/r/imagus/comments/15hwwri/comment/juvh7os\n\nEXAMPLES\nhttps://xhamster.com/photos/categories/blonde"
},
"xHamster_video-x-p": {
"link": "^(?:.*\\.)?xhamster2?\\.(?:com|desi)/videos/.*-.*",
"res": ":\n$=Object.values(JSON.parse($._.match(/\"sources\":{\"mp4\":({.+?}),/)?.[1]||'{}'))\nreturn $.length?[[['#'+$[$.length-1],$[Math.floor($.length/2)]||'']]]:''",
"note": "imqswt\nhttps://www.reddit.com/r/imagus/comments/z0zyox/comment/l3faz1j\nOLD\nhttps://www.reddit.com/r/imagus/comments/15hwwri/comment/jur9krc\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=880#19\n\n\nПРИМЕРЫ / EXAMPLES\nhttps://xhamster.com/categories/milf\nhttps://www.reddit.com/domain/xhamster.com/new\nhttps://www.reddit.com/domain/xhamster.desi/new"
},
"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": {
"link": "(.*\\.)?xnxx.com\\/(prof-)?video-.*",
"res": ":\nconst url = $._.match(/setVideoUrlHigh.*\\.mp4\\?.*?'/)[0].replace(/setVideoUrlHigh.*\\('(.*?)'/, '$1');\n\nreturn url;",
"note": "gpl2731\nhttp://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небольшой размер видео потому что сайт использует HLS для HD-видео (пока не поддерживается) + платные видео (значок замка в названии) недоступны.\n==\nHD videos are in HLS only (not supported so far) + paid videos (lock icon in the name) are not available.\n\nПРИМЕРЫ / EXAMPLES\nhttps://www.xnxx.com/best/2022-12/5\nhttps://www.xnxx.com/search/3d-hentai/8\nhttps://www.xnxx.com/search/gold/milf+blowjob/7"
},
"Xpert.ru": {
"link": "^xpert\\.ru/products\\.php\\?showProduct=\\d+",
"res": ":\nlet i = $._.indexOf('<ul id=\"mycarousel\"');\nif(i<0) { return $._.match(/<meta itemprop=\"image\" content=\"([^\"]+)\"/)[1]; }\nlet t = $._.indexOf('</ul>', i);\nif(t<0) { return null; }\nlet res = [];\nlet re = /<li><img src=\"([^\"]+)\"/gi\nlet data=$._.substring(i,t);\nlet a = re.exec(data);\nwhile(a) {\n res.push([a[1].replace(/_\\d+\\./,'.')]);\n a = re.exec(data);\n}\nreturn res;",
"note": "Baton34V\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=640#7\n\nПРИМЕРЫ\nhttps://www.xpert.ru/products.php?category_id=523"
},
"XUP.in-p": {
"link": "^(.*)xup\\.in/exec.+",
"note": "destiny child\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1380#10\n\n!!!\nТакже в некоторых случаях требутся повторное наведение курсора.\n==\nIn some cases, you need to hover the cursor again.\n\nEXAMPLES\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1360#11"
},
"XUP.in_2-p": {
"link": "^xup\\.in/dl,\\d+/[\\w-]+\\.\\w+/",
"res": ":\nlet srcS=atob($._.match(/var \\w+ = \"([^\"]+)\";/)[1]);\nlet res=srcS.match(/<div id=\"picture\"><img src=\"([^\"]+)\" alt=\"([^\"]+)\"/);\nreturn [res[1],res[2]];",
"note": "Baton34V\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1440#15\n\nПРИМЕРЫ / EXAMPLES\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1393&limit=1&m=1#1"
},
"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\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=620#12\n\n\nПРИМЕРЫ / EXAMPLES\nhttps://xyzcomics.com/?s=BABES\nhttps://xyzcomics.com/tag/3dcaptor/\nhttps://xyzcomics.com/category/all-multporn-comics/"
},
"Yahoo-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_avatars": {
"img": "^(avatars(\\.mds)?\\.yandex\\.net/get-[^?]+/)[^?].*",
"to": "$1orig"
},
"YANDEX_Disk|yadi.sk": {
"link": "(yadi\\.sk|disk\\.yandex\\.ru)/\\w/\\w+",
"res": ":\nvar re = /<meta property=\"og:image\" content=\"([^\"]+)\">/gi;\nvar a = re.exec( $._ );\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 a[1].replace('&amp;','&').replace(/size=[^&]+/, 'size=10000x10000').replace(/logo=[^&]*/,'logo=0');",
"img": "^\\d\\.downloader\\.disk\\.yandex\\.(?:com|ru)/preview/[\\da-f]{64}/inf/[^?]+\\?(?:[^&]+&)*?(?:content_type=image).+",
"to": ":\nreturn $[0].replace(/&crop=[^&]*/, '').replace(/(&size=)[^&]+/, '$110000x10000')",
"note": "Baton34V + hababr (fix)\n01-10-21 (PM)\nOLD\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3540#20\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=1160#6\n\nПРИМЕРЫ\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3540#4"
},
"YANDEX_fotki": {
"img": "^(img\\d*-fotki\\.yandex\\.(?:ru|net)/get/\\d+/\\S+/\\w+_).+",
"to": "$1orig",
"note": "64h\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1080#8\n\nПРИМЕРЫ\nhttps://forum.rutoken.ru/topic/2673/\nhttps://club.osinka.ru/topic-58637?p=19282112#19282112"
},
"YANDEX_Images": {
"link": "^ya(?:ndex)?\\.\\w+/images/search\\?\\S+?img_url=([^&]+).*",
"loop": 1,
"to": ":\nconst original_img_url = decodeURIComponent($[1]);\nconst inner_html = this.TRG.parentNode.innerHTML.replace(/&amp;/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/z0zyox/comment/kuh3hxu\nOLD\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1080#8\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3740#4\n\n!!!\nЕсли увеличения не происходит, рекомендуется навести на значок с размером изображения (внизу справа).\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\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1120#21\nOLD\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1080#3\n\n!!!\nДля увеличения Я-Картинки > ЛКМ > \"Cвязанные картинки\". Работает пока только в Firefox / Waterfox."
},
"YANDEX_Market": {
"link": "^market\\.yandex\\.[^/]+/product-.*",
"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;\n\nconst page = new DOMParser().parseFromString($._, \"text/html\");\n\n// product images\nlet data = JSON.parse($._.match(/({\"widgets\":{\"@MarketNode\\/StickyProductCard\".+?})<\\/noframes>/)[1]);\nlet imgs = [];\nObject.values(data.collections.offer).forEach(o => o.pictures.forEach(p => {\n let n = p.original;\n let origImg = `https://avatars.mds.yandex.net/get-${n.namespace}/${n.groupId}/${n.key}/orig`;\n // skip duplicates\n if (!imgs.find(i => i[0] == origImg))\n imgs.push([origImg]);\n}));\n\n// gallery\nlet hasVideo = false;\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 = ['&#11088;' + r.averageGrade];\n if (r.comment) text.push(r.comment);\n if (r.pro) text.push('&#128077;&#127995; ' + r.pro);\n if (r.contra) text.push('&#128078;&#127995; ' + 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+-\\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;\n",
"img": "^mdata\\.yandex\\.[^/]+/i\\?path=[^/]+\\.(?:jpe?g|png|gif|bmp)$",
"note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/18n32dx/comment/kebeozx\nOLD\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=2428&limit=1&m=1#1\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=2120#16\n\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\nhttps://market.yandex.ru/model.xml?modelid=8226067&hid=91491"
},
"YANDEX_Realty": {
"link": "^realty\\.ya\\.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": "hababr\nhttp://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/"
},
"YAPfiles.ru": {
"link": "^yapfiles\\.ru\\/show\\/\\d+\\/.*\\.html$",
"ci": 1,
"res": "name=\"direct_link\" value=\"([^\"]+)\"",
"note": "Baton34V\nhttp://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\nhttp://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": {
"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\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3720#20\n\nПРИМЕРЫ\nhttps://rutracker.org/forum/viewtopic.php?t=5615920\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1360#11"
},
"Yarn": {
"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_photos/[^?]+\\?select=[\\w-]+",
"res": "=\"og:image\" content=\"([^\"]+)\n=\"og:description\" content=\"([^\"]+)",
"img": "^(s\\d(yelp\\d-a\\.akamaihd\\.net|-media\\d\\.\\w\\w\\.yelp(?:cdn|assets)\\.com)/[a-z]?photo/[\\w-]+/)(?!o)[^.]+",
"to": "$1o",
"note": "EXAMPLES\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"
},
"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"
},
"XVideos-x-p": {
"link": "^(?:.*\\.)?xvideos\\.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/kwscpo5\nOLD\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=220#13\nhttps://www.reddit.com/r/imagus/comments/iv556b/nsfw_bunch_of_sieves_for_popular_adult_site_videos/\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.xvideos.com/c/Milf-19/4\nhttps://www.xvideos.com/c/s:uploaddate/Teen-13\nhttps://www.xvideos.com/?k=perfect"
},
"Ylilauta": {
"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/satunnainen/131627307"
},
"Yodayo": {
"link": "^yodayo\\.com/\\d+/posts/[a-f0-9-]+/",
"res": ":\nreturn [...$._.matchAll(/div class=\"relative\"><img src=\"([^\"]+)/g)].map(i=>[i[1]])",
"note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/15dz344/comment/jubjesu\n\nEXAMPLES\nhttps://yodayo.com/explore/?key=&type=posts&sort=top\nhttps://yodayo.com/1/users/2cd3c9cd-1148-42b1-8b45-69035ac43804/\nhttps://yodayo.com/explore/?key=GREEN&type=posts&sort=recent"
},
"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/"
},
"Youla.ru": {
"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\nhttp://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": {
"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\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3360\n\nПРИМЕРЫ / EXAMPLES\nhttps://youpic.com/inspiration\nhttps://www.reddit.com/domain/youpic.com/new"
},
"YouPorn-x": {
"link": "^(?:.*\\.)?youporn\\.com\\/watch/(\\d+)/.*",
"url": "https://www.youporn.com/api/video/media_definitions/$1/",
"res": ":\nconst max_resolution = 1080;\nconst vid=JSON.parse($._).filter(i=>i.format===\"mp4\"&&parseInt(i.quality)<=max_resolution).sort((a,b)=>parseInt(b.quality)-parseInt(a.quality));\nreturn vid[0].videoUrl",
"note": "imqswt\nhttps://www.reddit.com/r/imagus/comments/14kvena/comment/jpzgdx8\nOLD\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=3720#6\nhttps://www.reddit.com/r/imagus/comments/iv556b/nsfw_bunch_of_sieves_for_popular_adult_site_videos/"
},
"YOUTUBE": {
"useimg": 1,
"link": "^(?:(?:(?:(?:\\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?)?.*$",
"ci": 1,
"url": ": (()=>{var disable_on_thumbs = false , disable_on_links = false , disable_on_iframe = false ; if(disable_on_iframe&&this.node.IMGS_TRG?.localName==='iframe'||disable_on_links&&!this.node.IMGS_TRG||disable_on_thumbs&&(/\\/embed\\/[\\w-]{11}\\?thumb\\?/.test(this.node.href)||this.node.id===\"thumbnail\")||(this.node.nodeName===\"YTD-BADGE-SUPPORTED-RENDERER\"||this.node.id!==undefined&&this.node.id!=='title'&&this.node.id!=='video-title'&&/^(?: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)$/.test(this.node.className)))throw new Error('YouTube sieve not used on this page element');return 'https://www.youtube.com/embed/'+$[1]+'?'+$[2]+'&'+$[3]+'&'+$[4]})()",
"res": ":\n// config options\nvar config = {\n// change the display order of the image/videos by using 1, 2, or 3. disable with 0 \n order: {\n \"thumb\": 1,\n \"native\": 2,\n \"embed\": 3\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 lowResFirst: false, // native player shows 360p video, toggle resolution with TAB\n thumbVideoInfo: true, // display sidebar or detailed caption on thumbnail\n nativeVideoInfo: false // display sidebar or detailed caption on native player\n}\n\nfallback = () => {\n this.TRG.IMGS_ext_data = [['', `<imagus-extension type=\"iframe\" url=\"https://youtube.com/embed/${$[1]}?${timeParam}\"></imagus-extension>`]]\n return { loop: 'imagus://extension' }\n}\n\nvar fL, fH, f = {}, g = false, cipher, decsig, o, mfr, ps, basejs\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 fnnameresult = /\\.get\\(\"n\"\\)\\)&&\\(b=([^(]+?)(?:\\[(\\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 b\\\\.join\\\\(\"\"\\\\))};', 's').exec(data)\n const [_, argname, fnbody] = _argnamefnbodyresult\n return new Function([argname], fnbody)\n}\nunthrottle = window.imagusCache[baseJsUrl + '_unthrottle'] || parseunthrottle(basejs)\nwindow.imagusCache[baseJsUrl + '_unthrottle'] = unthrottle\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(n))\n u.search = p.toString()\n return u.toString()\n}\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/player?imagus&key=' + api_key, false)\n x.setRequestHeader('Content-Type', 'application/json')\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 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 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 // 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)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)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 var orderSort = Object.entries(config.order).filter(i=>i[1]>=1).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': return res[1] || res[2]\n case 'embed': return res[2] || res[1]\n }\n })\n if (res.length == 2) ordered.length = 2\n this.TRG.IMGS_ext_data = ordered\n return { loop: 'imagus://extension' }\n}\n\nfor (let i of [null, 'embed', 'agegate']) if (player_response(i)) break\n\nif (['ERROR', 'LOGIN_REQUIRED'].indexOf(ps.status) != -1) return [ps.errorScreen.playerErrorMessageRenderer.thumbnail.thumbnails[0].url, '[' + ps.status + ', ' + ps.reason + ']']\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' + q.author,\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 = o.streamingData.formats\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)\n const helpername = helpernameresult[1]\n const helperresult = new RegExp('var ' + escapeRegExp(helpername) + '={[\\\\s\\\\S]+?};').exec(data)\n const helper = helperresult[0]\n return new Function([argname], helper + '\\n' + fnbody)\n }\n decsig = parseDecsig(basejs)\n } catch (ex) {\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 = [(!config.lowResFirst ? '#' : '') + fH + ct, (config.lowResFirst ? '#' : '') + fL + ct]\n res.push([fH, title])\n}\n\nreturn prepResult(res, descr)",
"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 + hababr/Imagus_fan (edit)\nhttps://www.reddit.com/r/imagus/comments/1aw5m5p/improved_youtube_sieve/\nOLD\nhttps://www.reddit.com/r/imagus/comments/1akpjv2/comment/kpb87ci\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=2500#6\nhttps://www.reddit.com/r/imagus/comments/16pjyy2/comment/kbizq77\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ПРИМЕРЫ / EXAMPLES\nhttps://www.reddit.com/domain/youtube.com/new\nhttps://www.reddit.com/domain/youtu.be/new\nhttps://www.youtube.com/@youtubeshortsbeta9577/shorts\nhttps://www.reddit.com/r/imagus/comments/r19duk/comment/hxfd2pa\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\nhttp://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": {
"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": {
"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://www.reddit.com/r/imagus/comments/14iuu77/imagus_sieve_for_yupoo/"
},
"Zapodaj": {
"link": "(zapodaj\\.net/)([^.]+\\.[^.]+)\\.html",
"img": "(zapodaj\\.net/)([^.]+\\.[^.]+)\\.html",
"to": "$1images/$2",
"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://zapodaj.net/c9efff286d3fd.jpg.html"
},
"ZdravCity.ru": {
"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\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1340#20\n\n!!!\nПри входе на сайт может сработать защита (CloudFlare), фильтр будет работать только после прохождения \"аутентификации\".\n\nПРИМЕРЫ\nhttps://zdravcity.ru/c_termometry/\nhttps://zdravcity.ru/search/?what=витамины\nhttps://zdravcity.ru/catalog/lekarstvennye-preparaty/antibakterialnye-sredstva/antibiotiki/r_ufa/"
},
"Zerochan": {
"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/?s=fav\nhttps://www.zerochan.net/Brown?q=brown&p=2\nhttps://www.zerochan.net/Star+%28Ikaruga%29?q=Star+%28Ikaruga%29"
},
"zip2img": {
"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\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1360#11"
},
"Zonerama": {
"link": "eu.zonerama.com/(?:\\w+)/Photo/(?:\\d+)/(?:\\d+)",
"res": "<meta property=\"og:image\" content=\"([^\"]+)\"",
"note": "destiny child\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1620#2\n\nEXAMPLES\nhttps://eu.zonerama.com/Hrubasovofotoalbum/Album/5718541\nhttps://eu.zonerama.com/Hrubasovofotoalbum/258382?count=30"
},
"ZR.ru": {
"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\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=2660#20\n\n\n!!!\nДля работы некоторых изображений на ZR требуется фильтр uBO:\nwww.zr.ru##.lfaobO.styled__FullscreenButton-sc-z43jib-7\n\n\nПРИМЕРЫ\nhttps://www.zr.ru/news/\nhttps://www.zr.ru/content/articles/949806-v-poiskakh-sinergii/\nhttps://www.zr.ru/content/news/942359-uzhasnaya-i-neudobnaya-na-chem-po/\nhttps://forum.zr.ru/forum/gallery/"
},
"Zupimages-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\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1380#10\n\nEXAMPLES\nhttps://www.reddit.com/domain/zupimages.net/new/\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1369#2"
},
"[_dereferers_]": {
"link": "^[^/]{3,70}/\\??(https?:[^?#]+\\.(?:jpe?g|a?png|gifv?|bmp|svgz?|web[pm]|og[gv])).*",
"ci": 1,
"dc": 1,
"loop": 1,
"to": "$1"
},
"[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\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=40#15"
},
"[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]-p": {
"link": "^(?:([^/]{5,70})/(?:image|post)|tumblr\\.com/([\\w-]+))/(\\d{8,18})(?:/[^.?]*$|\\?|#|$).*",
"url": "https://api.tumblr.com/v2/blog/$1$2/posts?id=$3&filter=raw&api_key=4AjWu4k7xrMxAqiJjppAHatW1QLQGxZ2NKo2XdTlcov4i8qZuw",
"res": ":\n$._=JSON.parse($._)\nif($._.meta.status!=200)return null\n$=$._.response.posts[0]\nvar t=$.caption||''\nreturn $.body ? [...new DOMParser().parseFromString($.body,\"text/html\").querySelectorAll('img,source')].map((i,n)=>[i.srcset?.split(/\\s+\\d+w(?:,\\s+)?/).filter(Boolean).pop()||i.src,(!n?t:'')]) : $.photos ? $.photos.map((i,n)=>[i.original_size?.url,(!n?t:'')]) : $.video_url ? [$.video_url,t] : $.permalink_url ? {loop:$.permalink_url} : null",
"img": "^(?:((?:\\d\\d\\.)?media)|data)(\\.tumblr\\.com/(?:[\\da-f]{32}/)?tumblr_\\w+_)((?:\\d{2,4}|raw)\\.(?!gif)|frame\\d*\\.jpg)",
"to": ":\nreturn $[4][0]=='f' ? 'vt'+$[2]+'.mp4' : '//'+($[1]||'78.media')+$[2]+'#1280 500 400#.'",
"note": "Imagus_fan\nhttps://www.reddit.com/r/imagus/comments/191bxho/comment/kh75bgm\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.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"
},
"[PeerTube]": {
"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==\nThere may be problems with individual videos on Chrome/Chromium (they take a very long time to load - endless \"white spinner\").\n\nПРИМЕРЫ / EXAMPLES\nhttps://peertube.su/videos/overview\nhttps://peertube.su/videos/recently-added\nhttps://peertube.tv/search?categoryOneOf=8\nhttps://peertube.tv/search?search=green&searchTarget=local"
},
"[SMF_images]": {
"link": "^[^/]+/forum/index\\.php\\?(.+)\\;attach=\\d+\\;image$",
"note": "Rodny\n\nEXAMPLES\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"
},
"[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???"
},
"[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-2057616\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": "!!!\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\nhttps://www.typepad.com/showcase/health-environment"
},
"[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???"
},
"[marginalhacks]": {
"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???"
},
"[Coppermine_gallery]": {
"img": "^([^/]{3,70}/(?:[^/]{3,}/){0,2}?albums/(?:[^/]+/)+?)(?:thumb|normal)_(?=[^/]+$)",
"to": "$1# normal_#",
"note": "EXAMPLES\nhttps://coppermine-gallery.net/demo/cpg15x/thumbnails.php?album=3\nhttps://coppermine-gallery.net/demo/cpg15x/thumbnails.php?album=2"
},
"[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"
},
"[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-IH-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???"
},
"[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": ":\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\nreturn $[0];",
"note": "hababr\nhttps://www.reddit.com/r/imagus/comments/1blyg8c/comment/kwbchh9\nOLD\nhttps://www.reddit.com/r/imagus/comments/1bg8o7a/comment/kvvg32v\nhttps://www.reddit.com/r/imagus/comments/1bg8o7a/comment/kvpfsqd\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\nhttp://genphys.phys.msu.ru/rus/lecdemo/Mech/index.php"
},
"[phpgraphy.sourceforge]": {
"img": "^([^/]+/(?:[^/]+/)*?index\\.php\\?)(?:display(?:pic)?|previewpic)=([^&]+).*",
"to": ":\nreturn $[2].slice(-13) === 'directory.jpg' ? $[0] : $[1] + 'displaypic=' + $[2];",
"note": "EXAMPLES\n???"
},
"[WordPress]": {
"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\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=1571#1"
},
"[VK]": {
"link": "^(?:m\\.)?vk\\.com/photo([\\d\\-_]+)(?:\\?(tag)=(\\d+))?.*",
"url": ": 'vk.com/al_photos.php :list=' + ($[3] ? $[2]+$[3]:((this.node.parentNode.getAttribute('onclick')+'').match(/wall-[\\d_]+/)||'')+'')+'&act=show&al=1&photo='+$[1]",
"res": ":\nvar m = /[\\-\\d_]+/, img, ret = null, cache = {'_arr': []}, i, pid = $.url[1].substr($.url[1].lastIndexOf('=') + 1), x = JSON.parse($._.slice($._.indexOf('{'))).payload[1][3]\nfor (i in x) {\n ret = x[i].w_src ? ['#' + x[i].w_src] : [];\n ret.push(x[i].z_src || x[i].y_src || x[i].x_src);\n if (x[i].id == pid) { img = [[ret]] }\n else { cache[x[i].id] = ret; cache._arr.push('a[href^=\"/photo'+x[i].id+'\"]') }\n}\ncache._arr.length && [].forEach.call(document.body.querySelectorAll(cache._arr.join(',')), function(node) {\nvar x = cache[node.pathname.match(m)[0]];\nif (!node.IMGS_c) {\n node.IMGS_c_resolved = x;\n node.firstElementChild && (node.firstElementChild.IMGS_c_resolved = x);\n}\n})\nreturn img",
"img": "^(?:cs\\d+|pp|sun[\\-0-9]+)\\.(?:userapi\\.com|vk\\.me)\\/(c\\d+\\/*[uv]\\d+\\/.+\\/|.+\\/).+",
"to": ":\nvar y, x = this.node,p=x&&x.parentNode;\nif (x.dataset.src_big) {\n x = x.dataset.src_big.split('|')[0];\n return x;\n}\nelse if (x) {\n if (p && p.href && x.classList.contains('page_doc_photo')) {\n x = p.href + '&wnd=1';\n return x;\n }\n else if ((y=x.getAttribute('onclick')) && y.indexOf('showPhoto(')>0) {\n x = JSON.parse(y.match(/(\\{.+\\})/)[0]).temp;\n x=(x.w ? '#' + x.w + '\\n' : '') + (x.z || x.y || x.x);\n return x;\n }\n else if ((y=p.getAttribute('onclick')) && y.indexOf('showPhoto(')>0) {\n x = JSON.parse(y.match(/(\\{.+\\})/)[0]).temp;\n x=(x.w ? '#' + x.w + '\\n' : '') + (x.z || x.y || x.x);\n return x;\n }\n else if ((y=x.getAttribute('style')) && (y.indexOf('background-image:')>0)) {\n var re=/.+background-image: url\\((.*)\\).*/;\n z=re.exec(y);\n if (z!=null) return z[1];\n }\n}\nreturn $[0];",
"note": "Baton34V\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=2860#19\nOLD\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=1860#14\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=1740#13\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=1560#5\n\n!!!\nПоместить ниже дефолтных фильтров, т.к. мешает другим фильтрам для userapi.com, пример:\nhttps://vrotmnen0gi.livejournal.com/3441994.html\nобсуждение:\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=2000#14\n+\nЕсли не срабатывает в альбомах, рекомендуется снять галку в \"Приоритет \"img\" над \"link\".\n+\nУвеличение аватарок пользователей возможно - для этого нужно выключить фильтр Chevereto, включить Chevereto_agressive и обновить страницу.\n==\nPut it below the default filters, because it interferes with other filters for userapi.com, example:\nhttps://vrotmnen0gi.livejournal.com/3441994.html\ndiscussion (rus):\nhttps://forum.ru-board.com/topic.cgi?forum=5&topic=48222&start=2000#14\n+\nIf it does not work in albums, it is recommended to uncheck \"Priority \"img\" over \"link\".\n+\nAn increase in user avatars is possible - to do this, turn off the Chevereto sieve, turn on Chevereto_agressive and refresh the page."
},
"[Chevereto]": {
"link": "^(?!(?:x|twitter)\\.com)[^/]{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/16s3qjn/comment/kdqo4ui\nOLD\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=2220#9\nhttps://www.reddit.com/r/imagus/comments/152pg3l/comment/jxk3sj4\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\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=20#14"
},
"[MediaGrabber]": {
"link": "^(?!(?:[a-z0-9.-]+\\.)?(?:8muses\\.(?:com|io)|4chan(?:nel)?\\.org|bdnews24\\.com|geograph\\.org\\.uk|hentaisea\\.com|joemonster\\.org|kinorium\\.com|nhentai\\.net|rule34\\.xxx|twitter\\.com|ya\\.ru)/).*(?:^z\\.photos/i|a|alb|album|cld|cloud|drop|file|files|fotka|foto|g|gif|gifs|host|hosting|i|ib|im|ima|imag|image|images|imagine|img|jpg|jpeg|keep|load|media|meme|photo|pic|pica|pico|pics|pict|picu|pik|pix|pixel|pixs|png|post|put|save|screen|send|share|shot|snap|stock|stream|thumb|thumbnail|thumbnails|tumb|upl|upload|vi|vid|video|view|watch/\\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\nhttp://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\nhttp://forum.ru-board.com/topic.cgi?forum=5&topic=50874&start=20#14",
"off": 1
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment