A client library for Apple TV and AirPlay devices
=================================================
<img src="https://raw.githubusercontent.com/postlund/pyatv/master/docs/assets/img/logo.svg?raw=true" width="150">
![Tests](https://github.com/postlund/pyatv/workflows/Tests/badge.svg)
![pyatv Actions](https://api.meercode.io/badge/postlund/pyatv?type=ci-success-rate&branch=master&lastDay=30)
[![codecov](https://codecov.io/gh/postlund/pyatv/branch/master/graph/badge.svg)](https://codecov.io/gh/postlund/pyatv)
[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)
[![PyPi Package](https://badge.fury.io/py/pyatv.svg)](https://badge.fury.io/py/pyatv)
[![Gitpod Ready-to-Code](https://img.shields.io/badge/Gitpod-ready--to--code-blue?logo=gitpod)](https://gitpod.io/#https://github.com/postlund/pyatv)
[![Downloads](https://static.pepy.tech/badge/pyatv)](https://pepy.tech/project/pyatv)
[![PyPI pyversions](https://img.shields.io/pypi/pyversions/pyatv.svg)](https://pypi.python.org/pypi/pyatv/)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/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](https://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](https://pyatv.dev/documentation/supported_features/).
# Great, but how do I use it?
All documentation (especially for developers) are available at [pyatv.dev](https://pyatv.dev).
It is however possible to install with `pip` and set up a new device `atvremote`:
```raw
$ 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:
```raw
$ 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):
```raw
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](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/postlund/pyatv)
# Shortcuts to the good stuff
To save you some time, here are some shortcuts:
* [Getting started](https://pyatv.dev/documentation/getting-started/)
* [Documentation](https://pyatv.dev/documentation)
* [Development](https://pyatv.dev/development)
* [API Reference](https://pyatv.dev/api)
* [Support](https://pyatv.dev/support)
Raw data
{
"_id": null,
"home_page": "https://pyatv.dev",
"name": "pyatv",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.9.0",
"maintainer_email": null,
"keywords": "apple, tv, airplay, raop, companion, dmap, dacp",
"author": "Pierre St\u00e5hl",
"author_email": "pierre.staahl@gmail.com",
"download_url": "https://files.pythonhosted.org/packages/e4/e2/b1e91a1d14f9b5178e20f7072225f21f82c7003f6d4c5cc3073bb4a4d28e/pyatv-0.16.0.tar.gz",
"platform": "any",
"description": "A client library for Apple TV and AirPlay devices\n=================================================\n\n<img src=\"https://raw.githubusercontent.com/postlund/pyatv/master/docs/assets/img/logo.svg?raw=true\" width=\"150\">\n\n![Tests](https://github.com/postlund/pyatv/workflows/Tests/badge.svg)\n![pyatv Actions](https://api.meercode.io/badge/postlund/pyatv?type=ci-success-rate&branch=master&lastDay=30)\n[![codecov](https://codecov.io/gh/postlund/pyatv/branch/master/graph/badge.svg)](https://codecov.io/gh/postlund/pyatv)\n[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)\n[![PyPi Package](https://badge.fury.io/py/pyatv.svg)](https://badge.fury.io/py/pyatv)\n[![Gitpod Ready-to-Code](https://img.shields.io/badge/Gitpod-ready--to--code-blue?logo=gitpod)](https://gitpod.io/#https://github.com/postlund/pyatv)\n[![Downloads](https://static.pepy.tech/badge/pyatv)](https://pepy.tech/project/pyatv)\n[![PyPI pyversions](https://img.shields.io/pypi/pyversions/pyatv.svg)](https://pypi.python.org/pypi/pyatv/)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\nThis is an asyncio python library for interacting with Apple TV and AirPlay devices. It mainly\ntargets Apple TVs (all generations, **including tvOS 15 and later**), but also supports audio streaming via AirPlay\nto receivers like the HomePod, AirPort Express and third-party speakers. It can act as remote control to the Music\napp/iTunes in macOS.\n\nAll the documentation you need is available at **[pyatv.dev](https://pyatv.dev)**.\n\n# What can it do?\n\nSome examples include:\n\n* Remote control commands\n* Metadata retrieval with push updates\n* Stream files via AirPlay\n* List and launch installed apps\n* List and switch user accounts\n* Add, remove or set audio output devices (e.g. HomePods)\n* Keyboard support\n* Persistent storage of credentials and settings\n\n...and lots more! A complete list is available [here](https://pyatv.dev/documentation/supported_features/).\n\n# Great, but how do I use it?\n\nAll documentation (especially for developers) are available at [pyatv.dev](https://pyatv.dev).\nIt is however possible to install with `pip` and set up a new device `atvremote`:\n\n```raw\n$ pip install pyatv\n$ atvremote wizard\nLooking for devices...\nFound the following devices:\n Name Model Address\n-- ------------------------ ----------------------- -----------\n 1 Receiver+ airupnp 10.0.10.200\n 2 Receiver RX-V773 10.0.10.82\n 3 Pierre's AirPort Express AirPort Express (gen 2) 10.0.10.168\n 4 FakeATV Unknown 10.0.10.254\n 5 Vardagsrum Apple TV 4K 10.0.10.81\n 6 Apple TV Apple TV 3 10.0.10.83\nEnter index of device to set up (q to quit): 4\nStarting to set up FakeATV\nStarting to pair Protocol.MRP\nEnter PIN on screen: 1111\nSuccessfully paired Protocol.MRP, moving on...\nPairing finished, trying to connect and get some metadata...\nCurrently playing:\n Media type: Music\nDevice state: Playing\n Title: Never Gonna Give You Up\n Artist: Rick Astley\n Position: 1/213s (0.0%)\n Repeat: Off\n Shuffle: Off\nDevice is now set up!\n```\n\nAfter setting up a new device, other commands can be run directly:\n\n```raw\n$ atvremote -s 10.0.10.254 playing\n Media type: Music\nDevice state: Playing\n Title: Never Gonna Give You Up\n Artist: Rick Astley\n Position: 1/213s (0.0%)\n Repeat: Off\n Shuffle: Off\n$ atvremote -s 10.0.10.254 pause\n$ atvremote -n FakeATV play\n```\n\nYou can also run it inside a container (x86_64, aarch64, armv7):\n\n```raw\ndocker run -it --rm --network=host ghcr.io/postlund/pyatv:0.14.0 atvremote scan\n```\n\nThe `master` tag points to latest commit on the `master` branch and `latest`\npoints to the latest release.\n\n# I need to change something?\n\nWant to help out with `pyatv`? Press the button below to get a fully prepared development environment and get started right away!\n\n[![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/postlund/pyatv)\n\n# Shortcuts to the good stuff\n\nTo save you some time, here are some shortcuts:\n\n* [Getting started](https://pyatv.dev/documentation/getting-started/)\n* [Documentation](https://pyatv.dev/documentation)\n* [Development](https://pyatv.dev/development)\n* [API Reference](https://pyatv.dev/api)\n* [Support](https://pyatv.dev/support)\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "A client library for Apple TV and AirPlay devices",
"version": "0.16.0",
"project_urls": {
"Bug Reports": "https://github.com/postlund/pyatv/issues",
"Download": "https://github.com/postlund/pyatv/archive/refs/tags/v0.16.0.zip",
"Homepage": "https://pyatv.dev",
"Repository": "https://github.com/postlund/pyatv"
},
"split_keywords": [
"apple",
" tv",
" airplay",
" raop",
" companion",
" dmap",
" dacp"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "bbf4d0f944fb784c0f6365f63254e328a8b852744b4891bc66f642e451323848",
"md5": "248ee4a463be15e48556613876786c53",
"sha256": "7db95739033a7ce9a69db3ac2af97a58ae1e752359a70f98d487ccaee5cba3ab"
},
"downloads": -1,
"filename": "pyatv-0.16.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "248ee4a463be15e48556613876786c53",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.9.0",
"size": 461419,
"upload_time": "2024-11-04T13:29:18",
"upload_time_iso_8601": "2024-11-04T13:29:18.874107Z",
"url": "https://files.pythonhosted.org/packages/bb/f4/d0f944fb784c0f6365f63254e328a8b852744b4891bc66f642e451323848/pyatv-0.16.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "e4e2b1e91a1d14f9b5178e20f7072225f21f82c7003f6d4c5cc3073bb4a4d28e",
"md5": "5cfd8d2ae4960d582a1fbf9b2c136225",
"sha256": "84951be13ac1eba0120d44abe30aa4e9e899a2f4e7ca7d4363f70c1a6a917041"
},
"downloads": -1,
"filename": "pyatv-0.16.0.tar.gz",
"has_sig": false,
"md5_digest": "5cfd8d2ae4960d582a1fbf9b2c136225",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.9.0",
"size": 1688321,
"upload_time": "2024-11-04T13:29:20",
"upload_time_iso_8601": "2024-11-04T13:29:20.809069Z",
"url": "https://files.pythonhosted.org/packages/e4/e2/b1e91a1d14f9b5178e20f7072225f21f82c7003f6d4c5cc3073bb4a4d28e/pyatv-0.16.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-11-04 13:29:20",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "postlund",
"github_project": "pyatv",
"travis_ci": false,
"coveralls": true,
"github_actions": true,
"lcname": "pyatv"
}