Personalização Avançada

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

discord Discordopen in new window github Githubopen in new window twitter Twitteropen in new window Outsourceopen in new window

Se você acha o Pagetual útil e pode ajudar, uma gorjeta para financiar seu desenvolvimento seria muito apreciada. Se não, sem problemas – aproveite!💞

PayPal

Ko-fi

愛發電
Entre no 💬Discord
🕊️twitter
Envie um 📧E-Mail
Feito com ❤️ por 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/",
    "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}"
    ]
  }
]

Mais exemplos de regrasopen in new window

name

Nome do site de destino

"name": "Nome do Site"

author

Autor desta regra

"author": "Hoothin"

example

URL de exemplo para esta regra

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

url

RegExp para a URL do site de destino

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

pinUrl

Às vezes, o link da próxima página ou o elemento da página não existe. Defina como true para que você possa fixar a regra apenas com a URL, em vez de encontrar elementos por regras inteligentes.

"pinUrl": true

enable

0 significa parar a ação quando tudo corresponder

"enable": 0

include

Seletor ou xpath do elemento que deve ser incluído

"include": "div.content"

exclude

Seletor ou xpath do elemento que não deve ser incluído

"exclude": "div.content"

wait

O tempo de espera para a página carregar quando você tem certeza de que a URL corresponde ao site. Você também pode usar um código JavaScript que retorna um booleano para verificar se a página está pronta.

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

waitElement

O array["existir", "não existir"] contém "seletor ou xpath do elemento que deve existir (para alguns elementos de carregamento lento)" e "seletor ou xpath do elemento que não deve existir (para algum placeholder de carregamento que precisa ser rolado para a vista para carregar)".

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

action

0 significa carregar a URL e inserir com HTML estático, 1 significa carregar por iframe para que o código JavaScript dinâmico na página possa ter efeito, 2 significa forçar a inserção do iframe na parte inferior.

"action": 1

Seletor ou xpath do link da próxima página, desabilitado quando definido como 0. Você pode defini-lo como um array para conter vários links de próxima página.

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

nextLinkByUrl

Se não houver um elemento de próxima página, você pode usar isso para gerar um href a partir da URL atual. [0] significa a string RegExp, [1] significa a string de substituição, [2] significa o seletor ou xpath do elemento que deve ser incluído, [3] significa o seletor ou xpath do elemento que não deve ser incluído. Você pode usar {} para avaliar código simples.

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

nextLinkByJs (doc)

Use isto para avaliar código JavaScript e retornar a URL de destino da próxima página com doc (documento de cada página carregada).

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

stopSign

Pare de carregar a próxima página ao encontrar este sinal.

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

pageElement

Seletor ou xpath do conteúdo principal que precisa ser inserido. Você pode defini-lo como um array para conter múltiplos elementos da página.

"pageElement": ".Context>.Article"

pageElementByJs (over)

Use isto para avaliar código JavaScript e criar os elementos que você deseja inserir. Uma função over(eles) é necessária para retornar (callback) com o array de elementos para inserção.

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

replaceElement

Seletor ou xpath do elemento que você deseja substituir por um novo, pode ser um array.

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

lazyImgSrc

O atributo da imagem que aponta para o src real, pode ser definido por ["lazysrc", "removeProp1,removeProp2"] para remover propriedades da imagem.

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

css

Adicione CSS para que você possa mostrar alguns elementos ocultos. Comece com "inIframe:" e este CSS terá efeito apenas na próxima página do iframe.

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

insert

Em qual posição você deseja inserir. Você pode defini-lo como um array para conter múltiplas posições.

"insert": "ul#feed-main"

insertPos

1 significa inserir antes, 2 significa apenas anexar ao final do alvo.

"insertPos": 2

iframeInit (win, iframe)

O código JavaScript a ser executado o mais rápido possível antes que qualquer código no iframe seja executado.

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

init (doc, win, iframe, click, enter, input)

O código JavaScript a ser executado apenas uma vez na página principal atual ou em cada iframe com doc: (documento da página principal ou iframe).

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

pagePre (response)

O código JavaScript a ser executado após obter a resposta da URL do próximo link. Você pode modificar o conteúdo da resposta e retorná-lo.

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

pageInit (doc, eles)

O código JavaScript a ser executado com cada página inserida com doc: (documento de cada página carregada) e eles: (elementos encontrados com a regra), executado antes de ser inserido. Você pode disparar eventos como onView().

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

pageAction (doc, eles)

O código JavaScript a ser executado com cada página inserida com doc: (documento de cada página carregada) e eles: (elementos encontrados com a regra), executado após a inserção. Você pode adicionar funções como click().

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

filter

Filtra os elementos inseridos da próxima página.

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

loadMore

Seletor do botão "carregar mais".

"loadMore": ".loadMore"

sleep

Tempo de espera (ms) ao carregar a próxima página se o site for limitado por intervalo de tempo.

"sleep": 1000

rate

A altura múltipla da janela que você pode definir como 2 ou 3 enquanto alguns sites carregam a próxima página lentamente.

"rate": 3

autoLoadNum

A quantidade de páginas para virar automaticamente após a abertura da página.

"autoLoadNum": 5

listenHashChange

Defina como true para que o pagetual reinicie quando o hash mudar.

"listenHashChange": true

refreshByClick

Se o site recarregar o conteúdo sem alterar a URL ao clicar em um botão de envio. Defina isso com o seletor do botão de destino, o pagetual será redefinido após clicar nele.

"refreshByClick": "#sreach"

pageNum

Aponte o número da página com $p na URL atual, você pode usar {} para avaliar a string de resultado a partir do número da página, como {$p*25+1}.

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

pageBar (pageBar)

O código JavaScript para alterar a pageBar, 0 significa ocultar.

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

pageBarText

Defina como 1 para que o título do documento da próxima página seja exibido na barra de página.

"pageBarText": 1

autoClick

O seletor CSS ou xpath do elemento que você deseja clicar automaticamente.

"autoClick": "#btn-sky"

history

Defina como 0 para desabilitar a escrita no histórico. Defina como 1 para habilitar a escrita no histórico. Defina como 2 para que a escrita no histórico seja acionada imediatamente após a junção. O valor da opção geral não importa.

"history": 1

lockScroll

Defina como true se você não quiser que a página role automaticamente ao navegar para a próxima página.

"lockScroll": true

wheel

Defina como true para que a ação da próxima página só tenha efeito quando a roda do mouse girar.

"wheel": true

fitWidth

Defina como false se você achar que o pageElement está com uma largura pequena incorreta.

"fitWidth": false

delay

O código JavaScript para atrasar a próxima ação até retornar true. Use esta propriedade para obter elementos de página completos com carregamento lento (lazy load).

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

manualMode

Defina como true para habilitar o modo manual, então a paginação irá parar, a seta para a direita (ou evento 'pagetual.next') será vinculada para clicar no próximo link.

"manualMode": true

openInNewTab

Defina como true para fazer todos os links abrirem em novas abas, false para fazê-los abrir na mesma aba.

"openInNewTab": true

pageElementCss

O estilo CSS que você deseja definir para cada elemento da página.

"pageElementCss": "color: red"

initRun

Executar imediatamente após a inicialização.

"initRun": true

sideController

Mostrar ou ocultar a barra de ferramentas do sideController.

"sideController": true

listenUrlChange

Atualizar o script após a mudança da URL.

"listenUrlChange": false

clickMode

Parar de virar a página e clicar no próximo link após rolar até o final.

"clickMode": true

preloadImages(doc)

Analisa a página e retorna um array com as URLs das imagens que precisam ser pré-carregadas.

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

child script

Se o site tiver algum limite para a avaliação de código (eval). Você pode criar um script filho com uma função sob o objeto window. Você deve nomeá-los começando com pagetual usando camelCase. Como window.pagetualWait, window.pagetualNextLinkByJs, window.pagetualPageInit, window.pagetualPageAction, window.pagetualInit, window.pagetualPageBarText.