వాడుకరి: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()