Massive Steam games installer generation

The big idea

There are a ton of Steam games available for Linux that are not listed in the registry under Lutris.net. Just about every one of these Steam games can install by simply having the appid. The install scripts themselves consist of the following:

YAML

game:
  appid: 214490

JSON

{
  "game": {
    "appid": 214490
  }
}

My suggestion is to scrape together a list of all Linux supported games from Steam and generating install scripts for all of them. If there is some sort of filter you would like to place on them, that’s also possible. The appdetails API returns many values on games from Steam. An example against DotA 2:

{"570": {
   "success": true,
   "data":    {
      "type": "game",
      "name": "Dota 2",
      "steam_appid": 570,
      "required_age": 0,
      "is_free": true,
      "detailed_description": "<h1>The International Dota 2 Championships<\/h1><p><a href=\"https://steamcommunity.com/linkfilter/?url=http://www.dota2.com/international/live/\" target=\"_blank\" rel=\"noopener\"  ><img src=\"http://cdn.edgecast.steamstatic.com/steam/apps/570/extras/ti7_page_banner_updated.jpg?t=1505489794\"><\/a><\/p><br><h1>About the Game<\/h1><strong>The most-played game on Steam.<\/strong><br>Every day, millions of players worldwide enter battle as one of over a hundred Dota heroes. And no matter if it's their 10th hour of play or 1,000th, there's always something new to discover. With regular updates that ensure a constant evolution of gameplay, features, and heroes, Dota 2 has truly taken on a life of its own.<br><br><strong>One Battlefield. Infinite Possibilities.<\/strong><br>When it comes to diversity of heroes, abilities, and powerful items, Dota boasts an endless array—no two games are the same. Any hero can fill multiple roles, and there's an abundance of items to help meet the needs of each game. Dota doesn't provide limitations on how to play, it empowers you to express your own style.<br><br><strong>All heroes are free.<\/strong><br>Competitive balance is Dota's crown jewel, and to ensure everyone is playing on an even field, the core content of the game—like the vast pool of heroes—is available to all players. Fans can collect cosmetics for heroes and fun add-ons for the world they inhabit, but everything you need to play is already included before you join your first match.<br><br><strong>Bring your friends and party up.<\/strong><br>Dota is deep, and constantly evolving, but it's never too late to join. <br>Learn the ropes playing co-op vs. bots. Sharpen your skills in the hero demo mode. Jump into the behavior- and skill-based matchmaking system that ensures you'll <br>be matched with the right players each game.",
      "about_the_game": "<strong>The most-played game on Steam.<\/strong><br>Every day, millions of players worldwide enter battle as one of over a hundred Dota heroes. And no matter if it's their 10th hour of play or 1,000th, there's always something new to discover. With regular updates that ensure a constant evolution of gameplay, features, and heroes, Dota 2 has truly taken on a life of its own.<br><br><strong>One Battlefield. Infinite Possibilities.<\/strong><br>When it comes to diversity of heroes, abilities, and powerful items, Dota boasts an endless array—no two games are the same. Any hero can fill multiple roles, and there's an abundance of items to help meet the needs of each game. Dota doesn't provide limitations on how to play, it empowers you to express your own style.<br><br><strong>All heroes are free.<\/strong><br>Competitive balance is Dota's crown jewel, and to ensure everyone is playing on an even field, the core content of the game—like the vast pool of heroes—is available to all players. Fans can collect cosmetics for heroes and fun add-ons for the world they inhabit, but everything you need to play is already included before you join your first match.<br><br><strong>Bring your friends and party up.<\/strong><br>Dota is deep, and constantly evolving, but it's never too late to join. <br>Learn the ropes playing co-op vs. bots. Sharpen your skills in the hero demo mode. Jump into the behavior- and skill-based matchmaking system that ensures you'll <br>be matched with the right players each game.",
      "short_description": "Every day, millions of players worldwide enter battle as one of over a hundred Dota heroes. And no matter if it's their 10th hour of play or 1,000th, there's always something new to discover. With regular updates that ensure a constant evolution of gameplay, features, and heroes, Dota 2 has truly taken on a life of its own.",
      "supported_languages": "Bulgarian, Czech, Danish, Dutch, English<strong>*<\/strong>, Finnish, French, German, Greek, Hungarian, Italian, Japanese, Korean<strong>*<\/strong>, Norwegian, Polish, Portuguese, Portuguese-Brazil, Romanian, Russian, Simplified Chinese<strong>*<\/strong>, Spanish, Swedish, Thai, Traditional Chinese, Turkish, Ukrainian<br><strong>*<\/strong>languages with full audio support",
      "reviews": "“A modern multiplayer masterpiece.”<br>9.5/10 – <a href=\"https://www.destructoid.com/review-dota-2-258506.phtml\" target=\"_blank\" rel=\"noreferrer\"  >Destructoid<\/a><br><br>“Once you start to learn its secrets, there’s a wild and exciting variety of play here that’s unmatched, even by its peers.”<br>9.4/10 – <a href=\"http://www.ign.com/articles/2013/07/24/dota-2-review\" target=\"_blank\" rel=\"noreferrer\"  >IGN<\/a><br><br>“Dota 2 is possibly the only competitive free-to-play game that is totally uncompromised by its business model.”<br>90/100 – <a href=\"http://www.pcgamer.com/dota-2-review-2/\" target=\"_blank\" rel=\"noreferrer\"  >PC Gamer<\/a><br>",
      "header_image": "http://cdn.akamai.steamstatic.com/steam/apps/570/header.jpg?t=1505489794",
      "website": "http://www.dota2.com/",
      "pc_requirements": {"minimum": "<strong>Minimum:<\/strong><br><ul class=\"bb_ul\"><li><strong>OS:<\/strong> Windows 7 or newer<br><\/li><li><strong>Processor:<\/strong> Dual core from Intel or AMD at 2.8 GHz<br><\/li><li><strong>Memory:<\/strong> 4 GB RAM<br><\/li><li><strong>Graphics:<\/strong> nVidia GeForce 8600/9600GT, ATI/AMD Radeon HD2600/3600<br><\/li><li><strong>DirectX:<\/strong> Version 9.0c<br><\/li><li><strong>Network:<\/strong> Broadband Internet connection<br><\/li><li><strong>Storage:<\/strong> 15 GB available space<br><\/li><li><strong>Sound Card:<\/strong> DirectX Compatible<\/li><\/ul>"},
      "mac_requirements": {"minimum": "<strong>Minimum:<\/strong><br><ul class=\"bb_ul\"><li><strong>OS:<\/strong> OS X Mavericks 10.9 or newer<br><\/li><li><strong>Processor:<\/strong> Dual core from Intel<br><\/li><li><strong>Memory:<\/strong> 4 GB RAM<br><\/li><li><strong>Graphics:<\/strong> nVidia 320M or higher, or Radeon HD 2400 or higher, or Intel HD 3000 or higher<br><\/li><li><strong>Network:<\/strong> Broadband Internet connection<br><\/li><li><strong>Storage:<\/strong> 15 GB available space<\/li><\/ul>"},
      "linux_requirements": {"minimum": "<strong>Minimum:<\/strong><br><ul class=\"bb_ul\"><li><strong>OS:<\/strong> Ubuntu 12.04 or newer<br><\/li><li><strong>Processor:<\/strong> Dual core from Intel or AMD at 2.8 GHz<br><\/li><li><strong>Memory:<\/strong> 4 GB RAM<br><\/li><li><strong>Graphics:<\/strong> nVidia Geforce 8600/9600GT (Driver v331), AMD HD 2xxx-4xxx (Driver mesa 10.5.9), AMD HD 5xxx+ (Driver mesa 10.5.9 or Catalyst 15.7), Intel HD 3000 (Driver mesa 10.6)<br><\/li><li><strong>Network:<\/strong> Broadband Internet connection<br><\/li><li><strong>Storage:<\/strong> 15 GB available space<br><\/li><li><strong>Sound Card:<\/strong> OpenAL Compatible Sound Card<\/li><\/ul>"},
      "developers": ["Valve"],
      "publishers": ["Valve"],
      "package_groups": [],
      "platforms":       {
         "windows": true,
         "mac": true,
         "linux": true
      },
      "metacritic":       {
         "score": 90,
         "url": "http://www.metacritic.com/game/pc/dota-2?ftag=MCD-06-10aaa1f"
      },
      "categories":       [
                  {
            "id": 1,
            "description": "Multi-player"
         },
                  {
            "id": 9,
            "description": "Co-op"
         },
                  {
            "id": 29,
            "description": "Steam Trading Cards"
         },
                  {
            "id": 30,
            "description": "Steam Workshop"
         },
                  {
            "id": 40,
            "description": "SteamVR Collectibles"
         },
                  {
            "id": 35,
            "description": "In-App Purchases"
         },
                  {
            "id": 8,
            "description": "Valve Anti-Cheat enabled"
         }
      ],
      "genres":       [
                  {
            "id": "1",
            "description": "Action"
         },
                  {
            "id": "37",
            "description": "Free to Play"
         },
                  {
            "id": "2",
            "description": "Strategy"
         }
      ],
      "screenshots":       [
                  {
            "id": 0,
            "path_thumbnail": "http://cdn.akamai.steamstatic.com/steam/apps/570/ss_86d675fdc73ba10462abb8f5ece7791c5047072c.600x338.jpg?t=1505489794",
            "path_full": "http://cdn.akamai.steamstatic.com/steam/apps/570/ss_86d675fdc73ba10462abb8f5ece7791c5047072c.1920x1080.jpg?t=1505489794"
         },
                  {
            "id": 1,
            "path_thumbnail": "http://cdn.akamai.steamstatic.com/steam/apps/570/ss_ad8eee787704745ccdecdfde3a5cd2733704898d.600x338.jpg?t=1505489794",
            "path_full": "http://cdn.akamai.steamstatic.com/steam/apps/570/ss_ad8eee787704745ccdecdfde3a5cd2733704898d.1920x1080.jpg?t=1505489794"
         },
                  {
            "id": 2,
            "path_thumbnail": "http://cdn.akamai.steamstatic.com/steam/apps/570/ss_7ab506679d42bfc0c0e40639887176494e0466d9.600x338.jpg?t=1505489794",
            "path_full": "http://cdn.akamai.steamstatic.com/steam/apps/570/ss_7ab506679d42bfc0c0e40639887176494e0466d9.1920x1080.jpg?t=1505489794"
         },
                  {
            "id": 3,
            "path_thumbnail": "http://cdn.akamai.steamstatic.com/steam/apps/570/ss_c9118375a2400278590f29a3537769c986ef6e39.600x338.jpg?t=1505489794",
            "path_full": "http://cdn.akamai.steamstatic.com/steam/apps/570/ss_c9118375a2400278590f29a3537769c986ef6e39.1920x1080.jpg?t=1505489794"
         },
                  {
            "id": 4,
            "path_thumbnail": "http://cdn.akamai.steamstatic.com/steam/apps/570/ss_f9ebafedaf2d5cfb80ef1f74baa18eb08cad6494.600x338.jpg?t=1505489794",
            "path_full": "http://cdn.akamai.steamstatic.com/steam/apps/570/ss_f9ebafedaf2d5cfb80ef1f74baa18eb08cad6494.1920x1080.jpg?t=1505489794"
         },
                  {
            "id": 5,
            "path_thumbnail": "http://cdn.akamai.steamstatic.com/steam/apps/570/ss_27b6345f22243bd6b885cc64c5cda74e4bd9c3e8.600x338.jpg?t=1505489794",
            "path_full": "http://cdn.akamai.steamstatic.com/steam/apps/570/ss_27b6345f22243bd6b885cc64c5cda74e4bd9c3e8.1920x1080.jpg?t=1505489794"
         },
                  {
            "id": 6,
            "path_thumbnail": "http://cdn.akamai.steamstatic.com/steam/apps/570/ss_b33a65678dc71cc98df4890e22a89601ee56a918.600x338.jpg?t=1505489794",
            "path_full": "http://cdn.akamai.steamstatic.com/steam/apps/570/ss_b33a65678dc71cc98df4890e22a89601ee56a918.1920x1080.jpg?t=1505489794"
         },
                  {
            "id": 7,
            "path_thumbnail": "http://cdn.akamai.steamstatic.com/steam/apps/570/ss_d0f973ce376ca5b6c08e081cb035e86ced105fa9.600x338.jpg?t=1505489794",
            "path_full": "http://cdn.akamai.steamstatic.com/steam/apps/570/ss_d0f973ce376ca5b6c08e081cb035e86ced105fa9.1920x1080.jpg?t=1505489794"
         },
                  {
            "id": 8,
            "path_thumbnail": "http://cdn.akamai.steamstatic.com/steam/apps/570/ss_1f3b5f5ccf8b159294914c3fe028128a787304b6.600x338.jpg?t=1505489794",
            "path_full": "http://cdn.akamai.steamstatic.com/steam/apps/570/ss_1f3b5f5ccf8b159294914c3fe028128a787304b6.1920x1080.jpg?t=1505489794"
         },
                  {
            "id": 9,
            "path_thumbnail": "http://cdn.akamai.steamstatic.com/steam/apps/570/ss_e0a92f15a6631a8186df79182d0fe28b5e37d8cb.600x338.jpg?t=1505489794",
            "path_full": "http://cdn.akamai.steamstatic.com/steam/apps/570/ss_e0a92f15a6631a8186df79182d0fe28b5e37d8cb.1920x1080.jpg?t=1505489794"
         }
      ],
      "movies":       [
                  {
            "id": 256692021,
            "name": "Dota 2 - Join the Battle",
            "thumbnail": "http://cdn.akamai.steamstatic.com/steam/apps/256692021/movie.293x165.jpg?t=1501892790",
            "webm":             {
               "480": "http://cdn.akamai.steamstatic.com/steam/apps/256692021/movie480.webm?t=1501892790",
               "max": "http://cdn.akamai.steamstatic.com/steam/apps/256692021/movie_max.webm?t=1501892790"
            },
            "highlight": true
         },
                  {
            "id": 256692017,
            "name": "Dota 2 - Sizzle Reel",
            "thumbnail": "http://cdn.akamai.steamstatic.com/steam/apps/256692017/movie.293x165.jpg?t=1501892798",
            "webm":             {
               "480": "http://cdn.akamai.steamstatic.com/steam/apps/256692017/movie480.webm?t=1501892798",
               "max": "http://cdn.akamai.steamstatic.com/steam/apps/256692017/movie_max.webm?t=1501892798"
            },
            "highlight": true
         },
                  {
            "id": 2028243,
            "name": "Dota 2 - The Greeviling",
            "thumbnail": "http://cdn.akamai.steamstatic.com/steam/apps/2028243/movie.293x165.jpg?t=1447357208",
            "webm":             {
               "480": "http://cdn.akamai.steamstatic.com/steam/apps/2028243/movie480.webm?t=1447357208",
               "max": "http://cdn.akamai.steamstatic.com/steam/apps/2028243/movie_max.webm?t=1447357208"
            },
            "highlight": false
         },
                  {
            "id": 81026,
            "name": "Dota 2 Gamescom Trailer",
            "thumbnail": "http://cdn.akamai.steamstatic.com/steam/apps/81026/movie.293x165.jpg?t=1501892804",
            "webm":             {
               "480": "http://cdn.akamai.steamstatic.com/steam/apps/81026/movie480.webm?t=1501892804",
               "max": "http://cdn.akamai.steamstatic.com/steam/apps/81026/movie_max.webm?t=1501892804"
            },
            "highlight": false
         },
                  {
            "id": 2040250,
            "name": "Dota 2 Reborn - Custom Games Are Here",
            "thumbnail": "http://cdn.akamai.steamstatic.com/steam/apps/2040250/movie.293x165.jpg?t=1447376742",
            "webm":             {
               "480": "http://cdn.akamai.steamstatic.com/steam/apps/2040250/movie480.webm?t=1447376742",
               "max": "http://cdn.akamai.steamstatic.com/steam/apps/2040250/movie_max.webm?t=1447376742"
            },
            "highlight": false
         }
      ],
      "recommendations": {"total": 791212},
      "release_date":       {
         "coming_soon": false,
         "date": "Jul 9, 2013"
      },
      "support_info":       {
         "url": "http://dev.dota2.com/",
         "email": ""
      },
      "background": "http://cdn.akamai.steamstatic.com/steam/apps/570/page_bg_generated_v6b.jpg?t=1505489794"
   }
}}

There’s also an API available for querying user reviews, so if we wanted to filter based on games that users liked (so we’re not filling up Lutris with really really bad games just for the sake of adding games), then we could use that. Another example from DotA 2:

{
   "success": 1,
   "query_summary":    {
      "num_reviews": 1,
      "review_score": 8,
      "review_score_desc": "Very Positive",
      "total_positive": 5878,
      "total_negative": 798,
      "total_reviews": 6676
   }
}

This could be an easy way for us to generate a ton of games for the Lutris repository that are higher quality games worth trying out. This would also solve some user issues where the data for the game is pulled from the manifest and not linked to any game from Lutris.net, which leaves no banner or icon and sometimes bad naming schemes (some games I have are listed as appid_XXXXXX, for example, and hinders using Lutris as my main front-end).

I’m not suggesting that @strycore do this either, mainly just looking for a green light on the idea, since I or anyone else could do this (already scraping some with a Python script as a POC). What is the community’s thoughts on this?