ホーム > 開発 > 整理済みのZIPアーカイブにZippedImages Etcetera対応タグを設定する

整理済みのZIPアーカイブにZippedImages Etcetera対応タグを設定する

僕は電子化したZIPアーカイブを、iTunes風のフォルダ階層に整理しています。
著者名のフォルダの中に書名のZIPアーカイブを、以下のようなイメージで配置しています。

著者A
  書名a.zip
  書名b.zip
著者B
  書名c.zip
  書名d.zip

先日リリースしたZippedImages Etceteraに必要なタグの設定を省力化するために、上記の状態に整理された書庫ファイルをバッチ処理するスクリプトを書きました。
以下のタグを自動設定します。

  • ZIPアーカイブを含むディレクトリ名を著者名として設定
  • ZIPアーカイブのファイル名から拡張子を除去した文字列を書籍名として設定
  • ZIPアーカイブに含まれる最初のJPEGファイルをサムネイルとして設定

つまり、発売日以外のタグを全部自動設定できます。
ZIPアーカイブの整理方法は人それぞれだと思いますが、スクリプトを修正してやれば色々なケースにも対応できると思います。
例えばファイル名に著者名と書籍名を両方含めてフラットに管理している場合でも、今回のスクリプトを修正すれば対応できると思います。

使い方
このスクリプトはZip/Rubyを利用しています。ターミナルからRubyGemsを使って、インストールしてください。

gem install zipruby

あとは、タグを付けたいZIPアーカイブを含むディレクトリをスクリプトに渡してやってください。
再帰処理で、含まれるZIPアーカイブを全部処理します。

ruby ziupdate.rb <ZIPアーカイブを含むディレクトリ>

以下がスクリプトになります。

#!/usr/bin/ruby

require "find"
require "rubygems"
require "zipruby"

Find.find(ARGV[0]) do |file_path|
  file_path = File.expand_path(file_path)
  if /\A[^.].*\.zip\z/ =~ File.basename(file_path)
    author = File.basename(File.dirname(file_path))
    title = File.basename(file_path, ".zip")
    Zip::Archive.open(file_path) do |zip_file|
      thumbnail = zip_file.map {|entry| entry.name}.sort.find {|name| /\A[^.].*\.(jpg|jpeg)\z/ =~ File.basename(name)}
      meta = "Title: \"#{title}\"\nAuthors:\n  - \"#{author}\"\nThumbnail: \"#{thumbnail}\"\n"
      zip_file.add_or_replace_buffer("ZippedImages.yaml", meta)
      print meta
    end
  end
end
広告
カテゴリー:開発 タグ: ,
  1. まだコメントはありません。
  1. No trackbacks yet.

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。