고급 사용자 정의
Discord
Github
Twitter Outsource
| Pagetual이 유용하고 여유가 된다면, 개발 자금 지원을 위한 팁은 매우 감사할 것입니다. 그렇지 않다면 걱정 마세요 – 즐기세요!💞 | ||||
|---|---|---|---|---|
PayPal | Ko-fi | 愛發電 | ||
| Discord 참여하기 | ||||
| Twitter 팔로우하기 | ||||
| 이메일 보내기 | ||||
| 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
대상 사이트의 이름
"name": "Site name"
author
이 규칙의 작성자
"author": "Hoothin"
example
이 규칙의 예시 URL
"example": "https://abc.com"
url
대상 사이트 URL의 정규식
"url": "^https://abc\\.com/\\d+"
pinUrl
때때로 다음 링크나 페이지 요소가 존재하지 않을 수 있습니다. 이 값을 true로 설정하면 지능적인 규칙으로 요소를 찾는 대신 URL만으로 규칙을 고정할 수 있습니다.
"pinUrl": true
enable
0은 모든 일치 시 작업을 중지함을 의미합니다.
"enable": 0
include
반드시 포함해야 하는 요소의 선택자 또는 xpath
"include": "div.content"
exclude
엘리먼트의 셀렉터 또는 XPath (포함해서는 안 되는)
"exclude": "div.content"
wait
URL이 사이트와 일치한다고 확신할 때 페이지가 준비될 때까지 기다리는 시간입니다. 대신 페이지가 준비되었는지 확인하기 위해 부울을 반환하는 JavaScript 코드를 사용할 수도 있습니다.
"wait": 500
"wait": "let img=doc.querySelector('ul.list img');return img!=null"
waitElement
배열["exist", "not exist"]에는 "존재해야 하는 요소의 선택자 또는 xpath (일부 지연 로드 요소의 경우)" 및 "존재하지 않아야 하는 요소의 선택자 또는 xpath (로드하기 위해 스크롤해야 하는 일부 로딩 플레이스홀더의 경우)"가 포함됩니다.
"waitElement": [
".summary",
"#popular.fade:not(.in)"
]
action
0은 URL을 로드하고 정적 HTML로 삽입하는 것을 의미하고, 1은 페이지의 동적 JavaScript 코드가 영향을 미칠 수 있도록 iframe으로 로드하는 것을 의미하며, 2는 iframe을 하단에 강제로 삽입하는 것을 의미합니다.
"action": 1
nextLink
다음 페이지 링크의 선택자 또는 xpath입니다. 0으로 설정하면 비활성화되며, 여러 개의 다음 링크를 포함하는 배열로 설정할 수 있습니다.
"nextLink": ".page-next>a"
"nextLink": [
".page1-next>a",
".page2-next>a",
".page3-next>a"
]
nextLinkByUrl
다음 요소가 없는 경우, 현재 URL에서 href를 생성하는 데 사용할 수 있습니다.은 정규식 문자열을 의미하고,은 대체 문자열을 의미하며,는 반드시 포함해야 하는 요소의 선택자 또는 xpath를 의미하고,은 반드시 포함하지 않아야 하는 요소의 선택자 또는 xpath를 의미합니다. 간단한 코드를 평가하기 위해 {}를 사용할 수 있습니다.
"nextLinkByUrl": [
"(&page=(\\d+))?$",
"&page={$2+1}"
]
"nextLinkByUrl": [
"(&page=(\\d+))?$",
"&page={$2+1}",
".disable>button"
]
nextLinkByJs (doc)
이것을 사용하여 JavaScript 코드를 평가하고 다음 페이지의 대상 URL을 반환합니다.
"nextLinkByJs": "let n=doc.querySelector('a.curr+a');if(n)return n.href.replace(/^javascript:.*\\((\\d+)'\\);/,'$1_.html');"
stopSign
이 표시에 일치하면 다음 페이지 로드를 중지합니다.
"stopSign": ["#pagenum", ".disable",
[
"#pagenum",
"(\\d+)"
],
[
"#pagenum",
"\/(\\d+)"
]
]
pageElement
삽입해야 할 메인 콘텐츠의 선택자 또는 xpath입니다. 여러 페이지 요소를 포함하는 배열로 설정할 수 있습니다.
"pageElement": ".Context>.Article"
pageElementByJs (over)
이것을 사용하여 JavaScript 코드를 평가하고 삽입하려는 요소를 생성합니다. 삽입을 위해 요소 배열과 함께 콜백할 over(eles)가 필요합니다.
"pageElementByJs": "let src=match[1]+match[3];img.onload=()=>{over([img])};img.onerror=e=>{over()};img.src=src;"
replaceElement
새로운 요소로 교체하려는 요소의 선택자 또는 xpath입니다. 배열이 될 수 있습니다.
"replaceElement": "#page"
"replaceElement": ["#page1", "#page2"]
lazyImgSrc
실제 src를 대상으로 하는 이미지의 속성입니다. 이미지의 속성을 제거하기 위해 ["lazysrc", "removeProp1,removeProp2"]로 설정할 수 있습니다.
"lazyImgSrc": "data-cfsrc"
"lazyImgSrc": ["data-lazy-src", "removeProp1,removeProp2"]
css
숨겨진 요소를 표시할 수 있도록 CSS를 추가합니다. "inIframe:"으로 시작하면 이 CSS는 다음 iframe 페이지에서만 적용됩니다.
"css": ".card-lazy{display:none}"
insert
삽입하려는 위치입니다. 여러 위치를 포함하는 배열로 설정할 수 있습니다.
"insert": "ul#feed-main"
insertPos
1은 이전에 삽입을 의미하고, 2는 대상의 맨 아래에 추가를 의미합니다.
"insertPos": 2
iframeInit (win, iframe)
iframe 내의 어떤 코드보다도 빠르게 실행되는 JavaScript 코드입니다.
"iframeInit": "win.self=win.top;"
init (doc, win, iframe, click, enter, input)
현재 메인 페이지 또는 모든 iframe에서 한 번만 실행되는 JavaScript 코드입니다. doc:(메인 페이지 또는 iframe의 문서)
"init": "if(doc)doc.querySelector('[data-title=sh]').click();"
pagePre (response)
다음 링크의 URL에서 응답을 받은 후 실행되는 JavaScript 코드입니다. 응답 내용을 수정하여 반환할 수 있습니다.
"pagePre": "return decodeURI(response).replace(/[\\]/g,'')"
pageInit (doc, eles)
삽입되는 모든 페이지에서 doc:(로드된 모든 페이지의 문서) 및 eles:(규칙으로 찾은 요소)와 함께 실행되는 JavaScript 코드입니다. 삽입되기 전에 실행되며, onView()와 같은 이벤트를 트리거할 수 있습니다.
"pageInit": "let ops=doc.querySelectorAll('op');[].forEach.call(ops,op=>{img.src=op.value;imgCon.appendChild(img)})"
pageAction (doc, eles)
삽입되는 모든 페이지에서 doc:(로드된 모든 페이지의 문서) 및 eles:(규칙으로 찾은 요소)와 함께 실행되는 JavaScript 코드입니다. 삽입된 후에 실행되며, click()과 같은 함수를 추가할 수 있습니다.
"pageAction": "let j=document.querySelector('.lazy');eles.forEach(i=>{i.src=i.dataset.srcset;})"
filter
다음 페이지에서 삽입된 요소를 필터링합니다.
"filter": {
"count": 20,
"words": "spams\\d",
"link": "^https://spams\\.xxx",
"selector": "div#spam"
}
loadMore
"더 보기" 버튼의 선택자
"loadMore": ".loadMore"
sleep
사이트가 시간 간격에 의해 제한될 때 다음 페이지를 로드할 때의 대기 시간(ms)
"sleep": 1000
rate
일부 사이트가 다음 페이지를 느리게 로드할 때 2 또는 3으로 설정할 수 있는 다중 windowHeight 값
"rate": 3
autoLoadNum
페이지를 연 후 자동 전환되는 페이지 수
"autoLoadNum": 5
listenHashChange
해시가 변경될 때 pagetual이 다시 시작되도록 이 값을 true로 설정합니다.
"listenHashChange": true
refreshByClick
제출 버튼을 클릭할 때 URL 변경 없이 사이트 콘텐츠가 다시 로드되는 경우. 대상 버튼의 선택자로 이 값을 설정하면, 클릭 후 pagetual이 재설정됩니다.
"refreshByClick": "#sreach"
pageNum
현재 URL에서 $p로 페이지 번호를 지정합니다. {}를 사용하여 페이지 번호에서 결과 문자열을 평가할 수 있습니다. 예: {$p*25+1}
"pageNum": "&start={15*($p-1)}"
pageBar (pageBar)
pageBar를 변경하는 JavaScript 코드, 0은 숨김을 의미합니다.
"pageBar": "pageBar.classList.add('j_thread_list');"
pageBarText
다음 페이지의 문서 제목이 페이지 바에 표시되도록 1로 설정합니다.
"pageBarText": 1
autoClick
자동으로 클릭하려는 요소의 CSS 선택자 또는 XPath
"autoClick": "#btn-sky"
history
0으로 설정하면 기록 작성이 비활성화됩니다. 1로 설정하면 기록 작성이 활성화됩니다. 2로 설정하면 기록 작성이 스플라이싱 직후 즉시 실행됩니다. 일반 옵션의 값은 중요하지 않습니다.
"history": 1
lockScroll
다음 페이지로 이동할 때 페이지가 자동으로 스크롤되지 않도록 하려면 true로 설정합니다.
"lockScroll": true
wheel
다음 페이지 작업이 마우스 휠을 굴릴 때만 적용되도록 true로 설정합니다.
"wheel": true
fitWidth
pageElement가 잘못된 작은 너비를 얻는다고 생각되면 false로 설정합니다.
"fitWidth": false
delay
true를 반환할 때까지 다음 작업을 지연시키는 JavaScript 코드입니다. 이 속성을 사용하여 지연 로딩으로 완전한 페이지 요소를 가져옵니다.
"delay": "return document.querySelector('#feed_pagenation>li.cur').innerText>=curpage"
manualMode
수동 모드를 활성화하려면 true로 설정합니다. 그러면 페이징이 중지되고, 오른쪽 화살표(또는 'pagetual.next' 이벤트)가 다음 링크를 클릭하도록 바인딩됩니다.
"manualMode": true
openInNewTab
모든 링크를 새 탭에서 열려면 true로 설정하고, 현재 탭에서 열려면 false로 설정합니다.
"openInNewTab": true
pageElementCss
모든 페이지 요소에 설정하려는 스타일 CSS입니다.
"pageElementCss": "color: red"
initRun
초기화 시 즉시 실행합니다.
"initRun": true
sideController
sideController의 툴바를 표시하거나 숨깁니다.
"sideController": true
listenUrlChange
URL 변경 후 스크립트를 새로 고칩니다.
"listenUrlChange": false
clickMode
하단으로 스크롤한 후 페이지 넘기기를 중지하고 다음 링크를 클릭합니다.
"clickMode": true
preloadImages(doc)
페이지를 분석하고 미리 로드해야 하는 이미지 URL 배열을 반환합니다.
"preloadImages": "return ['1.jpg']"
child script
사이트에 코드 평가 제한이 있는 경우 window 객체 아래에 함수가 있는 자식 스크립트를 만들 수 있습니다. pagetual로 시작하는 이름을 camelCase로 사용해야 합니다. 예: window.pagetualWait, window.pagetualNextLinkByJs, window.pagetualPageInit, window.pagetualPageAction, window.pagetualInit, window.pagetualPageBarText.