Force API
Can't this be used without one? You can't do api keys unless you have a unlocked account
It can. I'm in the process of updating it to not require one.
OK, I'm running into a bit of trouble with running this without a key. Specifically, I have not been able to find a working method to get the achievement data without using an API that requires a Key.
Couple of questions:
- What is a locked/unlocked account?
- Would you be interested in an option to use this without a key, understanding that the achievement functionality would not be available?
OK, I'm running into a bit of trouble with running this without a key. Specifically, I have not been able to find a working method to get the achievement data without using an API that requires a Key.
Couple of questions:
- What is a locked/unlocked account?
- Would you be interested in an option to use this without a key, understanding that the achievement functionality would not be available?
What is a locked/unlocked account? Accounts that have spent some money, former one didn't needed API or any account at all and goldberg OG one works without API too but still needs account (that can be a limited, disposable acc)
Would you be interested in an option to use this without a key, understanding that the achievement functionality would not be available? The entire point of this is to get the achievements and overlay, if you just wanna make the game work you can just dump the .dll and call it a day, would be useless otherwise.
I'll see what I can find out, but the previous Goldberg GUI was using the API, but was using their own key, instead of requesting the user's Key.
The Goldberg fork has a cmdline tool to automatically generate this info as well and it requires a key to work well. It has an alternative method that isn't foolproof that searches multiple users accounts that are public and own a lot of games. This method can take a long time.
A possible alternative is to get the data from SteamDB, but they will ban your IP if they recognize that the app is scraping data. One way around this is using a tool like PlayWright, which will launch an actual browser window and automatically close it.
I've tested PlayWright with a headless option and SteamDB did temporarily ban the IP, but when I used it with a visible window it worked fine. I'll be testing soon to see if I can launch a window, but keep the window minimized, then close the window after pulling the data. This method should look seamless if it is doable.
I spent about 10 hours over the weekend trying different options and none worked so far. If you can point me to an open-source application that pulls full achievement data without using Steams API, I'd be grateful and would happily look through it to see what method they are using.
If I can't get it to work internally, I may just setup a repository to store a .db that contains all Steam Game info that I'd need. I could then setup an action to update it every day and this app would just download the updated file.
Parse the Steam Achievements page, https://steamcommunity.com/stats/2246340/achievements
Has Achievements Names, Descriptions and Images (hidden achievements won't have descriptions, but is a small price to pay).
Multiple languages can be checked as well, per example Polish, https://steamcommunity.com/stats/2246340/achievements?l=polish
using HtmlAgilityPack;
using System;
using System.Collections.Generic;
class Program
{
static void Main()
{
string filePath = "achievements.html";
var doc = new HtmlDocument();
doc.Load(filePath);
List<Achievement> achievements = new List<Achievement>();
foreach (var node in doc.DocumentNode.SelectNodes("//div[contains(@class, 'achieveRow')]"))
{
var nameNode = node.SelectSingleNode(".//h3");
string name = nameNode?.InnerText.Trim();
var descNode = node.SelectSingleNode(".//div[@class='achieveTxt']");
string description = descNode?.InnerText.Trim();
var imgNode = node.SelectSingleNode(".//img");
string imgUrl = imgNode?.GetAttributeValue("src", "").Trim();
if (!string.IsNullOrEmpty(name) && !string.IsNullOrEmpty(description) && !string.IsNullOrEmpty(imgUrl))
{
achievements.Add(new Achievement
{
Name = name,
Description = description,
ImageUrl = imgUrl
});
}
}
}
}
class Achievement
{
public string Name { get; set; }
public string Description { get; set; }
public string ImageUrl { get; set; }
}
This is just a basic example to get started (not tested at all and needs be refactored for use with GSE), and is why I mentioned HtmlAgilityPack before.
Parse the Steam Achievements page, https://steamcommunity.com/stats/2246340/achievements
Has Achievements Names, Descriptions and Images (hidden achievements won't have descriptions, but is a small price to pay).
Multiple languages can be checked as well, per example Polish, https://steamcommunity.com/stats/2246340/achievements?l=polish
This is just a basic example to get started (not tested at all and needs be refactored for use with GSE), and is why I mentioned HtmlAgilityPack before.
I looked into this a couple of days ago, but it appears to be missing the API Name for achievements. For example, the game Antonblast (1887400) has an achievement called "Nina Sucks". The API name for that achievement is ACH_NINA. This shows up in SteamDB and also using the Steam API, but not on the game's achievements page on Steam. I believe the API Name is necessary for GSE to work.
Parse the Steam Achievements page, https://steamcommunity.com/stats/2246340/achievements Has Achievements Names, Descriptions and Images (hidden achievements won't have descriptions, but is a small price to pay). Multiple languages can be checked as well, per example Polish, https://steamcommunity.com/stats/2246340/achievements?l=polish This is just a basic example to get started (not tested at all and needs be refactored for use with GSE), and is why I mentioned HtmlAgilityPack before.
I looked into this a couple of days ago, but it appears to be missing the API Name for achievements. For example, the game Antonblast (1887400) has an achievement called "Nina Sucks". The API name for that achievement is ACH_NINA. This shows up in SteamDB and also using the Steam API, but not on the game's achievements page on Steam. I believe the API Name is necessary for GSE to work.
The IDs are here.
They in the same order as the other page.
Parse the Steam Achievements page, steamcommunity.com/stats/2246340/achievements Has Achievements Names, Descriptions and Images (hidden achievements won't have descriptions, but is a small price to pay). Multiple languages can be checked as well, per example Polish, steamcommunity.com/stats/2246340/achievements?l=polish This is just a basic example to get started (not tested at all and needs be refactored for use with GSE), and is why I mentioned HtmlAgilityPack before.
I looked into this a couple of days ago, but it appears to be missing the API Name for achievements. For example, the game Antonblast (1887400) has an achievement called "Nina Sucks". The API name for that achievement is ACH_NINA. This shows up in SteamDB and also using the Steam API, but not on the game's achievements page on Steam. I believe the API Name is necessary for GSE to work.
The IDs are here.
They in the same order as the other page.
Thanks, so far so good. I should have an update that doesn't require API Key soon.
I've made the API Key optional. I've made quite a few other changes as well, such as storing user config in a single settings file. Hopefully have a new version released this week.
Any news on the update?
Any updates?
I've moved over to using this one. https://github.com/SteamAutoCracks/Steam-auto-crack