Dalam banyak tantangan pemrosesan gambar , kiriman berisi gambar, yang harus disimpan ke file agar dapat mengatasi masalah tersebut. Ini adalah tugas manual yang sangat membosankan. Kami para programmer tidak harus mengalami kerepotan seperti itu. Tugas Anda adalah mengunduh secara otomatis semua gambar yang ada dalam pertanyaan Code Golf.SE.
Aturan
- Program Anda dapat terhubung ke bagian mana pun dari
stackexchange.com
, tetapi mungkin tidak terhubung ke domain lain, kecuali lokasi gambar (yaitu, jangan repot-repot dengan penyingkat URL). - Integer N diberikan sebagai input, pada baris perintah atau stdin.
- URL dijamin menjadi tautan yang valid ke pertanyaan Code Golf.
http://codegolf.stackexchange.com/questions/N
- Setiap gambar yang ditampilkan di badan pertanyaan N harus disimpan ke file di komputer lokal. Salah satu dari lokasi berikut ini dapat diterima:
- Direktori saat ini
- Input direktori oleh pengguna
- Program Anda tidak boleh menyimpan file selain gambar di badan pertanyaan (mis. Avatar pengguna, atau gambar yang ada dalam jawaban).
- Gambar harus disimpan dengan ekstensi file yang sama dengan aslinya.
Ini adalah kode-golf - tulislah program sesingkat mungkin.
Kriteria validitas untuk jawaban
Ada berbagai kemungkinan tepi kasus dengan beberapa gambar dengan nama yang sama, teks dengan nama yang sama dengan elemen HTML, dll. Jawaban hanya akan dibatalkan jika terbukti gagal pada beberapa revisi pertanyaan yang diposting sebelum 10 Januari 2015 .
Jawaban:
Mathematica,
211210 byteTidak Terkumpul:
Cukup mudah. Saya telah menyiapkan filter untuk StackExchange API, yang hanya mengembalikan isi pertanyaan. Kode mengambil informasi pertanyaan dengan filter itu dan mem-parsingnya sebagai JSON. Saya memilih elemen yang benar (badan), dan gunakan
ImportString
untuk mem-parsing HTML dan memfilter semua URL gambar.FileNameTake@#~Export~Import@#
kemudian unduh masing-masing gambar dan simpan di direktori kerja saat ini dengan nama file yang sama dengan yang ada di URL.Anda dapat mengetahui direktori kerja saat ini dengan
Directory[]
.Pada prinsipnya, ada versi yang jauh lebih pendek, karena
ImportString
sebenarnya dapat langsung mengunduh semua file, bukan hanya memberi saya URL. Tapi kemudian saya kehilangan informasi tentang jenis file asli (karena mereka dikonversi menjadiImage
objek saat diunduh), jadi saya hanya dapat menyimpan semuanya sebagai jenis yang sama (PNG, katakanlah).sumber
Javascript -
149161 bytedengan spasi putih
skrip harus dijalankan dari situs stackexchange agar berfungsi.
Akan default ke halaman saat ini jika tidak ada nomor pertanyaan yang ditentukan dalam promptsumber
$('[src*="imgur"]',d)
percaya. Saya suka ini dapat dijalankan di konsol - kepuasan instan.questions
dapat disingkat menjadiq
, tetapi harus mencakupcodegolf.stackexchange.com
bagian daripada mengandalkan berada di halaman itu. @ Yosia dimungkinkan untuk memasukkan gambar dari domain lain dalam posting.#question .post-text img
dapat disingkat menjadi.post-text:first img
atau.post-text:eq(0) img
.Python 2 - 241 byte
Cukup mudah, mungkin bisa bermain golf lebih lanjut. Saya mencari situs untuk semua kejadian
img src=
antara kejadian pertamapost-text
dan/div
segera setelah itu. Setiap url gambar kemudian dibaca dan disimpan ke direktori kerja.sumber
[-9:]
) dari url gambar, yang seharusnya menjaga 5 karakter nama dan a.png
dan.jpg
lain - lain. Itu akan memotong byte nama file jika ekstensi lebih panjang dari 3 karakter .for
satu baris loop.for p re.findall(...):f=open(...);f.write(...)
Mathematica, 195
Ini mengekspor gambar dengan cara yang sama yang Martin lakukan dalam solusi Mathematica-nya, baca jawabannya untuk informasi lebih lanjut tentang itu. Pendekatan ini sangat berbeda dari pendekatannya, daripada mem-parsing hasil dari API saya langsung mem-parsing halaman HTML. Atau lebih tepatnya, saya menguraikan XML simbolis yang dapat dihasilkan Mathematica dari HTML.
sumber
Python 2 -
398342334 byteProgram mengunduh halaman SE, mengekstrak bagian posting (elemen pos-teks), menemukan url yang berakhir dengan ekstensi gambar dan mengunduhnya. Gambar disimpan seperti
img<n>.<ext>
dalam direktori saat ini.Program ini juga akan mengunduh gambar yang disediakan sebagai tautan, tidak hanya gambar yang disematkan. Dengan memberi setiap gambar nama file unik, bentrokan nama juga dihindari.
sumber
questions
denganq
(dalam URL).Bash - 86 byte
Tidak ada yang wget tidak akan memperbaiki.
-np
mencegah wget dari memasukkan direktori atas (Gambar Pengguna)-A
hanya mengambil file dengan ekstensi yang cocok dengan daftar yang disajikan.-r
adalah unduhan berulang.-l
mencegah wget dari terlalu dalam.$1
adalah pertanyaan yang harus diambil.sumber
questions
denganq
di URL.Node.js,
251247 BytesMenggunakan
request
untuk membuat HTTPGET
dancheerio
mem-parsing HTML. Tabrakan nama diselesaikan dengan menambahkan indeks gambar saat ini ke nama file URL file. Gambar disimpan ke direktori yang sama dengan file saat ini.sumber
Lua, 200 byte
Menerima nomor sebagai argumen baris perintah.
Asumsikan
src=
atribut apa pun akan untuk suatuimg
tag karena ini adalah satu-satunya tag dengansrc
atribut yang memungkinkan pertukaran tumpuk (kan?).Perhatikan juga
.. ...
. Saya sangat bangga dengan yang itu.sumber