|
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>( )*(((<br> )*<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>( <br>)*)+)</td>',telo) |
|
29 out_nrs=re.findall("(<img [^<>]+> (<a href='Route\.asp\?cl=C&tt=.&i=[^<>]+>)?([^<>]+)(</a>)?( )*(<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(" ", "",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(' ','')) |
|
56 o.append(re.sub("<[^<>]+>", "",stanice[1]).replace(' ','')) |
|
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']) |