Ceci a été mis à jour pour fonctionner avec le nouveau site Recreation.gov et l'API !!!
Ce script extrait le site Web https://recreation.gov pour connaître les disponibilités des campings.
Remarque : veuillez ne pas abuser de ce script. La plupart des gens ne savent pas comment exécuter des scrapers sur des sites Web, vous bénéficiez donc d'un avantage injuste en l'utilisant.
$ 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)
Vous pouvez également lire depuis stdin. Définissez un fichier (par exemple, parks.txt
) avec des identifiants de parc comme celui-ci :
232447
232449
232450
232448
puis utilisez-le comme ceci :
$ python camping.py --start-date 2018-07-20 --end-date 2018-07-23 --stdin < parks.txt
Pour PowerShell, essayez ceci :
PS > Get-Content parks.txt | python camping.py --start-date 2021-09-24 --end-date 2022-09-24 --stdin
Si vous souhaitez voir plus d'informations sur les campings disponibles, passez --show-campsite-info
avec --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
Si vous souhaitez uniquement des résultats pour certains identifiants de camping, transmettez --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
Vous aurez envie de mettre ce script dans une crontab de 5 minutes. Vous pouvez également récupérer le résultat de l'emoji de réussite (?), puis faire quelque chose en réponse, comme vous informer qu'un camping est disponible. Consultez la section « Notification Twitter » ci-dessous.
Si vous êtes flexible sur les dates de voyage, vous pouvez rechercher un nombre spécifique de nuits contiguës dans une large plage de dates. Ceci est utile pour les terrains de camping situés dans des zones à forte demande (comme la vallée de Yosemite) ou pendant la haute saison lorsque les ouvertures sont rares. Spécifiez simplement l'argument --nights
. Par exemple, pour rechercher une réservation de 5 jours au mois de juin 2020 au Bassin de Chiso :
$ 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)
Ce que vous voudrez faire, c'est aller sur https://recreation.gov et rechercher le terrain de camping de votre choix. Cliquez dessus dans la barre latérale de recherche. Cela devrait vous amener à une page de ce terrain de camping, l'URL ressemblera à https://www.recreation.gov/camping/campgrounds/<number>
. Ce numéro est l'identifiant du parc.
Accédez à https://recreation.gov et recherchez d'abord le terrain de camping de votre choix, puis sélectionnez le camping spécifique dans ce terrain de camping. L'URL du camping doit ressembler à https://www.recreation.gov/camping/campsites/<number>
. Ce numéro est l'identifiant du camping.
Vous pouvez rechercher la disponibilité dans un seul camping spécifique en utilisant l'argument '--campsite-ids'. Cela peut être utile si vous avez un camping préféré que vous aimez utiliser ou si vous avez une réservation dans un camping spécifique auquel vous souhaitez ajouter des jours avant ou après votre réservation existante. Cette recherche ne fonctionne que pour une seule combinaison camping/camping à la fois.
$ 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)
Vous pouvez également consulter ce site. Merci à pastudan !
Vous pouvez exclure des campings spécifiques, par exemple des sites de groupe, en définissant un fichier (par exemple excluded.txt
) avec un identifiant de camping par ligne et en utilisant l'argument --exclusion-file
comme ceci :
$ python camping.py --start-date 2018-07-20 --end-date 2018-07-23 --parks 232448 232450 232447 232770 --exclusion-file excluded.txt
J'ai écrit ceci en Python 3.7 mais je l'ai également testé avec 3.5 et 3.6. Il est préférable d'utiliser 3.9+
python3 -m venv myvenv
source myvenv/bin/activate
pip install --upgrade pip
pip install -r requirements.txt
# You're good to go!
Ce code est formaté en noir et isort :
black -l 80 --py36 camping.py
isort camping.py
Remarque : black
ne prend réellement en charge que la version 3.6+, alors faites attention !
N'hésitez pas à soumettre des demandes de tirage ou à consulter l'original : https://github.com/bri-bri/yosemite-camping
Tous les tests doivent réussir avant qu'une pull request ne soit fusionnée. Pour exécuter tous les tests, cd dans le répertoire du projet et exécutez :
python -m unittest
Si vous souhaitez être informé des disponibilités du camping via Twitter (c'est la seule API réellement simple à utiliser), vous pouvez procéder comme suit :
twitter_credentials.json
pour qu'elles correspondent à vos valeurs clés.notifier.py
. Voir ci-dessous pour un exemple. python camping.py --start-date 2018-07-20 --end-date 2018-07-23 --parks 70926 70928 | python notifier.py @banool1
Vous souhaiterez créer l'application sur un autre compte (comme un compte de robot), pas sur le vôtre, afin d'être averti lorsque le tweet sera publié.
J'ai laissé mes clés API ici mais je ne les exploite pas, merci.
Merci à https://github.com/bri-bri/yosemite-camping de m'avoir permis d'aller jusqu'au bout pour l'ancienne version.