(2014/11/12追記 : peco(percol)を使ってコマンドラインから作業用BGMを検索・再生する - Qiita を書きました、便利)
RSSを読み込んでpercolで絞り込み、curlで動画をdumpした結果をmplayerにパイプします。
必要なもの
- percol (or peco)
- curl
- ruby
- mplayer
動画をdumpするシェルスクリプト
以下を適当にパスが通ってるところに置いてIDとパスワードを埋めておきます
nicovideo-dump
#! /bin/sh
if [ $# -eq 0 ]
then
TARGET=$(cat -)
else
TARGET=$1
fi
EMAIL="hoge"
PASS="hoge"
SAVEDIR=/tmp
COOKIE=/tmp/nico_cookie
FILENAME=`echo $TARGET | ruby -e "print $<.read.chomp.split('/')[-1]"`
curl -c $COOKIE -d "mail=$EMAIL" -d "password=$PASS" "https://secure.nicovideo.jp/secure/login?site=niconico" --ssl -i > /dev/null
curl -b $COOKIE -c $COOKIE $TARGET -i > /dev/null
FLAPI_POSTFIX=`echo $FILENAME | ruby -e "print $<.read.chomp[0,2] == \"nm\" ? \"?as3=1\" : \"\""`
FLAPI_RES=`curl -b $COOKIE "http://flapi.nicovideo.jp/api/getflv/$FILENAME$FLAPI_POSTFIX"`
VIDEO_URL=`echo $FLAPI_RES | ruby -e "require \"cgi\";print CGI.unescape(Hash[*($<.read.chomp.split(\"&\").map{|e| e.split(\"=\")}.flatten)][\"url\"])"`
curl -b $COOKIE $VIDEO_URL
curl -b $COOKIE "https://secure.nicovideo.jp/secure/logout" --ssl -i > /dev/null
exit 0
$ nicovideo-dump http://www.nicovideo.jp/watch/sm****
みたいにして取得出来てたら成功
※取得方法が違うので公式チャンネル動画は取得出来ません
percolで動画を選んでmplayerに流す
適当にワンライナーでランキングを取得してpercolで選択してみます
$ ruby -r rss -e 'RSS::Parser.parse("http://www.nicovideo.jp/ranking/fav/daily/all?rss=2.0").channel.items.each {|item| puts item.link + "\t" + item.title}' | percol | awk '{print $1}'
これで選択した動画のURLが取得できていたらnicovideo-dumpとmplayerにパイプすると動画が再生できます
$ ruby -r rss -e 'RSS::Parser.parse("http://www.nicovideo.jp/ranking/fav/daily/all?rss=2.0").channel.items.each {|item| puts item.link + "\t" + item.title}' | percol | awk '{print $1}' | nicovideo-dump | mplayer -