ver 2022.09.13 automatically download chromedrive, support google account sign in.
							parent
							
								
									c145d588ee
								
							
						
					
					
						commit
						ad33e34891
					
				| 
						 | 
				
			
			@ -8,7 +8,7 @@ import random
 | 
			
		|||
#print("python version", platform.python_version())
 | 
			
		||||
 | 
			
		||||
driver_type = 'stealth'
 | 
			
		||||
#driver_type = 'undetected_chromedriver'
 | 
			
		||||
driver_type = 'undetected_chromedriver'
 | 
			
		||||
 | 
			
		||||
if driver_type=="undetected_chromedriver":
 | 
			
		||||
    from seleniumwire import webdriver
 | 
			
		||||
| 
						 | 
				
			
			@ -60,7 +60,7 @@ ssl._create_default_https_context = ssl._create_unverified_context
 | 
			
		|||
#附註1:沒有寫的很好,很多地方應該可以模組化。
 | 
			
		||||
#附註2:
 | 
			
		||||
 | 
			
		||||
CONST_APP_VERSION = u"MaxBot (2022.07.27)"
 | 
			
		||||
CONST_APP_VERSION = u"MaxBot (2022.09.13)"
 | 
			
		||||
 | 
			
		||||
CONST_FROM_TOP_TO_BOTTOM = u"from top to bottom"
 | 
			
		||||
CONST_FROM_BOTTOM_TO_TOP = u"from bottom to top"
 | 
			
		||||
| 
						 | 
				
			
			@ -429,6 +429,12 @@ def load_config_from_local(driver):
 | 
			
		|||
            # method 5: uc
 | 
			
		||||
            #options = webdriver.ChromeOptions()
 | 
			
		||||
            if driver_type=="undetected_chromedriver":
 | 
			
		||||
                # multiprocessing not work bug.
 | 
			
		||||
                if platform.system().lower()=="windows":
 | 
			
		||||
                    if hasattr(sys, 'frozen'):
 | 
			
		||||
                        from multiprocessing import freeze_support
 | 
			
		||||
                        freeze_support()
 | 
			
		||||
 | 
			
		||||
                options = uc.ChromeOptions()
 | 
			
		||||
                options.add_argument("--password-store=basic")
 | 
			
		||||
                options.page_load_strategy="eager"
 | 
			
		||||
| 
						 | 
				
			
			@ -440,13 +446,19 @@ def load_config_from_local(driver):
 | 
			
		|||
                    driver = uc.Chrome(executable_path=chromedriver_path, options=options)
 | 
			
		||||
                else:
 | 
			
		||||
                    print("Oops! web driver not on path:",chromedriver_path )
 | 
			
		||||
                    driver = uc.Chrome(options=options, suppress_welcome=False)
 | 
			
		||||
                    print('let uc automatically download chromedriver.')
 | 
			
		||||
                    #driver = uc.Chrome(options=options, suppress_welcome=False)
 | 
			
		||||
                    driver = uc.Chrome(options=options)
 | 
			
		||||
 | 
			
		||||
                if driver is None:
 | 
			
		||||
                    print("create web drive object fail!")
 | 
			
		||||
 | 
			
		||||
                download_dir_path="."
 | 
			
		||||
                params = {
 | 
			
		||||
                    "behavior": "allow",
 | 
			
		||||
                    "downloadPath": os.path.realpath(download_dir_path)
 | 
			
		||||
                }
 | 
			
		||||
                #print("assign setDownloadBehavior.")
 | 
			
		||||
                driver.execute_cdp_cmd("Page.setDownloadBehavior", params)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -459,7 +471,9 @@ def load_config_from_local(driver):
 | 
			
		|||
            firefox_service = Service(chromedriver_path)
 | 
			
		||||
            driver = webdriver.Firefox(service=firefox_service)
 | 
			
		||||
 | 
			
		||||
        
 | 
			
		||||
        time.sleep(1.0)
 | 
			
		||||
        #print("try to close opened tabs.")
 | 
			
		||||
        try:
 | 
			
		||||
            window_handles_count = len(driver.window_handles)
 | 
			
		||||
            if window_handles_count >= 1:
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										20
									
								
								settings.py
								
								
								
								
							
							
						
						
									
										20
									
								
								settings.py
								
								
								
								
							| 
						 | 
				
			
			@ -17,7 +17,7 @@ import sys
 | 
			
		|||
import platform
 | 
			
		||||
import json
 | 
			
		||||
 | 
			
		||||
CONST_APP_VERSION = u"MaxBot (2022.07.27)"
 | 
			
		||||
CONST_APP_VERSION = u"MaxBot (2022.09.13)"
 | 
			
		||||
 | 
			
		||||
CONST_FROM_TOP_TO_BOTTOM = u"from top to bottom"
 | 
			
		||||
CONST_FROM_BOTTOM_TO_TOP = u"from bottom to top"
 | 
			
		||||
| 
						 | 
				
			
			@ -153,8 +153,11 @@ def btn_save_act(slience_mode=False):
 | 
			
		|||
    return is_all_data_correct
 | 
			
		||||
 | 
			
		||||
def btn_run_clicked():
 | 
			
		||||
    print('run button pressed.')
 | 
			
		||||
    Root_Dir = ""
 | 
			
		||||
    if btn_save_act(slience_mode=True):
 | 
			
		||||
    save_ret = btn_save_act(slience_mode=True)
 | 
			
		||||
    print("save config result:", save_ret)
 | 
			
		||||
    if save_ret:
 | 
			
		||||
        import subprocess
 | 
			
		||||
        if hasattr(sys, 'frozen'):
 | 
			
		||||
            print("execute in frozen mode")
 | 
			
		||||
| 
						 | 
				
			
			@ -171,18 +174,25 @@ def btn_run_clicked():
 | 
			
		|||
                print("execute .exe binary.")
 | 
			
		||||
                subprocess.Popen("chrome_tixcraft.exe", shell=True)
 | 
			
		||||
        else:
 | 
			
		||||
            #print("execute in shell mode")
 | 
			
		||||
            interpreter_binary = 'python'
 | 
			
		||||
            interpreter_binary_alt = 'python3'
 | 
			
		||||
            
 | 
			
		||||
            print("execute in shell mode.")
 | 
			
		||||
            working_dir = os.path.dirname(os.path.realpath(__file__))
 | 
			
		||||
            #print("script path:", working_dir)
 | 
			
		||||
            #messagebox.showinfo(title="Debug0", message=working_dir)
 | 
			
		||||
            
 | 
			
		||||
            # some python3 binary, running in 'python' command.
 | 
			
		||||
            try:
 | 
			
		||||
                s=subprocess.Popen(['python3', 'chrome_tixcraft.py'], cwd=working_dir)
 | 
			
		||||
                print('try', interpreter_binary)
 | 
			
		||||
                s=subprocess.Popen([interpreter_binary, 'chrome_tixcraft.py'], cwd=working_dir)
 | 
			
		||||
                #s=subprocess.Popen(['./chrome_tixcraft'], stdout=subprocess.PIPE, stderr=subprocess.PIPE, cwd=working_dir)
 | 
			
		||||
                #s=subprocess.run(['python3', 'chrome_tixcraft.py'], cwd=working_dir)
 | 
			
		||||
                #messagebox.showinfo(title="Debug1", message=str(s))
 | 
			
		||||
            except Exception as exc:
 | 
			
		||||
                print('try', interpreter_binary_alt)
 | 
			
		||||
                try:
 | 
			
		||||
                    s=subprocess.Popen(['python', 'chrome_tixcraft.py'], cwd=working_dir)
 | 
			
		||||
                    s=subprocess.Popen([interpreter_binary_alt, 'chrome_tixcraft.py'], cwd=working_dir)
 | 
			
		||||
                except Exception as exc:
 | 
			
		||||
                    msg=str(exc)
 | 
			
		||||
                    messagebox.showinfo(title="Debug2", message=msg)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue