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僅作為學術研究使用,禁止利用本程式行非法用途。


44 則留言:

  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。

      刪除