找回密碼註冊
作者: scku
查看: 45504
回復: 0

文章分享:

+ MORE精選文章:

+ MORE活動推薦:

極致效能 為遊戲而生 990 PRO SSD 玩家體驗

[*]極致效能固態硬碟 [*]PCIe 4.0 速度大幅提升 [*]優化的電源效率 ...

Micron Crucial PRO D5 6400超頻版 玩家開

解銷更快的遊戲速度! 利用低延遲遊戲記憶體的強大功能 利用 Cruci ...

O11 VISION COMPACT 玩家開箱體驗分享活動

迷你身形 三面透視打造精緻PC視野新境界O11 VISION COMPACT 強強聯合 ...

2024 三星SD記憶卡 玩家開箱體驗分享活動

2024 PRO Plus SD 記憶卡 [*]為專業人士打造 [*]釋放極限速度 [*]多 ...

打印 上一主題 下一主題

[儲存裝置 NAS] Synology NAS的創意應用 – Download Station遇上Python–做你想做又不想做的事

[複製鏈接]| 回復
跳轉到指定樓層
1#
scku 發表於 2018-8-18 18:21:03 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
各位朋友大家好,我是scku,,可以叫我深紅,是一個普通宅宅。在文章的一開始就必須先說很抱歉,雖然這標題我想了很久,寫得很籠統,但…總還是怪怪的。想必很多人現在一定黑人問號中,什麼是Python?又到底什麼是「想做又不想做的事」?先賣個關子,且聽我娓娓道來吧。
啊,對了,我又得先說,這篇文章的應用實例比較傾向於已成年的男性。不過,不屬於這類的人,也不用急著上一頁離開,不妨直接跳到「解決方案」章節,仍有不錯且正常(?)的Synology NAS創意應用說明哦,可以激發你對NAS應用更深一層地想像。

====以下開始切入主題====

不知道大家是不是也跟我一樣,購入NAS的主要原因是保護自己重要的資料呢?我想,最大宗的應該就是照片了吧(你說不是?!)?那可是不見了就很難很難再找回的珍貴回憶呢!雖然Google也對照片提供其它免費的決解方案。但就我個人的了解,仍有不少人希望能夠自己管理重要的照片與資料,以保有絕對的隱私。


這是我近年來購入的(二手)DS1515+,座落在房間的一個小角落,不眠不休的執行我日常的檔案備份任務

抱歉,離題了。不過,把NAS當成純資料備份的機械之後,使用的日子一久,當備份資料變成了例行公事,就會開始想著,「NAS還可以為我做些什麼事」?接著,就會看看Synology官網或google,找尋NAS其它好用的功能,發揮它最大的效益。深紅在這裡建議大家,直接參考Synology的套件中心或google搜尋「synology nas 用途」等類似關鍵字,一大堆的好文章即可讓你對NAS的其它功能有更深一層認識,在此就不再贅述啦~


Synology官網中提供了許多套件的介紹,套件提供了多元的加值服務。其中位於中間的「Download Station」套件,就是這次要介紹的主角之一。

那,你心中是否浮現一個疑問就是:「這篇文章到底想幹嘛?想分享啥?」。呃…我想,科技始終來自於人性。是的,來自於「人」(的惰)「性」。所以我想在這裡跟讀者們分享,我到底懶到什麼程度,以致於在如此方便的Download Station下,又發展出了什麼樣的「科技」,什麼樣的「創意應用」,更如何讓Download Station與Python做你「想做又不想做的事」。


Download Station – Synology開發的下載服務器;Python - 一種程式語言,解決日常生活中重複性的簡單工作

相信講到這裡,大家應該心裡都有個底了。如果,你還沒有任何想法,一方面先恭喜你(?),另一方面…不妨就繼續看下去吧!
請容我在此先說明一下,Synology的Download Station,顧名思義,是個下載的好用工具,在幾乎所有的Synology NAS中都能下載使用,算是非常老牌的套件了。它提供我們很大的下載便利與調整性,可以讓我們使用一些常見的下載服務如BT、HTTP、免空等。並以簡易的操作方式提供搜尋、批次下載、排程與設定等等的下載規劃。在google的搜尋結果下也能找到相當多的資源與教學。


在Google搜尋中下「synology download station」等字眼,滿滿的套件介紹與教學文章,網路資源算是相當豐富,不怕找不到

Python是一個強大的直譯式程式語言,許多大公司都在使用它(Google, Facebook, Dropbox, Netflix等等),它免費且開源、平易近人、易讀易整合,算是相當親切的程式語言,也是此篇文章中的強力配角。
的確,好一陣子,Download Station所提供的這些功能確確實實地滿足了我下載檔案的需求,惠我良多。不過,如我前面所提,日子久了之後,就發生了以下的情境,這也逼著懶惰的我開始尋求解決之道 – 使用Python。

使用情境

深紅是一個重度的網路資源使用者,每天做著日復一日的辛苦工作…粗略可以分成以下步驟的循環:

1.打開chrome瀏覽器,打開熟悉的網頁,開始尋找適合的BT種子檔案。
2.如何知道種子是不是需要的呢,必須瀏覽該種子的相關介紹,有時候是一些文字說明、一些照片,而這些介紹,往往會需要滑鼠中鍵的滾來滾去、亦或是彈跳視窗的跳來跳去,最終才能取得介紹以作為判斷的依據。
3.決定好需要的種子之後,點選連結把種子下載至電腦(亦或是貼上Download Station中),然後開始下載與漫長的等待。
4.等了幾天,終於下載完成。選一個夜深人靜時,開開心心地將下載好的檔案資料夾拖進常用的播放軟體。結果,要跳過一堆介紹影片不說,等正片開始,又發現裡面內容與封面不符,一度氣到勃...勃然大怒。無奈為時已晚,<刪除線>褲子都脫了,<刪除線/>檔案是砍還是不砍,不刪對不起自己的眼睛,刪了又對不起<刪除線>已脫下的褲子<刪除線/>這幾天一路走來的努力。整體所花上的時間與報酬不成正比,得不償失。


「悔不當初」之情境說明示意圖

以上情境相信是許多已成年的男性可能會碰到的問題。其實,你可以不必那麼辛苦的,你只是還沒找到方法罷了。(還是有人為此甘之如飴?)

解決方案

只要使用Synology所提供的Download Station套件,並配合Python程式語言,問題便能迎刃而解,從而得到相對高的投資與報酬,也就是省時、費力,卻不費人力。
然而,醜話還是先說在前頭,目前的解決方案還是不盡理想的,它無法滿足每個人的使用需求,至今也只滿足了目前的我,而日子一久呢?還是無法保證。所以,僅供大家參考囉。
    在不考慮任何技術面與其它複雜的可能,一言以蔽之的解決方案就是:「我不希望把人工消耗在找尋、判定、下載、上傳BT種子之類繁雜的工作」。我希望Synology的Download Station能幫我解決以上的問題,並在最後使用下載的檔案時,再以人工來判斷檔案的去留。
如果以上的任務能夠達成,因為沒有投入或投入相對較少的時間成本,相對的得失心也不會那麼重,進而坦然看待這一切,因內容物不符的刪檔動作自然也就沒有留下任何遺憾啦。


自動化任務達成時的說明示意圖,僅剩下人工判斷檔案去留的部份

只是,好景不常,使用Download Station提供的基本功能,僅能解決上面所說的一部份,哪一部份?呃…對不起我看錯了,沒有。對的,沒有。因為Download Station提供的基本功能裡,真的沒有不用人來操作的部份,全部都需依賴使用者進入Download Station的使用者網頁介面進行操作。那…我這篇到底跟Download Station有什麼關係…?


Download Station的基礎功能需搭配網頁介面,以人為操作控制與調整

唔…有的。事實上,Synology為他們開發的套件提供了所謂「進階」的功能,在Download Station搭配其「進階」的功能後,是能達成上述的某些需求的,也就是本篇實際想分享的主要用途,至於會選用如此不潔(?!)的使用情境是因為…呃…我就是個宅宅,That’s it。
礙於一些技術面、相關版權與尺度的問題,在此文章中能分享的部份其實並非常有限,這部份還請見諒。不過我想,精髓還是有的。
讓我們移動到Synology官網中的「開發者專區」,在「取得開發人員SDK」的分頁下,可以看到「Download Station開發指南」,這就是上面所提的Download Station進階功能,言下之意,此進階功能可以像yoyodiy大師那樣地繞過Download Station使用者介面,透過Web API直接對Download Station下達相關的命令以達到自動化的可能。值得一提,說明網頁中的中文頁面真是令人感到心慰。


Synology官網的開發者專區 – 友善開發平台、創造無限可能


取得開發人員SDK的分頁下,許多的套件開發指南與說明下載

於是,下載「Web API模組」點開一看,呃…我收回我剛剛的感動,還是全英文的pdf啊…而且不多不少的44頁內容令人進退兩難。不過由於宅宅如我的惰性,比起重複又辛苦的滑鼠中鍵左鍵的動作,我還是選擇性的將它閱讀完,並掌握此解決方案需要的部份。


Download Station的Web API模組說明,滿滿的44頁英文pdf

Web API,簡單的說,是一種「透過HTTP協定為基礎來進行與服務間溝通的介面」,然後,好,我知道我不能再多說了。翻成白話就是,「我可以不透過Download Station的網頁使用介面,對Download Station進行操控」。
套一句在魔物獵人世界台灣冠軍ptt心得文中看到的一句名言:「如果我看得比別人更遠,那是因為我站在巨人的肩膀上」by 牛頓。雖然我不是巨人,我仍希望大家能站在我已努力過的肩膀上,繼續向前。
於是,我選擇了Python程式語言來對Download Station的Web API進行整合,讓一般使用者更易於去使用這樣進階的功能。你一定會問:「Python是啥?要用還不是要先學會Python」。是的,沒錯。但是我如果有勇氣拿Python去整合,並分享給各位。相信我,我整合開發出來的Python工具,一定比開發人員的Web API文件要更平易近人。誇張地講,就我的觀點,只要有心,就連顯示卡中氧化的金手指部份,它,也學得會。(謎:誰啊?)

設置教學

別管顯示卡中氧化的金手指部份了,讓我們就這樣開始吧!首先,跳脫一切世俗的想法,這次,我們要用Python操作DSM (DiskStation Manager,就是點開網頁連到的NAS介面)中的相關套件。想法上,我們需要DSM的IP位置、埠號與使用者帳號密碼等相關資訊。我們可沒辨法真的像yoyodiy大師什麼都繞得過。當然,實作上,我們也需要這次的配角 - Python。


Python官網的下載頁面,找到「Downloads」,取得適合自己作業系統的Python版本

首先,我們必須安裝Python。該怎麼做呢?進入Python官網,雖然是英文,但是別忘了,我們要時常站在巨人的肩膀上。網路上已有相關的安裝教學,在此不再說明(請參考安裝Python)
接著,我們必須像NAS一樣,安裝所需的Python套件模組 – requests。安裝方法相當簡單,在鍵盤按住windows鍵(通常在左下,長得像旗子的),再按下R,會跳出以下視窗,在視窗中輸入“cmd”,按下Enter鍵



便會跳出dos的視窗。



鍵入“pip install requests”,再按下Enter,即可安裝完成(需連上網路)。會出現類似以下的畫面



至少最後一行要有的:「Successfully installed requests-2.19.1」
    再來,我們必須下載Python與Download Station的整合Python檔案,也就是本人的拙作。請下載並放在你能找到的路徑底下。
整合檔下載網址: 本人的拙作
下載完成後,按下Windows桌面的左下角“搜尋”按鈕(或旗子圖示也行)並鍵入“python”等文字,如已順利安裝Python,應該可以找到最佳比對為IDLE Python。





點擊開啟它,



然後點選「File」->「Open…」後,選擇下載的Python整合檔並打開



會看到如下畫面



看到這是啥東東時,千萬別擔心,只有前五行是需要調整的部份,其它都是那44頁Web API的濃縮精華,可以不用理它。這邊會想辨法讓你了解這五行在做些什麼,分別為:
IP:
你的Synology NAS位置,區域網路通常是192.168.1.100,外網或是DDNS就是一串網址,如awesome.synology.me或你自己申請的網址(請去掉http(s)://部份),記得文字兩邊的單引號要留著,那在Python裡是指字串(文字)的意思。
PORT:
你的Synology NAS的埠號,通常是5000(http)或5001(https),如果你有自己的設定,請直接修改它,它是一個數字。
SECURE:
是否為加密連線,是的話輸入True,不是則為False(注意大小寫),預設在區網內,此值為False。若使用DDNS網址等對外網路,強烈建議此值要為True(當然NAS也要打開相對應的加密),否則你的帳密將透過網際網路以明碼傳送(相當危險)。
USER:
你的Synology登入使用者名稱,預設是admin。請更換為你的使用者名稱
PASSWORD:
你的Synology登入使用者密碼,沒有預設。

執行程式的方式在已開啟的Python檔案下(標題是mysyno.py的那個)按下F5鍵,程式會問你是否儲存,請按下確定儲存以執行程式。



如果沒有填入登入密碼,程式執行時會要求輸入(如下圖,注意:輸入的密碼將以明碼顯示,且需輸入兩次。包含登入File Station與Download Station套件)。



每次輸入完請按下Enter鍵完成登入。

又如果你在填入密碼後才按F5執行,則會看到類似以下畫面(如果密碼正確的話)


看到此畫面,表示套件已登入完成。

That’s it. 你已經成功用Python掌握Synology的套件了,恭喜!
現在我們可以開始使用整合的Python程式了。例如,你可以透過它連上File Station(你已經連上了),在IDLE Python介面(標題有Shell的互動介面)輸入以下指令,來幫你的NAS建立一個資料夾:
fs.createFolder('/home/test/a_folder')
這個指令會在使用者的home目錄下建立一個test資料夾(如果沒有的話),再在其中建立一個a_folder資料夾,酷吧!



然後,你可以用你常用的方式連上NAS(本例是Windows的網路磁碟機連線),去看看資料夾是否已建立。


有,這真是太棒了!

這邊也嘗試用一點程式基礎來亂數產生一些資料夾名稱,說明這個過程如果用人工來操作,應當會非常辛苦。



如果需要手動建立資料夾,很多,很辛苦

再來,當你以同樣的方式將Python連上Download Station後(你也已經連上了),你可以開始上傳你的BT種子檔案了,以這個ubuntu的作業系統種子為例。你可以在IDLE Python下輸入以下指令:
ds.uploadTorrent('https://releases.ubuntu.com/18.04/ubuntu-18.04.1-desktop-amd64.iso.torrent?_ga=2.50384809.1281756310.1534536911-1914665641.1534536911', '/home/test/a_folder')
就能將此種子上傳Download Station並指定下載完成時存放的資料夾哦~這裡我們指定下載的資料夾位置為指令中的第二個參數,也就是'/home/test/a_folder',是我們之前用Python結合File Station時所建立的資料夾。



再到Download Station的網頁介面看看,種子已經上傳上去並開始執行了哦。再次,這真是太棒了!


種子照著我們的預期上傳Download Station並開始下載

你當然會說,何不用滑鼠直接把檔案圈起來,一次拖拉上Download Station網頁不也是一樣?Yes, you are right。但,就是這個“but”,對懶到一個不行的我,時間就是金錢,能省則省。懶得拖曳檔案,懶得選取目的地資料夾,懶得勾掉顯示視窗來選擇下載的檔案,懶得按下確定。一兩個檔案是還好,但日積月累,Sorry, I can’t。

總結與討論

OK,至此,文章已進入尾聲,能看到這裡的讀者們,深紅在此由衷感謝。你已經學完了本文能夠教你的東西了。回過頭來看看,我們能把這些技巧發揮在情境的哪裡呢?

第一
當整個Python程式執行時,會自動找出程式執行當下的日期,並在指定的NAS資料夾位置中,建立關於該日期的資料夾(這裡運用了Python與File Station的連結 - fs.createFolder)。這方便我們將每次執行的下載任務依日期分別存入,才不會發生「往事又重提」的窘境。
第二
  找尋熟悉的網頁,不由分說的找尋需要的BT種子。這裡沒有任何的人為操作。僅是使用Python程式傻傻的找出網頁中BT種子的網址,並記錄下來。(僅使用Python,並無使用Synology相關套件)。這裡其實是相對最費時費力的部份,但除了有公開的限制外,與本次主題相關性也不大,請容我簡單帶過。
第三
  將所記錄(或下載)的BT種子,依序上傳至Download Station(這裡運用了Python與Download Station的連結 – ds.uploadTorrent)。此時還可同時指定下載的資料夾位置,幫助分開由不同日期執行的Python程式所下載的檔案。也因為不花任何人力時間成本,程式選擇將BT種子內所含的檔案都下載。

題外話,如果下載下來的檔案,有重複或不需要的檔案,可以再由額外的Python程式來判斷處理,例如將下載資料夾內的小檔案全部移除,以減少在播放軟體中額外選取正確檔案的時間,不過那又是另一個懶惰的故事了。總之,以Python結合Synology NAS – Download Station,幫我做了「想做又不想做的事」,這真是太好了。

個人用後感

就個人使用此篇提到的Download Station進階技巧並搭配Python程式語言後的使用感想,我覺得,它真的幫我在日常生活中,減少了很多不必要且無趣的重複性工作。雖然人工過濾檔案的時間反而變多了(因為下載的檔案也變多了)(笑),在某種程度上也不失為一個「美好的過程」,畢竟每次打開檔案都有不一樣的體驗。
然後,整體所花費的時間一定是變少的。而且,時間都花在(自認)美好的事物上呢。
最後,我想我還是必須強調,如我前面所提,這篇文章完完全全地無法為讀者們解決這次的使用情境(礙於一些限制),以解決問題這個目的來說,實屬不及格。
在文章評分的要求上,套件的使用者介面截圖也不符評分標準(不過我想澄清一下,因為本文的重點就是使用Download Station的進階功能啊,那是沒有使用者介面的…不能怪我QAQ)。
不過,本人仍努力在有限的條件下說明與分享,期望能為讀者們提供創意的思維、創新的用法、解決問題的參考!當然,也歡迎大家與我討論,我會盡可能回答大家的疑惑(如果不適合留言發問,還請寄到我的信箱: scku208@gmail.com)。

以上,本篇文章將陸續發表於以下平台:
-- T17「科技行動派」
-- PTT Storage_Zone  & Python
-- Mobile 01
-- 巴哈姆特
-- XFastest
如果覺得文章還可以,也歡迎將本文轉載至以上未提及之其它平台,但希望能夠在你原先所看到的平台上,留下轉載相關訊息,以方便追蹤,謝謝您的合作。


您需要登錄後才可以回帖 登錄 | 註冊 |

本版積分規則

小黑屋|手機版|無圖浏覽|網站地圖|XFastest  

GMT+8, 2024-11-15 16:36 , Processed in 0.093154 second(s), 30 queries .

專業網站主機規劃 威利 100HUB.COM

© 2001-2018

快速回復 返回頂部 返回列表