고급 사용자 정의

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

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}"
    ]
  }
]

More examples of ruleopen in new window

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

다음 페이지 링크의 선택자 또는 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.