Take the 2-minute tour ×
Stack Apps is a question and answer site for apps, scripts, and development with the Stack Exchange API. It's 100% free, no registration required.

Stack Exchange now updates your reputation score in real time. There is no more need to install this extension.

Screenshot

Screenshot

About

This userscript, based on SOApi.js, injects itself in all SE pages and polls the API for reputation changes every 60 seconds.

When your reputation changes, this is quietly announced at the top of the page and the top reputation counter is joyfully updated.

The notification is displayed using the .hot class, ensuring each site gets design-appropriate notifications.

If you are on a per-site meta (MSO excluded) updates are fetched from the parent site instead.

API calls use detail

Exactly one API call is made per tab per 60 seconds, starting from the 60th second spent on the window. Hence, if you're quickly flipping through pages no call is made. This may still eat your thousand requests per day pretty fast if you leave many tabs open.

Technically, no two identical requests are sent, unless by multiple tabs indipendently or one of them fails for any reason.

Demo

To "demo" what happens when a reputation change is detected, go to the SE site you visit the most and paste this in the javascript console:

_start_SO_Live_debug()
setTimeout(SO_Live_demo, 7000)

This will make the userscript behave as if all rep changes that you had in the last month happened in the last 60 seconds. The reputation score is not reset to its actual value after this.

License

Copyright (c) 2010.

The jQuery library, SOApi.js and my code are licensed under the MIT license.

Download

  • View Source
  • Install: you don't need this extension any longer! Stack Exchange added this feature on its own.

Platform

This user script is actively tested on Chrome and Chromium only.

However, it should also run on Firefox through Greasemonkey, Opera (setup how-to). If this works on Internet Explorer through Trixie, all the better.

Contact

  • Email me at badpazzword@gmail.com

Code

The code is in this git repository. Click Fork and get hacking!

Patches/forks welcome. Here are some ideas for improvement, in order of priority:

  1. better error handling - reschedule failed requests
  2. better handling of overlapping lightweight_notify() calls
  3. disable updating when the tab isn't focused
  4. use HTTP5 storage to keep track of fill you in on rep updates while you weren't watching
  5. when on per site metas, either grab the live reputation score ASAP or do nothing at all
  6. code refactoring into something that doesn't make you want to puke
share|improve this question
    
If greasemonkey modifications belong to MSO rather than StackApps, I'm sorry. I assume the relevant migration path is available :) –  badp Oct 17 '10 at 23:19
    
Running the demo here may be quite uneventful if you didn't have any rep change in the last month on StackApps... –  badp Oct 17 '10 at 23:20
    
Can we please have a screenshot? –  Nathan Osman Oct 17 '10 at 23:20
2  
@George sure. Added. –  badp Oct 17 '10 at 23:24
    
@badp: +1 I like it! –  Nathan Osman Oct 17 '10 at 23:27
2  
Its OK for this to be on StackApps (it is using the API after all), but please follow the template. –  Kevin Montrose Oct 18 '10 at 0:29
1  
badp- you might want to bump your polling rate to 60 seconds to comply with TOS. Other than that, pretty smooth. –  Sky Sanders Oct 18 '10 at 1:06
    
@Kevin complete. –  badp Oct 18 '10 at 5:46
1  
@Sky I wasn't even aware there were Conscious use of the API polling guidelines to begin with... I guess I shall change the polling to 60 seconds, then. –  badp Oct 18 '10 at 5:49
1  
+1, but SO Live told you that already didn't it. –  instanceofTom Oct 29 '10 at 0:13
    
Avid chatter? There's a chat edition now too! –  badp Oct 30 '10 at 16:12
    
You can also install in Safari using GreaseKit. I wrote a blog post on installing user scripts in Safari: mosheberman.com/wordpress/?p=284 –  Moshe Dec 20 '10 at 0:57
add comment

You must log in to answer this question.

Browse other questions tagged .