Hatena::Groupnicovideo

にわかな奴の砂場

    使えそうなものがあれば適当にどうぞ。(自己責任的な意味で) 過去ログ

2009-12-02

業務連絡 00:04 業務連絡 - にわかな奴の砂場 を含むブックマーク はてなブックマーク - 業務連絡 - にわかな奴の砂場

ISPとしていたiTSCOMを12/1で解約したので、greasemonkeyスクリプトの置場が現在存在していない状態です。次ISPのWeb領域サービスが開始され次第、再配置する予定です。

ご不便をお掛け致しますが、よろしくお願い致します。(_o_)

(2009.12.06)再配置しました。

2009-05-19

[][]「またニコニコ市場見てる」とtwitterに投稿するリンクを作成するGreasemonkeyスクリプト 00:32 「またニコニコ市場見てる」とtwitterに投稿するリンクを作成するGreasemonkeyスクリプト - にわかな奴の砂場 を含むブックマーク はてなブックマーク - 「またニコニコ市場見てる」とtwitterに投稿するリンクを作成するGreasemonkeyスクリプト - にわかな奴の砂場

まあ、いつものアレの市場版です。こんな感じ。

またニコニコ市場見てる : シムシティ4 デラックス (1,498人が購入しました) http://ichiba.nicovideo.jp/item/azB0000AKY8A

http://twitter.com/hide32767/status/1848162385

インストールは→http://homepage3.nifty.com/hide32767/mata_ichiba_nicovideo.user.js

いつものように自己責任でどうぞ。

[][]UstreamのChatで日本語入力を有効にするリンクを作成するGreasemonkeyスクリプト 01:48 UstreamのChatで日本語入力を有効にするリンクを作成するGreasemonkeyスクリプト - にわかな奴の砂場 を含むブックマーク はてなブックマーク - UstreamのChatで日本語入力を有効にするリンクを作成するGreasemonkeyスクリプト - にわかな奴の砂場

(2009.12.06)今は普通に日本語入るようになってるので不要と思われ。

2年前に先駆者がいらっしゃった。俺速。

概要

ここの「ブラウザのチャットで日本語が入力できない場合」で使うブックマークレットをGreasemonkeyで動くようにしてみた。リンク作成部分とかまんま「また見てる」の流用ですね、わかります。

使い方

  1. まず「Chat」タブをクリックしてチャットを起動する。
  2. 「Recommended Live Shows:」の上にある「[IME enable]」をクリックする。
  3. チャットがリロードされて日本語が入力できるようになる。

インストール

こちらから→http://homepage3.nifty.com/hide32767/ustchat_ime_enable.user.js

いつものように自己責任でどうぞ。

ブックマークレットでいいんじゃね?

その通りでございます。

2009-04-29

[][]「またニコニコ動画見てる(0.3)」新プレイヤー向けパッチ 03:15 「またニコニコ動画見てる(0.3)」新プレイヤー向けパッチ - にわかな奴の砂場 を含むブックマーク はてなブックマーク - 「またニコニコ動画見てる(0.3)」新プレイヤー向けパッチ - にわかな奴の砂場

概要

上記が新プレイヤーでは動画時間が取れず、(00:00)のような出力になったり、またそもそも動かなくなったりしていたので、そのパッチ的なものを書いてみた。

(仮)インストール(5/20追記)

本家が修正されるまでは修正したものを置いておきます。自己責任でどうぞ。

こちらから→http://homepage3.nifty.com/hide32767/matanicovideo.user.js

説明

旧プレイヤーでは

document.getElementById('flvplayer').wrappedJSObject.GetVariable('ContentLength')

と言うコードで、Flashオブジェクトにセットされた動画の時間を取れていたが、これが新プレイヤーではnullが返ってくるようになった。

現在のwatchページでは、HTML内でVideoオブジェクトが定義されており、これのlength値に動画の時間が秒数で設定されているので、これを利用するようにした。

補記

greasemonkeyのユーザスクリプトから対象となるHTMLドキュメント内で定義されているオブジェクトを利用する際には、unsafeWindowオブジェクトまたはwindowオブジェクトの子オブジェクトとしてアクセスすればいいようです。以下参考リンク。

パッチ

*** matanicovideo.user.js	2009-04-30 02:56:22.000000000 +0900
--- matanicovideo.p.user.js	2009-04-30 02:56:40.000000000 +0900
***************
*** 6,11 ****
--- 6,13 ----
  // @version   0.3
  // ==/UserScript==
  
+ var w = unsafeWindow || window;
+ 
  (function(){
  	Number.prototype.z = function(len){
  		var s = '0'.fill(len) + this.toString();
***************
*** 49,55 ****
  						var subject = h1.textContent;
  						var url = location.href;
  						
! 						var len = document.getElementById('flvplayer').wrappedJSObject.GetVariable('ContentLength').replace(/\D+/g, '');
  						var lmin = Math.floor(len / 60);
  						var lsec = len % 60;
  						
--- 51,57 ----
  						var subject = h1.textContent;
  						var url = location.href;
  						
! 						var len  = w.Video.length;
  						var lmin = Math.floor(len / 60);
  						var lsec = len % 60;
  						

2009-01-03

[][][][]AviSynthで差分合成する 21:37 AviSynthで差分合成する - にわかな奴の砂場 を含むブックマーク はてなブックマーク - AviSynthで差分合成する - にわかな奴の砂場

内容としては「 ダンスの背景飛ばし……? - にわかな奴の砂場 - ニコニコ部」の応用となる訳ですが、AviSynth標準フィルタだと何かと使い辛いので関数を書いてみたりしたので、拙作をぺたり。自分用のローカルライブラリですが、公開する事で何かの役に立つかもしれませんので。

mylib.avs

#####
###  AviSynth用ローカル関数
#    

#
# EARTHSOFTDV : AviUtl用のPV3/4のDVファイルローダを使って読み込む為の関数.
# ※WarpSharpパッケージが必要.(cf.http://www.avisynth.info/?warpsharp%A5%D1%A5%C3%A5%B1%A1%BC%A5%B8)
#
LoadAviUtlInputPlugin("C:\Program Files\EARTH SOFT\PV3 3.x\AviUtl\EARTH SOFT DV.aui", "EARTHSOFTDV")

#
# DiffMask : 2つのクリップの差分から生成した白黒256階調のクリップ(RGB32)を返す.
#            ※VerticalCleanerが必要.(cf.http://www.avisynth.info/?niiyan%2F2008-02-27)
#
#	s1, s2    … 差分抽出用のクリップ.同じ解像度である事が必要.
#	tolerance … 差分の許容誤差.内部的にはColorKeyMask()のパラメータとして利用.
#
function DiffMask (clip s1, clip s2, int "tolerance") {
	s1 = IsYUY2(s1) ? s1 : ConvertToYUY2(s1)
	s2 = IsYUY2(s2) ? s2 : ConvertToYUY2(s2)
	tolerance = default(tolerance, 0)

	e = Overlay(s1, s2, mode="difference").ColorYUV(off_y=-128).ConvertToRGB32()
	e = ColorKeyMask(e, $000000, tolerance)
	e = e.ShowAlpha().VerticalCleaner().VerticalCleaner().Greyscale()

	return e
}

#
# MaskedLayer : 前景にアルファチャネルを適用し,背景と重ねたクリップ(RGB32)を返す.
#
#	bg   … 背景となるクリップ.
#	fg   … 前景となるクリップ.アルファチャネルが適用される.
#	mask … アルファチャネルとなるクリップ.基本的に白黒256色.
#	※3クリップとも同一の解像度である事が必要.
#
function MaskedLayer (clip bg, clip fg, clip mask) {
	bg = IsRGB32(bg) ? bg : ConvertToRGB32(bg)
	fg = IsRGB32(fg) ? fg : ConvertToRGB32(fg)
	mask = IsRGB32(mask) ? mask : ConvertToRGB32(mask)

	fg = Mask(ResetMask(fg), mask)
	res = Layer(bg, fg, op="add")

	return res
}

使用例

キュンキュンメガネと大正リボンを同時に付けてみると言う。これは以下のようなAviSynthスクリプトで合成しています。

#
# 大正リボンのクリップにキュンキュンメガネのクリップを合成してみる
# ※ColorItが必要.(cf.http://www.avisynth.info/?%B1%C7%C1%FC%B8%FA%B2%CC#bce2e312)
#

#外部スクリプトのインポート.同フォルダに置くか,或いはフルパス指定
Import("mylib.avs")

#大正リボンのクリップ
ribon=EARTHSOFTDV("ribon.dv")
#キュンキュンメガネのクリップ
megane=EARTHSOFTDV("megane.dv")
#セピアサングラスのクリップ
sepisan=EARTHSOFTDV("sepisan.dv")

#メガネとセピサンの差分からマスク作成
mask=DiffMask(megane, sepisan)
#穴が埋まるまでマスクを膨張させる
mask=mask.Morpher(type="dilate").Morpher(type="dilate").Morpher(type="dilate").Morpher(type="dilate").Morpher(type="dilate").VerticalCleaner()
#穴が埋まったらマスクを収縮させる.ついでにエッジぼかし
mask=mask.Morpher(type="erode").Morpher(type="erode").Morpher(type="erode").Morpher(type="erode").Morpher(type="erode").Blur(1)

#目元を合成
MaskedLayer(ribon, megane, mask).ConvertBackToYUY2()

リボンの動画にメガネの動画の目元部分だけを重ねる為、メガネとセピアサングラスの動画差分を利用してマスクを作っていますが、そのままだと穴ぼこだらけで使えないので、ColorItプラグインのフィルタMorpher()で穴を埋めています。

f:id:hdkINO33:20090103212934p:image

こんな感じ。で、後はこのマスクをメガネ動画のアルファチャネルとして適用し、リボンの動画と重ねてめでたく完成。1アングル作る為に3本録らなきゃいけないので時間も保管容量もバカになりません。それに加えて合成処理の遅い事と言ったら、8000フレームの処理が大体30分くらい。全自動なんで放っておけばいい訳でもありますが。

複数のアクセサリを合成する場合は同様の手順を重ねればいいだけですが、重ねて不自然の無い順番を探すのは結構めんどくさいです。*1

nukIM@S-2使えばいいんじゃね?

Exactly.

2008-12-23

[][][]雪歩誕生日動画を 00:57 雪歩誕生日動画を - にわかな奴の砂場 を含むブックマーク はてなブックマーク - 雪歩誕生日動画を - にわかな奴の砂場

作ってみた……?

最近古いBMSMODを聴き返してる時にイメージが膨らんで来たので、雪歩の誕生日が近かったと言う事もあり久しぶりに組んでみた。なんと9ヶ月ぶりらしい……もうちょっと活動しなさいと言うか何と言うかorz 雪歩を当てたのには何となく、ではなくそれなりに思うところがあったりした訳ですが、まあそれはそのうちに。

構想の段階ではBGAの漢字アニメとか取り入れて使ってみたかったのですが、主に技術的な問題等々あり断念。アップショットのところとか結構寂しいので何とかしたかったと言うのはあります。

あとnmlPの瞳ハイライト消しAviUtlプラグイン*1にはお世話になりました。これが無かったらまた違ったものになっていただろうなと。