PowerShell

Récupérer les images de Windows Spotlight dans Windows 10 en PowerShell

Sous Windows 10, il existe une fonctionnalité qui permet de mettre un joli fond d’écran au niveau de l’écran de verrouillage de session : Windows Spotlight. Ce dernier est proposé automatiquement par Microsoft et changé chaque jour avec quelque-chose de nouveau (ou plus régulièrement si l’actuelle ne vous plaît pas puisque vous avez la possibilité d’évaluer chaque fond).

Il s’agit d’une fonctionnalité propre à Windows 10 mais qui ne change pas l’arrière-plan du bureau mais uniquement celui du verrouillage (lorsque vous faîtes WIN + L où que vous fermez votre session). En fait, c’est un peu comme l’application Bing Desktop… sauf qu’il n’y a pas la partie Bing 😉 !

Personnellement, je trouve que les images sont plutôt très sympas alors j’ai voulu les récupérer afin de les utiliser également comme fond d’écran.

Etape 1 – Activer l’option, localiser les images et procéder manuellement

Première étape, vous devez activer l’option sur votre PC : Paramètres > Personnalisation puis Ecran de verrouillage et choisissez Windows Spotlight dans le menu déroulant.

Une fois que c’est fait, vous devriez pouvoir accéder au dossier caché suivant :

%localappdata%\Packages\

Microsoft.Windows.ContentDeliveryManager_cw5n1h2txyewy\

LocalState\Assets

(rassemblez les lignes, c’est simplement pour éviter de casser le formatage du site)

C’est le dossier dans lequel sont stockées les images. Pour y accéder, copiez-collez le chemin précédent dans votre Explorateur Windows ou directement dans la fenêtre qui apparaît lorsque vous appuyez sur WINDOWS + R.

Vous devez voir un dossier similaire avec des fichiers étranges :

Bien que ces fichiers ne s’ouvrent pas, il s’agit bien des images utilisées par Windows Spotlight.

Créez un nouveau dossier de travail sur votre bureau (ou ailleurs) et copiez-collez y tous ces fichiers.

Appuyez maintenant sur SHIFT + cliquez sur le bouton gauche de votre souris. Dans le menu contextuel qui apparaît, choisissez l’option Open command window here / Ouvrir commandes Windows ici.

Exécutez la commande suivante :

Ren *.* *.jpg

Pas de stress, on ne fait rien de grave. On renomme simplement tous les fichiers de notre dossier de travail en ajoutant à la fin l’extension .JPG. De cette façon, nos fichiers seront bien identifiés par le système comme des images et nous pourrons alors les ouvrir.

Il vous reste maintenant à :

  • Faire le tri entre les images et les résidus non souhaités comme le logo du jeu de bonbons (dont le nom de me revient pas au moment où j’écris cet article), celui de Flipboard, la tête d’oiseau (dont on se demande ce qu’il fait là), etc.
  • Différencier les images qui sont au format Portrait ou Paysage. En effet, vous trouverez des images au format Portrait qui sont utilisées pour Windows Spotlight sur Windows Phone mais qui ne donneront rien de bon sur votre Windows 10 de bureau ! 😉

Une fois que c’est bon, il vous suffit de vous créer un dossier dans vos Documents et d’y mettre toutes les images que vous souhaitez conserver comme fonds d’écran possibles.

Ensuite, il ne vous reste plus qu’à activer l’option dans les paramètres :

Activez l’option Slideshow puis définissez votre dossier qui contient toutes les images (que j’ai appelé personnellement Wallpapers_PC).

De cette façon, votre écran de verrouillage de session et votre fond d’écran utilisent désormais le même lot d’images qui provient de Windows Spotlight.

C’est terminé ! 🙂

Concrètement ça marche, mais le désavantage de cette solution et que vous devrez régulièrement aller récupérer les images dans le dossier caché de Windows Spotlight, puis les copier-coller dans votre dossier, puis ajouter l’extension JPG afin de pouvoir utiliser les nouvelles images… Sinon, vous n’aurez que les images disponibles à l’instant où vous avez réalisé la manipulation. 🙁

Original article

Etape 2 – Automatiser la récupération des images en PowerShell

Heureusement, il est possible d’automatiser cela.

Créez-vous un dossier Windows_Spotlight dans lequel vous allez créer 2 nouveaux dossiers : PC et Smartphone.

$me = $env:username
$source = "C:\Users\$me\AppData\Local\Packages\
Microsoft.Windows.ContentDeliveryManager_cw5n1h2txyewy\LocalState\Assets"
$target_pc = "C:\Users\$me\Pictures\Windows_Spotlight\PC"
$target_phone = "C:\Users\$me\Pictures\Windows_Spotlight\Phone"

Write-Host "[DEBUG] - Starting importing Windows Spotlight wallpapers..."

# Testing if the folder Windows Spotlight Exists
if ((Test-Path $target_pc) -eq $false)
{
 # Creating the folder if not exist
 Write-Host "[ERROR] - Check folder creation"
 Break
}

# Get all the images in the hidden folder of Windows Spotlight
$images = Get-ChildItem $source

# For each image
foreach ($wallpaper in $images)
{
 # If the file has NOT been already imported by previous script execution
 # We will : import/copy it, then rename it by adding the jpg extension
 if ((Test-Path $target_pc\$wallpaper.jpg) -eq $false)
 {
 # Copy
 Copy-Item $source\$wallpaper -Destination $target_pc
 # Rename
 Rename-Item $target_pc\$wallpaper -NewName $target_pc\$wallpaper.jpg
 # Log
 Write-Host "$wallpaper copied and added JPG extension into $target_pc folder !"
 }

 else
 {
 Write-Host "$wallpaper has been already imported !"
 }

 # Clearing the images that are probably not true image that can be used as wallpapers
 # In fact, removing all the files under 100 000 bytes
 if ((Get-Item $target_pc\$wallpaper.jpg).Length -lt 100000)
 {
 Write-Host "$wallpaper removed (probably not wallpapers)"
 Remove-Item $target_pc\$wallpaper.jpg
 }

 # At this step, we have only true images that can be used for PC but also for Phone !
 # We will get the Height / Width details of each picture
 # Only if the image exists
 if ((Test-Path $target_pc\$wallpaper.jpg) -eq $true)
 {
 $image_details = Get-Image $target_pc\$wallpaper.jpg

 # If, Width is larger that Height therefore is landscape / paysage
 if ($image_details.Height -le $image_details.Width)
 {
 Write-Host "$wallpaper is a Landscape - We keep it in the current folder"
 }

 # Otherwise height is Larger than Width - It's for Phone
 else
 {
 Write-Host "$wallpaper is a Portrait - Moved for Phone usage"
 # File has been already move in previous import - so its removed
 if ((Test-Path $target_phone\$wallpaper.jpg) -eq $true)
 {
 Remove-Item $target_pc\$wallpaper.jpg
 }
 # New file, we move it in phone folder
 else
 {
 Move-Item -Path $target_pc\$wallpaper.jpg -Destination $target_phone
 }
 }
 }
}
# Ending script execution
Write-Host "Import of Windows Spotlight Wallpapers Done !"
Write-Host ("Number of Available Elements for PC Wallpapers : " + (Get-ChildItem $target_pc).Count)
Write-Host ("Number of Available Elements for Phone Wallpapers : " + (Get-ChildItem $target_phone).Count)

En gros, que fait-on :

    • On vérifie que notre dossier de travail est bien créé. Par défaut : C:\Users\vous\Pictures\Windows_Spotlight\PC

 

    • On récupère la liste de tous les fichiers disponibles dans le dossier caché de Windows Spotlight

 

    • Pour chaque fichier : 

       

        • Si le fichier n’existe pas déjà (lors d’un précédent import), on copie le fichier dans notre dossier Windows_Spotlight\PC,

       

        • On le renomme en ajoutant l’extension de fichier .jpg à la fin,

       

        • On supprime tous les fichiers dont la taille est inférieure ou égale à 100 000 bytes car à priori il s’agira des logos et autres résidus comme je les ai appelés précédemment,

       

      • Si l’image n’a pas été supprimée, on récupère maintenant les dimensions height / width pour chaque image (pour cette partie j’utilise la fonction Get-Image extraite de PSImageTools – voir note à la fin). 

         

          • Si l’image a une hauteur moins importante que la largeur, il s’agit donc d’une image au format paysage, nous gardons donc le fichier dans notre dossier de travail Windows_Spotlight\PC

         

        • Sinon (la hauteur est plus importante) et c’est donc une image au format portrait. Nous déplaçons donc le fichier dans le dossier Windows_Spotlight\Phone (si cela n’a pas encore été fait dans un précédent import).

 

  • A la fin, on affiche le nombre d’images disponibles pour chaque dossier.

On voit bien que nous n’avons plus que des images fonctionnelles et utilisables et que chacun a été positionnée dans le répertoire qui lui convient en fonction de son format (paysage pour PC et portrait pour smartphone). 🙂

Etape 3 – Pour aller plus loin

Vous pouvez maintenant choisir de positionner votre dossier Windows_Spotlight dans votre DropBox ou dans OneDrive (ou autre). De cette façon, toutes les images seront disponibles depuis tous vos ordinateurs et/ou smartphone.

Mieux encore, vous pouvez également automatiser l’exécution de ce script via les tâches planifiées afin d’exécuter et faire une copie chaque jour des nouvelles images proposées par Microsoft ! 😉

N’hésitez pas à personnaliser le code selon vos besoins car même si ça fait le boulot, il y a moyen d’améliorer ça. Par exemple, vous pourriez créer les dossiers automatiquement (là où j’ai choisi de Break si jamais le dossier n’est pas conforme).

La fonction Get-Image que j’utilise provient du pack PSImageTools disponible sur GitHub. Elle n’a pas du tout été modifiée et je l’utilise telle que fournit pas son auteur. Plus d’informations sur GitHub. Merci à lui ! 🙂

Téléchargement : spotlight_wallpapers v2 blog

Ou directement sur GitHub via le lien suivant.

Share
Published by
thibault

Recent Posts

Adobe Firefly Video : L’outil de génération vidéo accessible à tous

Adobe Firefly Video : L’outil de génération vidéo accessible à tous Adobe a récemment annoncé…

6 jours ago

En France, les messageries chiffrées bientôt sous surveillance : un débat entre sécurité et libertés individuelles

Les messageries chiffrées telles que WhatsApp et Signal pourraient bientôt faire face à des obligations…

3 semaines ago

TikTok et les États-Unis : Une saga entre interdictions, rachats et rebondissements politiques

Logo tikTok Depuis son lancement international en 2018, TikTok a conquis des millions d’utilisateurs à…

3 semaines ago

DeepSeek : Le nouveau titan de l’IA chinoise qui ébranle la Silicon Valley

L’écosystème de l’intelligence artificielle (IA) est en perpétuelle évolution, mais l’arrivée de DeepSeek, un modèle…

3 semaines ago

Microsoft introduit une connexion automatique controversée : quels enjeux pour votre sécurité ?

Microsoft introduit une connexion automatique controversée Microsoft semble s’engager dans une direction qui suscite la…

4 semaines ago

OpenAI dévoile Operator : ChatGPT surfe sur Internet pour vous

OpenAI dévoile Operator : ChatGPT surfe sur Internet pour vous OpenAI dévoile Operator : L’IA…

4 semaines ago