import csv, os, sys, shutil, pathlib, subprocess, re, time, pywikibot
##இந்நிரலானது மெய்ப்புக்கண்ட பொருளடக்கப் பக்கத்திலுள்ள ஒவ்வொரு பக்கத்திற்கும், நூற்துணைப்பக்கங்களை, விக்கிமூலத்தில் உருவாக்கும்.
விளைவிடு = print
அந்நூலாசிரியர் = 'இராபர்ட்டு கால்டுவெல்'.strip()
விளைவிடு('தேவை-1: இந்நூலாசிரியர் →→→→ ' + அந்நூலாசிரியர் + '\n')
மொழிபெயர்ப்பாளர்1 = 'உள்ளீட்டு நூற்த்தொகுப்பு வார்ப்புருவில் எழுதியுள்ளேன்.'
விளைவிடு('தேவை-2: மொழிபெயர்ப்பாளர் →→→→ ' + மொழிபெயர்ப்பாளர்1 + '\n')
# இதனை அட்டவணை கொண்டு உருவாக்க வேண்டும். அதன் ஒரு பக்கத்தினை எடுத்துக் கொண்டு, உரலியில் மின்னூலின் பக்கம் என்ன என்பதைப் பாருங்கள்.
# பிறகு அப்பக்கத்தில் அச்சாகியுள்ள நூலின் எண்ணைப் பாருங்கள். இரண்டுக்கும் உள்ள வேறுபாடு கீழுள்ள எண் ஆகும்.
பக்கயெண்வேறுபாடு = 19
விளைவிடு('தேவை-3 : பக்கயெண்வேறுபாடு →→→→ ' + str(பக்கயெண்வேறுபாடு) + '\n')
# மூலக்கோப்பு : விரிதாளின் ஐந்து columns உள்ளன. விவரம் :
# நமக்கு அளிக்கப்பட்ட விரிதாள் கோப்பினை, அணித்தரவுக்கோப்பாக மாற்றிக் கொண்டேன். காண்க: https://commons.wikimedia.org/w/index.php?title=File%3ATutorial-tamil-creation-csv-.webm
உள்ளீட்டுக்கோப்பு = 'அணித்தரவுக்கோப்புத்தரவுகள்.csv'# மறவாமல், இக்கோப்பின்முதல்வரியைத் தேவையில்லையெனில் நீக்கிவிடவும்.
விளைவிடு('நிரலால் மாற்றமாகவுள்ள, விக்கி மூலக்கோப்பு = ' + உள்ளீட்டுக்கோப்பு + '\n')
#இதன் கீழுள்ள வரிகள், மூலக்கோப்பில் வெற்றுவரிகளைக் கண்டறிகிறது. பிறகு, மொத்த வரியெண்ணிக்கையைத்தரும்.
with open(உள்ளீட்டுக்கோப்பு) as உள்ளீட்டுக்கோப்பு:
படித்தல் = csv.reader(உள்ளீட்டுக்கோப்பு, delimiter='~',)
உள்ளீட்டுக்கோப்புப்பட்டி = list(படித்தல்)
def பட்டியெண்ணிக்கை(உள்ளீட்டுக்கோப்புப்பட்டி):
return sum(type(el)== type([]) for el in உள்ளீட்டுக்கோப்புப்பட்டி)
உள்ளீட்டுக்கோப்புப்பட்டி2 = filter(None, உள்ளீட்டுக்கோப்புப்பட்டி)
உள்ளீட்டுக்கோப்புப்பட்டி3 = list(உள்ளீட்டுக்கோப்புப்பட்டி2)
def பட்டியெண்ணிக்கை(உள்ளீட்டுக்கோப்புப்பட்டி3):
return sum(type(el)== type([]) for el in உள்ளீட்டுக்கோப்புப்பட்டி3)
#வெற்றுவரிகள் நீக்கியத் தரவினைப்படிகிறேன்.
விளைவிடு(' இக்கோப்பிலுள்ள வெற்று வரிகளை நீக்கியபின், தரவுகளை மாற்றங்களுக்கு எடுக்கிறேன் ...\n')
விளைவிடு(' விரிதாளின் columnA, B, C, D, E, F என்பவை எடுத்துக்கொள்ளப்படுகின்றன ...\n')
# முனையத்தில் இறுதியாக தெரிவதற்காக , கீழுள்ள வரியெண்ணிக்கைகளைத் தருகிறேன்.
emptyNum = பட்டியெண்ணிக்கை(உள்ளீட்டுக்கோப்புப்பட்டி)-பட்டியெண்ணிக்கை(உள்ளீட்டுக்கோப்புப்பட்டி3)
விளைவிடு('\n இக்கோப்பிலுள்ள வெற்று வரிகளின் எண்ணிக்கை = ' + str(emptyNum))
விளைவிடு(' இக்கோப்பிலுள்ள தரவுள்ள வரிகளின் எண்ணிக்கை = ' + str(பட்டியெண்ணிக்கை(உள்ளீட்டுக்கோப்புப்பட்டி3)))
விளைவிடு(' இக்கோப்பிலுள்ள மொத்த சொல்வரியெண்ணிக்கை = ' + str(பட்டியெண்ணிக்கை(உள்ளீட்டுக்கோப்புப்பட்டி)) + '\n')
for வரிசையெண், வரித்தரவு in enumerate(உள்ளீட்டுக்கோப்புப்பட்டி3):
subprocess.call("sed -i `` 1d அணித்தரவுக்கோப்புத்தரவுகள்.csv",shell=True)
#வரித்தரவு2= வரித்தரவு[1:] # தரவிலுள்ள, cloumnA என்ற வரிசையெண்ணை நீக்குகிறேன்.
உள்ளீட்டுக்கோப்புப்பட்டி3_strip = [item.strip() for item in வரித்தரவு] # ஒவ்வொரு வரியின் columnB,C,D ஆகியவற்றை strip செய்கிறேன்.
உள்ளீட்டுக்கோப்புப்பட்டி3_strip_join = str(வரிசையெண்+1) + '. ' + str(உள்ளீட்டுக்கோப்புப்பட்டி3_strip)
உள்ளீட்டுக்கோப்புப்பட்டி3_strip_len = len(உள்ளீட்டுக்கோப்புப்பட்டி3_strip)
if உள்ளீட்டுக்கோப்புப்பட்டி3_strip_len != 6 :
விளைவிடு(' ஏதே ஒரு column இல்லை.' + உள்ளீட்டுக்கோப்புப்பட்டி3_strip_join)
time.sleep(3)
elif உள்ளீட்டுக்கோப்புப்பட்டி3_strip_len == 6 :
#விளைவிடு(' ' + உள்ளீட்டுக்கோப்புப்பட்டி3_strip_join)
time.sleep(1)
துணைப்பக்கப்பெயர் = உள்ளீட்டுக்கோப்புப்பட்டி3_strip[0] # விரிதாளின்படி,columnA, உருவாக்கவுள்ள நூற்த்துணைப்பக்கம்
துணைப்பக்கப்பெயர்பிரி = துணைப்பக்கப்பெயர்.split('/')[0]
அட்டவணைப்பெயர்சுத்தம் = str(துணைப்பக்கப்பெயர்பிரி).strip()
துணைப்பக்கப்பெயர்பிரியெண்1மூன்றிலக்கம் = துணைப்பக்கப்பெயர்.split('/')[-1].split('-')[0]
துணைப்பக்கப்பெயர்பிரியெண்1 = int(துணைப்பக்கப்பெயர்.split('/')[-1].split('-')[0])
துணைப்பக்கப்பெயர்பிரியெண்2 = துணைப்பக்கப்பெயர்.split('/')[-1].split('-')[-1]
முன்துணைப்பக்கயெண் = துணைப்பக்கப்பெயர்பிரியெண்1-1
முன்துணைப்பக்கயெண்மூன்றிலக்கம் = '0' + str(முன்துணைப்பக்கயெண்)
முன்துணைப்பக்கயெண்மூன்றிலக்கம்கூட்டு = முன்துணைப்பக்கயெண்மூன்றிலக்கம் + '-' + துணைப்பக்கப்பெயர்பிரியெண்2
பின்துணைப்பக்கயெண் = துணைப்பக்கப்பெயர்பிரியெண்1+1
பின்துணைப்பக்கயெண்மூன்றிலக்கம் = '0' + str(பின்துணைப்பக்கயெண்)
பின்துணைப்பக்கயெண்மூன்றிலக்கம்கூட்டு = பின்துணைப்பக்கயெண்மூன்றிலக்கம் + '-' + துணைப்பக்கப்பெயர்பிரியெண்2
முன்துணைப்பக்கத்தலைப்பு = உள்ளீட்டுக்கோப்புப்பட்டி3_strip[1] # விரிதாளின்படி, columnB, முன்புள்ள தலைப்பு
உருவாக்கும்தலைப்பு= உள்ளீட்டுக்கோப்புப்பட்டி3_strip[2] # விரிதாளின்படி, columnC, உருவாக்கும் தலைப்பு
பின்துணைப்பக்கத்தலைப்பு = உள்ளீட்டுக்கோப்புப்பட்டி3_strip[3] # விரிதாளின்படி, columnD, அடுத்தத்தலைப்பு
உருவாக்கும்தலைப்புபக்கத்தொடக்கம் = உள்ளீட்டுக்கோப்புப்பட்டி3_strip[-2] # விரிதாளின்படி, columnE, தலைப்புத்தொடங்கும் பக்க எண்.
உருவாக்கும்தலைப்புபக்கத்தொடக்கம்கூட்டெண் = int(உருவாக்கும்தலைப்புபக்கத்தொடக்கம்) + பக்கயெண்வேறுபாடு
உருவாக்கும்தலைப்புபக்கமுடிவு = உள்ளீட்டுக்கோப்புப்பட்டி3_strip[-1] # விரிதாளின்படி, columnF, தலைப்புத்தொடங்கும் பக்க எண்.
உருவாக்கும்தலைப்புபக்கமுடிவுகூட்டெண் = int(உருவாக்கும்தலைப்புபக்கமுடிவு)-1 + பக்கயெண்வேறுபாடு
#விளைவிடு( str(வரிசையெண்+1) + '. ' + columnA + '~' +columnB + '~' + columnC + '~' + columnD + '~' + columnE + '~' + str(பக்கயெண்வேறுபாடு) + '\n')
மொழித்திட்டம் = pywikibot.Site('ta','wikisource')
உரலி = pywikibot.Page(மொழித்திட்டம், துணைப்பக்கப்பெயர்)
உரலித்தரவு = உரலி.text
தரவுள்ளத்துணைப்பக்கம் = len(உரலித்தரவு)
if தரவுள்ளத்துணைப்பக்கம் != 0:
விளைவிடு(' ' + str(வரிசையெண்+1) + '. ' + துணைப்பக்கப்பெயர் + ' என்ற துணைப்பக்கத்தரவு உருவாக்கப் பட்டிருக்கிறது.')
elif தரவுள்ளத்துணைப்பக்கம் == 0:
விளைவிடு(' ' + str(வரிசையெண்+1) + '. ' + துணைப்பக்கப்பெயர் + ' என்ற துணைப்பக்கத்தரவு உருவாக்கப் படவில்லை.')
துணைப்பக்கயெண்விவரம் = '<pages index="' + அட்டவணைப்பெயர்சுத்தம் + '.pdf" from="' + str(உருவாக்கும்தலைப்புபக்கத்தொடக்கம்கூட்டெண்) + '"' + 'to="' + str(உருவாக்கும்தலைப்புபக்கமுடிவுகூட்டெண்) + '"' + 'fromsection=" " tosection=" " />'
#<pages index=" கால்டுவெல் ஒப்பிலக்கணம்.pdf" from="20" to="23" fromsection="" tosection="" />
# | previous =[[../001-013/|← 1. உயிரினும்...!]]
# | next = [[../003-013/| 3. கோலொடு நின்றான்! →]]
உரலி.text = '''
{{header
| title = [[../]]
| author = ''' + அந்நூலாசிரியர் + '''
| translator =
| section = ''' + உருவாக்கும்தலைப்பு + '''
| previous = ''' + '[[../' + முன்துணைப்பக்கயெண்மூன்றிலக்கம்கூட்டு + '/|← ' + முன்துணைப்பக்கத்தலைப்பு + ']]' + '''
| next = ''' + '[[../' + பின்துணைப்பக்கயெண்மூன்றிலக்கம்கூட்டு + '/|' + பின்துணைப்பக்கத்தலைப்பு + ' →]]' + '''
| notes = <b> மொழிபெயர்த்தவர்கள்: </b> [[ஆசிரியர்:காழி. சிவ. கண்ணுசாமி பிள்ளை|காழி. சிவ. கண்ணுசாமி பிள்ளை]], [[ஆசிரியர்:கா. அப்பாத்துரைப் பிள்ளை|K. அப்பாத்துரைப் பிள்ளை]]
}}''' + '\n\n' + துணைப்பக்கயெண்விவரம்
print("---------------------------- தொடக்கப்பக்க2 முழுத்தரவு தொடக்கம் --------------------------------------")
print(உரலி.text)
print("---------------------------- தொடக்கப்பக்க2 முழுத்தரவு முடிந்தது --------------------------------------")
time.sleep(15)
உரலி.save('~' + துணைப்பக்கயெண்விவரம் )
# முனையத்தில் இறுதியாக தெரிவதற்காக , கீழுள்ள வரியெண்ணிக்கைகளைத் தருகிறேன்.
emptyNum = பட்டியெண்ணிக்கை(உள்ளீட்டுக்கோப்புப்பட்டி)-பட்டியெண்ணிக்கை(உள்ளீட்டுக்கோப்புப்பட்டி3)
விளைவிடு('\n இக்கோப்பிலுள்ள வெற்று வரிகளின் எண்ணிக்கை = ' + str(emptyNum))
விளைவிடு(' இக்கோப்பிலுள்ள தரவுள்ள வரிகளின் எண்ணிக்கை = ' + str(பட்டியெண்ணிக்கை(உள்ளீட்டுக்கோப்புப்பட்டி3)))
விளைவிடு(' இக்கோப்பிலுள்ள மொத்த சொல்வரியெண்ணிக்கை = ' + str(பட்டியெண்ணிக்கை(உள்ளீட்டுக்கோப்புப்பட்டி)) + '\n')
#=== செய்ய வேண்டியன ===
# கோப்பிடங்களுக்கான பைத்தான் நூற்கட்டங்களைக் கொண்டு, கோப்பு உள்ளதா? என அறிய நுட்பம் அமைக்கணும்.
# ஒரு வரி பைத்தான் போன்று, இன்னும் நிரல்களை சுருக்க வேண்டும். # http://www.onelinerizer.com/