Расширенная настройка

https://hoothin.github.io/UserScripts/Pagetual/pagetualRules.json

Discord Github Twitter Аутсорсинготкрыть в новом окне

Если вы находите Pagetual полезным и можете себе это позволить, мы будем очень признательны за пожертвование на его разработку. Если нет, не беспокойтесь – наслаждайтесь!💞

PayPal

Ko-fi

愛發電
Присоединяйтесь к 💬Discord
Следите в 🕊️Twitter
Отправить 📧E-Mail
Сделано с ❤️ Hoothin
[
  {
    "name":"yande",
    "url":"^https://yande-demo\\.re/",
    "pageElement":"ul#post-list-posts>li",
    "nextLink":"a.next_page",
    "css":".javascript-hide {display: inline-block !important;}"
  },
  {
    "name": "so.3dm",
    "url": "^https://so\\.3dmgame-demo\\.com",
    "pageElement": "div.content > div.search_wrap > div.search_lis",
    "action": 1
  },
  {
    "name":"xxgame",
    "url":"^http://www\\.xxgame-demo\\.net/chinese",
    "pageElement":"div.layui-row>div.layui-col-md4:not(div:nth-child(5),div:nth-child(6),div:nth-child(7))",
    "nextLinkByUrl":[
      "(http://www\\.xxgame-demo\\.net/chinese/?)(?:\\?page=|$)(\\d*)",
      "$1?page={$2+1}"
    ]
  }
]

Больше примеров правилopen in new window

name

Название целевого сайта

"name": "Название сайта"

author

Автор этого правила

"author": "Hoothin"

example

Пример URL для этого правила

"example": "https://abc.com"

urlopen in new window

RegExp для URL целевого сайта

"url": "^https://abc\\.com/\\d+"

pinUrlopen in new window

Иногда ссылка на следующую страницу или элемент страницы отсутствует. Установите true, чтобы закрепить правило только по URL, вместо поиска элементов с помощью интеллектуальных правил.

"pinUrl": true

enableopen in new window

0 означает остановить действие, когда все условия совпали

"enable": 0

includeopen in new window

Селектор или xpath элемента, который должен присутствовать

"include": "div.content"

excludeopen in new window

Селектор или xpath элемента, который не должен присутствовать

"exclude": "div.content"

waitopen in new window

Время ожидания готовности страницы, когда вы уверены, что URL соответствует сайту. Вы также можете использовать код JavaScript, который возвращает булево значение, для проверки готовности страницы.

"wait": 500
"wait": "let img=doc.querySelector('ul.list img');return img!=null"

waitElementopen in new window

Массив ["существует", "не существует"] содержит "селектор или xpath элемента, который должен существовать (для некоторых элементов с отложенной загрузкой)" и "селектор или xpath элемента, который не должен существовать (для некоторых плейсхолдеров загрузки, которые требуют прокрутки для отображения)".

"waitElement": [
    ".summary",
    "#popular.fade:not(.in)"
]

actionopen in new window

0 означает загрузку URL и вставку статического HTML, 1 означает загрузку через iframe, чтобы динамический код JavaScript на странице мог сработать, 2 означает принудительную вставку iframe внизу страницы.

"action": 1

Селектор или xpath ссылки на следующую страницу. Отключается, если установлено значение 0. Можно задать массив для нескольких ссылок.

"nextLink": ".page-next>a"
"nextLink": [
    ".page1-next>a",
    ".page2-next>a",
    ".page3-next>a"
]

nextLinkByUrlopen in new window

Если нет элемента "далее", можно использовать это для генерации href из текущего URL. [0] - строка RegExp, [1] - строка для замены, [2] - селектор или xpath элемента, который должен присутствовать, [3] - селектор или xpath элемента, который не должен присутствовать. Можно использовать {} для вычисления простого кода.

"nextLinkByUrl": [
    "(&page=(\\d+))?$",
    "&page={$2+1}"
]
"nextLinkByUrl": [
    "(&page=(\\d+))?$",
    "&page={$2+1}",
    ".disable>button"
]

nextLinkByJs (doc)open in new window

Используйте для выполнения кода JavaScript, который возвращает URL следующей страницы, используя doc (документ каждой загруженной страницы).

"nextLinkByJs": "let n=doc.querySelector('a.curr+a');if(n)return n.href.replace(/^javascript:.*\\((\\d+)'\\);/,'$1_.html');"

stopSignopen in new window

Остановить загрузку следующей страницы при совпадении с этим признаком.

"stopSign": ["#pagenum", ".disable",
    [
        "#pagenum",
        "(\\d+)"
    ],
    [
        "#pagenum",
        "\\/(\\d+)"
    ]
] 

pageElementopen in new window

Селектор или xpath основного контента, который нужно вставить. Можно задать массив для нескольких элементов.

"pageElement": ".Context>.Article"

pageElementByJs (over)open in new window

Используйте для выполнения кода JavaScript и создания элементов, которые вы хотите вставить. Требуется over(eles) для обратного вызова с массивом элементов для вставки.

"pageElementByJs": "let src=match[1]+match[3];img.onload=()=>{over([img])};img.onerror=e=>{over()};img.src=src;"

replaceElementopen in new window

Селектор или xpath элемента, который вы хотите заменить новым. Может быть массивом.

"replaceElement": "#page"
"replaceElement": ["#page1", "#page2"]

lazyImgSrcopen in new window

Атрибут изображения, указывающий на реальный src. Может быть установлен как ["lazysrc", "removeProp1,removeProp2"] для удаления свойств изображения.

"lazyImgSrc": "data-cfsrc"
"lazyImgSrc": ["data-lazy-src", "removeProp1,removeProp2"]

cssopen in new window

Добавьте CSS, чтобы показать некоторые скрытые элементы. Если начать с "inIframe:", CSS будет действовать только на следующей странице в iframe.

"css": ".card-lazy{display:none}"

insertopen in new window

Позиция, в которую вы хотите вставить. Можно задать массив для нескольких позиций.

"insert": "ul#feed-main"

insertPosopen in new window

1 означает вставить до, 2 - просто добавить в конец целевого элемента.

"insertPos": 2

iframeInit (win, iframe)open in new window

Код JavaScript, который выполняется как можно быстрее, до выполнения любого другого кода в iframe.

"iframeInit": "win.self=win.top;"

init (doc, win, iframe, click, enter, input)open in new window

Код JavaScript, который выполняется только один раз на текущей основной странице или в каждом iframe с doc (документ основной страницы или iframe).

"init": "if(doc)doc.querySelector('[data-title=sh]').click();"

pagePre (response)open in new window

Код JavaScript, который выполняется после получения ответа от URL следующей ссылки. Вы можете изменить содержимое ответа и вернуть его.

"pagePre": "return decodeURI(response).replace(/[\\\\]/g,'')"

pageInit (doc, eles)open in new window

Код JavaScript, который выполняется с каждой вставленной страницей, используя doc (документ каждой загруженной страницы) и eles (элементы, найденные по правилу). Выполняется до вставки, можно вызывать события, например onView().

"pageInit": "let ops=doc.querySelectorAll('op');[].forEach.call(ops,op=>{img.src=op.value;imgCon.appendChild(img)})"

pageAction (doc, eles)open in new window

Код JavaScript, который выполняется с каждой вставленной страницей, используя doc (документ каждой загруженной страницы) и eles (элементы, найденные по правилу). Выполняется после вставки, можно добавлять функции, например click().

"pageAction": "let j=document.querySelector('.lazy');eles.forEach(i=>{i.src=i.dataset.srcset;})"

filteropen in new window

Фильтрация элементов, вставленных со следующей страницы.

"filter": {
    "count": 20,
    "words": "spams\\d",
    "link": "^https://spams\\.xxx",
    "selector": "div#spam"
}

loadMoreopen in new window

Селектор кнопки "загрузить еще".

"loadMore": ".loadMore"

sleepopen in new window

Время ожидания (мс) при загрузке следующей страницы, если сайт имеет ограничение по времени между запросами.

"sleep": 1000

rateopen in new window

Множитель высоты окна, можно установить на 2 или 3, если некоторые сайты медленно загружают следующую страницу.

"rate": 3

autoLoadNumopen in new window

Количество страниц для автоматической загрузки после открытия страницы.

"autoLoadNum": 5

listenHashChangeopen in new window

Установите true, чтобы pagetual перезапускался при изменении хэша.

"listenHashChange": true

refreshByClickopen in new window

Если сайт перезагружает контент без изменения URL при нажатии на кнопку отправки. Укажите селектор этой кнопки, и pagetual будет сбрасываться после клика по ней.

"refreshByClick": "#sreach"

pageNumopen in new window

Укажите номер страницы с помощью $p в текущем URL. Можно использовать {} для вычисления результирующей строки из номера страницы, например {$p*25+1}.

"pageNum": "&start={15*($p-1)}"

pageBar (pageBar)open in new window

Код JavaScript для изменения pageBar. 0 означает скрыть.

"pageBar": "pageBar.classList.add('j_thread_list');"

pageBarTextopen in new window

Установите 1, чтобы заголовок документа следующей страницы отображался на панели страниц.

"pageBarText": 1

autoClickopen in new window

CSS-селектор или xpath элемента, который вы хотите кликнуть автоматически.

"autoClick": "#btn-sky"

historyopen in new window

Установите 0, чтобы отключить запись в историю. Установите 1, чтобы включить запись в историю. Установите 2, чтобы запись в историю происходила немедленно после добавления контента. Независимо от значения, общая опция имеет приоритет.

"history": 1

lockScrollopen in new window

Установите true, если не хотите, чтобы страница автоматически прокручивалась при переходе на следующую страницу.

"lockScroll": true

wheelopen in new window

Установите true, чтобы действие перехода на следующую страницу срабатывало только при прокрутке колеса мыши.

"wheel": true

fitWidthopen in new window

Установите false, если вы обнаружили, что pageElement получает неверную, слишком маленькую ширину.

"fitWidth": false

delayopen in new window

Код JavaScript для задержки следующего действия до тех пор, пока он не вернет true. Используйте это свойство для получения полных элементов страницы с отложенной загрузкой.

"delay": "return document.querySelector('#feed_pagenation>li.cur').innerText>=curpage"

manualModeopen in new window

Установите true, чтобы включить ручной режим. Пагинация остановится, а правая стрелка (или событие 'pagetual.next') будет привязана к нажатию на следующую ссылку.

"manualMode": true

openInNewTabopen in new window

Установите true, чтобы все ссылки открывались в новых вкладках, false — чтобы они открывались в текущей.

"openInNewTab": true

pageElementCssopen in new window

Стиль CSS, который вы хотите применить к каждому элементу страницы.

"pageElementCss": "color: red"

initRunopen in new window

Запускать немедленно при инициализации.

"initRun": true

sideControlleropen in new window

Показать или скрыть боковую панель инструментов sideController.

"sideController": true

listenUrlChangeopen in new window

Обновлять скрипт после изменения URL.

"listenUrlChange": false

clickModeopen in new window

Остановить перелистывание страниц и кликнуть по следующей ссылке после прокрутки до конца.

"clickMode": true

preloadImages(doc)open in new window

Анализирует страницу и возвращает массив URL-адресов изображений, которые необходимо предварительно загрузить.

"preloadImages": "return ['1.jpg']"

child scriptopen in new window

Если на сайте есть ограничения на выполнение кода (eval). Вы можете создать дочерний скрипт с функцией в объекте window. Имена должны начинаться с pagetual и использовать camelCase. Например: window.pagetualWait, window.pagetualNextLinkByJs, window.pagetualPageInit, window.pagetualPageAction, window.pagetualInit, window.pagetualPageBarText.