tuneoの日記: ぬがーudevめんどくせー!! 3
日記 by
tuneo
組みあがらないサーバと片付かない段ボールと調子が悪いデスクトップPCから逃避して、ディスクを光学ドライブに突っ込むと挿入を検出して、メディア種別に応じてデータディスクなら適宜ddでイメージファイルこさえたり、オーディオCDならCDリッパーで音楽取り込んだりしてくれるツールを開発中。もちろん、どこぞのCDDEとかいうツールとは違ってちゃんと挿入を待つヤツをだ。
udevやpyudevのドキュメントはあるのだが、CDをインサートするとudevでどういうイベントが発生してどのプロパティにどんな値がセットされる、とかそういう詳細を書いてあるドキュメントが全然見当たらないときた。
しかたがないのでudevadm monitor -p -uとかやってディスクを出したり入れたりして挙動を調査。なんとか動く代物には仕上がりつつあるんだが、いかんせんヒューリスティックな判定条件なのでこれで万全に動くのかわかんない。うーあー面倒くさいー。
できれば外部コマンド(ddとかcdparanoiaとか)の実行部分をマルチスレッド化して、複数のドライブを接続した場合は並列に処理できると尚可なのだが……。
パッケージというかディストロだけど (スコア:1)
VortexBoxのメディア認識部分のソースをさがしてきて、調べる、とかも良いかもしれぬ
# CDDEがどうクサってるか知らんけど、まだどっこいくらい?
https://mag.osdn.jp/09/08/28/0943245 [mag.osdn.jp]
M-FalconSky (暑いか寒い)
Re:パッケージというかディストロだけど (スコア:1)
VortexBoxも考えたんですがソースコードのありかがわからないので断念しました。
なお、俺とだいたい同じところを目指してるAutomatic Ripping Machineというソフトがあるので見てみたんですが、俺とほとんど同じことしかやってない(ただしbashスクリプト)のであまり参考になってないです。
あと、ディスクの変更時に特定コマンドを叩くudevのルールを書くと面倒が無いみたいなんですよね。俺は必要な時だけプログラムを実行する方式にしたいのでルールには頼らない予定ですが。
Re:パッケージというかディストロだけど (スコア:1)
メディアを検出した後、リッピングが途中で終了してしまい(最初の数十MBしか読んでないのに正常終了なのでファイルサイズ見ないとわからない)、しかも2回リッピングしようとしてファイルが重複してるとか言われる謎現象が発生していたんだけど、リッピング始める前に1秒待ったらまともに動いてるっぽい感じ?