summaryrefslogtreecommitdiffstats
path: root/sandbox/27c3_ticket_grabber/mechanize_tickets.py
diff options
context:
space:
mode:
authoreuer <root@euer.krebsco.de>2012-12-23 23:05:23 +0100
committereuer <root@euer.krebsco.de>2012-12-23 23:05:23 +0100
commit84b10fc1b458e8e9cc6f7a5146a8ebd665e8ec78 (patch)
tree28678a81978e68293698ff216530e7eef7755ce8 /sandbox/27c3_ticket_grabber/mechanize_tickets.py
parent6bf071ed7ae2020e061bb125bc24433286e240bc (diff)
//tts -> //util/tts
Diffstat (limited to 'sandbox/27c3_ticket_grabber/mechanize_tickets.py')
-rw-r--r--sandbox/27c3_ticket_grabber/mechanize_tickets.py53
1 files changed, 53 insertions, 0 deletions
diff --git a/sandbox/27c3_ticket_grabber/mechanize_tickets.py b/sandbox/27c3_ticket_grabber/mechanize_tickets.py
new file mode 100644
index 00000000..1f12a996
--- /dev/null
+++ b/sandbox/27c3_ticket_grabber/mechanize_tickets.py
@@ -0,0 +1,53 @@
+#!/usr/bin/python
+import mechanize
+import cookielib
+import time,sys
+USERNAME = 'momo'
+PASSWORD = ''
+
+
+def main():
+ try:
+ br = init_browser()
+ while not do_login(br):
+ print ("Could Not Login, retrying!")
+ while not fetch_ticket(br):
+ time.sleep(0.2)
+ print ("Could not fetch ticket, retrying!")
+ except Exception,e:
+ print ("Caught Exception: %s" % str(e))
+ exit (1)
+ print ("We won? yay")
+ exit(0)
+
+def init_browser():
+ br = mechanize.Browser()
+ br.open("https://presale.events.ccc.de/order")
+ cj = cookielib.LWPCookieJar()
+ br.set_cookiejar(cj)
+ br.addheaders = [('User-agent', 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.1) Gecko/2008071615 Fedora/3.0.1-1.fc9 Firefox/3.0.1')]
+ return br
+def do_login(br):
+ br.select_form(nr=0)
+ br.form['account[username]'] = USERNAME
+ br.form['account[password]'] = PASSWORD
+ br.submit()
+ ret = br.response().read()
+ if 'Signed in successfully.' in ret:
+ if not "Confirm Order" in ret:
+ print("Something else is wrong, cannot find 'Confirm Order' button!")
+ raise Exception("Cannot find Confirm Order button")
+ return True
+ else: return False
+
+def fetch_ticket(br):
+ br.select_form(nr=0)
+ br.submit()
+ ret = br.response().read()
+ if not 'There are currently not enough tickets available.' in ret:
+ print ("we won? Better sleep some time to be sure")
+ return True
+ else: return False
+
+if __name__ == "__main__":
+ main()