Monday, July 29, 2013

PowerShell to Create a random Music Playlist in VLC

This is a trick which got famous at the PowerShell Bangalore User Group (PSBUG) session.

Little trick to play a single random song provided VLC (or any other player) is set as default player for the .mp3 files:

  Posh (0002) >  Get-ChildItem -Path 'F:\songs\movies neew' -Include *.mp3 -Recurse | Get-Random -Count 1 | Invoke-Item 

But this won't create a playlist for you if you simply increased the count for Get-Random..try this
  Posh (0003) >  Get-ChildItem -Path 'F:\songs\movies neew' -Include *.mp3 -Recurse | Get-Random -Count 2 | Invoke-Item


Let's try creating a playlist this time ( have to set VLC as  the default player for .mp3 files , thus creating filetype associations for .mp3 files) 

You need get all the possible list values for mp3 extension.I read this excellent article by David Moravec at PowerShellMagazine to list all possible verb values for a particular extension.
After you go through the above mentioned article, you just use the below code to get a list of all extensions and the list of verbs associated with them

001
002
003
004
005
cmd /c assoc |
ForEach
{
    $ext = ($_ -split '=' )[0 ]"{0}: {1}" -f $ext, (( New-Object System.Diagnostics.ProcessStartInfo -ArgumentList "test$ext" ).Verbs -join ', ' )
}| Out-GridView -Title 'Verb values for associated extensions'

Now on the Out-Gridview window filter out using ".mp3" and see the list of verbs that we have



Now we have all the ingredients ready, First we get a list of all .mp3 files in a directory then randomly get 5 files out of it and at last foreach of those 5 files we start a process with the -verb parameter taking an argument of 'AddtoPlaylistVLC'

001
002
003
004
005
006

 get-childitem -Path 'F:\songs\movies neew' -Filter *.mp3 -Recurse |
    Get-Random -Count 5 |
    Foreach { Start-Process -FilePath $_.Fullname -verb 'AddtoPlaylistVLC' }


Wait and watch :)

1 comment:

  1. heyy i didn't watch infact listen a nice melody... GREAT!!! :)

    ReplyDelete