rubyでshared-mime-infoを使いたいがそれに必要な環境を整える
動機
http://d.hatena.ne.jp/keita_yamaguchi/20070805/1186304326
こちらの記事から俺もちょろっと使ってみたいなと。。。。。ってか自作の判定ライブラリを用意していたんだけどメンテするのも面倒になった(orz)のでどんなもんかなと。しかし記事内であったプログラムを実行すると
MIME.check(path) は動作するが
MIME.check_magics(path) は動作しない
shared-mime-infoとやらが必要らしい。mac(leopard)でこれをインストールするのがちょっと面倒だったので備忘も含めて書いておこうかと。
osxで必要だったファイル一式
以下のファイルを./configure make install で突っ込むとしっかり動きました
ftp://xmlsoft.org/libxml2/libxml2-sources-2.7.1.tar.gz http://ftp.acc.umu.se/pub/GNOME/sources/glib/2.18/glib-2.18.0.tar.gz http://pkgconfig.freedesktop.org/releases/pkgconfig-0.18.tar.gz http://ftp.gnome.org/pub/gnome/sources/intltool/0.35/intltool-0.35.5.tar.bz2 http://freedesktop.org/~hadess/shared-mime-info-0.51.tar.bz2
結果
実行プログラム(引用サイトのそのまんま・・・)
require 'rubygems' require 'shared-mime-info' path = '/Users/webadmin/Desktop/rrr.jpg' p MIME.check(path) # ファイル名かファイル内容から判別する p MIME.check_globs(path) # ファイル名から p MIME.check_magics(path) # ファイル内容から
実行結果
#<MIME::Type:0x53dc5c @magic_priority=50, @glob_patterns=["*.jpeg", "*.jpe", "*.jpg"], @magic=#<MIME::Magic::RootEntry:0x530408 @indent=-1, @sub_entries=[#<MIME::Magic::Entry:0x530084 @range_length=nil, @value_length=3, @indent=0, @word_size=nil, @start_offset=0, @sub_entries=[], @mask=nil, @value="\377\330\377">, #<MIME::Magic::Entry:0x52fcd8 @range_length=nil, @value_length=2, @indent=0, @word_size=nil, @start_offset=0, @sub_entries=[], @mask=nil, @value="\377\330">]>, @type="image/jpeg"> #<MIME::Type:0x53dc5c @magic_priority=50, @glob_patterns=["*.jpeg", "*.jpe", "*.jpg"], @magic=#<MIME::Magic::RootEntry:0x530408 @indent=-1, @sub_entries=[#<MIME::Magic::Entry:0x530084 @range_length=nil, @value_length=3, @indent=0, @word_size=nil, @start_offset=0, @sub_entries=[], @mask=nil, @value="\377\330\377">, #<MIME::Magic::Entry:0x52fcd8 @range_length=nil, @value_length=2, @indent=0, @word_size=nil, @start_offset=0, @sub_entries=[], @mask=nil, @value="\377\330">]>, @type="image/jpeg"> #<MIME::Type:0x53dc5c @magic_priority=50, @glob_patterns=["*.jpeg", "*.jpe", "*.jpg"], @magic=#<MIME::Magic::RootEntry:0x530408 @indent=-1, @sub_entries=[#<MIME::Magic::Entry:0x530084 @range_length=nil, @value_length=3, @indent=0, @word_size=nil, @start_offset=0, @sub_entries=[], @mask=nil, @value="\377\330\377">, #<MIME::Magic::Entry:0x52fcd8 @range_length=nil, @value_length=2, @indent=0, @word_size=nil, @start_offset=0, @sub_entries=[], @mask=nil, @value="\377\330">]>, @type="image/jpeg">