トップ 一覧 Farm 検索 ヘルプ RSS ログイン

Diary/2014-5-12の変更点

  • 追加された行はこのように表示されます。
  • 削除された行はこのように表示されます。
!History.plist
Safariの履歴を眺めてみたいな,とか思ったのでメモ

::ファイルは?
~/Library/Safari/Hisotry.plist

::どうやって読む?
バイナリplistなので,rubyで読むには,[CFPropertyList|https://github.com/ckruse/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
とかいうメソッドを作って変換する必要がある.