トップ 差分 一覧 Farm ソース 検索 ヘルプ PDF RSS ログイン

Diary/2014-5-12

History.plist

Safariの履歴を眺めてみたいな,とか思ったのでメモ

ファイルは?

~/Library/Safari/Hisotry.plist

どうやって読む?

バイナリplistなので,rubyで読むには,CFPropertyListが便利.

どんな感じ?
require 'cfpropertylist'
list = CFPropertyList::List.new(:file => str)
p list.value.value["WebHistoryDates"].value[0]
p list.value.value["WebHistoryDates"].value[0].value[""].value # URL
p list.value.value["WebHistoryDates"].value[0].value["title"].value # title
p list.value.value["WebHistoryDates"].value[0].value["lastVisitedDate"].value # 最終アクセス時刻
p list.value.value["WebHistoryDates"].value[0].value["visitCount"]
p list.value.value["WebHistoryDomains.v2"].value[0]
p list.value.value["WebHistoryDomains.v2"].value[0].value[""].value

定義されてない場合(title)はnilで,valueでアクセスできないので注意が必要

時刻

lastVisitedDateで取得できるのはNSDateで,これは,

2001-01-01 00:00 GMT

からの相対時刻.なので,現在時刻を得るためには,

def NSDate2UnixTime(v)
  Time.at(Time.gm(2001, 1, 1).to_i + v)
end

とかいうメソッドを作って変換する必要がある.