通过TCP/IP连接远程控制三星电视

samsungTVlegac的Python项目详细描述


从Ape/samsungctl github派生,用于传统系列电视。在

在我的例子中是F系列(2013)三星电视。 为time_interval添加了额外的时间,以处理密钥代码字符串

三星电视遗产

samsuntvlegacy是一个用于远程控制三星的库和命令行工具 通过TCP/IP连接的电视。目前支持2016年前的两款电视 大多数现代的Tizen OS电视都有以太网或Wi-Fi连接。在

依赖性

  • Python3
  • websocket-client(可选,适用于2016+电视)
  • curses(可选,用于交互模式)

安装

samsuntvlegacy可以使用pip<;(https://pip.pypa.io/>;)安装:

# pip install samsungTVlegacy

或者,您可以克隆Git存储库并运行:

^{pr2}$

无需安装即可使用命令行工具:

$ python -m samsungTVlegacy

命令行用法

您可以使用samsungTVlegacy命令将密钥发送到电视:

$ samsungTVlegacy --host <host> [options] <key> [key ...]

host是电视的主机名或IP地址。key是一个密钥代码,例如。 KEY_VOLDOWN。见Key codes。在

还有一种交互模式(ncurses)用于发送按键,以检查您的电视有哪些按键代码:

$ samsungTVlegacy --host <host> [options] --interactive

有关命令行的详细信息,请使用samsungTVlegacy --help 参数:

usage: samsungTVlegacy [-h] [--version] [-v] [-q] [-i] [--host HOST] [--port PORT]
                       [--method METHOD] [--name NAME] [--description DESC]
                       [--id ID] [--timeout TIMEOUT]
                       [key [key ...]]

Remote control Samsung televisions via TCP/IP connection

positional arguments:
  key                 keys to be sent (e.g. KEY_VOLDOWN) or set of keys (e.g. KEY_SOURCE KEY_RIGHT KEY_ENTER)

optional arguments:
  -h, --help          show this help message and exit
  --version           show program's version number and exit
  -v, --verbose       increase output verbosity
  -q, --quiet         suppress non-fatal output
  -i, --interactive   interactive control
  --host HOST         TV hostname or IP address
  --port PORT         TV port number (TCP)
  --method METHOD     Connection method (legacy or websocket)
  --name NAME         remote control name
  --description DESC  remote control description
  --id ID             remote control id
  --timeout TIMEOUT   socket timeout in seconds (0 = no timeout)

E.g. samsungTVlegacy --host 192.168.0.10 --name myremote KEY_VOLDOWN

可以从配置文件加载设置。从中搜索文件 $XDG_CONFIG_HOME/samsungctl_legacy.conf~/.config/samsungctl_legacy.conf,和 /etc/samsungctl_legacy.conf,按此顺序排列。一个简单的默认配置是 与源绑定为samsungctl_legacy.conf。在

库使用

samsuntvlegacy可以作为Python 3库导入:

importsamsungTVlegacy

Remote的上下文管理的远程控制器对象可以是 使用with语句构造:

withsamsungTVlegacy.Remote(config)asremote:# Use the remote object

构造函数将配置字典作为参数。全部 必须指定配置项。在

KeyTypeDescription
hoststringHostname or IP address of the TV.
portintTCP port number. (Default: ^{tt13}$)
methodstringConnection method (^{tt14}$ or ^{tt15}$)
namestringName of the remote controller.
descriptionstringRemote controller description.
idstringAdditional remote controller ID.
timeoutintTimeout in seconds. ^{tt16}$ means no timeout.

{tt11}你只需要一个简单的对象$ 方法。唯一的参数是一个字符串来命名要发送的密钥(例如。 KEY_VOLDOWN)。见Key codes。您可以多次调用control 使用相同的Remote对象。连接在以下情况下自动关闭 正在退出with语句。在

出现问题时,您将收到一个异常:

^{tb2}$

示例程序

这个简单的程序打开和关闭菜单几次。在

#!/usr/bin/env python3importsamsungTVlegacyimporttimeconfig={"name":"samsungTVlegacy","description":"PC","id":"","host":"192.168.0.10","port":55000,"method":"legacy","timeout":0,}withsamsungTVlegacy.Remote(config)asremote:foriinrange(10):remote.control("KEY_MENU")time.sleep(0.5)

按键代码

可接受的按键列表可能因电视型号而异,但以下内容 列表中有一些常见的密钥代码及其描述。在

三星F系列电视的按键代码数量有限,如下所示。在

^{3}$

请注意,2016+电视上有些代码是不同的。例如, KEY_POWEROFF在较新的电视上是KEY_POWER。在

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

推荐PyPI第三方库


热门话题
安卓中通过TCP发送时java文件损坏   Java测试预期=异常失败,断言错误   java ssh4 LazyInitializationException   java是否可以在集合中添加重复项?   java是一个免费的开源数据库管理工具   java是否可以在导出的html中嵌入图像   编译器构造解释一些东西,并用Java运行生成的字节码?   java KeyPairGenerator未生成随机密钥   java使用正则表达式生成字符串而不是匹配字符串   java中的多线程线程间通信   具有复合密钥的java Hibernate合并问题   java不能在MainActivity类之外使用SharedReferences变量   正在获取切割/零件异常消息。使用java Spring ControllerAdvice   java tomcat漏洞讨论   javascript在Java中实现“system”命令   java如何在JUnit5*中加载*Spring测试上下文之前获取回调?   java bluej关于缺少返回语句   JavaSpringBoot@ModelAttribute包含使用字符串键的其他模型   从可选中抛出异常。ifPresent()Java 8