Check out our Monthly Survey Page to see what our users are running.
We do often include affiliate links to earn us some pennies. See more here.
I was recently sent an interesting little script that will compare a downloaded list of your Steam games, with the Wine AppDB to show you a list of what you can expect to be able to play with Wine.

I'll be honest, the way to do it is currently a bit annoying. The developer of it did tell me that this project is a way for them to learn about web scraping and it's currently considered "alpha" quality. However, I tried it and it does actually work reasonably well.

You will need to go to Steam, go to your profile, then click the Games link on the right. When on the games page, make sure it's on the "All Games" tab and then download the page. Rename the html file to "MySteamGames.html" and stick in in the same folder as this script. Then simply run "python3 winesteamcompare.py" and it will print a list in terminal of your games that have a Gold or Platinum rating in Wine.

It will end up giving you a list like this (yes, I really do have a lot of games!):
QuoteYou have 1094 games
Aliens vs Predator ... Platinum
Aliens: Colonial Marines ... Gold
FEAR 2: Project Origin ... Platinum
Dead Space 2 ... Platinum
Call of Duty: Black Ops ... Platinum


Find the script on github here.

As always, I don't recommend buying recent games to play in Wine in case they get a port in future. However, it's still better to play in Wine on Linux, than on Windows. Someone using Wine could eventually be a full Linux user, so whatever helps people stay on Linux is great. Wine is always a controversial topic, but it is a fantastic tool. Article taken from GamingOnLinux.com.
Tags: Wine
9 Likes
About the author -
author picture
I am the owner of GamingOnLinux. After discovering Linux back in the days of Mandrake in 2003, I constantly came back to check on the progress of Linux until Ubuntu appeared on the scene and it helped me to really love it. You can reach me easily by emailing GamingOnLinux directly.
See more from me
The comments on this article are closed.
19 comments
Page: 1/2»
  Go to:

Liam Dawe Aug 2, 2017
Quoting: GuestNote: the project also includes some scripts for GOG:
Quotewinegogcompare.py uses the winehqextract script and the gogextract script to make a list of all gog games that can be played using wine (not just the ones you own)
While it does, I have not tested them and the developer who emailed me didn't say if they worked yet.
Trump Aug 2, 2017
That's pretty neat. and a good idea. esp if he can find a way to get accurate results quickly.
chrisq Aug 2, 2017
There's really no reason to make people go through that stuff to download the games web page.
Steam has an API that lets you just grab the whole list directly, just set the profile to public.


Last edited by chrisq on 2 August 2017 at 12:52 pm UTC
TheBard Aug 2, 2017
Petty nice :) Would have been a good idea to filter out linux native games.
metro2033fanboy Aug 2, 2017
Better an up to date list of games working greatly! I dont like to install anything but important!
Gnurfos Aug 2, 2017
Quoting: Guest2 problems with the Wine AppDB:
- a lot of results are old
- regressions

If the regressions are in Wine (as opposed to the game being updated and no longer working), then you can still get the best result by picking your Wine version (which is relatively easy for example using PlayOnLinux).
dpanter Aug 2, 2017
Debian Jessie, Python3 3.4.2
$ python3 winehqextract.py -p
  File "winehqextract.py", line 72
    getpluspost = {**getparams,**postparams}
                    ^
SyntaxError: invalid syntax


:S:
DrMcCoy Aug 2, 2017
QuoteIt will end up giving you a list like this (yes, I really do have a lot of games!):

QuoteYou have 1094 games
You are like a little baby, watch this:

QuoteYou have 1402 games
However, for me, with Python 3.4, the script itself fails:
  File "winehqextract.py", line 72
    getpluspost = {**getparams,**postparams}
                    ^
SyntaxError: invalid syntax


I'm a C/C++ programmer, the only contact with Python I have is a few IDAPython scripts or Ren'Py scripts, so I have no idea what's going on there.

EDIT: Seems like I've been ninja'd there. :P


Last edited by DrMcCoy on 2 August 2017 at 4:50 pm UTC
mraggi Aug 2, 2017
Hi everyone,

I'm the author of this little script. Thanks for all your comments. I've applied the patch Faun suggested so that it works in older versions of python.

I'm going to look into the steam api (I didn't know it existed!). The problem is that steam uses either your phone or a code they send you by email to authenticate, so I didn't know how to do that via script.

And finally, I'll also look into the os.system calls... but could you be a bit more specific about what can be improved?
Gnurfos Aug 2, 2017
Quoting: mraggiI'm going to look into the steam api (I didn't know it existed!). The problem is that steam uses either your phone or a code they send you by email to authenticate, so I didn't know how to do that via script.

You can require that the user set their profile to public, if you want to spare the pain of logging in.

Else I suggest you turn your script into a web page, where users can authenticate by themselves via Steam. Lots of sites do that, and as a user, I like this a lot more than running a script. But in addition to coding it, you have to host it somewhere.

I second what Faugn says about using proper modules rather than system calls. I would add that you should reserve main() for command line entry points only, and if a module calls something from another module, it should be a function with a descriptive name instead.
While you're here, please consider supporting GamingOnLinux on:

Reward Tiers: Patreon. Plain Donations: PayPal.

This ensures all of our main content remains totally free for everyone! Patreon supporters can also remove all adverts and sponsors! Supporting us helps bring good, fresh content. Without your continued support, we simply could not continue!

You can find even more ways to support us on this dedicated page any time. If you already are, thank you!
The comments on this article are closed.