@@ -36,6 +36,30 @@ def valid_datetime_type(arg_datetime_str):
3636 msg = f"Given Date { arg_datetime_str } not valid! Expected format, YYYY-MM-DD_hh:mm!"
3737 raise argparse .ArgumentTypeError (msg )
3838
39+ def valid_hour_limit (hour_limit ):
40+ hour_limit = int (hour_limit )
41+ if hour_limit <= 0 :
42+ msg = "Hour limit must be larger than 0"
43+ raise argparse .ArgumentTypeError (msg )
44+ elif hour_limit > 500 :
45+ msg = "Hour limit cannot be more than 500"
46+ raise argparse .ArgumentTypeError (msg )
47+
48+ return hour_limit
49+
50+
51+ def valid_ten_seconds_limit (ten_sec_limit ):
52+ ten_sec_limit = int (ten_sec_limit )
53+ if ten_sec_limit <= 0 :
54+ msg = "Ten seconds limit must be larger than 0"
55+ raise argparse .ArgumentTypeError (msg )
56+ elif ten_sec_limit > 50 :
57+ msg = "Ten seconds limit cannot be more than 50"
58+ raise argparse .ArgumentTypeError (msg )
59+
60+ return ten_sec_limit
61+
62+
3963verbose_dict = {
4064 'debug' :logging .DEBUG ,
4165 'info' :logging .INFO ,
@@ -270,9 +294,12 @@ class RateLimitHandler:
270294 nr_previous_requests = 0 ):
271295
272296
273-
274297 self ._USER_REQUEST_LIMIT_PER_TEN_SECONDS = user_request_limit_per_ten_seconds
275- self ._USER_REQUST_LIMIT_PER_HOUR = user_request_limit_per_hour # Due to the authorization steps
298+ logging .debug (f'Ten second rate limit was set to { user_request_limit_per_ten_seconds } ' )
299+
300+ self ._USER_REQUST_LIMIT_PER_HOUR = user_request_limit_per_hour
301+ logging .debug (f'Hour rate limit was set to { user_request_limit_per_hour } ' )
302+
276303 self ._TEN_SECOND_TIMEDELTA = timedelta (seconds = 10 )
277304 self ._HOUR_TIMEDELTA = timedelta (hours = 1 )
278305 self ._SECOND_TIMEDELTA = timedelta (seconds = 1 )
@@ -535,6 +562,26 @@ def main():
535562 required = False ,
536563 help = "Assumes this many previous requests has been done, so that the rate limit is not exceeded (default: 0)" )
537564
565+
566+ parser .add_argument (
567+ "-hrl" ,
568+ "--hour-rate-limit" ,
569+ type = valid_hour_limit ,
570+ default = 400 ,
571+ required = False ,
572+ help = "Specify the rate limit per hour (default: 400, max: 500)" )
573+
574+
575+
576+ parser .add_argument (
577+ "-t" ,
578+ "--ten-second-rate-limit" ,
579+ type = valid_ten_seconds_limit ,
580+ default = 30 ,
581+ required = False ,
582+ help = "Specify the rate limit per ten seconds (default: 30, max: 50)" )
583+
584+
538585 args = parser .parse_args ()
539586
540587
@@ -549,9 +596,10 @@ def main():
549596
550597
551598 # Rate handler to make sure that we don't exceed Netatmos user rate limits
552- rate_limit_handler = RateLimitHandler (nr_previous_requests = args .previous_requests )
553-
554-
599+ rate_limit_handler = RateLimitHandler (
600+ user_request_limit_per_ten_seconds = args .ten_second_rate_limit ,
601+ user_request_limit_per_hour = args .hour_rate_limit ,
602+ nr_previous_requests = args .previous_requests )
555603
556604
557605 for station_mac , station_data_overview in rate_limit_handler .get_stations ():
0 commit comments