@Kent: thanks for the script. It is kool.

Here is 2010 list of Top-20 (as of now):

2010 (1155 posts, 204 posters)
====
Alan Gauld 127 (11.0%)
Kent Johnson 108 (9.4%)
spir 52 (4.5%)
Wayne Watson 46 (4.0%)
Luke Paireepinart 32 (2.8%)
Shashwat Anand 30 (2.6%)
Wayne Werner 29 (2.5%)
Steven D'Aprano 28 (2.4%)
Stefan Behnel 24 (2.1%)
Dave Angel 22 (1.9%)
Lie Ryan 19 (1.6%)
Hugo Arts 16 (1.4%)
Benno Lang 14 (1.2%)
David 14 (1.2%)
Giorgio 14 (1.2%)
Serdar Tumgoren 14 (1.2%)
Grigor Kolev 13 (1.1%)
Eike Welk 13 (1.1%)
Christian Witts 12 (1.0%)
invincible patriot 12 (1.0%)

No more spamming now :P

~l0nwlf

On Fri, Feb 26, 2010 at 9:10 AM, Shashwat Anand <anand.shash...@gmail.com>wrote:

> How about Top-40 posters (so that I can make the cut..Yayyy) :P
>
>
> 2009 (7730 posts, 709 posters)
> ====
> Alan Gauld 969 (12.5%)
> Kent Johnson 804 (10.4%)
> Dave Angel 254 (3.3%)
> spir 254 (3.3%)
> Wayne Watson 222 (2.9%)
> bob gailer 191 (2.5%)
> Lie Ryan 186 (2.4%)
> David 127 (1.6%)
> Emile van Sebille 115 (1.5%)
> Wayne 112 (1.4%)
> Sander Sweers 111 (1.4%)
> Serdar Tumgoren 100 (1.3%)
> Luke Paireepinart 99 (1.3%)
> wesley chun 99 (1.3%)
> W W 74 (1.0%)
> Marc Tompkins 72 (0.9%)
> A.T.Hofkamp 71 (0.9%)
> Robert Berman 68 (0.9%)
> vince spicer 63 (0.8%)
> Emad Nawfal 62 (0.8%)
> Andre Engels 61 (0.8%)
> Rich Lovely 60 (0.8%)
> Christian Witts 57 (0.7%)
> Martin Walsh 51 (0.7%)
> Eduardo Vieira 47 (0.6%)
> Tim Golden 47 (0.6%)
> prasad rao 47 (0.6%)
> Dinesh B Vadhia 47 (0.6%)
> John Fouhy 42 (0.5%)
> Norman Khine 41 (0.5%)
> Che M 41 (0.5%)
> Stephen Nelson-Smith 40 (0.5%)
> Mark Tolonen 40 (0.5%)
> Chris Fuller 38 (0.5%)
> Stefan Behnel 35 (0.5%)
> Wayne Werner 34 (0.4%)
> Steve Willoughby 32 (0.4%)
> Shashwat Anand 32 (0.4%)
> Eike Welk 31 (0.4%)
> Albert-Jan Roskam 30 (0.4%)
>
> ~l0nwlf
>
>
> On Fri, Feb 26, 2010 at 9:04 AM, Shashwat Anand 
> <anand.shash...@gmail.com>wrote:
>
>> nice. Kudos to all top posters. May be I should search my rank ;)
>>
>> ~l0nwlf
>>
>>
>> On Fri, Feb 26, 2010 at 8:23 AM, Kent Johnson <ken...@tds.net> wrote:
>>
>>> It's not really about keeping score :-), but once again I've compiled
>>> a list of the top 20 posters to the tutor list for the last year. For
>>> 2009, the rankings are
>>>
>>> 2009 (7730 posts, 709 posters)
>>> ====
>>> Alan Gauld 969 (12.5%)
>>> Kent Johnson 804 (10.4%)
>>> Dave Angel 254 (3.3%)
>>> spir 254 (3.3%)
>>> Wayne Watson 222 (2.9%)
>>> bob gailer 191 (2.5%)
>>> Lie Ryan 186 (2.4%)
>>> David 127 (1.6%)
>>> Emile van Sebille 115 (1.5%)
>>> Wayne 112 (1.4%)
>>> Sander Sweers 111 (1.4%)
>>> Serdar Tumgoren 100 (1.3%)
>>> Luke Paireepinart 99 (1.3%)
>>> wesley chun 99 (1.3%)
>>> W W 74 (1.0%)
>>> Marc Tompkins 72 (0.9%)
>>> A.T.Hofkamp 71 (0.9%)
>>> Robert Berman 68 (0.9%)
>>> vince spicer 63 (0.8%)
>>> Emad Nawfal 62 (0.8%)
>>>
>>> Alan, congratulations, you pulled ahead of me for the first time in
>>> years! You posted more than in 2008, I posted less. Overall posts are
>>> up from last year, which was the slowest year since I started
>>> measuring (2003).
>>>
>>> Thank you to everyone who asks and answers questions here!
>>>
>>> The rankings are compiled by scraping the monthly author pages from
>>> the tutor archives, using Beautiful Soup to extract author names. I
>>> consolidate counts for different capitalizations of the same name but
>>> not for different spellings. The script is below.
>>>
>>> Kent
>>>
>>> ''' Counts all posts to Python-tutor by author'''
>>> # -*- coding: latin-1 -*-
>>> from datetime import date, timedelta
>>> import operator, urllib2
>>> from BeautifulSoup import BeautifulSoup
>>>
>>> today = date.today()
>>>
>>> for year in range(2009, 2010):
>>>    startDate = date(year, 1, 1)
>>>    endDate = date(year, 12, 31)
>>>    thirtyOne = timedelta(days=31)
>>>    counts = {}
>>>
>>>    # Collect all the counts for a year by scraping the monthly author
>>> archive pages
>>>    while startDate < endDate and startDate < today:
>>>        dateString = startDate.strftime('%Y-%B')
>>>
>>>        url = 'http://mail.python.org/pipermail/tutor/%s/author.html'
>>> % dateString
>>>        data = urllib2.urlopen(url).read()
>>>        soup = BeautifulSoup(data)
>>>
>>>        li = soup.findAll('li')[2:-2]
>>>
>>>        for l in li:
>>>            name = l.i.string.strip()
>>>            counts[name] = counts.get(name, 0) + 1
>>>
>>>        startDate += thirtyOne
>>>
>>>    # Consolidate names that vary by case under the most popular spelling
>>>    nameMap = dict() # Map lower-case name to most popular name
>>>
>>>    # Use counts.items() so we can delete from the dict.
>>>    for name, count in sorted(counts.items(),
>>> key=operator.itemgetter(1), reverse=True):
>>>       lower = name.lower()
>>>       if lower in nameMap:
>>>          # Add counts for a name we have seen already and remove the
>>> duplicate
>>>          counts[nameMap[lower]] += count
>>>          del counts[name]
>>>       else:
>>>          nameMap[lower] = name
>>>
>>>    totalPosts = sum(counts.itervalues())
>>>    posters = len(counts)
>>>
>>>    print
>>>    print '%s (%s posts, %s posters)' % (year, totalPosts, posters)
>>>    print '===='
>>>    for name, count in sorted(counts.iteritems(),
>>> key=operator.itemgetter(1), reverse=True)[:20]:
>>>        pct = round(100.0*count/totalPosts, 1)
>>>        print '%s %s (%s%%)' % (name.encode('utf-8',
>>> 'xmlcharrefreplace'), count, pct)
>>>    print
>>> _______________________________________________
>>> Tutor maillist  -  Tutor@python.org
>>> To unsubscribe or change subscription options:
>>> http://mail.python.org/mailman/listinfo/tutor
>>>
>>
>>
>
_______________________________________________
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor

Reply via email to