pyatv: Apple TV Remote Control Library

Features

  • Automatic discovery of devices (zeroconf/Bonjour)
  • Most buttons (play, pause, next, previous, select, menu, topmenu)
  • Fetch artwork in PNG format
  • Currently playing (e.g. title, artist, album, total time, etc.)
  • Change media position

Library Installation

Use pip:

$ pip install pyatv

Getting Started

Connecting to the first automatically discovered device:

import asyncio
from pyatv import helpers

@asyncio.coroutine
def print_what_is_playing(atv):
    playing = yield from atv.metadata.playing()
    print('Currently playing:')
    print(playing)

helpers.auto_connect(print_what_is_playing)

Connecting to a specific device:

import pyatv
import asyncio

NAME = 'My Apple TV'
ADDRESS = '10.0.10.22'
HSGID = '00000000-1111-2222-3333-444444444444'
DETAILS = pyatv.AppleTVDevice(NAME, ADDRESS, HSGID)


@asyncio.coroutine
def print_what_is_playing(loop, details):
    print('Connecting to {}'.format(details.address))
    atv = pyatv.connect_to_apple_tv(details, loop)

    try:
        playing = yield from atv.metadata.playing()
        print('Currently playing:')
        print(playing)
    except:
        yield from atv.logout()


loop = asyncio.get_event_loop()
loop.run_until_complete(print_what_is_playing(loop, DETAILS))

TODO: Explain how to get HSGID.

Dependencies

  • Python 3.4.2+
  • zeroconf
  • aiohtto

Contributing

If you want to contribute, see developing for more information.

Authors and License

pyatv is mainly written by Pierre Ståhl and is availble under the MIT license. You may freely modify and redistribute this package under that license.

If you do make changes, feel free to send a pull request on GitHub.

Indices and tables