A seguir, descreverei as instruções sobre como obtive estatĂsticas para o bate-papo do Viber usando um arquivo de backup.
1. A cópia de backup da conta tem o formato de banco de dados viber.db, para a versão para PC ela está localizada no caminho: C: \ Users \ <User_name> \ AppData \ Roaming \ ViberPC \ <phone number>.
2. Usei o SQL Lite Browser para ler o arquivo de banco de dados.
3. Abra o arquivo viber.db no navegador SQL Lite . O banco de dados se parece com isto:
4. A tabela principal é Eventos, todos os eventos (por conta) no vibe são numerados (EventID). Outras tabelas têm um relacionamento de chave estrangeira chamado EventID. As informações sobre as mensagens são armazenadas na tabela Mensagens, informações sobre os usuários - na tabela Contatos. Usei apenas essas três tabelas.
5. Para obter estatĂsticas sobre um chat, primeiro vocĂŞ precisa descobrir o identificador do ChatID do chat desejado. Para fazer isso, selecione o item "Exibir dados" do menu de contexto da tabela ChatInfo e vá para a guia "Dados" para visualização.
6. Pelo nome do chat (atributo Nome), procuramos o desejado e olhamos o seu ID (atributo ChatID).
7. Da mesma forma, você pode obter o identificador do usuário (ContactID) na tabela Contact através dos atributos Name (como o usuário é registrado em seu telefone) ou ClientName (username por sua conta). Usei o atributo ClientName porque Não tenho todos os usuários no notebook do meu telefone.
8. Em seguida, obtemos os dados necessários formando consultas Select na guia SQL. Os atributos a fazer dependem das necessidades, para isso é necessário fazer um pedido adequado. Para mim, fiz solicitações, refletidas na tabela 1.
Tabela 1. Lista de solicitações utilizadas
| P / p No. | Solicitar texto | Descrição |
|---|---|---|
| 1 | Selecione Count (Messages.EventID) em Messages, Events onde Messages.EventID = Events.EventID e Events.ChatID = 46 | NĂşmero de mensagens de chat |
| 2 | Selecione contagem (Messages.EventID), Contact.ClientName de Messages, Events, Contact onde Messages.EventID = Events.EventID and Events.ChatID = 46 e Events.ContactID = grupo Contact.ContactID por Events.ContactID pedido por Contact.ContactID | Número de postagens por usuário (retorna o número de eventos para cada usuário) |
| 3 | Select Contact.ContactID, Contact.ClientName from Messages, Events, Contact where Messages.EventID=Events.EventID and Events.ChatID=46 and Events.ContactID=Contact.ContactID group by Events.ContactID order by Contact.ContactID | |
| 4 | Select * from Messages, Events, Contact where Messages.EventID=Events.EventID and Events.ContactID=Contact.ContactID and Events.ChatID=46 and Events.ContactID=465 | |
| 5 | Select count(Messages.EventID), Messages.Type from Messages, Events where Messages.EventID=Events.EventID and Events.ChatID=46 group by Messages.Type order by Messages.Type | (. 2) |
| 6 | Select Count(Messages.Type), Messages.Type from Messages, Events, Contact where Messages.EventID=Events.EventID and Events.ContactID=Contact.ContactID and Events.ChatID=46 and Events.ContactID=482 group by Messages.Type | |
| 7 | Select Count(Messages.PGIsLiked), Contact.ClientName from Messages, Events, Contact where Messages.EventID=Events.EventID and Events.ChatID=46 and Messages.Type=0 and Messages.PGIsLiked=1 and Events.ContactID=Contact.ContactID group by Contact.ClientName order by Contact.ContactID | |
| 8 | Select Sum(Messages.PGLikeCount), Contact.ClientName from Messages, Events, Contact where Messages.EventID=Events.EventID and Events.ChatID=46 and Events.ContactID=Contact.ContactID group by Contact.ClientName order by Contact.ContactID | |
| 9 | Select Events.TimeStamp from Messages, Events, Contact where Messages.EventID=Events.EventID and Events.ContactID=Contact.ContactID and Events.ChatID=46 and Events.ContactID=460 order by Events.TimeStamp | (. . 11) |
2.
| â„– / | ||
|---|---|---|
| 1 | EventID | . , .. , |
| 2 | Type | ( , , ):
0 – : , 1 – 2 — 3 — 4 – 9 – 11 – 12 — 15 – , 65 – 66 – 67 – 68 – 69 — 72 – 77 — |
| 3 | ContactID | |
| 4 | ClientName | |
| 5 | ChatID | |
| 6 | TimeStamp | UNIX- POSIX- (. Unix time) — , UNIX POSIX- .
( UTC) 31 1969 1 1970, . |
9. Depois de executar a consulta, exportei o resultado primeiro para PDF e depois para excel (era mais fácil para mim):
10. Depois disso, usei os dados para construir infográficos no excel, por exemplo, na solicitação nº 5 (ver tabela 1):
Nota 1. Dados diferem porque o chat está ativo e o banco de dados está sendo atualizado.
Nota 2. Já no excel eu combinei os tipos 65 ... 77 em um comum (serviço).
11. Como trabalhar com o atributo de tempo (TimeStamp). No banco de dados, o tempo UNIX é usado para vincular eventos a hora e, para obter dados associados à vinculação a data e hora, tornou-se necessário processá-los posteriormente. Aqui está um exemplo de como fiz isso no Excel:
a. Salve os resultados da consulta 9 (consulte a tabela 1) no excel (coluna A).
b. Na coluna B, descartamos os Ăşltimos 3 caracteres (nĂŁo entendi para que servem) para obter a hora no formato UNIX. Fazemos isso usando a fĂłrmula = LEFT (A2; DLSTR (A2) -3). Estique a fĂłrmula por todo o intervalo de linhas.
c. A coluna C Ă© preenchida com unidades (contador de mensagens).
d. Na coluna D, traduzimos a data em uma legĂvel por humanos usando a fĂłrmula = (B2 / 86400) + 25569. Estenda a fĂłrmula por todo o intervalo de linhas.
e. Para contar o número de mensagens por mês (células E2: R2), use a fórmula = SUMIF ($ C $ 2: $ C $ 1434; $ D $ 2: $ D $ 1434; "> =" & E $ 1; $ D $ 2: $ D $ 1434; "<= "& EONMONTHS (E $ 1; 0)). Amplie a fórmula para todo o intervalo de colunas E1: R1.
f. ConstruĂmos um histograma com base no intervalo de cĂ©lulas E1: R2.
ConclusĂŁo
Este mĂ©todo de coleta de estatĂsticas Ă© executado no modo manual, Ă© intensivo em recursos (pelo menos em termos de tempo gasto), mas pelo menos eficiente. Por falta de um melhor, por assim dizer. Este mĂ©todo pode ser usado nĂŁo apenas para obter estatĂsticas sobre o chat, mas tambĂ©m sobre a conta Viber como um todo. Eu nĂŁo anexei as fontes, tk. Realizei todas as operações em um chat real contendo dados pessoais dos usuários, e estava com preguiça de criar um chat separado para o teste. Obrigado pela atenção.