Redaktor:Wizzo-Bot/wizzo-bot ngc.py

z Wikipédie, slobodnej encyklopédie

#!/usr/bin/python2.4
# -*- coding: utf-8  -*-

# ftp://cdsarc.u-strasbg.fr/cats/VII/118/ngc2000.dat

import wikipedia, string, csv
from atomobot_language import AtomobotLanguageSlovak
from wizzo_bot_support import WizzoBotSuhvezdie

lang = AtomobotLanguageSlovak()
suhv = WizzoBotSuhvezdie()

print u"Od akého objektu mám začať? ";
MIN = int( input() )
print u"Pri akom objekte mám skončiť? ";
MAX = int( input() )

ngc = {}

typ = {
'gxy'   : u'galaxia',
'GxyP'  : u'hviezdna asociácia',
'*Grp'  : u'otvorená hviezdokopa',
'OCL'   : u'otvorená hviezdokopa',
'GCL'   : u'guľová hviezdokopa',
'*'     : u'hviezda',
'*2'    : u'dvojhviezda',
'*3'    : u'trojhviezda',
'*4'    : u'štvorhviezda',
'*?'    : u'viacnásobná hviezda',
'PN'    : u'planetárna hmlovina',
'EN'    : u'emisná hmlovina',
'RN'    : u'reflexná hmlovina',
'DN'    : u'tmavá hmlovina',
'RN+EN' : u'reflexná hmlovina a emisná hmlovina',
'EN+RN' : u'emisná hmlovina a reflexná hmlovina',
'EN+OCL': u'emisná hmlovina s otvorenou hviezdokopou',
'EN+*'  : u'emisná hmlovina s hviezdou',
'SNR'   : u'zvyšok supernovy',
'SNR?'  : u'hmlovina',
'OCL+PN': u'otvorená hviezdokopa a planetárna hmlovina',
'OCL+EN': u'otvorená hviezdokopa s emisnou hmlovinou',
'OCL+RN': u'otvorená hviezdokopa s reflexnou hmlovinou',
'*Cloud': u'hmlovina',
'NF'    : u'neexistujúci objekt'
}

def vytvor_clanok( udaje ):
    infobox = u"""{{deepsky |
názov            = %(nazov)s |
typ              = %(typ)s |
rektascenzia     = %(rektascenzia)s |
deklinácia       = %(deklinacia)s |
zdanlivá jasnosť = %(vmag)s |
súhvezdie        = %(suhv)s |
obrázok          = Astro no image.png |
epocha           = 2000.0 |
}}
""" % udaje
    clanok = infobox + u"""
'''%(nazov)s''' je %(typ)s v súhvezdí %(suhvezdie)s, ktorú objavil %(objavitel)s %(datuma)s.
%(velkost)s
{{navigátor|NGC %(prev)s|NGC %(next)s}}

{{astronomický výhonok}}

== Pozri aj ==
* [[Zoznam NGC objektov]]

[[Kategória:Súhvezdie %(suhv)s]]
[[Kategória:NGC objekty|%(cislo)s]]
""" % udaje
    if u"%(typ)s" % udaje == u"[[neexistujúci objekt]]":
        clanok = u"#REDIRECT [[Zoznam NGC objektov]]"
    site = wikipedia.getSite()
    stranka = wikipedia.Page( site, ngc['nazov'] )
    if stranka.exists() and (not stranka.isRedirectPage()):
        povodny = stranka.get()
        clanok = infobox + povodny
    if (not stranka.isRedirectPage()):
        stranka.put(clanok, u"vytvorenie NGC objektu podľa šablóny")

reader = csv.reader(file("/home/wizzard/ngc.csv"), delimiter=";")
j = 0
reader.next()
for i in reader:
  j = j+1
  if (j >= MIN) and (j <= MAX):
    if (i[3] != "-") and (i[3] != "*"):
        i[3] = int(i[3])
        datum_mes = lang.MONTH_NAME[ i[3] ]
        datuma_mes = lang.MONTH_NAME_GEN[ i[3] ]
    else:
        datum_mes = ""
    if i[4] != "-":
        objav_den = i[4]
    else:
        objav_den = ''
    if i[2] != "-":
        objav_rok = i[2]
    if (datum_mes != "") and (objav_den != ""):
        ngc['datum'] = "[[%s. %s]] [[%s]]" % ( objav_den, datum_mes, objav_rok )
        ngc['datuma'] = "[[%s. %s|%s. %s]] [[%s]]" % ( objav_den, datum_mes, objav_den, datuma_mes, objav_rok )
    else:
        ngc['datum'] = "[[%s]]" % ( objav_rok )
        ngc['datuma'] = "v roku [[%s]]" % ( objav_rok )
    ngc['nazov'] = "NGC %s" % i[0]
    ngc['cislo'] = "%s" % i[0]
    ngc['objavitel'] = i[1]
    if " " in ngc['objavitel']:
        priezvisko, meno = ngc['objavitel'].split();
        ngc['objavitel'] = "[[%s %s]]" % (meno, priezvisko)
    else:
        ngc['objavitel'] = "[[%s]]" % ngc['objavitel']
    ngc['suhv'] = u"%s" % suhv.suhvezdie[i[18]]
    ngc['suhvezdie'] = u"[[Súhvezdie %s|%s]]" % (suhv.suhvezdie[i[18]], suhv.suhvezdie[i[18]])
    ngc['typ'] = "[[%s]]" % typ[i[19]]
    ngc['rektascenzia'] = u"%sh %sm %ss" % (i[10], i[11], i[12])
    ngc['deklinacia'] = u"%s%s° %s' %s\"" % (i[13], i[14], i[15], i[16])
    ngc['vmag'] = i[17]
    if ngc['vmag'] != "-":
        ngc['velkost'] = u"""
Jej zdanlivá [[hviezdna veľkosť]] je %s.
        """ % ngc['vmag']
    else:
        ngc['velkost'] = ""
    if j == 1:
        ngc['prev'] = 7840
    else:
        ngc['prev'] = j-1
    if j == 7840:
        ngc['next'] = 1
    else:
        ngc['next'] = j+1
    udaje = {}
    udaje.update(ngc)
    vytvor_clanok( udaje )