Archive for the ‘Hack?’ Category

Perlでニコニコ動画で遊ぶ。モジュールの導入

土曜日, 9月 8th, 2007

WindowsでActivePerl最新版を使ってニコニコ動画で遊びます。
とりあえずPPMで必要なモジュールをインストールっ。
コマンドプロンプトでPPMを実行。
標準のActivestateのリポジトリだとインストールできないものがあることとバージョンが古いものになるのでtcool.orgを利用させてもらいます。

> ppm install http://ppm.tcool.org/archives/WWW-Mechanize.ppd 
> ppm install http://ppm.tcool.org/archives/Crypt-SSLeay.ppd 
> ppm install http://ppm.tcool.org/archives/Config-Simple.ppd 
> ppm install http://ppm.tcool.org/archives/Jcode.ppd

次、PPMで入れられないモジュール(実はPPMパッケージを作る処理が同梱されてますがppdで配布してるところを知りませんので)なんですが下でネタにしてるFLV::ToMP3が入っているモジュールFLV::Infoも入れましょう。こちらはCPANのサイトから直接圧縮ファイルをダウンロードしての導入作業が必要になります。以下説明。
まず、CPANの「FLV::Info」のページを開きます。

CPAN
画面のDownloadからファイルを保存します。
ファイル「FLV-Info-0.18.tar.gz」を作業用にC:\tmpみたいな適当なフォルダに置きます。圧縮ファイルなので解凍ソフトでフォルダ付で解凍します。
コマンドプロンプトで解凍されてできたフォルダに移動します。
で、次のコマンドを実行。

> perl Build.PL 
> perl Build install

が、モジュールが足りないとエラーが出ると思います。というわけで改めてPPMで追加しましょう。

> ppm install AMF::Perl 
> ppm install SWF::File 
> ppm install Readonly

これらのモジュールがインストールできたら再度

> perl Build install

これで、おk。

ニコニコ動画のFLVをダウンロードしてMP3にする

土曜日, 9月 8th, 2007

久々にPerlで小物作成。
ニコニコ動画のFLVファイルをダウンロード&MP3作成。
動作に必要なジュールの説明は後ほど。

#!/usr/bin/perl
 
# mp3kure.pl
# programmed by MDR
 
use strict;
use WWW::Mechanize;
use Config::Simple;
use CGI;
use FLV::ToMP3;
 
my $url = ({
    TopPage => 'http://www.nicovideo.jp/',
    Watch   => 'http://www.nicovideo.jp/watch/',
    Api     => 'http://www.nicovideo.jp/api/getflv?v='
});
my $conf = Config::Simple->new('./mp3kure.ini')->vars();
 
my $mech = WWW::Mechanize->new( keep_alive=>4 );
$mech->get( $url->{'TopPage'} );
$mech->set_fields(
    mail => $conf->{'Main.Mail'},
    password => $conf->{'Main.Password'}
);
$mech->submit();
 
$mech->get( $url->{'Watch'} . $ARGV[0]);
my $res = $mech->get( $url->{'Api'} .$ARGV[0]);
my $q = CGI->new( $res->content );
my $uri = $q->param('url');
$mech->get( $uri, ":content_file" => "./$ARGV[0].flv");
 
my $converter = FLV::ToMP3->new();
$converter->parse_flv("./$ARGV[0].flv");
$converter->save("./$ARGV[0].mp3");
 
#エラー処理? そんなの関係ねぇ

設定ファイルはmp3kure.plと同じフォルダにmp3kure.iniを作って次の内容で置いてください。

[Main] 
Mail=ニコニコ動画にログインするメールアドレス 
Password=同パスワード

inpout32.dllをVCで使うためのヘッダファイル

土曜日, 8月 18th, 2007

USB版コマコンをつくって検証とかしてみたところ、求める精度(60F/sの完全制御)には到達できないと判断したのでUSBは捨てて、原点に立ち返ってパラレルポートを使って制御することに。USB版も安定して1F単位で動いてると見えてたんですが、数百フレームぶっ続けで実行させてるとふらつきが出まくるのでここはやっぱり同期信号をトリガにして作るのが結局正解だろうということで、ね。
まず、同期信号が入力されたのを検出するためにとりあえずinpout32で入力ポートのデータをチェックできるアプリを作成っと。

というわけで、inpout32.dllをVC++2005 ExpressEditionで使うときに突貫で書いたヘッダファイルの中身を公開。
まあ、ぶっちゃけ内容はCPANのDevice::ParallelPortをぱくって参考に機能をマネッコしたというのはバレバレですかね。
一応、namespaceとか使ってみましたがこういう使い方でいいんだろうか…と不安になる。

中身は以下。
(more…)

出来てたけどアップするの忘れてたので上げておく。

木曜日, 8月 9th, 2007

CONDUCTOR_SS

VBで作成してたけど、ふと思いつきVisualC++ 2005 Express Editionで作り直し+機能追加したもの。

conductor.png
マクロ編集・実行ツール「CONDUCTOR」

(動作環境)
.Net Framework 2.0
FTDI ダイレクトドライバ

対応機器は参考にさせていただいた「くすのき電算室」さんで公開されてる回路構成のモノ+シリアルIDになっていたりします。
くすのき電算室さんはレビューとかいろいろと参考になります。

.NETでここまでやったんだからもういいよねのVersion1.0

金曜日, 7月 13th, 2007

Marionettesコマコン

解凍してsetup実行で。
デバイスの1P、2Pのシリアルナンバーは参考にさせていただいたサイトと同一。
ちなみに2P側がちゃんと動いてるかのテストはしていない(待て
とりあえずほぼ満足いく精度でコマンド送信されてると思うんだけど、完璧にはならないのでもどかしい仕上がりなのが……うーん。
まあ同期してないんだからこの辺があきらめどころかなあ。

ツールバーのアイコンの一部はこちらのサイトのものを利用させてもらいました。
多謝

FT245BMに頼る

水曜日, 6月 27th, 2007

パラレルポート接続のエンジンをPerl・マクロ編集はVBScriptのHTAっていうコマコンですが被験者達(笑)の様子を見てると実用性の限界に達してるのを感じたので素直に1アプリとして完成させようということでセコセコとやってます。ちなみに暇つぶし勉強がてらVisualBasic 2005 Express Editionを開発に利用。ひさびさにVisualBasicまじめにいじってるけど、ずいぶん変わってるなあVB……。

さて。パラレルポートでの接続だとコントローラを2系統同時に操作するにはどうにも面倒なことになりそうな気配があり、サイトで情報公開してる人が居るUSB接続でのコントローラを同時に2系統操作する方針に現在は転換しております。参考にさせていただいたサイトと使ってるUSBのシリアル→パラレル変換チップ(FTDI社のFT245BM)を使っているIPI社のデモ基板USB245BPを購入(回路組むのに手間かけたくなかったので)、手持ちのテスト用PSパッドとつないで早速テスト。参考にしたものとはピンの結線が私のパラレル接続バージョンと微妙に違ってどうしようかなあと思ったんですが、さしあたって動くかどうかコマンド送信できるプログラムが作成できてなかったのでマネッコ結線(^^;シリアルナンバーもFT000001にあわせて公開されてるコマコンアプリ使わせてもらって……。

おk。

通信速度(?)の微調整は必要そうですが一通りの操作に問題無しです。 まずは試しにってことで1個しか基板買ってないわけですが買い足せってことですかね。なんとなく、本当になんとなくで使い道も考えずに単体チップも購入してるんですが考えなさすぎで持ち腐れ決定っぽい(・w・;
#確認しきれなかったけどアレ完成してるはず。ちょっと確信がもてた>Kの人 以下参考。ただのメモ

    PS  NG PS(参考)
D0 ↑   ↑   ←
D1 ↓   ↓   ↓
D2 →   →   →
D3 ←   ←   ↑
D4 □   A   ○
D5 △   B   ×
D6 ×   C   △
D7 ○   D   □    

USB245BP
     Pin
D0   1
D1   2
D2   3
D3   4
D4   5
D5   6
D6   7
D7   8
GND 15

XPで(略)HTAと格闘

火曜日, 5月 29th, 2007

FrameEditor version 0.5
120フレーム制限解除。
新規マクロ作成時に最大フレーム数指定可(30フレーム単位)
レバー方向の入力は任意のセルを選択して数字キーで入力。
テンキーでも通常数字キーでも可。レバー入力消去はDel、BS、Space。

あとは細かいバグ取り……
とりあえずここに置いておくのでフィードバックよろ。

XPで(略)今の状況

木曜日, 5月 24th, 2007

FrameEditor v0.2マクロ実行本体の方は詰めれるところ詰めた割に効果が薄くてションボリ。

なので、貼り付けたスクリーンショットを見てもらえばわかると思いますがマクロ編集環境の方をせこせこと開発してます。これ作ったら
思った以上に動作検証のテストが楽になりました。
うーむ、制限なしのVBScriptって遊べすぎる(・w・

さて。
今の時点での機能、および仕様です。
「マクロの編集はマウス操作だけで完結」
※キーボード使うならテキストエディタとか表計算とか使いましょう。

「編集したマクロをファイルに保存」
・直前フレームのNフレーム延長記述は保存できない。
・必ず120フレーム分が記述されたファイルとして作成される。

「保存したマクロの読み込み」
・長さ120フレームを超えるマクロは120フレームまでを編集画面に読み込み、121フレーム以降は読み込まれない。
・120フレームを超えるマクロを保存しなおすと121フレーム以降は欠落する。

「任意のフレーム間のリピート実行」
・指定したフレーム番号の範囲を指定回数実行させます。

「編集中マクロの実行」
実装度80%、開発優先度(高)
リピート実行以外は厳密には編集中のマクロ実行はされない。
→一度ファイルを保存して実行する必要がある。

「マクロ実行時の左右反転出力」
1P側記述を2P側として出力させることが可能。
出力数値のXOR取るだけ。実装にかかった時間3分。

「実行ログ表示」
標準出力へ出力している内容を別窓で表示する。
実装中。

まあ、こんなとこですかね。
実用レベルといえば実用レベルだけども・・・って感じ。
実装して思ったけど繰り返し実行は、硬直フレーム計算に超便利です。
ふと、MIDIファイルをマクロに変換する仕様を決めれば、ピアノロール画面でマクロ組めるじゃん。
とか思ったんですが、「苦労>>>>得られる物」って予感がするので忘れることにします。

HTAの習作

火曜日, 5月 22nd, 2007

feditor.pngこうして開発してみたわけですが、ぶっちゃけHTAだけで自動操作環境つくれるのに気づいたり。レバー方向の矢印はKAKUTOTEN使って表示させてます。

XPで(略)動作検証

火曜日, 5月 22nd, 2007

わかりやすい?動画。
VSYNCをトリガーにしてないのと処理時間の揺らぎでたまにフレームずれがでる感じだったりするんですが、まずは意図どおり動いてるものからどーぞ。

ステステ
野ステのバックステップ後半の入力はちょっと引っ張ってます。入力内容は「4N4(6フレ継続)8」×N回です。
風ステは「6N236N」×N回

キエン風
↑わかる人にはわかるらしい動画
(あ、霧足最風なのに書き忘れてた……)

step_zure.png
オマケ。入力落ち(認識落ち?)が発生した時の動画
風ステの前入れキャンセルを認識されてないフレームが分かる。

動画をこんなにべたべた貼るならYouTubeとか使うの考えた方がいい気がしてきました(・w・;