A python library to control a Sky Q Box
Project description
A Python library for controlling a SkyQ Box.
Introduction
This library aims to eventually provide API access to the Sky Q Set Top Box. It is only tested on Python 3.7 and uses the newer async support offered by this version of Python.
It uses the excellent trio async library and so knowledge of this is advised.
It is still a work in progress, but what is here, works.
Installing
To install:
pip install pyskyq
Usage
There are currently three main capabilities provided by the library.
Reacting to status changes on the box
Here is how to set up an async context manager that can be used to react to changed events on the box..
from pyskyq import get_status
async def report_box_online():
"""Report whether the SkyQ is online or not."""
# pylint: disable=not-async-context-manager
async with get_status('skyq') as stat:
while True:
if stat.online:
print('The SkyQ Box is Online ')
else:
print('The SkyQ Box is Offline')
await trio.sleep(1)
try:
print("Type Ctrl-C to exit.")
trio.run(report_box_online)
except KeyboardInterrupt:
raise SystemExit(0)
Loading and interrogating channel data
Getting access to channel data requires initialising an EPG object. Once this is done, you need to load the channel data from the box using the EPG.load_skyq_channel_data() method.
To access this data use EPG.get_channel(). See the method’s documentation for the full list of available attributes.
from pyskyq import EPG
async def main():
"""Run main routine, allowing arguments to be passed."""
pargs = parse_args(args)
epg = EPG('skyq') # replace with hostname / IP of your Sky box
await epg.load_skyq_channel_data() # load channel listing from Box.
all_72_hour = XMLTVListing('http://www.xmltv.co.uk/feed/6715')
async with trio.open_nursery() as nursery:
nursery.start_soon(all_72_hour.fetch)
epg.apply_XMLTVListing(all_72_hour)
print('Channel Description from the SkyQ Box:')
print(epg.get_channel_by_sid(2002).desc)
print('Channel XMLTV ID from the XMLTV Feed:')
print(epg.get_channel_by_sid(2002).xmltv_id)
print('Channel Logo URL from the XMLTV Feed:')
print(epg.get_channel_by_sid(2002).xmltv_icon_url)
if __name__ == "__main__":
trio.run(main)
Documentation
Please refer to the documentation at https://bradwood.gitlab.io/pyskyq/
Contributions
Contributions are welcome. Please fork the project on GitLab Not GitHub and raise an issue and merge request there.
Credits
Code and ideas obtained from:
Thank you to those individuals for their contributions.
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
Built Distribution
File details
Details for the file pyskyq-0.6.1.tar.gz
.
File metadata
- Download URL: pyskyq-0.6.1.tar.gz
- Upload date:
- Size: 99.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.20.0 setuptools/40.4.2 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/3.7.1
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | c355485487fd9e323446f443d6d3a8b7aaacf71ad5b7c0630c86a57758e7bc49 |
|
MD5 | 68ed8d99e5d45c42a42f2b70bacb9aac |
|
BLAKE2b-256 | 4622b2f6f2037c8633e33e163974bce696a9ed08ca20dd1164cc23114ffecc9a |
File details
Details for the file pyskyq-0.6.1-py2.py3-none-any.whl
.
File metadata
- Download URL: pyskyq-0.6.1-py2.py3-none-any.whl
- Upload date:
- Size: 25.0 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.20.0 setuptools/40.4.2 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/3.7.1
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 826f18d8e4805b13dc729f37860fa54ccffeec25bdd708421787cd19b76b50dc |
|
MD5 | 84da172dd56a3f6471bc3358aa920ef2 |
|
BLAKE2b-256 | 9fff6673d61de6b740e1880ac2c0e51727bb144f31b086c48bff1e79da9880cc |