huginn–huginn,抓取网页全文,抓取微信公众号,自动触发任务,定时监控网页变化,价格变化提醒,比IFTTT更强大的互联网自动化任务平台!

致力于整合联动各种互联网计算机系统和服务

根据Scenarios的设置智能化地触发执行各种任务和命令

打造出你的人工智能系统,替代优化操作流程,让人们可以从繁琐折腾中解放出来。

打造你的人工智能系统

强大的可定制的互联网任务系统

可以把各种app,软件,网络服务,智能家居设备等链接在一起做任务触发以实现各种你想得到的

当…然后…如果…就…

if…then…

你可以创造性地组合出自己强大的人工智能系统!

代码开源安全开源全球开发者和用户持续的反馈改进

任务采集触发平台

比IFTTT更加强大的自动化平台

在北欧神话中,人们还相信万神殿的主神奥丁有两只黑鸦,一只叫Huginn,另一只叫Muninn,它们替奥丁观察并且聆听世界。

乌鸦(crow)世界上最聪明的鸟类之一,遍布世界。在中国大部分地区文化中,人们将乌鸦视为不详的鸟,但是在世界很多地方却恰恰相反,让我们来了解一下世界各地乌鸦的传说吧……

中国民间传说中,乌鸦反哺的故事是最让人感动的一个故事,乌鸦是一种通体漆黑、面貌丑陋的鸟因此人们觉得它不吉利而遭到人们普遍厌恶,但他们却拥有一种真正值得我们人类普遍称道的美德:养老、爱老,在养老、敬老方面堪称动物中的楷模。据说这种鸟在母亲的哺育下长大后,当母亲年老体衰,不能觅食或者双目失明飞不动的时候,它的子女就四处去寻找可口的食物,衔回来嘴对嘴地喂到母亲的口中,回报母亲的养育之恩,并且从不感到厌烦,直到老乌鸦临终,再也吃不下东西为止。这就是人们常说的“乌鸦反哺”

另外无论是非洲还是美洲乌鸦都代表着智慧,有着美丽的黑色羽毛,而且据说这些羽毛曾经是白色的……在凯尔特神话中,乌鸦是非常有灵性的鸟类。据说,众神之父奥丁有两只白色乌鸦(名叫Huginn和Muninn),每天都可以在世界各地飞来飞去,只是为了告诉他所看到和听到的一切,所以奥丁也被称为“乌鸦神”。

在美洲原住民的传统中乌鸦有着神圣的地位,乌鸦是“灵魂的渡船”,他将灵魂从这个世界护送到来世。

所以乌鸦寓意着智慧,孝心,成长以及无所不知,无所不及。

北欧神话中的众神之王奥丁(Odin)拥有两只渡鸦,帮助他在人类居住的尘世“米德加德”收集信息。它们的名字分别叫胡金(Huginn)和穆宁(Muninn),在古斯堪的纳维亚语中是“思想”和“记忆”的意思。古代人显然很早就对鸟类的智慧有所体悟。权力的游戏中那种三眼渡鸦大家应该有印象吧。一位新的研究发现,渡鸦能够灵活地为在感官意识之外的事件作出预判和计划,这种认知技能之前一直被认为是灵长类动物独有的。心理学领域有个关于控制力的经典试验,即考验孩子会选择现在吃一颗棉花糖,还是15分钟后吃两颗棉花糖。渡鸦在一个类似的试验中表现上了极强的控制力和预见力,在美味的食物和可以帮助它们在未来觅到更多食物的工具之间,大部分渡鸦都选择了工具。而没有选择工具的那只雌性渡鸦更是令人吃惊,她发现了试验的漏洞,直接偷袭了屋里装食物的容器。

Inatwistonthefamouspsychologicalexperiment,scientistshavefoundthatravensaremorethanamatchforchimpanzeesandevenfour-year-oldchildrenwhentheyarechallengedtoputoffgratificationandplanahead.

译文:科学家在这个著名心理学实验的一次改版中发现,渡鸦在面对需要延迟满足感和事先计划的挑战时,表现超过了黑猩猩,甚至比四岁的孩子更强。

Aseriesofexperimentswithravensfindsthatthebirdsdisplaytheabilitytothinkaheadanddeliberatelyprepareforfutureevents,addingtothegrowingbodyofevidencethatintelligencehasevolvedmorethanonce.

译文:针对渡鸦的一系列试验发现,鸟类有意识地为未来事件做准备,展示了预先思考的能力。这也和越来越多的证据一起,证实了智力进化不是一蹴而就的。

昨天发了一篇

好多人都领到了一个月的轻量应用服务器

正好用来测试搭建各种应用

比如:nextcloud,owncloud,seafile等个人网盘

也可以搭建类似lastpass1password的个人密码管理服务器

1password价格比较贵

lastpass这种密码放在别人的服务器上也不太放心

所以在月付24的轻量云服务器上搭建Bitwarden还是非常合适的

那就开始吧:

在活动页面领取之后

打开控制台页面

会看到下图

点击进入管理面板

第一次安装后需要重设一下密码

点重置密码即可设置新的密码

这里注意一下

如果你安装的是ubuntu

默认的用户名是ubuntu不是root

sudopasswdroot

输入新的root用户密码后

然后输入suroot命令切换到root用户

然后修改SSH配置文件

nano/etc/ssh/sshd_config

在此文件最后加上一条

PermitRootLoginyes

然后保存退出

依次输入以下命令升级一下系统

aptupdate

aptupgrade

先安装Docker

执行官方的安装脚本

输入命令后发现太慢了

卡在那里差不多十分钟了

看来是国外软件源速度太慢的原因

更换软件源为国内的

再次输入

执行

修改之后一分钟就安装完了。。。

检查安装结果

dockerversion

返回正常

启动Docker

systemctlstartdocker

查看Docker启动状态(绿色active)

systemctlstatusdocker

如下提示说明正常

输入以下命令让Docker开机自启动

systemctlenabledocker

最后运行hello-world验证docker是否安装成功

OK开始下一步

安装好Docker后就可以开始安装bitwarden了

先创建文件夹

mkdir-p/home/wwwroot/bitwarden

切换到这个目录下

cd/home/wwwroot/bitwarden/

为了方便

可以先准备好以下两个配置文件

输入

nanoconfig.env

粘贴以下内容:

nanodocker-compose.yml

version:‘3’

services:bitwarden:image:bitwardenrs/server:latestcontainer_name:bitwardenrestart:alwaysvolumes:–./data:/dataenv_file:–config.envports:–“47878:80″

配置文件设置好了后就可以开始拉取镜像了

在此之前先安装一下docker-compose

aptinstalldocker-compose

再输入

docker-composeup-d

就可以看到下图

可以看到安装进度

很快就完了

最后重启下你的docker就生效了

docker-composedown&&docker-composeup-d

地址栏输入:

红字替换为你的IP就可以了

不行的话

你得先在服务器的管理面板里面

在防火墙里面把刚才自定义的那个端口加进去就行了

最后再次访问

就可以看到下图了

搞定!

具体的参数可以自己修改

SIGNUPS_ALLOWED=是否开放用户注册DOMAIN=服务使用的域名WEB_VAULT_ENABLED=是否开启Web客户端

文中的参数可以自定义的我都标红了

大家配置的时候可以注意一下

bitwarden支持web端ios端andriod端

很多人反映非常好用

bitwarden具体教程很多

大家可以搜索一下

为了更方便使用

大家也可以设置成自己的域名

这样又方便又好记

原文出自:主机测评官网

由于bitwarden非常安全

服务器上的密码也是加密的

服务器只起到一个同步加密后的数据的功能

所以可以直接用别人搭建出来的

省去了服务器和维护的麻烦了

“基于Ruby的任务自动处理工具。你可以监控事物,然后按照书面逻辑(ifttt)进行处理,例如:监控天气、天气提醒、小说或动漫追更、信息汇总发送等,它有一个稳定的框架和活跃的生态。有了它,你可以让你的生活更有效率。可以试试看。

搭建出来的效果如下:

很多人对于把密码放在网上,比如lastpass虽然官方说是提供加密了,服务器上看不到用户密码,但是还是不太放心,那么就可以搭建开源的Bitwarden搭建一个自己的密码管理服务器。

准备:一个vps服务器和一个域名且解析IP地址到服务器

#2.检查安装结果dockerversion

#3.启动Dockersystemctlstartdocker

#4.查看Docker启动状态(绿色active)systemctlstatusdocker

#5.允许Docker自启动systemctlenabledocker

快速开始不进行自定义,不需要域名,快速搭建一个Bitwarden后端

#1.拉取bitwarden_rs镜像dockerpullbitwardenrs/server:latest

#2.生成一个admin用户管理页面的tokenopensslrand-base6448

#>3.3将生成的证书拷贝安装到指定文件夹

#4.运行bitwarden_rs

参数解释:

SIGNUP_ALLOWED:是否允许注册

INVITATIONS_ALLOWED:是否允许组织邀请注册

ADMIN_TOKEN:用户管理界面(/admin),可用于删除用户及邀请用户注册

ROCKET_TLS:ssl证书信息,同时需要配置-v

/path/to/host/ssl/:/path/to/docker/ssl/卷,前者为宿主机ssl证书的位置,后者为容器证书位置

DOMAIN:域名LOG_FILE、LOG_LEVEL、EXTENDED_LOGGING:日志保存文件路径以及日志等级定义

DATA_FOLDER:docker容器数据保存文件夹(默认为/data),除了定义这个文件夹之外,

还可以定义附件、图标缓存、数据库等参数

DATABASE_URL:数据库路径ATTACHMENT_FOLDER:附件路径ICON_CACHE_FOLDER:图标缓存路径

以上是我自己觉得需要的一些配置,更多参数可参考官方Wiki。

示例:

(仅用于展示,可注册体验,随时可能删除)服务器已出

容器操作命令

#$name为dockerrun中定义的name

#启动容器dockerstart$name

#停止容器dockerstop$name

#删除容器dockerrm$name

#查看运行容器dockerps-as

升级Bitwarden镜像

#1.重新拉取镜像dockerpullbitwardenrs/server:latest

#2.停止、删除原容器dockerstopbitwardendockerrmbitwarden

#3.重新运行dockerrun命令

#4.查看镜像文件dockerimagels

#5.删除原镜像文件,$ID在step4中可以看到

dockerimagerm$ID客户端使用方法使用方法就讲下Chrome插件的吧,其他的用法都是类似的。

打开插件,点击右上角设置按钮

bitwarden-chrome-extensionbitwarden-chrome-extension

填入bitwarden的域名

server-urlserver-url

可以直接从Bitwarden官方导出然后导入到自己服务端

这个docker镜像对于服务器的配置要求不高,内存在512就可以了

能用到的功能都有,包括最基本的密码保存、上传附件等,

官方需要付费的TOTP、密码检测功能也都能直接使用的

密码放在别人服务器上不放心的

可以自己搭建一个,或者搭建在自家的nas上也可以

让RSS更好用,轻松订阅你喜欢的博客和资讯

蚁阅基于Docker部署,服务器环境要求:

配置文件保存为~/rssant/rssant.env。

#!/bin/bashdockervolumecreaterssant-datadockervolumecreaterssant-postgres-datadockervolumecreaterssant-postgres-logsdockerrm-frssantdockerrun-ti--namerssant-d-p6789:80--env-file~/rssant/rssant.env-vrssant-data:/app/data-vrssant-postgres-data:/var/lib/postgresql/11/main-vrssant-postgres-logs:/var/log/postgresql--log-driverjson-file--log-optmax-size=50m--log-optmax-file=10--restartunless-stoppedguyskk/rssant:latestdockerlogs--tail1000-frssant启动服务bash~/rssant/start.sh,当看到下面的日志时,服务就启动好了。

#初始化数据库的日志I2019-12-2211:01:36scripts.django_db_init:26extensionhstorecreatedI2019-12-2211:01:36scripts.django_db_init:33createadminuserI2019-12-2211:01:36scripts.django_db_init:41updatesiteinfoI2019-12-2211:01:36scripts.django_db_init:53creategithubsocialapp#程序正常运行中的日志I2019-12-2213:16:08rssant_harbor.actors.rss:418delete0oldfeedcreationsI2019-12-2213:16:08rssant_harbor.actors.rss:423retry0status=UPDATINGfeedcreationsI2019-12-2213:16:08rssant_harbor.actors.rss:429retry0status=PENDINGfeedcreations执行dockerexec-tirssantsupervisorctlstatus,以下进程状态说明一切正常:

大功告成,返回首页即可开始使用了!

如需停止服务,执行:dockerrm-frssant如需备份数据,备份rssant-postgres-data这个卷即可,其他卷可忽略。

码云和GitHub均可提交Issue:

码云和GitHub也均可提交PullRequest:

如果你有码云账号,建议到码云提交PullRequest。非常感谢你的支持!

安装依赖

gitclonegit@gitee.com:anyant/rssant.gitcdrssantpyenvvirtualenv-ppython3.73.7.4rssantpyenvlocalrssantpipinstall-rrequirements.txt启动数据库

./scripts/postgres_start.sh初始化数据库

pythonmanage.pymigratepythonmanage.pyrunscriptdjango_db_init开多个终端,分别启动以下服务

请求应当正常返回,后台任务控制台会输出查找订阅的日志信息。

测试

pytest打包

打包

cdrssantgitclonegit@gitee.com:anyant/rssant-web.gitbox/web打包

./box/build.sh运行

如今这个信息过载的时代,如何用最低的成本,获取对自己而言最有价值的信息,是一件非常重要的事情。

huginn就是实现这一目标的一个重要的自动化工具。利用huginn,你可以抓取网络上任意对自己重要的内容,将它加工,最终通过rss源、邮件、通知等形式灵活输出。

然而,huginn国内的教程却比较匮乏,软件本身也并不容易上手,今天我们就用一个最简单的例子——定时抓取黄金价格,来了解下huginn的基础用法。

huginn的安装

制作订阅源

一个完整的爬取流程包括以下三个步骤:

在开始之前,我们需要了解Huginn中的三个基本概念,agent、scenario和event。

Agent:

Agent就是一个步骤的代理,在我们的例子中,我们一共有抓取数据源、处理数据、输出为RSS三个步骤,所以我们需要3个Agent。

Scenario:

Scenario就是一系列Agent的集合,在我们的例子中,我们的Scenario就是“黄金价格播报”,其中包含三个Agent:

Event:

每一个Agent执行一次,输出就是Event,某个Agent输出的Event可以给其它Agent使用,在我们的例子中,就是“抓取数据源”Agent抓取了网站的原始数据,并输出为Event,“处理数据”Agent对这个Event进行了处理,然后生成一个新的Event给“输出为RSS”这个Agent。

下面我们会详细介绍每一个Agent的配置过程:

抓取数据源

首先是抓取数据源,这里,我们找到一个简单的数据源——黄金钱包首页的黄金实时价格:

huginn中对于post接口的抓取,我们可以直接使用PostAgent,进行如下配置:

其中content_type选择json,然后把post_url和palyload填进去,抓取数据源就配置完成了。

点击dryrun,可以看到agent执行的Event结果:

可以看到,实时黄金价格已经在返回结果的data中了,我们接下来就要对返回结果进行处理,将数据转换成易于阅读的格式。

处理数据

在上一步的抓取中,返回的Event结果本身是一个json格式,其中的body字段又是一个json格式的字符串,接下来我们就需要对返回结果进行处理。

处理返回结果有很多方法,但最简单的还是JavaScriptAgent,因为它最灵活,我们可以写几行js代码,就把上个event中的黄金价格解析出来进行处理:

其中的js代码只有几行,主要是把上一次的event中,解析出data下的realtime_price数据(以分为单位),并将其转化为以元为单位:

Agent.receive=function(){varevents=this.incomingEvents();for(vari=0;i

输出为RSS:

最后,我们再创建一个DataOutputAgent,展示上一步Event的数据,就可以输出当前黄金的价格了:

然后,再将成的地址填写到rss阅读器(如inoreader)中,就可以查看内容了:

因为黄金的价格波动不高,我将更新频率设置为5h一次,自己搭建的话,可以再按需进行调整。

总结:

程序员最讨厌的事情之一可能就是装电脑了。因为程序员的电脑环境配置和正常人的很不一样。通常,人工安装一台新开发机得花上几个小时。得让这个过程自动化,毕竟编程的精髓就在于让复杂事情简单化,想办法偷懒!

其实自动安装和配置Windows并不是什么新鲜事,早在十几年前那个组装机盛行的年代,电脑城里的“高手”就在用各种民间封装的镜像实现一键安装系统和软件了。方法有很多,比如通过微软或三方工具编辑Windows安装镜像,加入自动应答文件,最后用静默参数安装常用软件,以及更偷懒的Ghost封装等等。十几年前的我,也曾热衷过自己封装Windows,写脚本安装软件,然后修完妹子的电脑还要帮妹子的男朋友们修……

今天我介绍的方法与十几年前的有所不同,与十几年前比,现在我们要面对一些新的问题:

01

软件更新越来越频繁,每次装电脑希望用最新的,传统方式封装软件没几天就会过时。

02

软件不想和操作系统镜像一起分发,Windows10半年更新一次,维护传统方式封装的镜像十分费力。

03

正常人的电脑很容易安装,无需专门设计自动装机工具。但是程序员的环境越来越复杂,工具越来越多。

针对这些现状,我选择使用Powershell及Choco来设计新的自动装机脚本。Powershell负责配置Windows,Choco则可以自动从网上下载最新的软件安装包并静默安装。这样就不用将软件安装包整合到Windows镜像里去,以免没几个月就全部过时导致你辛辛苦苦制作的好人装机盘又得更新。

目标

以我自己为例,我是一名ASP.NET程序员,同时也做一些UWP应用开发。所以对我来说,环境要求是:

下面的这个视频是最终效果

重命名计算机

装机第一步我喜欢重命名计算机,以便管理。在Powershell中,可以使用Rename-Computer命令完成。

要求用户输入计算机名,并重命名的Powershell代码如下:

Rename-Computer-NewName$computerName

当然,这一部是要求重启计算机生效的,我们会放稍后执行。

禁用自动待机

我们不希望跑自动化脚本装逼的时候,电脑超时待机就尴尬了。所以在漫长的自动化装机开始的时候,要禁用接通电源(AC)时候的自动待机。

使用Powercfg命令,设置接通电源的情况下,闲时20分钟关闭屏幕,但永不待机。

Powercfg/Changemonitor-timeout-ac20

Powercfg/Changestandby-timeout-ac0

桌面图标处理

全新的Windows10安装完成,桌面默认是没有“此电脑”图标的,并且故意留了个Edge浏览器的快捷方式,大家也知道它的唯一作用是下载Chrome,并且以后也会变成Chromium核心,活得还没WP长,IE都笑了……(不好意思扯远了)因此我希望能自动添加“此电脑”图标并去掉没用的Edge。

添加“此电脑”图标的操作是通过修改注册表实现的

$item=Get-ItemProperty-Path$thisPCIconRegPath-Name$thisPCRegValname-ErrorActionSilentlyContinue

if($item){

Set-ItemProperty-Path$thisPCIconRegPath-name$thisPCRegValname-Value0

}

else{

New-ItemProperty-Path$thisPCIconRegPath-Name$thisPCRegValname-Value0-PropertyTypeDWORD|Out-Null

去除Edge的快捷方式非常简单,直接删除文件就行。在Powershell里要用环境变量的方法是使用$env关键词。当前用户的环境变量是USERPROFILE,Edge在桌面上,所以拼接路径是Desktop目录。

Remove-Item$edgeLink

自动安装IIS

在这个Windows服务器非政治正确的时代,IIS依然有一席之地,维护老的ASP.NET项目还是得用,并且ASP.NETCore2.2上有明显的性能优势,谁喊的Linux我保证不派软狗去暗杀……所以又扯远了,Powershell启用Windows组件的命令是Enable-WindowsOptionalFeature,带上-All参数的话可以自动安装依赖项。所以脚本如下:

Enable-WindowsOptionalFeature-Online-FeatureNameIIS-DefaultDocument-All

Enable-WindowsOptionalFeature-Online-FeatureNameIIS-HttpCompressionDynamic-All

Enable-WindowsOptionalFeature-Online-FeatureNameIIS-HttpCompressionStatic-All

Enable-WindowsOptionalFeature-Online-FeatureNameIIS-WebSockets-All

Enable-WindowsOptionalFeature-Online-FeatureNameIIS-ApplicationInit-All

Enable-WindowsOptionalFeature-Online-FeatureNameIIS-ASPNET45-All

Enable-WindowsOptionalFeature-Online-FeatureNameIIS-ServerSideIncludes

Enable-WindowsOptionalFeature-Online-FeatureNameIIS-BasicAuthentication

Enable-WindowsOptionalFeature-Online-FeatureNameIIS-WindowsAuthentication

其实用DISM命令也可以实现这些功能的,有兴趣的可以自己研究。DISM还能自定义Windows镜像……

启用Windows10开发者模式

启用开发者模式的唯一作用就是维护那些年少不懂事时候开发的UWP应用。同样,只要修改注册表就可以了:

//可能不久得将来,等UWP凉凉了,这一步也就不需要了……

启用远程桌面

一个敬业的程序员,就应该连上厕所时候也掏出手机远程回去写代码。方法还是修改注册表,并开启对应的防火墙规则。

安装ChocoforWindows

Chocolatey是我们接下来要用的自动安装软件的工具,即choco命令,和Linux上的apt/yum很像。它是用Powershell+NuGet实现的,有兴趣可以去官网了解一下:

我们用官方提供的Powershell命令安装Chocolate:

重启Windows

还记得第一步改了计算机名吗,最后我们需要重启电脑,让配置生效,然后再装软件,以避免有的软件把机器名设死在配置里然后爆。

为了假装用户友好,我们可以给用户一个确认,让人工来触发重启操作,只要用Read-Host就行。Powershell重启机器的命令是Restart-Computer,当然你用shutdown-r-t0也可以。

Restart-Computer

自我提权

各位可能已经发现了,上面的步骤几乎都是要求管理员权限才能执行的。我们装机时候可以手工用管理员权限跑Powershell,但是更方便的是在普通权限下运行,并让它自己提升为管理员权限。在文件头部加入:

这样,脚本会检测当前自己是否有管理要权限,如果没有,会弹出UAC申请一个管理员权限的Powershell并继续运行当前脚本。

以上所有步骤的最终Powershell脚本在我的GitHub上:

使用Choco自动安装软件

重启完电脑以后,我们可以在管理员权限的CMD或者Powershell下,用choco命令自动安装软件。我选择的是cmd,因为它是个有情怀的exe。

chocolatey的库中有大量常用软件,并且很多都是面向程序员的。需要的可以去官方库里看看:

安装命令是chocoinstall包名-y,其中-y参数表示自动应答Yes,以便在无人值守时候静默安装,无需用户确认。

安装常用软件的批处理就可以这样写:

chocoinstall7zip.install-y

@echo.

chocoinstallgooglechrome-y

截止发稿,我已经加入了下列软件的自动安装脚本,其中VSCode的插件也是有包的,可以自动安装:

删除不需要的预装UWP应用

全新安装的Windows10会自带一些微软自家以及合作伙伴的UWP应用,有些我用不上。这些应用也可以用自动化的方式删除。

首先要获取UWP应用的包名,可以用Get-AppxPackage命令。它会返回一串这样的东西:

要删除UWP应用,微软官网的命令是删它的PackageFullName,比如必应新闻的:

Remove-AppxPackage-PackageMicrosoft.BingNews_4.28.3242.0_x64__8wekyb3d8bbwe

但是这样是会爆的,一旦Windows在后台偷偷更新了这些应用,版本号变了,你的脚本就失效。所以我们要用另一种方法,不匹配具体版本,只匹配名称去删除UWP应用。技巧如下:

Get-AppxPackage-NameMicrosoft.BingNews|Remove-AppxPackage

我们有很多UWP要删,程序员思维当然是写一个循环,而不是一条条复制命令。Powershell里做循环的方式和C#非常类似,用foreach语法。在这个例子里,我把要删除的UWP名称放在了一个字符串数组中,然后用循环去删除他们。

$uwpRubbishApps=@(

foreach($uwpin$uwpRubbishApps){

Get-AppxPackage-Name$uwp|Remove-AppxPackage

至此,就大功告成了!感谢看到这里的各位~

这些脚本的GitHub工程:

原文链接:

日常生活中大家都离不开电脑

所以如何自动定时开关电脑大家一定用得上

自动开机需要在BIOS里面设置

开机的时候按住F2或者DEL进入主板设置

然后选择电源选项

假如需要每天都定时开机,就选择EveryDay,

如果想要在每天6:45开机,

就通过数字键输入06:15:00,

最后,一般按F10进行保存,重启电脑后生效。

一般的老旧主板就是这种样子的

比较新的笔记本或者电脑主板就会有这样的图形化中文界面

自动开机已经设置好了

那么下面我们通过软件设置自动定时开机

这个可以提供计划任务来实现

控制面板上面搜索计划任务就可以看到

创建新的触发器

如下图

再把启动程序选择自动执行的带参数的关机命令

这样就实现了windows定时自动开机关机功能

至于远程开机还有网络唤醒和通过硬件比如开机棒来实现的

相对来说还是文字介绍的方法比较简单实用

更多自动化运行智能网络系统知识

我推荐Reeder3,因其功能足且美观,还支持iOS平台,付费。

另外Leaf也不错。

Ioreader推荐的第三方RSS阅读器。

RSS阅读器只是显示RSS内容的一个平台,因此选自己喜欢的就好,我们的重点是如何获取适合自己的RSS源。

再例如在一些博客中,WIFI一样的图标就是RSS订阅地址,不认识的话现在就记下来吧~

我们可以直接复制链接地址到阅读器中,这样就能简单的订阅RSS了。

Medium是国外版的「简书」,里面有很多独特而优质的内容和天才般的作家,单独拿出来讲是因为我实在是太喜欢Medium了!

如果不依赖平台自带的RSS源搜索功能,我们也有其他选择。

例如:

不再阐述太多,适合自己的才是最好的。

我们可以看到页面的源码,看到这不要慌,这些都有套路。

在feed43中,我们会用到两种代码块:{%}和{*},其中{%}替换你想获取的内容,{*}用来省略无关代码。

替换之后得到:

点击Preview来到Step4收获成果。

把地址添加到RSS阅读器上

我们可以直接点击标题跳转到网页(其他阅读器可能不一样),现在说说feed43的注意事项。

免费的计划是六小时刷新一次RSS地址,也就是六小时才更新一次内容,有需要的可以购买计划,不过一般够用了。

效果:

学会了制作RSS源,那么我们能做什么有趣的事情呢?!

2013年GoogleReader关闭,谷歌给的原因是用户流失,这最主流的RSS阅读器的退出似乎说明了RSS已经快要成为一个过时的阅读方式。这种阅读方式减少了网站和用户之间的交流,也不太适应短信息的节奏(想想你会用RSS刷微博吗?)。往大了看这是当今社会的节奏,人们更喜欢刷微博、刷朋友圈。海量的碎片信息会导致人们喜欢浅浅尝一口,而缺少深度的思考,逐渐迷失在海量的信息流中。生活离不开阅读,我们可能不能变成万事通,但我们可以更有效率地去获取自己想要的信息。

如果你看到这,或许可以考虑尝试下这种阅读方式?RSS源贵精不贵多,先养成习惯,并判断这些信息对于自己的价值。

RSS是一种描述和同步网站内容的格式,是使用最广泛的XML应用。RSS搭建了信息迅速传播的一个技术平台,使得每个人都成为潜在的信息提供者。发布一个RSS文件后,这个RSSFeed中包含的信息就能直接被其他站点调用,而且由于这些数据都是标准的XML格式,所以也能在其他的终端和服务中使用,是一种描述和同步网站内容的格式。

RSS目前广泛用于网上新闻频道,blog,wiki和公众号,使用RSS订阅能更快地获取信息,网站提供RSS输出,有利于让用户获取网站内容的最新更新。网络用户可以在客户端借助于支持RSS的聚合工具软件,在不打开网站内容页面的情况下阅读支持RSS输出的网站内容。

要订阅RSS,首先需要一个RSS阅读器。目前RSS阅读器基本可以分为三类。

第一类阅读器是PC端,通过所订阅网站的新闻供应,可自动、定时地更新新闻标题。在该类阅读器中有Awasu,FeedDemon和RSSReader这三款流行的阅读器,都提供免费试用版和付费高级版。

第三类阅读器是移动端,有无觅客户端、ZAKER客户端、Feedly客户端、Digg客户端等等,移动端相较于PC端和浏览器端,胜在比较方便,可以随时随地去浏览。

Feed43

所以,利用Feed43不仅可以制作任意网站的RSS源,也可以实现公众号RSS源的制作。但是使用Feed43可能需要你对网页使用的HTML语言有一些基本的了解。如果你不是很了解的话,不用担心,网上有很多简单的教程来指导你一步步的完成。

你可以免费使用Feed43做RSS源,但免费版中包含的每条内容都会包含Feed43推广链接,而抓取频率也受到了严格的限制。当然,你也可以在官网上通过Paypal购买付费版,体验会好许多。

Huginn

部署Huginn可以选择源码安装

也可以选择docker安装

付费获取公众号RSS

自己制作RSS源,无论哪种方式,都需要你动手去做。而Huginn需要一台VPS部署Huginn。如果这些你懒得做,还可以选择付费去获取现成的公众号RSS

这里只列出了两个,还有其他的大家可以自行去搜索。

原文转载自

每五分钟执行*/5****

每小时执行0****

每天执行00***

每周执行00**0

每月执行001**

每年执行0011*

每隔5分钟执行某个任务

1、第一种*/,有的系统不太兼容

*/5****/usr/bin/test.sh

2、第二种,繁琐,所有系统支持

0,5,10,15,20****/usr/bin/test.sh

每一列的内容分别是:

在以上各个字段中,还可以使用以下特殊字符:

同时正斜线可以和星号一起使用,例如*/10,如果用在minute字段,表示每十分钟执行一次。又如,每分钟可以用*或者*/1表示。

每次登陆服务器都要手动输入命令更新一下系统

重复性劳动也麻烦,那么有什么办法可以实现每天自动执行呢

以下在Ubuntu上面测试成功

sudonano/etc/cron.daily/upgrade

内容如下:

群晖的Docker是DockerGUI中对一般用户体验最好的。简直无敌。

注意事项:

群晖底层系统Linux,安装的Docker也是群晖的定制版本,目前新版本是17.05.0-ce

shell$docker-vDockerversion17.05.0-ce,build9f07f0e-synology安装套件后DockerCompose也会一同安装,同样也是旧版本

plain$docker-compose-vdocker-composeversion1.14.0,buildc7bdf9e

Dockerv17.05只能支持Compose文件v3.2,建议在dockercompose文件中都加入

yamlversion:'3.2'

其它的步骤就可以参考huginndocker的安装方法了

利用docker搭建服务比较方便,基本上都是在github或者hub.docker.com上搜索需要服务的关键字,群晖提供的比较比较好的交互界面,所以我们只需要了解下简单的docker命令就可以很轻松的把一些命令转换到相应的设置上。实在没有也可以自己用电脑创建镜像并上传到官方仓库中。

docker

titzanyic/frp:frpc:这个是我自己创建的,我发现其他人创建的frp客户端镜像大小特别大,如果没有一个好的网络环境,下载速度会特别慢,我精简了下镜像,只有15M左右的大小,使用也非常方便,映射好配置文件就可以运气了。

titzanyic/ttrss:这是基于我其它的镜像加入了我喜欢的一个主题后重新打包镜像。开源的rss阅读器,能够抓取一些rss资源,再接合手机客户端阅读。一些好的个人博客和观点还是不错的。另外你也可以搭建一个rsshub,这样可以把更多的互联网服务转换为rss。

之前还利用Docker来使用Homekit,后来米家支持了Siri来调用场景控制米家设备,就关掉了。也可以搭建ghost博客,然后在通过frp映射到公网,不会消耗VPS过多的资源。一些个人的服务特别使用放在Nas中,然后通过内网穿透映射出去。由于内网穿透对机器的配置要求低,所以等于间接的拥有一台高配置的服务器。

SurveillanceStation

SurveillanceStation主要就是将监控录像的保存到Nas中,使用了一个很普通的ONVIF协议的摄像头。

监控服务

VirtualMachineManager

虚拟了一台Ubuntu服务器,然后把22端口通过端口转发和内网映射用于远程控制,很多服务还是需要在完整的Linux环境下运行,主要是用于Docker无法实现的一些场景。4G内存的机器有点吃力,建议8G以上内存的机器尝试。

虚拟机

CloudSync&Moments

除此之外,群晖NAS还有非常多的用途:

4、同步办公类①CloudStationServer/Driver:套件装CloudStationServer/Driver实现,可让群晖与电脑、手机互相备份、同步数据※PC衍生玩法:电脑装CloudStationBackup/Driver,从此不用再把公司里的笔记本搬回家※移动端:手机装DSCloud/Driver,主要用于同步手机里的照片和数据备份等②NoteStation:套件装NoteStation实现,可以理解为本地搭建版的印象笔记,完全免费※浏览器衍生玩法:谷歌浏览器装SynologyWebClipper和SynologyWebStation※移动端:手机装DSNote③SurveillanceStation:套件装SurveillanceStation实现,可通过家里的摄像头(需要群晖支持的摄像头)实时监控家里的情况※移动端:手机装DSCam

5、网站搭建类①Wordpress博客:安装Wordpress套件或者上传Wordpress源代码安装,是大名鼎鼎的博客/个人网站平台※移动端:手机浏览器直接打开网址②NZBHydra:套件装NZBHydra实现,可以理解为本地搭建版的Usenet资源搜索引擎③Yourls:Docker装Yourls实现,可以将网址缩短为自定义的网址

请访问:

以下步骤已被证明是有效的,在使用本指南时请务必谨慎以免有所偏离,并确保你没有违反任何我们所要求的安装环境。举个例子,很多人运行会出现权限问题,是因为他们改变了文件夹的位置,或者用其他用户运行了服务。

如果你在这份指导上发现任何bug或者错误,请提交一个pullrequest。

Huginn的安装需要以下几个部分

Debian没有默认安装sudo,要确保你的系统是最新的然后安装。

#runasroot!apt-getupdate-yapt-getupgrade-yapt-getinstallsudo-y注释:在整个安装过程中,一些文件需要人工修改,如果你对vim很熟悉的话,可以将vim设置为命令行下默认的编辑器。如果你不熟悉vim的话,请跳过这一步,并继续使用默认的编辑器。

#Installvimandsetasdefaulteditorsudoapt-getinstall-yvimsudoupdate-alternatives--seteditor/usr/bin/vim.basic引入node.js仓库(Ubuntu和DebianJessie可以跳过这一步)

如果有老版本的Ruby版本,先移除:

sudoapt-getremove-yruby1.8ruby1.9下载新的Ruby版本并且进行编译:

sudogeminstallrakebundlerforeman--no-ri--no-rdoc4.数据库安装数据库的包

sudoapt-getinstall-ymysql-servermysql-clientlibmysqlclient-dev#PickaMySQLrootpassword(canbeanything),typeitandpressenter,#retypetheMySQLrootpasswordandpressenter检查安装的MySQL版本(只有当版本号大于5.5.3才能让.env配置文件正常运行)

mysql--version保证安装安全

sudomysql_secure_installation登陆MySQL

mysql-uroot-p#password输入MySQL的root密码创建一个Huginn的用户,不要先键入mysql>,这部分是要先做的。之后,选择一个真正的密码,并在命令行中替换$password

mysql>CREATEUSER'huginn'@'localhost'IDENTIFIEDBY'$password';确保你可以使用InnoDB引擎,它可以保证一个长索引。

mysql>SETstorage_engine=INNODB;#如果这一步失败,检查你MySQL的config文件(e.g.`/etc/mysql/*.cnf`,`/etc/mysql/conf.d/*`)#查看innodb的设置"innodb=off"保证Huginn用户可以允许访问数据库

mysql>GRANTSELECT,INSERT,UPDATE,DELETE,CREATE,DROP,INDEX,ALTER,LOCKTABLESON`huginn_production`.*TO'huginn'@'localhost';退出数据库

mysql>\q尝试用新用户连接新的数据库

sudo-uhuginn-Hmysql-uhuginn-p-Dhuginn_production#Typethepasswordyoureplaced$passwordwithearlier#输入你之前选择的真实密码来代替$password你现在应该看到ERROR1049(42000):Unknowndatabase'huginn_production',这说明我们操作是正确的。因为我们将会一会再创建数据库。

现在完成了数据库部分的安装,你可以继续剩下部分的安装。

DATABASE_ADAPTER=mysql2DATABASE_RECONNECT=trueDATABASE_NAME=huginn_productionDATABASE_POOL=20DATABASE_USERNAME=huginnDATABASE_PASSWORD='$password'#DATABASE_HOST=your-domain-here.com#DATABASE_PORT=3306#DATABASE_SOCKET=/tmp/mysql.sockDATABASE_ENCODING=utf8#MySQLonly:IfyouarerunningaMySQLserver>=5.5.3,youshould#setDATABASE_ENCODINGtoutf8mb4insteadofutf8sothatthe#databasecanhold4-byteUTF-8characterslikeemoji.#DATABASE_ENCODING=utf8mb4注意:注释了RAILS_ENV设置以确保实在生产环境中运行的Huginn

#如果你有很高的实例需要运行,那么就增加workers的数量#如果你的服务器至少有2GB的内存,那么对大部分用户来说,2个足够多了#减少worker数量到1sudo-uhuginn-Heditorconfig/unicorn.rb注意:保证你修改了.env和unicorn.rb来确保程序正常运行

注释:这将会创建初始用户,你可以通过设置环境变量中的SEED_USERNAME和SEED_PASSWORD来改变你的用户名和密码。如果你不想改变密码(将会设置为默认密码),请等待全部安装完毕上线到互联网之后,你可以登陆到服务器上来改变你的密码。

#web:bundleexecunicorn-cconfig/unicorn.rb#jobs:bundleexecrailsrunnerbin/threaded.rb引入初始化脚本:

sudobundleexecrakeproduction:export注释:当你每次修改.env或者Procfile的时候,一定要重新导入初始化脚本。

sudoapt-getinstall-ynginx网页设置拷贝示例的网页设置:

sudocpdeployment/nginx/huginn/etc/nginx/sites-available/huginnsudoln-s/etc/nginx/sites-available/huginn/etc/nginx/sites-enabled/huginn确保你修改了配置文件来保证你的建立,如果你运行了多个nginx网页,那么要listen指令中移出default_server参数。

#ChangeYOUR_SERVER_FQDNtothefully-qualified#domainnameofyourhostservingHuginn.sudoeditor/etc/nginx/sites-available/huginn如果nginx只运行了一个huginn服务,那么删除默认的nginx初始网页:

使用下面的命令测试你的Nginx配置文件是否正确:

sudonginx-t你应该看到syntaxisokay和testissuccessful。如果你看到错误信息,那么检查你Nginx配置文件中的huginn或huginn-ssl的排印错误等,根据错误信息来排查错误。

sudoservicenginxrestart完成第一次登陆在浏览器中登陆你的服务器地址,进行第一次Huginn的登陆。Huginn已经建立好了一个默认的账号给你,你可以使用下面的来登陆:

admin(oryourSEED_USERNAME)password(oryourSEED_PASSWORD)享受吧!:sparkles::star::fireworks:

你可以使用cd/home/huginn/huginn&&sudobundleexecrakeproduction:startandcd/home/huginn/huginn&&sudobundleexecrakeproduction:stop来开始或者停止你的Huginn服务。

在Huginn上使用HTTPS。

重启Nginx,导入初始化的脚本,然后重新启动Huginn:

cd/home/huginn/huginnsudoservicenginxrestartsudobundleexecrakeproduction:export不鼓励使用自签名的证书,如果使用的话,你必须按照正确顺序的步骤,之后生成证书。

sudomkdir-p/etc/nginx/ssl/cd/etc/nginx/ssl/sudoopensslreq-newkeyrsa:2048-x509-nodes-days3560-outhuginn.crt-keyouthuginn.keysudochmodo-rhuginn.key故障排查如果在安装过程中遇到了问题,请确保你是按照正确的顺序安装,没有错过其中的任何一步。

当你的Huginn实例没有运行,运行下面的脚本来进行检查。

cd/home/huginn/huginnsudobundleexecrakeproduction:check如果还有其他的问题,我们很遗憾的告诉你需要查看各种日志文件来确定错误信息。

这个文件应该是空的,但是是第一个你需要检查的地方。因为nginx是第一个处理发送到Huginn请求的应用。

通常的问题:

这里应该包含了HTTP请求的入口,类似于:10.0.2.2--[18/Aug/2015:21:15:12+0000]"GET/HTTP/1.0"200-0.0110

如果你发现了ruby的回溯信息,或者以下的其他错误信息:

这个文件非常的冗长,如果在你使用Huginn的时候出现We'resorry,butsomethingwentwrong.,这是一个典型的示例回溯信息,可以帮助你或者Huginn的开发者定位问题。

NoMethodError(undefinedmethod`name'fornil:NilClass):app/controllers/jobs_controller.rb:6:in`index'config/initializers/silence_worker_status_logger.rb:5:in`call_with_silence_worker_status'

如果你的某一个agent没有正确的运行,这些文件会包含错误信息或者其他回溯信息。最简单的调试agent的方式就是看你的日志文件,当你在Huginn的网页上改变或者触发agent的时候,都会产生这些日志文件。

这些日志文件的位置取决于你的Procfile文件,这些命令会给你可用的日志文件列表:

ls-al/home/huginn/huginn/log/*/current

当你想要观察后台进程的时候,你可以轻松的查看所有改变的文件:

tail-f/home/huginn/huginn/log/*/current

你可能发现其他你无法解决的错误信息或者意外的回溯信息。请新建一个新的包含足够的信息的issue,这样你可以获得这个问题的解决办法。

1,建立一个全自动的内容聚合网站,典型案例有几个:

另外还有两个国外聚合做的比较好的站:

3,快速生成一批各种语言自动转换翻译的网站,用垃圾站做流量,有个台湾的站点用这个方法做到很大的流量。

4,自动抓取YouTube频道的视频,做视频站或者搬运国内.

5,等等……各种场景自己想象吧.

1,什么是RSS?

RSS是一种用于共享新闻和其他Web内容的数据交换规范,用人话解释,就是在网站和其它站点之间商量好的一种沟通交流的传输方式。这种高效的传输格式就是XML,它看起来像这样的:

打开后,你看到的就是上图的一大堆XML代码,这堆东西其实给程序看的。我们需要看RSS内容,通常是使用市面上各种RSS阅读器。比如我使用的RSS阅读器是Inreader,你可以到它的官网或者APP上注册账号,并将上面拿到的RSS地址输入到RSS阅读器即可,如图所示:

在PC订阅效果如图:

在APP订阅效果如图:

你可以根据自己的喜好需求订阅各大平台的RSS源到Inreader阅读器里,聚合供自己随时随地被动阅读,而不需要大费周章逐个翻阅到各大平台之间。

2,什么是烧录RSS?

前面我们讲了什么是RSS,如何获取到RSS。但是问题来了,如果你要订阅的内容源默认没有RSS服务,订阅不了怎么办?

对,这个时候就要自己烧录RSS了。就是说,我们自己把没有RSS的内容源变成RSS源,就叫烧录。

烧录RSS有很多方法:

通过上面介绍,各位应该对RSS有所了解,那么我们可以进入主题:

第二步:在Wordpress上安装WPeMatico插件

WordPress安装插件的方法一般有两种:

在Wordpress管理后台安装插件

首先登陆Wordpress管理后台,点击左侧的“插件”—>“安装插件”—>在右侧搜索框输入“WPeMatico”—>点击“安装”—>最后点击“启用”。如图所示:

将插件上传到Wordpress插件目录

直接下载WPeMatico插件程序,WPeMatico原版是英文的,目前我已经将它100%汉化了,如果你需要中文版下载的

WordPress的插件目录:/wp-content/plugins/

前面我们已经安装好了WPeMatico插件,这里就以采集《Affiliate营销圈》的嘉宾吴总的[BlueFriday]公众号为例,先烧录了BlueFriday公众号为RSS。烧录RSS方案上文已提供,这里就不重复了,我们直接在Wordpress后台的WPeMatico插件菜单里,点击:—>“添加Campaign:”,如图所示:

接着添加你烧录好的公众号RSS:

接下来设置音频、视频、特色图片,值得称赞的是,WPeMatico可以自动和手动分类、以及自动Tags和手动指定Tags。如图所示:

接下来设置自动定时运行任务:

设置完成之后,选择Campaign类型:FeedFetcher(默认),目前WPeMatico支持RSS、YouTube类型获取。

然后点击发布,就大功告成了。最后采集结果列表如下:

WPeMatico功能强大,以上是常规的设置流程,具体细节设置,需要大家自己去操作体验。

crontab-e

在最后一行输入要执行的命令,如:

302***reboot(表示每天2:30重启)

保存后,使用crontab-l检查是否显示出来定时任务没有

作者提供的免费服务器在过滤时,有时候会不准确,强烈建议使用自己部署的自用服务器

不懂Huginn的朋友,可以略过这部分

既然RSSHub如此功能强大且使用简单,如果结合Huginn使用的话,更是事半功倍,可以省去写最难的WebhookAgent(当然,如果是RSSHub没有配置的平台或网页,还是需要用上WebhookAgent),下面提供一下我自己结合Huginn使用的流程,供大家参考。

作者:xzonepiece

两部手机有时候接收验证码的时候很不方便,特别是另外一部手机没在身边。所以有了这个折腾。

-Tasker任务选择【插件】-【LocaleSendSilent...】-然后选择打开上一步保存的配置名移动数据,关配置截图Tasker发送邮件配置截图使用Tasker自动阅读短信(消除未读短信数字)新建一个readmessage的任务,内容如下:

因为安卓系统各家定制,差异很大。所以唤醒操作在有的设备可能不会很好的运作。

0.需要root

1.Tasker要给后台运行,并关闭对其电池优化。确保其它电量或内存优化软件,不会对Tasker产生不利的影响。

2.首选项usereliablealarm至少选择whenoff.

3.如果有解锁密码的话,配置xml任务,已经模拟了点击解锁密码。你需要根据你的密码更改点击坐标。借助开发者模式中的显示点击位置可以找到点击坐标点。

唤醒任务配置文件xml,

这次要用到三个应用,分别是Tasker、AutoVoice和AutoShare。另外要装有语音引擎,我没有用MIUI自带的,另外用讯飞语音+,它对中文的识别能力比Google搜索的好。

一,新建条件。

二,编写任务。

2.清除上次留下的语音笔记。变量里选择清除变量,名称%VNote。

3.获取要记录的内容。这里在插件中调用AutoVoiceRecognize。里面不用设置,默认是不用耳机记录。

5.连接每次记录的语音笔记。用变量设置。名称%VNote,发往%VNote%avcommnofilter。中间加不加空格都可以。

6.显示所有说过的语音笔记。我用它来确保语音记录的正常。选择警报当中显示,文字%VNote。

7.鼓励表达的话。用朗读的命令。

8.再次获取语音内容。用任务中转到操作goto,选择第3步。要根据实际位置调整。

9.判断是不是结束命令。%avcommnofilter写“结束。”、“说完了。”之类的语句。

10.用AutoShare将%VNote的内容转发到笔记软件。

11.结束判断。EndIf。

关于AutoShare转发笔记的配置是这样的。点配置,然后Advanced。FindCompatibleApps寻找可以直接调用的应用。像Miui自带的便签、快盘也可以用来储存这些语音,这里我选个人惯用的为知笔记,因为它在PC也有客户端,并且支持云端同步,保证不同平台笔记同步。

退出高级选项。主题Subject,写“%DATE语音笔记”,调用Tasker的日期变量,中间有空格,否则识别为文字。内容Text,写%VNote。这样就行了。

当我调用这个语音笔记之后,最后会跳出笔记软件的界面,不点勾也行,为知笔记和MIUI都是自动保存的。

所以消息链路是这样的:

过程中用到的软件/组件:

天工物接入照着官方文档很好配,配好后写个脚本扔路由里(运行openwrt系统)跑起来

/usr/bin/nohup/root/wake_on.sh>/root/wake_on.log&#写在exit0之前exit0公众号服务端消息发布脚本

#!/bin/shHOSTNAME=do-vpsHOST=xxx.mqtt.iot.gz.baidubce.comUSER=用户名PASSWD=天工物接入密钥TOPIC=wake_onMSG="on"#这个消息内容可以随便定制,与客户端判断逻辑一致即可/usr/bin/mosquitto_pub-i$HOSTNAME-h$HOST-u$USER-P$PASSWD-t$TOPIC-m$MSG&改可执行权限,直接在WeRoBot中用subprocess调用即可

importsubprocessdefbash_command(*args):lst=['"{}"'.format(i)foriinargs]cli=''.join(lst)proc=subprocess.run(cli,shell=True)最终目标达成,远程开机功能完美实现。

root@GL-MT300N-V2:~#tailwake_on.log2018-08-09T17:48:51GEToncommand,willwakeonxps数秒后电脑开机,自动启动teamviewer,可以开始愉快的远程工作了~

PS:其实肯定还有别的解决方法,比如利用IFTTT、DDNS啥的,只要稍稍有点码力加折腾精神,很好搞定。

保证手机正常联网,通过USB调试做以下步骤:

在进行模拟点击前,必须保证手机屏幕是唤醒状态,不然点了也没用。网上很多人说的采用adbshellinputkeyevent26这种方法只有在亮屏时有用,相当于按下一次电源键,但熄屏状态并不起作用,所以我采用另一种办法:通过Tasker调用SecureSettings唤醒屏幕。

具体做法是

测试:可以在Tasker中设定一个延时任务测试下,比如延时三秒后亮屏

亮屏后默认是系统的锁屏界面,简单起见,我已经把手机解锁密码去掉,只剩下滑动锁。滑动解锁处理起来比较容易,adbshellinputswipex1y1x2y2即可,所以我们需要定起始和终止两个坐标点,来模拟滑动,继续往下看。

此方法比较土,但胜在只要有adbtools就能用,不需要别的东西。

通过命令adbshellgetevent-p|grep-e"0035"-e"0036"获得event体系里宽和高

我的手机输出如下信息:

0035:value0,min0,max1080,fuzz0,flat0,resolution00036:value0,min0,max2248,fuzz0,flat0,resolution0我们需要的就是其中的max

0035max1080宽0036max2248高手机分辨率是已知的,我手机是:1080x2248

计算比例:

rateW=1080(手机屏幕的宽)/1080(event里0035的max)=1rateH=1920(手机屏幕的高)/2248(event里0036的max)=1计算点击位置坐标执行命令adbshellgetevent|grep-e"0035"-e"0036"

输出如下信息:

/dev/input/event3:0003003500000430width/dev/input/event3:00030036000005b1height把0035和0036后面的位置数据从16进制转化为10进制,祭出Windows10自带计算器,选程序员转换之得到十进制坐标为:(1072,1457)

这是在event体系里的位置,将其转化为屏幕位置

screenW=width*rateW=1072*1=1072screenH=height*rateH=1457*1=1457所以得到刚才点击的屏幕坐标位置是(1072,1457)

一般我们是在PC端利用adb调试安卓手机,但实际上安卓自己也可以调试自己,这样可以只用手机就完成模拟点击操作,不需要电脑的帮助。还记得准备工作要求的安装ADB&FastbootforAndroidNDK,BusyboxforAndroidNDK这个Magisk模块么?就是来干这个的。

打开终端模拟器,输入代码:

su2000-c'setpropservice.adb.tcp.port5555'#开启USB网络调试su-c'stopadbd&&startadbd'#重启USB调试服务adbconnectlocalhost:5555#启动adb,接通本机5555端口出来弹窗选择信任即可

这一步你当然可以通过模拟点击来打开相应APP来进行后续的操作,但这要求你手机解锁开屏后不能有别的APP占据屏幕,否则点击就乱套。这里我采用的是amstart-n{包(package)名}/{包名}.{活动(activity)名称}方法,APP包名一般都能在对应的市场比如酷安应用详情中看到,钉钉的包名是com.alibaba.android.rimet。那么如何知道APP的activity名称呢?继续往下看。

据说有个叫re-sign.jar的小工具可以干这个,但我这里总是报OOM的错,懒得深究,直接上adb敲如下命令

adbshelldumpsysactivityactivities|findstr"应用包名",输入之后信息会有很多,过滤一下,主要找包名.开头的,比如钉钉是com.alibaba.android.rimet.ui.activity.StartActivity(版本不同可能会有差异,需要自己琢磨),找到后用如下命令启动APP:

amforce-stopcom.alibaba.android.rimet熄屏屏幕老亮着太费电,还是关了的好,有两种方法

懒人福利:Tasker配置文件(复制保存为xml后缀文件,可直接在应用内导入还原):

需要在IFTTT中开一个applets

脚本加点新内容:

本文用到的

智能语音助手:GoogleAssistant

智能任务系统:IFTTT

下面有列出通用的参数:

上述我们无法拿到的是哪些呢?

所以只要拿到clientId,我们就能

那怎么去拿到clientId呢?反编译试试(大家应该都知道怎么做),class.dex有点多,最后拿到了

{"devId":"002yt001sf000000sfV3","dps":{"1":1,"2":5}}可以看到,POST的数据除了sid,还需要devId和dps

我们要控制插座开关的话,那就使用{"1":true}/{"1":false}即可

那devId呢?它代表我添加设备id,那我怎么知道我刚给在SmartLife上添加的插座id呢?抓包试试(大家应该都知道),通过抓包,我们可以很容易拿到所有你绑定的devId。

我为自己的项目取名为Angelia,安革利亚,古希腊神话人物之一,为“消息女神”。

搭建web项目,新建AngeliaController:

@RestController@RequestMapping("/angelia")@ConfigurationclassAngeliaController{//...}增加Tuya的配置文件:tuyaclient.properties

以上,除了刚刚的那些必要的参数之类,在这个配置文件里面还增加了对所有设备的配置,每个设备对应它的dpId,devId,还有别名(控制的时候不可能直接说“devId为a1d2f32a1d2f32的插座关掉”,而是说“关掉插座1”/“关掉洗手间总电源”等等),每个设备别名可以有多个。

好了,回到AngeliaController,新增一个接口:

我们破解了涂鸦的插座,搭建了自己的web服务,暴露了一个接口来控制插座的开关。这篇我们配合IFTTT、Slack来控制插座:

接下来,我们来创建一个App。

输入App名称和你要添加到的workspace。

设置机器人的名称(Displayname和Defaultname)。勾选AlwaysShowMyBotasOnline,点击SaveChanges。

我们先回到我们的web服务,打开上一章创建的AngeliaController,新增一个处理Event的api:

@PostMapping("/say/at")funsay(@RequestBodyrequest:BotEventRequestVo):JSONObject{logger.info("[slackeventrequest]request->\n$request")returnJsonResult.success("token"torequest.token,"challenge"torequest.challenge,"message"tomessage)}

dataclassBotEventRequestVo(valchallenge:String,valtoken:String,valteam_id:String,valapi_app_id:String,valevent:BotEventVo,valtype:String,valevent_id:String,valevent_time:String,valauthed_users:List)dataclassBotEventVo(valtype:String,valuser:String,valtext:String,valclient_msg_id:String,valts:String,valchannel:String,valevent_ts:String,valchannel_type:String)构建,部署到服务器。

打开SlackApp设置页面的EventSubscriptions:

注意:这里认证的依据是,你的接口Response需要返回请求中的challenge数据就算认证成功。

message.im表示当你跟bot的私聊中产生消息的时候(有可能是你发送消息给Bot,也有可能是Bot发消息给你),事件就会触发。

点击保存。

这时,当你在Slack中发送消息给机器人的时候,你的web服务端就能收到请求了。

你的web服务器收到请求之后,需要对此进行处理,所以你需要去解析发的消息中的信息,然后打开/关闭对应设备(插座)的开关。完善之前的say接口:

@AutowiredlateinitvartuyaClientService:TuyaClientService@AutowiredlateinitvarangeliaSlackProperties:AngeliaSlackProperties

/***Angelia机器人对话入口*/@PostMapping("/say/at")funsay(@RequestBodyrequest:BotEventRequestVo):JSONObject{try{valtext=request.event.textvaleventType=request.event.typeif(eventType=="message"//直接对话||request.event.user!=angeliaSlackProperties.angelia_id//angelia自己发的忽略掉){valmessage=angeliaBotService.parseTuyaClient(text):"Sorry,Icannotunderstand."angeliaSlackService.postMessage(JSONObject().apply{this["text"]="$message"this["channel"]=request.event.channelthis["as_user"]=true})}returnJsonResult.success("token"torequest.token,"challenge"torequest.challenge,"message"to"RequesteventId(${request.event_id})done.")}catch(e:Exception){angeliaSlackService.postMessage(JSONObject().apply{this["text"]="Sorry!Somethingiswrong:${e.message}"this["channel"]=request.event.channelthis["as_user"]=true})returnJsonResult.error(e.message)}}

上面代码的逻辑很简单:

这里需要做一些Slack的配置slack.properties:

angelia.slack.bot_token:是Bot发送消息到Slack的token,这个token可以在app设置页面的OAuth&Permissions中拿到

注意:是下面的那个BotUserOAuthAccessToken,并且添加到配置文件的时候需要加上Bearer(注意后面有个空格)

angelia.slack.api_base_url和angelia.slack.api_chat_post_message是发送消息的url,不用改动。

angelia.slack.angelia_id表示机器人的id,可以通过在slack左侧选中机器人右键复制链接,path最后部分就是id

最后,你就能在slack中打开与机器人聊天框,发送“关闭插座a”来控制插座:

首先确保你的手机装有GoogleAssistant(GoogleHome先不讨论。。。是的,我没买--)。

首先我们需要在web服务器端再创建如下一个接口:

/***插座控制接口*/@PostMapping("/control/plug")funcontrolPlug(@RequestBodyrequest:PlugRequestVo):JSONObject{valdev=tuyaClientProperties.findDev(request.alias)returntry{if(null==dev){JsonResult.error("Devicenamed${request.alias}isnotfound")}else{tuyaClientService.controlPlug(dev.devId,request.turnOn)JsonResult.success()}}catch(e:Exception){JsonResult.error(e.message)}}dataclassPlugRequestVo(valalias:String,valturnOn:Boolean)

构建部署到服务器。

This:选择GoogleAssistant:

That:选择Webhook:

注意:POST请求,在body中填写如上json数据。关闭的Applet也是类似,把body中的turnOn改成false就可以了

本来想直接使用GoogleAssistant的SmartLife的,但是一直没成功,很多人也在反映这个事情,不过貌似没什么效果(看下面这个评分,估计反映一直是被无视的--):

在web服务中再新增两个接口用于SlashCommand:

打开App设置页面的SlashCommands,

点击CreateNewCommand,

还有其它很多场景可以实现。比如:

现在越来越多的厂商制作着各种各样的智能设备,但是又在自己的一亩三分地固步自封。做个插座,提供一个app控制下开关、定个时、做个schedule就是所谓的智能了,你买了我的设备就必须要用我的软硬件产品。那些需要用户花心思去考虑什么时候我该怎么的设备不是冰冷的,没有生命的么?智能是人类赋予了设备生命,掌握了“思考”的能力,现在的生活如此多元化,再牛的公司也不可能覆盖你的所有生活领域,如果买了这样的智能设备但自此被囚困在这里,我想,这才是我非智能生活的开始吧。

作者:天天_byconan

huginn中的几个关键术语解释一下:

代理,简单理解就是一个操作,比如发送消息,解析网页等等.

场景,场景由多个agent组成,通过agent构建一个有向图.

事件,即agent的执行的中间结果,前一步的agent将处理后的信息以event的形式抛出去,由下一步的agent去接着处理.这里就涉及到agent中的两个概念,sources和receivers,分别定义的是当前agent的前置和后置agent.

这里,我们先创建一个名为movie的Scenarios.

通过查看页面元素,我们不难去定位每一个字段

我们新建一个agent,类型为WebsiteAgent,这个agent用于处理页面元素.

[{"url":"/films/1217651","poster":"//ms0.meituan.net/mywww/image/loading_2.e3d934bf.png","title":"小公主艾薇拉与神秘王国","score":"4.8"}]这个数组中的每个{}都将是一个event向外发布.

这里我们再创建一个agent,url使用上一步给出的url进行拼接.

另外还有一个细节是,这里的mode为merge,意思是,将上一步的event带过了的字段和当前event进行合并,往下一步传.

{"url":"/films/1213193","poster":"//ms0.meituan.net/mywww/image/loading_2.e3d934bf.png","title":"猫与桃花源","score":"8.5"}可以看到我们获取到了更详细的影片信息

为这个app创建一个incoming_webhook.格式应该是

关于发送slack,虽然huginn提供了一个slackagent,但使用起来仅仅发送最简单的message可以使用,无法构建复杂的格式.我们改用postagent.

家里一直使用群晖的NAS,给爸妈备份照片文件什么的,自己也能在我的荣耀盒子上装个KODI来看看高清影片.

最终实现的解决方案,个人来说非常方便,直接通过slack说一句话,把下载地址告诉它,家里的nas就自动开始下载了,完全不用人工干预.

/downloadmagnet:xt=urn:btih:xxxxxxxxxxxxxxxxxxxxxxxxx

如何安装huginn不在本文讨论的话题,大家可以自己去搜索,我个人使用的是docker镜像部署的.

我们先创建一个WebhookAgent:

我们收到slack推送过来的消息格式如下:

保存之后可以得到一个webhook的地址,我们需要记录它,之后会用到.

这里注意一下,下面的Options中,我把title/description/link/guid都设置为.

保存后,可以得到一个.xml的地址,也就时我们发布的rss地址.我们需要记录一下这个地址后面使用.

群晖在套件中心里面有个应用叫做DownloadStation,我们先提前下载好.先看看官方的介绍:

这里补充一下,还支持magnet链接.

目前只抓了什么值得买和V2EX的二手交易区,流程图如下:

具体配置供参考

问题:

有人用过这个叫做Huginn的工具吗?听他的介绍很诱人,但是自己去尝试安装好久了老是出问题搞不定

回答1:

简单折腾过docker装容易点相当于自建版IFTTT

回答2:

安装过程的确很繁琐,不过按照github上面的介绍,一步一步的来基本就可以了,过程中有问题google一下也差不多能找到答案,使用人数多的工具就这点好,基本上你能遇见的坑别人也遇见过~我搭建起来差不多有一个多月了,主要就是用来爬常用的网站做全文RSS,huginn功能的确相当强大,很多我都还没尝试过,但是有些地方还是很死板,要实现某些特定功能还要好几个agent反复组合起来才可以,agent多了,效率自然会下降,不过对于RSS来说,时效性也还是可以满足的我之前是在用python写脚本做全文rss,因为本人对编程并不熟练,出问题了往往要调试排查很久才可以恢复正常,huginn在使用界面还有报错方面都比较友好,估计会一直用下去了

备注一下:

作为一名效率重度焦虑症患者(晚期),对等待简直病入膏肓,哪怕多一步跳转、开一个页面都觉得谋杀生命。

减脂期间,从篮球、剑道、跑步,调整到自由泳,决策依据分别是2小时以上有氧+无氧运动、2小时有氧+无氧运动、40分钟以上有氧运动、20分钟有氧运动+洗澡。

时至今日,变为每天上下班各40分钟自行车≈上午下午一次非特意安排的有氧运动。

运动管理已如此纠结,对工具使用更是苛刻到令人发指。

早早入了苹果全家桶,什么handoff、airdrop大副都使的有模有样;最喜欢iwork三件套,输入内容不排版、上台演讲不带翻页笔。

考虑到很多高光商务时刻,不适合纸质笔记,用手机速写编辑,而整理时又经常需要在手机和电脑切换共享,找一款笔记app变得极为迫切。

锤子便签:ios使用非常舒适,macapp没有,只能用网页版,导致切换不方便。现在只用来写在手机里使用的单一场景。

有道云笔记:好用,但界面繁琐,常用来博客转存留档使用。

bear:非常好用,iPhone、Mac的交互也很便捷,分类、搜索功能是特色,收费10元/月。

石墨文档:媒体用这个好像比较多,很多程序文档也用它。不过对个人笔记的使用(分类、汇总)不友好。

以上是手机里健在的笔记软件(不好用的都删了)。

如何做到?得从reeder3限免说起。

虽然以前就知道RSS功能强大,只是没有特意了解。reeder3限免下载后,查了些使用心得,发掘莫大吸引力。一头扎进去感受到,坑大了去……

打开攻略说干就干。

自己有云主机、装个huginn、适配服务器资源、下插件、改参数、运行、加载宏,噼里啪啦,搞定!

美好的憧憬只存于想象,辛勤代码后,终于放弃自己适配服务器,败在无知的第一步。

淘宝找专家15分钟完成后,不得不承认,比起复制、粘贴代码,还是码字更适合自己。

本以为利其器必然善其事,可现实蹉跎自己。

在huginn下载订阅公众号宏,修改发现,还得装个云端虚拟浏览器躲避搜狗反爬机制。

最终,放弃了。

退而求其次,hard模式囚人,只能选择easy。

搜了更简单的办法,解决rss源问题后,终于自己想要的内容可以全部在reeder3里查看。

大功告成。

一个个贴便签,学姐就问你累不累?

学姐的小宇宙爆发了,找到了好友分组一步到位的神技!

点击后可新建便签或已有标签,点击添加键“+”

绝大部分好友来自群里,当你选择“从群里导入”,这个群里的所有好友就可以一次性批量打上你选择的标签,进行分组!

这个空标签下一次性导入了44个好友,就是说你给44个人一次性打上了一个相当精准的标签。

注意:群人数是196,贴标签的人数是44,所以这个一键贴标签针对已是你好友的功能。

THE END
1.在线源代码查看工具理想股票技术论坛在线源代码查看工具是指能够在互联网上直接查看和阅读源代码的工具。它可以帮助开发者快速浏览和理解各种项目的源代码,提供代码高亮显示、语法检查等功能,方便用户进行代码调试和学习。源码查看器和代码阅读器也是同样功能的工具,可以帮助开发人员更好地理解和分析代码,https://www.55188.com/tag-7040013.html
2.使用HTML5技术制作在线PDF阅读器(附源码)这个技术原型主要用于在HTML5 平台上展示 PDF 文档,无需任何本地技术支持,但浏览器必须技持HTML5。建议开发童鞋使用统一开发环境UDE来进行查看、调试、开发~~~统一开发环境是一款HTML5跨平台一站式应用开发、调试和部署工具。通过整合多种手机应用的开发包(SDK)及对应的Eclipse Plugin、跨平台中间件、中国移动开发者...https://www.iteye.com/resource/qq_33705529-10636181
3.C源码,VC源码,VC++源码,Java源码,PHP源码,C++源码,C#源码,Python...源代码 | 网页 | video | 分析 | numerical | 图片 | wince | 粒子 | compression | 信号 | 数字 | atm | 服务器 | 学生 | 毕业 | sequence | 加密 | 信息 | ndis | 股票 | 图书 | lpc1768 | easy | LPC2468 | Remote | programs | 财务 | function | cs | customer | lpc1700 | lpc2136...http://verysource.com/
1.HTML在线编辑器查看HTML源代码 https://www.agzyy.com.cn/editor/editor.asp
2.查看php的源码在哪在开发过程中,无论是出于学习目的还是解决实际问题的需求,开发者可能需要查阅PHP的源码。理解如何访问和浏览这些源代码可以帮助你更好地掌握这门语言,并且能够更深入地了解其内部运作机制。本文将向您介绍查找PHP源码的方法以及如何阅读它们。 一、什么是PHP源码 ...https://blog.csdn.net/mynote/article/details/143744516
3.如何查看PHP网站及其源码在浏览器地址栏中输入localhost,或在C盘的vhosts文件中解析一个域名到127.0.0.1。 在Apache服务中进行绑定设置。 在浏览器地址栏中输入刚刚解析的域名,即可浏览网站。 或者,将源码和MySQL数据库上传到服务器。 如何查看PHP网站的源码 PHP网站的源代码在服务器上执行,因此通过浏览器或其他客户端请求服务器后,只能看到执...https://www.php1.cn/detail/php_ZenMeKanWang_993a09d0.html
4.PHP后台微信小说阅读平台小程序设计与实现(论文+作品)博主介绍:黄菊华老师《Vue.js入门与商城开发实战》《微信小程序商城开发》图书作者,CSDN博客专家,在线教育专家,CSDN钻石讲师;专注大学生毕业设计教育、辅导。 所有项目都配有从入门到精通的基础知识视频课程,学习后应对毕业设计答辩,提供核心代码讲解,答辩指导。 http://www.licqi.com/artikel/23984.html
5.1200套安卓应用程序游戏源代码android程序源码app项目源码含教程│ Android 改版的【chino】的pdf阅读器.rar │ Android 炫丽书架源码.rar │ Android 真实书籍翻页效果.rar │ Android 翻页效果txt阅读器源码.rar │ Android 荒村鬼话电子书源码.rar │ Android 赛贝尔曲线电子书源码.rar │ Android文本阅读器源代码.rar ...http://jixi.witcp.com/design/c62/t5b819ad9bb91.html
6.ThinkPHP内核开发狂雨小说cmsv1.0.6小说系统源码下载3. 本站所有资源来源于网友投稿和高价购买,所有资源仅对编程人员及源代码爱好者开放下载做参考和研究及学习,本站不提供任何技术服务! 4. 本站所有资源的展示图片和信息不代表本站的立场!本站只是储蓄平台及搬运 5. 下载者禁止在服务器和虚拟机下进行搭建运营,本站所有资源不支持联网运行!只允许调试,参考和研究!https://www.huizhanii.com/18555.html
7....图片处理文本处理自然语言处理机器学习日志代码分析...errlog : 用于确定错误的责任源代码(以及其他一些快速调试功能,可以嵌入到任何的日志服务中。 errors : 标准库错误包和 github.com/pkg/errors 的替代包。提供各种错误处理单元。 errors : 提供简单错误处理单元的包。 errors : 简单的 golang 错误处理包。 errors : 最简单的错误封装器,性能卓越,内存开销最小。https://github.com/codeyifei/awesome-go-cn
8.PHP在线音乐播放器代码支持多个音乐源切换PHP在线音乐播放器代码 在线搜索下载全网音乐,基于网易云音乐api,具有音乐搜索、播放、下载、歌词同步显示、个人音乐播放列表同步等功能。 全面支持网易云、虾米、酷狗、百度音乐源切换 移动端歌曲列表支持直接分享、下载歌曲 演示和下载地址:http://t.cn/RkK7PUW...https://www.thinkphp.cn/code/4735.html
9.前端面试题目汇总(一)查看在线代码。参考《JavaScript中的对象克隆》 4.4、 jQuery中 (′.class′)和(‘div.class’) 哪个效率更高? jQuery内部使用Sizzle引擎,处理各种选择器。Sizzle引擎的选择顺序是从右到左,所以这条语句是先选.class, 第二个会直接过滤出div标签,而第一个就不会过滤了,将所有相关标签都列出。参考《...https://maimai.cn/article/detail?fid=1379132340&efid=6APwtdQsqgtKv5WoAzTVYw
10.gopkg/awesomegocn:golang的一些第三方包合集awesome将ENV绑定到结构体仅需两行代码。 config 210 带有环境变量和标记解析的JSON或YAML配置包装器。 configure 48 通过多个源提供配置,包括JSON、flags和环境变量。 confita 235 从多个后端级联加载配置到struct中。 conflate 8 合并来自任意url的多个JSON/YAML/TOML文件、针对JSON模式的验证以及模式中定义的默认值的应用...https://gitea.mrx.ltd/Go-pkg/awesome-go-cn/src/commit/54cf0e4c6ac120514e9dc42077d199fdbbaa2a3c