mirror of
https://github.com/shadoll/playing_now_2_mm.git
synced 2025-12-20 07:30:52 +00:00
Add autodetection music player
This commit is contained in:
53
music.py
53
music.py
@@ -1,9 +1,52 @@
|
||||
from mattermost import Mattermost
|
||||
import subprocess
|
||||
from connectors.apple_music import AppleMusic
|
||||
from connectors.spotify import Spotify
|
||||
import os
|
||||
from dotenv import load_dotenv
|
||||
|
||||
class Music:
|
||||
def __init__(self, connector):
|
||||
self.mattermost = Mattermost()
|
||||
self.connector = connector()
|
||||
def __init__(self):
|
||||
load_dotenv()
|
||||
self.music_app = os.getenv('MUSIC_APP', 'autodetect')
|
||||
if self.music_app == 'autodetect':
|
||||
self.music_app = self.get_current_music_player()
|
||||
self.connector = self.get_connector()
|
||||
|
||||
def get_connector(self):
|
||||
if self.music_app == 'spotify':
|
||||
return Spotify()
|
||||
elif self.music_app == 'apple_music':
|
||||
return AppleMusic()
|
||||
else:
|
||||
raise ValueError(f'Invalid music app: {self.music_app}')
|
||||
|
||||
def get_current_track_info(self) -> tuple:
|
||||
return self.connector.get_current_track_info()
|
||||
if self.connector:
|
||||
return self.connector.get_current_track_info()
|
||||
return None, None, None
|
||||
|
||||
@staticmethod
|
||||
def get_current_music_player():
|
||||
spotify_status = (
|
||||
subprocess.check_output(
|
||||
"osascript -e 'application \"Spotify\" is running'", shell=True
|
||||
)
|
||||
.decode()
|
||||
.strip()
|
||||
)
|
||||
apple_music_status = (
|
||||
subprocess.check_output(
|
||||
"osascript -e 'application \"Music\" is running'", shell=True
|
||||
)
|
||||
.decode()
|
||||
.strip()
|
||||
)
|
||||
if spotify_status == "true":
|
||||
player = "Spotify"
|
||||
elif apple_music_status == "true":
|
||||
player = "Apple Music"
|
||||
else:
|
||||
player = None
|
||||
|
||||
# print(f"Detected 📀 player: {player}")
|
||||
return player
|
||||
|
||||
Reference in New Issue
Block a user