Firefox History

como o firefox guarda o historico (paginas por onde passamos) numa base de dados (sqlite) podemos nós proprios fazer uns querizitos para saber aquelas coisas interessantes do tipo qual o site que mais visitei, o dia em que vi mais sites, etc.

exemplo:
SELECT session,COUNT(* ),MAX(visit_date),MIN(visit_date)
FROM moz_historyvisits
GROUP BY session
ORDER BY COUNT(* ) DESC

eu executei isto no sqlite manager que é um addon do firefox e depois apontei para %APPDATA%\Mozilla\Firefox\Profiles\ tal e coisa \places.sqlite
como o campo visit_date devolve uma coisa estranha que não é uma data saltei para o vb.net e fiz um programeta para ir mastigar essa informação para ver o que consigo fazer com ela.

tive primeiro que instalar o System.Data.SQLite. Depois tirando um ou outro stress com um erro que dá quando o firefox está aberto (file lock) não tive nenhum problema

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) Handles Button1.Click

‘%APPDATA%\Mozilla\Firefox\Profiles\
Dim cnn As SQLiteConnection
Try
cnn = New SQLiteConnection(“data source=c:\Users\vitor.silva\AppData\Roaming\Mozilla\Firefox\Profiles\646vwtnu.default\places.sqlite”)
cnn.Open()

Dim myCommand As New SQLiteCommand(cnn)
myCommand.CommandText = “select session, count(*) [numero Sites], max(visit_date) [dataFim], min(visit_date) [dataInicio] FROM moz_historyvisits  group by session order by count(*) desc”

Dim reader As SQLiteDataReader = myCommand.ExecuteReader()

While reader.Read()
Console.WriteLine(String.Format(“{0}; {1}; {3}; {2}”, reader.Item(0).ToString(), reader.Item(1).ToString(), Convert(CLng(reader.Item(2))).ToString(), Convert(CLng(reader.Item(3))).ToString()))
End While
Catch ex As Exception
Debug.Print(ex.ToString())
End Try

End Sub

Private Function Convert(ByVal numero As Long) As DateTime
Dim prTimeInMillis As Long
prTimeInMillis = CLng(CLng(numero) / 1000)

Dim prDateTime As New DateTime(1970, 1, 1)
Return prDateTime.AddMilliseconds(prTimeInMillis)
End Function

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *