*1  日本語ファイル名をローマ字に変換する ruby + kakasi script

Palm TX で使っている pTunes が例によってSDカード上の日本語ファイルを扱ってくれない(id3tagは大丈夫だがファイルリストに表示されない)ので、ディレクトリ名・ファイル名をローマ字に変換するスクリプトを書いた。引数にディレクトリを指定すると recursive に日本語ファイル名をローマ字に変換する。処理には libkakasi を使用して、前段では -w での分かち処理もしている。また空白はアンダーラインに変換。割と破壊的なので利用には注意を。
#!/usr/bin/ruby

require 'kakasi'
require 'find'
require 'nkf'

def romanize_dir dir
  Find.find(dir) do |fpath|
    next if NKF.guess(fpath) == 5 && !/\s+/ =~ fpath # ascii or whitespace
    begin
      filename = Kakasi.kakasi('-w', NKF.nkf('-e',fpath)).gsub(/\s*\/\s*/, '/')
      filename_roman = Kakasi.kakasi('-Ha -Ka -Ja -Ea -ka', filename)
      filename_roman.gsub!(/\s+/, '_').gsub!(/\^/,'-')
    rescue
      puts "failed to convert string #{fpath} - #{$!}:#{$@}"
      next
    end

    begin
      File.rename(fpath, filename_roman)
      puts fpath + " to " + filename_roman
    rescue
      puts "failed to convert filename #{fpath} - #{$!}:#{$@}"
    end
    if(File.directory? filename_roman)
      puts " + into directory #{filename_roman}"
      romanize_dir filename_roman
    end
  end
end

dir = ARGV.shift
romanize_dir dir
Windows だと同様の用途には Flexible RenamerGanmigi と言ったものがあるみたい。試してはいない。

( Permalink | Comments (0) | tags: cli  )
Comments

Please write your comment. email address won't appear. Cannot use any HTML tags in comment.
コメントをお書き下さい。メールアドレスは公開されません。 またHTMLタグは利用できません。
Name   E-mail   URL
Comment

About W.W.Walker

World Wide Walker は yoosee による blog です。PDA, Web・サーバ技術, 美味しい食べ物などの話題を取り上げています... read more

このエントリーのブックマーク

Monthly Archives

Select Month to read