1
Пользователь
-
Автор темы
- #1
переписано с c++, выкладываю потому что не нашел такого на python'e (везде через spotify api)
Python:
import win32gui, win32process, win32api
import win32con
import psutil
import ctypes
import time
def is_spotify(entry):
return entry.name() == "Spotify.exe"
def enum_windows_proc(hwnd, pids):
_, winid = win32process.GetWindowThreadProcessId(hwnd)
if not pids:
return False
if winid in pids:
title = win32gui.GetWindowText(hwnd)
if ("GDI+ Window (Spotify.exe)" in title or
"Default IME" in title or
not title or
"MSCTFIME UI" in title):
return True
if len(title) > 1:
global procID, ttl
procID = winid
ttl = title
return True
def spotify_window():
pids = []
for proc in psutil.process_iter(['pid', 'name']):
if is_spotify(proc):
pids.append(proc.info['pid'])
win32gui.EnumWindows(enum_windows_proc, pids)
return bool(pids)
def display_current_spotify_song():
global lasttime
previous_title = None
while True:
if spotify_window():
ttl_utf8 = ttl.encode('utf-8')
if b"spotify" in ttl_utf8.lower():
spotify_title = "Stopped / Paused"
else:
spotify_title = ttl
if "Spotify Premium" in spotify_title:
spotify_title = "Stopped / Paused"
if "Spotify Free" in spotify_title:
spotify_title = "Stopped / Paused"
else:
spotify_title = "Spotify Not Found"
if spotify_title != previous_title:
print(spotify_title)
previous_title = spotify_title
time.sleep(1)
procID = None
ttl = ""
lasttime = 0
display_current_spotify_song()