cubehouse / themeparks Goto Github PK
View Code? Open in Web Editor NEWUnofficial API for accessing ride wait times and schedules for Disneyland, Disney World, Universal Studios, and many more parks
License: MIT License
Unofficial API for accessing ride wait times and schedules for Disneyland, Disney World, Universal Studios, and many more parks
License: MIT License
Looks like the 3rd party apps that provide six flag ride wait times only provide ride wait times based off other user input.
The six flags app does have ride wait times. But according to https://play.google.com/store/apps/details?id=com.sixflags.android&hl=en "Ride Wait Times for our most popular attractions! We’re rolling this feature out to select parks first and it will be available to Pass Holders only." So it seems like you'd have to have a pass to get access to ride wait times. Looking at reviews there are some parks with ride waits times and some without but it's not clear which have them and which don't.
On older versions of Node.js (such as 4.7 on AWS Lambda), "new.target" does not exist and cannot be transformed using Babel v6 (babel/babel#1088). Because of this, the following line results in test and runtime failures:
https://github.com/cubehouse/themeparks/blob/master/lib/park.js#L72
Given that the supported Node.js version in your package.json
file reads >=0.12
, this should be fixed to allow for the Babel built file to be run on older versions of Node.js.
The earliest version of Node.js that supports new.target
is 5.0.0: https://nodejs.org/en/blog/release/v5.0.0/
The same functionality can be achieved through the use of this.constructor
(note that this.constructor
does not allow for all the same use cases as new.target
, but it does satisfy the use case of preventing this base class from being constructed directly).
Add additional SeaWorld Florida parks to the API.
Can look at the ruby implementation listed in project acknowledgments, but I'm unsure if it is still functional.
Hi,
for info,
Disneyland Paris has changed website and mobile app to DisneyParks US clones.
As so , the Pure Agency servers do not serve valid data anymore.(stuck on 11/02/2015)
It seems (from the website page source) that the code used tu identify parks are dlp for Disneyland Park, and wds for Walt Disney Studios.
I've tried to mimic your US parks code for Disneyland Paris , but so far I got only blank page back.
Philippe
Hi,
I'm attempting to install themeparks on a Node application running in Docker.
npm install works, and doesn't error, however when I then run my application I get the following error:
/app/node_modules/themeparks/node_modules/osmosis/node_modules/libxmljs-dom/node_modules/libxmljs/node_modules/bindings/bindings.js:88
err = new Error('Could not locate the bindings file. Tried:\n'
^
Error: Could not locate the bindings file. Tried:
→ /app/node_modules/themeparks/node_modules/osmosis/node_modules/libxmljs-dom/node_modules/libxmljs/build/xmljs.node
→ /app/node_modules/themeparks/node_modules/osmosis/node_modules/libxmljs-dom/node_modules/libxmljs/build/Debug/xmljs.node
→ /app/node_modules/themeparks/node_modules/osmosis/node_modules/libxmljs-dom/node_modules/libxmljs/build/Release/xmljs.node
→ /app/node_modules/themeparks/node_modules/osmosis/node_modules/libxmljs-dom/node_modules/libxmljs/out/Debug/xmljs.node
→ /app/node_modules/themeparks/node_modules/osmosis/node_modules/libxmljs-dom/node_modules/libxmljs/Debug/xmljs.node
→ /app/node_modules/themeparks/node_modules/osmosis/node_modules/libxmljs-dom/node_modules/libxmljs/out/Release/xmljs.node
→ /app/node_modules/themeparks/node_modules/osmosis/node_modules/libxmljs-dom/node_modules/libxmljs/Release/xmljs.node
→ /app/node_modules/themeparks/node_modules/osmosis/node_modules/libxmljs-dom/node_modules/libxmljs/build/default/xmljs.node
→ /app/node_modules/themeparks/node_modules/osmosis/node_modules/libxmljs-dom/node_modules/libxmljs/compiled/4.8.3/linux/x64/xmljs.node
at bindings (/app/node_modules/themeparks/node_modules/osmosis/node_modules/libxmljs-dom/node_modules/libxmljs/node_modules/bindings/bindings.js:88:9)
at Object.<anonymous> (/app/node_modules/themeparks/node_modules/osmosis/node_modules/libxmljs-dom/node_modules/libxmljs/lib/bindings.js:1:37)
at Module._compile (module.js:409:26)
at Object.Module._extensions..js (module.js:416:10)
at Module.load (module.js:343:32)
at Function.Module._load (module.js:300:12)
at Module.require (module.js:353:17)
at require (internal/module.js:12:17)
at Object.<anonymous> (/app/node_modules/themeparks/node_modules/osmosis/node_modules/libxmljs-dom/node_modules/libxmljs/index.js:4:16)
at Module._compile (module.js:409:26)
at Object.Module._extensions..js (module.js:416:10)
at Module.load (module.js:343:32)
at Function.Module._load (module.js:300:12)
at Module.require (module.js:353:17)
at require (internal/module.js:12:17)
at Object.<anonymous> (/app/node_modules/themeparks/node_modules/osmosis/node_modules/libxmljs-dom/index.js:3:19)
How can I resolve this?
Raising an issue in case other people are curious.
I've been tracking Volcano Bay since January, and it's finally started returning rides. However, all the rides permanently show 0 minute wait times. If you check the official app, this is consistent with what the app shows. I can't find any availability of the actual ride wait times outside of being in the park with the Tapu things.
So a question: should I integrate the park into the library? Even though it'll only be returning 0 minute wait times for all the rides?
You can check out the branch here https://github.com/cubehouse/themeparks/tree/universalvolcanobay
I've started to add non Disney parks as well as Disney parks that aren't really "wdw" (Paris, LA, Tokyo), so "wdwjs" isn't accurate now.
Will look into defining the project's goals a bit clearer (just wait times? Or a bit more?) and renaming to a sensible name.
Action plan:
http://ar02.biglobe.ne.jp/app/waittime/waittime.json
http://ar02.biglobe.ne.jp/app/waittime/schedule.json
http://usjinfo.com/wait/realtime.php
https://www.usj.co.jp/e/parkguide/calendar.html
I've received an error of one of my app using wdwjs (3.1.3):
TypeError: Cannot set property 'correlation' of null
File "/opt/attractions/attractions-task-wdwjs/node_modules/wdwjs/Disney/DisneyBase.js", line 476, in null.<anonymous>
self._accessToken.correlation = resp.headers["x-correlation-id"];
File "/opt/attractions/attractions-task-wdwjs/node_modules/wdwjs/parkBase.js", line 174, in Request._callback
return callback(err, resp, body);
I did not analyse this bug, but a check seems mandatory on _accessToken or before.
Hi,
since the last update of the offical Europa-Park app, wdwJS does not longer work. I get always the following error:
[ERROR :: Europa-Park] Failed to parse JSON data from Europa API SyntaxError: Unexpected token < in JSON at position 0: You are not authorized to view this page The Web server you are attempting to reach has a list of IP addresses that are not allowed to access the Web site, and the IP address of your browsing computer is on this list. Please try the following: Contact the Web site administrator if you believe you should be able to view this directory or page. HTTP Error 403.6 - Forbidden: IP address of the client has been rejected.<br>Internet Information Services (IIS) Technical Information (for support personnel) Go to Microsoft Product Support Services and perform a title search for the wordsHTTP and 403. Open IIS Help, which is accessible in IIS Manager (inetmgr), and search for topics titled About Security, Limiting Access by IP Address, IP Address Access Restrictions, and About Custom Error Messages. Failed to parse JSON data from Europa API
I've found out, that they have changed the API URL. Because the new App works fine outside off the park with a faked GPS coordinate.
I hope there will be an update that fix that issue.
Thank you a lot!
I see that you have it for the parks but not the individual rides. I would add it to the API but I cannot get it to work (refer to my other comments).
An example on how to receive the coordinates is:
"https://api.wdpro.disney.go.com/global-pool-override-B/facility-service/destinations/" + parkID + "/attractions"
Also note the attractions
need to be changed to the category you want to pull up. For example to get restaurants, it would be /restaurants
The variables you will need to look at is in the Guest Entrance
object.
I'm having a little difficulty doing exactly what I want with themeparks.
I have a list of the parks on a page, and then a drilldown page for each park, however the code to get an individual park is a little messy:
router.get('/:parkName', function(req, res, next) {
var parkName = req.params.parkName;
var tp = req.themeparks;
for (var p in tp.Parks) {
var pi = new tp.Parks[p]();
if (pi.Name == parkName) {
var park = pi;
}
}
park.GetWaitTimes(function(err, rides) {
if (err) return next(err);
res.render('park', {title: park.Name, park: park, rides: rides});
});
});
The only identifying property a park has to distinguish itself from another is the name (there is no ID, or URL friendly unique property), so I have to use the name as the path. I then have to loop around every park and create a new instance of each until I find the park requested - very wasteful on resources, and my implementation isn't perfect.
It would be much better if there was an easier way of identifying each park, and also returning a populated Park object which included the rides - as you can see I have to fetch and return that separately. I'm not sure of any solutions myself so I'm asking the community what they might consider a good way of tackling this issue.
hello there you would be added to the waiting time for these diferant park?
https://www.futuroscope.com/
https://www.walibi.com/
https://www.portaventuraworld.com/
http://www.nigloland.fr/
https://www.efteling.com/
http://www.plopsalanddepanne.be/
http://www.lepal.com/
http://www.gardaland.it/
http://www.puydufou.com/
https://www.heide-park.de/
http://www.holidaypark.de/
tht
...has updated its website and guess what :)
This might be the first park to get data access since opening day !
Is there a way to check when is a good time to go to the parks (like maybe use: http://www.isitpacked.com/live-crowd-trackers/more/).....
I haven't really found an API for their website to integrate it
Following the migration it lacks the following parks in the API
These park was on wdwjs
SeaWorldSanAntonio
SeaWorldSanDiego
ChessingtonWorldOfAdventures
SeaWorldFlorida
DisneylandHongKong
Instead of using DEBUG environment variable (or in addition to?) use the util.debuglog system to generally comply with nice NodeJS programming/debug standards.
https://nodejs.org/api/util.html#util_util_debuglog_section
I've only ever seen a couple other non-core NodeJS module use this, which is why I've never come across it before. Hopefully more modules will use start using this too :)
Can't seem to find the option of Fast Pass return time. Is this available at the current time?
Could you add Thrope parks since this is part of Merlin Parks?
It would be nice to be able to configure a setting that would route all the requests through a proxy. It appears that the http request library supports it and there needs to be a setting and have it passed each time if set.
hello, is it possible you to recover time for single rider wait?
while the park is that variable disnneyland
you is it possible to have additional information on the attraction?
I found this:
https://wdpromedia.disney.go.com/media/wdpro-dlp-assets/prod/fr-fr/attractions/attraction-P1DA08.json
https://wdpromedia.disney.go.com/media/wdpro-dlp-assets/prod/fr-fr/attractions/ available in 12 languages
so my question is it possible you wdwjs the API's added? moin in the description in three languages as well as:
//------------------------------------------------------------------------
"height": [
{
"value": "1,32 m",
"id": "1.32m-global_60242",
"urlFriendlyId": "1_32m"
}
//------------------------------------------------------------------------
"coordinates": {
"Guest Entrance": {
"key": "Guest Entrance",
"latitude": "48.873651",
"longitude": "2.778863"
}
//------------------------------------------------------------------------
"descriptions": {
"shortDescription": {
"id": "",
"templateId": "entity-card-body-only",
"type": "webDescription",
"sections": {
"body": "Bouclez vos ceintures et préparez-vous pour la deuxième phase ! Un canon super-puissant tout droit sorti de l'univers de Jules Verne vous propulsera dans l'espace à vitesse grand V."
}
},
"entityCard1": {
"id": "",
"templateId": "entity-card-1",
"type": "webDescription",
"sections": {
"readMore": "Foncez à travers l'atmosphère pour atteindre l'espace. Mais cette fois, vous ne vous arrêterez pas à la Lune. Avec Space Mountain® Mission 2, --- --- --- n vortex rouge tourbillonnant avant de regagner la Terre – vous n'oublierez jamais votre tout premier vol spatial !",
"header": "Space Mountain® Mission 2 : Rechargé pour vous propulser encore plus loin"
},
https://wdpromedia.disney.go.com/media/wdpro-dlp-assets/prod/es-es/attractions/attraction-P1DA08.json es version
tht
The DisneyAPI should be able to report "down" attraction status, by another boolean field or by replacing "status" by an integer (-1 (down) / 0 (closed) / 1 (operating)).
In DisneyBase.js, line 85:
obj.active = (ride.waitTime && ride.waitTime.status == "Operating") ? true : false;
In fact, "ride.waitTime.status" can be one of:
["Operating", "Closed", "Down"]
Hello!
When i'm using the npm install command i get the following error :
node-pre-gyp ERR! Tried to download(404): https://github.com/libxmljs/libxmljs/releases/download/v0.18.4/node-v11-linux-x64.tar.gz node-pre-gyp ERR! Pre-built binaries not found for [email protected] and [email protected] (node-v11 ABI) (falling back to source compile with node-gyp) node-pre-gyp http 404 status code downloading tarball https://github.com/libxmljs/libxmljs/releases/download/v0.18.4/node-v11-linux-x64.tar.gz
After installing i get
Error:` Cannot find module 'themeparks'
# Herschend Family Entertainment
URL : https://www.silverdollarcity.com/
API JSON: http://pulse.hfecorp.com/api/waitTimes/2
URL : https://www.dollywood.com/
API LINK : http://dw.dollywood.com/RWTimes/allRidesMob.html
API JSON : http://pulse.hfecorp.com/api/waitTimes/1
Rides Opening times seems to be on GMT ...
All rides have an offset of 1 hour with parks times ...
I am currently pulling Universal Data regularly throughout the day for a project. The following error has appeared twice in the past two weeks of running the collection.
Looks like it is a problem when getting the information from the cache.
`/var/app/current/node_modules/wdwjs/Universal/UniversalBase.js:49
for (var i = 0, ride; ride = self.poi_data.Rides[i++];) {
^
TypeError: Cannot read property 'Rides' of undefined
at /var/app/current/node_modules/wdwjs/Universal/UniversalBase.js:49:49
at /var/app/current/node_modules/wdwjs/Universal/UniversalBase.js:321:16
at Request._callback (/var/app/current/node_modules/wdwjs/Universal/UniversalBase.js:296:14)
at Request.self.callback (/var/app/current/node_modules/request/request.js:199:22)
at emitTwo (events.js:87:13)
at Request.emit (events.js:172:7)
at Request. (/var/app/current/node_modules/request/request.js:1036:10)
at emitOne (events.js:82:20)
at Request.emit (events.js:169:7)
at IncomingMessage. (/var/app/current/node_modules/request/request.js:963:12)
`
Hello,
When installing this, which i'm pretty impressed and love it, it requests to have [email protected] installed. I have 3.3.1 installed (the latest one). Is there a possibility that you are able to upgrade it to superagent >3?
I have tried to install themeparks (after my project crashed for reasons unknown) and got the following:
[email protected] install /home/christopher/Magik-Tool/node_modules/libxmljs
node-pre-gyp install --fallback-to-build --loglevel http
node-pre-gyp http GET https://github.com/libxmljs/libxmljs/releases/download/v0.18.4/node-v51-linux-
x64.tar.gz
node-pre-gyp http 404 https://github.com/libxmljs/libxmljs/releases/download/v0.18.4/node-v51-linux-x64.tar.gz
node-pre-gyp ERR! Tried to download(404): https://github.com/libxmljs/libxmljs/releases/download/v0.18.4/node-v51-linux-x64.tar.gz
node-pre-gyp ERR! Pre-built binaries not found for [email protected] and [email protected] (node-v51 ABI) (falling back to source compile with node-gyp)
node-pre-gyp http 404 status code downloading tarball https://github.com/libxmljs/libxmljs/releases/download/v0.18.4/node-v51-linux-x64.tar.gz
Followed by
npm ERR! path /home/christopher/Magik-Tool/node_modules/themeparks/node_modules/.staging
npm ERR! code EACCES
npm ERR! errno -13
npm ERR! syscall mkdir
npm ERR! Error: EACCES: permission denied, mkdir '/home/christopher/Magik-Tool/node_modules/themeparks/node_modules/.staging'
npm ERR! { Error: EACCES: permission denied, mkdir '/home/christopher/Magik-Tool/node_modules/themeparks/node_modules/.staging'
npm ERR! errno: -13,
npm ERR! code: 'EACCES',
npm ERR! syscall: 'mkdir',
npm ERR! path: '/home/christopher/Magik-Tool/node_modules/themeparks/node_modules/.staging' }
npm ERR!
npm ERR! Please try running this command again as root/Administrator.
When I am running the command in sudo
.
And finally:
npm ERR! errno 243
npm ERR! [email protected] postinstall:npm dedupe
npm ERR! Exit status 243
npm ERR!
npm ERR! Failed at the [email protected] postinstall script 'npm dedupe'.
Is there any apparent reason why it is not working?
It seems that at the moment the Disney parks do not support the caching mechanism that other parks like Six Flags do. Seems like it would be an easy one line change (using the Cache.wrap function).
As of 4.0, when calling GetWaitTimes() after having called GetOpeningTimes() the ride schedule data will always be missing. This will also happen if the ttl of wait times is shorter than the ttl of opening times.
I believe this is happening because ride schedules are stored with the ride cache data. So if you call GetOpeningTimes() and there are no rides to attach ride schedules to, the data is just discarded. But if a call is then made to GetWaitTimes(), the ride info is downloaded, and GetOpeningTimes() is called again. However, it won't download all the opening times again, it just pulls them from the "openingtimes" cache. But the cache does not have any ride opening times, so ride schedules will remain missing.
It is a similar situation when the ride wait times cache is cleared before the opening times cache is cleared (i.e. cacheWaitTimesLength = 60 and cacheOpeningTimesLength = 300). When the new ride info is downloaded it will try to get the new schedule times as well. But since the opening times are still in the cache it won't download it again. And since only the park opening times are in the cache, not the ride opening times, the schedule data on the ride will be missing.
I hope this is clear enough. I encountered this problem while trying to get ride info for the Disney parks in case that helps. I would be glad to try to further explain this problem if it is necessary.
I also tried to see if there was a simple way of correcting this and was unable to come up with anything.
Thanks for looking into it!
A lot of attractions ( parades, shows, meet & greets ... ) doesn't have wait times but show times , retrieving them separately would be a plus.
Thanks to MaxPass, Disneyland Resort attractions that have FastPass available will show the current window:
fastPass: { startTime: '11:40:00', endTime: '12:40:00', available: true }
I would go about making a pull request, but I'm not sure the best way to implement it since only the 2 DLR parks have these parameters now.
Hi,
The Tokyo disney get wait time function looks something wrong with API, every attraction always return "Closed" type, and the time wrong too.
Maybe it is relate to request of the realtime url?
Sometimes when querying the rides for Universal Studios, I notice that I won't receive any ride data. Is there a cooldown period on their API that only allows you to query rides every x amount of minutes?
The Disneyland Hong Kong website uses a lot of similar functionality to the main WDW websites.
The resort has the ID "hkdl", and the URL https://www.hongkongdisneyland.com/authentication/get-client-token/ can be used to generate an access token similar to the one used by the mobile app. However, this token will have different access, as it's got a completely different scope (it generates one for a desktop client, as opposed to the mobile client).
It's a good start, we could probably fish out schedules, but I don't know how to go about finding the wait times. Anyone have any thoughts? Half expecting an official app to appear, that will probably shed some light on the specifics.
I'm quite new to Node.js so I'm a bit lost
In several scripts new WeakMap is called but is not in the dependencies of astify (it seems that it is astify that needs it.)
Do i just install WeakMap from anywhere , or do I have to be in the astify folder ?
Thanks
Philippe
Requested Feature: List of Supported Park Features
I would like to add a command/way to access the table that you have the supported park features. A json layout that I would like to see/maybe have is, as an example:
{
id: 1,
park: Magic Kingdom
location: WDW, Florida
wait-times: true,
park-opening-times: true,
ride-opening-times: true
},
{
id: 20,
park: Hershey Park
location: Pennsylvania
wait-times: true,
park-opening-times: true,
ride-opening-times: false
}
Is this possible?
Hi,
Thank you guys for wdwJS project. I have installed it on heroku free account. I am using wdwJS for my ios app that can show Shanghai Disneyland wait times.
But when I access it with my app, it does not always get all attractions (36 attractions), sometimes it just return some attractions, maybe 12 or 20 attractions. I have tried hundreds times, still not figure out what was wrong?
my data url:
Might be an outdated API as Sesame Place returns no rides whatsoever.
Nice API, couple of questions
I was browsing the code and saw that under some circumstances mapping information might be provided, but playing with the API I have never seen any such information passed back in the json data, is there some way to request this in the API or ... ?
Do you know of anyway to get back information other than attractions and entertainment, like dining, shops, restrooms etc?
Anyway, saved me some time from porting the echelon source from ruby, so double thanks for that!
Is it possible to recover from api list of all attractions the park ( although it is not Waiting time example of the list using Europapark is not complete)
Can recover your url from a miniature picture of the attractions ?
And the restaurant list
And the shops ?
Can also retrieve your rate peak of the park?
Recover rates from api
Adding walibi park
Good evening, here is the list of some api that would be nice to add!
As well as the opportunity to retrieve the shows of each park and the listed!
Website : http://www.hersheypark.com/
Wait time : https://hpapp.hersheypa.com/v1/rides/wait
details : https://hpapp.hersheypa.com/v1/rides
Wait time : http://ar02.biglobe.ne.jp/app/waittime/waittime.json
Shows : http://ar02.biglobe.ne.jp/app/waittime/schedule.json
Wait time : http://m.universalstudioshollywood.com/waittimes
Show : https://seas.te2.biz/v1/rest/venue/{0}/shows/{1}
Shows horaires : https://wdpromedia.disney.go.com/media/wdpro-dlp-assets/prod/global/schedules/entertainments/
Shows details : https://wdpromedia.disney.go.com/media/wdpro-dlp-assets/prod/fr-fr/entertainments/
Forgive me if this issue's format is wrong, it is the first one I've ever done.
I've noticed that the fastPass value for Disneyland Paris' attractions was false, for example "Big Thunder Mountain" has fast passes (last time I checked, which was 2 weeks ago) and yet we obtain "false" as its value.
I have not checked for other parks.
Hi,
Since v3, the response to GetWaitTimes(), doesn't include opening time and closing time of each ride anymore (tested with disneylandparis)
Is it possible to restore this functionality ?
Thanks
I've checked this with Alton Towers and Chessington:
Both parks are open and operating.
Hello
I'm requesting data from the themeparks api using the following parks: "ThemeParks.Parks.DisneylandParisMagicKingdom" & "ThemeParks.Parks.DisneylandParisWaltDisneyStudios". But when I compared the data with the disney app it didn't show Malfunction and some times from rides were not similiar.
Hello,
How can we retrieve the Disneyland wait time in an HTML file? I know use only HTML and PHP and I'm a bit lost with the install of the script !
Thanks
I'm noticing some serious issues with WDW attractions that don't have wait times (Tiki Room, Carousel of Progress, etc). They are open, but are showing up as closed. Currently trying to figure out the source of the problem and will update if I find anything.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.