annotate qbittorrent_update.py @ 81:22dcc38fd8b1

Update README committer: GitHub <noreply@github.com>
author Paper <37962225+mrpapersonic@users.noreply.github.com>
date Wed, 06 Jul 2022 10:33:28 -0400
parents 8be9281d7ade
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
62
8be9281d7ade Add `qbittorrent_update.py`
Paper <37962225+mrpapersonic@users.noreply.github.com>
parents:
diff changeset
1 """
8be9281d7ade Add `qbittorrent_update.py`
Paper <37962225+mrpapersonic@users.noreply.github.com>
parents:
diff changeset
2 qBittorrent Updater for Windows (x64)
8be9281d7ade Add `qbittorrent_update.py`
Paper <37962225+mrpapersonic@users.noreply.github.com>
parents:
diff changeset
3 by Paper
8be9281d7ade Add `qbittorrent_update.py`
Paper <37962225+mrpapersonic@users.noreply.github.com>
parents:
diff changeset
4
8be9281d7ade Add `qbittorrent_update.py`
Paper <37962225+mrpapersonic@users.noreply.github.com>
parents:
diff changeset
5 This could be easily ported to macOS/Linux, but for the former it
8be9281d7ade Add `qbittorrent_update.py`
Paper <37962225+mrpapersonic@users.noreply.github.com>
parents:
diff changeset
6 would just be easier to do it in AppleScript, and for the latter
8be9281d7ade Add `qbittorrent_update.py`
Paper <37962225+mrpapersonic@users.noreply.github.com>
parents:
diff changeset
7 you should already be using a package manager to do this for you.
8be9281d7ade Add `qbittorrent_update.py`
Paper <37962225+mrpapersonic@users.noreply.github.com>
parents:
diff changeset
8 """
8be9281d7ade Add `qbittorrent_update.py`
Paper <37962225+mrpapersonic@users.noreply.github.com>
parents:
diff changeset
9 import urllib.request
8be9281d7ade Add `qbittorrent_update.py`
Paper <37962225+mrpapersonic@users.noreply.github.com>
parents:
diff changeset
10 import re
8be9281d7ade Add `qbittorrent_update.py`
Paper <37962225+mrpapersonic@users.noreply.github.com>
parents:
diff changeset
11 import psutil
8be9281d7ade Add `qbittorrent_update.py`
Paper <37962225+mrpapersonic@users.noreply.github.com>
parents:
diff changeset
12 import os
8be9281d7ade Add `qbittorrent_update.py`
Paper <37962225+mrpapersonic@users.noreply.github.com>
parents:
diff changeset
13 import platform
8be9281d7ade Add `qbittorrent_update.py`
Paper <37962225+mrpapersonic@users.noreply.github.com>
parents:
diff changeset
14 import time
8be9281d7ade Add `qbittorrent_update.py`
Paper <37962225+mrpapersonic@users.noreply.github.com>
parents:
diff changeset
15
8be9281d7ade Add `qbittorrent_update.py`
Paper <37962225+mrpapersonic@users.noreply.github.com>
parents:
diff changeset
16
8be9281d7ade Add `qbittorrent_update.py`
Paper <37962225+mrpapersonic@users.noreply.github.com>
parents:
diff changeset
17 def _check_running(exename):
8be9281d7ade Add `qbittorrent_update.py`
Paper <37962225+mrpapersonic@users.noreply.github.com>
parents:
diff changeset
18 for proc in psutil.process_iter():
8be9281d7ade Add `qbittorrent_update.py`
Paper <37962225+mrpapersonic@users.noreply.github.com>
parents:
diff changeset
19 try:
8be9281d7ade Add `qbittorrent_update.py`
Paper <37962225+mrpapersonic@users.noreply.github.com>
parents:
diff changeset
20 if proc.name() == exename:
8be9281d7ade Add `qbittorrent_update.py`
Paper <37962225+mrpapersonic@users.noreply.github.com>
parents:
diff changeset
21 return True
8be9281d7ade Add `qbittorrent_update.py`
Paper <37962225+mrpapersonic@users.noreply.github.com>
parents:
diff changeset
22 except psutil.NoSuchProcess as err:
8be9281d7ade Add `qbittorrent_update.py`
Paper <37962225+mrpapersonic@users.noreply.github.com>
parents:
diff changeset
23 return False
8be9281d7ade Add `qbittorrent_update.py`
Paper <37962225+mrpapersonic@users.noreply.github.com>
parents:
diff changeset
24 except psutil.AccessDenied:
8be9281d7ade Add `qbittorrent_update.py`
Paper <37962225+mrpapersonic@users.noreply.github.com>
parents:
diff changeset
25 return False
8be9281d7ade Add `qbittorrent_update.py`
Paper <37962225+mrpapersonic@users.noreply.github.com>
parents:
diff changeset
26
8be9281d7ade Add `qbittorrent_update.py`
Paper <37962225+mrpapersonic@users.noreply.github.com>
parents:
diff changeset
27
8be9281d7ade Add `qbittorrent_update.py`
Paper <37962225+mrpapersonic@users.noreply.github.com>
parents:
diff changeset
28 QBITTORRENT_DIRECTORY = "C:\\Program Files\\qBittorrent"
8be9281d7ade Add `qbittorrent_update.py`
Paper <37962225+mrpapersonic@users.noreply.github.com>
parents:
diff changeset
29 TEMP_DIRECTORY = os.getenv("TEMP")
8be9281d7ade Add `qbittorrent_update.py`
Paper <37962225+mrpapersonic@users.noreply.github.com>
parents:
diff changeset
30 BIT_STR = "_x64" if platform.machine().endswith('64') else ""
8be9281d7ade Add `qbittorrent_update.py`
Paper <37962225+mrpapersonic@users.noreply.github.com>
parents:
diff changeset
31
8be9281d7ade Add `qbittorrent_update.py`
Paper <37962225+mrpapersonic@users.noreply.github.com>
parents:
diff changeset
32 if _check_running("qbittorrent.exe"):
8be9281d7ade Add `qbittorrent_update.py`
Paper <37962225+mrpapersonic@users.noreply.github.com>
parents:
diff changeset
33 print("qBittorrent is currently running! Please exit it and try again.")
8be9281d7ade Add `qbittorrent_update.py`
Paper <37962225+mrpapersonic@users.noreply.github.com>
parents:
diff changeset
34 quit(1)
8be9281d7ade Add `qbittorrent_update.py`
Paper <37962225+mrpapersonic@users.noreply.github.com>
parents:
diff changeset
35
8be9281d7ade Add `qbittorrent_update.py`
Paper <37962225+mrpapersonic@users.noreply.github.com>
parents:
diff changeset
36 # Get the link for the latest version, courtesy of SourceForge
8be9281d7ade Add `qbittorrent_update.py`
Paper <37962225+mrpapersonic@users.noreply.github.com>
parents:
diff changeset
37 urllib.request.urlretrieve(re.search("\<a href=\"(https:\/\/sourceforge\.net\/projects\/qbittorrent\/files\/qbittorrent-win32\/qbittorrent-[0-9\.]+\/qbittorrent_[0-9\.]+" + BIT_STR + "_setup\.exe\/download)\"\>", urllib.request.urlopen("https://www.qbittorrent.org/download.php").read().decode("utf-8")).group(1), os.path.join(TEMP_DIRECTORY, "qbittorrent_setup.exe"))
8be9281d7ade Add `qbittorrent_update.py`
Paper <37962225+mrpapersonic@users.noreply.github.com>
parents:
diff changeset
38
8be9281d7ade Add `qbittorrent_update.py`
Paper <37962225+mrpapersonic@users.noreply.github.com>
parents:
diff changeset
39 # Run the installer and wait for it to finish
8be9281d7ade Add `qbittorrent_update.py`
Paper <37962225+mrpapersonic@users.noreply.github.com>
parents:
diff changeset
40 os.system(os.path.join(TEMP_DIRECTORY, "qbittorrent_setup.exe") + " /S")
8be9281d7ade Add `qbittorrent_update.py`
Paper <37962225+mrpapersonic@users.noreply.github.com>
parents:
diff changeset
41 while _check_running("qbittorrent_setup.exe"):
8be9281d7ade Add `qbittorrent_update.py`
Paper <37962225+mrpapersonic@users.noreply.github.com>
parents:
diff changeset
42 time.sleep(5)
8be9281d7ade Add `qbittorrent_update.py`
Paper <37962225+mrpapersonic@users.noreply.github.com>
parents:
diff changeset
43
8be9281d7ade Add `qbittorrent_update.py`
Paper <37962225+mrpapersonic@users.noreply.github.com>
parents:
diff changeset
44 # Cleanup
8be9281d7ade Add `qbittorrent_update.py`
Paper <37962225+mrpapersonic@users.noreply.github.com>
parents:
diff changeset
45 os.remove(os.path.join(TEMP_DIRECTORY, "qbittorrent_setup.exe"))