Textwellでニコニコ動画を検索するアクション NicoSearch

昨日はSoundCloudだったけど、ニーズとしてはこっちかな。


niconico 6.25
分類: エンターテインメント,写真/ビデオ
価格: 無料 (DWANGO Co., Ltd.)

天下のニコニコ動画をTextwellで引っ張ってみる。別に直接検索してもいいんですが、ブログにリンクを貼るのが面倒だから、一括して面倒見ちゃいましょう。


Textwell 1.3.5
分類: 仕事効率化,ユーティリティ
価格: \300 (Sociomedia)

下記アクションをインポートしてください。「sort=n」なのでコメントが新しい順に並びます。32件が上限。「sort=f」にすると投稿日順、「sort=v」は再生数、「sort=l」は再生時間、「sort=m」はマイリスト数の順になります。お好きなようにどうぞ。

<meta name=viewport content=initial-scale=1,user-scalable=no>
<meta name=format-detection content=telephone=no>
<title>searching...</title>
<style>
  .box{
    color:gray;
    background:#fafafa;
    font-size:medium;
    padding:5px;
  }
  img.icon{
    float:left;
    width:75;
    margin:5px;
    border-radius:5px;
  }
  span{
    color:black;
  }
  hr{border:0;}
</style>
<script>
// 起動用URLスキーム
Scheme="nicovideo://";
// Scheme="nicobox://";

// 埋め込みプレート ${id}:URLアドレス ${title}:タイトル
Plate="<iframe src=http://ext.nicovideo.jp/thumb/${id}><a href=http://www.nicovideo.jp/watch/${id}>${title}</a></iframe>";

// プログラム本体
s=T.stdin.currentText;
if(s=="") location="http://sp.nicovideo.jp";
url="http://ext.nicovideo.jp/api/search/search/"+s+"?mode=watch&order=d&page=1&sort=n";
T.request({
  url:url,
  callback:function(x){Disp(x.responseText);}
});

function Disp(x){
  T.title(T.current);
  data=JSON.parse(x).list;
  s="<hr>\n";
  k=0;
  for(i=0;i<data.length;i++){
    d=data[i];
    icon=decodeURI(d.thumbnail_url);
    s+="<div class=box onClick=Open(\""+i+"\")><img class=icon src="+icon+"><span onClick=Paste(\""+i+"\")>"+decodeURI(d.title)+"</span><br>date: "+d.first_retrieve+"<br>view: "+d.view_counter+"<br clear=all></div><hr>\n";
  }
  document.body.innerHTML=s;
}

function Open(i){
  url=Scheme+data[i].id;
  T.urlScheme(url);
}

function Paste(i){
  d=data[i];
  id=d.id;
  title=decodeURI(d.title);
  text=Plate.replace(/\${id}/g,id).replace(/\${title}/g,title);
  T("replaceCurrent",{text:text});
}
</script>

Import Textwell ActionNicoSearch



最初にニコニコ動画にログインします。空行にカーソルがある状態でアクションを起動。するとニコニコ動画のモバイルサイトが開くので、左上の「ログイン」で認証します。



カーソル行にキーワードを書き、NicoSearchを起動すると検索結果がリストになって出ます。もし全然ヒットしない場合は、Textwellにログインが反映していないケースが考えられます。AppスイッチャーでTextwellを終了し再度Textwellを起動してください。



サムネをタップするとニコニコ動画のアプリが起動します。もしNicoBoxを起動したい場合は、ソース中のScheme変数を「nicobox://」に変更することで対応できます。



検索結果のタイトルをタップすると、リンクプレートが本文に貼り付きます。上記のような表示になる。これでニコニコ動画の紹介をモブログで出来るようになります。


最近のアニメは放映後一週間、ニコニコ動画で無料公開されるので、気になるのはそれで追いかけてしまいますね。おかげで画面にコメントが流れないと、何か欠乏を味わうような空虚さを感じるようになった。まともな映像が見れない身体になっちゃいました。
技術的なことですが、今回の動画取得はT.request()でGETしています。でも、ニコニコ動画はPOST方式に移行中で、TextwellのT.request()だとPOSTにデータを持たせることができません。それで、このアクションも数ヶ月後には動かなくなる可能性があります。その場合は対応版までしばらくお待ちください。