Sha256: d1d52415c100d5b7e141e4122a0c01f4a697e659793ca3e2f4075b40dc3bd67b

Contents?: true

Size: 1.22 KB

Versions: 4

Compression:

Stored size: 1.22 KB

Contents

#! /usr/bin/env ruby
# coding: utf-8

class NefParserNotNefError < StandardError; end
class NefParserTypeError < StandardError; end

#
# Nikon NEF ファイルのなんちゃってパーサ。
#
class NefParser
	#
	def initialize
	end

	# 撮影日時を返す(つもり)。
	#
	# 頑張って解析はしてない。
	# 日付と思われる部分だけ抽出している。
	# 解析には 372+19 = 391 バイトあれば足りる。
	# サンプル NEF ファイルに撮影日時と思しき文字列は 4つあるけど、
	# 詳細が分かるまではとりあえず最初の1個のみ Time object にして返す。
	# a19 の部分が時刻の文字列。
	# 4つあるんだけど、それぞれの差異 or 冗長なのかが分からない。
	# 引数 data は File.read で読まれるような文字列
	def taken_date(data)
		unless data.is_a?(String)
			message = "Not string data. Use File#read, not File#readlines."
			raise NefParserTypeError, message
		end

		datetime_str = data.unpack("a372a19a57a19a397a19a1a19")[1]
		#p datetime_str
		#p datetime_str.split(/[ :]/)
		begin
			@date = Time.mktime( * datetime_str.split(/[ :]/) )
		rescue
			raise NefParserNotNefError, "Cannot find taken time."
		end
		return @date
	end

end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
imagut-0.0.3 lib/imagut/nefparser.rb
imagut-0.0.2 lib/imagut/nefparser.rb
imagut-0.0.1 lib/imagut/nefparser.rb
imagut-0.0.0 lib/imagut/nefparser.rb