merged upstream master
[shakeTheFidget.git] / core.py
blobaf9bb06adc044602b479ab0f0e33b4f492526a9c
1 #!/usr/bin/python
2 from sqlalchemy import create_engine
3 from sqlalchemy.orm import sessionmaker
4 from sqlalchemy.orm.exc import NoResultFound
5 from player import Player, metadata as playerMetadata
6 from session import Session
7 from time import time, sleep
8 from threading import Thread, Event, activeCount as activeThreads
9 import Queue
11 engine = create_engine('sqlite:///test.db')
12 playerMetadata.create_all(engine)
14 SQLSession = sessionmaker(bind=engine)
15 db = SQLSession()
17 class QueryList(Thread):
18 def __init__(self, session, db):
19 self.session = session
20 self.db = db
21 self.eStop = Event()
22 Thread.__init__(self)
24 def stop(self):
25 self.eStop.set()
27 def run(self):
28 playerCount = self.session.request('007;%i' % (100000)).split('/')[-6]
29 i = 1
30 while(not self.eStop.isSet()):
31 data = self.session.request('007;%i' % (i))
32 result = data[0:3]
33 data = data[3:].split('/')
34 for j in range(15):
35 try:
36 p = self.db.query(Player).filter(Player.name == data[(j *5) +1]).one()
37 except NoResultFound, e:
38 p = Player(self.session)
39 p.name = data[(j *5) +1]
40 self.db.add(p)
41 p.honor = int(data[(j *5) +4])
42 p.guild = data[(j *5) +2]
43 p.level = abs(int(data[(j *5) +3]))
44 print ('%s(%i) of %s - %i' % (p.name, p.level, p.guild, p.honor)).encode('unicode_escape', 'replace')
45 self.db.commit()
46 i += 15
47 self.eStop.wait(5.0)
48 self.eStop.clear()
50 def __del__(self):
51 self.stop()
53 exit()
54 s = Session('Chr', 'trashor')
55 s.connect()
56 s.login()
58 ql = QueryList(s, db)
61 def qArena():
62 print 'Arena'
63 i = 0
64 players = []
65 while(True):
66 if(i >= len(players)):
67 players.extend(queryHoF(s, me.rank -50 +i))
68 p = players[i]
69 if(me.level >= p.level -4):
70 p.query()
71 if(p.name != me.name and me.strikeDiff(p) > minStrikeDiff):
72 print('opponent found after: %i' % (i))
73 p.fight()
74 break
75 i += 1
76 q.put((time() +601, qArena))
78 def qWardCity():
79 print 'WardCity'
80 me.wardCity(1)
81 q.put((time() +3601, qWardCity))
83 minStrikeDiff = 1
84 me = Player(s, '')
85 me.query()
87 s.close
88 #aralee = player.Player(a, 'Aralee')
89 #aralee.query()
91 #test = []
92 #for i in xrange(aralee.rank, aralee.rank +100, 15):
93 # test.extend(player.queryHoF(a, rank=i))
95 #for i in test:
96 # i.query()
98 #while(True):
99 # a.fight(opponents[int(random.random()*len(opponents))])
101 #while True:
102 # qArena();
103 # for i in range(12):
104 # qNoop()
105 # sleep(50)
107 #s.close