您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
如題,由於此站人機驗證出現頻繁,一部寫真需要分1~3次才能全部載入大圖。
当前为
// ==UserScript== // @name nlegs.com 聚圖&下載 // @version 1.0 // @description 如題,由於此站人機驗證出現頻繁,一部寫真需要分1~3次才能全部載入大圖。 // @author tony0809 // @match https://www.nlegs.com/girls/*.html // @icon https://www.google.com/s2/favicons?sz=64&domain=nlegs.com // @grant none // @license MIT // @namespace https://greasyfork.org/users/20361 // @require https://cdn.jsdelivr.net/npm/[email protected]/dist/FileSaver.min.js // @require https://cdn.jsdelivr.net/npm/[email protected]/dist/jszip.min.js // ==/UserScript== /* 腳本"图聚合展示by xhua",https://greasyfork.org/scripts/442098 對於此站也不能取得全部大圖,遇到人機驗證一樣撞牆,所以才寫了一個堪用的取得大圖腳本。 此站大圖質量真的不錯,可惜人機驗證神煩!!! 獲取大圖操作 1.自動取得所有預覽圖 2.手動點擊載入全部大圖按鈕來獲取大圖 3.等待替換元素 4.遇到人機驗證會跳出警告結束取得迴圈 5.手動在新分頁新分頁新分頁隨便開啟一個預覽圖鏈接 6.完成人機驗證 7.回來繼續按載入大圖按鈕取得大圖 東方永頁機用戶請添加黑名單網址避免衝突 *://www.nlegs.com/girls/*.html WIN10把默認圖片保存格式變成「jfif」了,怎麼變回「JPG」格式? 首先按鍵盤的「Win鍵+R鍵」,彈出「運行」對話框,輸入「regedit」,然後點Enter進入註冊表編輯器。 然後把路徑貼到地址欄裡Enter: HKEY_CLASSES_ROOT\MIME\Database\Content Type\image/jpeg 再然後,右面的列表框中有個「Extension」選項,雙擊這一行點開,在「編輯字符串」對話框中,把「jfif」改爲「jpg」,最後點確定就可以了。 */ (() => { 'use strict'; const ge = (selector, doc) => (doc || document).querySelector(selector); const gae = (selector, doc) => (doc || document).querySelectorAll(selector); const gx = (xpath, doc) => (doc || document).evaluate(xpath, (doc || document), null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue; const gax = (xpath, doc) => { let nodes = []; let results = (doc || document).evaluate(xpath, (doc || document), null, XPathResult.ANY_TYPE, null); let node; while (node = results.iterateNext()) { nodes.push(node); } return nodes; }; let loopFind = setInterval(() => { let set = ge('.pagination>li:last-child>a'); if (set) { clearInterval(loopFind); if (set.innerText == 1) { addButton(); } else { let pages = gae('.pagination>li>a'); const getAllThumb = async () => { for (let i = 1; i < pages.length; i++) { let res = await fetch(pages[i].href); let resText = await res.text(); let doc = await new DOMParser().parseFromString(resText, 'text/html'); let xpath = "//div[a/div[contains(@style,'thumb') and span]]"; let thumbs = gax(xpath, doc); console.log(`第${parseInt(i)+1}頁\n`, thumbs); let fragment = new DocumentFragment(); for (let i in thumbs) { fragment.appendChild(thumbs[i]); } gx(xpath).parentNode.appendChild(fragment); let e = '.pagination'; ge(e).outerHTML = ge(e, doc).outerHTML; } addButton(); }; getAllThumb(); } } }, 100); const getAllOriginal = async () => { let links = gae('a[href*=image]'); if (!links[0]) { alert('預覽圖連一張都沒有了!'); return; } for (let i = 0; i < links.length; i++) { let res = await fetch(links[i].href); let resText = await res.text(); let doc = await new DOMParser().parseFromString(resText, 'text/html'); let img = ge('.img-res', doc); if (!img) { alert('獲取大圖中斷,遇到了人機驗證,先隨便選一張未獲得大圖的預覽圖鏈接在新分頁新分頁新分頁打開,解決人機驗證後再回來按載入大圖按鈕繼續獲取大圖'); return; } else { let res = await fetch(img.src); let resBlob = await res.blob(); let objectURL = await URL.createObjectURL(resBlob); console.log(objectURL); links[i].parentNode.outerHTML = `<img src='${objectURL}'>`; } } }; const imgZipDownload = async () => { let imgs = gae('img[src^=blob]'); if (!imgs[0]) { alert('大圖一張也沒有!'); return; } let title = ge('strong').innerText.trim(); const zip = new JSZip(); const folder = zip.folder(title); for (let i = 0; i < imgs.length; i++) { let n = parseInt(i) + 1; let pn = n; if (i < 9) { pn = '00' + n; } else if (i < 99) { pn = '0' + n; } let file_name = `${pn}P.jpg`; await fetch(imgs[i].src).then(res => res.blob()).then(data => { folder.file(file_name, data, { binary: true }); console.log(`第${n}張,檔案名:${file_name},大小:${parseInt(data.size / 1024)} Kb,下載完成!等待壓縮...`); }); } zip.generateAsync({ type: "blob" }).then(content => { saveAs(content, `${title} [${imgs.length}P].zip`); }); }; const imgDownload = () => { let imgs = gae('img[src^=blob]'); if (!imgs[0]) { alert('大圖一張也沒有!'); return; } let title = ge('strong').innerText.trim(); for (let i = 0; i < imgs.length; i++) { let n = parseInt(i) + 1; let pn = n; if (i < 9) { pn = '00' + n; } else if (i < 99) { pn = '0' + n; } let yes = confirm(`下載第 ${n}/${imgs.length} 張`); if (yes) { let a = document.createElement('a'); a.download = `${title}_${pn}P.jpg`; a.href = imgs[i].src; document.body.appendChild(a); a.click(); a.remove(); } } }; const addButton = () => { let ele = ge('span.title').parentNode; let div = document.createElement('div'); div.innerText = '點擊載入全部大圖'; div.className = 'btn btn-primary getBigImg'; div.addEventListener("click", () => { getAllOriginal(); }); ele.appendChild(div); let div2 = document.createElement('div'); div2.innerText = '鏈接逐張下載大圖'; div2.className = 'btn btn-primary imgDownload'; div2.addEventListener("click", () => { imgDownload(); }); ele.appendChild(div2); let div3 = document.createElement('div'); div3.innerText = '壓縮打包下載圖片'; div3.className = 'btn btn-primary imgDownload'; div3.addEventListener("click", () => { imgZipDownload(); }); ele.appendChild(div3); }; const addGlobalStyle = css => { let style = document.createElement('style'); style.type = 'text/css'; style.innerHTML = css; document.head.appendChild(style); }; const css = ` img[src^=blob] { width: auto; height: auto; max-width: 100%; display: block; margin: 0 auto; } .imgDownload { font-size: 16px; font-family: Arial,sans-serif!important; line-height: 24px; width: 150px; padding: 4px; margin-right: 5px; margin-bottom: 10px; } .getBigImg { font-size: 16px; font-family: Arial,sans-serif!important; line-height: 24px; width: 150px; position: fixed; z-index:999; bottom: 10px; left: 50%; margin-left: -75px; padding: 4px; } `; addGlobalStyle(css); })();