How can I determine the sound volume from within a python script?
Solution 1:
You have a couple of approaches you can use here.
AppleScript via osascript
CLI
You can use AppleScript directly via the osascript
CLI to get and set the volume like so:
$ osascript -e 'output volume of (get volume settings)'
Set volume - Where 50 is a number from 0 to 100
$ osascript -e 'set volume output volume 50'
Get mute state - Echos a string of 'true' or 'false'
$ osascript -e 'output muted of (get volume settings)'
Set mute state - Where 'true' can be 'true' or 'false'
$ osascript -e 'set volume output muted true'
Using osascript
module in Python
If you have Python3 installed and Xcode you can install the osascript
module like so:
$ xcode-select --install
Install virtualenv
$ pip3 install virtualenv
Create a Virtualenv project, and activate it
$ virtualenv venv
$ . venv/bin/activate
Now within this custom Virtualenv environment, install Python module
$ pip3 install osascript
Collecting osascript
Collecting public (from osascript)
Collecting runcmd (from osascript)
Requirement already satisfied: setuptools in ./venv/lib/python3.7/site-packages (from osascript) (41.0.1)
Collecting temp (from osascript)
Collecting psutil (from runcmd->osascript)
Installing collected packages: public, psutil, runcmd, temp, osascript
Successfully installed osascript-2019.4.13 psutil-5.6.1 public-2019.4.13 runcmd-2019.4.13 temp-2019.4.13
Here's an example Python program that will set the volume to 100
$ cat vol.py
#!/usr/bin/env python3
import osascript
osascript.run("set volume output volume 100")
code, out, err = osascript.run("output volume of (get volume settings)")
print(out)
Running this will set to 100 and then display the volume's level
$ ./vol.py
100
References
- How to change volume with Python?
- Pipenv & Virtual Environments
- Why am I getting an “invalid active developer path” when attempting to use Git after upgrading to macOS Catalina?
- Set/get OSX volume/mute from the command line
- PyPi - osascript