| 
				
			 | 
			
			
				
				@@ -30,11 +30,14 @@ PROGRAM_DESCRIPTION = "This program controls devices via ADB to take screenshots 
			 | 
		
		
	
		
			
			| 
				30
			 | 
			
				30
			 | 
			
			
				
				 # ---- 
			 | 
		
		
	
		
			
			| 
				31
			 | 
			
				31
			 | 
			
			
				
				  
			 | 
		
		
	
		
			
			| 
				32
			 | 
			
				32
			 | 
			
			
				
				 parser = argparse.ArgumentParser(description = PROGRAM_DESCRIPTION) 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				33
			 | 
			
			
				
				+parser.add_argument("--power", help = "get full power rankings", default = False, action = "store_true") 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				34
			 | 
			
			
				
				+parser.add_argument("--top", help = "get stats on the top 300", default = False, action = "store_true") 
			 | 
		
		
	
		
			
			| 
				33
			 | 
			
				35
			 | 
			
			
				
				 parser.add_argument("-p", "--project", help = "project name", required = True) 
			 | 
		
		
	
		
			
			| 
				34
			 | 
			
				36
			 | 
			
			
				
				 parser.add_argument("-s", "--serial", help = "device serial", required = True) 
			 | 
		
		
	
		
			
			| 
				35
			 | 
			
				37
			 | 
			
			
				
				 parser.add_argument("-v", "--verbose", help = "be verbose", default = False, action = "store_true") 
			 | 
		
		
	
		
			
			| 
				36
			 | 
			
				
			 | 
			
			
				
				-parser.add_argument("-c", "--count", help = "how many to scrape", required = True, type = int) 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				38
			 | 
			
			
				
				+parser.add_argument("-c", "--count", help = "how many to scrape", default = 0, type = int) 
			 | 
		
		
	
		
			
			| 
				37
			 | 
			
				39
			 | 
			
			
				
				 parser.add_argument("-n", "--start", help = "what number to start scraping at", default = 1, type = int) 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				40
			 | 
			
			
				
				+parser.add_argument("-k", "--skipped", help = "how many have been skipped", type = int) 
			 | 
		
		
	
		
			
			| 
				38
			 | 
			
				41
			 | 
			
			
				
				 parser.add_argument("--debug", help = "debug", default = False, action = "store_true") 
			 | 
		
		
	
		
			
			| 
				39
			 | 
			
				42
			 | 
			
			
				
				 arguments = parser.parse_args() 
			 | 
		
		
	
		
			
			| 
				40
			 | 
			
				43
			 | 
			
			
				
				  
			 | 
		
		
	
	
		
			
			| 
				
			 | 
			
			
				
				@@ -42,7 +45,7 @@ arguments = parser.parse_args() 
			 | 
		
		
	
		
			
			| 
				42
			 | 
			
				45
			 | 
			
			
				
				 # Coordinates 
			 | 
		
		
	
		
			
			| 
				43
			 | 
			
				46
			 | 
			
			
				
				 # ---- 
			 | 
		
		
	
		
			
			| 
				44
			 | 
			
				47
			 | 
			
			
				
				  
			 | 
		
		
	
		
			
			| 
				45
			 | 
			
				
			 | 
			
			
				
				-ROTATE = 0 # TODO: fix this; shouldn't be needed 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				48
			 | 
			
			
				
				+ROTATE = 90 # TODO: fix this; shouldn't be needed 
			 | 
		
		
	
		
			
			| 
				46
			 | 
			
				49
			 | 
			
			
				
				  
			 | 
		
		
	
		
			
			| 
				47
			 | 
			
				50
			 | 
			
			
				
				 TAP_LOCATIONS = { 
			 | 
		
		
	
		
			
			| 
				48
			 | 
			
				51
			 | 
			
			
				
				     "1": (460, 460), 
			 | 
		
		
	
	
		
			
			| 
				
			 | 
			
			
				
				@@ -178,6 +181,51 @@ def read_from_power_rankings(count, start, device, folder): 
			 | 
		
		
	
		
			
			| 
				178
			 | 
			
				181
			 | 
			
			
				
				         if i%25 == 0: time.sleep(10) 
			 | 
		
		
	
		
			
			| 
				179
			 | 
			
				182
			 | 
			
			
				
				     return 
			 | 
		
		
	
		
			
			| 
				180
			 | 
			
				183
			 | 
			
			
				
				  
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				184
			 | 
			
			
				
				+def read_top_300_stats(start, skipped, device, folder): 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				185
			 | 
			
			
				
				+    if arguments.verbose: print("Reading the top 300 power rankings.") 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				186
			 | 
			
			
				
				+    if skipped > 0: print("Adding", skipped, "already skipped rankings.") 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				187
			 | 
			
			
				
				+    time.sleep(1) 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				188
			 | 
			
			
				
				+ 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				189
			 | 
			
			
				
				+    count = 300 + 5 + skipped 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				190
			 | 
			
			
				
				+    i = start 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				191
			 | 
			
			
				
				+    while i < (count + 1): 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				192
			 | 
			
			
				
				+        if arguments.verbose: print(str(i) + "/" + str(count) + ": ", end = "", flush = True) 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				193
			 | 
			
			
				
				+ 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				194
			 | 
			
			
				
				+        # Scrape 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				195
			 | 
			
			
				
				+        tap_modifier = tap_profile(i, folder) 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				196
			 | 
			
			
				
				+        i = i + tap_modifier 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				197
			 | 
			
			
				
				+        count = count + tap_modifier - 1 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				198
			 | 
			
			
				
				+        grab_profile_simple(device, folder) 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				199
			 | 
			
			
				
				+ 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				200
			 | 
			
			
				
				+        # Rest 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				201
			 | 
			
			
				
				+        time.sleep(1) 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				202
			 | 
			
			
				
				+        if i%10 == 0: time.sleep(5) 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				203
			 | 
			
			
				
				+        if i%25 == 0: time.sleep(10) 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				204
			 | 
			
			
				
				+    return 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				205
			 | 
			
			
				
				+ 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				206
			 | 
			
			
				
				+def grab_profile_simple(device, folder): 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				207
			 | 
			
			
				
				+    datetime = get_datetime_string() 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				208
			 | 
			
			
				
				+ 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				209
			 | 
			
			
				
				+    # Screenshot profile 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				210
			 | 
			
			
				
				+    # ID, Username, Power, Kill Points 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				211
			 | 
			
			
				
				+    time.sleep(2) 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				212
			 | 
			
			
				
				+    take_screenshot(device, folder + datetime + "_profile") 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				213
			 | 
			
			
				
				+ 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				214
			 | 
			
			
				
				+    # Copy and save username 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				215
			 | 
			
			
				
				+    device.shell("input tap 1055 455") 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				216
			 | 
			
			
				
				+    time.sleep(1) 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				217
			 | 
			
			
				
				+    username = get_clipboard(device) 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				218
			 | 
			
			
				
				+    with open(projectFolder + "usernames.txt", 'a+', newline='', encoding='utf-8') as output_file: 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				219
			 | 
			
			
				
				+        output_file.write(datetime + "\t") 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				220
			 | 
			
			
				
				+        output_file.write(username) 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				221
			 | 
			
			
				
				+        output_file.write("\n") 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				222
			 | 
			
			
				
				+    if arguments.verbose: print(username, end = "", flush = True) 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				223
			 | 
			
			
				
				+ 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				224
			 | 
			
			
				
				+    # Exit 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				225
			 | 
			
			
				
				+    if arguments.verbose: print("") # TODO: say "done" or something here if successful 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				226
			 | 
			
			
				
				+    device.shell("input tap 2185 160") 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				227
			 | 
			
			
				
				+    return 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				228
			 | 
			
			
				
				+ 
			 | 
		
		
	
		
			
			| 
				181
			 | 
			
				229
			 | 
			
			
				
				 # ---- 
			 | 
		
		
	
		
			
			| 
				182
			 | 
			
				230
			 | 
			
			
				
				 # Main 
			 | 
		
		
	
		
			
			| 
				183
			 | 
			
				231
			 | 
			
			
				
				 # ---- 
			 | 
		
		
	
	
		
			
			| 
				
			 | 
			
			
				
				@@ -197,4 +245,5 @@ if __name__ == '__main__': 
			 | 
		
		
	
		
			
			| 
				197
			 | 
			
				245
			 | 
			
			
				
				     if arguments.debug: take_screenshot(device, projectFolder + get_datetime_string() + "_debug") 
			 | 
		
		
	
		
			
			| 
				198
			 | 
			
				246
			 | 
			
			
				
				  
			 | 
		
		
	
		
			
			| 
				199
			 | 
			
				247
			 | 
			
			
				
				     # Scrape 
			 | 
		
		
	
		
			
			| 
				200
			 | 
			
				
			 | 
			
			
				
				-    read_from_power_rankings(arguments.count, arguments.start, device, projectFolder) 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				248
			 | 
			
			
				
				+    if arguments.power: read_from_power_rankings(arguments.count, arguments.start, device, projectFolder) 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				249
			 | 
			
			
				
				+    if arguments.top: read_top_300_stats(arguments.start, arguments.skipped, device, projectFolder) 
			 |