-
-
Save rkumar/503162 to your computer and use it in GitHub Desktop.
#!/bin/bash | |
# | |
#################################### | |
# iTunes Command Line Control v1.0 | |
# written by David Schlosnagle | |
# created 2001.11.08 | |
# edit 2010.06.01 rahul kumar | |
#################################### | |
showHelp () { | |
echo "-----------------------------"; | |
echo "iTunes Command Line Interface"; | |
echo "-----------------------------"; | |
echo "Usage: `basename $0` <option>"; | |
echo; | |
echo "Options:"; | |
echo " status = Shows iTunes' status, current artist and track."; | |
echo " play = Start playing iTunes."; | |
echo " pause = Pause iTunes."; | |
echo " next = Go to the next track."; | |
echo " prev = Go to the previous track."; | |
echo " mute = Mute iTunes' volume."; | |
echo " unmute = Unmute iTunes' volume."; | |
echo " vol up = Increase iTunes' volume by 10%"; | |
echo " vol down = Increase iTunes' volume by 10%"; | |
echo " vol # = Set iTunes' volume to # [0-100]"; | |
echo " stop = Stop iTunes."; | |
echo " quit = Quit iTunes."; | |
echo " playlist = Show playlists saved in iTunes."; | |
echo " tracks = Show tracks for current or given playlist."; | |
echo " shuf = Shuffle current playlist"; | |
echo " nosh = Do not shuffle current playlist"; | |
} | |
if [ $# = 0 ]; then | |
showHelp; | |
fi | |
while [ $# -gt 0 ]; do | |
arg=$1; | |
case $arg in | |
"status" ) state=`osascript -e 'tell application "iTunes" to player state as string'`; | |
echo "iTunes is currently $state."; | |
if [ $state = "playing" ]; then | |
artist=`osascript -e 'tell application "iTunes" to artist of current track as string'`; | |
track=`osascript -e 'tell application "iTunes" to name of current track as string'`; | |
echo "Current track $artist: $track"; | |
fi | |
break ;; | |
"play" ) echo "Playing iTunes."; | |
osascript -e 'tell application "iTunes" to play'; | |
break ;; | |
"pause" ) echo "Pausing iTunes."; | |
osascript -e 'tell application "iTunes" to pause'; | |
break ;; | |
"next" ) echo "Going to next track." ; | |
osascript -e 'tell application "iTunes" to next track'; | |
break ;; | |
"prev" ) echo "Going to previous track."; | |
osascript -e 'tell application "iTunes" to previous track'; | |
break ;; | |
"mute" ) echo "Muting iTunes volume level."; | |
osascript -e 'tell application "iTunes" to set mute to true'; | |
break ;; | |
"unmute" ) echo "Unmuting iTunes volume level."; | |
osascript -e 'tell application "iTunes" to set mute to false'; | |
break ;; | |
"vol" ) echo "Changing iTunes volume level."; | |
vol=`osascript -e 'tell application "iTunes" to sound volume as integer'`; | |
if [ $2 = "up" ]; then | |
newvol=$(( vol+10 )); | |
elif [ $2 = "down" ]; then | |
newvol=$(( vol-10 )); | |
elif [ $2 -gt 0 ]; then | |
newvol=$2; | |
fi | |
osascript -e "tell application \"iTunes\" to set sound volume to $newvol"; | |
break ;; | |
"stop" ) echo "Stopping iTunes."; | |
osascript -e 'tell application "iTunes" to stop'; | |
break ;; | |
"quit" ) echo "Quitting iTunes."; | |
osascript -e 'tell application "iTunes" to quit'; | |
exit 1 ;; | |
## addition playlist of choice | |
"playlist" ) | |
if [ -n "$2" ]; then | |
echo "Changing iTunes playlists to '$2'."; | |
osascript -e 'tell application "iTunes"' -e "set new_playlist to \"$2\" as string" -e "play playlist new_playlist" -e "end tell"; | |
break ; | |
else | |
# Show available iTunes playlists. | |
echo "Playlists:"; | |
osascript -e 'tell application "iTunes"' -e "set allPlaylists to (get name of every playlist)" -e "end tell"; | |
break; | |
fi | |
break;; | |
"shuf" ) echo "Shuffle is ON."; | |
osascript -e 'tell application "iTunes" to set shuffle of current playlist to 1'; | |
break ;; | |
"nosh" ) echo "Shuffle is OFF."; | |
osascript -e 'tell application "iTunes" to set shuffle of current playlist to 0'; | |
break ;; | |
"tracks" ) | |
if [ -n "$2" ]; then | |
osascript -e 'tell application "iTunes"' -e "set new_playlist to \"$2\" as string" -e " get name of every track in playlist new_playlist" -e "end tell"; | |
break; | |
fi | |
osascript -e 'tell application "iTunes" to get name of every track in current playlist'; | |
break ;; | |
"help" | * ) echo "help:"; | |
showHelp; | |
break ;; | |
esac | |
done |
@genuinefafa
It's possible to partially use iTunes from Windows using Powershell - Here's how:
Config:
- OS: Windows 10 - 64 bits - Fall Creators Update
- iTunes version: 12.7
- Powershell version: 5.1
In Powershell:
# search for iTunes COM object
# one result will be iTunes.Application.1 iTunes Class
Get-CimInstance Win32_COMSetting|Select-Object ProgId, Caption|Where-Object Caption -ILike "*itunes*"
# instanciate the object - the .<number> at the end may reference a version
$itunes = New-Object -ComObject iTunes.Application
# play any file from your hard drive
$itunes.PlayFile "C:\Users\<username>\some_music_file.mp>"
# change the volume by modifying the SoundVolume property of the $iTunes object where 0 is mute and 100 max volume
$itunes.SoundVolume = 50
# get all properties/methods of the iTunes COM object - Parameter types will be displayed and wether it only returns
# a value (get;), sets one (set;) or does both (get;set;)
$iTunes|Get-Member
In fact - these steps work in the same way to for instance run Excel and perform any operations like creating a Macro, showing or hidding the application and so on.
For High Sierra with iTunes 12.7, shuffling can be toggled using this: tell application "iTunes" to set shuffle enabled to True
@genuinefafa
It's possible to partially use iTunes from Windows using Powershell - Here's how:
Config:
- OS: Windows 10 - 64 bits - Fall Creators Update
- iTunes version: 12.7
- Powershell version: 5.1
In Powershell:
# search for iTunes COM object # one result will be iTunes.Application.1 iTunes Class Get-CimInstance Win32_COMSetting|Select-Object ProgId, Caption|Where-Object Caption -ILike "*itunes*" # instanciate the object - the .<number> at the end may reference a version $itunes = New-Object -ComObject iTunes.Application # play any file from your hard drive $itunes.PlayFile "C:\Users\<username>\some_music_file.mp>" # change the volume by modifying the SoundVolume property of the $iTunes object where 0 is mute and 100 max volume $itunes.SoundVolume = 50 # get all properties/methods of the iTunes COM object - Parameter types will be displayed and wether it only returns # a value (get;), sets one (set;) or does both (get;set;) $iTunes|Get-Member
In fact - these steps work in the same way to for instance run Excel and perform any operations like creating a Macro, showing or hidding the application and so on.
Beautiful! This worked!
How do you save albums in playlist for offline usage?
Nice! What about scripting on Windows?