2022年10月29日 星期六

MahoMangaDownloaderVer17.0 ~ 17.6更新

Ver17.6 更新內容:

* 修復EH開啟下載原檔名功能時, 如果原始檔名有非法字元可能造成不能下載問題。


檔案位址:

https://drive.google.com/file/d/18u1mKnhFY_OtRBLisQybP16t0icaP5XH/view?usp=share_link


32位元版本:

https://drive.google.com/file/d/1kL-S1guD_GFyOu5cFUzJ7JbsxB4loNrc/view?usp=share_link



今天發現EH裏站的改版導致特定情況會造成parser失靈:

1. EH站如果使用的是付費帳號的cookie, 又有在EH站設定filter的話, 會因為網頁提示filter過濾資源的連結導致parser失靈

2. EH站搜尋時某些特定的資源parser會抓錯成上傳者的url, 導致缺失部分搜尋結果

希望EH裏站的網站UI盡快穩定下來阿...。


Ver17.5 更新內容:


上一版release完沒兩天, 今天發現EH裏站改版了, 搜尋頁面已經沒有頁碼, 只能上一頁&下一頁跳轉, 等於搜尋parser要修改了, 可是EH表站竟然還維持在舊版, 等於表站我要留舊版的parser, 裏站則是得用新版的, 傻眼...。

總之先修一版釋出了, 之後在觀察看看, 如果沒多久又變動的話, 可能會等穩定點後在更新了...。


Ver17.4 更新內容:

昨天才修一個bug, 結果今天又有使用者反應, 下載全新的17.1版後, 新增漫畫會跳error: 資料ID被限制為唯一, OO已經存在。

查了一下嘗試reproduce後, 發現問題在於, data table儲存的資料裡, ID欄位是設定成primary key, 然後如果今天程式讀檔後, 他起始ID會設成1, 如果新增資料時撞到ID, 就會違反唯一性的原則噴error。 今天要觸發這個bug的情況是, 你有新增漫畫, 可是沒下載完就關閉程式, 之後在打開程式, 又重新新增漫畫, 這時候的資料ID就可能會有碰撞的問題。

可是這問題之前的binary serialization / deserialization不會發生, 看起來是因為binary xml有多了一堆tag標註資料, 讓他不會踩到primary key違反唯一性的問題。

因為json的資料會踩到這個雷, binary xml不會, 最簡單的做法就是每次讀資料時, 我先遍歷資料取出最大的ID, 之後再將程式的AutoIncrementSeed設成最大ID+1, 確保程式開始時都從目前最大的ID開始, 才不會有碰撞的問題。

沒想到單純從binary serialization / deserialization改成json serialization / deserialization會有這麼多雷, 希望這次是最後的bug了QQ。


Ver17.2 更新內容:

* 修復json deserialization後, 新增漫畫有可能觸發data table primary key碰撞問題。


檔案位址:

https://drive.google.com/file/d/1DurT6MT2a1E84lVPZzj9ShCUvykmZqpr/view?usp=sharing


32位元版本:

https://drive.google.com/file/d/13JtRdJYQfrDXzPNhtH5P-1O8A8y-D1R1/view?usp=sharing



昨天發布更新後, 有使用者反應, 下載全新的17.0版後, 第一次下載後運行正常 等關閉程式再開後就會噴error 從16.9升級也一樣。

查了一下原因是, 如果清單被清空後, json檔案是空array的話[], 物件的反序列化會損失column等相關細節造成讀檔後載入錯誤, 如果json檔案是至少有一筆的話則沒有問題, 簡單說這是因為json動態載入造成的bug, 今天讀的檔案只要是空array, 我就得強迫做一次C#的datatable initialize, 不過如果是第一次執行, 因為沒有檔案預設就會initialize所以反而就沒事, 要讀到空檔案才會觸發這個bug...。

簡單來說就是, 如果json檔案不是空array就沒事, 如果是空array我得重做這些事:


之前的binary serialization / deserialization則是不會有這問題, 好雷阿...。


Ver17.1 更新內容:

* 修復下載清單 / 追蹤清單如果沒有任何項目的話, 下載器開啟時會觸發Initialize Error: 找不到資料行 0。


檔案位址:

https://drive.google.com/file/d/14OvwiDZwq02TlWtSDP9wZocAig3On8zj/view?usp=sharing

32位元版本:

https://drive.google.com/file/d/1bO7CLS67jsrmbI8W75A5OX18TGQL6lLU/view?usp=sharing



這次更新主要是改善一些使用者提到的問題:

1. 希望能批次修改下載 / 追蹤清單:

會有這種需求通常是電腦重灌後硬碟代號改了, 然後下載器的修改清單只能UI按右鍵一個一個修改, 對有幾百筆追蹤清單需求的使用者來說會很痛苦, 因為這需求基本上很minor, 只有重灌後的使用者才有機會用到, 可是因為大概每1~2個月就會有人來問, 想說趁這次一起處理好了...。

基本上要為了這需求做個批次匯入 / 匯出的功能我覺得太痛苦了(討厭花時間改UI...), 就決定乾脆把下載清單 / 追蹤清單從C# binary file改成json, 這樣之後使用者想怎麼修改直接自己開文字編輯器修改就好, 我也不用改UI, code的部分也只要把binary serialization / deserialization 改用json serialization / deserialization, 一下就能搞定了~。


2. wnacg下載後的壓縮檔不是作品名稱而是SHA檔名

基本上這問題是因為下載器的爬蟲會直接抓壓縮檔位置下載, 而壓縮檔的檔案名稱本身就是一串SHA檔名, 而wnacg backend server在瀏覽器端請求時會給指定的下載名稱, 讓使用者下載時可以直接用網頁上的作品名稱, 這塊就修改一下邏輯, 讓程式下載時不要直接用原始檔案名稱, 而是用網頁上的作品名稱。


至於慣例的推坑部分, 最近填了兩部神作來推薦:

搖曳露營△

巴哈動畫瘋:

第一季: https://ani.gamer.com.tw/animeVideo.php?sn=21671

第二季: https://ani.gamer.com.tw/animeVideo.php?sn=20555

番外篇泡麵番: https://ani.gamer.com.tw/animeVideo.php?sn=14490


巴哈動畫介紹:

在冬季的富士山公路上、一名騎著自行車的少女來到露營地租借露營場所,這位俐落將所有設備準備好的少女名為 志摩凜,她在路上偶爾遇見一位睡在路邊的女孩 各務原撫子。凜 意外中幫助天然呆少女 撫子,後來在學校巧合碰見 撫子,一場專屬於少女的野營物語也就此開幕!


最近劇場版在台灣上映了, 之前就有聽說很神, 想說剛好趁這次機會把動畫補完, 結果一看就愛上了, 超喜歡這種日常治癒系作品, 巴哈動畫瘋的彈幕也很搞笑, 幾乎每一話都在說全世界欠芳文社一座諾貝爾和平獎XDD


天使降臨在我身邊


巴哈介紹: https://acg.gamer.com.tw/acgDetail.php?s=98709

《天使降臨到了我身邊》作品描述宅女大學生みやこ對自己妹妹的朋友白咲花一見鍾情,想盡各種方式想與她做朋友的喜劇故事。


也是因為聽說要推出劇場版後才想起來要填坑, 會想追這部是偶然看到YT上的MAD:


如果裡面的宅宅主角換成男性的話這畫面就超不妙了, 因為全部的角色都是女性才能這麼歡樂+健全(?), 既是治癒系動畫又有病得恰到好處, 超級推薦!!



Ver17.0 更新內容:

* 下載 / 追蹤清單檔案從binary file改為json file

* wnacg的檔案壓縮檔改用作品名稱下載 (原始是SHA檔案名稱)


下載器Demo圖:




介紹:

https://project.zmcx16.moe/?page=mahomangadownloader


MahoMangaDownloader下載器主要為幫助使用者改善線上漫畫的閱覽體驗, 如果試看的漫畫您非常喜歡, 也請麻煩購買正版支持原作者, 讓作家們能繼續創造出下一部更棒的作品。


環境需求

.Net framework 4.5.2或以上的版本

Visual C++ 2019 (只能安裝2019版, 其他版本不行)


簡單除錯:

* 如果下載失敗, 麻煩先用瀏覽器測試看資源是否存活。

* 如果能正常用瀏覽器瀏覽, 麻煩先查看LogFiles資料夾內的log檔案看錯誤訊息為何。

* 回報問題時, 麻煩提供有問題的網址以及log內容, 這樣我才有辦法測試找問題原因。


檔案位址:

https://drive.google.com/file/d/11olag9eQIHdrORe_XH9lxjpUo547S-PB/view?usp=sharing


32位元版本:

https://drive.google.com/file/d/1IIF2umJkAZFEGOfuwqazPAF1yAG28M3h/view?usp=sharing


解壓密碼:zmcx16


免責聲明:

******************

MahoMangaDownloader僅作為學術研究使用,禁止利用本程式行非法用途。


62 則留言:

  1. 您好,
    我這邊升級到 17.0 後,會出現「Initialize Error: 找不到資料行 0。」的錯誤。
    按確定後雖然可以執行,但是所有的紀錄、設定都消失了。

    回覆刪除
    回覆
    1. 您好, 可能想到的情況是檔案壞檔了, 你可以看下載器更新之前備份的下載器資料夾是不是正常, 如果正常的話可以把新版的User_Data砍掉然後用舊版的User_Data資料夾複製到新版的程式來用。

      刪除
    2. 有試過 還是一樣

      刪除
    3. 17.0 把 User_Data 刪除可以執行,但是當然就沒有之前的資料。
      把 16.9 的 User_Data 複製到 17.0 會出現上面的錯誤;但是在 16.9 是沒問題的。

      刪除
    4. ERROR 2022/10/30 14:13:57 MahoMangaDownloaderForm .ctor 找不到資料行 0。 這是LOGFILE的訊息

      刪除
    5. 您好, 因為我測試沒遇到這問題, 目前沒有sense這問題是怎麼造成的, 你不介意的話可以把User_Data資料夾整包寄給我:
      [email protected]
      我再看看是什麼情況造成的。

      刪除
    6. 目前測試看起來是 mmd_setting.ini 這個檔案裡面 SearchFilterKeywords 造成的。
      不知道為什麼,沒有印象有設定過,但是它是一串日文韓文(古老版本的設定?),把那行拿掉就可以了。
      (結果我忘了備份有問題的檔案了 orz

      刪除
    7. 恩..., mmd_setting.ini這次應該沒動到, 畢竟這是8年前學生時代寫的程式, 那時沒想太多直接用一堆限制又多問題的ini, 現在覺得超不明智的, 以後很閒在考慮轉成用json了...。

      mmd_setting.ini非常早以前(忘了幾年了, 印象模糊...)SearchFilterKeywords預設是會把E站的搜尋只過濾到剩英文跟中文(SearchFilterKeywords=Korean|韓国翻訳|French|フランス翻訳|Russian|ロシア翻訳|Spanish|スペイン翻訳|Thai ภาษาไทย|タイ翻訳|Italian|イタリア翻訳|German|ドイツ翻訳|Portuguese|ポルトガル翻訳|Português|Español|スペイン翻訳|Polish|ポーランド), 因為那時我自己下載都習慣只載英文跟中文的作品, 後來這下載器是自己用了一年後才對外釋出給人使用, 不過那時忘了把這設定拔掉, 後來過了很久才注意到才終於拔掉, 把User_Data資料夾的東西都預設拔掉只留一個renew_ip.bat。

      不過詭異的是這次應該沒改到那塊, 為什麼舊版沒事也很謎...總之問題有解決就好。

      刪除
    8. 啊!對,就是那一長串!我這拿掉後就可以了。
      總之,感謝你的程式。

      刪除
    9. 不客氣, 問題有解決就好~。

      刪除
    10. 我有下載全新的17版 但依然會出現Initialize Error: 找不到資料行 0 應該說 第一次下載後運行正常 等關閉程式再開 就會出現 從16.9升級亦是如此

      刪除
    11. 您好, 剛剛實測出來大概知道原因了, 如果清單是完全空的才會發生這問題, 等等會出一版更新修復空清單的情況會噴error的情況。

      刪除
    12. 您好, Ver17.1已經修復這問題, 不過因為現在Google Drive quote超過容許上限所以暫時不能線上更新, 如果開不起來可以確認一下mmd_List1.json or mmd_trace_list.json是不是用記事本開起來是[], 如果是的話可以把檔案砍掉在重開程式就會好, 然後再升級17.1版本之前建議都不要清除已完成清單, 免得踩到上面的雷...。

      刪除
  2. ERROR 2022/10/31 06:30:46 MahoMangaDownloaderForm MoveNext System.Data.ConstraintException: 資料行 'ID' 被限制為唯一。值 '0' 已經存在。 這是LOGFILE的訊息

    回覆刪除
  3. 辛苦啦,我想說怎麼這麼快更新,原來是空檔案的問題
    要查出來真是辛苦。
    話說,最近我看犯澤先生,非常有趣,推薦給板主

    回覆刪除
  4. https://imgur.com/a/DHK5kcO

    更新以後,貼上網址新增下載,會狂跳出這個視窗

    回覆刪除
    回覆
    1. 您好, 不好意思我沒辦法reproduce這個問題, 可以麻煩提供更多細節給我嗎? 例如什麼網址會出問題? 或是如果不介意的話, 看能不能把User_Data資料夾寄給我, 我在研究看看問題出在哪:
      [email protected]

      刪除
    2. 大概知道問題出在哪了, json讀檔後會喪失一AutoIncrement的功能, 所以新增清單會有機率撞到相同的ID。 等等會在出一版update, 謝謝回報!

      刪除
    3. 已經修復這個問題在17.2版了 再次謝謝幫忙回報問題!!

      刪除
  5. 感謝板主您辛苦編程
    問題已經解決了
    感恩

    回覆刪除
  6. Google Drive Quota exceeded, please try online update later.

    按線上更新後跳出來的 🌸🌸

    回覆刪除
    回覆
    1. 您好, 因為Google Drive export API有流量上限, 看到這個就是上限滿了, 可以隔天在嘗試更新。

      刪除
  7. 感謝大大,想請問是否有機會可以避開類似壞檔就卡住的問題呢?例如漫畫櫃部分港漫其中某一頁壞掉,導致後續的頁面都無法下載~

    回覆刪除
    回覆
    1. 您好, 真的遇到這種我會在目標資料夾塞個同名的假檔案, 下載器就會繞過這個檔案繼續下載下一張圖片了。

      刪除
    2. 啊!感謝! 還有這招可以解~已解決囉!

      刪除
    3. 不客氣~有其他問題歡迎在詢問~

      刪除
  8. 您好,不知道可否提個需求、或是說建議。

    - 如果可以讓程式紀錄視窗的大小和位置,對於我這種習慣把視窗拉大的人來說,會比較方便
    - 按鍵盤的 End 會跳到當下那列的最後一格(最右邊),如果可以變成跳到最後一列(最下方),感覺上應該會更直覺。

    回覆刪除
    回覆
    1. 您好, 不好意思因為手邊有不少專案在忙, 目前下載器只會以維護為主, 使用者體驗的部分短時間內都不會進行喔。

      刪除
  9. 您好,不知道可否提個問題,祈望解答。
    自從版本16之後 welovemanga 好像只抓到任務,而不能下載了,不知是否只是我的問題,還是其他原因?
    謝謝指教。

    回覆刪除
    回覆
    1. 您好, welovemanga因為之前某次改版後被防毒軟體視為惡意網站, 目前已不支援了喔

      刪除
  10. 請問是否能夠列出所有支援的網站嗎?

    回覆刪除
    回覆
    1. https://www.cocomanga.com/15323/
      另外報錯一下,這個網站沒辦法下載

      刪除
    2. 您好, 支援的網站可以參考這裡, 有刪節線的就是已經不支援的, 如果沒有但是不能下載的, 會視情況看是否繼續維護。
      https://project.zmcx16.moe/?page=mahomangadownloader

      cocomanga很早之前因為會被我裝的防毒軟體偵測為惡意網站, 那時開始就不支援了

      刪除
    3. 是嗎?真遺憾……
      感謝回覆

      刪除
  11. 你好 這次更新成17.5之後 目錄部分只剩下桌面可以選,不能選D曹或其他位址,還造成原先在D曹還沒載完的不能下載

    回覆刪除
    回覆
    1. 您好, 目前沒有sense問題出在哪裡, 可以麻煩你寄
      mmd_List1.json
      mmd_List1.db
      log資料夾的log檔案給我:
      [email protected]
      我再研究看看是什麼問題。 下載器升級都會先備份, 建議找到問題前可以先用升級前的版本。

      刪除
    2. 我剛剛有寄出了,其他版本我開了也一樣

      刪除
    3. 我認為應該是我更新了Win 11的系統,導致程式會認不到電腦的硬碟,我另一台電腦開啟程式就正常的,不清楚這次WIN 11更新了什麼部分

      刪除
    4. 目前重新試過安裝NET跟VC一樣不,看來可以合理確認應該是WIN11更新了什麼導致的

      刪除
  12. 有一些半形字的問題

    在檔案名稱裡有 "?" 時
    任務無法下載

    在檔案名稱裡有 "/" 時
    資料夾會被拆開
    比如下載 "Fate/Grand Order" 檔案
    會建立 "_tmp_Fate/Grand Order" 資料夾
    下載完成後原本會轉化成 "Fate/Grand Order" 資料夾
    現在會變成 "_tmp_Fate" 資料夾下面有 "Grand Order" 資料夾

    回覆刪除
    回覆
    1. 您好, 剛剛有發布17.6版修復了這問題, 感謝回報bug。

      刪除
  13. 不好意思打擾
    請問大大可以考慮加入言耽社這個漫畫網站嗎?
    這是很知名也少數提供乙女向、耽美的漫畫站
    但部份漫畫有需會員登入不知道是否能夠像紳士下載一樣設定登錄
    https://yandanshe.com/
    真的另存圖片存到要手斷了還存不到幾本TT
    如果不會複雜和麻煩希望請您夠考慮看看
    感謝您!!!

    回覆刪除
    回覆
    1. 您好, 因為手邊有不少專案在忙, 目前沒有計畫新增支援網站喔, 不好意思。

      刪除
  14. 前天還能開著vpn讓它一直下,但這兩天用各式vpn軟件,換哪個國家,一整天斷續總共約下20頁左右。

    我沒新或移軟件,也沒改任何設定,唯有看它一直不動,回這裡找原因,發現了新增能批次改路徑這好消息,也實驗了真的能批次改,太高興了。

    但就是不知原因的下載沒進度…

    回覆刪除
    回覆
    1. 您好, VPN的IP大多很髒, 容易被鎖也不意外, 我自己是用4G網卡浮動IP, 被ban就重啟換ip就好, 或是也可以調高下載器延遲時間, 可以減少被ban的機率

      刪除
    2. 有考慮過買vpn,但又不常用,有點浪費,免費的又不穩定。

      我是中華+家用無線分享器,好像是浮動ip吧? 沒問過裝機員。

      有試過2次故意重開分享器,重開後能下載了,但下個10頁又停了,其他人馬上來問為什麼不能用網路了。

      這方法效率不高,影響廣,不太可行。

      刪除
    3. 您好, 如果連中華電信的浮動IP都容易被ban, 那建議直接調下載器的延遲時間, 提高到5000ms以上, 這樣被ban的機率應該會降低不少, 不過下載速度會慢許多就是。

      刪除
    4. 請問之前如果開始下載了,都是從最上面的三個開始,我也是主要從上看頁數有沒有動。

      但這幾天它都是亂開始,可能是中間的某本,我主要是聽聲音,因為開始下載後,電腦的聲音都會變大聲。

      會發現前三個都頁數不動,但中間某部開始下了。為什麼?

      刪除
    5. 您好, 你可以看前面的指令是不是Pause, 如果是的話就是下載超過retry次數被暫停了, 可以右鍵將指令改ready重新下載, 如果還是失敗可以到log資料夾的log檔案看看錯誤原因為何。

      刪除
  15. 遠端伺服器傳回一個錯誤 (403) 禁止
    我換了ip、重開過分享器,就是不能下。但是它的網頁卻又能看。

    回覆刪除
    回覆
    1. 您好, 會有這種情況通常是瀏覽器有開VPN, 或是有雙網卡環境, 如果都沒有的話, 你可以提供有問題的網址, 我在測試看看。

      刪除
  16. nhentai.net 最近下載變很慢 是有什麼原因嗎?

    回覆刪除
    回覆
    1. 您好, 我測試了下沒特別有問題, 基本上網站回應慢有各種可能, 可是能是伺服器不穩也可能是IP被限流, 為了網站健康建議小量下載就好。

      刪除
  17. 請問如果我想將下載過的用成清單,該怎麼用?

    我知道在「新增」那裡有list1,可是這個下載完就刪,而且分太細了,又是話,短篇之類的。

    在「追蹤」那裡好像可以,如果現在是list1我想加多個list2或搞笑、生活,要怎麼設,如何切換?
    如果不同分類如list2要在d槽、搞笑在e槽,可行嗎?

    回覆刪除
    回覆
    1. 您好, 複數清單的功能只有支援下載頁面, 因為好像沒什麼人在用, 所以追蹤清單那邊我就沒特別做複數清單了, 應該會有空才做這功能。

      我自己目前作法是只分常常掃描跟不常掃描的漫畫, 一部分放上面一部分放下面, 每次都用shift的方式只做想掃描的區塊, 你也可以同個清單用手動排序的方式分區塊, 只想針對那些掃描在用shift選就好, 如果真的想放不同清單應該就只能等我有空在做了。

      P.S. 下載位置是每個漫畫都可以設定, 不用一定要放一起,屬於清單細項, 跟支援複數清單無關。

      刪除
  18. 你好,先謝謝開發程式!
    最近mangatown都沒法下載,我一直嘗試更改網址都沒能成功,會跳出一個
    “長度不可以小於零”的警告,請問還能修復嗎?
    另祝新年快樂,希望版大和各網友新年快樂!

    回覆刪除
    回覆
    1. 您好, 剛剛測試了下發現是網站改版導致parser掛了(看起來是下面多了個FB comment的關係...), 這兩天會在出個新版修復這問題, 感謝回報!

      刪除
  19. 最近要下載manhuagui的漫畫時,都是輸入網址→按下新增按鈕→程式就閃退。
    LogFiles內的LOG檔案顯示
    WARN 2023/02/03 07:27:17 UserSetting ReadSettingToIni Read mmd_setting.ini fail, write default setting.
    試問如何解決此情形

    回覆刪除
    回覆
    1. 您好, 程式閃退可以開windows event log看Application層看crash原因為何, 最近有接到使用者回報測試看起來Google Chrome有衝突的問題, 他嘗試Google Chrome重安裝後就解決了。

      環境問題因為我這邊沒辦法reproduce, 基本上只能靠使用者自行解決, 或是提供更多訊息給我, 我才有機會找找看原因...。

      刪除