Roku媒体播放器客户端

python-roku的Python项目详细描述


拧遥控器。通过python控制您的Roku

https://travis-ci.org/jcarbaugh/python-roku.svg?branch=master

安装

pip install python-roku

用法

基础知识

首先,导入roku对象并用roku的ip创建它。

>>> from roku import Roku
>>> roku = Roku('192.168.10.163')

roku对象对遥控器上的每个按钮都有一个方法。

>>> roku.home()
>>> roku.right()
>>> roku.select()

要查看可用命令的完整列表,请使用commands属性。

>>> roku.commands
['back', 'backspace', 'down', 'enter', 'forward', 'home', 'info', 'left', 'literal', 'play', 'replay', 'reverse', 'right', 'search', 'select', 'up']

如果你正在你的家庭网络上跟随并且连接到你的roku,你应该看到它在做什么。酷!

应用程序

apps属性将返回设备上的应用程序列表。

>>> roku.apps
[<Application: [2285] Hulu Plus v2.7.6>, <Application: [13] Amazon Instant Video v5.1.3>, <Application: [20445] VEVO v2.0.12092013>]

应用程序具有idnameversion属性。

>>> app = roku.apps[0]
>>> print app.id, app.name, app.version
2285 Hulu Plus 2.7.6

您可以通过roku对象的nameid从roku对象获取单个应用程序。

>>> roku['Hulu Plus']
<Application: [2285] Hulu Plus v2.7.6>
>>> roku[2285]
<Application: [2285] Hulu Plus v2.7.6>

看到这个hulu plus应用程序的引用,我真的很想看Nashville的最新一集。我们开始吧!

>>> hulu = roku['Hulu Plus']
>>> hulu.launch()

同样,如果你在家里继续关注,你应该会看到你的roku已经推出了hulu plus应用。要在频道商店中查看应用程序条目吗?

>>> hulu.store()

你也可以得到应用程序的图标。

>>> with open('hulu.png', 'w') as f:
...     f.write(hulu.icon)

输入文本

好吧,我已经看过纳什维尔所有可用的剧集,所以我要搜索stargate。打开搜索并等待文本输入:

>>> roku.literal('stargate')

这将遍历每个字符,分别发送给roku。

高级材料

发现

可以使用SSDP查找roku设备。roku对象上有一个类方法,该方法将为同一网络上找到的每个设备返回roku对象实例。

>>> Roku.discover()
[<Roku: 192.168.10.163:8060>]

可能需要几秒钟才能找到设备。您可以再次调用discover或更改discover方法上的timeoutretries参数。这需要更长的时间,但会找到更多的设备。

>>> Roku.discover(timeout=10)
[<Roku: 192.168.10.163:8060>, <Roku: 192.168.10.204:8060>]

感谢Dan Krause对他的SSDP code

传感器

较新的Roku遥控器内置了额外的传感器,可以测量加速度、方向等。您可以使用提供的辅助方法模拟这些传感器。

>>> roku.orientation(1, 1, 1)

所有传感器方法的参数都是x、y和z值。可用的方法包括:

  • 加速度-相对于自由落体的每个尺寸,单位为米/秒^2
  • 微特斯拉的磁场强度
  • 方向-从平面/水平和以弧度表示的北方的角位移
  • < Riangs/SEC中使用右手规则旋转轴角旋转速率

触摸

一些roku输入设备支持触摸。touch方法的参数是touch的xy坐标。

>>> roku.touch(10, 40)

可以通过传递可选的op参数来更改触发的事件。

>>> roku.touch(10, 40, op='up')

支持的事件有:

  • 向下
  • 向上
  • 按下(向下和向上)
  • 移动
  • 取消

此包中尚不支持多点触摸。

一般输入

sensor和touch方法都依赖于一般的input方法来向正在运行的应用程序发送数据。如果你拒绝使用covenience方法,因为它们使人懒惰和虚弱,你可以直接调用sensor和touch方法。

>>> params = {'touch.0.x': 10, 'touch.0.y': 20, 'touch.0.op': 'press'}
>>> roku.input(params)

有关输入、触摸和传感器的更多信息,请参见Roku External Control docs

待办事项

  • 当然是测试。
  • 多点触控支持。
  • 一种烧瓶代理服务器,可以监听请求并将其转发到本地网络上的设备。控制多个设备马上,嗯?
  • 一个模仿roku接口的服务器,这样你就可以自己制作类似roku的东西。
  • 一种任务运行程序,它接受一组命令并以适合大多数设备的延迟运行它们。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
如何将java ArrayList对象转换为实际值   web服务如何在JAVA类uisng JAXBElement中解组SOAP UI值   包含无值参数的java HttpClient表单URL   运行简单Camel Restlet演示项目的java问题?   带有自定义图标的java简单SWT警报消息?   java Netbeans 6.8:LibImport可以工作,但编译时“包不存在”   java如何获得绘画完成的通知?   java Hazelcast客户端模式群集故障后如何恢复?   Neo4J中Shapefile的java批插入   为什么ThreadPoolExecutor在Eclipse和从命令行运行Java程序时表现不同?   java在Android中计算两个坐标之间的距离时得到了荒谬的值   java在CardLayout中显示卡本身的下一张卡