[Dica] Baixando múltiplos arquivos de um folder no Google Drive Ter 17 Fev 2015 - 16:36
Dica para usuários unix ou usuários que tenham o Python instalado na máquina
Como eu baixei 400 arquivos de um folder no Google Drive.
Como eu baixei 400 arquivos de um folder no Google Drive.
Salve salve pessoal, vou deixar o passo a passo de como fiz para baixar mais de 400 arquivos de um folder no Google Drive, talvez alguém precise disso no futuro.
O caso:
A questão é, que sempre que posso compartilho meus arquivos com amigos, e quando eles também tem links, sempre me mandam, uma mão lava a outra.
Em uma conversa com um desses amigos consegui um link para um folder do Google Drive com mais de 400 links para baixar! Convenhamos que clicar em 400 links não é algo interessante e produtivo de se fazer, não acham?
Pensando nisso, parei para analisar como poderia fazer isso de maneira mais fácil. Foi ai que eu me lembrei porque é que eu amo o Linux!!
Um dos (milhares) de motivos, é que existe uma funçãozinha no terminal, chamada wget, que me permite baixar arquivos diretamente do terminal, o mais legal é que se você tiver um arquivo com centenas de links (separados por uma quebra de linha) você pode baixar todos esses arquivos automaticamente, sem qualquer esforço.
O problema:
Mas a questão é: Como conseguir 400 links para colocar no arquivo? Copiar um por um seria tão intediante quanto baixar um a um. Foi ai que parei para fazer uma pequena analise no código deles, e encontrei um objeto (javascript) bem interessante, com o nome "data"
Esse objeto tem 3 items bem interessantes, porém o único que nos importa é o "folderModel", que além de outras informações, contém todos os links do folder que estamos visualizando, inclusive o link para download individual de cada arquivo.
Sendo assim, só preciso pegar esses links, foi ai que criei o seguinte loop:
- Código:
var items = data.folderModel, i = (items.length - 1);
for(i; i >= 0; i--) {
document.write(items[i][3] + '<br>');
}
Ele é bem simples, tudo que faz é substituir todo o conteúdo do documento atual com os links que foram pegos do objeto "data".
A solução:
É ai que entra a mágica do Linux, com uma simples linha no terminal fazemos o trabalho todo de uma vez só
- Código:
wget –no-check-certificate -i livros.txt
Leia mais: [Tens de ter uma conta e sessão iniciada para poderes visualizar este link]
Pronto, agora podemos ir dar uma volta na quadra enquanto os arquivos são baixados.
Quando esse processo terminar, vamos ter outro problema, os arquivos não são baixados com a extensão .pdf, e ai entra mais um dos motivos por eu amar o Linux; Ele já vem com o Python "de fabrica", ou seja, basta usufruirmos de todo o poder dessa linguagem, sem instalações adicionais.
Criei o seguinte código
- Código:
import os
for file in os.listdir('.'):
pdf = file + ".pdf"
print "Arquivo renomeado -", pdf
os.rename(file, pdf)
Em um arquivo com o nome rename.py e rodei no terminal com "python rename.py"
E como num passe de mágica, tenho todos os arquivos com a extensão correta, simples e fácil não é?
Para vocês que não tem o Linux e também tem esse problema, aqui a solução (clique)
Acredito que isso já resolva
- Código:
import requests
with open('livros.txt', 'r') as links:
download = links.readlines()
i = 1
for link in download:
link = link.rstrip('\n')
print 'Baixando: Arquivo - %s.pdf' % i
r = requests.get(link)
with open('Arquivo - %s.pdf' % i, 'wb') as newfile:
print 'Criando: Arquivo - %s.pdf\n\n' % i
newfile.write(r.content)
i += 1
E ai um dos motivos por eu adorar Python também!!
É isso ai galera, espero que seja útil. Façam bom proveito.