ได้รับการอัปเดตให้ทำงานร่วมกับเว็บไซต์ Recreation.gov และ API ใหม่!!!
สคริปต์นี้จะคัดลอกเว็บไซต์ https://recreation.gov เพื่อดูความพร้อมของที่ตั้งแคมป์
หมายเหตุ: โปรดอย่าใช้สคริปต์นี้ในทางที่ผิด คนส่วนใหญ่ไม่รู้วิธีเรียกใช้โปรแกรมขูดกับเว็บไซต์ ดังนั้นคุณจึงได้เปรียบอย่างไม่ยุติธรรมจากการใช้สิ่งนี้
$ 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)
คุณสามารถอ่านได้จาก stdin กำหนดไฟล์ (เช่น parks.txt
) ด้วยรหัสอุทยานดังนี้:
232447
232449
232450
232448
แล้วใช้มันแบบนี้:
$ python camping.py --start-date 2018-07-20 --end-date 2018-07-23 --stdin < parks.txt
สำหรับ PowerShell ลองสิ่งนี้:
PS > Get-Content parks.txt | python camping.py --start-date 2021-09-24 --end-date 2022-09-24 --stdin
หากต้องการดูข้อมูลเพิ่มเติมว่ามีจุดตั้งแคมป์ใดบ้าง ให้ส่ง --show-campsite-info
พร้อมด้วย --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
หากคุณต้องการผลลัพธ์สำหรับรหัสแคมป์ไซต์บางรหัส ให้ส่ง --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
คุณจะต้องใส่สคริปต์นี้ลงใน crontab ความยาว 5 นาที คุณยังสามารถ grep ผลลัพธ์สำหรับอิโมจิแห่งความสำเร็จ (?) แล้วทำอะไรบางอย่างเพื่อตอบสนอง เช่น แจ้งให้คุณทราบว่ามีที่ตั้งแคมป์ให้บริการ ดูส่วน "การแจ้งเตือนของ Twitter" ด้านล่าง
หากคุณยืดหยุ่นวันเดินทางได้ คุณสามารถค้นหาจำนวนคืนที่ต่อเนื่องกันภายในช่วงวันที่ที่หลากหลายได้ สิ่งนี้มีประโยชน์สำหรับที่ตั้งแคมป์ในพื้นที่ที่มีความต้องการสูง (เช่น Yosemite Valley) หรือในช่วงฤดูท่องเที่ยวที่ไม่ค่อยเปิดให้บริการ เพียงระบุอาร์กิวเมนต์ --nights
เช่น ค้นหาการจอง 5 วันในเดือนมิถุนายน 2020 ที่ 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)
สิ่งที่คุณต้องการทำคือไปที่ https://recreation.gov และค้นหาที่ตั้งแคมป์ที่คุณต้องการ คลิกที่มันในแถบด้านข้างการค้นหา ซึ่งจะนำคุณไปยังหน้าของที่ตั้งแคมป์นั้น URL จะมีลักษณะดังนี้ https://www.recreation.gov/camping/campgrounds/<number>
หมายเลขนั้นคือรหัสอุทยาน
ไปที่ https://recreation.gov และค้นหาที่ตั้งแคมป์ที่คุณต้องการก่อน จากนั้นเลือกที่ตั้งแคมป์ภายในที่ตั้งแคมป์นั้น URL ของที่ตั้งแคมป์ควรมีลักษณะดังนี้ https://www.recreation.gov/camping/campsites/<number>
หมายเลขนั้นคือรหัสแคมป์
คุณสามารถค้นหาความพร้อมในที่ตั้งแคมป์แห่งเดียวได้โดยใช้อาร์กิวเมนต์ '--campsite-ids' สิ่งนี้มีประโยชน์หากคุณมีที่ตั้งแคมป์ที่คุณชื่นชอบหรือหากคุณได้จองที่ตั้งแคมป์ที่คุณต้องการเพิ่มวันก่อนหรือหลังการจองที่มีอยู่ การค้นหานี้ใช้ได้กับที่ตั้งแคมป์/ที่ตั้งแคมป์ครั้งละหนึ่งชุดเท่านั้น
$ 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)
คุณยังสามารถใช้ไซต์นี้เพื่อหมุนได้ ขอบคุณพาสต้า!
คุณสามารถยกเว้นไซต์แคมป์บางแห่งได้ เช่น ไซต์กลุ่ม โดยกำหนดไฟล์ (เช่น excluded.txt
) ด้วยรหัสไซต์แคมป์หนึ่งรายการต่อบรรทัด และใช้อาร์กิวเมนต์ --exclusion-file
ดังนี้:
$ python camping.py --start-date 2018-07-20 --end-date 2018-07-23 --parks 232448 232450 232447 232770 --exclusion-file excluded.txt
ฉันเขียนสิ่งนี้ใน Python 3.7 แต่ฉันได้ทดสอบแล้วว่าใช้งานได้กับ 3.5 และ 3.6 ด้วย ควรใช้ 3.9+
python3 -m venv myvenv
source myvenv/bin/activate
pip install --upgrade pip
pip install -r requirements.txt
# You're good to go!
รหัสนี้จัดรูปแบบโดยใช้สีดำและ isort:
black -l 80 --py36 camping.py
isort camping.py
หมายเหตุ: black
รองรับเฉพาะ 3.6+ จริงๆ ดังนั้นระวัง!
อย่าลังเลที่จะส่งคำขอดึงหรือดูต้นฉบับ: https://github.com/bri-bri/yosemite-camping
การทดสอบทั้งหมดควรผ่านก่อนที่คำขอดึงจะถูกรวมเข้าด้วยกัน หากต้องการรันการทดสอบทั้งหมด ให้ใส่ cd ลงในไดเร็กทอรีโปรเจ็กต์แล้วรัน:
python -m unittest
หากคุณต้องการรับการแจ้งเตือนเกี่ยวกับความพร้อมของที่ตั้งแคมป์ผ่านทาง Twitter (เป็น API เดียวที่ใช้งานง่ายมาก) คุณสามารถทำได้ดังนี้:
twitter_credentials.json
ให้ตรงกับค่าคีย์ของคุณnotifier.py
ดูตัวอย่างด้านล่าง python camping.py --start-date 2018-07-20 --end-date 2018-07-23 --parks 70926 70928 | python notifier.py @banool1
คุณจะต้องสร้างแอปในบัญชีอื่น (เช่น บัญชีบอท) ไม่ใช่ของคุณเอง ดังนั้นคุณจะได้รับการแจ้งเตือนเมื่อทวีตออกไป
ฉันทิ้งคีย์ API ไว้ที่นี่ แต่อย่าหาประโยชน์จากมันเลย ขอบคุณ
ขอขอบคุณ https://github.com/bri-bri/yosemite-camping ที่พาฉันไปที่นั่นให้ได้มากที่สุดสำหรับเวอร์ชันเก่า