ഉപയോക്താവ്:DragonBot/Contributions/statBot.py

വിക്കിപീഡിയ, ഒരു സ്വതന്ത്ര വിജ്ഞാനകോശം.
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 ""