Add script for checking for updates for obsidian (only tested on linux mint)
This commit is contained in:
		
							
								
								
									
										66
									
								
								ObsidianUpdateChecker/main.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										66
									
								
								ObsidianUpdateChecker/main.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,66 @@ | ||||
| # Import json parsing and urllib | ||||
| import json | ||||
| import urllib.request | ||||
| # Import subprocess for running dpkg | ||||
| import subprocess | ||||
|  | ||||
| # Endpoint for the latest release | ||||
| API_URL = "https://api.github.com/repos/obsidianmd/obsidian-releases/releases/latest" | ||||
|  | ||||
| # DEB file name, will be filled in later | ||||
| DEB_NAME = "" | ||||
| # URL for the latest deb file, will be filled in later | ||||
| DEB_URL = "" | ||||
| # Version number, will be filled in later | ||||
| DEB_VERSION = "" | ||||
| # Installed version number, will be filled in later | ||||
| INSTALLED_VERSION = "" | ||||
|  | ||||
| # Get the latest release from the API | ||||
| with urllib.request.urlopen(API_URL) as url: | ||||
|     data = json.loads(url.read().decode()) | ||||
|     assets = data["assets"] | ||||
|     for asset in assets | ||||
|         if asset["name"].endswith(".deb"): | ||||
|             DEB_NAME = asset["name"] | ||||
|             DEB_URL = asset["browser_download_url"] | ||||
|  | ||||
| # Parse the version number from the deb file name | ||||
| # Example: obsidian_0.12.15_amd64.deb -> 0.12.15 | ||||
| DEB_VERSION = DEB_NAME.split("_")[1] | ||||
|  | ||||
| print("Latest version: " + DEB_VERSION) | ||||
|  | ||||
| # Get the installed version number by parsing the output of dpkg -s obsidian | ||||
| output = subprocess.run(["dpkg", "-s", "obsidian"], capture_output=True) | ||||
| # Parse the output for the version number | ||||
| # Example: Version: 0.12.15 | ||||
| for line in output.stdout.decode().split("\n"): | ||||
|     if line.startswith("Version:"): | ||||
|         INSTALLED_VERSION = line.split(" ")[1] | ||||
|  | ||||
| print("Installed version: " + INSTALLED_VERSION) | ||||
|  | ||||
| def semver_check_new(old, new): | ||||
|     # Split the version numbers into arrays of numbers | ||||
|     old_split = old.split(".") | ||||
|     new_split = new.split(".") | ||||
|     # Loop through the numbers | ||||
|     for i in range(len(old_split)): | ||||
|         # If the new version is higher, return true | ||||
|         if int(new_split[i]) > int(old_split[i]): | ||||
|             return True | ||||
|     # If the new version is the same or lower, return false | ||||
|     return False | ||||
|  | ||||
| # Check if the new version is higher than the installed version | ||||
| if semver_check_new(INSTALLED_VERSION, DEB_VERSION): | ||||
|     print("New version available!") | ||||
|     # Download the deb file | ||||
|     urllib.request.urlretrieve(DEB_URL, DEB_NAME) | ||||
|     # Install the deb file | ||||
|     subprocess.run(["pkexec", "apt", "install", f"./{DEB_NAME}"]) | ||||
|     # Remove the deb file | ||||
|     subprocess.run(["rm", DEB_NAME]) | ||||
| else: | ||||
|     print("No new version available") | ||||
		Reference in New Issue
	
	Block a user