వాడుకరి:Mpradeepbot/mpc.allWikiStats.py

"""
ఈ ప్రోగ్రామును ఒకేసారి అన్ని వికీపీడియాలపై నడపాలి.  అందుకుగాను పైవికీపీడియా ఫోల్డరును భాషకొకటి చప్పున సృష్టించుకోవాలి.
అలా సృష్టించుకున్న తరువాత ప్రతీ భాష ఫోల్డరులో ఆ భాష వికీపీడియాకు తగినట్లుగా user-config.py ఫైలును నిర్మించండి.
ఉదాహరణకు బాటును బెంగాలీ భాషపై నడపాలనుకుంటున్నప్పుడు మీ user-config.py ఫైలు ఈ క్రింది విధముగా ఉండాలి:

mylang='bn'
family='wikipedia'
usernames['wikipedia']['bn'] = u'Mpradeep'

ఈ ప్రోగ్రాము వికీపీడియాలో ఎటువంటి మార్పులు-చేర్పులు చేయదు కాబట్టి దీనిని నడిపుటకు బాటు హోదా అవసరం లేదు...
బాటు తయారు చేసిన గణాంకాలన్నీ "mpc.allWikiStats.log" అనే ఫైలులో చేరతాయి...
"""


import wikipedia, pagegenerators, catlib, config, codecs

firstPageTitle = u'!'

logfile = codecs.open('mpc.allWikiStats.log', encoding='utf-8', mode='wb')

namespace = wikipedia.Page(wikipedia.getSite(), firstPageTitle).namespace()
firstPageTitle = wikipedia.Page(wikipedia.getSite(), firstPageTitle).titleWithoutNamespace()
gen = pagegenerators.AllpagesPageGenerator(firstPageTitle, namespace)

preloadingGen = pagegenerators.PreloadingGenerator(gen, pageNumber = 500)

redirct = 0
locked  = 0
lt2     = 0
gt2lt5  = 0
gt5lt10 = 0
gt10    = 0
total   = 0
eng     = 0

for page in preloadingGen:
    try:
      # Load the page's text from the wiki
      pageData = page.get()
      if not page.canBeEdited():
         wikipedia.output(u'Skipping locked page %s' % page.title())
         locked = locked + 1
         continue
    except wikipedia.NoPage:
       wikipedia.output(u'Page %s not found' % page.title())
       continue
    except wikipedia.IsRedirectPage:
       wikipedia.output(u'Page %s is redirect page' % page.title())
       redirct = redirct + 1
       continue

    total = total + len(pageData)
    for line in pageData:
      for c in line:
        if c.islower() or c.isupper():
          eng = eng + 1

    # Do the accessment of the pages
    if len(pageData) <= 2048:
        # less than 5KB but greater than 2KB
        print u'less than 2KB'
        lt2 = lt2 +1
    elif len(pageData) <= 5120 and len(pageData) > 2048:
        # less than 5KB but greater than 2KB
        print u'less than 5KB but greater than 2KB'
        gt2lt5 = gt2lt5 +1
    elif len(pageData) <= 10240 and len(pageData) > 5120:
        # less than 10KB but greater than 5KB
        print u'less than 10KB but greater than 5KB'
        gt5lt10 = gt5lt10 + 1
    elif len(pageData) > 10240:
        # less than 5KB but greater than 2KB
        print u'less than 10KB but greater than 5KB'
        gt10 = gt10 + 1

# write the results to a file
print u'locked pages = ' + str(locked)
logfile.write(u'locked pages = ' + str(locked) + u'\r\n')
print u'redirect pages = ' + str(redirct)
logfile.write(u'redirect pages = ' + str(redirct) + u'\r\n')

print u'less than 2KB = ' + str(lt2)
logfile.write(u'less than 2KB = ' + str(lt2) + u'\r\n')
print u'less than 5KB = ' + str(gt2lt5)
logfile.write(u'less than 5KB = ' + str(gt2lt5) + u'\r\n')
print u'less than 10KB = ' + str(gt5lt10)
logfile.write(u'less than 10KB = ' + str(gt5lt10) + u'\r\n')
print u'more than 10KB = ' + str(gt10)
logfile.write(u'more than 10KB = ' + str(gt10) + u'\r\n')
print u'total articles = ' + str(lt2+gt2lt5+gt5lt10+gt10)
logfile.write(u'total good articles = ' + str(lt2+gt2lt5+gt5lt10+gt10) + u'\r\n')

print u'english percent = ' + str(eng) + u'/' + str(total) + u'=' + str(((eng*1.0)/total)*100.0)
logfile.write(u'english percent = ' + str(eng) + u'/' + str(total) + u'=' + str(((eng*1.0)/total)*100.0) + u'\r\n')

# close all the open handles
logfile.close()