flvプレイリスト自動生成スクリプト

File2=orenobouken___Episode_11___Part_2.flv
File3=orenobouken___Episode_11___Part_3.flv
File4=orenobouken___Episode_12___Part_1.flv
File5=orenobouken___Episode_12___Part_2.flv
File6=orenobouken___Episode_12___Part_3.flv
File7=orenobouken__うひょー_13_ova_part_1_3.flv
File8=orenobouken_13_ova_part_2_3.flv
File9=orenobouken_13_ova_part_3_3.flv

と言う風に数値のみでソーティングする。

#!/bin/perl
# ヽ(°京°)ノ
require 'config.pl';

$targetdir = '/home/oreore/flv/'
$filter = '*.flv';

foreach $dir(glob "$targetdir*")
{
	print "\n* $dir\n";
	my %fhash = ();

	# ファイル...
	foreach (glob "$dir/$filter")
	{
		s/^$dir\///;
		$file = $_;

		# 日本語数字 適当に対応 (このファイルの保存形式に従う)
		s/1/1/g;
		s/2/2/g;
		s/3/3/g;
		s/4/4/g;
		s/5/5/g;
		s/6/6/g;
		s/7/7/g;
		s/8/8/g;
		s/9/9/g;
		s/0/0/g;

		# 数値だけ抜き出し
		while(1)
		{
			/(\d+)/ or last;
			$fhash{$file} .= sprintf( "%032d", $1);
			$_ = $';
		}
	}


	# 数値のみでソーティング
	@keys = sort { $fhash{$a} cmp $fhash{$b} } keys %fhash;
	$entry=$#keys+1;

	# ファイルがなければ次へ
	next unless(@keys);
	
	# playlist.pls として保存 nkfパイプ tee
	open PLS, "| nkf --cp932 -s | tee $dir/playlist.pls" or die $!;
	# plsファイル生成
	print PLS <<"_PLAYLIST_";
[playlist]
NumberOfEntries=$entry
Version=2
_PLAYLIST_

	$cnt = 1;
	foreach(@keys)
	{
		print PLS "File$cnt=$_\n";
		$cnt ++;
	}
	close PLS;

}