filipedeschamps / tabnews.com.br

Conteúdos para quem trabalha com Programação e Tecnologia.

Home Page:https://tabnews.com.br

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Disponibilizar os views que cada usuário teve

maniero opened this issue · comments

Descrição

Vou dar o meu cenário e porque eu preciso muito disto e não é só uma sugestão geral. Obviamente não posso exigir nada, só vou colocar minha necessidade.

Como sou Microsoft MVP, preciso reportar anualmente tudo o que fiz. Um dos dados que preciso inserir e cada plataforma, é a quantidade de visualização que eu tive. Não é necessário um dado preciso, mas pelo menos deve ser aproximado.

Então pode ser até as views da página e não do que eu postei que pode ser um pouco menor por ter sido postado depois.

Eu preciso saber todas as minhas views dos últimos 12 meses. Isso pode ser dado de diversas formas e eu até precisar fazer contas, mas preciso de algum dado. Se der o total já funciona para este ano já que eu não tenho acesso anterior, mas complica depois. Não preciso das views individuais de cada postagem, mas é algo interessante também.

Outras informações necessárias eu consigo de uma forma ou de outra, ainda que algumas vão dar trabalho na forma atual. Seria i9nteressantepelo menos para daqui um ano ter uma forma de ver todos os Tabcoins ganhos em cada ano/mês/semana ou algo assim. Uma separação do que é postagem e o que é comentário. ter uma contagem das postagens. Tudo isso facilitaria, mas sem não é inviável pra mim.

Mesmo que não possam fazer isso para a plataforma já, se for possível queriam que me fornecessem esse número excepcionalmente ou me falassem como pegar isso.

Preciso entregar em março. Se não der para cumprir isso, paciência, mas seria bom para a Microsoft tomar ciência oficial do Tabnews, já que sou o único a usar.

Acho uma boa para todos, não estou fazendo um pedido que só serve para mim, mas estou informando do tamanho da importância disso para o meu caso. Se não der para fazer perfeito até março, podem melhorar depois. Se não der nada, agradeço de qualquer forma todo o esforço para por a plataforma no ar como está, ajuda muita gente.

Vocês definem a melhor forma, mas posso ajudar.

Obrigado e estou à disposição se precisarem de informação adicional.

Bom final de ano a todos.

Sugestão de implementação

No response

Fala @maniero, o principal que você precisa já está aguardando contribuições para ser implementado.

Então pode ser até as views da página e não do que eu postei que pode ser um pouco menor por ter sido postado depois.

Nós ainda não temos essa informação de maneira simples. O assunto é tratado em:

Resumindo... Por enquanto nós só temos esses dados pelo Analytics da Vercel, onde conseguimos consultar as top visualizações das páginas (com dados limitados aos últimos 12 meses), mas é algo manual, pela interface visual do site, já que eles não disponibilizam isso de forma oficial via API, e o site não dá muitas opções além de escolher o período (últimas 24 horas, 7 dias, 30 dias, 3 meses ou 12 meses) e realizar alguns filtros nos resultados. O triste é que os filtros são aplicados no resultado já disponível, não busca novos dados. E os resultados são limitados pelos top 250. Não tem paginação para buscar os próximos 250 e ir pegando tudo.

A parte mais simples é criar consulta(s) no nosso banco de dados para montar a URL de todos os seus conteúdos, e das publicações de outras pessoas que você comentou, e computar tudo mais que você precisar (saldos de TabCoins, por exemplo). Será ótimo se você, ou quem puder, contribuir com isso. 💪

Mas não adiantaria ir na ferramenta da Vercel tentar filtrar pela URL de cada uma dessas páginas obtidas na consulta citada acima, pois só algumas retornariam. Por exemplo, filtrando por "maniero", só aparece a sua página por ela estar dentro das 250 mais visitadas, mas não aparece qualquer publicação sua, mesmo sabendo que existem (lista de publicações root do maniero):

image

O que daria pra fazer é criar um script para fazer algo como sugerido em https://github.com/orgs/vercel/discussions/1068#discussioncomment-7403107, onde poderia tentar passar uma lista de paths como filtro (limitado a 250), ou, se não aceitar lista, ir passando um path de cada vez, tomando cuidado para não cair em algum rate limit. A ajuda na investigação sobre isso também seria uma excelente contribuição. 💪

Não preciso das views individuais de cada postagem, mas é algo interessante também.

Não entendi bem se aqui você quer dizer que os dados que temos no nosso banco de dados já bastam (nesse caso é só criar a query do que precisa). Ou se diz que não precisa das visualizações da URL única de cada comentário. Imagino que somar essas visualizações não mude significativamente seus números, mas para obtê-las não muda muito o trabalho, pois basta adequar a query, adicionar os paths delas no script de raspagem da Vercel e depois somar as visualizações, se for o caso.

Seria interessante pelo menos para daqui um ano ter uma forma de ver todos os Tabcoins ganhos em cada ano/mês/semana ou algo assim.

Uma separação do que é postagem e o que é comentário.

Pela API você já pode filtrar:

https://www.tabnews.com.br/api/v1/contents/maniero?with_children=false
https://www.tabnews.com.br/api/v1/contents/maniero?with_root=false

E pelo site deve ser possível em breve com o

ter uma contagem das postagens.

Acho que não existe issue aberta sobre isso, mas já vou sugerir ao @ErickCReis acrescentar isso no PR #1577, pois inclusive esse dado já é disponível no client, mas não é mostrado em nenhum lugar.

Se inspecionar a sua página (https://www.tabnews.com.br/maniero) verá que possui 1.347 conteúdos publicados 🚀

image

Mesmo que não possam fazer isso para a plataforma já, se for possível queriam que me fornecessem esse número excepcionalmente ou me falassem como pegar isso.

Preciso entregar em março. Se não der para cumprir isso, paciência, mas seria bom para a Microsoft tomar ciência oficial do Tabnews, já que sou o único a usar.

Como você se cadastrou em 30 de janeiro de 2023, pela nossa restrição na Vercel, tem até 29/01/24 para rodar esse script sem perder parte dos dados que você precisa.

É quase certo que a implementação de tudo não vai sair antes desse prazo, mas é totalmente possível a gente rodar as consultas no banco e rodar o script na Vercel, se a turma ajudar com a criação deles. 💪

Acho uma boa para todos, não estou fazendo um pedido que só serve para mim, mas estou informando do tamanho da importância disso para o meu caso. Se não der para fazer perfeito até março, podem melhorar depois.

Concordo totalmente! 🤝

Vocês definem a melhor forma, mas posso ajudar.

O primeiro é listar exatamente o que você precisa, dentro do que temos disponível no banco de dados, para então montar a(s) consulta(s).

O segundo passo é fazer uns testes dessa sugestão https://github.com/orgs/vercel/discussions/1068#discussioncomment-7403107 para ver a melhor forma de raspar os dados das visualizações. Essa parte eu posso fazer alguns testes, mas acho que só vou conseguir no início de janeiro, então qualquer um que testar antes e puder trazer informações, já ajuda. 👍

Obrigado pela issue! 💪

Obrigado pela descrição detalhada, com links (já tinha visto alguns).

De fato, não posso fazer nada que envolva essas tecnologias que eu não conheço.

Não sei se consigo definir o problema além do que eu disse, fora que pode não ter ficado claro e falarei abaixo.

Meu problema principal é: preciso de todas as views aproximadas que minhas postagens tiveram (diretamente por ela ou pendurada em outra, comentário ou raiz. Pode ser só a soma de todas elas nos últimos 12 meses de abril/23 à março/24. Pode ser de qualquer forma, mesmo que não apareça no site (aparecendo melhor para odo e facilita auditoria. Se tiver que fazer malabarismo (fazer várias coisas manuais), que seja, nunca é ideal, mas é suficiente. Todo o resto é adicional ou já tem alguma forma.

Alguns links foram úteis, embora não ajudem nesta necessidade específica.

Esta imagem que colocou com meus views totais é algo real? Posso considerar que foi isso que tive? Pode servir de base se ficar só na estimativa. Na pior das hipóteses, se eu der um número estimado, não tem o mesmo valor, mas já consigo indicar algo.

Eu consigo acessar a API da Vercel para pegar os dados do Tabnews, conforme discussão do Github deles que mandou acima? Ficou a dúvida de como eu poderia fazer isto: https://github.com/orgs/vercel/discussions/1068#discussioncomment-7403107, até por eu ter zero conhecimento da plataforma.

Como eu só preciso mesmo para entregar para a Microsoft as views totais do período, não preciso saber quantas deram em cada uma delas. Só disse que isso é bom para todos saberem se conseguiu atingir as pessoas, nada relacionado com minha necessidade específica.

Pelo que entendi as informações adicionais que falei, menos importantes, são mais fáceis que as visualizações.

Resumindo, se eu puder obter as views diretas ou indiretas (contidas em um comentário acima, até a raiz) das minhas postagens nos últimos 12 meses (só precisa do total), já resolve o problema principal.

Obrigado por tudo.

preciso de todas as views aproximadas que minhas postagens tiveram (diretamente por ela ou pendurada em outra, comentário ou raiz. Pode ser só a soma de todas elas nos últimos 12 meses de abril/23 à março/24.

Se só precisa dos dados a partir de abril, então tem um prazo maior para criar o script com menor risco de perder informações.

Pode ser de qualquer forma, mesmo que não apareça no site (aparecendo melhor para odo e facilita auditoria. Se tiver que fazer malabarismo (fazer várias coisas manuais), que seja, nunca é ideal, mas é suficiente. Todo o resto é adicional ou já tem alguma forma.

Adiantaria para a auditoria se eu criar uma publicação no TabNews apresentando os dados que você precisa, ou até passar por aqui mesmo, de forma pública?

Como a Vercel não disponibiliza API para isso, infelizmente não tem como fornecer esses números atualizados em tempo real.

Provavelmente teremos que implementar algo próprio para atender a issue #1115, mas isso é melhor ser debatido por lá.

Esta imagem que colocou com meus views totais é algo real? Posso considerar que foi isso que tive?

São número reais dos últimos 12 meses, mas não inclui suas publicações e comentários. São apenas da página do seu perfil:

https://www.tabnews.com.br/maniero

Eu consigo acessar a API da Vercel para pegar os dados do Tabnews, conforme discussão do Github deles que mandou acima?

Não consegue. 😕

Esse endpoint é usado pela Vercel para apresentar os dados na página do Analytics. Só funciona estando autenticado, e usando uma conta que tenha acesso aos dados.

Os testes que eu sugeri envolvem ter acesso a algo hospedado na Vercel e com Analytics habilitado, mesmo que seja só um laboratório com uma conta hobby.

Ficou a dúvida de como eu poderia fazer isto: https://github.com/orgs/vercel/discussions/1068#discussioncomment-7403107, até por eu ter zero conhecimento da plataforma.

Eu recomendo experimentar hospedar um projeto na Vercel (pode ser um dos exemplos do Next.js), se tiver interesse, pois é algo com zero atrito, principalmente para alguém com sua experiência.

Como eu só preciso mesmo para entregar para a Microsoft as views totais do período, não preciso saber quantas deram em cada uma delas. Só disse que isso é bom para todos saberem se conseguiu atingir as pessoas, nada relacionado com minha necessidade específica.

Se quer só um número consolidado, ou se quer uma planilha detalhada, você decide. Ou deixa a decisão para quem for contribuir com a o código que precisa ser criado para raspar os dados.

Para a funcionalidade definitiva, se a Vercel não disponibilizar a API formalmente, é como falei acima, a Turma vai precisar criar primeiro uma forma de armazenar esses dados onde possamos acessar do nosso backend.

Pelo que entendi as informações adicionais que falei, menos importantes, são mais fáceis que as visualizações.

Isso mesmo, os dados que estão no nosso banco (Postgres) são mais fáceis de apresentarmos em tempo real.

Resumindo, se eu puder obter as views diretas ou indiretas (contidas em um comentário acima, até a raiz) das minhas postagens nos últimos 12 meses (só precisa do total), já resolve o problema principal.

O que acha de somar apenas as visualizações das publicações root? Caso contrário estará inflando artificialmente os números, já que deve ser muito raro alguém visualizar apenas um comentário sem visualizar a página da publicação raiz. E quando isso acontece, talvez seja um caso que nem deveria ser contabilizado mesmo.

Mas isso muda bem pouco a query do Postgres e, no mais, será só uma lista maior ou menor para o script que vai buscar os dados via REST, então veja o que acha melhor. Ou, de novo, deixe a decisão para quem for contribuir com isso. 👍

Adiantaria para a auditoria se eu criar uma publicação no TabNews apresentando os dados que você precisa, ou até passar por aqui mesmo, de forma pública?

Muito, embora ninguém vai morrer se não tiver. Eu não vou ser impedido de renovar o programa porque os dados do TabNews não foram considerados, mas seria legal ter isso, mostrar força na plataforma.

Como a Vercel não disponibiliza API para isso, infelizmente não tem como fornecer esses números atualizados em tempo real.

De fato, isso não é necessário pra mim, e acho que para a maioria. A informação, mesmo atrasada, ainda é bem útil.

Provavelmente teremos que implementar algo próprio para atender a issue #1115, mas isso é melhor ser debatido por lá.

Novamente, acho muito útil para todos, mas eu não preciso para minha necessidade específica.

São número reais dos últimos 12 meses, mas não inclui suas publicações e comentários. São apenas da página do seu perfil

Ok. Então de fato isso não me serve. Estava achando um número baixo, agora acho alto :)

Eu recomendo experimentar hospedar um projeto na Vercel (pode ser um dos exemplos do Next.js), se tiver interesse, pois é algo com zero atrito, principalmente para alguém com sua experiência.

Não, obrigado :D :D :D

Se quer só um número consolidado, ou se quer uma planilha detalhada, você decide. Ou deixa a decisão para quem for contribuir com a o código que precisa ser criado para raspar os dados.

A planilha é mais interessante, mas pra efeito de entrega para Seattle o total geral de tudo, mesmo aproximado, dos últimos 12 meses é suficiente.

O que acha de somar apenas as visualizações das publicações root? Caso contrário estará inflando artificialmente os números, já que deve ser muito raro alguém visualizar apenas um comentário sem visualizar a página da publicação raiz. E quando isso acontece, talvez seja um caso que nem deveria ser contabilizado mesmo.

Todas as roots que eu participei? Já fica bem melhor que nada. Dará diferença do real, para baixo, mas não acho que deve ser relevante, porque acho que poucas pessoas acessam diretamente pelo URL do comentário (meu ou de outro acima).

Hoje eu não sei se tenho 10kv, 100kv ou 1mv.

Obrigado.

Desculpa minha ignorancia, sou novo no ramo de programação e estou chegando agora no pedaço graças ao Curso.dev.

Não seria mais facil fazer essa contagem de acessos pelo Analytics do Google?

@euandreferrari não precisa se desculpar por tirar uma dúvida 🤝

Em resumo, não utilizamos o Google Analytics e evitamos ao máximo ferramentas com propósito parecido.

Veja esse comentário do @aprendendofelipe e nele tem um link para outro comentário do @filipedeschamps 👍

@aprendendofelipe fiz o teste com a informação da API da vercel que retorna os dados de uma página:

vercel.sh:

#!/bin/bash
bearerToken="Bearer Ny_____________________"
environment="production"
path="/recents"
filter='{"path":{"values":["'"$path"'"],"operator":"eq"}}'
from="2023-12-13T00:00:00.000Z"
projectId="redesign-tabnews-com-br"
to="2024-01-11T23:59:59.999Z"

url="https://vercel.com/api/web/insights/overview?environment=$environment&projectId=$projectId"

curl -s --get "$url" \
     --data-urlencode "filter=$filter" \
     --data-urlencode "from=$from" \
     --data-urlencode "to=$to" \
     -H "Cookie:authorization=$bearerToken" | jq .

Retorno:

{
  "devices": 72,
  "total": 218
}

O devices é a quantidade que aquela página recebeu.

Apenas o que me preocupa é se "bearerToken" é atualizado, renovado.

Apenas o que me preocupa é se "bearerToken" é atualizado, renovado.

Desde que não mude durante a execução do script de raspagem, não será problema. Mas também é bom gerar logs e poder fazer isso em etapas, continuando de onde parou, pois também pode cair em rate limit da API ou qualquer outro erro.

Apenas o que me preocupa é se "bearerToken" é atualizado, renovado.

Desde que não mude durante a execução do script de raspagem, não será problema. Mas também é bom gerar logs e poder fazer isso em etapas, continuando de onde parou, pois também pode cair em rate limit da API ou qualquer outro erro.

Outra coisa é a data dessas visualizações, no plano hobby são os últimos 31 dias, não sei como funciona no plano pro.

Se o "bearerToken" não atualizar, daria para salvar no banco de dados dia após dia a quantidade de visualizações da postagem que teve no dia e ir somando e não buscar toda hora a quantidade de visualização, isso iria evitar um possível "rate limit".

Esse "bearerToken" vem da autorização do painel do "analytics" do projeto, então não sei se eles colocaram um limite dentro dele.

Outra coisa é a data dessas visualizações, no plano hobby são os últimos 31 dias, não sei como funciona no plano pro.

No pró são 12 meses


Complementando a resposta anterior...

O devices é a quantidade que aquela página recebeu.

Os devices são quantos diferentes dispositivos acessaram a página. A Vercel conta como 1 único dispositivo os diferentes acessos pelo mesmo navegador dentro de 24 horas.

O total é a quantidade de visualizações da página.

Outra coisa é a data dessas visualizações, no plano hobby são os últimos 31 dias, não sei como funciona no plano pro.

No pró são 12 meses

Complementando a resposta anterior...

O devices é a quantidade que aquela página recebeu.

Os devices são quantos diferentes dispositivos acessaram a página. A Vercel conta como 1 único dispositivo os diferentes acessos pelo mesmo navegador dentro de 24 horas.

O total é a quantidade de visualizações da página.

Então, mas para uma visualização precisa acredito que "devices" iria fazer mais sentido que o total, por que seria mais valido uma pessoa ter visto do que a mesma pessoa ter visto 1000 vezes.

Talvez seja possível adicionar as visualizações buscando na API a cada 24h e gravando/atualizando no banco de dados.

@aprendendofelipe será que é possível tentar algo assim? para ter visualizações dos posts?

@aprendendofelipe será que é possível tentar algo assim? para ter visualizações dos posts?

Se está falando sobre o que está sendo tratado na #1115, a Vercel não oferece API para isso, então não faz sentido criar gambiarras para obter os dados deles. É melhor usarmos algum dos diversos outros serviços que disponibilizam API. Além de termos a opção de criar algo do zero, que não deve valer a pena, mas é uma opção.

Nessa issue a ideia é criar um script para raspar os dados que o @maniero precisa. Isso vai ser rodado uma vez para obter os dados dele, e pode ser útil mais para frente, para injetar dados iniciais quando o sistema discutido em #1115 estiver pronto, mas não serve para algo que deveria ser executado em um servidor, já que precisaria de credenciais apropriadas para isso.

@maniero, seu número preliminar é mais de 454k diferentes dispositivos acessaram suas publicações ou as que você comentou. 🚀👏

Some a isso mais de 4k dispositivos no seu perfil.

No caso das publicações que você comentou, considerei apenas os acessos que ocorreram após seu comentário mais antigo em cada uma.

Para suas publicações/comentários mais antigos, considerei apenas os acessos após o dia 1/4/2023.

Os números são de dispositivos, não visualizações de páginas, ou seja, desconsidera visitas duplicadas em um mesmo dispositivo dentro de 24 horas.

Mais perto do dia 31 eu tento puxar os dados mais atualizados com os últimos dias de março/24 e posto aqui uma planilha com os dados completos, inclusive as visualizações de páginas. 🤝

@maniero, seu total (de abril/23 até março/24) ficou em 468.388 dispositivos (546.552 visitas). 🎉🎉🎉

Esses números são apenas da versão Web do TabNews. Infelizmente ainda não temos as estatísticas da API de maneira tão detalhada, senão os números seriam ainda maiores pelos acessos via aplicativos. A princípio esses números também não consideram os acessos por robôs, que estão em cerca de 17% do nosso tráfego (deve ter I.A. sendo treinada com as publicações 🤖).

Segue o link da planilha com detalhamento dos dados por conteúdo, por dia e por tipo (dispositivo ou total de visitas):

https://docs.google.com/spreadsheets/d/1qgjCKopBYOG29QqOfNb8HtRs9p_OCljG_0ZQsyETltc/edit?usp=sharingfi

E de brinde vai um gráfico com os dados por dia (de abril/23 até março/24):

Gráfico de estatísticas do Maniero em 2023/24

Muito obrigado Felipe, ficou sensacional. Promete não encher o saco até o ano que vem :P :D