Skip to main content

A client library for Apple TV and AirPlay devices

Project description

A client library for Apple TV and AirPlay devices

Tests pyatv Actions codecov Code style: black PyPi Package Gitpod Ready-to-Code Downloads PyPI pyversions License: MIT

This is an asyncio python library for interacting with Apple TV and AirPlay devices. It mainly targets Apple TVs (all generations, including tvOS 15 and later), but also supports audio streaming via AirPlay to receivers like the HomePod, AirPort Express and third-party speakers. It can act as remote control to the Music app/iTunes in macOS.

All the documentation you need is available at pyatv.dev.

What can it do?

Some examples include:

  • Remote control commands
  • Metadata retrieval with push updates
  • Stream files via AirPlay
  • List and launch installed apps
  • List and switch user accounts
  • Add, remove or set audio output devices (e.g. HomePods)
  • Keyboard support
  • Persistent storage of credentials and settings

...and lots more! A complete list is available here.

Great, but how do I use it?

All documentation (especially for developers) are available at pyatv.dev. It is however possible to install with pip and set up a new device atvremote:

$ pip install pyatv
$ atvremote wizard
Looking for devices...
Found the following devices:
    Name                      Model                    Address
--  ------------------------  -----------------------  -----------
 1  Receiver+                 airupnp                  10.0.10.200
 2  Receiver                  RX-V773                  10.0.10.82
 3  Pierre's AirPort Express  AirPort Express (gen 2)  10.0.10.168
 4  FakeATV                   Unknown                  10.0.10.254
 5  Vardagsrum                Apple TV 4K              10.0.10.81
 6  Apple TV                  Apple TV 3               10.0.10.83
Enter index of device to set up (q to quit): 4
Starting to set up FakeATV
Starting to pair Protocol.MRP
Enter PIN on screen: 1111
Successfully paired Protocol.MRP, moving on...
Pairing finished, trying to connect and get some metadata...
Currently playing:
  Media type: Music
Device state: Playing
       Title: Never Gonna Give You Up
      Artist: Rick Astley
    Position: 1/213s (0.0%)
      Repeat: Off
     Shuffle: Off
Device is now set up!

After setting up a new device, other commands can be run directly:

$ atvremote -s 10.0.10.254 playing
  Media type: Music
Device state: Playing
       Title: Never Gonna Give You Up
      Artist: Rick Astley
    Position: 1/213s (0.0%)
      Repeat: Off
     Shuffle: Off
$ atvremote -s 10.0.10.254 pause
$ atvremote -n FakeATV play

You can also run it inside a container (x86_64, aarch64, armv7):

docker run -it --rm --network=host ghcr.io/postlund/pyatv:0.14.0 atvremote scan

The master tag points to latest commit on the master branch and latest points to the latest release.

I need to change something?

Want to help out with pyatv? Press the button below to get a fully prepared development environment and get started right away!

Open in Gitpod

Shortcuts to the good stuff

To save you some time, here are some shortcuts:

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pyatv-0.16.0.tar.gz (1.7 MB view details)

Uploaded Source

Built Distribution

pyatv-0.16.0-py3-none-any.whl (461.4 kB view details)

Uploaded Python 3

File details

Details for the file pyatv-0.16.0.tar.gz.

File metadata

  • Download URL: pyatv-0.16.0.tar.gz
  • Upload date:
  • Size: 1.7 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.7

File hashes

Hashes for pyatv-0.16.0.tar.gz
Algorithm Hash digest
SHA256 84951be13ac1eba0120d44abe30aa4e9e899a2f4e7ca7d4363f70c1a6a917041
MD5 5cfd8d2ae4960d582a1fbf9b2c136225
BLAKE2b-256 e4e2b1e91a1d14f9b5178e20f7072225f21f82c7003f6d4c5cc3073bb4a4d28e

See more details on using hashes here.

File details

Details for the file pyatv-0.16.0-py3-none-any.whl.

File metadata

  • Download URL: pyatv-0.16.0-py3-none-any.whl
  • Upload date:
  • Size: 461.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.7

File hashes

Hashes for pyatv-0.16.0-py3-none-any.whl
Algorithm Hash digest
SHA256 7db95739033a7ce9a69db3ac2af97a58ae1e752359a70f98d487ccaee5cba3ab
MD5 248ee4a463be15e48556613876786c53
BLAKE2b-256 bbf4d0f944fb784c0f6365f63254e328a8b852744b4891bc66f642e451323848

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page