Roku媒体播放器客户端
py-roku的Python项目详细描述
拧遥控器。通过python控制您的Roku。
安装
pip install py-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>]
应用程序具有id、name和version属性。
>>> app = roku.apps[0] >>> print app.id, app.name, app.version 2285 Hulu Plus 2.7.6
您可以通过roku对象的name或id从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)
您可以获取当前正在运行的应用程序。
>>> roku.active_app <Application: [12] Netflix v4.2.75015046>
输入文本
好吧,我已经看过纳什维尔所有可用的剧集,所以我要搜索stargate。打开搜索并等待文本输入:
>>> roku.literal('stargate')
如果我现在想看线人怎么办!?再次打开搜索并等待文本输入:
>>> roku.literal('The Informant!')
这将遍历每个字符,分别发送给roku。
高级材料
发现
可以使用SSDP查找roku设备。roku对象上有一个类方法,该方法将为同一网络上找到的每个设备返回roku对象实例。
>>> Roku.discover() [<Roku: 192.168.10.163:8060>]
可能需要几秒钟才能找到设备。您可以再次调用discover或更改discover方法上的timeout或retries参数。这需要更长的时间,但会找到更多的设备。
>>> 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的x和y坐标。
>>> 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。