이는 새로운 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에서도 읽을 수 있습니다. 다음과 같이 공원 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
어떤 캠프장을 이용할 수 있는지에 대한 자세한 정보를 보려면 --nights <int>
와 함께 --show-campsite-info
전달하세요.
$ 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에 넣고 싶을 것입니다. 또한 성공 이모티콘(?)에 대한 출력을 수집한 다음 사용 가능한 캠프장이 있음을 알리는 등의 응답으로 작업을 수행할 수도 있습니다. 아래의 "트위터 알림" 섹션을 참조하세요.
여행 날짜가 유연하다면 다양한 날짜 내에서 특정 연속 숙박 일수를 검색할 수 있습니다. 이는 수요가 많은 지역(예: 요세미티 밸리)의 캠프장이나 개장이 거의 없는 성수기 기간에 유용합니다. --nights
인수만 지정하면 됩니다. 예를 들어 Chisos Basin에서 2020년 6월의 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!
이 코드는 검정 및 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에 감사드립니다.