localized/czech/idos_plugin.py
changeset 0 93b25987d3e5
equal deleted inserted replaced
-1:000000000000 0:93b25987d3e5
       
     1 #$ neutron_plugin 01
       
     2 
       
     3 import time
       
     4 
       
     5 def IDOS(prvni,druha,datum,cas):
       
     6 	import urllib2,re,urllib
       
     7 	
       
     8 	con=urllib2.Request('http://idos.cz/ConnForm.asp?tt=c')
       
     9 	link=urllib2.urlopen(con)
       
    10 	form=link.read()
       
    11 	code=re.search('name=\"link\" value=\"',form)
       
    12 	kod=form[code.end():code.end()+4]
       
    13 	
       
    14 	req = urllib2.Request('http://idos.cz/ConnForm.asp?tt=c')
       
    15 	req.add_header = ('User-agent', 'Mozilla/5.0')
       
    16 	req.add_data(urllib.urlencode({'FromStn':urllib.quote(prvni),'ToStn':urllib.quote(druha),'ViaStn':'','ConnDate':datum,'ConnTime':cas,'ConnIsDep':'1','ConnAlg':'0','tt':'c','changeext':'0','Mask1':'-1','Min1':'5','Max1':'240','Std1':'1','Mask2':"-1",'Min2':"0","Max2":"240","Std2":"0","beds":"0","alg": "1","chn":"5","odch":"50","odcht":"0","ConnFromList":"-1","ConnToList":"-1","ConnViaList":"-1","recalc":"0","pars":"0","process":"0","link":kod}))
       
    17 	r = urllib2.urlopen(req)
       
    18 	cele=r.read()
       
    19 	#print cele
       
    20 	zacatek=re.search('<table border=.0. width=.100%. cellspacing=.0. cellpadding=.0. Class=.TDForm.>',cele)
       
    21 	if zacatek!=None:
       
    22 		kus_1=cele[zacatek.end():]
       
    23 		kus_2=kus_1[re.search('</table>',kus_1).end():]
       
    24 		telo=kus_2[:re.search('</table>',kus_2).start()]
       
    25 		out_date=re.findall('<td align="right">([0-9]{0,2}\.[0-9]{0,2}\.)',telo)
       
    26 		out_st=re.findall('<td nowrap>(((<a [^<>]*>)?[^<>]+(</a>)?.+<br>)+.+)</td>',telo)
       
    27 		out_arrivs=re.findall('<td align="right" nowrap>(&#160;)*(((<br>&#160;)*<br>[0-9]{0,2}:[0-9]{0,2})+)</td>',telo)
       
    28 		out_departs=re.findall('<td align="right">((([0-9]{0,2}:[0-9]{0,2})<br>(&#160;<br>)*)+)</td>',telo)
       
    29 		out_nrs=re.findall("(<img [^<>]+>&nbsp;(<a href='Route\.asp\?cl=C&tt=.&i=[^<>]+>)?([^<>]+)(</a>)?(&nbsp;)*(<img [^<>]+>( )*)*(<br>)?)+",telo)
       
    30 		#print out_arrivs,out_date,out_departs,out_nrs,out_st
       
    31 		
       
    32 		nrs=[]
       
    33 		for i in out_nrs:
       
    34 			o=re.sub("<[^<>]+>", "",i[0])
       
    35 			o=re.sub("&nbsp;", "",o)
       
    36 			nrs.append(o)
       
    37 		
       
    38 		
       
    39 		arrivs=[]
       
    40 		for i in out_arrivs:
       
    41 			o=re.sub('<br>','',i[1])
       
    42 			arrivs.append(o)
       
    43 		
       
    44 		
       
    45 		departs=[]
       
    46 		for i in out_departs:
       
    47 			o=re.sub('<br>','',i[1])
       
    48 			departs.append(o)	
       
    49 		
       
    50 		
       
    51 		st=[]
       
    52 		for i in out_st:
       
    53 			o=[]
       
    54 			stanice=i[0].split('<br>')
       
    55 			o.append(re.sub("<[^<>]+>", "",stanice[0]).replace('&nbsp;',''))
       
    56 			o.append(re.sub("<[^<>]+>", "",stanice[1]).replace('&nbsp;',''))
       
    57 			st.append(o)
       
    58 	
       
    59 		#print arrivs,departs,nrs,st
       
    60 		
       
    61 		vysl=len(nrs)
       
    62 		out=''
       
    63 		for n in range(0,vysl):
       
    64 			out+='\n'+st[n][0]+'('+departs[n]+') - '+st[n][1]+'('+arrivs[n]+')'
       
    65 		return out
       
    66 	else:
       
    67 		if cele.find('vyberte ze seznamu objekt')!=-1:
       
    68 			kus=cele[re.search('<select name=\"ToStn\" size=\"1\">',cele).end():]
       
    69 			kus=kus[:re.search('</select>',kus).start()]
       
    70 			kus=re.sub("<[^<>]+>", "",kus)
       
    71 			mista=kus.split()
       
    72 			mista=mista[0,-1]
       
    73 			out='Vyberte stanici ze seznamu:'
       
    74 			for x in mista:
       
    75 				out+='\n'+x
       
    76 			return out
       
    77 		else:
       
    78 			return 'CHYBA! >> spojeni nelze nalezt/spatny pozadavek'
       
    79 			print cele
       
    80 
       
    81 def handler_IDOS_get(type, source, parameters):
       
    82 	par=parameters.split('*')
       
    83 	if len(par)==2:
       
    84 		
       
    85 		datum=time.localtime()
       
    86 		par.append(str(datum[2])+'.'+str(datum[1])+'.'+str(datum[0]))
       
    87 		par.append(str(datum[3])+':'+str(datum[4]))
       
    88 	elif len(par)==3:
       
    89 		par.append(str(datum[3])+':'+str(datum[4]))
       
    90 	smsg(type,source,unicode(IDOS(par[0],par[1],par[2],par[3]),'windows-1250'))
       
    91 	
       
    92 
       
    93 register_command_handler(handler_IDOS_get, '!spoj', 0, '', '!spoj <odkud>*<kam>*<datum>*<cas>', ['!spoj praha*ostrava*3.3.2006*10:21'])