Paksa wget untuk menggunakan nama file aktual

51

Saat menggunakan wgetdalam skrip untuk mengunduh beberapa file dari Google Documents, nama file tersebut tidak dipertahankan. Sebagai contoh:

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

menyimpan file sebagai pub?key=pyj6tScZqmEfbZyl0qjbiRQgantinya indicatorhivestimatedprevalence15-49.xls, yang mana saya dapatkan jika saya mengklik tautan di browser. Apakah ada cara untuk menerapkan perilaku "seperti browser" ini wget?

Chinmay Kanchi
sumber

Jawaban:

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

akan melakukan trik untuk Anda.

Ini masih belum sepenuhnya dilaksanakan dan tampaknya sedikit keluar kadang-kadang jadi itu bukan pilihan default wget, gunakan dengan risiko Anda sendiri.

Bruno Pereira
sumber
1
Aku tahu...! Bagus kan? ;)
Bruno Pereira
Saya bukan programmer web, jadi saya tidak akan pernah berpikir untuk mencari frase "disposisi konten". Anda menyelamatkan saya karena harus melihat header HTTP secara manual, menemukan header disposisi konten dan menanganinya.
Chinmay Kanchi
WOW + luar biasa. Terima kasih ide bagus.
Kangarooo
@BrunoPereira, saya juga mencoba mengunduh file google spreadsheet. Tetapi saya tidak dapat menemukan tautan untuk file tersebut. Bisakah Anda mengatakan bagaimana cara mendapatkan tautan untuk file google spreadsheet sehingga saya dapat menggunakan wget dengan cara yang sama seperti Chinmay Kanchi. Terima kasih sebelumnya.
user22180
@ChinmayKanchi Saya menyebut diri saya seorang programmer web 15 tahun terakhir, tetapi ketika sampai pada hal ini saya selalu mencoba dan menggunakan nama yang lebih bermakna dalam kode.
tishma
3

Anda dapat mencoba menggunakan curl untuk mengunduh dan mempertahankan nama file asli:

curl -OJL ${your_url}
  • -O untuk nama jarak jauh
  • -J untuk remote-header-name
  • -L untuk lokasi

lihat opsi baris perintah ikal .

Noam Manos
sumber
0

Tautan Google Documents benar-benar memberi tahu skrip pada server untuk dijalankan, menguraikannya ke dalam file yang Anda inginkan. File, sejauh pengetahuan saya, tidak pernah ada di server dalam bentuk els, tetapi dihasilkan saat runtime ketika Anda memintanya. Jadi, tidak ada apa pun untuk wget dapatkan

Untuk mengunduh file, Anda harus menggunakan google API http://code.google.com/apis/documents/docs/3.0/developers_guide_protocol.html#DownloadingDocs/ .

Ethan
sumber
Ya, server meminta skrip untuk dijalankan, yang membuat .xlsfile dengan cepat. Namun, peramban yang lengkap tidak memiliki masalah dengan ini. Jadi itu jelas mungkin dilakukan tanpa API Documents.
Chinmay Kanchi
Pikir saya adalah bahwa skrip yang dijalankan di browser akan menggunakan API, jadi untuk melakukannya tanpa browser, kita harus membuat ulang skrip. Menarik bahwa wget memiliki bendera untuk itu.
Ethan