2012年1月6日 星期五

[免費下載 MP3 軟體] 針對蕃薯藤(yam)天空部落,含原始程式碼(VB.NET 2005)

最近因為需要找一些老歌,
發現很多網站都可以透過網址解析下載到檔案,
但好像只有蕃薯藤(yam)天空部落可以載到 MP3 檔案,其它的網站似乎都是 FLV 檔,
所以就好奇的自己寫一個下載MP3的程式,順便練習一下寫 Code 的技巧。
首先說明一下如何解析蕃薯藤(yam)天空部落的下載網址。

只要用 Google 搜尋一下,不難發現很多教學網站
使用 PHP 語法解析(只適用蕃薯藤(yam)天空部落)
由網頁解析(可解多個網站)
使用程式解析(只適用蕃薯藤,不含程式碼)
使用 Perl 語言解析(只適用蕃薯藤)

用以上的方式解析的共同點就是,必須先找到該歌曲的網址,
再輸入要解析的網址,送出解析,然後取得下載網址,
我找不到有人寫一個可以自己搜尋我要的歌名,讓我直接點選下載的軟體,
只好自己寫一個來玩玩囉~

<解析步驟如下>
在蕃薯藤(yam)天空部落上找到要聽的歌曲後,會發現網址如下
1. http://mymedia.yam.com/m/歌曲編號
只要再將歌曲編號再串成
2. http://mymedia.yam.com/api/a/?pID=歌曲編號
將這個網址送出
會得到另一串資訊
3. mp3file=http://pool.f12.mymedia.yam.com/~省略~/xxx.mp3&totaltime=1234567
這個字串中就有下載網址,它被包在mp3file= 後面這個由 http:// 開頭 xxx.mp3 結尾的網址列中,
要解析蕃薯藤(yam)天空部落的 MP3 下載路徑就以上這三個步驟這麼簡單。

程式的設計也就照著那三個步驟在打轉,
其中利用了幾個方式去達到這個目的
1. Regular Expressions 規則運算式
2. Delegate
3. EventArgs

主程式畫面如下


要自動下載檔案可以先在蕃薯藤(yam)天空部落上找到要下載的歌曲,
然後將該網址複製下來,貼到程式畫面中的"網址直接下載"欄位中,

並按下 [Download] 按鈕就可以了,預設檔名為該歌曲在蕃薯藤上的歌曲編號。

當然也可以在 "要下載的歌名" 欄位中輸入想聽的歌曲(或是歌手姓名),按下 [Search] 鈕,
程式自動會帶出找到的歌曲。
找到的歌曲就如同你在蕃薯藤上手動輸入歌曲查詢的結果一樣,
目前程式只抓第一頁,若超過一頁請自行找出歌曲,並將網址貼上"網址直接下載"欄位中,再下載。

如果下載的檔名重覆,系統會自動產生 [歌曲檔名(編號).mp3] 的檔名

再次聲明:
本軟體是為了練習寫程式用,
裡面用的技術可以拿來參考,
若下載未經過合法授權的檔案, 有可能會違反著作權法第91條的重製罪。


這個程式碼我刻意不預先寫入一些功能,
因為這只是練習寫程式用,
有興趣的人請下載原始碼自行加入新功能。
1. 可以搜尋超過一個頁數的歌曲,(這個功能可以利用Regular Expressions 規則運算式來達成,只需 2~5 行程式碼)
2. 下載列表的狀態顯示,改成同一歌曲下載,不另外多顯示完成列(再多加一個 Function 及可)
3. 可下載 FLV 檔案
4. 可解析多個網站
5. 其它功能暫時還不想要加,應該用了不爽才會再加入新功能,到時 V2 版會更好用更強大(期望..)


Download程式碼下載(AutoDownloadYamMP3_V1_SRC.zip 19k)