Add scraping process details

This commit is contained in:
Hugo Peixoto 2023-07-28 20:31:14 +01:00
parent bbafcfa40f
commit 2f632491bc
2 changed files with 41 additions and 1 deletions

View File

@ -39,11 +39,49 @@ $ /caminho/para/o/saca-sapos QUANTIDADE_DE_VIDEOS TEU_ENDERECO_DE_EMAIL
$ PROCS=10 /caminho/para/o/saca-sapos 1000 eu@exemplo.pt
</pre>
<h2>Encontrar mais vídeos</h2>
<p>
O <a href="https://git.ansol.org/hugopeixoto/sapo-videos/">repositório de
código deste projecto</a> tem os scripts usados para varrer a plataforma
e guardar todos os identificadores de vídeos que encontrar. Por exemplo, é possível
varrer todas as 1468 páginas da categoria "Animação" (3) correndo o comando:
</p>
<pre>./get-category.sh 3 1468</pre>
<p>
No total, temos recolhidos 1.5 milhões de vídeos. Supostamente há cerca de 5 milhões.
Diponibilizamos os <a href="/videos.jsonl">metadados dos vídeos encontrados (1.5 GiB)</a> em formato JSONL.
Cada linha é um objecto JSON que representa um vídeo.
</p>
<p>
Os endpoints de pesquisa devolvem os metadados completos de cada resultado.
Não sabemos de nenhum endpoint que devolva os metadados de um vídeo em
específico.
</p>
<p>Coisas que já foram feitas:</p>
<ul>
<li>Varridos os resultados das pesquisas por letras únicas de <code>a</code> a <code>z</code> (<code>./get-search.sh a 105</code>, etc);</li>
<li>Varridos os resultados das pesquisas por um só espaço (<code>./get-search.sh " " 13716</code>);</li>
<li>Varridos todos os utilizadores dos vídeos encontrados nos passos anteriores;</li>
<li>Varridas todas as categorias;</li>
<li>Varridos os resultados das pesquisas por um números até 16 (<code>./get-search.sh 1 6007</code>, etc);</li>
</ul>
<p>
Os scripts à volta desta tarefa não estão muito optimizados para distribuir
trabalho / fazer trabalho incremental, mas qualquer ajuda a descobrir mais
vídeos é bem-vinda. Mandem mensagens no fediverso (<a href="https://ciberlandia.pt/@hugopeixoto">@hugopeixoto@ciberlandia.pt</a>) para coordenarmos trabalho.
</p>
<h2>Estatísticas</h2>
<p>Número de vídeos descarregados: <%= stats[:downloads]["total"].to_i %></p>
<p>Tamanho total: <%= h(stats[:downloads]["bytes"].to_i) %></p>
<p>Tamanho médio: <%= h(stats[:downloads]["bytes"].to_i / stats[:downloads]["total"].to_i) %>/vídeo</p>
<p>Número de pessoas a descarregar vídeos: <%= stats[:users]["total"] %></p>
<footer>
<hr />

View File

@ -29,7 +29,9 @@ get '/' do
FROM (select size from downloads group by video_id) as x;
")[0]
stats = { downloads: downloads }
users = ActiveRecord::Base.connection.execute("select count(distinct email) AS total from downloads;")[0]
stats = { downloads: downloads, users: users }
ERB
.new(File.read("index.html.erb"), trim_mode: "<>-")