Hello everyone!

I'm the semi-mastermind behind semi-popular useless tools for SteamGifts such as that old, boring Steam Wishlist thing which was/is located at steamwishlist.mabako.net.

Improvements over the original version:

  • Handles >1k users in groups (theoretically, you sure need to bring your own pillow. Too lazy to test it yet.)
  • more info - shows prices and pictures
  • looks better.
  • allows you to check owned games in a group. (Direct Link, Example)

Where? http://swl.mabako.net/YourGroupName - for example, this.

Dump feedback here. If it broke, see the bug tracker. I'm not sure if I'll take the old version offline soon-ish, maybe if this actually shows up as stable. So until then, consider this beta.

Bug Tracker - please report any issues there as I hardly have time to go on Steam/talk on Steam/read this forum topic in particular.

Source: Github

TL;DR - Here's a puzzle

11 years ago*

Comment has been collapsed.

Excellent work, kt :)

Will be sure to let you know if I spot a bug, but it's working well for now.

11 years ago
Permalink

Comment has been collapsed.

Looks awesome, currently testing it out :)

11 years ago
Permalink

Comment has been collapsed.

ELITE RAWR! ^__^

Solly approved. <3
11 years ago
Permalink

Comment has been collapsed.

Love the new version! ^_^

11 years ago
Permalink

Comment has been collapsed.

Brilliant! I use this so much, I'm glad it's being updated. You rock! <3

11 years ago
Permalink

Comment has been collapsed.

Seems a little bit slower than the older one, which I never had any problems with.
That being said, I absolutely love the new one! Great work, mate! :)

11 years ago
Permalink

Comment has been collapsed.

Still working on the code a bit, which's not exactly comparable to the live results - the connection and computer I have give way worse results in terms of performance.

11 years ago
Permalink

Comment has been collapsed.

Try not to construct the same object multiple times maybe? I notice, that in steamwishlist.js, you're creating the same cheerio object many times by calling $(this) more than once in a function. Why not cache it into a variable and use that instead? That'll surely speed things up, theoretically.

Also, try using more named functions rather than the anonymous ones. Though, the performance gained from doing that one shouldn't be too significant, as you'll most likely have something else that's bottlenecking the app. Things like network latency, and I/O stuff.

There's so many things that we could discuss regarding performance, but what's really important is doing benchmark and find the bottleneck. :T

11 years ago
Permalink

Comment has been collapsed.

Uhhhh, of course! What this good man said!

11 years ago
Permalink

Comment has been collapsed.

See? Shiina agrees with me :3

11 years ago
Permalink

Comment has been collapsed.

I do, I do! :D

11 years ago
Permalink

Comment has been collapsed.

=_=

11 years ago
Permalink

Comment has been collapsed.

<3 Sleepy

11 years ago
Permalink

Comment has been collapsed.

Figure it out! cough Err, well. You have the source!

11 years ago
Permalink

Comment has been collapsed.

Too lazy :P

But nah, I'll try my best to help out. I don't know much about Node JS actually, so I'll most likely help with just the client side script.

11 years ago
Permalink

Comment has been collapsed.

This is awesome.

11 years ago
Permalink

Comment has been collapsed.

Nice update. Use this for group giveaways. Thanks a lot :)

11 years ago
Permalink

Comment has been collapsed.

Cool.

11 years ago
Permalink

Comment has been collapsed.

Sehr nützliche Sache! Danke dir! :)

11 years ago
Permalink

Comment has been collapsed.

All I get is a page saying "This is maybe the new Steam Group Wishlist. You may want to visit the forum topic."

11 years ago
Permalink

Comment has been collapsed.

What browser are you using? Since it requires JavaScript, you may need to have that enabled.

11 years ago
Permalink

Comment has been collapsed.

It doesn't work on Google Chrome, just tried Firefox and it's working.
Javascript is enabled, the old version worked fine for me.

Edit: Just so you know, it doesn't work on IE either. (At least not IE7, what I'm stuck with at work)

11 years ago
Permalink

Comment has been collapsed.

I'm on chrome, and it worked fine for me

11 years ago
Permalink

Comment has been collapsed.

Now that's weird. Tried it again, still not working for me.

And the old version is still working fine.

11 years ago
Permalink

Comment has been collapsed.

It works here with Google Chrome.

11 years ago
Permalink

Comment has been collapsed.

I just tried it from home (was at work earlier) and it's working flawlessly in both Chrome and IE10.

Dunno why it won't run on my work computer. Could be the corporate firewall acting up but I find it weir that it would still work in FF though. And the older version worked for me there too.

11 years ago
Permalink

Comment has been collapsed.

It relies on websockets or long-polling as fallback, I'd be wary on how well that copes with enterprise firewalls. This might prove to be a good starting point, as it's heavily dependant on both the firewall and the browser apparently. The websockets run on port 8000 tho, as that's an openshift-requirement currently.

The old version used none of that fancyness and just used plain old ajax requests.

11 years ago
Permalink

Comment has been collapsed.

Yeah, I'm pretty sure port 8000 is blocked at work. Makes me wonder though why it worked in FF. I have a proxy set up in FF though to bypass the firewall's blocked sites (nothing worse than getting locked out of some sites you actually need to do your job) and that might have been active. I'm guessing if you could move things to a more standard port it would help a lot.

11 years ago
Permalink

Comment has been collapsed.

I'll consider that when OpenShift allows websocket on port 80, which it doesn't - it's only a preview version, and when it's ever not-preview that'll change.

11 years ago
Permalink

Comment has been collapsed.

Got that too. waited few secs, and it starts listing. works for me on firefox. nice one!

11 years ago
Permalink

Comment has been collapsed.

Works for me on FF too. It's just that I almost never fire up that clunky thing.

11 years ago
Permalink

Comment has been collapsed.

Getting the same thing in Safari for iPad, but works if I use Photon Browser (which streams Chrome from a server farm). Odd...

11 years ago
Permalink

Comment has been collapsed.

As I don't have an iPad that's not as easy to figure out D:

11 years ago
Permalink

Comment has been collapsed.

Works fine on my Android tablet. Tried both default browser and Chrome.

11 years ago
Permalink

Comment has been collapsed.

Whoa, looks great! :D

11 years ago
Permalink

Comment has been collapsed.

Really good job :)

11 years ago
Permalink

Comment has been collapsed.

It's awesome. Now if you could provide a group checker that let's me cache locally so it isn't as slow as the one that checks live results... I would have your children.

11 years ago
Permalink

Comment has been collapsed.

I'm pondering about using localStorage at least for game-information on client-side, I'm not sure how well it'd fare when adding all wishlists of what may be quite a lot of users. Limiting it to 100 or 200 as max group size with caching enabled might be a viable option.

This really depends on suggestions.

11 years ago
Permalink

Comment has been collapsed.

Not wishlist compile, but a group checker for any title on steam. Idea being that you cache the library of people in the group and check it every few days for new additions. I have never looked at the steam api, so I am not sure what it lets you grab... if there even is an api, I am assuming there is, because otherwise sites like this would be insane to sync up. For obvious reasons, large groups would not function well with the local cache of every members games. It would just make it so quick to check for private groups.

I am too busy with work to get started on it myself :( Plus I haven't touched web stuff in so long. I should really work with rails again. I had fun with it. But for now, haskell!

11 years ago
Permalink

Comment has been collapsed.

Steam does provide an API, sadly the data exposed by it is very limited. They don't even provide an API to grab someone's wishlist. What the script does is, basically open the wishlist page of each member, and query the DOM to find out the wishlisted games.

11 years ago
Permalink

Comment has been collapsed.

I hate analysing the dom tree D:

11 years ago
Permalink

Comment has been collapsed.

Good luck with the steam API then, I'd recommend getting a lego carpet - that might be the less painful option.

11 years ago
Permalink

Comment has been collapsed.

No time. Anyway, I just realised there is a link to what I want that and I am just being dumb for the sake of being dumb. Back to Haskell! Boooo.

11 years ago
Permalink

Comment has been collapsed.

Boo, Haskell.

11 years ago
Permalink

Comment has been collapsed.

hey, functional programming is fun. this is an old project from uni I started in Haskell, so why not. plus I do like lazy evaluation.

11 years ago
Permalink

Comment has been collapsed.

Neat!

11 years ago
Permalink

Comment has been collapsed.

Brilliant, I used to use the old one when making giveaways, I'm happy to use the new one!

11 years ago
Permalink

Comment has been collapsed.

Perfect, good job kt

11 years ago
Permalink

Comment has been collapsed.

I think you might've forgotten to put the socket.io lib in the repo. Or did you leave it out intentionally?

11 years ago
Permalink

Comment has been collapsed.

You usually install dependencies with npm install, which should install socket.io along with the others specified in the package.json. No need to have them on git.

11 years ago
Permalink

Comment has been collapsed.

Ah right. I actually didn't even notice the package.json file. Silly me.

11 years ago
Permalink

Comment has been collapsed.

Updated.

  • You can log in now, allowing you to quickly access the groups you're member of and your friend's wishlist Example
  • Games are cached locally for 15 days, thus eliminating lots of useless queries.
  • Profiles are cached locally for 3 days for groups with < 200 members.
Deleting the cache is as easy as localStorage.clear(), albeit there's no link for that atm.
11 years ago
Permalink

Comment has been collapsed.

Awesome update! Thank you so much :D

11 years ago
Permalink

Comment has been collapsed.

Love the update :)

11 years ago
Permalink

Comment has been collapsed.

shaddap sleepeh, no1 lieks u

11 years ago
Permalink

Comment has been collapsed.

;_;

11 years ago
Permalink

Comment has been collapsed.

How excited am I about this new wishlist? Very.

How bummed am I that I can't get it to work for me? Majorly.

I'm running Firefox with Java enabled, port 8000 is open on the router, and I'm trying to find what's blocking the list. The fact that IE 10 isn't pulling it up, either, leads me to believe it's still the router, but I passed the winsockets test with flying colors. All the ports are open and working.

Sigh...

11 years ago
Permalink

Comment has been collapsed.

I also found an little bug with the sorting algorithm, where it seemed to favour putting them in alphabetical order rather than the number of times it was wishlist-ed occasionally. Screenshots. Names were removed because apparently I have too much time on my hands.

It sorts itself out when I refreshed the page, though it's not any sort of a big problem to begin with.
Just a heads up, really. Appreciate the work, mate! ♥

11 years ago
Permalink

Comment has been collapsed.

This also happened to me. I'd suggest to just forget about sorting by alphabet, and stick to how many people in a group wishlisted a game. Trying to sort the games by alphabet when the amount of people who wishlisted is the same doesn't present any useful information anyway. Though, people might beg to differ on that :T

EDIT: It seems that the cause of this problem is due to the sorting function called after the client side script receives info about a user, rather than being called after updating the total number of a game being wishlisted.

11 years ago
Permalink

Comment has been collapsed.

Yarrr! We meet again!
It's not useful, but it is pretty cool :P

11 years ago
Permalink

Comment has been collapsed.

That's partly due to the new caching, which doesn't always sort the list, yeah.

Which is in part because it'd make little sense to sort two times in a row while no actual results are displayed.

11 years ago
Permalink

Comment has been collapsed.

Was just gonna make a pull request to change the invocation of sortStuff to the end of processCurrentMember, but it seems like you've figured it out already.

11 years ago
Permalink

Comment has been collapsed.

Hey, so far so good. I like the clean look too :)

11 years ago
Permalink

Comment has been collapsed.

Updated.

  • Sorting works and is less cpu-intensive when you have loads of cached people.
  • You can check who owns a game in a group now by appending /appID to the urls. Example

However, I don't have any clue on how to access a list of games on Steam, thus I'm not sure how to put it into a nice GUI apart from asking for the App ID. And that's like stooopid.

11 years ago
Permalink

Comment has been collapsed.

YEAAAAAAAAAAAAAH BABY!

11 years ago
Permalink

Comment has been collapsed.

Good stuff

11 years ago
Permalink

Comment has been collapsed.

Updated.

  • actual interface to the group checker - if you're logged in, it'll offer your own groups and friends list to pick from, otherwise just a textbox to enter the group url (like 'giftofgiving'). Looking for DLCs may not give you the expected results.
11 years ago
Permalink

Comment has been collapsed.

503 :(

What happened?

11 years ago
Permalink

Comment has been collapsed.

Strange things.

11 years ago
Permalink

Comment has been collapsed.

Closed 10 years ago by kt.