narendra sisodiya wrote:
> On Tue, Jul 15, 2008 at 11:45 AM, Shamail Tayyab <[EMAIL PROTECTED]
> <mailto:[EMAIL PROTECTED]>> wrote:
>
> Warning: No one is authorised to make any type of commercial usage
> like
> putting web advertisements or SMS service and
> Reproducing/Transmitting/Storing in its database, any content of
> www.indianrail.gov.in <http://www.indianrail.gov.in>
> <http://www.indianrail.gov.in> website, without
> prior written permission from Indian Railways. Violators will be
> severely prosecuted.
>
>
>
> Oh ya, I have read this notice before also, And i do not think that
> the script do not violate any such violation,
> I am viewing page in the command line browser, and submitting the pnr
> number using some standard way in perl. Technically I am submitting
> and taking response in smarter way.
> Also i am not using this for commercial purpose.
> releasing this in GPLv2 is meant for sharing, just like a trick or tweak.
>
> Still i am not sure -- "Will Indian Railway Guys come to me for any
> violation ? "
>
>
> PS: @Parser : Initially I was also motivated for parser but later I
> found there is no need for parser in this case. We can just view the
> response in command line browser. But please send me that parser, I
> want to study !!
Ya! With script i didn't meant that. I was talking about the usage
aspect and specifically our work. And yes the script is doing nothing
but opening it in text browser. Here is that parser...
#! /usr/bin/env python
from HTMLParser import HTMLParser
import httplib
""" Exception Class """
class NoPNRException (Exception):
def __init__ ( self ):
pass
def __str__ ( self ):
return "No Such PNR Number"
""" Makes and HTTP POST request to indianrail.gov.in and fetches the
html """
class Requester:
def result ( self, pnri, pnrl ):
SoapMessage =
"lccp_pnrno1="+pnri+"&lccp_pnrno2="+pnrl+"&submitpnr=Wait+for+PNR+status%21"
webservice = httplib.HTTP("www.indianrail.gov.in")
webservice.putrequest("POST", "/cgi_bin/inet_pnrstat_cgi.cgi")
webservice.putheader("User-Agent", "Mozilla/5.0 (X11; U; Linux
i686; en-US; rv:1.8.1.13) Gecko/20080325 Nothing Authentic Bot.")
webservice.putheader("Content-type", "text/xml; charset=\"UTF-8\"")
webservice.putheader("Content-length", "%d" % len(SoapMessage))
webservice.endheaders()
webservice.send(SoapMessage)
statuscode, statusmessage, header = webservice.getreply()
res = webservice.getfile().read()
return res
""" Parses the result returned by indianrail """
class MyHTMLParser (HTMLParser):
def handle_data ( self, data ):
if data == "\n":
return
if "FLUSHED" in data:
raise NoPNRException
try:
if self.previous == "PNR Number":
print "PNR:", data
self.answer.append ( data )
if self.previous == "Charting":
print "Chart:", data.strip ()
self.answer.append ( data.strip () )
except:
self.previous = ""
self.answer = []
try:
if self.start < 9 and self.start != 0:
print "Stat:", data
self.answer.append ( data )
self.start += 1
except:
self.start = 0
try:
if self.poll == "true" and self.fieldctr < 2:
print "Passenger", data
self.answer.append ( data )
self.fieldctr += 1
if self.fieldctr == 2:
self.fieldctr = 0
self.poll = "false"
except AttributeError:
self.poll = "false"
self.fieldctr = 0
for i in [ "1", "2", "3", "4", "5", "6" ]:
if "Passenger "+i in data:
self.answer.append ( "Passenger " + i )
self.poll = "true"
if "PNR Number" in data:
self.previous = "PNR Number"
elif "Charting Status" in data:
self.previous = "Charting"
else:
self.previous = ""
if data == "1":
self.start = 1
def list ( self ):
return self.answer
""" Test Case """
a = MyHTMLParser ()
try:
a.feed ( Requester().result ( "225", "0199127" ) )
except NoPNRException:
print 'NoSuchPNRNumber'
This was supposed to be a package, so in last a test case at last!
Regards!
--
Shamail Tayyab
shamail [at] inbox [dot] com
8 5 6 4 5 0 8 1 7 9 - 1 9 + (right to left without spaces)
<<Bringing Linux and Mobiles one step closer>>
Blog at: http://tuxatwork.blogspot.com
_______________________________________________
ilugd mailinglist -- [email protected]
http://frodo.hserus.net/mailman/listinfo/ilugd
Archives at: http://news.gmane.org/gmane.user-groups.linux.delhi
http://www.mail-archive.com/[email protected]/