作者ybite (小犬)
看板C_Chat
標題Re: [NICO] boon sutazio開發終止
時間Thu Jul 10 22:14:11 2008
※ 引述《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