Comment puis-je trouver l'emplacement des images dans la superposition du contrôle du volume des médias ?
Réponse
Trop de publicités?Je suis tombé sur la réponse ici
Et voici comment enregistrer l'image dans le répertoire courant en Python
import asyncio
from winrt.windows.media.control import \
GlobalSystemMediaTransportControlsSessionManager as MediaManager
from winrt.windows.storage.streams import \
DataReader, Buffer, InputStreamOptions
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).
current_session = sessions.get_current_session()
if current_session: # there needs to be a media session running
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('No current media session')
current_media_info = asyncio.run(get_media_info())
async def read_stream_into_buffer(stream_ref, buffer):
readable_stream = await stream_ref.open_read_async()
readable_stream.read_async(buffer, buffer.capacity, InputStreamOptions.READ_AHEAD)
# create the current_media_info dict with the earlier code first
thumb_stream_ref = current_media_info['thumbnail']
# 5MB (5 million byte) buffer - thumbnail unlikely to be larger
thumb_read_buffer = Buffer(5000000)
# copies data from data stream reference into buffer created above
asyncio.run(read_stream_into_buffer(thumb_stream_ref, thumb_read_buffer))
# reads data (as bytes) from buffer
buffer_reader = DataReader.from_buffer(thumb_read_buffer)
byte_buffer = buffer_reader.read_bytes(thumb_read_buffer.length)
with open('media_thumb.jpg', 'wb+') as fobj:
fobj.write(bytearray(byte_buffer))
0 votes
Image de Spotify ? Il s'agit généralement d'une icône stockée dans l'application elle-même, difficilement accessible.
0 votes
@Moab non pas nécessairement spotify. Il pourrait s'agir de n'importe quel service utilisant l'overlay. J'aurais pensé que Windows le stocke ou le met en cache quelque part.
1 votes
En général, elle n'est mise en cache nulle part à ma connaissance, elle est tirée de l'application elle-même.
0 votes
@Moab Vous pensez donc qu'il n'y a pas moyen d'obtenir cette image sans l'extraire moi-même de chaque service ?
1 votes
C'est possible, mais je n'ai jamais cherché à savoir comment. Peut-être que quelqu'un ici aura la réponse. Excellente question.
0 votes
En ce qui concerne les boutons, il peut s'agir d'une police de caractères personnalisée ou d'un fichier SVG pour prendre en charge la haute résolution. Il pourrait donc ne pas s'agir d'une image (bitmap). La pochette de l'album et l'icône de l'application sont fournies par l'application.