概要
前回の投稿の続きでニコニコから動画を検索してコマンドラインから再生します。
使ってみると思ったより実用的な感じだったので別に書きます。作業用BGMなのでコマンドラインのみで完結させてウィンドウも出さないようにします。
必要なもの
- peco (or percol)
- curl
- ruby
- mplayer
スクリプト
前回使ったnicovideo-dumpを少し修正したものを使います。
環境変数NICOVIDEO_DUMP_EMAIL
とNICOVIDEO_DUMP_PASSWORD
を事前に設定しておきます。
nicovideo-dump
#! /bin/sh
if [ $# -eq 0 ]; then
TARGET=$(cat -)
else
TARGET=$1
fi
if [ -z "$TARGET" ]; then
exit 1
fi
SAVEDIR=/tmp
COOKIE=/tmp/nico_cookie
FILENAME=`echo $TARGET | ruby -e "print $<.read.chomp.split('/').pop"`
curl -s -c $COOKIE -d "mail=$NICOVIDEO_DUMP_EMAIL" -d "password=$NICOVIDEO_DUMP_PASSWORD" "https://secure.nicovideo.jp/secure/login?site=niconico" -3 -i > /dev/null
curl -s -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 -s -b $COOKIE "http://flapi.nicovideo.jp/api/getflv/$FILENAME$FLAPI_POSTFIX"`
VIDEO_URL=`echo $FLAPI_RES | ruby -r cgi -e 'print CGI.unescape(Hash[*($<.read.chomp.split("&").map{|e| e.split("=")}.flatten)]["url"])'`
curl -s -b $COOKIE $VIDEO_URL
curl -s -b $COOKIE "https://secure.nicovideo.jp/secure/logout" -3 -i > /dev/null
exit 0
今回は作業用BGMを探したいのでpecoに渡す要素としてニコニコ動画から作業用BGM+αのタグで検索したものを使います。
以下のコマンドを実行すると引数なしの場合は「作業用BGM」タグ、引数を渡すと「作業用BGM」タグと引数名のタグで検索した結果がヒットします。
RSSの都合上32件しか候補が出ないですが、デフォルトではコメントが新しい順で検索されているので1時間おきに内容が適当に変わるはず。
mplayerのオプションに-novideoを指定しているので選択するとウィンドウが出ずに再生が始まります。
.zshrc
function peco-nico-bgm() {
TAG=`echo "作業用BGM $*" | nkf -WwMQ | tr -d '\n' | tr = % | sed -e 's/%%/%/g'`
ruby -r rss -e "RSS::Parser.parse(\"http://www.nicovideo.jp/tag/$TAG?rss=2.0\").channel.items.each {|item| puts item.link + \"\t\" + item.title}" | peco | while read line; do
echo $line
echo $line | awk '{print $1}' | nicovideo-dump | mplayer - -novideo
done
}
タグ無し検索
タグ追加検索
便利