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?

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.


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 .


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/ .


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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.