JKCommentGetterを使えば、ニコニコ実況のコメントを簡単に取得できる。これをLinuxで使ってみる。
ソースを取得する
git clone https://github.com/ACUVE/JKCommentGetter.git
実行してみる
$ cd JKCommentGetter $ ruby JKCommentGetter.rb JKCommentGetter.rb.orig:82: invalid multibyte char (US-ASCII) JKCommentGetter.rb.orig:81: syntax error, unexpected $end, expecting tSTRING_CONTENT or tSTRING_DBEG or tSTRING_DVAR or tSTRING_END
エラーが出て動かない
文字コードを指定すると動く
$ ruby -Ku JKCommentGetter.rb
** 引数が足りません **
Usage: ruby JKCommentGetter.rb チャンネル 取得時間範囲のはじめ 取得時間範囲のおわり [option...]
Options:
-m sec --margin sec 取得時間範囲の前後を指定秒だけ広げます
-s sec --start-margin sec 取得時間範囲のはじめを指定秒だけ早くします
-e sec --end-margin sec 取得時間範囲のおわりを指定秒だけ遅くします
-f [filename] --file [filename] 出力するファイル名を指定します
-x --xml 出力フォーマットをXMLにします
-j --jkl 出力フォーマットをJikkyoRec互換っぽくします
-t --time-header NicoJKフォーマットの一番初めに時刻ヘッダを追加します
-o comment --comment commment ファイルの頭の辺りに指定したコメントを追加します
-b path --base-path path ファイル出力のフォルダを指定します
-d --directory チャンネルと同じ名前のフォルダの中にファイルを出力します
-c --check-file 取得時間範囲がよく似たファイルが存在する場合ダウンロードしなくなります
-a sec --check-range sec よく似たファイルと判定する時間範囲を設定します
-r num --retry num 取得エラーが発生した際に再取得へ行く回数
-i cookie --cookie cookie Cookieとして利用する文字列を与えます
-p --perfect 完全なコメントが取得できたと保証できない時にエラーで落ちるようにします
-w --working-directory カレントディレクトリをスクリプトがあるフォルダにします
-h --help このヘルプを表示し終了します
詳細は README.md をご覧ください
スクリプトを直接実行するにはJKCommentGetter.rbとJKComment.rbの先頭に次の二行を追加する。
#! ruby -EUTF-8 # -*- mode:ruby; coding:utf-8 -*-
$ vi JKComment.rb $ vi JKCommentGetter.rb #追記 $ chmod +x JKComment.rb JKCommentGetter.rb $ ./JKCommentGetter.rb
そのままではログインにCookieが必要なので、自動取得できるようにする。JKCommentGetter.rbのgetCookieを書き換えてcurlでCookieを取得させる。
diff
emailとpasswordはそれぞれ書き換える。
次のように使う
$ ruby -Ku JKCommentGetter.rb jk1 `date -d "4:00" +%s` 30m -x -f output.xml
この場合、NHK総合の4時から30分後までのログをXML形式でoutput.xmlに保存される。日付はUNIX時間かYYYYMMDDhhmmss形式で指定する。終わりの時間は経過時間を数字にs,m,h,dなどの単位をつけても指定できる。詳しい使い方は配布元に書いてある。
対話形式でチャンネルと時間を指定するシェルスクリプトを書いてみた。
$ sh jkget.sh -x -f /path/to/output.xml
jk1 NHK 総合 jk101 NHKBS-1 jk231 放送大学
jk2 Eテレ jk103 NHK BSプレミアム jk234 BSグリーンチャンネル
jk4 日本テレビ jk141 BS 日テレ jk236 BSアニマックス
jk5 テレビ朝日 jk151 BS 朝日 jk238 FOX bs 238
jk6 TBS テレビ jk161 BS-TBS jk241 BSスカパー!
jk7 テレビ東京 jk171 BSジャパン jk242 J Sports 1
jk8 フジテレビ jk181 BSフジ jk243 J Sports 2
jk9 TOKYO MX jk191 WOWOWプライム jk244 J Sports 3
jk10 テレ玉 jk192 WOWOWライブ jk245 J Sports 4
jk11 tvk jk193 WOWOWシネマ jk251 BS釣りビジョン
jk12 チバテレビ jk200 スターチャンネル1 jk252 IMAGICA BS
jk201 スターチャンネル2 jk255 BS日本映画専門チャンネル
jk202 スターチャンネル3 jk256 ディズニー・チャンネル
jk211 BSイレブン jk258 Dlife
jk222 TwellV jk910 SOLiVE24
Channel>1
jk1
Date>4:00
2015年 2月 22日 日曜日 04:00:00 JST
Length(min)>30
/path/to/JKCommentGetter.rb jk1 1424545200 30 -x -f /path/to/output.xml
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 57 0 0 100 57 0 49 0:00:01 0:00:01 --:--:-- 51
log: jk1 を 2015-02-22 04:00:00 +0900 から 2015-02-22 04:30:00 +0900まで取得します
log: スレッド1424545201から読み込み開始: start_time=2015-02-22 04:00:01 +0900, end_time=2015-02-22 16:20:03 +0900
log: スレッド1424545201から629コメント読み込んだ: 2015-02-22 04:00:09 +0900
log: スレッド1424545201から読み取り完了: size=629
log: スレッド1424458801から読み込み開始: start_time=2015-02-21 04:00:01 +0900, end_time=2015-02-22 04:00:15 +0900
log: スレッド1424458801から1000コメント読み込んだ: 2015-02-22 01:06:28 +0900
log: スレッド1424458801から読み取り完了: size=6
log: /path/to/output.xml へ出力します
OFFSET: 0
OFFSETには開始時間を再生時間0秒に合わせるための秒数が表示される。こめたんぷれいやのシフトなどに指定する。
ソース
Linuxのソフトは不明。Androidにはエンコードが必要だがNicoLがある。
takaaki 2月 22nd, 2015
Posted In: ソフトウェア