1414class Reese84TokenUpdating ():
1515 def __init__ (self ):
1616 self .is_running = False
17- self .reese84_token = {}
17+ self .reese84_token = ''
18+ self .reese84_renewInSec = 0
1819 self .token_semaphore = Semaphore (0 )
1920 self .scheduler = sched .scheduler (time .time , time .sleep )
2021
2122 def initialize_reese84_token (self ):
2223 """
2324 This method should not be called directly.
2425 """
25- self .reese84_token = getReese84Token ()
26+ self .reese84_token , self . reese84_renewInSec = getReese84Token ()
2627 self .token_semaphore .release () # produce a new token
27- self .scheduler .enter (self .reese84_token [ 'renewInSec' ] -
28+ self .scheduler .enter (self .reese84_renewInSec -
2829 constants .TOKEN_RENEW_SEC_OFFSET , constants .TOKEN_RENEW_PRIORITY , self .renew_reese84_token )
2930
3031 def renew_reese84_token (self ):
@@ -35,7 +36,7 @@ def renew_reese84_token(self):
3536 self .token_semaphore .acquire () # invalidate a token
3637 self .reese84_token = getReese84Token ()
3738 self .token_semaphore .release ()
38- self .scheduler .enter (self .reese84_token [ 'renewInSec' ] -
39+ self .scheduler .enter (self .reese84_renewInSec -
3940 constants .TOKEN_RENEW_SEC_OFFSET , constants .TOKEN_RENEW_PRIORITY , self .renew_reese84_token )
4041
4142 def start (self ):
@@ -48,14 +49,15 @@ def start(self):
4849
4950
5051class TicketScraping (threading .Thread ):
51- def __init__ (self , token_generator : Reese84TokenUpdating , event_id , subscribe_id , num_seats = 2 , price_range = ( 0 , 200 ) ):
52+ def __init__ (self , token_generator : Reese84TokenUpdating , event_id : str , subscribe_id : str , num_seats : int , target_price : int , tolerance : int ):
5253 threading .Thread .__init__ (self )
5354 self .is_running = False
5455 self .is_stopping = False
5556 self .event_id = event_id
5657 self .subscribe_id = subscribe_id
5758 self .num_seats = num_seats
58- self .price_range = price_range
59+ self .target_price = target_price
60+ self .tolerance = tolerance
5961 self .token_gen = token_generator
6062 self .scheduler = sched .scheduler (time .time , time .sleep )
6163 self .initialDelay = random .randint (
@@ -83,17 +85,17 @@ def ticket_scraping(self):
8385 # scrape the top-picks from ticketmaster
8486 top_picks_url = constants .get_top_picks_url (self .event_id )
8587 top_picks_q_params = constants .get_top_picks_query_params (
86- self .num_seats , self .price_range )
88+ self .num_seats , self .target_price , self . tolerance )
8789 top_picks_header = constants .get_top_picks_header ()
8890 res = requests .get (top_picks_url , headers = top_picks_header , params = top_picks_q_params ,
89- cookies = dict (reese84 = self .token_gen .reese84_token ['token' ]))
90- # print(res.json())
91+ cookies = dict (reese84 = self .token_gen .reese84_token )) # type: ignore
9192
9293 # prune and format the received picks
9394 picks_obj = format_seats (res .json (), self .subscribe_id )
9495
9596 # periodic task: update collections best_available_seats and best_history_seats
96- run_periodic_task (picks_obj , self .subscribe_id )
97+ # and automatically spawn async tasks
98+ run_periodic_task (picks_obj , self .subscribe_id , self .target_price )
9799
98100 print ("Got the ticket info from TM. /" , res .status_code )
99101 self .scheduler .enter (constants .TICKET_SCRAPING_INTERVAL ,
@@ -102,8 +104,8 @@ def ticket_scraping(self):
102104 def get_id (self ):
103105 # returns id of the respective thread
104106 if hasattr (self , '_thread_id' ):
105- return self ._thread_id
106- for id , thread in threading ._active .items ():
107+ return self ._thread_id # type: ignore
108+ for id , thread in threading ._active .items (): # type: ignore
107109 if thread is self :
108110 return id
109111
@@ -135,7 +137,7 @@ def start():
135137 '$or' : [{'markPaused' : {'$exists' : False }}, {'markPaused' : False }]})
136138 for evt in events :
137139 ticket_scraping = TicketScraping (
138- reese_token_gen , evt ["tm_event_id" ], evt ["_id" ], evt ["ticket_num" ], evt ["price_range " ])
140+ reese_token_gen , evt ["tm_event_id" ], evt ["_id" ], evt ["ticket_num" ], evt ["target_price" ], evt [ "tolerance " ])
139141 print (ticket_scraping .initialDelay , "s" )
140142 scraping_list [ticket_scraping .subscribe_id ] = ticket_scraping
141143 for scraping_thread in scraping_list .values ():
@@ -156,7 +158,7 @@ def start():
156158 # spawn a thread to do scraping operations
157159 full_doc = change ['fullDocument' ]
158160 ticket_scraping = TicketScraping (
159- reese_token_gen , full_doc ["tm_event_id" ], full_doc ["_id" ], full_doc ["ticket_num" ], full_doc ["price_range " ])
161+ reese_token_gen , full_doc ["tm_event_id" ], full_doc ["_id" ], full_doc ["ticket_num" ], full_doc ["target_price" ], full_doc [ "tolerance " ])
160162 print (ticket_scraping .initialDelay , "s" )
161163 scraping_list [ticket_scraping .subscribe_id ] = ticket_scraping
162164 ticket_scraping .start ()
@@ -177,7 +179,7 @@ def start():
177179 # resume scraping if currently paused
178180 if doc_id not in scraping_list :
179181 ticket_scraping = TicketScraping (
180- reese_token_gen , full_doc ["tm_event_id" ], full_doc ["_id" ], full_doc ["ticket_num" ], full_doc ["price_range " ])
182+ reese_token_gen , full_doc ["tm_event_id" ], full_doc ["_id" ], full_doc ["ticket_num" ], full_doc ["target_price" ], full_doc [ "tolerance " ])
181183 print (ticket_scraping .initialDelay , "s" )
182184 scraping_list [ticket_scraping .subscribe_id ] = ticket_scraping
183185 ticket_scraping .start ()
0 commit comments