cubehouse / themeparks

Unofficial API for accessing ride wait times and schedules for Disneyland, Disney World, Universal Studios, and many more parks
MIT License
540 stars 126 forks source link

[Discussion] Ride wait time when not evaluated by the park #180

Open jeanmatthieud opened 5 years ago

jeanmatthieud commented 5 years ago

I never went to a Six Flags park. On the readme file, it's specified that all the six flags parks supports ride waiting times.

I checked the responses for Six Flags Great Adventure, and the waiting time is null, which is interpreted as 'ride closed' by the library (lib\sixflags\sixflagsbase.js:59).

E.g.

{
  "rideId": 263,
  "status": "AttractionStatusOpen",
  "waitTime": null
}
waitTime: (ride.status === 'AttractionStatusOpen' ? (parseInt(ride.waitTime, 10) || -1) : -1),

We cannot distinguish a closed attraction, the library gives the same result.

{
  "rideId":11617,
  "status":"AttractionStatusTemporarilyClosed", // also "AttractionStatusClosed"
  "waitTime":null
}

How could we manage the 'open ride but no waiting time' status?

jeanmatthieud commented 5 years ago

I think that the readme should also mention it (related to #12)

cubehouse commented 5 years ago

I think we usually just return a wait time of "0". Under the assumption (a good assumption??) that rides without wait times usually don't have much of a queue.

Should it maybe be this instead? waitTime: (ride.status === 'AttractionStatusOpen' ? (parseInt(ride.waitTime, 10) || 0) : -1),

jeanmatthieud commented 5 years ago

I think it's a bad assumption. If some parks have open/close/down informations but not the waiting time, the waiting time should not be 0 OR we should have a flag on the park or ride to interpret it. For me, the easiest solution is to set waiting time to "null" but still maintaining the state. It could be done by using a new negative number when calling UpdateRide. Eg.

cubehouse commented 5 years ago

I need to ponder this, I find "open but waiting time unknown" really confusing as you never really "know" a wait time, it's all guessing by the parks using what data they have, and I have never been to a theme park where they just shrug rather than taking some guess at the wait time.

jeanmatthieud commented 5 years ago

I understand your point. I'm not an English native, so let's find another expression than "open but waiting time unknown".

Do you agree on the concept of having this kind of state (status of ride without waiting time)? How do you want us to apply it on the source code?

jeanmatthieud commented 5 years ago

I will try to update the following table in the meantime:

Park Ride Status Ride Wait Times
Magic Kingdom - Walt Disney World Florida
Epcot - Walt Disney World Florida
Hollywood Studios - Walt Disney World Florida
Animal Kingdom - Walt Disney World Florida
Disneyland Resort - Magic Kingdom
Disneyland Resort - California Adventure
Disneyland Paris - Magic Kingdom
Walt Disney Studios - Disneyland Paris
Hong Kong Disneyland
Magic Kingdom - Shanghai Disney Resort
Tokyo Disney Resort - Magic Kingdom ?
Tokyo Disney Resort - Disney Sea
Europa Park
Hershey Park
Parc-Asterix
California's Great America
Canada's Wonderland
Carowinds
Cedar Point
Kings Island
Knott's Berry Farm
Dollywood
Silver Dollar City
Seaworld Orlando
Efteling
Universal Studios Florida
Universal's Islands Of Adventure
Universal Volcano Bay
Universal Studios Hollywood
Universal Studios Singapore ?
Six Flags Over Texas
Six Flags Over Georgia
Six Flags St. Louis
Six Flags Great Adventure
Six Flags Magic Mountain
Six Flags Great America
Six Flags Fiesta Texas
Six Flags Hurricane Harbor, Arlington
Six Flags Hurricane Harbor, Los Angeles
Six Flags America
Six Flags Discovery Kingdom
Six Flags New England
Six Flags Hurricane Harbor, Jackson
The Great Escape
Six Flags White Water, Atlanta
Six Flags México
La Ronde, Montreal
Six Flags Hurricane Harbor, Oaxtepec
Six Flags Hurricane Harbor, Concord
PortAventura
Ferrari Land
Alton Towers
Thorpe Park
Chessington World Of Adventures
Bellewaerde
Phantasialand
cubehouse commented 5 years ago

OK, so should we add a new ride status? Maybe -5 for Unknown? Or is that maybe too vauge?

jeanmatthieud commented 5 years ago

OK, so should we add a new ride status? Maybe -5 for Unknown? Or is that maybe too vauge?

IMHO, We don't need a "Unknown" status, but a "Open but wait time not shared by the park" status lol

jeanmatthieud commented 5 years ago

I submitted a PR to accept null as a valid value for ride.waitTime, to illustrate my opinion.

Currently (before the PR), if you look at the AsterixPark, some rides have waitTime set to NaN, and it still passes the OnlineTest check.

// In asterixpark.js, with 'ridetime.latency = undefined'
rideUpdateData.waitTime = parseInt(ridetime.latency, 10);
// so rideUpdateData.waitTime = NaN

// In OnlineTest
typeOf rideUpdateData.waitTime === 'number' // is true when waitTime = NaN
// so the test passes: the NaN value is considered valid even if it's more a code issue than a real value.

For me, NaN should not be a valid value, but null should be considered as valid, as 'null' symbolise the fact that we explicitly set that the waitTime is not shared by the park.

jeanmatthieud commented 5 years ago

Another approach is to consider that the waitTime is not mandatory, and add it in the meta data. But in this case, it's a big rework for every park.

cubehouse commented 5 years ago

Favourite proramming wtf is "typeof NaN === 'number'"

Having null times makes sense to me

jeanmatthieud commented 5 years ago

Hahaha discovered it with this issue :)