init
This commit is contained in:
commit
f01ffa4c25
72
__main__.py
Normal file
72
__main__.py
Normal file
@ -0,0 +1,72 @@
|
||||
import asyncio
|
||||
from winrt.windows.media.control import GlobalSystemMediaTransportControlsSessionManager as MediaManager
|
||||
import win32com.client
|
||||
import pythoncom
|
||||
import time
|
||||
|
||||
from resources import LineState, CLMgrMessage
|
||||
|
||||
phone_mgr = ""
|
||||
lines = []
|
||||
class PhoneLineEventHandler():
|
||||
|
||||
def OnDispOnLineMgrNotification(self, msg, param, returns=""):
|
||||
if msg == 0:
|
||||
print(CLMgrMessage.s[msg], LineState.s[param])
|
||||
for line in lines:
|
||||
if line.DispState != LineState.Inactive:
|
||||
asyncio.run(try_pause())
|
||||
return True
|
||||
asyncio.run(try_play())
|
||||
return True
|
||||
|
||||
# async def get_media_info():
|
||||
# sessions = await MediaManager.request_async()
|
||||
|
||||
# # This source_app_user_model_id check and if statement is optional
|
||||
# # Use it if you want to only get a certain player/program's media
|
||||
# # (e.g. only chrome.exe's media not any other program's).
|
||||
|
||||
# # To get the ID, use a breakpoint() to run sessions.get_current_session()
|
||||
# # while the media you want to get is playing.
|
||||
# # Then set TARGET_ID to the string this call returns.
|
||||
|
||||
# current_session = sessions.get_current_session()
|
||||
# if current_session: # there needs to be a media session running
|
||||
# #if current_session.source_app_user_model_id == TARGET_ID:
|
||||
# info = await current_session.try_get_media_properties_async()
|
||||
# # song_attr[0] != '_' ignores system attributes
|
||||
# info_dict = {song_attr: info.__getattribute__(song_attr) for song_attr in dir(info) if song_attr[0] != '_'}
|
||||
|
||||
# # converts winrt vector to list
|
||||
# info_dict['genres'] = list(info_dict['genres'])
|
||||
|
||||
# return info_dict
|
||||
|
||||
# # It could be possible to select a program from a list of current
|
||||
# # available ones. I just haven't implemented this here for my use case.
|
||||
# # See references for more information.
|
||||
# raise Exception('TARGET_PROGRAM is not the current media session')
|
||||
|
||||
async def try_play():
|
||||
print("try_play")
|
||||
sessions = await MediaManager.request_async()
|
||||
current_session = sessions.get_current_session()
|
||||
if current_session:
|
||||
await current_session.try_play_async()
|
||||
|
||||
async def try_pause():
|
||||
print("try_pause")
|
||||
sessions = await MediaManager.request_async()
|
||||
current_session = sessions.get_current_session()
|
||||
if current_session:
|
||||
await current_session.try_pause_async()
|
||||
|
||||
if __name__ == '__main__':
|
||||
phone_mgr = win32com.client.Dispatch("CLMgr.ClientLineMgr")
|
||||
phone_mgr_event = win32com.client.WithEvents("CLMgr.ClientLineMgr", PhoneLineEventHandler)
|
||||
for i in range(3):
|
||||
lines.append(phone_mgr.DispGetLine(i))
|
||||
while True:
|
||||
#pythoncom.PumpWaitingMessages()
|
||||
time.sleep(0.1) # Don't use up all our CPU checking constantly
|
Loading…
x
Reference in New Issue
Block a user