ニコニコ動画の動画再生ページに投稿者フィルターを表示させるGreasemonkeyスクリプト,NicoFilter Tab を作った

インストールはこちら
http://userscripts.org/scripts/show/90132


近頃めっきり見なくなった投稿者フィルターですが,見えないよりは見えた方がいいよね!ということで,タブの形で見えるようにしてみました。
フィルターを可視化するスクリプトは,既に腐るほど存在するとは思うのですが,タブで表示させるってのが新しい点ですね。タブ表示はニコニコ動画オリジナルのUIと調和して,いい感じの見た目(&使い勝手?)になります。

参考にしたサイト
getflvの戻り値についてまとめ(2010年8月版) - MineAPの(開発)日記

.NET 4.0 + C# + VS2010でManaged DirectXを使う

日を改めて調べて見たら案外あっさり解決策が見つかったのでメモ。

  1. プロジェクトの参照設定でMDXのDLLを追加する
    • C:\Windows\Microsoft.NET\DirectX for Managed Code\1.0.2902.0 以下
  2. app.configを以下の用に書き換える
    • <startup useLegacyV2RuntimeActivationPolicy="true"> ...

これでDirectXC# on .NET Framework 4.0から使えるように!DirectX.AudioVideoPlayback.Audioで綺麗に音が多重再生できるようになった。やったね!

追記

こんなのもあった。Windows® API Code Pack for Microsoft® .NET Framework - Home (via C#からDirect3Dを使う第3の方法 - Tari Lari Run)
なんでいままで見つけられなかったんだ…

わくわくするルーレット「わくわくルーレット」を作った

わくわくルーレットというソフトを作りました。

説明やらダウンロードやらはこちらから
わくわくルーレット
バグ報告やら要望やらはこちらへどうぞ
【わくわく】わくわくルーレットサポートスレッド【するの?】 - Greasemonkey等サポート掲示板

ソフトの命名は某コミュ向けの内輪ネタなんですが,ソフト自体は割と汎用的なんでこちらでも紹介した次第です。用途としては,電凸で会話などするニコ生で話題を選ぶ時に使ったりすると良いかなと。

姉妹ソフト
ルーレットが楽しめるソフト「わくわくルーレット」 : ゆきちゃんのソフトウェアなページ
インスパイアされたソフト
罰ゲームルーレットの詳細情報 : Vector ソフトを探す!

以下どうでもいい言い訳と感想

ルーレット中に「ピッピッピッ」と音が鳴るようにしたんですが、.NETデフォルトの機能だと音声の同時再生ができないみたいで、ブツブツ途切れてしまいます。解決するにはDirectXを使わなきゃいけないらしく、500MBもあるSDK落としてきてインストールしたけど .NET 4.0 から使えるようにするにはまた別のSDK (SlimDX) が必要だとか。しかもそれは開発者が入れるだけでは駄目で、アプリ使用者もなんかインストールしなきゃいけないっぽい。こんなソフトの為に何かインストールさせるのもアレだなあと思って結局音声は諦めた。Managedじゃないコードからアクセスするやり方もあるっぽいけど、諦めた。音声って意外と難しいんだな…。Flashくらい気軽に使えると思ったのに。Silverlightだとまた違うんだろうか。
今回 Visual Studio 2010 + .NET Framework 4.0 + C# 4.0 + WPF って環境でアプリ作ったんですが、VS2005と比較するとXAMLアプリがものすごく作りやすくなっていて驚いた。あとはStyleのSetterでプロパティと値の補完ができるようになれば個人的には完全に満足。
相変わらずXAMLはすごく柔軟でなんでもできるけど、実際それほどなんでもできない気もした。複雑で全容を把握できない!仕様もちょっとは分かったけど把握できない!MSDN重い!難しい!そんなXAMLのせいで「C#でコード書いたら負けだと思う病」にかかってしまい、結構無駄な時間を費やしてしまった気がするwまあ楽しかったからいいか。
そんなこんなで久しぶりのC#開発、初めてのGUIアプリの公開でした。C#Javaよりも断然素敵だと思いました。varとかlambdaとか。他にも色々。varを多用したC#のコードはパッと見JavaScriptみたいで大変親しみを感じました。まる。

ニコニコ動画の動画再生ページに広告コメントを表示させるGMスクリプト: NicoAds Tab を作った

ダウンロードはこちら
NicoAds Tab for Greasemonkey


先日作ったライブラリを使いがてらつくってみた。スクリーンショットを見て分かるとおり、かなりのやっつけ実装。最初はちゃんとしたUI作ろうと思ってたんだけど、思いの他面倒だったから結局やっつけた。

2010/10/29追記

ニコニコ動画(原宿)で広告ページのレイアウトが変更されたので,それにあわせて修正しました。

2010/11/10追記

ニコニ広告のHTML変更の関係で動作がおかしくなっていたのを修正しました。

ニコニコ動画の動画再生ページのタブをGreasemonkeyから追加する方法

さっき書いた関数 (Nicopedia Tabで使ったやつ)を使えば,Greasemonkeyからタブが追加できたりしていろいろ便利になるんじゃないかな,と思ったので公開します。

function createPanel(label, id, action) {
  id = 'itab_' + id;

  let itab = document.querySelector('#itab td');
  let link = document.createElement('a');
  link.href = '#'+id;
  // a の中に div いれるとかちょっとどうにかしてほしい
  link.innerHTML = '<div>' + label + '</div>';
  itab.appendChild(link);

  let info_frm = document.querySelector('.info_frm');
  let panel = document.createElement('div');
  panel.id = id;
  panel.className = 'info';
  info_frm.appendChild(panel);

  unsafeWindow.cont = unsafeWindow.$$('.info_frm .info');

  const active = 'in';
  link.addEventListener('click', function(e) {
    e.preventDefault();
    Array.forEach(document.querySelectorAll('#itab td a'),
                  function(elm) elm.classList.remove(active));
    link.classList.add(active);
    Array.forEach(document.querySelectorAll('.info_frm .info'),
                  function(elm) elm.id === id
                  ? elm.classList.add(active)
                  : elm.classList.remove(active));
  }, false);

  if (typeof action === 'function')
    link.addEventListener('click', function(e) action(panel), false);

  return panel;
}

使い方

※createPanelの第三引数は省略可能です

  // ニコニコ大百科という名前のタブを作る (panel.id == nicopedia)
  let panel = createPanel('ニコニコ大百科', 'nicopedia', function onActivate() {
    // タブが表示された時(ラベルがクリックされた時)の処理
    alert('clicked!!');
  });
  // タブのパネルに表示する内容を指定する
  panel.appendChild(...);

追記

gistにアップしました。ニコニコ動画のwatchページのタブを追加する関数
GMスクリプトのヘッダ部分に

// @require http://gist.github.com/raw/636265/11243a0856cc32f4d5633b95d9411aecb1bd820b/nicovideo_createPanel.js

を書き加えるだけで使えるようになります。

新Greasemonkeyスクリプト:Nicopedia Tab を作った

ニコニコ動画の動画再生ページに,ニコニコ大百科の動画記事(の概要?)を埋め込むGreasemonkeyスクリプトです。今回のリニューアルで消えちゃったやつをタブとして復活させました。

インストールはこちら
Nicopedia Tab for Greasemonkey


運営が本気出せば数行のHTML+スクリプトで書ける内容なんだから,わざわざユーザースクリプトを書かせることなく,公式でやればいいのになー。と思いました。せっかくのタブインターフェースなんだしタブ増やそうよ。