#!/usr/bin/python2.4
# -*- coding: utf-8 -*-
import urllib2, wikipedia, string
from atomobot_language import AtomobotLanguageSlovak
lang = AtomobotLanguageSlovak()
print u"Od akej planétky mám začať? ";
MIN = int( input() )
print u"Pri akej planétke mám skončiť? ";
MAX = int( input() )
pripravene_planetky = {}
def vygeneruj_rozpatie( cislo ):
start = ( ( cislo - 1 ) / 250 ) * 250 + 1
koniec = start + 249
return u'%s-%s' % ( start, koniec )
def vytvor_planetku( cislo ):
planetka = pripravene_planetky[ cislo ]
predch_planetka = pripravene_planetky[ cislo-1 ]
nasl_planetka = pripravene_planetky[ cislo+1 ]
udaje = {}
udaje.update(planetka)
udaje['nazov_predch'] = predch_planetka['nazov']
udaje['nazov_nasl'] = nasl_planetka['nazov']
udaje['kat_rozpatie'] = vygeneruj_rozpatie( cislo )
clanok = u"""{{Planétka |
Meno = %(nazov)s |
Absolútna veľkosť = %(velkost)s |
Albedo = %(albedo)s |
Rozmery = %(priemer)s |
Objaviteľ = %(objav)s |
Dátum objavenia = %(datum)s |
Označenie = %(oznacenie)s |
Kategória = |
Epocha = [[Juliánsky dátum|JD]] %(epocha)s |
Excentricita = %(excentricita)s |
Veľká polos = |
Perihélium = %(perihelium)s [[AU]] |
Afélium = |
Obežná doba = |
Obežná rýchlosť = |
Uhol sklonu dráhy = %(uhol)s° |
Dĺžka výstupného uzla = %(uzol)s° |
Argument perihélia = %(argument)s° |
Stredná anomália = |
Hmotnosť = |
Hustota = |
Gravitácia = |
Úniková rýchlosť = |
Rotačná perióda = |
Spektrálna trieda = |
Teplota = |
}}
'''%(nazov)s''' je [[planétka]] s priemerom %(priemer)s, ktorú objavil %(objav)s %(datuma)s.
{{navigátor|%(nazov_predch)s|%(nazov_nasl)s}}
{{astronomický výhonok}}
[[Kategória:Planétky %(kat_rozpatie)s]]
[[en:%(nazov)s]]
""" % udaje
site = wikipedia.getSite()
stranka = wikipedia.Page( site, planetka['nazov'] )
povodny = stranka.get()
print clanok
if stranka.exists() and (len(povodny) > 256):
return
if planetka['vsetko_ok']:
stranka.put(clanok, u"pridanie planétky")
def upravmeno( meno ):
if not meno.endswith('.'):
meno += '.'
priezvisko, mena = meno.split(', ')
return mena + ' ' + priezvisko
def priprav_planetku( params, objavs, elems ):
param = params.split()
objav = objavs.split()
elem = elems.split()
planetka = {}
planetka['cislo'] = int( params[:6] )
if objavs[9:29] != " ":
planetka['nazov'] = "%s %s" % ( params[:6], objavs[9:29] )
else:
planetka['nazov'] = "%s %s" % ( params[:6], params[7:24] )
planetka['nazov'] = planetka['nazov'].strip()
planetka['velkost'] = lang.format_number( params[24:30], 2 )
planetka['albedo'] = lang.format_number( params[30:35], 2 )
planetka['priemer'] = "%s km" % lang.format_number( params[43:49], 0 )
objav_mes = int( objavs[46:48] )
objav_den = int( objavs[49:51] )
objav_rok = int( objavs[41:45] )
datum_mes = lang.MONTH_NAME[ objav_mes ]
datuma_mes = lang.MONTH_NAME_GEN[ objav_mes ]
planetka['datum'] = "[[%s. %s]] [[%s]]" % ( objav_den, datum_mes, objav_rok )
planetka['datuma'] = "[[%s. %s|%s. %s]] [[%s]]" % ( objav_den, datum_mes, objav_den, datuma_mes, objav_rok )
planetka['obj'] = objavs[78:-1] # retazec obsahujuci objavitela
if ".," in planetka['obj']: # ak je to viac mien
planetka['obj'] = planetka['obj'].split( "., " ) # rozdel to na mensie
planetka['objav'] = ""
for i in planetka['obj']:
planetka['objav'] += "[[%s]], " % upravmeno( i )
planetka['objav'] = planetka['objav'][:-2]
else:
if "," in planetka['obj']: # ak je to aspon jedno meno
planetka['objav'] = "[[%s]]" % upravmeno( planetka['obj'] )
else:
planetka['objav'] = "[[%s]]" % planetka['obj'] # ak je to univerzita alebo observatorium
planetka['oznacenie'] = objavs[29:40].strip()
planetka['epocha'] = lang.format_number( elem[7], 1 )
planetka['argument'] = lang.format_number( elem[2], 7 )
planetka['uzol'] = lang.format_number( elem[3], 7 )
planetka['uhol'] = lang.format_number( elem[4], 7 )
planetka['excentricita'] = lang.format_number( elem[5], 7 )
planetka['perihelium'] = lang.format_number( elem[6], 7 )
planetka['vsetko_ok'] = param[0] == elem[0] == objav[0][1:-1]
pripravene_planetky[planetka['cislo']] = planetka
def main():
parametre = urllib2.urlopen('http://www.psi.edu/pds/archive/astdata04/simps04/addl.tab')
objavitel = urllib2.urlopen('http://cfa-www.harvard.edu/iau/lists/NumberedMPs000001.html')
elementy = urllib2.urlopen('http://www.psi.edu/pds/archive/astdata04/simps04/elem3.tab')
for i in range( MIN - 2 ):
parametre.readline()
for i in range( MIN + 20 ):
objavitel.readline()
for i in range( MIN - 2 ):
elementy.readline()
for i in range( MAX - MIN + 3 ):
params = parametre.readline()
objavs = objavitel.readline()
elems = elementy.readline()
priprav_planetku( params, objavs, elems )
cisla = pripravene_planetky.keys()
cisla.sort()
for i in cisla[1:-1]:
vytvor_planetku( i )
main()