import urllib2
import re
dict = {
'en': u'English',
'de': u'German',
'fr': u'French',
'pl': u'Polish',
'ja': u'Japanese',
'nl': u'Dutch',
'it': u'Italian',
'pt': u'Portuguese',
'es': u'Spanish',
'sv': u'Swedish',
'ru': u'Russian',
'zh': u'Chinese',
'fi': u'Finnish',
'no': u'Norwegian (Bokmål)',
'vo': u'Volapük',
'ro': u'Romanian',
'tr': u'Turkish',
'eo': u'Esperanto',
'ca': u'Catalan',
'sk': u'Slovak',
'cs': u'Czech',
'uk': u'Ukrainian',
'hu': u'Hungarian',
'da': u'Danish',
'lmo': u'Lombard',
'id': u'Indonesian',
'he': u'Hebrew',
'lt': u'Lithuanian',
'sr': u'Serbian',
'sl': u'Slovenian',
'bg': u'Bulgarian',
'ko': u'Korean',
'ar': u'Arabic',
'et': u'Estonian',
'te': u'Telugu',
'hr': u'Croatian',
'new': u'Newar / Nepal Bhasa',
'ceb': u'Cebuano',
'gl': u'Galician',
'th': u'Thai',
'el': u'Greek',
'nn': u'Norwegian (Nynorsk)',
'fa': u'Persian',
'vi': u'Vietnamese',
'ms': u'Malay',
'bpy': u'Bishnupriya Manipuri',
'eu': u'Basque',
'bs': u'Bosnian',
'simple': u'Simple English',
'lb': u'Luxembourgish',
'is': u'Icelandic',
'sq': u'Albanian',
'ka': u'Georgian',
'az': u'Azeri',
'br': u'Breton',
'bn': u'Bengali',
'la': u'Latin',
'io': u'Ido',
'hi': u'Hindi',
'sh': u'Serbo-Croatian',
'mr': u'Marathi',
'su': u'Sundanese',
'mk': u'Macedonian',
'nap': u'Neapolitan',
'cy': u'Welsh',
'ta': u'Tamil',
'lv': u'Latvian',
'scn': u'Sicilian',
'nds': u'Low Saxon',
'pms': u'Piedmontese',
'oc': u'Occitan',
'jv': u'Javanese',
'tl': u'Tagalog',
'ku': u'Kurdish',
'ast': u'Asturian',
'wa': u'Walloon',
'af': u'Afrikaans',
'tg': u'Tajik',
'be-x-old': u'Belarusian (Tarashkevitsa)',
'roa-tara': u'Tarantino',
'an': u'Aragonese',
'be': u'Belarusian',
'ru-sib': u'Siberian/North Russian',
'ksh': u'Ripuarian',
'ht': u'Haitian',
'cv': u'Chuvash',
'ur': u'Urdu',
'mi': u'Maori',
'sw': u'Swahili',
'vec': u'Venetian',
'fy': u'West Frisian',
'uz': u'Uzbek',
'zh-yue': u'Cantonese',
'ga': u'Irish',
'co': u'Corsican',
'qu': u'Quechua',
'kn': u'Kannada',
'gd': u'Scottish Gaelic',
'ml': u'Malayalam',
'yi': u'Yiddish',
'yo': u'Yoruba',
'nah': u'Nahuatl',
'bat-smg': u'Samogitian',
'pam': u'Kapampangan',
'tt': u'Tatar',
'ia': u'Interlingua',
'sa': u'Sanskrit',
'hsb': u'Upper Sorbian',
'li': u'Limburgian',
'hy': u'Armenian',
'als': u'Alemannic',
'map-bms': u'Banyumasan',
'am': u'Amharic',
'pag': u'Pangasinan',
'zh-min-nan': u'Min Nan',
'nrm': u'Norman',
'fo': u'Faroese',
'se': u'Northern Sami',
'nds-nl': u'Dutch Low Saxon',
'fur': u'Friulian',
'bh': u'Bihari',
'nov': u'Novial',
'war': u'Waray-Waray',
'pi': u'Pali',
'vls': u'West Flemish',
'ilo': u'Ilokano',
'sco': u'Scots',
'frp': u'Franco-Provençal/Arpitan',
'lij': u'Ligurian',
'ne': u'Nepali',
'dv': u'Divehi',
'os': u'Ossetian',
'zh-classical': u'Classical Chinese',
'diq': u'Zazaki',
'mt': u'Maltese',
'kk': u'Kazakh',
'csb': u'Kashubian',
'pdc': u'Pennsylvania German',
'lad': u'Ladino',
'fiu-vro': u'Võro',
'kw': u'Cornish',
'to': u'Tongan',
'rm': u'Romansh',
'bar': u'Bavarian',
'ps': u'Pashto',
'tk': u'Turkmen',
'ang': u'Anglo-Saxon',
'ln': u'Lingala',
'mn': u'Mongolian',
'jbo': u'Lojban',
'tpi': u'Tok Pisin',
'or': u'Oriya',
'roa-rup': u'Aromanian',
'wo': u'Wolof',
'ty': u'Tahitian',
'eml': u'Emilian-Romagnol',
'ky': u'Kirghiz',
'arc': u'Assyrian Neo-Aramaic',
'ig': u'Igbo',
'mo': u'Moldovan',
'gu': u'Gujarati',
'km': u'Khmer',
'ie': u'Interlingue',
'kab': u'Kabyle',
'ks': u'Kashmiri',
'wuu': u'Wu',
'glk': u'Gilaki',
'zea': u'Zealandic',
'mg': u'Malagasy',
'tet': u'Tetum',
'cu': u'Old Church Slavonic',
'so': u'Somali',
'sc': u'Sardinian',
'gv': u'Manx',
'kg': u'Kongo',
'udm': u'Udmurt',
'si': u'Sinhalese',
'iu': u'Inuktitut',
'pa': u'Punjabi',
'rmy': u'Romani',
'cbk-zam': u'Zamboanga Chavacano',
'na': u'Nauruan',
'haw': u'Hawaiian',
'lo': u'Lao',
'bo': u'Tibetan',
'sd': u'Sindhi',
'chr': u'Cherokee',
'ba': u'Bashkir',
'got': u'Gothic',
'om': u'Oromo',
'ee': u'Ewe',
'ti': u'Tigrinya',
'as': u'Assamese',
'sm': u'Samoan',
'ay': u'Aymara',
'ug': u'Uyghur',
'hak': u'Hakka',
'av': u'Avar',
'cdo': u'Min Dong',
'mzn': u'Mazandarani',
'bm': u'Bambara',
'ce': u'Chechen',
'nv': u'Navajo',
'pap': u'Papiamentu',
'cr': u'Cree',
'pih': u'Norfolk',
'zu': u'Zulu',
'rw': u'Kinyarwanda',
'my': u'Burmese',
'tlh': u'Klingon',
'xh': u'Xhosa',
've': u'Venda',
'ik': u'Inupiak',
'dz': u'Dzongkha',
'gn': u'Guarani',
'ss': u'Swati',
'ab': u'Abkhazian',
'kl': u'Greenlandic',
'kv': u'Komi',
'bug': u'Buginese',
'bi': u'Bislama',
'ak': u'Akan',
'st': u'Sesotho',
'bxr': u'Buryat (Russia)',
'tn': u'Tswana',
'xal': u'Kalmyk',
'tw': u'Twi',
'ny': u'Chichewa',
'fj': u'Fijian',
'ff': u'Fula',
'ha': u'Hausa',
'tum': u'Tumbuka',
'sn': u'Shona',
'za': u'Zhuang',
'ki': u'Kikuyu',
'sg': u'Sango',
'ii': u'Sichuan Yi',
'lg': u'Luganda',
'cho': u'Choctaw',
'lbe': u'Lak',
'rn': u'Kirundi',
'chy': u'Cheyenne',
'ts': u'Tsonga',
'mh': u'Marshallese',
'ch': u'Chamorro',
'ng': u'Ndonga',
'aa': u'Afar',
'kj': u'Kuanyama',
'ho': u'Hiri Motu',
'mus': u'Muscogee',
'kr': u'Kanuri',
'hz': u'Herero',
'tokipona': u'Tokipona',
}
def outputHeader(outFileHandle):
print '{| class="wikitable"'
print '|-'
print '! width="80" |Language'
print '! width="50" |Code'
print '! width="80" |Total Edits'
print >> outFileHandle, '{| class="wikitable"'
print >> outFileHandle, '|-'
print >> outFileHandle, '! width="80" |Language'
print >> outFileHandle, '! width="50" |Code'
print >> outFileHandle, '! width="80" |Total Edits'
def appendContribs(outFileHandle, langCode, count):
if count != None:
print '|-'
print '|align="center" |'+getLanguage(langCode)
print '|align="center" |'+langCode
print '|align="center" |'+count
print >> outFileHandle, '|-'
print >> outFileHandle, '|align="center" |'+getLanguage(langCode)
print >> outFileHandle, '|align="center" |'+langCode
print >> outFileHandle, '|align="center" |'+count
def outputFooter(outFileHandle, totalEditCount):
print '|-'
print '|align="center" style="background-color:#ABCDEF;" | Total'
print '|align="center" style="background-color:#ABCDEF;" | (all)'
print '|align="center" style="background-color:#ABCDEF;" |'+ str(totalEditCount)
print >> outFileHandle, '|-'
print >> outFileHandle, '|align="center" style="background-color:#ABCDEF;" |Total'
print >> outFileHandle, '|align="center" style="background-color:#ABCDEF;" |(all)'
print >> outFileHandle, '|align="center" style="background-color:#ABCDEF;" |'+str(totalEditCount)
print '|-'
print '|}'
print >> outFileHandle, '|-'
print >> outFileHandle, '|}'
def getLanguage(code):
return dict.get(code, ' ')
def getData(userName, langCode, wikiFamily):
response = urllib2.urlopen(urllib2.Request('http://tools.wikimedia.de/~interiot/cgi-bin/Tool1/wannabe_kate?username='+userName+'&site='+langCode+'.'+wikiFamily+'.org'))
data = response.read()
return data
def getEditCount(data):
editCountR = re.compile(r'total<td>([0-9]+)\n')
for count in editCountR.findall(data):
count = count.lower()
return count
def main():
totalEditCount = 0
outFileHandle = open('./contribs.txt','w')
outputHeader(outFileHandle)
inFileHandle = open('E:/xampp/pywikipedia2/user-config.py','r')
data = inFileHandle.read()
userInfoR = re.compile(r'usernames\[\'([a-z]+)\'\]\[\'(.+)\'\] = u\'(.+)\'')
for wikiFamily, langCode, userName in userInfoR.findall(data):
data = getData(userName, langCode, wikiFamily)
count = getEditCount(data)
appendContribs(outFileHandle, langCode, count)
if count != None:
totalEditCount += int(count)
outputFooter(outFileHandle, totalEditCount)
if __name__ == "__main__":
try:
main()
finally:
print ""