主要是为了配合domoticz系统进行关键词匹配,进而通过domoticz接口控制相关的设备。
代码地址:https://github.com/obaby/Pif3t
虽然domoticz官网提供了一个插件开发教程,但是在实际的开发过程中就会发现有很多内容写的不够详细,无法参考。 官网教程链接: https://en.domoticz.cn/wiki/Developing_a_Python_plugin 国内的中文wiki页面比较陈旧,文档也不是最新的,不建议参考。
其实真个插件主要分为两个部分:
插件模板
插件代码
插件模板主要就是插件的定义,以及相关的参数配置选项,格式为xml:
Baby Weather Plugin
支持从国内的天气服务器获取天气信息
Features
- 支持和风天气
- 支持彩云天气
- 支持今天明天的天气预报信息
Devices
- Temperature - 当前温度
- Feeling Temperature - 当前体感温度
- Humidity - 湿度
- Pressure - 气压
Configuration
API KEY请自行注册相关的开发者账号,然后获取key。
技术支持:http://www.h4ck.org.cn
彩云天气:https://open.caiyunapp.com/
和风天气:https://dev.heweather.com/
支持彩云天气,和风天气,需要注册开发者账号之后添加apikey之后才能使用。
彩云天气:https://open.caiyunapp.com/
和风天气:https://dev.heweather.com/
支持信息:
安装方法:
- 下载zip之后解压缩,放入Domoticz/plugins目录下,重启服务端。去网页端添加硬件即可。
- 切换到插件目录下,git clone https://github.com/obaby/baby_weather_plugin 重启服务端。去网页端添加硬件即可。
ubuntu下执行命令出现如下错误:
ubuntu@ip-172-31-11-253:~/nineuu_spider/Maomi$ python3 maomi.py
Traceback (most recent call last):
File "maomi.py", line 8, in
from cryptography.hazmat.primitives import padding
File "/usr/lib/python3/dist-packages/cryptography/hazmat/primitives/padding.py", line 13, in
from cryptography.hazmat.bindings._padding import lib
ModuleNotFoundError: No module named 'cryptography.hazmat.bindings._padding'
但是实际上cryptography模块已经安装了:
如果要解决这个错误,安装paramiko即可:
pip3 install paramiko
github上关于微信公众号文章的爬虫还是蛮多的,一搜一大把。基于各种技术,这里分享的是之前的做的基于selenium实现的方法。
要爬取的公众号列表修改wx_account.py下的内容
微信公众平台账号登录修改baby_wx_post_spider.py下的如下代码:
username='root@obaby.org.cn'# 账号
password='********'# 密码
如果要存储数据修改如下代码:
# add_wx_post(post_title, post_date, content, html_content, pcs, images_link_text, post_url, "2"
# wx_account, nickname, wx_intro)
print('在此处更新数据库')
登录方式说明:如果不指定账号密码可以直接扫码登录,但是扫码之后需要输入密码,反而更麻烦。
输出日志:
H:\PyCharmProjects\baby_wx_spider\venv\Scripts\python.exe H:/PyCharmProjects/baby_wx_spider/baby_wx_post_spider.py
****************************************************************************************************
Wechat Post Spider System
By:obaby
http://www.h4ck.org.cn
http://www.obaby.org.cn
http://www.findu.co
****************************************************************************************************
[*] System starting ..................
[*] Try to login with username:obaby.lh@163.com Password: ***************
[*] Please scan the qrcode to continue
[*] Scan the QRCode with your cell phone to login!!
[*] Spider starting.....................
[*] Current Wechat account is:
青岛文旅
[*] all passed!
[*] Link:http://mp.weixin.qq.com/s?__biz=MzU0NTc4OTI5MQ==&mid=2247490126&idx=1&sn=29a88b4ceef1cdbd6584702fdd46112a&chksm=fb66de4acc11575c946e802cb475845d7ff540d5a0d6da23834c0c4caa27bd3c3b7c2dd762e6#rd
在此处更新数据库
[*] Link:http://mp.weixin.qq.com/s?__biz=MzU0NTc4OTI5MQ==&mid=2247490126&idx=2&sn=87724f394f1533a23f50e5fddf7c88c1&chksm=fb66de4acc11575cb5c3a610371936a14f2743916b332f0bea3a3edc63dc2648351b386a0b95#rd
在此处更新数据库
[*] Link:http://mp.weixin.qq.com/s?__biz=MzU0NTc4OTI5MQ==&mid=2247490126&idx=3&sn=a9a3992058f069149102ea0fd9dae0b4&chksm=fb66de4acc11575c2c0ef3afe8c5de6c2e8b432c1b3d6c3e8d69f5cb439a85962517b147ee8b#rd
在此处更新数据库
项目地址: https://github.com/obaby/baby_wx_post_spider
PS: 代码如果发现bug,请自行修改!由于微信后台一直变化,所以如果代码不能运行,重新定位相关的元素更新xpath即可
每次异常断电树莓派就挂了,之前以为是读写问题,这次停电前主动关机,然后,tm依然挂了。用fsck修复,无数的错误,修复完没有效果。于是重装,重装之后主要就是重新弄好domoticz的博联插件,于是就折腾了一番,把插件的问题进行了修复。
插件原始的wiki页面http://www.domoticz.com/wiki/plugins/BroadlinkRM2.html,已经无法访问了。 并且网上随便一搜,关于这个插件的文章都是四年以前的。新的内容基本没有,我不是插件的原始作者,只是进行了修改和完善。 感谢原作者开发的插件。 虽然一直在用这个插件,但是这个插件配置起来却一点都不轻松,插件依赖于broadlink库。 而这个库在树莓派上安装的时候,虽然能安装成功。但是安装 成功之后多数时间会找不到这个库,从而导致插件启动失败。
插件项目地址:
https://github.com/mjg59/python-broadlink 看项目简介现在已经支持Broadlink RM2, RM3 and RM4 series controllers 。
其实要解决库找不到的问题也简单,不要用pip之类的安装。直接将python-broadlink的broadlink目录拷贝到BroadlinkRM2目录下就可以解决这个问题。
插件进行库搜索的时候会搜索当前插件目录下的库,所以没有必要安装之后再去进行拷贝。 我这里集成的是旧版本的python-broadlink库,如果需要可以替换为新版的库。新版本我没有测试,如果测试ok可以提交个补丁进行说明。
为了防止页面加载的时候加载所有的Foreignkey到内存,django提供了一个raw_id_fields,该tupple内的数据将只展示id。虽然内存不加载了,但是基本没法看。不知道是个什么东西。
这尼玛tags和Porn model完全看不出是个什么东西。如果要展示相关的名称可以使用django-dynamic-raw-id:
A Django admin raw_id_fields widget replacement that handles display of an object’s string value on change and can be overridden via a template
使用方法: https://pypi.org/project/django-dynamic-raw-id/
具体效果:
嗯,非常直观~ 测试环境:python 3.7.2 + django 3.7.2
搜索功能效果很奇怪,输入的关键词,在重新模板化的时候被截断了。查看源代码可以发现value变成了情趣,内衣没了。所以输入框就剩下了情趣。检查了一下发现模板少了两个引号。
源代码:
{% include "header.html" %}
只需要修改 value=”{{ q|safe }}”即可。