Reglas personalizadas avanzadas
Discord
Github
Twitter Outsource
| Si Pagetual te resulta útil y te lo puedes permitir, agradeceríamos mucho una propina para financiar su desarrollo. Si no, no te preocupes, ¡disfrútalo! 💞 | ||||
|---|---|---|---|---|
PayPal | Ko-fi | 愛發電 | ||
| Join 💬Discord | ||||
| Follow 🕊️twitter | ||||
| Send 📧E-Mail | ||||
| Made with ❤️ by 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}"
]
}
]
name
Nombre del sitio web de destino
"name": "Nombre del sitio"
author
Autor de esta regla
"author": "Hoothin"
example
URL de ejemplo para esta regla
"example": "https://abc.com"
url
Expresión regular (RegExp) para la URL del sitio web de destino
"url": "^https://abc\\.com/\\d+"
pinUrl
A veces el siguiente enlace o elemento de la página no existirá. Configúralo como true para poder fijar la regla solo con la URL en lugar de buscar elementos con reglas inteligentes
"pinUrl": true
enable
0 significa detener la acción cuando se cumplan todas las condiciones
"enable": 0
include
Selector o xpath del elemento que debe incluirse
"include": "div.content"
exclude
Selector o xpath del elemento que no debe incluirse
"exclude": "div.content"
wait
El tiempo de espera para que la página esté lista cuando estés seguro de que la URL coincide con el sitio. También puedes usar un código JavaScript que devuelva un booleano para verificar si la página está lista
"wait": 500
"wait": "let img=doc.querySelector('ul.list img');return img!=null"
waitElement
La matriz ["exist", "not exist"] contiene el "selector o xpath del elemento que debe existir (para algunos elementos de carga perezosa)" y el "selector o xpath del elemento que no debe existir (para algunos marcadores de posición de carga que necesitan desplazarse para ser cargados)"
"waitElement": [
".summary",
"#popular.fade:not(.in)"
]
action
0 significa cargar la URL e insertarla con HTML estático, 1 significa cargarla mediante un iframe para que el código JavaScript dinámico en la página pueda tener efecto, 2 significa forzar la inserción del iframe en la parte inferior
"action": 1
nextLink
Selector o xpath del enlace de la página siguiente, se desactiva cuando se establece en 0. Puedes configurarlo como una matriz para que contenga múltiples enlaces siguientes.
"nextLink": ".page-next>a"
"nextLink": [
".page1-next>a",
".page2-next>a",
".page3-next>a"
]
nextLinkByUrl
Si no hay un elemento siguiente, puedes usar esto para generar un href a partir de la URL actual. [0] significa cadena de expresión regular (RegExp), [1] significa cadena de reemplazo, [2] significa selector o xpath del elemento que debe incluirse, [3] significa selector o xpath del elemento que no debe incluirse. Puedes usar {} para evaluar código simple
"nextLinkByUrl": [
"(&page=(\\d+))?$",
"&page={$2+1}"
]
"nextLinkByUrl": [
"(&page=(\\d+))?$",
"&page={$2+1}",
".disable>button"
]
nextLinkByJs (doc)
Usa esto para evaluar código JavaScript y devolver la URL de destino de la página siguiente con doc (documento de cada página cargada)
"nextLinkByJs": "let n=doc.querySelector('a.curr+a');if(n)return n.href.replace(/^javascript:.*\\((\\d+)'\\);/,'$1_.html');"
stopSign
Deja de cargar la página siguiente cuando coincida con esta señal
"stopSign": ["#pagenum", ".disable",
[
"#pagenum",
"(\\d+)"
],
[
"#pagenum",
"\\/(\\d+)"
]
]
pageElement
Selector o xpath del contenido principal que debe insertarse. Puedes configurarlo como una matriz para que contenga múltiples elementos de página.
"pageElement": ".Context>.Article"
pageElementByJs (over)
Usa esto para evaluar código JavaScript y crear los elementos que desees insertar. Se necesita una devolución de llamada over(eles) con la matriz de elementos para la inserción
"pageElementByJs": "let src=match[1]+match[3];img.onload=()=>{over([img])};img.onerror=e=>{over()};img.src=src;"
replaceElement
Selector o xpath del elemento que quieres reemplazar por uno nuevo, puede ser una matriz
"replaceElement": "#page"
"replaceElement": ["#page1", "#page2"]
lazyImgSrc
El atributo de la imagen que apunta a la URL real. Se puede configurar como ["lazysrc", "removeProp1,removeProp2"] para eliminar las propiedades de la imagen
"lazyImgSrc": "data-cfsrc"
"lazyImgSrc": ["data-lazy-src", "removeProp1,removeProp2"]
css
Agrega CSS para que puedas mostrar algunos elementos ocultos. Si comienza con "inIframe:", este CSS solo tendrá efecto en la siguiente página del iframe
"css": ".card-lazy{display:none}"
insert
La posición en la que quieres insertar. Puedes configurarlo como una matriz para que contenga múltiples posiciones.
"insert": "ul#feed-main"
insertPos
1 significa insertar antes, 2 significa simplemente añadir al final del objetivo
"insertPos": 2
iframeInit (win, iframe)
El código JavaScript que se ejecutará lo más rápido posible antes de que se ejecute cualquier código en el iframe.
"iframeInit": "win.self=win.top;"
init (doc, win, iframe, click, enter, input)
El código JavaScript que se ejecutará solo una vez con la página principal actual o en cada iframe con doc: (documento de la página principal o iframe)
"init": "if(doc)doc.querySelector('[data-title=sh]').click();"
pagePre (response)
El código JavaScript que se ejecutará después de obtener la respuesta de la URL del siguiente enlace. Puedes modificar el contenido de la respuesta y devolverlo
"pagePre": "return decodeURI(response).replace(/[\\\\]/g,'')"
pageInit (doc, eles)
El código JavaScript que se ejecutará con cada página insertada con doc: (documento de cada página cargada) y eles: (elementos encontrados con la regla), se ejecuta antes de la inserción. Puedes activar eventos como onView()
"pageInit": "let ops=doc.querySelectorAll('op');[].forEach.call(ops,op=>{img.src=op.value;imgCon.appendChild(img)})"
pageAction (doc, eles)
El código JavaScript que se ejecutará con cada página insertada con doc: (documento de cada página cargada) y eles: (elementos encontrados con la regla), se ejecuta después de la inserción. Puedes agregar funciones como click()
"pageAction": "let j=document.querySelector('.lazy');eles.forEach(i=>{i.src=i.dataset.srcset;})"
filter
Filtra los elementos insertados de la página siguiente.
"filter": {
"count": 20,
"words": "spams\\d",
"link": "^https://spams\\.xxx",
"selector": "div#spam"
}
loadMore
Selector del botón "cargar más"
"loadMore": ".loadMore"
sleep
Tiempo de espera (en ms) cuando se carga la página siguiente si el sitio está limitado por un intervalo de tiempo
"sleep": 1000
rate
El multi-windowHeight que puedes configurar en 2 o 3 mientras algunos sitios tardan en cargar la página siguiente
"rate": 3
autoLoadNum
La cantidad de páginas para pasar automáticamente después de abrir la página
"autoLoadNum": 5
listenHashChange
Configura esto en true para que Pagetual se reinicie cuando el hash cambie
"listenHashChange": true
refreshByClick
Si el sitio recarga el contenido sin cambiar la URL al hacer clic en un botón de envío. Configura esto con el selector del botón de destino, Pagetual se reiniciará después de hacer clic en él.
"refreshByClick": "#sreach"
pageNum
Indica el número de página con $p en la URL actual. Puedes usar {} para evaluar la cadena de resultado del número de página, como {$p*25+1}
"pageNum": "&start={15*($p-1)}"
pageBar (pageBar)
El código JavaScript para cambiar la barra de paginación. 0 significa ocultar
"pageBar": "pageBar.classList.add('j_thread_list');"
pageBarText
Configúralo en 1 para que el título del documento de la página siguiente se muestre en la barra de paginación
"pageBarText": 1
autoClick
El selector CSS o xpath del elemento que quieres que se haga clic automáticamente
"autoClick": "#btn-sky"
history
Configúralo en 0 para desactivar la escritura del historial. Configúralo en 1 para habilitarla. Configúralo en 2 para que la escritura del historial se active inmediatamente después del splicing. Sin importar cuál sea el valor de la opción general.
"history": 1
lockScroll
Configúralo en true si no quieres que la página se desplace automáticamente cuando navegas a la página siguiente
"lockScroll": true
wheel
Configúralo en true para que la acción de la página siguiente solo tenga efecto cuando la rueda del mouse se desplace
"wheel": true
fitWidth
Configúralo en false si el elemento de la página tiene un ancho pequeño incorrecto
"fitWidth": false
delay
El código JavaScript para retrasar la siguiente acción hasta que devuelva true. Usa esta propiedad para obtener elementos de página completos con carga perezosa.
"delay": "return document.querySelector('#feed_pagenation>li.cur').innerText>=curpage"
manualMode
Configúralo en true para habilitar el modo manual. La paginación se detendrá y la flecha derecha (o el evento 'pagetual.next') se vinculará para hacer clic en el siguiente enlace.
"manualMode": true
openInNewTab
Configúralo en true para que todos los enlaces se abran en nuevas pestañas, false para que se abran en la misma.
"openInNewTab": true
pageElementCss
El estilo CSS que quieres establecer para cada elemento de la página.
"pageElementCss": "color: red"
initRun
Se ejecuta inmediatamente después de la inicialización.
"initRun": true
sideController
Muestra u oculta la barra de herramientas del sideController.
"sideController": true
listenUrlChange
Actualiza el script después de que la URL cambie.
"listenUrlChange": false
clickMode
Detiene el paso de página y hace clic en el siguiente enlace después de desplazarse hasta el final.
"clickMode": true
preloadImages(doc)
Analiza la página y devuelve una matriz de las URL de las imágenes que necesitan ser precargadas.
"preloadImages": "return ['1.jpg']"
child script
Si el sitio tiene alguna limitación para la evaluación de código. Puedes crear un script secundario con una función bajo el objeto window. Debes nombrarlas comenzando con pagetual en camelCase. Como window.pagetualWait, window.pagetualNextLinkByJs, window.pagetualPageInit, window.pagetualPageAction, window.pagetualInit, window.pagetualPageBarText.