此版本已更新,可與新的creative.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)
您也可以從標準輸入讀取。定義一個帶有公園 ID 的檔案(例如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
如果您只想要某些露營地 ID 的結果,請傳遞--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
您需要將此腳本放入 5 分鐘的 crontab 中。您也可以 grep 輸出成功表情符號 (?),然後執行一些回應操作,例如通知您有可用的露營地。請參閱下面的“Twitter 通知”部分。
如果您對旅行日期比較靈活,則可以在多個日期範圍內搜尋特定的連續住宿晚數。這對於高需求地區(如優勝美地山谷)的露營地或在空位很少的旺季期間非常有用。只需指定--nights
參數即可。例如,要搜尋 2020 年 6 月在 Chisos Basin 為期 5 天的預訂:
$ 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>
。該號碼就是公園 ID。
前往 https://recreation.gov,先搜尋您想要的露營地,然後選擇該露營地內的特定露營地。露營地的 URL 應類似https://www.recreation.gov/camping/campsites/<number>
。該號碼就是露營地 ID。
您可以使用「--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)
您也可以嘗試這個網站。感謝帕斯圖丹!
您可以透過定義每行一個營地 ID 的檔案(例如, 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!
此程式碼使用 black 和 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 讓我了解了舊版本的大部分內容。