45 lines
1.5 KiB
Python
45 lines
1.5 KiB
Python
import time
|
|
import json
|
|
import psutil
|
|
import pypresence
|
|
|
|
rpc = pypresence.Presence('1150714322104877108') # Put your Application ID here
|
|
data = None
|
|
|
|
rpc.connect()
|
|
|
|
def search_file(file_path, word):
|
|
with open(file_path, 'r') as file:
|
|
for line in reversed(file.readlines()):
|
|
if word in line:
|
|
return line
|
|
|
|
|
|
|
|
|
|
while True:
|
|
for proc in psutil.process_iter():
|
|
# This is an example of structural pattern matching added in Python 3.10 | Tutorial: https://www.python.org/dev/peps/pep-0636/
|
|
match proc.name().lower():
|
|
case "ffmpeg.exe":
|
|
speed = search_file('E:/Projects/python/ffmpeg_work_folder/testoutprogress.txt', 'speed=')
|
|
frame = search_file('E:/Projects/python/ffmpeg_work_folder/testoutprogress.txt', 'frame=')
|
|
state_string = speed + "@ " + frame
|
|
d = {"state": state_string, "details": "encoding"}
|
|
with open("E:/Projects/python/ffmpeg_work_folder/testoutprogress.txt", 'r+') as file:
|
|
file.truncate(0)
|
|
data = d
|
|
break
|
|
case "itunes.exe":
|
|
data = {"state": "XYZ", "details": "Zoom", "large_image": "foo", "large_text": "bar"}
|
|
break
|
|
case _:
|
|
data = None
|
|
|
|
# You don't have to update the status like this, you could do it in the for loop or call a different function to do it.
|
|
if data:
|
|
rpc.update(**data)
|
|
else:
|
|
rpc.clear()
|
|
|
|
time.sleep(15) |