You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							69 lines
						
					
					
						
							2.2 KiB
						
					
					
				
			
		
		
	
	
							69 lines
						
					
					
						
							2.2 KiB
						
					
					
				import configparser
 | 
						|
import psutil
 | 
						|
import time
 | 
						|
import os
 | 
						|
import subprocess
 | 
						|
import pystray
 | 
						|
from PIL import Image
 | 
						|
from datetime import datetime
 | 
						|
 | 
						|
# Function to check if Chatterino is running
 | 
						|
def is_chatterino_running():
 | 
						|
    for proc in psutil.process_iter():
 | 
						|
        try:
 | 
						|
            if program_executable in proc.name():
 | 
						|
                return True
 | 
						|
        except (psutil.NoSuchProcess, psutil.AccessDenied, psutil.ZombieProcess):
 | 
						|
            pass
 | 
						|
    return False
 | 
						|
 | 
						|
# Function to run Chatterino
 | 
						|
def run_program(program_path):
 | 
						|
    subprocess.Popen([program_path], cwd=program_dir)
 | 
						|
    now = datetime.now()
 | 
						|
    timenow = now.strftime("%H:%M:%S")
 | 
						|
    print("[" + timenow + "] Started Chatterino.")
 | 
						|
 | 
						|
# Function to display system tray icon
 | 
						|
def on_quit_callback(icon):
 | 
						|
    icon.stop()
 | 
						|
 | 
						|
# Define system tray icon and menu
 | 
						|
def create_tray_icon():
 | 
						|
    # todo: fix tray icon not showing up
 | 
						|
    icon_image = Image.open("icon.png")
 | 
						|
    menu = pystray.Menu(
 | 
						|
        pystray.MenuItem(
 | 
						|
            "Quit", on_quit_callback, default=True
 | 
						|
        )
 | 
						|
    )
 | 
						|
    return pystray.Icon("Chatterino Monitor", icon_image, "Chatterino Monitor", menu)
 | 
						|
 | 
						|
if __name__ == '__main__':
 | 
						|
    print("Yandols' Chatterino Process Monitor Script")
 | 
						|
 | 
						|
    # Load settings from config file
 | 
						|
    config = configparser.ConfigParser()
 | 
						|
    config.read('settings.ini')
 | 
						|
    program_executable = config.get('ChatterinoMonitor', 'chatterino_exe')
 | 
						|
    program_dir = config.get('ChatterinoMonitor', 'chatterino_directory')
 | 
						|
    program_path = program_dir + "\\" + program_executable
 | 
						|
 | 
						|
    # Create system tray icon
 | 
						|
    icon = create_tray_icon()
 | 
						|
    time.sleep(1)  # wait for system tray icon to initialize
 | 
						|
 | 
						|
    # Loop to check if Chatterino is running every 10 minutes
 | 
						|
    while True:
 | 
						|
        if is_chatterino_running():
 | 
						|
            now = datetime.now()
 | 
						|
            timenow = now.strftime("%H:%M:%S")
 | 
						|
            print("[" + timenow + "] Chatterino is running. Rechecking in 10 minutes.")
 | 
						|
        else:
 | 
						|
            now = datetime.now()
 | 
						|
            timenow = now.strftime("%H:%M:%S")
 | 
						|
            print("[" + timenow + "] Chatterino is not running. Starting in 30 seconds...")
 | 
						|
            time.sleep(30)
 | 
						|
            run_program(program_path)
 | 
						|
        time.sleep(600)  # wait 10 minutes
 |