pyfiretvremote
pyfiretvremote is an asynchronous Python library designed to provide robust control over your Amazon Fire TV devices. It allows you to send remote commands, manage applications, and handle the pairing process programmatically, making it ideal for home automation, custom remote applications, or integration into larger systems.
Features
- Asynchronous Operations: Built with
asyncioandhttpxfor non-blocking network requests. - Remote Control: Send key presses (up, down, select, home, back, volume, etc.) and media commands (play/pause, next/previous, rewind/fast-forward).
- Pairing and Authentication: Programmatically handle the pairing process with your Fire TV.
- Device Information: Retrieve information about connected Fire TV devices and installed applications.
- Context Manager: Use
FireTvRemoteas an asynchronous context manager for reliable connection management.
Installation
# Installing from PyPI
$ pip install pyfiretvremote
Usage
Pairing a New Device
The easiest way to pair a new device is to use the firetv-pair command-line tool. After installing the package, run the following command and follow the prompts:
$ firetv-pair --host YOUR_FIRETV_IP_ADDRESS
The tool will display a PIN on your TV. Enter the PIN in the terminal, and the tool will print a client_token. Save this token for future use.
Basic Control
Here's how to connect to your Fire TV and send a command using the client_token you obtained during pairing:
import asyncio
from pyfiretvremote import FireTvRemote
async def main():
# Replace with your Fire TV's IP address and your saved client token
firetv_host = "YOUR_FIRETV_IP_ADDRESS"
api_key = "YOUR_API_KEY" # Use the API key configured on your Fire TV
saved_client_token = "YOUR_SAVED_CLIENT_TOKEN"
async with FireTvRemote(
host=firetv_host,
api_key=api_key,
client_token=saved_client_token
) as remote:
print(f"Connected to Fire TV at {firetv_host}")
# Example: Send a 'KEY_HOMEPAGE' command
await remote.send_command("KEY_HOMEPAGE")
print("Sent KEY_HOMEPAGE command.")
if __name__ == "__main__":
asyncio.run(main())
Advanced Usage
For more advanced usage examples, including how to bind keyboard keys to remote control actions, please see the demo script in the scripts/ directory of the project repository.
FireTvRemote API Overview
The FireTvRemote class provides the following key asynchronous methods:
async with FireTvRemote(...): Connects to the Fire TV and ensures proper disconnection.send_command(command: str, key_action_type: Optional[str] = None): Sends a key or media command.command: A string representing the key (e.g., "KEY_UP", "KEY_ENTER", "KEY_PLAYPAUSE").key_action_type: Optional, can be "keyDown" or "keyUp" for specific key actions.
show_authentication_challenge(): Initiates the pairing process, displaying a PIN on the Fire TV.verify_pin(pin: str): Verifies the entered PIN and returns aclient_token.get_apps(): Retrieves a list of installed applications.open_app(app_id: str): Opens a specific application by its ID (TODO: Phase 2).get_device_info(): Retrieves information about the Fire TV device.get_keyboard_info(): Retrieves keyboard-related information.open_firetv_settings(): Opens the Fire TV settings (TODO: Phase 2).ring_remotes(): Makes connected remotes ring.voice_command(action: str): Sends a voice command (TODO: Phase 2).send_keyboard_string(keyboard_text_request_body): Sends a string to the Fire TV keyboard (TODO).send_keyboard_text(keyboard_text_request_body): Sends text to the Fire TV keyboard (TODO).
Contributing
Contributions are welcome! Please refer to the DEVELOPMENT.md for setup and contribution guidelines.
Release files for pyfiretvremote 0.6.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| pyfiretvremote-0.6.0.tar.gz | 4.8 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| pyfiretvremote-0.6.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size:11.2 kB
Release files / pyfiretvremote-0.6.0.tar.gz
| Download URL | pyfiretvremote-0.6.0.tar.gz |
|---|---|
| Size | 4.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
cfd69a5cc745a9afc4d76f9b784bb3d304b6dc6d9482c0a41bc5f51da10f4d68
|
|
BLAKE2b-256 checksum How to use checksums |
f8273c03ed7961fbab84fa80ec5bb806bdf24a773be7f180a3ab26c575faee6e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.9.10 {"installer":{"name":"uv","version":"0.9.10"},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / pyfiretvremote-0.6.0-py3-none-any.whl
| Download URL | pyfiretvremote-0.6.0-py3-none-any.whl |
|---|---|
| Size | 6.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
3a17815f0f83019ad13a23904d0566d55b456db9c2576f7e19ff548f6196f042
|
|
BLAKE2b-256 checksum How to use checksums |
b36f56725437698cac636b1a016324b704bc76c81457c092cec65767b3027ce4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.9.10 {"installer":{"name":"uv","version":"0.9.10"},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|