2016年4月23日 星期六

MahoMangaDownloaderVer1.8更新

Ver1.8更新內容:
增加下載原始圖檔的功能(需設置Cookie)。
選單->參數設置->下載原尺寸圖檔打勾。

網站上的漫畫如果檔案太大,網站本身會進行壓縮處理,Ver1.7以前的版本只會下載到壓縮後的圖檔。

Ver1.8版有對Cookie檔案做稍微修改,故Cookie必須重新設置一遍(ComicList,file_catalog格式跟之前檔案相同,可直接從舊版copy過去)。

1.8版之後的檔案會設置密碼,密碼為作者ID,造成困擾敬請見諒。

隨筆:
有網友詢問是否可增加下載原始圖檔的功能,我才知道原來網站有未壓縮圖檔的下載途徑(不需額外花費cost),以前完全沒有發現網站有提供這功能....OTL。

再一次感謝那網友的意見回饋~~!!!

---------------------------------------------------------------------------------------------------------------
版本:Ver1.8

支援漫畫網站:
http://www.99comic.com/
http://www.8comic.com/(http://www.comicbus.com/)
紳士網&EX紳士網

支援批次功能,但不提供多執行緒下載(請多珍惜各個資源網站)。

要下載EX紳士網的資源,必須先設置一次Cookie(選單->設置Cookie->輸入帳密),產生Cookie檔後即可下載EX資源,之後皆不需重新設置。

支援搜尋功能,但預設只輸出日文,中文,英文資源。

對應系統:
Windows (.netframework4.5)


檔案位址:
https://drive.google.com/file/d/0B6Btq693utJPcmxsVXNCa0kwZTA/view?usp=sharing

32位元版本:
https://drive.google.com/file/d/0B6Btq693utJPVXpCaHZrQjlmZVU/view?usp=sharing

解壓密碼:zmcx16


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





2016年4月22日 星期五

MahoMangaDownloader開發過程

因為有網友來信詢問下載器的開發過程,回覆他後想說也把相關經驗放上來,給大家做個參考:

寫程式流程大概如下:

1.先用瀏覽器到該漫畫網站,按F12進入開發者模式看他的html碼,看我真正想要的資源網址在哪裡。

2.寫程式去下載該網站的html碼(有時需要多跑js),寫個regular expression讓程式去把我真正要的資源網址正確parse下來。

3.得到正確的資源網址後,下載該資源網站的html,再寫另一組對應的regular expression,取得真正的圖片位址。

4.讓程式下載該圖片,結束。


至於如何訪問網站,以C#來說有很多類別可直接使用(webrowser,webclient,webrequest), webrowser算是最上層的類別(就是整個瀏覽器類別,你使用他就像在使用瀏覽器),webrequest則是最底層的類別,你使用他就是一次送一個封包。

我剛開始做這個的時候,是使用webrowser,直接像是在操控瀏覽器,幫助我獲取資源位址。可是缺點就是慢,不穩定,事件的判斷不精準,所以只有一開始的8comic我使用webrowser去幫我載,之後支援的網站(99,紳士網&EX)都是用webrequest送真正需要的封包。

如果你真的開始接觸,會發現很多問題真的只能遇到在處理,因為很多漫畫網站會做些阻礙機制,避免你用程式而不是瀏覽器去訪問他的網站,像是真正的資源網址用JS藏起來,網站要二次跳轉才會到真正的頁面,放一堆跟資源網址很像的假網址等等...這些都只能遇到在克服。





開發歷程:

其實我之前碰程式也幾乎都是在寫作業而已,完全沒做過這樣實用的工具...(大學修C++課程,C#自學,以前反而花比較多時間在8051跟PIC上...)。只是考完研究所等入學很閒,就想做這東西出來,就開始一直摸一直摸,真的是從什麼都不懂靠google一點一點拼出來,以過程來說:

第1~2天->終於會用webrowser瀏覽網站,下載資源了。
3~4天->學習regular expression,讓程式幫我parse真正要的資源地址。
5~6天->一整個簡單下載流程都順利work,開始用 windows form拉GUI套件做整個視窗程式。

之後-> 微調,debug,增加支援網站,遭遇各種不同問題,想辦法解決,增加功能....


我真正大概花了兩個禮拜的時間(全天,不過大多數時間都在google找方法,解決問題)寫完最初步的下載器(支援8comic,99comic),之後才陸續增加紳士,EX紳士網,然後又是一段Google學習之旅(看懂cookie,改header等等)。


要是沒有熱忱,沒有投入進去,我應該也做不出來,因為在這之前我連C#有webrowser類別,webrequest是什麼都不知道(我高中&大學念電子,對資工東西沒很熟...雖然現在也是囧),只能說真的有心的時候什麼都做得到,期望自己接下來能趕快找到下一個能投入的事哪..!!


希望以上這些經驗能對大家有幫助~!!



最後抒發一下,目前跟BOSS談好,看能不能盡量趕在9月讓我畢業,雖然已獲得許可寫自己碩論了,可是還是得幫BOSS做事,充實現在的paper內容並發出去才行...。

目前給自己的規劃是:6月完成初步碩論,7~8月準備作品集,充實履歷找工作,9月畢業!!
當然這段時間,也得並行的幫老師把paper發出去,希望一切順利啦!!

zmcx16

2016年4月15日 星期五

MahoMangaDownloaderVer1.7更新

版本:Ver1.7

支援漫畫網站:
http://www.99comic.com/
http://www.8comic.com/(http://www.comicbus.com/)
紳士網&EX紳士網

支援批次功能,但不提供多執行緒下載(請多珍惜各個資源網站)。

要下載EX紳士網的資源,必須先設置一次Cookie(選單->設置Cookie->輸入帳密),產生Cookie檔後即可下載EX資源,之後皆不需重新設置。

支援搜尋功能,但預設只輸出日文,中文,英文資源。

對應系統:
Windows (.netframework4.5)

Ver1.7更新內容:
增加視窗可調功能。
增加參數設置功能,增加參數如下:

準備時間(ms):
紳士&EX在開始下載(獲取每一頁的連結)的等待時間,如單本漫畫的頁數非常多(1000頁以上),調高準備時間可降低被ban ip風險,如果都只下載200頁以下的漫畫,可直接設為0。

下載間隔(ms):
每頁下載的間隔時間,調高雖然會下載較慢,但可降低資源網站負擔(請大家多珍惜各個資源網站)。
P.S. 我遇到被ban的情況大多是1000頁以上的單本漫畫,如果你都只下200頁以下漫畫還是被ban,就請再調高下載間隔的時間吧。

重試時間:
等待資源時間,超過這時間即重試一次。

重試次數:
最大重試次數,超過時即將該漫畫移到清單最下面,等待重新下載。

頁碼位數:
1:[1.jpg,2.jpg..] 3:[001.jpg,002.jpg..]


檔案位址:
https://drive.google.com/file/d/0B6Btq693utJPTDh1cFFQSVNDcWs/view?usp=sharing





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


隨筆:
把下載器發到ptt後得到不少意見回饋,就趁些空檔時間將這些功能實作上去了。
另外有網友問會不會開源,答案是會,可是不會是這個版本,這個下載器是我以前邊摸索邊學做出來的小玩意,所以code有點dirty(自己看是沒問題,給別人看就大大有問題了...)。

等畢業的事確定定下來,會把整個code用JAVA重寫過並開源出去,而現在的話...
就讓我先繼續被作業跟研究進度追著跑吧~!!!


2016年4月10日 星期日

MahoMangaDownloaderVer1.6更新

版本:Ver1.6

支援漫畫網站:
http://www.99comic.com/
http://www.8comic.com/(http://www.comicbus.com/)
紳士網&EX紳士網

支援批次功能,但不提供多執行緒下載(請多珍惜各個資源網站)。

要下載EX紳士網的資源,必須先設置一次Cookie(選單->設置Cookie->輸入帳密),產生Cookie檔後即可下載EX資源,之後皆不需重新設置。

支援搜尋功能,但預設只輸出日文,中文,英文資源。

對應系統:
Windows (.netframework4.5)

更新內容:
修正www.8comic.com/網域跳轉問題(comicvip -> comicbus)


檔案位置:
https://drive.google.com/file/d/0B6Btq693utJPT19nVGNOX0FmWDQ/view?usp=sharing


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



隨筆:
這學期一堆事要忙,至少今天給自己放個假做想做的事...
原本是打算將下載器改用JAVA整個重寫並開源出來,不過照這忙碌程度,可能得暑假才能開始動工了OTL