2019年11月23日 星期六

MahoMangaDownloaderVer9.5更新

這次很慘烈的是, 上禮拜新加的網站youma改版後就有使用者回報網站死了, 才過沒兩天啊, 太瞎了...。 然後那個使用者有推薦另一個韓漫網站, 看了一下發現網站除了名稱跟網域不一樣, 其他地方根本一模一樣..., 這代表我之前加的應該是某個分身網站, 超級蝦....。

所以這次改版新加支援網站我只是把youma的code改掉網域的部分就能完全work了, 改的時間不到5分鐘, 只能說是個很奇妙的體驗...。

P.S. 這個韓漫網站好孩子千萬不要進去逛喔~。

Ver9.5 更新內容:


下載器Demo圖:





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


環境需求



簡單除錯:
  1. 如果下載失敗, 麻煩先用瀏覽器測試看資源是否存活。
  2. 如果能正常用瀏覽器瀏覽, 麻煩先查看LogFiles資料夾內的log檔案看錯誤訊息為何。
  3. 回報問題時, 麻煩提供有問題的網址以及log內容, 這樣我才有辦法測試找問題原因。



檔案位址:
https://drive.google.com/open?id=1Gg93zeZCrrknxzWSNLfDeyamb984Bylq

32位元版本:
https://drive.google.com/open?id=1O3_7APyeOageSyKPoSVRYywRRwM4X5h5

解壓密碼:zmcx16



免責聲明:
******************
MahoMangaDownloader僅作為學術研究使用,禁止利用本程式行非法用途。

2019年11月16日 星期六

MahoMangaDownloaderVer9.4更新

這次更新主要是這周有兩個使用者分別提了希望增加新網站的feature request, 原本是回覆說因為堆積了不少想做的事, 所以有空才會研究..., , 結果今天吃完壽喜燒後就完全做不下事也讀不下書..., 就乾脆來增加新網站了, 壽喜燒的魔力真是可怕XD

新增的兩個網站分別是https://manhua.dmzj.com/ 以及 https://www.youma.org/ , dmzj就是有名的動漫之家, 使用者推薦這網站的理由主要是這裡的資源都是網友主動上傳, 因為是源頭所以畫質都很高不會被再壓縮。 而youma則是以特定題材的韓漫為主的網站, 先聲明一下好孩子千萬不要隨便亂逛這網站喔(鳩咪)。

基本上這兩個網站都不像dm5或漫畫櫃那樣難搞, 所以加這兩個網站沒有遇到什麼大問題, 不過遺憾的是youma的漫畫有很多漫畫特定幾頁都404死圖, 而下載器基本上目前設定是遇到死圖重試N次失敗就轉狀態為pause, 不會繼續載之後的圖片, 如果像其他網站只有偶爾一兩張就算了, 我試了一下發現真的不少死圖, 而且這網站因為是用直版閱讀的方式, 為了方便竟然就乾脆直接切割圖源, 感覺真的有點無言... 不過以韓漫來說它的資源真的蠻豐富的, 所以最後還是決定滿足使用者的需求追加這個網站。

為了處理上面太多404死圖的問題, 目前youma設定成死圖就略過, 然後下載完成要是有圖片是下載失敗的, 就狀態直接轉pause, 讓使用者知道這集漫畫是有缺頁的。

另外這次新加的漫畫雖然也有照慣例寫3*3 = 9組 test case, 可是因為Azure DevOps的CI server的IP會被某些網站擋(可能擋亞洲以外的IP), 還有個網站是DNS找不到, 所以現在漫畫下載器的CI跟automation test基本上是廢的, 而且因為所有測試每次跑都要30分鐘以上, 我也不想用自己電腦的資源跑, 所以基本上現在我只有新加網站或心血來潮才會跑測試, 如果真的有網站改版導致不能下載, 就麻煩主動回報我再修了, 考慮到現在的支援網站越來越多, 要是每個都maintain我也忙不完, 之後的方針都會以有人使用+回報我才會維護~。



Ver9.4 更新內容:


下載器Demo圖:





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


環境需求



簡單除錯:
  1. 如果下載失敗, 麻煩先用瀏覽器測試看資源是否存活。
  2. 如果能正常用瀏覽器瀏覽, 麻煩先查看LogFiles資料夾內的log檔案看錯誤訊息為何。
  3. 回報問題時, 麻煩提供有問題的網址以及log內容, 這樣我才有辦法測試找問題原因。



檔案位址:
https://drive.google.com/open?id=1TR0ICESvJv-IceFX_ueFtscKQ3dg0ria

32位元版本:
https://drive.google.com/open?id=17zOvINm29w2gi83fagH5CsrhcxdR_SSR

解壓密碼:zmcx16



免責聲明:
******************
MahoMangaDownloader僅作為學術研究使用,禁止利用本程式行非法用途。

2019年11月9日 星期六

FB粉絲專頁機器人開發 - 股票抽籤小秘書

今年財運很好, 11個月下來合計抽到4次股票, 不過我家的人雖然都知道抽股票幾乎無風險又好賺, 可是常常抽個幾次就忘了繼續抽, 所以幾乎沒什麼中獎過, 這樣真的很可惜...。 所以上禮拜忽然想到, 不然我來寫個會自動通知有股票抽籤的服務程式好了,  最後決定做的就是FB粉絲專頁機器人: 股票抽籤小秘書(助理), 以下是成果:



粉絲專頁網址:
https://www.facebook.com/%E8%82%A1%E7%A5%A8%E6%8A%BD%E7%B1%A4%E5%B0%8F%E5%8A%A9%E7%90%86-115560563215006

功能:
  1. 後端程式會每小時去證交所查詢是否有新的可抽籤股票, 如果有的話會自動發布新的抽籤資訊文章。
  2. 提供訂閱服務聊天機器人, 後端程式會在新股票可抽籤的那天發送抽籤訊息給訂閱用戶, 使用說明如下:
    1. 訂閱股票抽籤通知, 請發送訊息: "我要訂閱 FB個人頁面網址:[https://www.facebook.com/OOOXXX]"
    2. 取消訂閱通知, 請發送訊息: "取消訂閱"
    3. 取得目前可抽籤的股票資訊, 請發送訊息: "最新消息"


繪圖:  還在等我哥生出來, 先用櫻花莊的寵物女孩的女僕醬擋著先!!!


再來就是開發心得啦!! 首先要查有沒有抽籤資訊很簡單, 直接寫個爬蟲定時去證交所抓資料就好(目前設定是每個小時上去抓一次):

證交所公開申購網址: https://www.twse.com.tw/zh/page/announcement/publicForm.html

然後過濾掉央債就OK了, 至於要怎麼通知, 腦中浮現的想法有以下幾個:

1. 寄E-Mail通知: 
這個基本上最好做, 可是不可行, 因為我想我家的人應該不會天天檢查電子郵件, 所以XX。

2. LINE機器人:
當初原本覺得做LINE機器人應該是個好選項, 不過既然要做當然會希望作的這個服務能不只服務特定人, 而是所有想要這服務的人都可以訂閱, 可是研究了下發現LINE機器人有個大限制, 就是"主動發通知要錢", 如果是開發模式雖然可以不用錢發通知, 可是最多上限只能加50個人, 所以還是XX。

3. FB粉絲專頁:
最終決定就是做粉絲專頁了, 雖然已經有類似的粉絲專頁了, 不過他的訂閱服務必須下載他的手機APP, 而我想做的是直接用FB訊息通知, 並且會自動PO股票抽籤的訊息文, 不過因為我完全不想花時間經營粉絲團, 所以這粉絲團會全自動讓後端去做PO文還有發送通知訊息的服務, 我唯一的工作就是確保Server工作正常還有修bug。


決定好要做什麼之後, 再來就是實作啦!!  因為這兩樣功能基本很簡單, 所以基本功能我其實上周末兩天假日就做好了, 只是沒想到整合FB API時遇到了不少問題...。

1. 要使用FB的API, 就必須申請FB應用程式上架, 雖然說是應用程式不過其實也只是為了使用FB的API去作設定跟取得權限而已, 這個其實是很智障的事..., 因為我有帳號有Cookie, 那照理說我就能做到任何事, 用FB的API也只是為了更方便寫自動化的機器人, 為什麼還要針對各種API去取得權限, 簡直不可理喻...。要取得權限得申請隱私權文件網址, 編寫你的應用程式服務使用情境說明, 然後提供讓FB測試人員測試, 還要拍影片讓FB知道你的服務是如何運行, 超級無敵麻煩的阿!!!

因為超麻煩, 所以我一開始完全不想搞上面那些東西, 發送訊息跟PO文都不用FB API, 直接打個模擬的https request就好, 可是接受訊息就沒轍了, 因為要確認有沒有人傳訊息給粉絲頁, 我不可能讓Server一直polling FB server去問有沒有新訊息, 一定得註冊FB的webhook功能, 讓FB主動通知我的server有人傳訊息給我, 所以最後還是沒辦法, 只能乖乖走申請權限, 申請FB應用程式的流程...。

然後申請的過程其實很好笑, 我只有申請聊天機器人訊息收/發的權限, 然後測試步驟就寫:
發送"最新消息"或是"訂閱", 我的聊天機器人會回覆什麼資訊這樣, 然後拍個簡單的影片上傳。

結果送件後半天就收到回覆, 直接被退件了, 退件理由是服務太差, 機器人太智障, 然後提供的測試畫面則是: FB測試人員傳送:"what's news", "subscribe"訊息, 這樣當然我的後端當然看不懂只會回覆固定NPC台詞啊!!! 台股抽籤機器人根本沒有處理英文訊息的需求阿阿!!!

之後我就把"what's news", "subscribe"多加進if判斷, 然後再送件一次, 之後就通過了...。 這讓我深深覺得FB做這種事情只是想跟申請人說: "雖然看起來很智障, 可是我們真的有在審核喔, 要求權限是很麻煩的喔, 所以不要給我亂搞喔鳩咪", 根本只是過個水在刁難人而已...。



上架通過後我的粉絲頁就能跟我的後端溝通自動回覆訊息了, 至於自動PO文的部分如果要使用FB的API就還要在申請PO的權限, webhook我是真的沒辦法一定得申請, 自動PO文我就不想再走一次智障流程, 所以我就不用FB的PO文API, 自己在程式加cookie打個模擬的request就好~。

到這裡照理說功能都做完了, 不過其實還有個問題, FB的訊息API服務有個很大的限制, 俗稱24+1 policy, 為了避免粉絲頁惡意騷擾傳送一堆廣告訊息給使用者, FB規定當使用者傳訊息給粉絲頁後, 如果超過24小時使用者沒有在互動, 那之後最多只能再送一筆訊息, 更之後送的訊息都會被擋住, 只有符合某些規格的訂閱服務不受24+1的限制。

由於我的訂閱服務是未來有新股可抽籤時就會傳送訊息, 所以24+1限制基本上就是判死刑了, 雖然我想我也可以申請FB訂閱服務, 可是這個功能也會在明年一月終止掉, 明年一月後能不受24+1限制的只有新聞類型的專頁, 所以我就算申請也只能用到明年一月...超蝦。

既然這樣該怎麼解決呢, 後來看下文件加上簡單的POC, 確定24+1限制只針對FB的聊天機器人API, 一般人工發送訊息是不受限的, 這樣就好解決啦, 我一樣用打模擬request的方式搞定就好了XD

後來POC了下發現還是不可行, 因為FB webhook api收到的訊息的發件人id都是聊天機器人api專屬的id, 並不是那個用戶的真實id, 那個發件人id會受到24+1的限制, 用那個id打發送訊息的api或手動聊天的request只要過24小時就沒用了。

最後沒辦法, 只能請使用者在申請訂閱服務的時候, 請他們一併提供自己的個人頁面網址, 我在用那個網址去取得那個使用者的fb id, 在用那個fb id打模擬的request, 這樣就不會受到24+1 policy的限制了。

這種方式也會衍生一個問題, 因為那個網址是隨使用者填的, 那有人惡意幫其他人註冊的話怎麼辦?  幸好FB是有限制粉絲專頁是不能主動發送訊息給用戶的, 只有用戶在主動發訊息給粉絲頁時, 粉絲頁才可以發送訊息回去, 所以如果有人幫其他人惡意註冊, 我的後端程式也沒辦法發送訊息過去, 就是我的DB會多些garbage data, 不過也沒辦法就是了...。

這次的side project差不多就是這樣啦, 之後這個粉絲團就是完全自動化, 希望沒bug能一直順利運轉下去~。

2019年11月3日 星期日

MahoMangaDownloaderVer9.3更新

這次更新主要是有網友反應hitomi.la忽然不能下載了, 看了下發現是網站的資源網址從原本的純id改成了有類別以及漫畫名稱的形式, 導致下載器parse不到正確的ID所以才不能下載, 這邊就改一下parser就解決了, 不是什麼大問題。

Ver9.3 更新內容:
  • 修復hitomi.la網站改版造成下載器不能下載問題


下載器Demo圖:





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


環境需求



簡單除錯:
  1. 如果下載失敗, 麻煩先用瀏覽器測試看資源是否存活。
  2. 如果能正常用瀏覽器瀏覽, 麻煩先查看LogFiles資料夾內的log檔案看錯誤訊息為何。
  3. 回報問題時, 麻煩提供有問題的網址以及log內容, 這樣我才有辦法測試找問題原因。



檔案位址:
https://drive.google.com/open?id=15H4H4exsfGdFZ2xCiJEW5_DmcgBiNnb5

32位元版本:
https://drive.google.com/open?id=1-XCuoUq1dSlh883MM_o8Y3ESZKskDshp

解壓密碼:zmcx16



免責聲明:
******************
MahoMangaDownloader僅作為學術研究使用,禁止利用本程式行非法用途。