Github
https://github.com/skofkyo/AutoPager/tree/main/CustomPictureDownload
2023/05/26
greasyfork說明已達字元上限,更多腳本說明,支持的網站列表將轉移至Github繼續進行更新。
======================================================================
測試通過環境:
2024/11/13
PC
Chrome 130.0.6723.117 + Tampermonkey 5.3.2 or Violentmonkey 2.28.0 or ScriptCat 0.16.6
Edge 130.0.2849.80 + Tampermonkey 5.3.2 or Violentmonkey 2.28.0 or ScriptCat 0.16.6
Cent Browser 5.1.1130.129 + Tampermonkey 5.1.1 or Violentmonkey 2.28.0 or ScriptCat 0.16.6
FireFox 132.0.1 + Tampermonkey 5.3.2 or Violentmonkey 2.28.0 or ScriptCat 0.16.5
Android
☆Edge Canary 132.0.2950.0 + Tampermonkey 5.3.2 or Violentmonkey 2.28.0 or ScriptCat 0.16.6
☆Lemur Browser 2.7.0.035 + Tampermonkey 5.3.2 or Violentmonkey 2.28.0 or ScriptCat 0.16.6
☆Kiwi Browser 124.0.6327.4 + Tampermonkey 5.1.1 or Violentmonkey 2.28.0 or ScriptCat 0.16.6
Edge 130.0.2849.68 + Tampermonkey 5.3.2
Firefox for Android 132.0 + Tampermonkey 5.3.2 or Violentmonkey 2.28.0 or ScriptCat 0.16.6
Mises Browser 424110108 + Tampermonkey 5.3.2 or Violentmonkey 2.28.0 or ScriptCat 0.16.6
Yandex Browser 24.10.3.111 + Tampermonkey 5.1.1 or Violentmonkey 2.28.0 or ScriptCat 0.16.6
Mask Browser 1.7.3.4 + Tampermonkey 5.1.1 or Violentmonkey 2.28.0 or ScriptCat 0.16.6
XBrowser 5.0.1
ViaBrowser 6.0.0
Extensions:
提醒:
如果所在區域,ISP,或是不可抗力的因素而無法正常連接cdn.jsdelivr.net的依賴庫時,請自行修改腳本將所有cdn.jsdelivr.net替換成unpkg.com,或自行尋找可替代的依賴庫CDN。
cdn.jsdelivr.net
// @require https://update.greasyfork.org/scripts/473358/1237031/JSZip.js
// @resource ajaxHookerJS https://update.greasyfork.org/scripts/465643/1421695/ajaxHookerLatest.js
// @resource JqueryJS https://cdn.jsdelivr.net/npm/jquery@3.7.1/dist/jquery.min
// @resource FancyboxV5JS https://cdn.jsdelivr.net/npm/@fancyapps/ui@5.0.36/dist/fancybox/fancybox.umd.js
// @resource FancyboxV5Css https://cdn.jsdelivr.net/npm/@fancyapps/ui@5.0.36/dist/fancybox/fancybox.css
// @resource FancyboxV3JS https://cdn.jsdelivr.net/npm/@fancyapps/fancybox@3.5.7/dist/jquery.fancybox.min.js
// @resource FancyboxV3Css https://cdn.jsdelivr.net/npm/@fancyapps/fancybox@3.5.7/dist/jquery.fancybox.min.css
// @resource ViewerJs https://cdn.jsdelivr.net/npm/viewerjs@1.11.6/dist/viewer.min.js
// @resource ViewerJsCss https://cdn.jsdelivr.net/npm/viewerjs@1.11.6/dist/viewer.min.css
unpkg.com
// @require https://update.greasyfork.org/scripts/473358/1237031/JSZip.js
// @resource ajaxHookerJS https://update.greasyfork.org/scripts/465643/1421695/ajaxHookerLatest.js
// @resource JqueryJS https://unpkg.com/jquery@3.7.1/dist/jquery.min.js
// @resource FancyboxV5JS https://unpkg.com/@fancyapps/ui@5.0.36/dist/fancybox/fancybox.umd.js
// @resource FancyboxV5Css https://unpkg.com/@fancyapps/ui@5.0.36/dist/fancybox/fancybox.css
// @resource FancyboxV3JS https://unpkg.com/@fancyapps/fancybox@3.5.7/dist/jquery.fancybox.min.js
// @resource FancyboxV3Css https://unpkg.com/@fancyapps/fancybox@3.5.7/dist/jquery.fancybox.min.css
// @resource ViewerJs https://unpkg.com/viewerjs@1.11.6/dist/viewer.min.js
// @resource ViewerJsCss https://unpkg.com/viewerjs@1.11.6/dist/viewer.min.css
紳士漫畫wnacg,由於Fancybox功能的緣故,元素結構導致可能會被擋廣告擴充套件的規則隱藏掉圖片,下拉閱讀頁需要加白名單網址(信任名單),腳本已隱藏廣告元素,或在該網站關閉Fancybox功能。
https://*wnacg.com/photos-index-aid-*.html
https://*wnacg.com/photos-slide-aid-*.html
https://*wnacg.com/photos-slist-aid-*.html
======================================================================
如有需要支持的站點可反饋,有空的話會嘗試幫寫規則加進腳本內置的規則庫裡,能力有限不保証一定寫的出來。
寫這個腳本的緣由是,想讓下載、複製鏈接不用做展開圖庫挑選圖片的動作,能自己決定要儲存的壓縮檔和資料夾名稱,網站沒有限制連接數的話能做到高速聚集所有圖片,還能添加一些我想要的輔助功能。
簡介:
聚圖!反對將一話一集一章一篇一部拆成好幾頁,一頁一張圖真XXX的有病,整頁用Lazy loading的話還能接受,透過選擇器圈選圖片或者自己寫函式,能聚集分頁的所有圖片到當前頁面裡,也能進行下載壓縮打包,如有NEXT能做到自動化下載,支援自定義規則方便重複使用,後續擴充規則更容易。
用戶寫的規則請自行另外備份,規則只會寫死在腳本裡不會線上規則化,腳本更新就會覆蓋規則。
關於自動下載:
當修改了腳本UI選項設定或快捷鍵[ Ctrl + . ]或腳本內的站點規則啟用了自動下載時,站點規則insertImg的自動插入圖片將無效,瀏覽器的下載設定需關閉下載前詢問儲存位置和設定好預設的下載路徑,全自動需要有NEXT做搭配,每個站點第一次啟用時需等待連續下載2~3次後,觸發瀏覽器詢問是否同意允許下載多個檔案,需同意後後續才能成功下載,並且讓分頁保持在前景運行不然壓縮進度會停住,可以開一個獨立視窗一個分頁用作下載用,最好的方式是拉兩個視窗一個佔1/3畫面掛下載一個佔3/2畫面瀏覽。
可用規則示例:
「 點擊展開查看 」
[{
name: "規則名稱",
enable: 0, //填0禁用此規則
icon: 0, //填0不顯示左下圖示
key: 0, //填0不綁定快捷鍵
url: { //將URL拆分判斷,格式類型詳見內置函式的fn.checkUrl(object);
t: "",
h: "",
p: "",
s: "",
e: "",
d: ""
},
url: () => Boolean,
//reg和url擇其一作為規則匹配的方式
reg: /www\.xxxxx\.com/, //正規表達式匹配網址
reg: [ //匹配正規表達式陣列
/RegExp/,
/RegExp/
],
reg: () => {
//函式寫法返回布林值Boolean
if (/^https?:\/\/www\.everiaclub\.com\/.+/.test(siteUrl)) {
if(!siteUrl.includes(".html")) {
return true;
}
}
return false;
},
//SPA網頁URL只匹配域名,SPA函式用於判斷頁面域名以外的元素返回Boolean或Promise(例如需要API請求),切換腳本UI事件添加移除
SPA: () => document.URL.includes("/albums/"),
//不切換
SPA: true,
//與SPA屬性搭配使用,觀察URL變化,用於SPA網頁並且URL是會變換的,更替腳本變數諸如globalImgArray、nextLink、customTitle
observerURL: true,
delay: 300, //延遲載入規則
include: "元素選擇器", //網頁必須包含的元素
include: ["A元素選擇器", "B元素選擇器", "C元素選擇器", "D元素選擇器"], //網頁必須包含陣列裡的所有元素
exclude: "元素", //網頁要排除的元素
exclude: ["A元素選擇器", "B元素選擇器", "C元素選擇器", "D元素選擇器"], //網頁要排除陣列裡其中的元素
init: "code", //載入頁面後要優先執行的代碼
init: () => {
code;
},
init: async () => await fn.waitEle("元素選擇器"), //等待直至元素出現
init: async () => await fn.waitVar("變數名"), //等待直至window的變數出現
init: () => fn.addMutationObserver(() => fn.remove("div[class][style*='z-index']")), //動態刪除元素
imgs: "#TheImg", //CSS選擇器
imgs: "//img[@id="TheImg"]", //XPath選擇器
//IMG、DIV、A、LINK、P、SPAN、LI、FIGURE、ARTICLE,9種元素會先判斷有沒有圖片網址放在dataset屬性,如果沒有IMG取src屬性,A、LINK取href屬性。
imgs: () => { //也可自己創建Array,有時大圖是在A元素上需要透過xhr獲取或放在script或變數或透過api取得的json。
code;
return Array;
},
referrerpolicy: "no-referrer", //https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement/referrerPolicy
repeat: 1, //重複取得圖片元素,特殊情況會用到例如ViperGirls網站
thums: ".thums", //Fancybox要用的縮略圖網址選擇器
//頁面不適合直接修改插入腳本用的圖片,在頁面右下創建一個浮動可拖動的捕獲之眼,這樣行動裝置才能使用到分頁畫廊。
capture: "selector",
capture: () => _this.imgs(),
fn: () => { //手動調用自訂函式, 綁定快捷鍵數字鍵6,浮動選單增加自訂函式選單項
…code;
},
//scrollEle當規則有fn屬性時無法調用
scrollEle: ["元素", time], //[自動滾動元素, 滾動的間隔], 綁定快捷鍵數字鍵6
scrollEle: async () => {
…code;
},
button: [4, "24%", 1] , //[無作用, "寬度%", 在按鈕之前添加多少空行],有此屬性才會添加功能按鈕
insertImg: ["元素", 1, time], //[清空此元素內容插入圖片, 0(手動)1(自動)2(自動Lazy loading模式)3(手動Lazy loading模式), 自動延遲時間(預設0)]。
insertImg: [
["元素", (插入在此元素) 0(裡面)1(之前) 2(之後), "要移除的元素"], 0(手動) 1(自動) 2(自動Lazy loading模式) 3(手動Lazy loading模式), 自動延遲時間(預設0)
],
endColor: "white", //更改頁面容器底部統計圖片數量的文字顏色
insertImgAF: (parent) => { //參數parent是插入的圖片的父元素
//插入圖片後要執行的代碼
code;
},
go: 1, //insertImg配套選項,圖片插入在頁面偏下位置時,滾動至第一張大圖的位置。
customTitle: ".title", //元素選擇器取得元素的字串。
customTitle: () => {
code;
return text;
},
observerTitle: true, //觀察元素變化重新取得標題字串,用於SPA網頁
autoDownload: [1, time], //1載入頁面後立即開始下載,與next搭配可以實現全自動下載,time延遲幾秒後點擊下一頁(預設5)。
next: "//a[text()='下一章']", //設定下一頁元素綁定右方向鍵點擊下一頁。
next: () => {
code;
return link;
},
prev: "//a[text()='上一章']", //設定上一頁元素綁定左方向鍵點擊上一頁,填1則使用history.back();。
css: "css", //自訂樣式。
hide: "selector", //用CSS隱藏元素
autoClick: "元素", //載入頁面後點擊一次此元素,能簡單做到自動簽到、展開目錄、Show All
autoClick: ["元素", 1000], //元素,延遲毫秒時間(預設1000)
observerClick: "元素", //使用Intersection Observer API,元素進入可視範圍內才點擊
observerClick: ["元素A", "元素B"],
loadMore: "元素", //監聽scroll事件,滾至頁面底部時點擊元素,能簡單做到自動載入更多
openInNewTab: ".manga-cover>a:not([target=_blank])", //指定的A元素在新分頁開啟
topButton: true, //添加返回頂部按鈕
threading: 1, //有些網站限制連接數,下載連接數太大容易出錯,適當降低連接數。
fetch: 1, //使用Fetch API下載圖片,需要圖片下載請求的伺服器有開放CORS。
referer: "src", //下載圖片時傳遞的參照頁,預設是使用當前域名,"url"參照頁為當前文檔網址,"src"參照頁為圖片網址,也能自訂如"https://www.example.com/"或空""
infiniteScroll: true, //漫畫分類標記有無限滾動模式
gallery: 1, //影子畫廊調用Iframe畫廊
downloadVideo: true, //下載變數videoSrcArray裡的影片直連網址
//離開影子畫廊後要滾動到此元素的位置,寫成"last:selector"則取多個元素的最後一個。
focus: "selector",
//不是簡單的首尾元素就寫成用函式判斷返回DOM元素
focus: () => HTMLElement,
closeAF: () =>, //離開影子畫廊後要運行的函式
aeg: 0, //0不能自動進入影子畫廊
category: "comic" //類別photo、nsfw1、nsfw2、hcomic、comic、lazyload、ad、none
}, {
name: "規則2",
enable: 0,
icon: 0,
key: 0,
url: {
t: "",
h: "",
p: "",
s: "",
e: "",
d: ""
},
url: () =>,
reg: /www\.xxxxx\.com/,
reg: [
//,
//
],
reg: () =>,
SPA: () =>,
SPA: true,
observerURL: true,
delay: 300,
include: "",
include: [""],
exclude: "",
exclude: [""],
init: "code",
init: () => {
code
},
imgs: "",
imgs: () => {
code
},
referrerpolicy: "no-referrer",
repeat: 1,
thums: "",
capture: "",
capture: () => _this.imgs(),
fn: () =>,
scrollEle: ["", 500],
scrollEle: async () => {
…code;
},
button: [4],
insertImg: ["", 0, time],
insertImg: [
["", 1, ""], 2, time
],
endColor: "white",
insertImgAF: (parent) => {
code
},
go: 1,
customTitle: "",
customTitle: () => {
code
},
customTitle: () => fn.dt({
s: "",
d: ""
}),
observerTitle: true,
autoDownload: [1, time],
next: "",
next: () => {
code
},
prev: "",
css: "",
hide: "",
autoClick: "",
autoClick: ["", time],
observerClick: "",
observerClick: [""],
loadMore: "",
openInNewTab: "",
topButton: true,
threading: 1,
fetch: 1,
referer: "src",
infiniteScroll: true,
gallery: 1,
downloadVideo: true,
focus: "",
focus: () =>,
closeAF: () =>,
aeg: 0,
category: ""
}, {
name: "規則3",
…
}]
// 網站自帶Fancybox燈箱功能,不注入FancyboxCSS樣式
fancybox: {
v: 3,
css: false
},
// 頁面容器使用Fancybox3.5.7
fancybox: {
v: 3,
insertLibrarys: 1
},
// 不使用燈箱功能
fancybox: {
blacklist: 1
},
圖介:
在頁面左下添加了一個圖片下載按鈕
點擊後會彈出篩選UI
點下載按鈕後就會開始下載壓縮打包圖片
右鍵點擊圖示複製圖片網址,如果規則insertImg為手動模式,按右鍵是先插入全部圖片,第二次按才是複製圖片網址。
中鍵點擊圖示匯出網址MediaURLs.txt文件
手動模式說明:
部分規則因種種原因寫成了手動規則
手動操作頁面聚圖:
PC:
特徵是頁面有左下圖示和浮動選單
1.對頁面左下圖示按滑鼠右鍵
2.鍵盤快捷鍵按1
3.浮動選單按鈕的插入圖片,插入圖片後該選單項會移除。
Mobile:
特徵是頁面只有左下圖示
按住頁面的其中一張圖片超過500毫秒
捕獲模式:
當頁面不適合插入圖片時為此模式,只能透過各個功能入口進入看圖模式
PC:
特徵是頁面有左下圖示、浮動選單、右下捕獲之眼圖示
開啟篩選UI:點擊左下圖示或浮動選單篩選下載或快捷鍵F
開啟影子畫廊:浮動選單影子畫廊或快捷鍵G
開啟分頁畫廊:點擊右下眼睛圖示或浮動選單分頁畫廊或快捷鍵8
Mobile:
特徵是頁面有左下圖示、右下捕獲之眼圖示
開啟篩選UI:點擊左下圖示
開啟分頁畫廊:點擊右下眼睛圖示或先開啟篩選UI點擊上面的分頁畫廊按紐。
腳本有綁定按鍵
數字鍵 0 僅彈出標題輸入框,輸入或修改後開始下載
數字鍵 1 複製圖片網址或手動模式的插入圖片
數字鍵 2 滾動至第一張大圖
數字鍵 3 一鍵下載
數字鍵 4 滾動至最後一張大圖
數字鍵 5 切換圖片顯示模式,原始模式和並排模式
數字鍵 6 有自訂函式或自動滾動元素規則時調用
數字鍵 7 匯出網址MediaURLs.txt文件
數字鍵 8 開啟新空白頁載入圖集圖片
數字鍵 9 開啟自訂網站收藏集
數字鍵 - 減鍵圖片以10%為單位比例縮小,會記憶縮放比例
數字鍵 + 加鍵圖片以10%為單位比例放大,會記憶縮放比例
數字鍵 . 點鍵取消縮放恢復為自動
數字鍵 * 乘鍵顯示選項設定。
數字鍵 / 除鍵初始化當前網站的設定。
F鍵 開啟篩選下載UI。
G鍵 開啟Shadow DOM畫廊,Fancybox5與網站燈箱插件衝突時調用Iframe畫廊。
I鍵 開啟Iframe畫廊。
Esc鍵 可中途取消當前的圖片下載。
Delete鍵 並排模式下當為漫畫分類和並排數為2的H漫分類,用於切換隱藏顯示第一張圖片,當沒有剛好並成雙頁跨頁大圖時使用。
組合鍵 Ctrl + . 開始或取消自動下載,網站需有必要的相關規則。
組合鍵 Ctrl + Alt + T 頁面選取文字後,按此快捷鍵可以快速設定為腳本用的圖集標題,沒有選取文字也會彈出輸入框能手動輸入自訂標題。
按1,複製圖片網址,如果設置了insertImg為手動,按1、Enter是插入圖片,第二次按是複製圖片網址。
按2,滾動至腳本插入的第一張大圖
按3,一鍵下載,跳過自定義標題的步驟。
PS:需重複獲取原始圖片元素的規則,按1無法複製圖片網址,需點擊頁面功能按鈕或浮動選單按鈕的複製圖址。
圖片檢視模式
1.圖片置中模式
上方向鍵滾動到目前的上一張圖、下方向鍵滾動到目前的下一張圖
2.圖片並排模式
上方向鍵滾動到目前的上一排圖、下方向鍵滾動到目前的下一排圖
漫畫分類當滾動至最後一排後,繼續按下方向鍵會嘗試前往下一集。
所謂的目前是變量記憶的位置,並非當前瀏覽範圍的位置,滑鼠滾動變換位置不會改變變量。
按了上方向鍵和下方向鍵以外的鍵後會再從頭開始滾動。
如果漫畫站的圖片並排後,圖片高度小於大於瀏覽範圍的高度,需要手動調整瀏覽器的縮放來適配達到最佳的觀看效果。
Chrome內建的縮放跨度太大,建議安裝縮放 for Google Chrome,可以以10%、5%來縮放
3.Fancybox模式
點擊腳本插入的圖片開啟Fancybox圖片燈箱展示功能
右和下方向鍵下一張圖(不會觸發前往下一頁),左和上方向鍵上一張圖(不會觸發前往上一頁)。
4.分頁畫廊模式
左下有浮動選單區塊,鼠標懸停彈出顯示。
數字鍵 0 切換為圖片高度符合視口高度的預設模式
數字鍵 1 切換為單圖置中模式
數字鍵 2 切換為小尺寸圖片並排模式
數字鍵 3 切換為圖片高度符合視口高度且順序右至左的模式
數字鍵 4 切換為條漫模式
W鍵、A鍵、上左方向鍵滾動到目前的上一張圖、S鍵、D鍵、下右方向鍵滾動到目前的下一張圖,當為comic分類且已是最後一張圖繼續按則關閉分頁
HOME鍵 滾動定位至第一張圖
END鍵 滾動定位至最後一張圖
R鍵 模式為0、2、3時用於臨時切換排列方向右至左、左至右。
Delete鍵 用於隱藏當前圖片導覽索引的圖片(藍色邊框),看漫畫時手動調整讓後面的圖片能正常並成雙頁跨頁大圖。
Enter鍵 用於取消所有用Delete鍵隱藏的圖片。
畫廊為條漫模式時,上下方向鍵為預設行為,不會滾動圖片。
畫廊為條漫模式時+、-鍵和修飾鍵Ctrl、Alt、ShiftKey + 滾輪 可增加減少圖片的寬度。
PS:當瀏覽器封鎖彈出型視窗或uBlock Origin為了阻擋點擊鏈結觸發廣告把window.open修改成Proxy時,將無法使用分頁畫廊功能。
5.影子畫廊模式(限定PC使用)
快捷鍵基本同分頁畫廊模式
Esc鍵 離開畫廊
J、K鍵 畫廊滾動自定義滾動距離
N鍵 前往下一話或下一篇,如果有的話。
空白鍵、PageDown鍵 如果有NEXT按鈕並且NEXT按鈕元素9成範圍進入視口時,繼續按空白鍵、PageDown鍵超過2次NEXT按鈕變灰前往NEXT。
畫廊 (0、1、3) 滾輪操作設定為切換圖片並且有NEXT按鈕時,當滾動到最後一張圖繼續往下滾會標記NEXT按鈕,再繼續往下滾NEXT按鈕變灰前往NEXT。
畫廊滾輪操作非切換圖片並且有NEXT按鈕,當滾動到NEXT按鈕元素9成範圍進入視口時,再繼續往下滾2次以上NEXT按鈕變灰前往NEXT,往上滾則下滾次數歸零。
PS:Fancybox5功能由於與部分網站的依賴庫或代碼衝突,這部分將調用使用iframe構建的畫廊。
PS:如果要使用滾動視口的功能,螢幕顯示解析度1920 x 1080建議瀏覽器縮放比例100%,螢幕顯示解析度3840 x 2160建議系統縮放比例200%瀏覽器縮放比例100%,這樣在0、1、3才能剛好滾動一列圖片。
PS:當看日系漫畫使用右至左雙頁模式,有時會遇到雙頁跨頁大圖沒有剛好左右並成一張,可透過WASD方向鍵或者點擊圖片(可以關閉Fancybox),將導覽索引(藍色邊框)移至之前的圖片後按Delete鍵隱藏已經看過的頁數,這樣後面的圖片會往前移一個位置,達到手動調整使雙頁跨頁大圖看起來剛好並成一張。
腳本截圖
陽春簡易的圖片篩選下載功能。
提供了簡易的圖片清單式閱讀模式,和閱讀順序由右至左的漫畫閱讀模式。
老司機類內置規則支持列表
「 點擊展開查看 」
H漫類內置規則支持列表
「 點擊展開查看 」
漫畫類內置規則支持列表
漫畫類為了兼容我提交給東方永頁機的翻頁規則和自己寫的專用腳本,規則幾乎都是預設為關閉狀態。
如有需要請透過UI選項設定開啟,或幹脆修改腳本規則,也需要關閉東方永頁機或自己加黑名單,不然會衝突。
透過UI開啟當前漫畫站規則的步驟 > 瀏覽器右上角腳本管理器 > 圖片全載 > 設定 > UI > 勾選當前漫畫站點規則開關 > 保存設定
「 點擊展開查看 」
輔助類內置規則支持列表
「 點擊展開查看 」
網站 | 備註 |
---|
m.4khd.com | 自動跳轉 |
ouo.io | 自動跳轉 |
link1s.com | 自動跳轉 |
stfly.me | 半自動跳轉 |
www.mediafire.com | 自動下載 |
anonfiles.com | 自動下載 |
letsupload.cc | 自動下載 |
supjav.com | 立即顯示影片縮圖 |