citrinate / freepackages Goto Github PK
View Code? Open in Web Editor NEWAn ASF plugin for finding and redeeming free Steam games
License: Apache License 2.0
An ASF plugin for finding and redeeming free Steam games
License: Apache License 2.0
I see there is commented code about playtests.
FreePackages/FreePackages/Handlers/PackageFilter.cs
Lines 79 to 88 in 8f8f914
With the current plugin, what happens to playtests? Are they ignored? Or do they get added to the account?
Is there a difference between playtests which can be instantly added by the user, and playtests which require the user to make a request and wait for a validation from the dev?
I don't see playtests in the category setting. Maybe it would make sense to have a configuration setting for them.
Hello! I noticed that the game Content Warning came out today, along with a No Cost promotional package available for 24 hours. I assumed that FreePackages would pick this up, but it didn't. These are my settings:
"EnableFreePackages": true,
"FreePackagesFilters": [
{
"Types": [
"DLC"
]
},
{
"Types": [
"Game"
],
"Languages": [
"english"
],
"MinReviewScore": 6,
"IgnoreFreeWeekends": true,
"NoCostOnly": true
}
]
The only part of the config that might be ignoring the game would be the MinReviewScore
, as at the time of processing, my guess is that there were zero reviews.
My feature request is for there to be some sort of cache that holds onto free packages that don't have the required review score but otherwise match on all the other settings, so that perhaps in a couple of hours it'll have the target review score and can be added. In this case, it's at about 91%, so well over the threshold for this config. However, since it was checked right when it was made available with no reviews, it won't be added (unless another package change happens between now and the 24 hours later when it becomes not free).
Also, I am assuming that this is the reason it wasn't added. If I missed something or configured something wrong please let me know. My guess is that if this was a highly-rated existing game that went on sale for 24 hours it would have been picked up just fine. But it's this edge case where a brand new game doesn't have enough reviews to get picked up.
are "NoCostOnly" games those that are "Free To Keep" , so if picked up in time , its a game that usually cost money but we can keep it for free.
For info, the rate-limit may have been changed from 50 to 30 free packages per hour on Valve's side.
I see that some IDs can appear in Bot_FreePackages.db
. For instance:
{
"Activations": [
"2023-10-04T10:06:02.5033286+02:00",
"2023-10-04T10:02:40.8233594+02:00"
],
"Packages": [
{
"Type": 0,
"ID": 2630450,
"StartTime": null
},
{
"Type": 0,
"ID": 2453970,
"StartTime": null
}
]
}
I don't know what "Type" is, but I can see that "ID" is the appID here:
The Great Smog Demo
No Stone Unturned Prologue
Can this ASF plugin be used to queue subIDs manually copied from the source page of SteamDB's /freepackages/
? This would allow the plugin to manage the rate-limit, so this could be handy to activate many packages from before the first run of the plugin.
I understand this is not the point of the plugin, but I wonder if you think this would be a bad idea to manually edit the JSON file with many IDs. If you believe this is possible, would you mind clarifying if changing the Type
would allow to submit a subID instead of an appID as ID
.
Edit: I suspect the Type is used to distinguish between games, demos, etc.
FreePackages/FreePackages/Handlers/PackageFilter.cs
Lines 79 to 83 in 8f8f914
Is it possible to ignore FreePlayTogether packages? It seems like this is only used for friend pass or trial(?) packages currently.
https://steamdb.info/search/?a=sub_keynames&keyname=223&operator=3&keyvalue=&all=1
I've managed to get all 3 of those now. It's annoying because in the Steam library they don't mention "Friend's Pass" or "Trial" in their names, so they look like the full games when they aren't. Wanted to see if I could avoid getting new friend passes in the future.
Thanks!
It seems that the soundtrack of Counter-Strike 2 evaded the detection.
Maybe I should be more patient, but it seems not to be picked even though I only skip demos.
In IgnoredTypes
, a few types which are listed on SteamDB are missing. I don't know if this matters.
In the README, there are 6 types:
The available types for filtering are:
Game
,Application
,Tool
,Demo
,DLC
,Music
In SteamDB's instant search, there are 4 additional types:
Video
,Series
,Unknown
andHardware
.
This means that if one wants to focus on the type Game
, then they should ignore the other 9 types:
"IgnoredTypes": [
"Application",
"Demo",
"DLC",
"Hardware",
"Music",
"Series",
"Tool",
"Unknown",
"Video"
],
I tried latest FreePackages 1.5.0.1, on latest ASF 6.0.4.4 on Linux. With around 100 accounts on the default settings (only thing changed is adding EnableFreePackages:true to every bot config), it starts to grow to using over 8GB RAM (in normal case, ASF uses less than 400MB for all these accounts), until oom_reaper hopefully kills ASF.
I'm not exactly sure how to debug this, as I don't know too much about ASF's plugin architecture and such... and of course, so many accounts is unsupported. But it feels to me like it's memory leaking in some kind of way? Do you have any ideas/suggestions on how I could help you debug this? Thank you.
The documentation for the rating has a minor error.
Review Score | Description | # of Reviews | % of Positive Reviews |
---|---|---|---|
1 | Overwhelmingly Negative | 500+ | 0%-19% |
2 | Very Negative | 50-499 | 0%-19% |
3 | Negative | 1-49 | 0%-19% |
4 | Mostly Negative | 1-49 | 20%-39% |
5 | Mixed | 1-49 | 40%-69% |
6 | Mostly Positive | 1-49 | 70%-79% |
7 | Positive | 1-49 | 80%-100% |
8 | Very Positive | 50-499 | 80%-100% |
9 | Overwhelmingly Positive | 500+ | 80%-100% |
Indeed, check these two games from the latest Humble Bundle:
Recent Reviews: Very Positive (59 reviews) - 91% score
All Reviews: Very Positive (513 reviews) - 85% score
Recent Reviews: Overwhelmingly Positive (130 reviews) - 97% score
All Reviews: Overwhelmingly Positive (872 reviews) - 99% score
Both games have more than 500 reviews, but only one of them has the "Overwhelmingly Positive" rating.
Since PICs doesn't show changes that happened before a certain time, the plugin may not discover all previously released free packages.
Alright, this makes sense. The plugin listens for changes, it won't check what happens a long time before it was first used.
It's also possible to miss newly released free packages if your bot is logged out for extended periods of time.
What do you mean? Would you mind clarifying this sentence?
Is it about free packages which would become unavailable before the bot logs in? For instance, demos in Steam festivals?
Other than that, the plugin should be able to retrieve all of the free packages since the last Changenumber
, and queue them appropriately to deal with the rate-limit. There is no reason to miss a free package if it is still available, right?
2023-11-18 23:27:03|dotnet-5756|INFO|ASF|InitCore() ArchiSteamFarm V5.5.0.0 (generic/98d541a0-893c-4ebb-91b8-45e2b65a4245 | .NET 8.0.0; win-x64; Microsoft Windows 10.0.19045)
2023-11-18 23:27:04|dotnet-5756|INFO|ASF|InitPlugins() Chargement FreePackages V1.2.0.0...
2023-11-18 23:27:07|dotnet-5756|ERROR|ASF|OnBotLoggedOn() System.MissingMethodException: Method not found: 'System.Threading.Tasks.Task`1<ArchiSteamFarm.Web.Responses.ObjectResponse`1<!!0>> ArchiSteamFarm.Steam.Integration.ArchiWebHandler.UrlGetToJsonObjectWithSession(System.Uri, System.Collections.Generic.IReadOnlyCollection`1<System.Collections.Generic.KeyValuePair`2<System.String,System.String>>, System.Uri, ERequestOptions, Boolean, Byte, Int32, Boolean)'.
at FreePackages.WebRequest.GetUserData(Bot bot)
at System.Runtime.CompilerServices.AsyncMethodBuilderCore.Start[TStateMachine](TStateMachine& stateMachine)
at FreePackages.WebRequest.GetUserData(Bot bot)
at FreePackages.PackageHandler.FetchUserData()
at FreePackages.PackageHandler.OnBotLoggedOn(Bot bot)
at FreePackages.FreePackages.OnBotLoggedOn(Bot bot)
at ArchiSteamFarm.Core.Utilities.InParallel(IEnumerable`1 tasks)
at ArchiSteamFarm.Plugins.PluginsCore.OnBotLoggedOn(Bot bot)
References:
queuestatus
, qstatus
, qsa
are unknown commands.
ASF 6.0.0.3
FreePackages 1.4.2
You allow to use package filters, which can be handy, e.g. if someone is only interested in F2P games which support Steam Trading Cards. However, I would like to know if package filters impact performance.
Does this lead to more requests being made for instance? In terms of web requests, is the most light-weight method to have no configuration setting except "EnableFreePackages": true,
. Or is all the package information fetched anyway in the first place?
It gives "Failed to connect to ASF. Please click on "Settings" and verify your server and port."
So pretty much getting the below error every 15 minutes it looks like going by ASF logs date modified info.. Seems to be something to do with a regex match or something in this plugin..
2024-05-07 06:47:22|ArchiSteamFarm-18|INFO|ASF|InitCore() ArchiSteamFarm V6.0.3.0 (linux-x64/9a807186076740deb0212451941ca9ef | .NET 8.0.4; linux-x64; Debian GNU/Linux 12 (bookworm)) in [/app]
2024-05-07 06:47:22|ArchiSteamFarm-18|INFO|ASF|InitCore() Copyright © 2015-2024 JustArchiNET
2024-05-07 06:47:22|ArchiSteamFarm-18|WARN|ASF|InitGlobalConfigAndLanguage() config/ASF.json config file will be migrated to the latest syntax...
2024-05-07 06:47:22|ArchiSteamFarm-18|INFO|ASF|InitGlobalConfigAndLanguage() Done!
2024-05-07 06:47:23|ArchiSteamFarm-18|INFO|ASF|InitPlugins() Initializing Plugins...
2024-05-07 06:47:23|ArchiSteamFarm-18|INFO|ASF|InitPlugins() Loading ItemsMatcherPlugin V6.0.3.0...
2024-05-07 06:47:23|ArchiSteamFarm-18|INFO|ASF|InitPlugins() ItemsMatcherPlugin has been loaded successfully!
2024-05-07 06:47:23|ArchiSteamFarm-18|INFO|ASF|InitPlugins() Loading SteamTokenDumperPlugin V6.0.3.0...
2024-05-07 06:47:23|ArchiSteamFarm-18|INFO|ASF|InitPlugins() SteamTokenDumperPlugin has been loaded successfully!
2024-05-07 06:47:23|ArchiSteamFarm-18|INFO|ASF|InitPlugins() Loading MobileAuthenticatorPlugin V6.0.3.0...
2024-05-07 06:47:23|ArchiSteamFarm-18|INFO|ASF|InitPlugins() MobileAuthenticatorPlugin has been loaded successfully!
2024-05-07 06:47:23|ArchiSteamFarm-18|INFO|ASF|InitPlugins() Loading AutoClaimStickers V1.0.2.1...
2024-05-07 06:47:23|ArchiSteamFarm-18|INFO|ASF|InitPlugins() AutoClaimStickers has been loaded successfully!
2024-05-07 06:47:23|ArchiSteamFarm-18|INFO|ASF|InitPlugins() Loading ASFEnhance V2.1.4.0...
2024-05-07 06:47:23|ArchiSteamFarm-18|INFO|ASF|InitPlugins() ASFEnhance has been loaded successfully!
2024-05-07 06:47:23|ArchiSteamFarm-18|INFO|ASF|InitPlugins() Loading ASFFreeGamesPlugin V1.5.1.0...
2024-05-07 06:47:23|ArchiSteamFarm-18|INFO|ASF|OnLoaded() Loaded ASFFreeGamesPlugin
2024-05-07 06:47:23|ArchiSteamFarm-18|INFO|ASF|InitPlugins() ASFFreeGamesPlugin has been loaded successfully!
2024-05-07 06:47:23|ArchiSteamFarm-18|INFO|ASF|InitPlugins() Loading FreePackages V1.4.5.0...
2024-05-07 06:47:23|ArchiSteamFarm-18|INFO|ASF|OnLoaded() Free Packages ASF Plugin by Citrinate
2024-05-07 06:47:23|ArchiSteamFarm-18|INFO|ASF|InitPlugins() FreePackages has been loaded successfully!
2024-05-07 06:47:23|ArchiSteamFarm-18|INFO|ASF|InitPlugins() You've loaded one or multiple custom plugins into ASF. Since we're unable to offer support for modded setups, please contact the appropriate developers of the plugins that you decided to use in case of any issues.
2024-05-07 06:47:23|ArchiSteamFarm-18|INFO|ASF|InitPlugins() AutoClaimStickers (AutoClaimStickers) plugin has been disabled from automatic updates, despite supporting such feature.
2024-05-07 06:47:23|ArchiSteamFarm-18|INFO|ASF|InitPlugins() ASFEnhance (ASFEnhance) plugin has been disabled from automatic updates, despite supporting such feature.
2024-05-07 06:47:23|ArchiSteamFarm-18|INFO|ASF|InitPlugins() FreePackages (FreePackages) plugin has been disabled from automatic updates, despite supporting such feature.
2024-05-07 06:47:23|ArchiSteamFarm-18|INFO|ASF|UpdateAndRestart() ASF will automatically check for new versions every 12 hours.
2024-05-07 06:47:23|ArchiSteamFarm-18|INFO|ASF|UpdateASF() Checking for new version...
2024-05-07 06:47:24|ArchiSteamFarm-18|INFO|ASF|UpdateASF() Local version: 6.0.3.0 | Remote version: 6.0.3.0
2024-05-07 06:47:24|ArchiSteamFarm-18|INFO|ASF|OnASFInit()
==========================================================================
█████╗ ███████╗███████╗███████╗███╗ ██╗██╗ ██╗ █████╗ ███╗ ██╗ ██████╗███████╗
██╔══██╗██╔════╝██╔════╝██╔════╝████╗ ██║██║ ██║██╔══██╗████╗ ██║██╔════╝██╔════╝
███████║███████╗█████╗ █████╗ ██╔██╗ ██║███████║███████║██╔██╗ ██║██║ █████╗
██╔══██║╚════██║██╔══╝ ██╔══╝ ██║╚██╗██║██╔══██║██╔══██║██║╚██╗██║██║ ██╔══╝
██║ ██║███████║██║ ███████╗██║ ╚████║██║ ██║██║ ██║██║ ╚████║╚██████╗███████╗
╚═╝ ╚═╝╚══════╝╚═╝ ╚══════╝╚═╝ ╚═══╝╚═╝ ╚═╝╚═╝ ╚═╝╚═╝ ╚═══╝ ╚═════╝╚══════╝
==========================================================================
ASFEnhance Version 2.1.4.0
Developed by Chr_, email [email protected]
Donate: https://afdian.net/@chr233
==========================================================================
Submodule not loaded
==========================================================================
Check for plugins to update using "PLUGINVERSION [插件名]/ "PV [插件名]
Automatically update the specified plugin with "PLUINUPDATE [插件名]" / "PUINUPDATE [插件名]
不指定插件名时, 可为所有支持的插件检查更新 / 安装更新
==========================================================================
2024-05-07 06:47:24|ArchiSteamFarm-18|INFO|ASF|Load() Loading STD global cache...
2024-05-07 06:47:25|ArchiSteamFarm-18|INFO|ASF|Load() Validating STD global cache integrity...
2024-05-07 06:47:25|ArchiSteamFarm-18|INFO|ASF|OnASFInit() SteamTokenDumperPlugin has been initialized successfully, thank you in advance for your help. The first submission will happen in approximately 13 minutes from now.
2024-05-07 06:47:25|ArchiSteamFarm-18|INFO|ASF|Start() Starting IPC server...
2024-05-07 06:47:26|ArchiSteamFarm-18|INFO|Microsoft.Hosting.Lifetime|Now listening on: http://[::]:1242
2024-05-07 06:47:26|ArchiSteamFarm-18|INFO|Microsoft.Hosting.Lifetime|Application started. Press Ctrl+C to shut down.
2024-05-07 06:47:26|ArchiSteamFarm-18|INFO|Microsoft.Hosting.Lifetime|Hosting environment: Production
2024-05-07 06:47:26|ArchiSteamFarm-18|INFO|Microsoft.Hosting.Lifetime|Content root path: /asf
2024-05-07 06:47:26|ArchiSteamFarm-18|INFO|ASF|Start() IPC server ready!
2024-05-07 06:47:26|ArchiSteamFarm-18|INFO|JourneyOver|OnBotInitModules() Enable Free Packages : True
2024-05-07 06:47:26|ArchiSteamFarm-18|INFO|JourneyOver|OnBotInitModules() Free Packages Filters : [{"ImportStoreFilters":false,"Types":[],"Categories":[],"Tags":[],"IgnoredTypes":[],"IgnoredTags":[],"IgnoredCategories":[],"IgnoredContentDescriptors":[],"IgnoredAppIDs":[],"IgnoreFreeWeekends":false,"MinReviewScore":0,"Languages":[],"PlaytestMode":3,"RequireAllTags":false,"RequireAllCategories":false,"NoCostOnly":true,"Systems":[],"WishlistOnly":false}]
2024-05-07 06:47:26|ArchiSteamFarm-18|INFO|JourneyOver|Start() Starting...
2024-05-07 06:47:26|ArchiSteamFarm-18|INFO|JourneyOver|Connect() Connecting...
2024-05-07 06:47:27|ArchiSteamFarm-18|INFO|JourneyOver|OnConnected() Connected to Steam!
2024-05-07 06:47:27|ArchiSteamFarm-18|INFO|JourneyOver|OnConnected() Logging in...
2024-05-07 06:47:28|ArchiSteamFarm-18|INFO|JourneyOver|OnLoggedOn() Successfully logged on as <BLANKEDOUT>.
2024-05-07 06:47:28|ArchiSteamFarm-18|INFO|JourneyOver|Init() Success!
2024-05-07 06:47:31|ArchiSteamFarm-18|INFO|JourneyOver|IsAnythingToFarm() Checking first badge page...
2024-05-07 06:47:32|ArchiSteamFarm-18|INFO|JourneyOver|IsAnythingToFarm() Checking other badge pages...
2024-05-07 06:47:33|ArchiSteamFarm-18|INFO|JourneyOver|StartFarming() We don't have anything to farm on this account!
2024-05-07 06:47:52|ArchiSteamFarm-18|INFO|ASF|CollectGames() [FreeGames] found potentially 22 free games on reddit
2024-05-07 06:48:30|ArchiSteamFarm-18|INFO|JourneyOver|Refresh() Retrieving a total of 7 app access tokens...
2024-05-07 06:48:30|ArchiSteamFarm-18|INFO|JourneyOver|Refresh() Retrieving 7 app access tokens...
2024-05-07 06:48:30|ArchiSteamFarm-18|INFO|JourneyOver|Refresh() Finished retrieving 7 app access tokens.
2024-05-07 06:48:30|ArchiSteamFarm-18|INFO|JourneyOver|Refresh() Finished retrieving a total of 7 app access tokens.
2024-05-07 06:48:30|ArchiSteamFarm-18|INFO|JourneyOver|Refresh() Retrieving all depots for a total of 7 apps...
2024-05-07 06:48:31|ArchiSteamFarm-18|INFO|JourneyOver|Refresh() Retrieving 7 app infos...
2024-05-07 06:48:31|ArchiSteamFarm-18|INFO|JourneyOver|Refresh() Finished retrieving 7 app infos.
2024-05-07 06:48:32|ArchiSteamFarm-18|INFO|JourneyOver|Refresh() Successfully retrieved 1 out of 1 depot keys.
2024-05-07 06:48:32|ArchiSteamFarm-18|INFO|JourneyOver|Refresh() Finished retrieving all depot keys for a total of 7 apps.
2024-05-07 06:49:25|ArchiSteamFarm-18|INFO|ASF|ClaimItemTask() [JourneyOver] No reward to claim.
2024-05-07 07:00:25|ArchiSteamFarm-18|INFO|ASF|SubmitData() There is no new data to submit, everything is up-to-date.
2024-05-07 07:02:24|ArchiSteamFarm-18|FATAL|ASF|OnUnhandledException() System.MissingMethodException: Method not found: 'System.Text.RegularExpressions.Match System.Text.RegularExpressions.Regex.Match(System.String, System.String)'.
at FreePackages.ASFInfo.DoUpdate()
at System.Runtime.CompilerServices.AsyncMethodBuilderCore.Start[TStateMachine](TStateMachine&)
at FreePackages.ASFInfo.DoUpdate()
at FreePackages.ASFInfo.<>c.<<-cctor>b__5_0>d.MoveNext()
--- End of stack trace from previous location ---
at System.Threading.Tasks.Task.<>c.<ThrowAsync>b__128_1(Object state)
at System.Threading.QueueUserWorkItemCallbackDefaultContext.Execute()
at System.Threading.ThreadPoolWorkQueue.Dispatch()
at System.Threading.PortableThreadPool.WorkerThread.WorkerThreadStart()
at System.Threading.Thread.StartCallback()
2024-05-07 07:02:24|ArchiSteamFarm-18|ERROR|ASF|Exit() Exiting with 1 error code!
2024-05-07 07:02:24|ArchiSteamFarm-18|INFO|Microsoft.Hosting.Lifetime|Application is shutting down...
The application crashes/shuts down due to the error, and then restarts back up to repeat the same process again 15 minutes later.
I have queued subIDs, following:
However, I have noticed that queued subIDs were added one at a time:
2023-10-05 09:37:31|dotnet-6636|INFO|Bot|ClaimFreeSub() ID: sub/830651 | Status: OK/NoDetail
2023-10-05 09:37:31|dotnet-6636|INFO|Bot|IsAnythingToFarm() Vérification de la première page des badges...
2023-10-05 09:37:32|dotnet-6636|INFO|Bot|StartFarming() Nous n’avons rien à collecter sur ce compte !
2023-10-05 09:37:36|dotnet-6636|INFO|Bot|ClaimFreeApp() ID: app/2549320 | Status: OK | Items: app/2549320, sub/915788
2023-10-05 09:37:36|dotnet-6636|INFO|Bot|IsAnythingToFarm() Vérification de la première page des badges...
2023-10-05 09:37:37|dotnet-6636|INFO|Bot|StartFarming() Nous n’avons rien à collecter sur ce compte !
2023-10-05 09:37:42|dotnet-6636|INFO|Bot|ClaimFreeSub() ID: sub/813134 | Status: OK/NoDetail
2023-10-05 09:37:42|dotnet-6636|INFO|Bot|IsAnythingToFarm() Vérification de la première page des badges...
2023-10-05 09:37:43|dotnet-6636|INFO|Bot|StartFarming() Nous n’avons rien à collecter sur ce compte !
2023-10-05 09:37:48|dotnet-6636|INFO|Bot|ClaimFreeSub() ID: sub/817727 | Status: OK/NoDetail
2023-10-05 09:37:48|dotnet-6636|INFO|Bot|IsAnythingToFarm() Vérification de la première page des badges...
2023-10-05 09:37:49|dotnet-6636|INFO|Bot|StartFarming() Nous n’avons rien à collecter sur ce compte !
Maybe it could make sense to add several (a batch) at once, up to the allowed limit (at max 50, which is Valve's hourly rate-limit).
I understand that this would add more complexity to manage the hourly rate-limit, as it would require either a computation of the batch size based on the FreePackagesPerHour
parameter, or to parse the ASF output in order to know whether the rate-limit has been reached, and thus not comply with the promise not to overpass FreePackagesPerHour
, and finally keep the un-activated packages in the JSON file.
Just leaving the suggestion there as you mentioned the idea of a queue. It is a very minor thing, and I would be fine if you prefer the status quo.
Current version of the userscript results in "Failed to add packages." while adding packages from SteamDB's Free Packages page.
Using Tampermonkey on Firefox.
I'm using latest ASF-win-x64.zip. What's needed for this to start?
2023-10-19 09:40:37|ArchiSteamFarm-3292|FATAL|ASF|OnUnhandledException() System.MissingMethodException: Attempted to access a missing method.
at FreePackages.PackageQueue.ProcessQueue()
at System.Runtime.CompilerServices.AsyncMethodBuilderCore.Start[TStateMachine](TStateMachine&)
at FreePackages.PackageQueue.ProcessQueue()
at FreePackages.PackageQueue.<.ctor>b__9_0(Object e)
at System.Threading.Tasks.Task.<>c.<ThrowAsync>b__128_1(Object)
at System.Threading.QueueUserWorkItemCallbackDefaultContext.Execute()
at System.Threading.ThreadPoolWorkQueue.Dispatch()
at System.Threading.PortableThreadPool.WorkerThread.WorkerThreadStart()
at System.Threading.Thread.StartCallback()
After recent Steam change, certain free licenses (e.g. demos) are now automatically removed upon each login. Therefore it makes little sense to activate them, I think it'd make sense to skip them from activation, or if somebody really has some pointless urge (since they'll be removed anyway), then maybe make it configurable behind some boolean property.
Nowadays, FreePackagesPerHour
specifies the number of packages which can be activated in a 90-minute-long time window. The name is only kept for legacy purposes. Is that correct?
On my main account, which has everything but demos (cf. the note below), I have very few packages to try to add. However, I have noticed that I get rate-limited quite fast after getting many times the Fail/InvalidPackage
status due to InternalServerError
.
Note
For the record, this is an account which had everything, but I decided to stop adding demos. So I removed them withASFEnhance
and then added someFreeOnDemand
packages back, becauseASFEnhance
is bugged. 😅
I don't know if something can be done about this, as I reach the rate-limit (50) very fast. Originally, there were 20 or so packages to try, plus a few which were discovered, and the rate-limit status was ideal at 0/50.
2023-10-17 23:35:49|dotnet-9648|INFO|Bot|OnBotInitModules() Enable Free Packages : True
2023-10-17 23:35:49|dotnet-9648|INFO|Bot|OnBotInitModules() Free Packages Per Hour : 50
2023-10-17 23:35:49|dotnet-9648|INFO|Bot|OnBotInitModules() Free Packages Filter : {"ImportStoreFilters":false,"Types":[],"Categories":[],"Tags":[],"IgnoredTypes":["Demo"],"IgnoredTags":[],"IgnoredCategories":[],"IgnoredContentDescriptors":[],"IgnoredAppIDs":[],"IgnoreFreeWeekends":false,"MinReviewScore":0}
2023-10-17 23:36:50|dotnet-9648|DEBUG|Bot|InternalRequest() InternalServerError <- POST https://store.steampowered.com/freelicense/addfreelicense/934933
2023-10-17 23:36:50|dotnet-9648|INFO|Bot|ClaimFreeSub() ID: sub/934933 | Status: Fail/InvalidPackage
2023-10-17 23:36:56|dotnet-9648|DEBUG|Bot|InternalRequest() InternalServerError <- POST https://store.steampowered.com/freelicense/addfreelicense/952287
2023-10-17 23:36:56|dotnet-9648|INFO|Bot|ClaimFreeSub() ID: sub/952287 | Status: Fail/InvalidPackage
2023-10-17 23:37:01|dotnet-9648|DEBUG|Bot|InternalRequest() InternalServerError <- POST https://store.steampowered.com/freelicense/addfreelicense/899943
2023-10-17 23:37:01|dotnet-9648|INFO|Bot|ClaimFreeSub() ID: sub/899943 | Status: Fail/InvalidPackage
2023-10-17 23:37:07|dotnet-9648|DEBUG|Bot|InternalRequest() InternalServerError <- POST https://store.steampowered.com/freelicense/addfreelicense/952341
2023-10-17 23:37:07|dotnet-9648|INFO|Bot|ClaimFreeSub() ID: sub/952341 | Status: Fail/InvalidPackage
2023-10-17 23:37:12|dotnet-9648|INFO|Bot|ClaimFreeSub() ID: sub/83573 | Status: OK/NoDetail
2023-10-17 23:37:18|dotnet-9648|INFO|Bot|ClaimFreeApp() ID: app/1668940 | Status: Invalid
2023-10-17 23:37:25|dotnet-9648|INFO|Bot|ClaimFreeApp() ID: app/2432680 | Status: OK | Items: app/2432680, sub/875470
2023-10-17 23:37:31|dotnet-9648|DEBUG|Bot|InternalRequest() InternalServerError <- POST https://store.steampowered.com/freelicense/addfreelicense/899949
2023-10-17 23:37:31|dotnet-9648|INFO|Bot|ClaimFreeSub() ID: sub/899949 | Status: Fail/InvalidPackage
2023-10-17 23:37:37|dotnet-9648|DEBUG|Bot|InternalRequest() InternalServerError <- POST https://store.steampowered.com/freelicense/addfreelicense/899946
2023-10-17 23:37:37|dotnet-9648|INFO|Bot|ClaimFreeSub() ID: sub/899946 | Status: Fail/InvalidPackage
2023-10-17 23:37:42|dotnet-9648|DEBUG|Bot|InternalRequest() InternalServerError <- POST https://store.steampowered.com/freelicense/addfreelicense/724437
2023-10-17 23:37:42|dotnet-9648|INFO|Bot|ClaimFreeSub() ID: sub/724437 | Status: Fail/InvalidPackage
2023-10-17 23:37:48|dotnet-9648|DEBUG|Bot|InternalRequest() InternalServerError <- POST https://store.steampowered.com/freelicense/addfreelicense/947765
2023-10-17 23:37:48|dotnet-9648|INFO|Bot|ClaimFreeSub() ID: sub/947765 | Status: Fail/InvalidPackage
2023-10-17 23:37:54|dotnet-9648|DEBUG|Bot|InternalRequest() InternalServerError <- POST https://store.steampowered.com/freelicense/addfreelicense/899940
2023-10-17 23:37:54|dotnet-9648|INFO|Bot|ClaimFreeSub() ID: sub/899940 | Status: Fail/InvalidPackage
2023-10-17 23:38:00|dotnet-9648|INFO|Bot|ClaimFreeApp() ID: app/835570 | Status: Invalid
2023-10-17 23:38:05|dotnet-9648|DEBUG|Bot|InternalRequest() InternalServerError <- POST https://store.steampowered.com/freelicense/addfreelicense/951816
2023-10-17 23:38:05|dotnet-9648|INFO|Bot|ClaimFreeSub() ID: sub/951816 | Status: Fail/InvalidPackage
2023-10-17 23:38:11|dotnet-9648|INFO|Bot|ClaimFreeApp() ID: app/2391240 | Status: Invalid
2023-10-17 23:38:17|dotnet-9648|DEBUG|Bot|InternalRequest() InternalServerError <- POST https://store.steampowered.com/freelicense/addfreelicense/905335
2023-10-17 23:38:17|dotnet-9648|INFO|Bot|ClaimFreeSub() ID: sub/905335 | Status: Fail/RateLimited
2023-10-17 23:38:17|dotnet-9648|INFO|Bot|ProcessQueue() Free Package rate limit exceeded
2023-10-17 23:38:17|dotnet-9648|INFO|Bot|ProcessQueue() Pausing free package activations until 00:39:17
When I check some of the invalid packages, I can notice that the included app is unknown (both App Type
and Name
).
For instance: https://steamdb.info/sub/947765/apps/
So I wonder i) if this is normal, ii) if this is because the software is too fast and the free packages would become valid in an hour or so, iii) if something can be done to prevent triggering the rate-limit if the app is of unknown type or unknown name.
In the following log, the resume time which is displayed is wrong: it should be 10 a.m., but it shows 40 minutes past midnight.
2023-10-16 09:01:27|dotnet-9188|INFO|Bot|ClaimFreeSub() ID: sub/793748 | Status: OK/NoDetail
2023-10-16 09:01:27|dotnet-9188|INFO|Bot|IsAnythingToFarm() Vérification de la première page des badges...
2023-10-16 09:01:27|dotnet-9188|INFO|Bot|StartFarming() Nous n’avons rien à collecter sur ce compte !
2023-10-16 09:01:30|dotnet-9188|INFO|Wok|ClaimFreeSub() ID: sub/933910 | Status: OK/NoDetail
2023-10-16 09:01:30|dotnet-9188|INFO|Wok|IsAnythingToFarm() Vérification de la première page des badges...
2023-10-16 09:01:31|dotnet-9188|INFO|Wok|StartFarming() Nous n’avons rien à collecter sur ce compte !
2023-10-16 09:01:32|dotnet-9188|INFO|Bot|ProcessQueue() Pausing free package activations until 00:42:51
2023-10-16 09:01:35|dotnet-9188|INFO|Wok|ProcessQueue() Pausing free package activations until 00:42:49
The same time is shown with !qsa
:
<Bot> 2481 free packages queued. 50/50 hourly activations used. Activations will resume at 00:42:51.
<Wok> 2435 free packages queued. 50/50 hourly activations used. Activations will resume at 00:42:49.
It could be useful to have a status command to print the following information:
2023-10-07 10:12:08|dotnet-6752|INFO|Bot|ProcessQueue() Pausing free package activations until 11:13:03
And maybe, if the activations are not paused, then the current state, e.g. 25/N packages activated in the past hour, where N is the user-input rate-limit.
Hello, I am having the following error with the latest version of FreePackages and ASF:
2024-07-05 20:50:41|ArchiSteamFarm-35252|ERROR|ASF|CreateOrLoad() System.Text.Json.JsonException: '0x00' is an invalid start of a value. Path: $ | LineNumber: 0 | BytePositionInLine: 0.
If I remove the FreePackages plugin, the error is gone.
I have attached the log file too, please let me know if anything else is needed.
log.txt
This no longer works since ASF released 5.5.0.10
please add a filter option, to add only games, which have been followed or wishlisted by the user in the steam store.
My Config:
{
"AcceptGifts": true,
"Enabled": true,
"FarmingPreferences": 132,
"GamesPlayedWhileIdle": [
10,
240,
440,
570,
730
],
"HoursUntilCardDrops": 0,
"RemoteCommunication": 2,
"SteamLogin": "*******",
"SteamMasterClanID": ,
"SteamPassword": "",
"SteamTradeToken": "*****",
"EnableFreePackages": true,
"FreePackagesFilters": [{
"IgnoreFreeWeekends": true,
"NoCostOnly": true,}],
}
Package:
https://steamdb.info/sub/1033864/
The bot hasn't done anything for 40 minutes. If I set "NoCostOnly" to false, it starts to add some packages
Thank you for the plugin!
Some licenses return Status: Invalid
when trying to be added to the bot account. Here is an example:
2023-09-30 23:19:20|dotnet-10064|INFO|Bot|ClaimFreeApp() ID: app/1924920 | Status: Invalid
2023-09-30 23:19:25|dotnet-10064|INFO|Bot|ClaimFreeApp() ID: app/2622470 | Status: Invalid
2023-09-30 23:19:31|dotnet-10064|INFO|Bot|ClaimFreeSub() ID: sub/681037 | Status: OK/NoDetail
2023-09-30 23:19:37|dotnet-10064|INFO|Bot|ClaimFreeApp() ID: app/2606230 | Status: OK | Items: app/2606230, sub/935177
2023-09-30 23:19:43|dotnet-10064|INFO|Bot|ClaimFreeApp() ID: app/2501340 | Status: Invalid
2023-09-30 23:19:48|dotnet-10064|INFO|Bot|ClaimFreeApp() ID: app/2488870 | Status: Invalid
I wonder if these packages are remembered by the plugin so as not to try them again later.
Or whether it is better not to remember them, in case their Status
changes to a valid state in the foreseeable future.
What format config?
"IgnoredTypes": [],
I need exclude demos. I add "IgnoredTypes": Demo, or "IgnoredTypes": [Demo],
And have eror:
ct, JsonProperty containerMember, Object existingValue)
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.Deserialize(JsonReader reader, Type objectType, Boolean checkAdditionalContent)
at Newtonsoft.Json.JsonSerializer.DeserializeInternal(JsonReader reader, Type objectType)
at Newtonsoft.Json.JsonSerializer.Deserialize(JsonReader reader, Type objectType)
at Newtonsoft.Json.JsonConvert.DeserializeObject(String value, Type type, JsonSerializerSettings settings)
at Newtonsoft.Json.JsonConvert.DeserializeObject[T](String value, JsonSerializerSettings settings)
at Newtonsoft.Json.JsonConvert.DeserializeObject[T](String value)
at ArchiSteamFarm.Steam.Storage.BotConfig.Load(String filePath, String botName)
2023-10-22 16:40:58|dotnet-5292|ERROR|ASF|RegisterBot() Your bot config is invalid. Please verify content of config/main_acc.json and try again!
2023-10-01 11:41:07|dotnet-4340|ERROR|ASF|OnPICSChanges() System.InvalidOperationException: UserData
at FreePackages.PackageFilter.IsRedeemableApp(PICSProductInfo app)
at FreePackages.PackageHandler.HandleFreeApp(PICSProductInfo app)
at FreePackages.PackageHandler.<>c__DisplayClass11_0.<HandleAppUpdates>b__3(PackageHandler x)
at System.Collections.Generic.List`1.ForEach(Action`1 action)
at FreePackages.PackageHandler.HandleAppUpdates(IReadOnlyDictionary`2 appChanges)
at FreePackages.PackageHandler.OnPICSChanges(UInt32 currentChangeNumber, IReadOnlyDictionary`2 appChanges, IReadOnlyDictionary`2 packageChanges)
at FreePackages.FreePackages.OnPICSChanges(UInt32 currentChangeNumber, IReadOnlyDictionary`2 appChanges, IReadOnlyDictionary`2 packageChanges)
at ArchiSteamFarm.Core.Utilities.InParallel(IEnumerable`1 tasks)
at ArchiSteamFarm.Plugins.PluginsCore.OnPICSChanges(UInt32 currentChangeNumber, IReadOnlyDictionary`2 appChanges, IReadOnlyDictionary`2 packageChanges)
FreePackages.cache
:
{
"LastChangeNumber": 20500304
}
Bot_FreePackages.db
:
{
"Activations": [
"2023-10-01T00:52:53.8388963+02:00",
"2023-10-01T00:52:47.1088732+02:00"
],
"Packages": []
}
do you have time to update plugin?
After a few seconds, plugin crashes ASF on latest version (6.0.0.3) when using a non-generic version of ASF
2024-03-09 11:41:47|ArchiSteamFarm-592|FATAL|ASF|OnUnhandledException() System.MissingMethodException: Attempted to access a missing method.
at FreePackages.WebRequest.GetAppDetails(Bot bot, UInt32 appID)
at System.Runtime.CompilerServices.AsyncMethodBuilderCore.Start[TStateMachine](TStateMachine&)
at FreePackages.WebRequest.GetAppDetails(Bot bot, UInt32 appID)
at FreePackages.PackageQueue.ClaimFreeApp(UInt32 appID)
at FreePackages.PackageQueue.ClaimPackage(Package package)
at FreePackages.PackageQueue.ProcessQueue()
at FreePackages.PackageQueue.<.ctor>b__8_0(Object e)
at System.Threading.Tasks.Task.<>c.<ThrowAsync>b__128_1(Object state)
at System.Threading.QueueUserWorkItemCallbackDefaultContext.Execute()
at System.Threading.ThreadPoolWorkQueue.Dispatch()
at System.Threading.PortableThreadPool.WorkerThread.WorkerThreadStart()
at System.Threading.Thread.StartCallback()
Originally posted by @SpoogLord in #25 (comment)
Reposting this issue from @shinji257
Not sure what triggers this. It looks like it is trying to check filtering but I have nothing custom defined in the bot. I'm not even sure where the media keyword is used.
EDIT: Actually it looks like it is happening when it detects a PICS change. I just added the default set of filters to the config to see if it fixes it... Will advise later and close if it does.
2023-12-05 14:31:53|ArchiSteamFarm-52604|FATAL|ASF|OnUnobservedTaskException() System.ArgumentException: Requested value 'media' was not found. at System.Enum.TryParseByName(RuntimeType enumType, ReadOnlySpan`1 value, Boolean ignoreCase, Boolean throwOnFailure, UInt64& result) at System.Enum.TryParseInt32Enum(RuntimeType enumType, ReadOnlySpan`1 value, Int32 minInclusive, Int32 maxInclusive,Boolean ignoreCase, Boolean throwOnFailure, TypeCode type, Int32& result) at System.Enum.TryParse[TEnum](ReadOnlySpan`1 value, Boolean ignoreCase, Boolean throwOnFailure, TEnum& result) at FreePackages.FilterableApp..ctor(UInt32 id, KeyValue kv) at FreePackages.FilterablePackage.<>c.<AddPackageContents>b__22_0(ValueTuple`2 packageContent) at System.Linq.Utilities.<>c__DisplayClass2_0`3.<CombineSelectors>b__0(TSource) at System.Linq.Enumerable.WhereSelectEnumerableIterator`2.ToList() at FreePackages.FilterablePackage.AddPackageContents(IEnumerable`1 packageContents) at System.Collections.Generic.List`1.ForEach(Action`1) at FreePackages.PackageHandler.HandleProductInfo(List`1 productInfo) at FreePackages.PackageHandler.GetProductInfo(HashSet`1 appIDs, HashSet`1 packageIDs, Func`2 onFetchProductInfoCallback) at FreePackages.PackageHandler.HandleChanges() at FreePackages.PackageHandler.<>c.<<OnPICSChanges>b__19_3>d.MoveNext()
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.