GithubHelp home page GithubHelp logo

citrinate / freepackages Goto Github PK

View Code? Open in Web Editor NEW
61.0 5.0 2.0 530 KB

An ASF plugin for finding and redeeming free Steam games

License: Apache License 2.0

C# 79.36% Batchfile 0.85% Shell 2.87% CSS 9.71% JavaScript 7.21%
archisteamfarm asf asf-plugin steam steam-games freegames free-games

freepackages's People

Contributors

citrinate avatar luckz avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

Forkers

eve-player luckz

freepackages's Issues

What about playtests?

I see there is commented code about playtests.

EAppType type = kv["common"]["type"].AsEnum<EAppType>();
if (type == EAppType.Demo) {
return true;
}
// TODO: Playtest stuff
// if (type == EAppType.Beta) {
// return true;
// }

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.

Maybe add several licenses at once

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.

Have error when use config

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!

MissingMethodException on non-generic ASF

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)

System.InvalidOperationException: UserData

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": []
}

Doesn`t add free promotions

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

qstatus is unknown

queuestatus, qstatus, qsa are unknown commands.

ASF 6.0.0.3
FreePackages 1.4.2

[Feature Request] MinReviewScore Delay

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.

OnUnobservedTaskException() System.ArgumentException: Requested value 'media' was not found.

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()

Error after updating to DotNet v8

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:

MissingMethodException

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()

Add a status command

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.

Can this plugin be used to queue subIDs obtained from SteamDB?

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:

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.

EAppType type = kv["common"]["type"].AsEnum<EAppType>();
if (type == EAppType.Demo) {
return true;
}

Missing types in IgnoredTypes

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 and Hardware.

Picture

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"
],

Clarification of the README

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?

Wrong resume time: a minor display bug?

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.

Minor error in the documentation

The documentation for the rating has a minor error.

List of Review Scores
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.

InternalServerError ➡️ Status: Fail/InvalidPackage ➡️ Status: Fail/RateLimited

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 with ASFEnhance and then added some FreeOnDemand packages back, because ASFEnhance 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/

Picture

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.

Are packages with "Status: Invalid" remembered by the plugin?

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.

Do package filters impact performance?

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?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.