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