搜尋此網誌

2013年9月9日 星期一

【研究】YTB Downloader

前言

原本想推薦有一款不錯的youtube downloader HD,前幾年還不錯用,但最近幾乎每天都改版,一啟動就要你去更新,更新後不免又是安裝程式,裡面還包的不只有一種程式,虧他網頁還標榜沒有廣告、間諜...程式,結果一開始要安裝的Delta工具列,就是一個會自動綁你的IE、FireFox、Chrome、的惡意程式,真的大失所望。

每天更新,結果中文解碼又沒處理好,不知道再更新什麼,還是只是用自動化程式去跑,每天自動更新版本號和日期,讓google search時,資料是最新的,讓無知的使用者安裝有的沒的。
市面上越來越多號稱Free的軟體,都會綁一些怪怪的工具,甚至會修改機碼,讓你移除都無法,所在安裝時要注意看看到底是安裝了什麼內容到你的電腦裡。

不想用上述的幾乎每次啟動都要更新的下載器,其實還有許多選擇,譬如像是
  • chrome plug-in,若是每天都會用到youtub並下載,是很不錯。但是,plug-in是當打開chrome又會常駐在你電腦記憶體中,即使沒有瀏覽youtube畫面,plug-in一樣會存在在背景程式中。如果像我安裝了這些【工具】附加元件,多安裝一個不常用到的plug-in,白白耗費記憶體,很不划算。
  • Kej's FLV Retriever,網頁下載器,輸入網址後,需要先下載一個文件,再將文件的內容用記事本打開,貼到指定位置,最後才告知下載連結位置。等於下載動作需做兩次,對使用者來說太麻煩了。甚至,有時網址輸入錯誤,沒辦法即時得知錯誤訊息,需再貼上下載文件的內容後才得知輸入有誤,沒有一個很好的使用者經驗。

在上面實際做法後,參考他們處理方式,均是從youtube api取得youtube info的資訊,再從複雜的字串和數字的編碼,找出實際連結的位置,
舉例來說:
  • 原影片網址:http://www.youtube.com/watch?v=5y_KJAg8bHI
  • 把原網址改成http://www.youtube.com/get_video_info?video_id=5y_KJAg8bHI,就可以去取得所謂的youtube Info資訊,再分析這些資訊進一步取得實際影音的網址聯結。
按照wikipedia的說法,這些資訊包含了這些資訊,而影音格式也分為FLV、3GP(實際上info資訊裡是顯示3GPP)、MP4和WebM,而影片解析度則依上傳者的分享決定的,最高有到1080P,也就是前言那套軟體所說提供的HD畫值。

綜合以上知識,如果可以實作一套結合自動讀取info資訊檔,並分析info資料取得影片檔案實際下載位置,並download,就可以解決前面所有疑慮的問題。不需要耗費瀏覽器額外記憶體,不需要擔心首頁被綁架,不需要下載複製貼上才能下載。所以寫了一套YTB下載器,減少使用上的效率,但要遵守YOUTUBE 服務條款

以下程式碼僅供研究所用,無任何販售行為及獲得任何利益;若下載一切影音、文字,版權屬於原作者及出版社所有,請勿作商業上之用途,所有影音文字內容,請於實驗完後24小時以內將檔案刪除!
  • 這是ㄧ個自己研究用的下載器,裡面分析INFO資訊的演算法,則是參考Kej's FLV Retriever的處理方式。
  • 像是特定有授權的網站,用原始方式取得INFO資訊,會回傳沒有授權無法取得info的狀態,但是在後面加上eurl=.....後,又可以,但是實在查不出來eurl這個tag有什麼用意。
    • 例如:http://www.youtube.com/get_video_info?video_id=5y_KJAg8bHI&eurl=www.bbb.cc.dd
  • 設隱私的頁面仍然無法取得info。
  • 幾個類似的網址,可做處理:
    • http://www.youtube.com/watch?v=5y_KJAg8bHI
    • http://youtu.be/5y_KJAg8bHI
    • http://www.youtube.com/v/5y_KJAg8bHI 但會抓不到檔案名稱。

合體

其實這個下載器aCrawler只有console版的,須到config.properties中,更改設定,此外還包含了考古題下載器,所以整個程式碼,看起來會又臭又長。若網址輸入正確,目前可以下載郵局、銀行、和中華電信。但這部分考古題下載器的演算法還需要再改一下。

沒有留言: