ccloli / E-Hentai-Downloader

Download E-Hentai archive as zip file
GNU General Public License v3.0
1.87k stars 138 forks source link

能否添加將“ex”轉換成“e-”的功能呢? #211

Closed hbdjks closed 2 years ago

hbdjks commented 2 years ago

如題,有些賬戶是只能瀏覽表站,使用脚本進入裏站后,下載圖片點開原圖鏈接顯示賬戶被封鎖, 只能手動將url中的“ex”改成“e-”才能下載,如果大佬有空的話,可否添加這一功能呢? 我自己也搜索過一些相關資料,嘗試使用replace語句進行過修改,但是始終有問題。

ccloli commented 2 years ago

暫時不考慮該功能,因為無法直接確定其是否能從表站正常瀏覽。腳本中不少地方的請求是使用瀏覽器原生的請求方式,而這種方式不支持跨站調用,如果需要適配會有較大的工作量。

不過如果你只是想要當表站存在的情況下,自動從裏站跳到表站,那可以直接用下面這個腳本,安裝後理論上如果表站有對應的 gallery 就會自動跳轉。目前只判斷了一個關鍵詞,如果有遇到其他的可以手動添加下

// ==UserScript==
// @name         Redirect to E-Hentai if it exists
// @version      0.1
// @description  RT
// @match        *://exhentai.org/g/*
// @icon         data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==
// @grant        GM.xmlHttpRequest
// @connect      e-hentai.org
// ==/UserScript==

(function() {
    'use strict';

    const url = `https://e-hentai.org/${window.location.pathname}`;
    const token = [
        '<title>Gallery Not Available',
        // other substring to determine?
    ];
    GM.xmlHttpRequest({
        url,
        responseType: 'text',
        onload: (res) => {
            if (!res.responseText || token.some(e => res.responseText.includes(e))) {
                return;
            }
            window.location.href = url;
        }
    });
})();
hbdjks commented 2 years ago

好的,麻煩您了,目前表站使用脚本很正常,就是保存表站隱藏的,只在裏站有的圖片會這樣,只能手動將原圖鏈接的“ex”改成“e-”

hbdjks commented 2 years ago

我目前稍微看了一下您的代碼,個人理解就是將您代碼中捕獲的裏站的imageURL中的“ex”替換成“e-”,嘗試了一下替換就出了問題

hbdjks commented 2 years ago

好家夥,大佬,我修改了一下,在您原本“var requestURL = imageList[index]['imageFinalURL'] || imageList[index]['imageURL'];”的語句下新增了如下語句:

var str = requestURL; var n = str.replace("ex","e-"); var requestURL = n;

然後就可以在賬戶處於suspend的情況下,不跳轉到表站,直接在裏站下載圖片,脚本不會彈出錯誤警告

ccloli commented 2 years ago

表站使用脚本很正常,就是保存表站隱藏的,只在裏站有的圖片會這樣,

是的,這部分當時比較腦抽,是用的瀏覽器原生請求,而原生請求無法直接請求跨域的數據(例如 exhentai.org -> e-hentai.org 就是跨域,兩個域名是不一樣的),只能通過擴展提供的 api 來實現,所以直接替換是無效的。

好家夥,大佬,我修改了一下,在您原本“var requestURL = imageList[index]['imageFinalURL'] || imageList[index]['imageURL'];”的語句下新增了如下語句:

var str = requestURL; var n = str.replace("ex","e-"); var requestURL = n;

然後就可以在賬戶處於suspend的情況下,不跳轉到表站,直接在裏站下載圖片,脚本不會彈出錯誤警告

這部分處理看懂了,這個獲取原始圖片的連接是個重定向鏈接,在表站有可能也是通用的。邏輯上沒問題,就是不確定如果表站這個 gallery 被隱藏了,有可能這部分處理會出錯。

順帶能梳理我這坨像米田共一樣的代碼,是真的辛苦了 🥲

ccloli commented 2 years ago

邏輯上沒問題,就是不確定如果表站這個 gallery 被隱藏了,有可能這部分處理會出錯。

誒,意外的沒問題,還以為 gallery 在表站被下掉了這個鏈接也會失效,沒想到下載成功了

這點確定的話實現應該不難,感覺可以做個 feature,雖然感覺可能用處不是很通用罷了,不過還是感謝反饋

hbdjks commented 2 years ago

沒有沒有,感謝大佬寫出這麽方便的東西,我不過是之前突發奇想嘗試了一下手動修改原圖鏈接,結果發現能用,然後才感覺理論上能這樣修改

ccloli commented 2 years ago

v1.34 已更新,在提示 GP 消耗的基礎上,增加了轉換原始地址的功能。需在 Settings -> Advanced -> Download original images from 中指定強制跳轉的域名。

另外 v1.34 還增加了 Tor 站點的支持,但 Tor 網站沒提供下載原始圖片的功能,所以目前只能在不跳轉、跳轉至 e-hentai 以及跳轉至 exhentai 之間選擇。

image