精華區beta C_Chat 關於我們 聯絡資訊
※ 引述《ccpz (OoOoOo)》之銘言: : ※ 引述《ybite (小犬)》之銘言: : : 其實我想寫一個Firefox的Extension來抓彈幕xml和flv檔案... :P : : 剛剛稍微看了一下,技術上應該不會有太大的問題 : : 而且播放的問題已經有替代方案,主要的問題是抓的問題 : : 所以短期內可能想先寫一個抓彈幕的Extension : : --- : : 有時間的話在找人合作寫一個Flash的Player吧 囧 : 抓之前有找過一些資料,在幾個日本的blog有討論 : 像這個 http://d.hatena.ne.jp/picas/20080202/1201955339 蠻詳細的 : 照他上面說的就可以抓 xml & flv : 只是要有一步要先去抓 watch/smxxx 的網頁,不然會被擋 : 那網頁好像沒提到 : 中文字幕抓法都沒人提,之前聽封包猜出來的抓法, : rc2改版後就不能用了orz 今天徹底地把一些抓法給試出來了,其實意外地非常簡單: 先把這篇文章看過去:http://d.hatena.ne.jp/picas/20080202/1201955339 舉個例子,如果我要抓台灣版的這個動畫彈幕: http://tw.nicovideo.jp/watch/sm3665982 首先你要抓到他的「My memory」號碼,也就是所謂的thread_id 因為台灣版的字幕是用類似My memory的功能硬幹的 有兩種方法可以抓到My memory號碼:一是透過新增Mylist,二是看Source 加Mylist的方法我想大家應該都會了,這裡介紹從source看的方法: <script type="text/javascript"> <!-- var Video = { v: '1213574772', <--- 這個就是My memory號碼 id: 'sm3665982', 注意看和http://www.nicovideo.jp/watch/sm3665982之間的差別: <script type="text/javascript"> <!-- var Video = { v: 'sm3665982', id: 'sm3665982', 也就是說,v這個參數會記下我的thread id(一個My memory綁一個影片) OK,所以現在來parse API吧, http://www.nicovideo.jp/api/getflv/1213574772 後面那一串數字是透過mylist或看source得到的v參數 你會得到一串Query String,關鍵的幾個是: 抓影片:url 抓彈幕:thread_id、ms、user_id 如果url的結尾是low,表示將使用經濟模式下載 抓影片這時候就簡單了,直接把url的東西抓下來就可以了(可能要Referrer) 判別檔案格式是個問題,大概只能從他送回來的Header裡面看(會送Type: video/flv) 抓彈幕的時候,要送一個POST request到ms參數的網址裡 這個網址通常是http://msg.nicovideo.jp/22/api/ 要送的POST內容大概如下: <packet><thread click_revision="0" user_id="777801" res_from="-250" version="20061206" thread="1213574772"/></packet> 中間似乎不能分行,我之前Try過好幾次失敗 囧 res_from表示要抓多少(-250~-1000),user_id不用講,thread填剛剛的thread_id 然後Header加上Referrer就結束了 :) ok,再來就是寫下載管理員了(哭) 強力徵求寫彈幕Player的Flash強者 還有有可能的話,徵日文翻譯 XD -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.199.119
ybite:所以另一種台灣板抓法就是抓像這樣得網址: 07/10 22:14
BVB:原PO好強!!! 07/10 22:20
albb0920:叫Fx抓就可以了吧 @@ 07/10 22:36
Kenqr:加油! 07/10 23:48
kaoru7568:原來這個是在寫FireFox的外掛呀0.0 07/11 00:28