Ini telah diperbarui agar berfungsi dengan situs dan API rekreasi.gov yang baru!!!
Skrip ini menghapus situs web https://recreation.gov untuk ketersediaan tempat perkemahan.
Catatan: Mohon jangan menyalahgunakan skrip ini. Kebanyakan orang di luar sana tidak tahu cara menjalankan scraper pada situs web, jadi Anda mendapat keuntungan yang tidak adil dengan menggunakan ini.
$ python camping.py --start-date 2018-07-20 --end-date 2018-07-23 --parks 232448 232450 232447 232770
TUOLUMNE MEADOWS: 0 site(s) available out of 148 site(s)
? LOWER PINES: 11 site(s) available out of 73 site(s)
UPPER PINES: 0 site(s) available out of 235 site(s)
BASIN MONTANA CAMPGROUND: 0 site(s) available out of 30 site(s)
Anda juga dapat membaca dari stdin. Tentukan file (misalnya parks.txt
) dengan ID taman seperti ini:
232447
232449
232450
232448
dan kemudian menggunakannya seperti ini:
$ python camping.py --start-date 2018-07-20 --end-date 2018-07-23 --stdin < parks.txt
Untuk PowerShell, coba ini:
PS > Get-Content parks.txt | python camping.py --start-date 2021-09-24 --end-date 2022-09-24 --stdin
Jika Anda ingin melihat informasi lebih lanjut tentang tempat perkemahan mana yang tersedia, berikan --show-campsite-info
bersama dengan --nights <int>
:
$ python camping.py --start-date 2018-07-20 --end-date 2018-07-23 --parks 232448 232450 232447 232770 --show-campsite-info --nights 1
There are campsites available from 2018-07-20 to 2018-07-23!!!
? ELK CREEK CAMPGROUND (SAWTOOTH NF) (232042): 1 site(s) available out of 1 site(s)
* Site 69800 is available on the following dates:
* 2018-07-20 -> 2018-07-21
* 2018-07-21 -> 2018-07-22
Jika Anda hanya menginginkan hasil untuk ID perkemahan tertentu, berikan --campsite-ids <int>
:
$ python camping.py --start-date 2018-07-20 --end-date 2018-07-23 --parks 232431 --show-campsite-info --nights 1 --campsite-ids 18621
Anda ingin memasukkan skrip ini ke dalam crontab 5 menit. Anda juga dapat mengambil keluaran emoji sukses (?) dan kemudian melakukan sesuatu sebagai tanggapan, seperti memberi tahu Anda bahwa ada tempat perkemahan yang tersedia. Lihat bagian "Pemberitahuan Twitter" di bawah.
Jika tanggal perjalanan Anda fleksibel, Anda dapat mencari jumlah malam tertentu yang berdekatan dalam rentang tanggal yang luas. Hal ini berguna untuk perkemahan di area dengan permintaan tinggi (seperti Lembah Yosemite) atau selama musim puncak ketika pembukaan jarang terjadi. Cukup tentukan argumen --nights
. Misalnya, untuk mencari reservasi 5 hari di bulan Juni 2020 di Chisos Basin:
$ python camping.py --start-date 2020-06-01 --end-date 2020-06-30 --nights 5 234038
There are campsites available from 2020-06-01 to 2020-06-30!!!
? CHISOS BASIN (BIG BEND) (234038): 13 site(s) available out of 62 site(s)
Yang ingin Anda lakukan adalah mengunjungi https://recreation.gov dan mencari tempat perkemahan yang Anda inginkan. Klik di sidebar pencarian. Ini akan membawa Anda ke halaman perkemahan itu, URL-nya akan terlihat seperti https://www.recreation.gov/camping/campgrounds/<number>
. Nomor itu adalah ID taman.
Buka https://recreation.gov dan cari dulu perkemahan yang Anda inginkan, lalu pilih lokasi perkemahan tertentu di dalam perkemahan itu. URL perkemahan akan terlihat seperti https://www.recreation.gov/camping/campsites/<number>
. Nomor itu adalah ID perkemahan.
Anda dapat mencari ketersediaan hanya di satu lokasi perkemahan tertentu menggunakan argumen '--campsite-ids'. Ini dapat berguna jika Anda memiliki tempat perkemahan favorit yang ingin Anda gunakan atau jika Anda memiliki reservasi di tempat perkemahan tertentu yang ingin Anda tambahkan beberapa hari sebelum atau setelah reservasi Anda saat ini. Pencarian ini hanya berfungsi untuk satu kombinasi bumi perkemahan/perkemahan dalam satu waktu.
$ python camping.py --start-date 2020-06-01 --end-date 2020-06-30 --nights 5 --parks 234038 --campsite-ids 6943
There are campsites available from 2020-06-01 to 2020-06-30!!!
? CHISOS BASIN (BIG BEND) (234038): 1 site(s) available out of 62 site(s)
Anda juga dapat mencoba situs ini. Terima kasih kepada pastudan!
Anda dapat mengecualikan lokasi perkemahan tertentu, misalnya situs grup, dengan mendefinisikan sebuah file (misalnya excluded.txt
) dengan satu ID lokasi perkemahan per baris dan menggunakan argumen --exclusion-file
seperti ini:
$ python camping.py --start-date 2018-07-20 --end-date 2018-07-23 --parks 232448 232450 232447 232770 --exclusion-file excluded.txt
Saya menulis ini dengan Python 3.7 tetapi saya telah mengujinya berfungsi dengan 3.5 dan 3.6 juga. Yang terbaik adalah menggunakan 3.9+
python3 -m venv myvenv
source myvenv/bin/activate
pip install --upgrade pip
pip install -r requirements.txt
# You're good to go!
Kode ini diformat menggunakan warna hitam dan isort:
black -l 80 --py36 camping.py
isort camping.py
Catatan: black
hanya mendukung 3.6+ jadi hati-hati!
Jangan ragu untuk mengirimkan permintaan penarikan, atau lihat aslinya: https://github.com/bri-bri/yosemite-camping
Semua pengujian harus lulus sebelum permintaan penarikan digabungkan. Untuk menjalankan semua tes, cd ke direktori proyek dan jalankan:
python -m unittest
Jika Anda ingin diberi tahu tentang ketersediaan tempat perkemahan melalui Twitter (ini adalah satu-satunya API yang mudah digunakan), Anda dapat melakukan ini:
twitter_credentials.json
agar sesuai dengan nilai kunci Anda.notifier.py
. Lihat di bawah untuk contohnya. python camping.py --start-date 2018-07-20 --end-date 2018-07-23 --parks 70926 70928 | python notifier.py @banool1
Anda sebaiknya membuat aplikasi di akun lain (seperti akun bot), bukan akun Anda sendiri, sehingga Anda mendapat pemberitahuan saat tweet tersebut keluar.
Saya meninggalkan kunci API saya di sini tetapi jangan mengeksploitasinya, terima kasih.
Terima kasih kepada https://github.com/bri-bri/yosemite-camping yang telah membantu saya mencapai versi lama.