OPDB: Open Pinball Database

Three years ago a handful of people here (:wave: @umbilico @ROM @joe @keefer) were lamenting how IPDB doesn’t have an API (and doesn’t want to have an API) in order for various pinball software to communicate with each other.

Volunteer efforts take time, but OPDB is open for business at https://opdb.org/ – it’s a little bare bones, but the important bits are there:

  • Basic machine data is present
  • Machines are grouped together so you can see all 11 million AC/DC variants together. This is more comprehensive than even Pinside’s machine groups (and many times more useful than IPDB’s haphazard groupings).

The goal is to provide open access to pinball machine data to anyone who creates pinball software/apps (and a website for people who likes clicking on websites). There are still some rough edges and we’ll be moving some machines around to ensure a stable data model.

I thought I would announce OPDB now since apps have started to add OPDB data:

  • Match Play Events is using OPDB data when you search for machines to add to your tournament
  • Pinball Map is including OPDB identifiers in their API
  • More on the way!

I’ll be adding a PinballMap integration in Match Play soon so you can add machines easily based on your tournament’s location using data from Pinball Map. Only the sky is the limit!

If you make pinball software, hit me up so we can figure out how to make your app talk to other pinball apps!

Feature requests and questions answered below :point_down:

60 Likes

I regret that I have but one :heart: to give you.

This is awesome, and I appreciate everyone involved with making it a reality!!

5 Likes

Thank you!!

Tak, Andreas.

I’d like to see something like this for technical data too (switch matrix etc). For easy lookup in troubleshooting. Dunno if plans are going in that direction too. But, I’d like to help out.

1 Like

The plans are to add any data that people are willing to volunteer time and effort into maintaining, but not duplicate efforts done elsewhere. Like it doesn’t make sense to add links to all the rulesheets out there when OPDB can just link out to @coreyhulse’s PinballSpinner website instead (once Corey adds OPDB IDs to his website).

re: duplicating efforts, you’ll be using the IPDB machine ID’s I take it then?

It looks like IPDB numbers are stored in the record, and the machine page links to IPDB, but OPDB IDs are different, and encode additional information that the IPDB number doesn’t convey: https://opdb.org/about

Also looks like OPDB is searchable by IPDB number via
https://opdb.org/api/machines/ipdb/{ipdb_id}

1 Like

IPDB IDs aren’t really suitable:

  • They’re not assigned in a timely manner. For example Stern’s Iron Maiden still doesn’t have IPDB IDs assigned. For the kinds of things OPDB will be used for it’s important that an ID is assigned no later than the ship date for the machine.
  • OPDB IDs has the important feature that you can see the machine groupings just by examining the ID itself. You do not have to communicate with an API.

IPDB IDs are stored in the database to make it easy for software creators to migrate existing datasets. For example: I have a bunch of machines stored for pintips.net that I want to migrate to using OPDB IDs. Because OPDB stores IPDB IDs I can migrate that collection very easily using the API endpoint jrb pointed to

It’s alive!!

@haugstrup do you ever sleep?!

2 Likes

This is going to be totally awesome when I get to actually write the software for my league! Thank you for all involved for what already appears to be an amazing resource!

1 Like

Obviously, you meant to put a giant NOT in there. Yeah, they really lag.

1 Like

Linking to pinside pages might be valuable as well?

I’d rather see it the other way around tbh. With Pinside accepting incoming links using OPDB IDs. OPDB is only storing IPDB IDs to make migrations for existing apps easy. They’ll become less useful in the future.

Nice. I had written a screen scraping api wrapper around IPDB. In place of that I can write it to interface with the OPDB

I wonder how many implementations of the IFPA API there are out there? I know I had written one for PHP when it came out, and @haugstrup obviously has one as well.

I’m actually using yours with one patch applied (using curl rather than fopen to retrieve contents).

Robin Lassonde wrote a nice one in PHP last year that I’d like to switch to because it has error handling in a way that suits Match Play better. Haven’t had time though. Her library is here: https://github.com/RobinLassonde/ifpaclient

1 Like

I have written a Windows app for setting up tournaments and format the results report. It looks up player data and arranges players based on IFPA ranking. And stuff.

Thanks for doing this. The Flipper Control system I wrote for the Golden State Pinball Festival required me to import ipdb data. Looking forward to converting to live data

my open source android app is still out there
https://play.google.com/store/apps/details?id=net.perspiratron.ifpaprofile

the calendar functionality needs to be fixed. but you can search for players and their past results

First OPDB integration done! When adding machines to your tournament on Match Play Events you can now get a list of machines from the Pinball Map!

pinmap

If you tournament already has a location attached, it’ll be used and the intermediary step is skipped (you’ll see a list of machines right away).

Also note that Junk Yard is already selected when showing machines – this is because both PinballMap and Match Play uses OPDB IDs behind the scenes. The benefit is that Match Play knows when a machine has already been added to your tournament – even if you use a different name!

11 Likes