Jump to content
LaunchBox Community Forums

Recommended Posts

Hey everyone! My first post and thought I would share a tool I created to check your games collection against the LaunchboxDB. I looked for a plugin or similar but couldn't find anything, apologies if this has already been done. I gave a stab at doing a proper plugin in C#, but it's been eons (and many versions ago) since I worked in it and gave up quickly lol. Went back to my comfort zone and made the tool in JavaScript. 

Game Checker Expectations

Just to give some heads up on what to expect from this:

  • This only checks against local copies of the XML files and local Metadata.xml file (NOT the actually LaunchboxDB website).
  • Some basic validation to verify files.
  • Designed against Launchbox 13.5 file formatting and XML naming conventions.
  • This is not a complete platform library check as Launchbox states their DB may not be complete and could be missing games.

Feel free to leave feedback and any issues you might find.

Also, my chance to give a shoutout to all the folk that make this scene possible!!!! Excelsior!

https://www.johnprinz.com/gamechecker

Link to comment
Share on other sites

I presume you need to choose Platforms.xml located in ..\LaunchBox\Data\

Takes quite a while, which is somewhat to be expected.  But after 20 minutes, it started reminding me of a song about a spinning wheel goin' round. So closed the page.

Would it be possible to do this on a platform-by-platform basis instead?  like selecting ..\LaunchBox\Data\Platforms\Arcade.xml

Link to comment
Share on other sites

Hey thanks for the feedback! I had an urge and just started coding with no plan in place, so it is a little rough 😬 The UI is still very BETA lol and I will clean it up. Until then let me clarify it a little. These are based on the base files/locations in Launchbox:

  • The Platforms.xml (Step 1) and Metadata.xml (Step 4) are from the ..\Metadata\ folder.
  • The platform XML (Step 3) is from your ..\Data\Platforms\ folder (should be based on your collections).
  • The Metadata.xml is BIG (370+MB) so depending on the computer, it might take awhile. I've run it on my i7 3xxx with 16gb Alienware laptop and it does take a few minutes.
    • I was testing with a "trimmed" version of the Metadata.xml file until I got the async code in to handle the larger file.
    • ONLY DO THIS IF YOU'RE FAMILIAR WITH XML AND TAKE A BACKUP OF YOUR LAUNCHBOX!!!! lol (Just had to FYI that).
    • So I made a copy of the Metadata.xml and stripped out the excess code so it only included 2 platforms. But you have to make sure the base structure of the XML is intact. Then use that file as your 'Metadata.xml'. You could in theory make a copy for each of your platforms to speed it up. But I do believe the Launchbox Metadata.xml file is updated often which will put your copies out of sync.

Hope that helps and thanks again! I'll pick away at it as I can 👍 Cheers!

image.thumb.png.69f6e05f3687bdf9ffe82c954e2618e5.png

image.thumb.png.e56893cae9af797300950d4cc8bd3248.png

Edited by AgentJohnnyP
Link to comment
Share on other sites

I see what's happening! I didn't see there is a Platforms.xml file in the ..\Data\ folder which causes the page to hang. I'll have to work a better validation in to make sure it get the right file. Make sure to use the Platforms.xml file in the ..\Metadata\ folder. 

Thanks again for the feedback! :D 

Edited by AgentJohnnyP
Link to comment
Share on other sites

1 hour ago, AgentJohnnyP said:

Make sure to use the Platforms.xml file in the ..\Metadata\ folder. 

I went back and forth about using that one, but it didn't make sense to me as this was to compare my collection (held in Data) against the database (held in Metadata).  I'm usually pretty good about following instructions. ;) 

So according to your screenshot, it looks like Step #2 takes care of my platform-by-platform question. :D  I'll try again tomorrow using the 'correct' file and report back.

Link to comment
Share on other sites

Awesome thanks! I just point to the Platforms.xml to populate the dropdown for the platform selection and use that to query against the larger Metadata.xml file (try to trim the process lol). I've updated the UI so it's a little clearer as to what files to use.

Cheers!

Link to comment
Share on other sites

10 hours ago, AgentJohnnyP said:

Make sure to use the Platforms.xml file in the ..\Metadata\ folder. 

Ya, that works much better. :D 

Since this is a web-based JavaScript app, I presume that we need to drop each individual file vs the script being able to "grab" files based on a relative path.  (This may be where re-learning C# & plugin creation skills could definitely help to 'trim the process'. lol)

My suggestions*:

Step #1:  Use \LaunchBox\Data\Platforms.xml.  From it, grab the users platforms' Name and also grab its ScrapeAs value (to use later).  Then use those Names to populate the dropdown box in step 2.  aka. Show only the platforms the user actually has.  (i.e. I might have simply "Famicom" and not "Nintendo Famicom Disk System")

Step #3:  Can Java set filters for the open file dialog?  If so, set the filter to the Name selected in step #2, .xml.  This way, people [that aren't stress testing the app] can't inadvertently choose the wrong platform_name.xml.  ;) 

Compare:  Use the ScrapeAs value from step #1 to grab the platform from Metadata.xml.   (ref: "Famicom")

Total missing count:  No cheating! lol  image.png.79d03ce4492edd487c6107894b764702.png

Maybe break it down.  Total LBDB games xxxx.  Your total yyyyy.  Then have the missing games be a count of the datagrid items.

Save results to a text file(?), Excel file(?) button?

 

*These are my thoughts only and may only be worth the 2 pennies you found on the ground or the piece of gum you stepped on. Do with 'em what you will. 🙃

Link to comment
Share on other sites

You read my mind for some of the enhancements I'm looking to do with it! And thanks, I was hoping someone with familiarity with the structure would give me some advice, appreciate it! I wanted to add additional filtering as well to weed out hacks/beta/etc.. from the list. And yeah, validation for the user platform xml to the platform selection was probably the next thing I was going to tackle. I'll be changing the code to verify against the other platform file (..\Data\) and will probably work it in then. 

Honestly, my boss has been wanted me to 'branch' out so I'll be digging into .net 6 this fall and will use the plugin as my learnding project lol I haven't touched .net since the ASP.NET 4.5 👴 But I was looking over the API docs and there's a lot of good stuff to use so excited to get in and make it happen!

Thanks again for the input!

  • Game On 1
Link to comment
Share on other sites

Thanks again for the feedback! I've worked some changes in to the page, probably about the best I can get with the XML files. I got the validation down pretty good so users shouldn't be able to proceed with the wrong info. I'll try and work some export options in at some point too, but I've already started down the C# path lol ... Gonna take a bit, but I'll get a plugin working which I suspect will be a lot better. Cheers!

Link to comment
Share on other sites

  • 6 months later...

It would be really cool to be able to view all the games from a chosen system in order of Star Ratings. I'm trying to get the best games for all my systems to discover and play but there's currently no way to get this information without downloading a complete romset.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...