• Hey, guest user. Hope you're enjoying NeoGAF! Have you considered registering for an account? Come join us and add your take to the daily discourse.

Official Idle Master Thread - Get your Steam Trading Cards the Easy Way

jshackles

Gentlemen, we can rebuild it. We have the capability to make the world's first enhanced store. Steam will be that store. Better than it was before.
my friend have a problem , he has family view on his account and he can't use your program
he need to disable family view to use the program
is there a way to use it while family view is on ?

Do you mean that he has parental controls enabled? Or that he uses Steam Family Sharing?
 

Amzin

Member
Valve hasn't banned anybody for appid idling so far, all this does is automate it for you, so unless their stance changes on card idling I don't see a problem.

I've never worked with Python OR Steam API (if this even is API) stuff before, but I figured what better way to learn than trying to add something to the program? I can't test this at work but playing around in the code I plunked out these two pieces, if anyone has any ideas as to whether it'd work or not. Basically you add 'exclude = "appid" to the settings file, each appid separated by a space, and it would check to see if the appid should be excluded while it's building the idle list.

Code:
if not authData["exclude"]:
	print "No games being excluded"
This part is super simple, it's just after the steamLogin data check. Just to inform as to whether it's reading any exclusions or not.

Code:
for badge in badgeSet:
	try:
		dropCount = badge.find_all("span",{"class": "progress_info_bold"})[0].contents[0]
		if "No card drops" in dropCount:
			continue
		else:
			# Remaining drops
			excludeBadges = exclude.split()
			
			linkGuess = badge.find_parent().find_parent().find_parent().find_all("a")[0]["href"]
			junk, badgeId = linkGuess.split("/gamecards/",1)
			badgeId = int(badgeId.replace("/",""))
			if badgeId not in excludeBadges:
				dropCountInt, junk = dropCount.split(" ",1)
				dropCountInt = int(dropCountInt)
				badgesLeft[badgeId] = dropCountInt
			else:
				continue
	except:
		continue

This was the hard part. Moved around a little of the code in here to check and see if the appid is in the "exclude" list. If it isn't, it proceeds as usual. If it IS excluded, it just skips over that ID and onto the next one (I think). I can't test this for hours and have never compiled anything Python anyway so that's a whole other problem, but anyone is welcome to tinker with it if they're equally bored.

Again, total Python newb, apologies for my no doubt amateur display of snake-themed coding.
 

Milchmann

Member
Hey jshackles, I extended your code, mainly to practice my rusty Python skills.
So feel free to use the parts you like or just ignore it. :lol

You can view it here: http://pastebin.com/frm4EzH2

Changes I made:
steam_api.dll is now called directly in Python using ctypes, so Steamworks.Net, CSteamworks and the small C# program aren't needed anymore. start.py/start.exe, steam_api.dll and settings.txt will suffice.

I also added a simple blacklist. Write one appid per line in blacklist.txt and Idle Master will ignore the corresponding games.

Apart from that there are some minor changes. The console output now shows the time, when Idle Master stops sleeping and the function, that reads settings.txt is a bit more robust.
 

Kouriozan

Member
Does Sonic All Stars Racing Transformed usually take tons of time for a card?


Fake edit : finally got one after 30+ mins
 

Amzin

Member
Does Sonic All Stars Racing Transformed usually take tons of time for a card?


Fake edit : finally got one after 30+ mins

Yea I actually had one drop remaining after clearing most of single player stuff out

Edit:

Hey jshackles, I extended your code, mainly to practice my rusty Python skills.
So feel free to use the parts you like or just ignore it. :lol

You can view it here: http://pastebin.com/frm4EzH2

Changes I made:
steam_api.dll is now called directly in Python using ctypes, so Steamworks.Net, CSteamworks and the small C# program aren't needed anymore. start.py/start.exe, steam_api.dll and settings.txt will suffice.

I also added a simple blacklist. Write one appid per line in blacklist.txt and Idle Master will ignore the corresponding games.

Apart from that there are some minor changes. The console output now shows the time, when Idle Master stops sleeping and the function, that reads settings.txt is a bit more robust.

Totally shown up in the next post, dang :p
 

L.O.R.D

Member
Do you mean that he has parental controls enabled? Or that he uses Steam Family Sharing?

he said he enabled Family View in his account , but the program was not running ( open and close fast )

so he disabled Family View , then he was able to run the program

edit : oh, i think its the same thing
yes,he was enabling parental controls and family share
 

wilflare

Member
I'm curious: would you guys be opposed to Idle Master collecting anonymous usage statistics about how long you idle particular games until they're out of cards? Possibly making it an "opt-in" option in the settings file?

With everyone idling essentially the same games with the same drop times, I think it would be awesome if Idle Master collected these statistics. They could then be compiled and used in the program itself - something like "Starting Awesomenauts to idle cards: approximately 9 hours remaining...". Or something like "3 card drops remaining: estimated time to next drop is 25 minutes."

Having enough data from enough people could let the program accurately predict these types of things. Of course, I know not everyone is keen on "their information" being sent to a server somewhere.


EDIT: this data could even be put to use in Enhanced Steam, when viewing the badges page it could display the average time to drop cards.

count me in! such info would be useful
 

jshackles

Gentlemen, we can rebuild it. We have the capability to make the world's first enhanced store. Steam will be that store. Better than it was before.
Hey jshackles, I extended your code, mainly to practice my rusty Python skills.
So feel free to use the parts you like or just ignore it. :lol

You can view it here: http://pastebin.com/frm4EzH2

Changes I made:
steam_api.dll is now called directly in Python using ctypes, so Steamworks.Net, CSteamworks and the small C# program aren't needed anymore. start.py/start.exe, steam_api.dll and settings.txt will suffice.

I also added a simple blacklist. Write one appid per line in blacklist.txt and Idle Master will ignore the corresponding games.

Apart from that there are some minor changes. The console output now shows the time, when Idle Master stops sleeping and the function, that reads settings.txt is a bit more robust.

Awesome, I'll look this over. Thanks!
 
Heads up. Maybe other people had the same problem.
Logged in steamcommuntiy on browser and have Steam client running and logged in as well.
This is my settings.txt
Code:
myProfileURL="http://steamcommunity.com/id/freshVeggie"
sessionid = "stuff"
steamLogin = "long stuff
"
Didn't work until I realized that after copying/pasting steamLogin into quotation marks the later mark slipped into new line. Constantly got error loading config file message.
After putting the last quotation mark up a line, it started beautifully.
29 games to idle. It's something.

Thanks jshackles! You are doing a mighty fine job here!
 
My initial thought was "Is this worth it? I don't even care about cards... But hell, another dollar is another dollar, might as well mine 'em and pawn 'em."

Then I finally got it set up and started up, and see '34 games remaining'.

This is how bad things start.

Re: opting-in for data collection, I usually don't allow such functions, but only because I've never had a developer say clearly and directly what they were gonna do with it, like you just did.
 

Shrubbery

Member
"start.exe is not a valid win32 application"

Windows XP sp3 32-bit.

Do I need any particular version of the NET framework?

To answer my own question, no it appears not to work on 32-bit Windows. Working ok now on Windows 7 64-bit. I don't remember needing to install any additional versions of .NET ( I think I have 3.5 and 4 on here).

My browser, Firefox, also had 2 pipe characters (0x7c) in the cookie content field (for steamLogin) so I manually edited those back to the pipe "|".

Appears to be working now.. fingers crossed.
 

jshackles

Gentlemen, we can rebuild it. We have the capability to make the world's first enhanced store. Steam will be that store. Better than it was before.
Does the Sleeping for 15 minutes mean, IM will check if there are remaining drops after 15mins?
Can this time be set manually?

I'm worried about letting people set their own frequency, since it could potentially lead to a much larger load on Valve's servers if everyone set it to every 10 seconds or something crazy.

After it detects that there is only a single drop remaining, it'll start checking every 5 minutes. So after your last card drops, the most amount of time you'll be idling a game needlessly is 5 minutes.
 

SerTapTap

Member
Works great. I was manually doing this while playing some PS4 games instead of PC but this will save me some time and processor cycles.

Man my Steam gametime is going to be so inaccurate.
 

chixdiggit

Member
That's pretty strange. Does the different PC run a different version of Windows or anything weird? You may need to install the .NET framework 4.5.

Still a no go. One thing I noticed going from one PC to the next is that my Session ID is different. Is that normal? I tried swapping them around but just got the same result.
 

jshackles

Gentlemen, we can rebuild it. We have the capability to make the world's first enhanced store. Steam will be that store. Better than it was before.
he said he enabled Family View in his account , but the program was not running ( open and close fast )

so he disabled Family View , then he was able to run the program

edit : oh, i think its the same thing
yes,he was enabling parental controls and family share

Alright, I think I have the issue figured out but it'll be later today before I can make a fix for it. Basically when the program is looking at their badges page it's getting the page that says "Please enter your PIN number".
 
I'm worried about letting people set their own frequency, since it could potentially lead to a much larger load on Valve's servers if everyone set it to every 10 seconds or something crazy.
After it detects that there is only a single drop remaining, it'll start checking every 5 minutes. So after your last card drops, the most amount of time you'll be idling a game needlessly is 5 minutes.
Aha, that was exactly what I was concerned. Waiting needlessly when no drops remained.
Five minutes is fair. It's not like I am on Wall Street, brokering with milliseconds, ha.
It's also nice to see that there is no CPU load while idling.
 

snack

Member
I do not know why, but the settings.txt file on github only has the following two lines:

sessionid = ""
steamLogin = ""

It is missing the Profile URL line which I had to add myself.
 

jshackles

Gentlemen, we can rebuild it. We have the capability to make the world's first enhanced store. Steam will be that store. Better than it was before.
I do not know why, but the settings.txt file on github only has the following two lines:

sessionid = ""
steamLogin = ""

It is missing the Profile URL line which I had to add myself.

Yeah, I'm working on a change this very moment where you won't have to enter the profile URL at all, it'll get the data it needs completely from the cookie information. Should be up in a few minutes.

EDIT: should be working now with the latest start.exe

Holy crap I finally figured it out! I turned off User control and it works fine.

Good to hear! Others have mentioned launching start.exe as an Administrator being a fix. I'm not sure why that's needed but I'll look into it.
 

wilflare

Member
any reason why idlem@ster has ERRORS trying to detect how many cards I have left? because of that it's rotating thru my games very quickly
 
D

Deleted member 125677

Unconfirmed Member
all right! let's do this! 79 games to idle!
 

An-Det

Member
When the program is running, should my steam profile show that I am "playing" that game? It's not, and the first game on the list dropped nothing overnight, so if so I'm pretty sure I did something wrong somewhere.
 

jshackles

Gentlemen, we can rebuild it. We have the capability to make the world's first enhanced store. Steam will be that store. Better than it was before.
When the program is running, should my steam profile show that I am "playing" that game? It's not, and the first game on the list dropped nothing overnight, so if so I'm pretty sure I did something wrong somewhere.

Yes it should show that you're in game. Something definitely went wrong. It sounds like the steam-idle.exe process didn't kick off correctly.
 

Ezalc

Member
How do you fix the error that says it's not compatible with my version of windows? (windows 7 v32 here.)
 

jshackles

Gentlemen, we can rebuild it. We have the capability to make the world's first enhanced store. Steam will be that store. Better than it was before.
The issue with Steam Family View has been fixed. If you have Family View enabled, be sure to grab the latest version (and follow the instructions in the setup directions.pdf file).
 

BreakyBoy

o_O @_@ O_o
Is there an OS X version?

There isn't at this time. steam-idle.exe was written in C#, so another similar program would need to be written for OSX. The main application (start.exe) is written in Python and is easily portable to OSX or Linux. The good news is that the code is all open source so if someone is interested in putting an OSX or Linux version together, all they need to do is contact me and I'd be happy to help them distribute it.

I had tossed around this sort of an idea as a side project in my head for quite some time. As usual, I never got around to it. You did a great job. The least I can do is take a stab at porting things over to my preferred platforms (both *nix & OSX) this weekend. I'll take a look.

As electroflame already said, Mono would be the easy solution here. I might be arsed to port more natively though, because I'm weird and think that's a fun exercise. We'll see. I'll probably be in touch either way.
 

jshackles

Gentlemen, we can rebuild it. We have the capability to make the world's first enhanced store. Steam will be that store. Better than it was before.
I had tossed around this sort of an idea as a side project in my head for quite some time. As usual, I never got around to it. You did a great job. The least I can do is take a stab at porting things over to my preferred platforms (both *nix & OSX) this weekend. I'll take a look.

As electroflame already said, Mono would be the easy solution here. I might be arsed to port more natively though, because I'm weird and think that's a fun exercise. We'll see. I'll probably be in touch either way.

Awesome, thanks. Let me know if you have any questions or need further clarification on anything.

Additionally - I just "released" version 0.3 which has the oft-requested "blacklist" feature. You can blacklist a game by opening blacklist.txt and adding appIDs (one per line) to the file. When Idle Master is determining which games it needs to Idle, it will skip any game if it's found on the blacklist.

As always, let me know if anyone has any trouble with this feature. :)
 

steelersrock01

Neo Member
Does playing a game that doesn't have cards while using idle master cause the drop rate to plummet like it does when manually idling multiple games with cards? It's awesome btw, working flawlessly for me.
 

Milchmann

Member
I had tossed around this sort of an idea as a side project in my head for quite some time. As usual, I never got around to it. You did a great job. The least I can do is take a stab at porting things over to my preferred platforms (both *nix & OSX) this weekend. I'll take a look.

As electroflame already said, Mono would be the easy solution here. I might be arsed to port more natively though, because I'm weird and think that's a fun exercise. We'll see. I'll probably be in touch either way.

You don't need Mono. You just need a small program or process written in any language that sets the environment variable "SteamAppId" to an appid and calls SteamAPI_Init() in the steam_api library. Based on an older version of Idle Master I did that in Python itself, so most of the work for an port should be done.
Take a look at the code: http://pastebin.com/frm4EzH2 Probably you only need to edit the lines 60 and 69.
 

wilflare

Member
Awesome, thanks. Let me know if you have any questions or need further clarification on anything.

Additionally - I just "released" version 0.3 which has the oft-requested "blacklist" feature. You can blacklist a game by opening blacklist.txt and adding appIDs (one per line) to the file. When Idle Master is determining which games it needs to Idle, it will skip any game if it's found on the blacklist.

As always, let me know if anyone has any trouble with this feature. :)

updated to it - even when i'm not having major issues :D

let us know when we can opt-in for that statistics gathering

i have like

782 card drops remaining
221 games with drops remaining
 

jshackles

Gentlemen, we can rebuild it. We have the capability to make the world's first enhanced store. Steam will be that store. Better than it was before.
Made a video tutorial for anybody that needs detailed step by step directions (hope that's ok). Might be helpful if you are second guessing something.
http://youtu.be/WC1S5dgyTdw

Well done! I put that in the OP, if that's alright.

Does playing a game that doesn't have cards while using idle master cause the drop rate to plummet like it does when manually idling multiple games with cards? It's awesome btw, working flawlessly for me.

Yeah, playing any other game while Idle master is running will lower your drop rate considerably.
 

BreakyBoy

o_O @_@ O_o
You don't need Mono. You just need a small program or process written in any language that sets the environment variable "SteamAppId" to an appid and calls SteamAPI_Init() in the steam_api library. Based on an older version of Idle Master I did that in Python itself, so most of the work for an port should be done.
Take a look at the code: http://pastebin.com/frm4EzH2 Probably you only need to edit the lines 60 and 69.

Quick glance over, and yeah that makes a ton of sense. I'm out of town for work, but I fly back tonight. I'll take a look this weekend, like I said. If it's that easy, I'll submit a PR or two to jshackles' github repo, and we can go from there.
 

AkuMifune

Banned
Idle Master has been working great all day, but now starting to act weird, skipping games after only dropping one card, etc... But I'm at work and the fact it ran almost 12 hours without issue is amazing. Such a great app.

I wonder if the influx of new cards and badges will affect the market. If Idle Master ever works for Russian Steam I'd bet it would . ;)
 

ScoopEE

Neo Member
Very cool, thanks for this!

I believe I'm set up properly, but it keeps saying:

"Sleeping for 15 minutes"

After locating card drop opportunities. Is that okay?
 
Top Bottom