Add Interface class
This commit is contained in:
parent
3a8dbd6532
commit
643d70bd20
|
@ -1,4 +1,8 @@
|
||||||
from enum import Enum
|
from enum import Enum
|
||||||
|
from sys import orig_argv as argv
|
||||||
|
from subprocess import run as execute
|
||||||
|
from subprocess import PIPE
|
||||||
|
from subprocess import Popen as subExecute
|
||||||
|
|
||||||
|
|
||||||
class SpotifyLink:
|
class SpotifyLink:
|
||||||
|
@ -30,9 +34,61 @@ class SpotifyLink:
|
||||||
return self.__getsmth(self.SMTH.CTYPE)
|
return self.__getsmth(self.SMTH.CTYPE)
|
||||||
|
|
||||||
def __getid(self) -> str:
|
def __getid(self) -> str:
|
||||||
|
"""
|
||||||
|
:return: Spotify content id
|
||||||
|
:rtype: str
|
||||||
|
"""
|
||||||
return self.__getsmth(self.SMTH.CID)
|
return self.__getsmth(self.SMTH.CID)
|
||||||
|
|
||||||
def uri(self):
|
def uri(self) -> str:
|
||||||
|
"""
|
||||||
|
:return: Spotify URI
|
||||||
|
:rtype: str
|
||||||
|
"""
|
||||||
ctype = self.__gettype()
|
ctype = self.__gettype()
|
||||||
cid = self.__getid()
|
cid = self.__getid()
|
||||||
return f"spotify:{ctype}:{cid}"
|
return f"spotify:{ctype}:{cid}"
|
||||||
|
|
||||||
|
|
||||||
|
class Interface:
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def __getlink() -> SpotifyLink:
|
||||||
|
"""
|
||||||
|
:rtype: SpotifyLink
|
||||||
|
"""
|
||||||
|
args = argv[2:]
|
||||||
|
if args != 1:
|
||||||
|
raise ValueError("Bad usage")
|
||||||
|
return SpotifyLink(args[0])
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def __check() -> bool:
|
||||||
|
"""
|
||||||
|
:rtype: bool
|
||||||
|
"""
|
||||||
|
stoud = execute("dbus-send --session --dest=org.freedesktop.DBus --type=method_call --print-reply "
|
||||||
|
"/org/freedesktop/DBus org.freedesktop.DBus.ListNames | grep spotify", shell=True, text=True,
|
||||||
|
stdout=PIPE).stdout
|
||||||
|
if stoud == "":
|
||||||
|
return True
|
||||||
|
|
||||||
|
def open(self) -> None:
|
||||||
|
"""
|
||||||
|
:rtype: None
|
||||||
|
"""
|
||||||
|
uri = self.__getlink().uri()
|
||||||
|
if self.__check():
|
||||||
|
subExecute(["spotify", f"--uri={uri}"])
|
||||||
|
else:
|
||||||
|
execute(f"dbus-send --type=method_call --dest=org.mpris.MediaPlayer2.spotify /org/mpris/MediaPlayer2 "
|
||||||
|
f"org.mpris.MediaPlayer2.Player.OpenUri string:'{uri}'", shell=True)
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def help() -> None:
|
||||||
|
"""
|
||||||
|
:rtype: None
|
||||||
|
"""
|
||||||
|
msg = ("\nUsage:\nslopen 'https://open.spotify.com/<type>/<id>'\n\nExample:\n"
|
||||||
|
"slopen 'https://open.spotify.com/track/4PTG3Z6ehGkBFwjybzWkR8?si=a4ec356b33fd49d3'")
|
||||||
|
print(msg)
|
||||||
|
|
Loading…
Reference in New Issue