ハードのメディアプレイヤーで画像をランダムに閲覧したい。私が持っているメディアプレイヤーに限らず専用ハードのものはたいていそうだが、PC などのソフトではあった、zip にまとめられたものを見るようなことはできず、また、ディレクトリの構造を奥へ奥へと "recursive" に辿って見るような機能もない。フォルダ内のランダム再生はある。
そこでディレクトリ構造を平坦化(flattening)してコピーするような Perl スクリプトを書いた。
はじめはソースと同じファイル名(ベース名)で一つのディレクトリにコピーしたとき重複を避けるため、手動で接頭辞(prefix)を付けられるようにすれば十分かと考えたが、使うと面倒くさいので、-F オプションによって、ファイル名にディレクトリが含まれているとき、そのディレクトリ名を prefix とする機能も作った。
例えば、
$ perl cp_with_prefix.pl --prefix=p_ a/b/c.jpg d
…としたときは、d/p_c.jpg というファイルができる。
$ perl cp_with_prefix.pl -F a/b/c.jpg d
…としたときは d/a_b_c.jpg というファイルができる。
Cygwin の mv や cp の実装を参考に、xargs といっしょに使いやすいよう -t (ターゲットディレクトリ)オプションを用意した。
例えば次のように使う。
$ find dir1 dir2 -name '*' -print0 | xargs -0 perl cp_with_prefix.pl -F -t dir3
こうすると、dir1 や dir2 の下にあるファイルがリカーシブに dir3 の下にファイル名の重複が(ほぼ)なくなるようにコピーされる。
なお、私の最初に書いた目的にそった上で高速化するため、同じファイル名があったときはコピーせずスキップする。ちゃんと上書き(overwrite)して欲しいときは -f (force)オプションを付ければよい。スキップしている表示がうっとうしいなら、-q (quiet)オプションを付ければよい。目的がただの rename に近いため、コピーしたあとの日付けはソースと変わらないようにしている。
ファイル名とコンソールの文字エンコーディングについては、ソースの以下の部分をいじって欲しい。本当は、ロケールとかを使ってコーディングできれば美しいのだが、これまでの私の経験から言うと、オプションで指定してもらうか、今回のようにスクリプトをいじってもらったほうが話が早い。現在、 Cygwin の 1.7 系列の場合、ファイルシステムのエンコーディングが cp932 (Windows 用の Shift JIS コード)であっても、utf8 で処理される。昔の Cygwin であれば、utf8 の部分を、ファイル名では cp932 にコンソールでは euc-jp にすると、うまくいくかもしれない。
our $FILENAME_ENCODER = Encode::find_encoding('utf8') or die;
our $CONSOLE_ENCODER = Encode::find_encoding('utf8') or die;
これは、とても簡単なプログラムなので、数式のようにパブリックドメインなものとして扱っていただいてよい。こんなプログラマなら誰でも作れそうなものをプログラムできる人しか使えないであろう Perl スクリプトで公開する意義はないかもしれないが、こんな簡単な機能がググっても見つからないのも変なので公開することにした。
スクリプト自体はパッと見つからないが、シェルで同じような機能を求めてる人はいそうだった。Windows なら高機能なリネームソフトはいろいろある。 iTunes とかもそういう機能がありそうだが、このような機能だけが欲しくて使っているとかありうるんだろうか?
更新: |
2012-02-09,2012-02-11 |
初公開: |
2012年02月09日 22:26:18 |
最新版: |
2012年02月11日 19:10:51 |
2012-02-09 22:26:15 (JST) in Cygwin Perl JRF 作成ソフトウェア | 固定リンク
|
| トラックバック (0)
知人のかなり旧いホームページは、HTTP ヘッダの Content-Type に text/x-server-parsed-html が帰ってくるが、これは .htaccess 等の間違いとされるものらしく、Firefox も IE6 も HTML として処理してくれない。最初、Firefox のユーザー設定ファイルである mimeTypes.rdf をいじって個人的な解決を図ったが、調べるうちにどうも不可能であることがわかった。そこで、次善の策として、外部プログラムに URL を渡し、そこで適当な処理をほどこしてから、Firefox に戻して表示させることにした。
2010-04-08 23:19:50 (JST) in Cygwin Perl Firefox | 固定リンク
|
| トラックバック (0)
90 年代に中古で買った LaserDisc プレイヤーの挙動が、「今になって」といおうか「さすがに」といおうか、とにかくおかしくなったので、今のうちに LD を DVD-R にバックアップしようとした。ある LD について、ついでに字幕も付けてみようかと思ったが、キャプチャ付属のオーサリングソフトでは、字幕を付けることができなった。Windows のフリーのソフトは使いにくく、市販のソフトも、字幕を付けられるようなものは高い。
しかも、Windows のフリーのソフトは、Cygwin のコマンドを用いているが、そういう場合の常として、すでに Cygwin のある私の環境では、新旧ライブラリが混同されるらしくうまく動かない。
でも、Cygwin でできるということはマニアックなこともできるだろうし、かねて、DVD で認証みたいなことができないものかと思っていたので、その実験も兼ねて、Unix 伝統のコマンドラインで、オーサリングを行う dvdauthor 等を使ってみた。
結果、メニュー等を市販ハードで見ると汚ないという不満があるものの、目的としたような仕様の字幕付き DVD を作ることができた。本稿は(主に、方法を忘れるであろう自分の)後学のために、その経験をまとめたものである。 Cygwin 以外、Linux などで使う場合にも参考にできるだろう。
本稿では、字幕付き DVD の作り方を一連に紹介したあと、実験的・応用的利用法について簡単に述べる。
■ |
作業の流れ
1. |
LaserDisc のキャプチャ等、素材を用意する。
|
2. |
キャプチャした MPEG-2 ファイルを DVD 用に(少し)変換する。
|
3. |
字幕を付ける。
|
4. |
メニューを作る。
|
5. |
DVD イメージを作る。(完成)
|
|
2010-03-15 23:56:09 (JST) in Cygwin ハード | 固定リンク
|
| トラックバック (1)
それを Meadow と Cygwin の bash を使って走らせることにする。Cygwin の
ImageMagickも使えるようにしておかねばならない。
2006-03-04 06:44:26 (JST) in Emacs/Meadow Cygwin | 固定リンク
|
| トラックバック (0)
現在、Cygwin の setup でインストールされる openssl-0.9.8a を使うと、 Crypt::SSLeay が make test で失敗します。openssl-0.9.8-2 などにすれば大丈夫なはずです。
'lwp-request -m GET https://...'が失敗するのも同じ理由と思われます。 Crypt::SSLeay が対応するまで openssl-0.9.8a を使わないようにするのが今のところの対処法のようです。
更新: |
06/02/16,06/02/21 |
初公開: |
2006年02月17日 13:18:10 |
2006-02-21 04:15:15 (JST) in Cygwin Perl | 固定リンク
|
| トラックバック (2)
gs で -dSAFER にすると、日本語関係でエラーが出る。これは FONTPATH が通っていないところは、読まないことになっているからで、例えば次のようにすると解決する。
|
export GS_FONTPATH=/cygdrive/c/WINDOWS/fonts
|
更新: |
05/04/25 |
初公開: |
2006年02月16日 04:45:38 |
2006-02-16 04:46:59 (JST) in Cygwin TeX | 固定リンク
|
| トラックバック (0)
libxml2 付属の xmllint を使って XML や XHTML のチェックをしようとすると、default ではいちいち dtd をリモートに読みに行ってしまう。そこで、 /etc/xml/catalog を作りローカルのファイルから dtd を読むようにした。 catalog に指定があると /etc/xml 以下のファイルなども読ませることができる。
まず、次から取ってきた DTD を /etc/xml/xhtml1-strict.dtd などとして置く。
次のように catalog を設定した。
|
<?xml version="1.0"?>
<!DOCTYPE catalog PUBLIC "-//OASIS//DTD Entity Resolution XML Catalog V1.0//EN" "http://www.oasis-open.org/committees/entity/release/1.0/catalog.dtd">
<catalog xmlns="urn:oasis:names:tc:entity:xmlns:xml:catalog">
<public publicId="-//W3C//DTD XHTML 1.1//EN" uri="/etc/xml/xhtml11-flat.dtd"/>
<public publicId="-//W3C//DTD XHTML 1.0 Strict//EN"
uri="xhtml1-strict.dtd"/>
<public publicId="-//W3C//DTD XHTML 1.0 Transitional//EN"
uri="xhtml1-transitional.dtd"/>
<public publicId="-//W3C//DTD XHTML 1.0 Frameset//EN"
uri="xhtml1-frameset.dtd"/>
</catalog>
|
上は、ほとんど下記「参考」より引用しただけ。
ちなみに次のような alias があると便利かも。
|
alias xmlvalid='xmllint --noout --valid'
|
更新: |
06/01/16,06/01/28,06/02/16,06/02/27 |
初公開: |
2006年02月16日 03:37:15 |
最新版: |
2006年02月27日 22:08:53 |
2006-02-16 03:44:13 (JST) in Cygwin HTML/XML/CSS | 固定リンク
|
| トラックバック (0)