Rework statistics

This commit is contained in:
Hugo Peixoto 2023-07-28 20:50:22 +01:00
parent 2f632491bc
commit fc9d25ba0d
2 changed files with 23 additions and 11 deletions

View File

@ -10,11 +10,13 @@ code, pre { font-size: 1rem; font-weight: bold; }
antes que isso aconteça. Podes ajudar de duas formas: antes que isso aconteça. Podes ajudar de duas formas:
<ol> <ol>
<li>Descarregar os vídeos: se tiveres uns terabytes livres, podes correr o programa abaixo para ir descarregando novos vídeos;</li> <li><a href="#descarregar">Descarregar os vídeos</a>: se tiveres uns terabytes livres, podes correr o programa abaixo para ir descarregando novos vídeos;</li>
<li>Descobrir vídeos novos: temos indexados 1.5 milhões de vídeos, mas estima-se que haja 5 milhões.</li> <li><a href="#descobrir">Descobrir vídeos novos</a>: temos indexados 1.5 milhões de vídeos, mas estima-se que haja 5 milhões.</li>
</ol> </ol>
<h2>Descarregar vídeos</h2> <p>No fim da página há algumas <a href="#estatisticas">estatísticas</a> que descrevem o estado do projecto.</p>
<h2 id="descarregar">Descarregar vídeos</h2>
<p> <p>
Nota: Só temos instruções para GNU/Linux. Nota: Só temos instruções para GNU/Linux.
@ -38,8 +40,9 @@ $ /caminho/para/o/saca-sapos QUANTIDADE_DE_VIDEOS TEU_ENDERECO_DE_EMAIL
<pre>$ cd /pasta/com/bastante/espaço <pre>$ cd /pasta/com/bastante/espaço
$ PROCS=10 /caminho/para/o/saca-sapos 1000 eu@exemplo.pt $ PROCS=10 /caminho/para/o/saca-sapos 1000 eu@exemplo.pt
</pre> </pre>
<p>Para ajudar a ter noção de quanto ocupa um certo número de vídeos, temos nas estatísticas o tamanho médio por vídeo.</p>
<h2>Encontrar mais vídeos</h2> <h2 id="descobrir">Descobrir vídeos novos</h2>
<p> <p>
O <a href="https://git.ansol.org/hugopeixoto/sapo-videos/">repositório de O <a href="https://git.ansol.org/hugopeixoto/sapo-videos/">repositório de
@ -76,12 +79,13 @@ $ PROCS=10 /caminho/para/o/saca-sapos 1000 eu@exemplo.pt
vídeos é bem-vinda. Mandem mensagens no fediverso (<a href="https://ciberlandia.pt/@hugopeixoto">@hugopeixoto@ciberlandia.pt</a>) para coordenarmos trabalho. vídeos é bem-vinda. Mandem mensagens no fediverso (<a href="https://ciberlandia.pt/@hugopeixoto">@hugopeixoto@ciberlandia.pt</a>) para coordenarmos trabalho.
</p> </p>
<h2>Estatísticas</h2> <h2 id="estatisticas">Estatísticas</h2>
<p>Número de vídeos descarregados: <%= stats[:downloads]["total"].to_i %></p> <p>Número de vídeos conhecidos: <%= videos_known %></p>
<p>Tamanho total: <%= h(stats[:downloads]["bytes"].to_i) %></p> <p>Número de vídeos descarregados: <%= videos_downloaded %> (<%= (videos_downloaded * 100.0 / videos_known).round(2) %>%)</p>
<p>Tamanho médio: <%= h(stats[:downloads]["bytes"].to_i / stats[:downloads]["total"].to_i) %>/vídeo</p> <p>Tamanho total: <%= h bytes_downloaded %></p>
<p>Número de pessoas a descarregar vídeos: <%= stats[:users]["total"] %></p> <p>Tamanho médio: <%= h(bytes_downloaded / videos_downloaded) %>/vídeo</p>
<p>Número de pessoas a descarregar vídeos: <%= users %></p>
<footer> <footer>
<hr /> <hr />

12
main.rb
View File

@ -29,13 +29,21 @@ get '/' do
FROM (select size from downloads group by video_id) as x; FROM (select size from downloads group by video_id) as x;
")[0] ")[0]
videos = ActiveRecord::Base.connection.execute("select count(1) AS total from videos;")[0]
users = ActiveRecord::Base.connection.execute("select count(distinct email) AS total from downloads;")[0] users = ActiveRecord::Base.connection.execute("select count(distinct email) AS total from downloads;")[0]
stats = { downloads: downloads, users: users } stats = {
videos_known: videos["total"].to_i,
videos_downloaded: downloads["total"].to_i,
bytes_downloaded: downloads["bytes"].to_i,
users: users["total"],
}
ERB ERB
.new(File.read("index.html.erb"), trim_mode: "<>-") .new(File.read("index.html.erb"), trim_mode: "<>-")
.result_with_hash(stats: stats) .result_with_hash(stats)
end end
get '/videos.json' do get '/videos.json' do