分类 Python 下的文章

requests操作cookies

通过requests读取cookies的使用,我们知道在cookies中我们一般只使用name和value,像domain、path等值都是不需要使用的,而且上面传入cookies字典的例子我们知道,只要保存了cookies中的name和value,无论你以什么样的方式保存,文件、或者数据库等,最后读取出来只要生成对应的字典格式就行了。

下面我们看到requests.utils.dict_from_cookiejar方法,这是requests库提供的一个方法,把上面的RequestsCookieJar对象转换为一个字典(字典里只有name和value),这就是我上面说的,requests库只使用name和value值,而我们selenium中保存的cookies中包含domain、path等信息。

另外还有一个方法requests.utils.cookiejar_from_dict(cookie_dict, cookiejar=None, overwrite=True)这个方法,根据字典生成一个RequestsCookieJar对象,为什么需要这样一个方法呢,可能在上面的应用中有些人会有疑问,我们的cookies是通过get/post方法的参数传进去的,那么在访问其他网页的时候都要去传递这样一个参数吗?这样很不方便而且容易遗忘。看上图的s.cookies变量,它是requests.session对象中的变量,而且是一个RequestsCookieJar类型的对象,那么我们就可以使用这个函数把读取的字典信息转换为RequestsCookieJar对象,然后把值直接设置给s.cookies,就像上面代码里的headers一样,这样就方便很多了吧。

这样cookie即可保持一直有效。

阅读全文

Python脚本开机自启动(Linux)

Python脚本开机自动运行;本帖适用于使用systemd的Linux系统,现在流行的Linux发行版都使用systemd。

后台服务程序是随系统自启动的,我们只要把Python脚本配置为服务就行了。需要注意的一点是你Python脚本的启动时机,它依赖不依赖其他服务(网络连接、一些分区的挂载等等)。

一个你要自启动的Python脚本,我使用 /home/snail/autorun.py为例。

写入如下内容:

上面定义了一个叫 Test Service 的服务,它在multi-user环境起来之后运行;ExecStart参数指定我们要运行的程序;idle确保脚本在其他东西加载完成之后运行,它的默认值是simple。

注意使用绝对路径。

为了获得脚本的输出信息,我们可以重定向到文件:

更改配置文件的权限:

阅读全文

Home Assistant Cookbook

这是一个使用家庭助理的不同方式的社区策划名单。大多数例子是使用自动化组件和其他内置自动化相关的组织的组件提供。

可以通过home-assistant.io存储库添加新的配方。

在这个GitHub上搜索热门配置的好地方就是搜索这个home-assistant-config主题的存储库。

这需要一个黑暗天空传感器,条件precip_intensity是告诉它是否下雨。您也可以尝试其他属性,如cloud_cover

开始下雨时,客厅开灯,有人在家,下午还是稍后。

当然,当它停止下雨时,当然要关掉灯,只有在日落之前的一个小时之内。

像电影里的灯光如何变暗?在家里也做!

此示例使用媒体播放器Philips Hue(过渡)和太阳分量。我们将使用动作来检测媒体播放器的状态变化和场景,以控制多个灯光,颜色设置和场景之间的转换。

正常光线的一个场景,一个电影打开的场景。2秒的转换给开关提供了一个很好的“感觉”。

暂停/停止状态使用“from:”播放“最佳匹配。在阳光条件下加入,因为我们只有在黑暗的时候才想要这样。

阅读全文

Home Assistant API

Home Assistant包含一个WebSocket API。该API可用于将信息从Home Assistant实例传输到任何实现WebSocket的客户端。不同语言的实现:

将您的websocket实现连接到ws://localhost:8123/api/websocket

在命令阶段,客户端为每个消息附加唯一的标识符。服务器会将这个标识符添加到每条消息中,以便客户端可以将每个消息链接到它的来源。

每个API消息都是一个包含type密钥的JSON序列化对象。验证阶段之后,消息也必须包含一个id包含交互次数的整数。

验证码示例:

当客户端连接到服务器时,服务器将测试客户端是否被认证。如果没有设置api_password,或者用户满足其他认证标准(可信网络,url / header中的密码),则不需要认证。

如果不需要验证,认证阶段将完成,服务器将发送一条auth_ok消息。

如果需要验证,则服务器发出auth_required

这意味着客户端的下一条消息应该是一个认证消息:

如果客户端提供有效的认证,则认证阶段将由发送auth_ok消息的服务器完成:

如果数据不正确,服务器将回复auth_invalid消息并断开会话。

在此阶段,客户端可以向服务器发出命令。服务器将响应每个命令,并显示一条result消息,指示命令何时完成以及是否成功。

该命令subscribe_events将订阅您的客户端到事件总线。您可以监听所有事件或特定事件类型。如果要监听多个事件类型,则必须发送多个subscribe_events命令。

服务器将使用结果消息进行响应,以指示订阅处于活动状态。

阅读全文

Home Assistant 开发指南

欢迎来到Home Assistant开发文档。这是了解Home Assistant如何工作以及如何扩展它以支持您的设备和服务的地方!

熟悉Home Assistant的最好方法是观看PyCon 2016关于Home Assistant的讨论,并阅读Python API文档

在我们深入了解Home Assistant架构之前,让我们对整体家庭自动化景观进行清晰的概述。这样,我们可以展示Home Assistant的不同部分如何适应图片。

有关本概述中每个部分的更多信息,请查看我们的博客。这是博客的tl;dr版本:

Home Assistant负责核心是Home Control。Home Assistant包含四个部分,使之成为可能:

Home Assistant可以扩展组件。每个组件负责Home Assistant中的特定域。组件可以侦听或触发事件,提供服务和维护状态。组件是用Python编写的,可以做到Python所提供的所有好处。开箱即用,Home Assistant提供了一堆内置组件

Home Assistant中有两种类型的组件:与物联网互动的组件以及响应Home Assistant中发生的事件的组件。阅读了解每种类型!

这些组件跟踪特定域内的设备,并由核心部分和特定于平台的逻辑组成。这些组件通过状态机和事件总线使其信息可用。组件还在服务注册表中注册服务以显示设备的控制。

例如,内置的switch部件是负责与不同类型的开关相互作用。平台为特定种类或品牌的设备提供支持。例如,switch可以使用WeMo或Orvibo平台,light组件可能与Hue或LIFX平台交互。

阅读全文