Forçar o wget a usar o nome do arquivo real

51

Ao usar wgetum script para baixar alguns arquivos do Google Docs, o nome do arquivo não é preservado. Por exemplo:

wget 'http://spreadsheets.google.com/pub?key=pyj6tScZqmEfbZyl0qjbiRQ&output=xls' 

salva o arquivo como em pub?key=pyj6tScZqmEfbZyl0qjbiRQvez de indicatorhivestimatedprevalence15-49.xls, que é o que recebo se clicar no link em um navegador. Existe alguma maneira de impor esse comportamento "semelhante ao navegador" wget?

Chinmay Kanchi
fonte

Respostas:

91
wget --content-disposition 'http://spreadsheets.google.com/pub?key=pyj6tScZqmEfbZyl0qjbiRQ&output=xls'

fará o truque para você.

Ainda não está totalmente implementado e, às vezes, parece ser um bug, então não é a opção padrão wget, use-o por sua conta e risco.

Bruno Pereira
fonte
11
Eu sei...! Nice hein? ;)
Bruno Pereira
Eu não sou muito programador da web, então nunca pensei em procurar a frase "disposição do conteúdo". Você me salvou tendo que olhar manualmente para os cabeçalhos HTTP, descobrir o cabeçalho de disposição do conteúdo e lidar com ele.
Chinmay Kanchi
WOW + incrível. THX você é uma boa ideia.
Kangarooo
@BrunoPereira, também estou tentando fazer o download do arquivo de planilha do google. Mas não consegui encontrar o link para o arquivo. Você poderia dizer como obter o link para um arquivo de planilha do Google para que eu possa usar o wget da mesma maneira que Chinmay Kanchi. Desde já, obrigado.
user22180
@ChinmayKanchi Eu me chamo programador da Web nos últimos 15 anos, mas quando se trata disso, sempre tento usar um nome mais significativo no código.
tishma 20/10/16
3

Você pode tentar usar o curl para baixar e manter o nome do arquivo original:

curl -OJL ${your_url}
  • -O para nome remoto
  • -J para nome do cabeçalho remoto
  • -L para localização

consulte opções de linha de comando curl .

Noam Manos
fonte
0

O link do Google Docs está realmente dizendo para executar um script no servidor, analisando-o no arquivo que você deseja. O arquivo, que eu saiba, nunca existe no servidor no formato els, mas é gerado no tempo de execução quando você solicita. Portanto, não há nada para o wget obter.

Para fazer o download do arquivo, você precisa usar a http://code.google.com/apis/documents/docs/3.0/developers_guide_protocol.html#DownloadingDocs/ API do Google .

Ethan
fonte
Sim, o servidor está solicitando a execução de um script, o que cria o .xlsarquivo em tempo real. No entanto, um navegador completo não tem problemas com isso. Portanto, é obviamente possível ficar sem a API do Documentos.
amigos estão dizendo
Meu pensamento era que o script executado no navegador usaria a API; portanto, para fazê-lo sem o navegador, seria necessário recriar o script. Interessante que o wget tem uma bandeira para isso.
Ethan