htsign's blog

ノンジャンルで書くつもりだけど技術系が多いんじゃないかと思います

Windows Store App版 niconico アプリをURIスキームで呼び出す

結論からいくと

niconico://foobar

でOK。
上記のコードを走らせるとniconicoアプリが起動しfoobarで検索してくれる。


これをVBScriptでやってみた。

Option Explicit

Dim WshShell
Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.Run "niconico://foobar"

一見これで大丈夫に見えるけど、半角スペースを含むと上手く行かない。
具体的にはniconico://nico nicoといった文字列。

niconicoアプリが起動して検索画面が表示されるところまでは期待通りなのだが、検索クエリがnicoになってしまう。
どうやら半角スペース以降が消えてしまうみたい。


そこで、これを回避したのが以下のコード。

Option Explicit

Dim ShellApp
Set ShellApp = WScript.CreateObject("Shell.Application")
ShellApp.ShellExecute "niconico://foobar"

これなら半角スペースを含んでいてもきちんと検索できた。


ということで、特殊なURIスキームを呼び出したい場合はShellExecuteメソッドの方がよさそう。

ちなみに(というかこれが本題)

以下のようにすることで、作成したVBScriptファイルに文字列引数を渡して検索させることができる。

Option Explicit

Dim Args, ShellApp
Set Args = WScript.Arguments
If Args.Count <> 0 Then
	Set ShellApp = WScript.CreateObject("Shell.Application")
	ShellApp.ShellExecute "niconico://" & Args(0)
End If

これをコマンドラインランチャと組み合わせて使うと捗る。
ちなみに俺が使ってるのはこれ↓
ZiiLauncherの詳細情報 : Vector ソフトを探す!


追記(2013/11/28 21:26)

niconicoサポートに問い合わせたところ、ソート順を明示的に指定できるようなパラメータは実装されていないとのこと。
アプリ内の検索結果画面右上にあるドロップダウンリストからソート順を変更すれば、アプリ終了まではソート順設定が引き続き使われるものの、終了してしまえば「コメントが新しい順」に戻ってしまう。

これは現状では仕方のないもので、ソート順を指定するパラメータの実装については要望として受け取っていただけたようなので、開発が続く過程でそのうちパラメータが付く可能性が無きにしも非ずと言ったところ。

ちなみにWeb版では

http://www.nicovideo.jp/search/foobar?sort=f&order=d //==> 投稿日時が新しい順
http://www.nicovideo.jp/search/foobar?sort=n&order=d //==> コメントが新しい順
http://www.nicovideo.jp/search/foobar?sort=v&order=d //==> 再生数が多い順
http://www.nicovideo.jp/search/foobar?sort=r&order=d //==> コメント数が多い順
http://www.nicovideo.jp/search/foobar?sort=m&order=d //==> マイリスト数が多い順

などでソート順を指定できる。
また、order=dorder=aにすることで逆順(昇順)にすることができる。
これ以外にもパラメータは多数あるので、興味があれば調べてみるのも面白いかも。