Skip to content

Instantly share code, notes, and snippets.

@vssun
Created April 23, 2012 15:53
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save vssun/2471819 to your computer and use it in GitHub Desktop.
Save vssun/2471819 to your computer and use it in GitHub Desktop.
ദേജാവു ശൈലിയിലുള്ള താളുകളിൽ നിന്ന് അദ്ധ്യായങ്ങൾ തിരിക്കാൻ വിക്കിഗ്രന്ഥശാലക്കായി. പുസ്തകത്തിന്റെ പ്രധാനതാളിന്റെ ഉപതാളുകളായി അദ്ധ്യായങ്ങൾ നിർമ്മിക്കുന്നു. പ്രധാനതാളിൽ ഉള്ളടക്കപ്പട്ടിക കൂട്ടിച്ചേർക്കുന്നു. അദ്ധ്യായങ്ങളുടെ പട്ടിക xls ഫയലിൽ തയാറാക്കിയിരിക്കണം
#!/usr/bin/python
# -*- coding: utf-8 -*-
"""
ദേജാവു ശൈലിയിലുള്ള താളുകളിൽ നിന്ന് അദ്ധ്യായങ്ങൾ തിരിക്കാൻ
വിക്കിഗ്രന്ഥശാലക്കായി.
പുസ്തകത്തിന്റെ പ്രധാനതാളിന്റെ ഉപതാളുകളായി അദ്ധ്യായങ്ങൾ നിർമ്മിക്കുന്നു. പ്രധാനതാളിൽ ഉള്ളടക്കപ്പട്ടിക കൂട്ടിച്ചേർക്കുന്നു. അദ്ധ്യായങ്ങളുടെ പട്ടിക xls ഫയലിൽ തയാറാക്കിയിരിക്കണം.
നിർമ്മിച്ചത്: സുനിൽ വി.എസ്.
തിയതി: 2012-04-21
"""
import wikipedia
import xlrd
#പ്രധാന പ്രോഗ്രാം ഇവിടെ തുടങ്ങുന്നു.
#ആവശ്യത്തിനനുസരിച്ച് മാറ്റങ്ങൾ ഇതിനു താഴെ വരുത്തുക
siteFamily = 'wikisource'
siteLangCode = 'ml'
xlsFile = 'ramarajabahadurindex.xls' #അദ്ധ്യായങ്ങളുടെ പേരുകൾ,അവ തുടങ്ങുന്നതും അവസാനിക്കുന്നതുമായ താളുകളുടെ സംഖ്യകൾ എന്നിവ അടങ്ങിയ മൂന്നു നിരകളുള്ള xls ഫയൽ ആവശ്യമാണ്.
maxRows = 38 #എത്ര വരികളിൽ വരെ വിവരങ്ങളുണ്ട്?
titlePage = u'രാമരാജാബഹദൂർ' #പുസ്തകത്തിന്റെ പേര് (പ്രധാന മേഖലയിലെ താളിന്റെ പേര്)
author = u'സി.വി. രാമൻപിള്ള' #പുസ്തകത്തിന്റെ രചയിതാവ്
djvuFile = u'Ramarajabahadoor.djvu' #ദേജാവൂ ഫയലിന്റെ പേര്
divClass = u'novel' #ഏതു ക്ലാസ് ഉപയോഗിക്കണം novel/prose ഇവയിലേതെങ്കിലും നൽകാം
#ആവശ്യത്തിനനുസരിച്ച് മാറ്റങ്ങൾ ഇതിനു മുകളിൽ വരുത്തുക
wikiSite = wikipedia.Site(code=siteLangCode, fam=siteFamily)
myWorkBook=xlrd.open_workbook(xlsFile)
mySheet = myWorkBook.sheet_by_index(0)
#ഇതിനു താഴെയുള്ള ഭാഗം അദ്ധ്യായങ്ങൾ തിരിക്കാനുപയോഗിക്കുന്നു.
myPreviousPage=u'' #ആദ്യത്തെ അദ്ധ്യായത്തിന് മുൻപിലുള്ള താൾ ഇല്ല.
myPreviousPageTitle=u'ഉള്ളടക്കം' #ആദ്യത്തെ അദ്ധ്യായത്തിന് മുൻപിലുള്ള താളായി, ഉള്ളടക്കമടങ്ങുന്ന പ്രധാനതാളിനെത്തന്നെ ചൂണ്ടിക്കാണിക്കുന്നതിനാൽ
myIndexText=u'\n== ഉള്ളടക്കം ==' #പ്രധാനതാളിൽ ചേർക്കേണ്ട ഉള്ളടക്കപ്പട്ടികയുടെ തലക്കെട്ട്.
for myRow in range (0,maxRows):
print myRow
if myRow==0:
myPageName=mySheet.cell(rowx=myRow,colx=0).value #xls ഫയലിലെ ആദ്യത്തെ നിരയിൽ നിന്ന് അദ്ധ്യായത്തിന്റെ പേര് എടുക്കുന്നു.
myPageStart=str(mySheet.cell(rowx=myRow,colx=1).value)[:-2] #രണ്ടാമത്തെ നിരയിൽ നിന്ന് തുടങ്ങുന്ന പേജ് നമ്പർ, നമ്പർ ആയതിനാൽ .0 എന്ന വാൽ ഒഴിവാക്കുകയും ചെയ്യുന്നു.
myPageEnd=str(mySheet.cell(rowx=myRow,colx=2).value)[:-2] #മൂന്നാംനിര, അവസാനിക്കുന്ന പേജ് നമ്പർ
if myRow<maxRows-1:
myNextPage= mySheet.cell(rowx=myRow+1,colx=0).value #അടുത്ത അദ്ധ്യായം
else:
myNextPage=u''
print myPageName, myPageStart,myPageEnd, "prev:", myPreviousPage, "next:", myNextPage
#താഴത്തെ മൂന്നുവരികളിൽ, മുകളിൽ സമാഹരിച്ച വിവരങ്ങൾ header2 എന്ന ഫലകം ഉപയോഗിച്ച് (പ്രധാനതാളിന്റെ ഉപതാളുകളിൽ) ചേർക്കുന്നു.
myText=u'{{header2\n | title = [[../]]\n | author = ' + author + u'\n | section = [[../' + myPageName + u'|' + myPageName + u']]\n | previous = [[../' + myPreviousPage + u'|' + myPreviousPageTitle + u']]\n | next = [[../' + myNextPage + u'|' + myNextPage + u']]\n | notes =\n}}\n<div class="' + divClass + u'">\n<pages index="' + djvuFile + u'" from=' + myPageStart + u' to=' + myPageEnd + u' />\n</div>\n[[വർഗ്ഗം:' + titlePage + u']]'
myWikiPage = wikipedia.Page(site=wikiSite, title= titlePage + '/' + myPageName)
myWikiPage.put(myText,comment=u'അദ്ധ്യായങ്ങളായി തിരിക്കുന്നു')
#ഉള്ളടക്കപ്പട്ടികയിലേക്ക് വിവരങ്ങൾ ചേർക്കുന്നു.
myIndexText=myIndexText + '\n# [[/' + myPageName + u'|' + myPageName + u']]'
#അടുത്ത താളിലേക്ക് പോകാം
myPreviousPage=myPageName
myPreviousPageTitle=myPreviousPage
myPageName=myNextPage
#താഴെ ഉള്ളടക്കപ്പട്ടിക പ്രധാനതാളിലേക്ക് കൂട്ടിച്ചേർക്കുന്നു.
myWikiPage = wikipedia.Page(site=wikiSite, title= titlePage )
myWikiPage.put (myWikiPage.get() + myIndexText, comment = u'പ്രധാനതാളിൽ ഉള്ളടക്കപ്പട്ടിക കൂട്ടിച്ചേർക്കുന്നു')
wikipedia.output(myIndexText)
wikipedia.stopme()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment