解決済みということで貼らなかったものを復活。削除する寸前でした 笑。
ユリウス日を求める AppleScript です。使い方はダイアログに年数を入力。紀元前は「マイナス記号」を付けます。例: 紀元前384年は「-384」と入力。
結果については先のコメントに書いた国立天文台の換算サービスで「x年1月1日 0時0分0秒」としたものと同じになると思います。多分...。歴史学と数学の違いによるズレや誕生日問題がありますが、本件に関しては順番さえちゃんとしてれば良いのでこれでも良いかなと。
AppleScript
on run display dialog "Input" default answer "" my jdn(text returned of result) end run on jdn(n) do shell script "ruby <<'EOF' - " & n & " require 'date' def jdate(d) d1 = Date.new(-4712, 1, 1) d2 = Date.new(d.to_i, 1, 1) return (d2 - d1).to_i end puts jdate(ARGV[0]) EOF" end jdn
ーーーーー
以下はダイアログで選択したフォルダ内にある「.jpg」と「.png」をリネームする AppleScript です。元ファイルの名称が「フラグ_紀元_nnnn_名前.拡張子」ではない場合と、変換後のファイルが既存の場合はスキップします。
変換規則は
フラグ_紀元_nnnn_名前.拡張子 → JDN_紀元nnnn_名前.拡張子
例:
01_BC_0384_アリストテレス.jpg → 1580802_BC0384_アリストテレス.jpg
01_BC_0428_プラトン.jpg → 1564731_BC0428_プラトン.jpg
02_AC_0001_キリスト.jpg → 1721424_AC0001_キリスト.jpg
AppleScript
on run try my julian(choose folder) on error err_msg return err_msg end try end run on julian(dir) do shell script "cd " & quoted form of POSIX path of dir & " || exit 1 LANG=ja_JP.UTF-8 ruby <<'EOF' require 'date' def jdate(d) d1 = Date.new(-4712, 1, 1) d2 = Date.new(d.to_i, 1, 1) return (d2 - d1).to_i end Dir.glob('*.{jpg,png}').each do |fpath| dname = File.dirname(fpath) fname = File.basename(fpath) f = fpath.split('_') next if /^(?:01|02)_(?:BC|AC|AD)_[0-9]{4}.*?$/ !~ fname sign = f[0] == '01' ? '-' : '' jdn = jdate(sign + f[2]) new_fname = jdn.to_s + '_' + f[1] + f[2] + '_' + f[3] new_fpath = [dname, new_fname].join(File::SEPARATOR) File.rename(fpath, new_fpath) unless File.exists?(new_fpath) puts %[#{fname} → #{new_fname}] end EOF" end julian
ーーーーー
ついでにもう一丁。Ruby 版です。
Ruby
#!/usr/bin/ruby # usage: ruby me.rb file1 file2 ... require 'date' def jdate(d) d1 = Date.new(-4712, 1, 1) d2 = Date.new(d.to_i, 1, 1) return (d2 - d1).to_i end exit if ARGV.size < 1 ARGV.each do |fpath| dname = File.dirname(fpath) fname = File.basename(fpath) f = fname.split('_') next if /^(?:01|02)_(?:BC|AC|AD)_[0-9]{4}.*?$/ !~ fname sign = f[0] == '01' ? '-' : '' jdn = jdate(sign + f[2]) new_fname = jdn.to_s + '_' + f[1] + f[2] + '_' + f[3] new_fpath = [dname, new_fname].join(File::SEPARATOR) File.rename(fpath, new_fpath) unless File.exists?(new_fpath) puts new_fname end
実行は
$ ruby julian.rb file1 file2 ...
または、chmod +x して
$ ./julian.rb file1 file2 ...
動作確認は Mac OS X 10.6.8。Yosemite でも多分大丈夫だとは思いますが、ダメな場合はどなたか直して戴けるとありがたいです。以上、何かの参考になればと。