起源

入手galaxy watch 4后一直在试探智能手表到底能做些什么,什么样的工具形式才是比较理想的状态。在我的理解里——抬腕、阅读、交互,这整个使用流程并不那么符合人类的操作习惯,缺少抓握这个肢体动作并没有一个强有力的操作开始的暗示,因此智能手表在我的定义里只能是辅助设备,不能成为一种高频、高沉浸的使用工具。

与其他设备的互通,承接数据记录、中转,用以填充一些低频使用场景的需求,这就成了我使用智能手表的目标,此外这种比较明确的使用边界我很喜欢,相对智能手机来说,工具和人的主次位置更加清晰明了。

galaxy watch 4采用定制化的wear os3,利用google play有很多应用拓展选项(当然也没那么多),自己瞎折腾的话也可能额外装一些有的没的内容,比如腕上bilibili,网易云音乐,节拍器等等,但碍于生态的缺陷,可玩性并没有想象的高,在手表上装一个视频应用对我来说实在匪夷所思,当然能在手表上看番谁都得兴奋一下!

说回来,生态的缺陷并没有特别让我体验到智能手表能有的一些辅助功能,本身我对它的使用场景还仅处于一种较为模糊的概念层面,除了健康数据监控,很难说有什么更多的实际想法落地了。如何和手机互通,还有哪些低频、可分离的使用场景?在我装上了google keep之后,一个把打卡这个低频的使用操作分离的想法出现了。


打什么卡?

wear os中keep可以与手机的keep互通有无,在keep设置好目标选项之后,可以在wear os里进行勾选,同时因为网页端的支持,只要有网,可以说三端的数据互通体验十分优秀。可惜的是,我并不用keep做日程规划之类的,办公场景中使用notion做一些简单的甘特度已经能满足我的需求。如果这么好的数据互通体验不用岂不是可惜了?

再细想一些打卡的使用场景,无非是目标的设定和达成目标的【打卡】记录,其实wear os上也可以找到一些应用设置一些目标然后进行每日打卡,甚至galaxy watch本身就有喝水记录之类的,但是吧,这些我都不用啊,不能说你有,我就要用,那我多没面子?于是乎本着定制化才是最终的完美产品的思想,我决定在keep的基础上弄一些有趣的东西,起源于之前我看到清明梦的相关内容——每天设定不同的关键词,当遇到关键词相关内容后反问自己是不是在做梦。记不清具体叫什么了,就简称“现实提示词”吧。

所以需求很简单,在keep里每日生成随机词,在手表里打卡,完美。因为keep本身就有良好的数据互动,那么问题就在于怎么在keep里每天生成随机词呢?

起初我打算用自己老旧的Pixle 2xl和Tasker完成一整套流程,但奈何Tasker压根没学好,用起来太麻烦了,也没找到能直接上传内容的active,只能放弃;转而投向web api,寻找官方api未果,但发现了个第三方google keep api库——gkeepapi,用我拉胯的python技能也能完美实现,bingo!


gkeepapi

github:https://github.com/kiwiz/gkeepapi

Docs:https://gkeepapi.readthedocs.io/en/latest/

gkeepapi使用起来极其简单,装个包,对着示例代码简单改一些,前后三、五分钟完成。因为我只用上传新的内容,也不涉及对内容的操作,真个代码简单至极,如下:

import gkeepapi,randomstingList = ['凳子', '平板拖', '手套', '百洁布', '清洁球', '海绵擦', '马桶垫/刷','刷子', '衣架', '水桶','杯子', '脸盆', '垃圾桶', '花盆', '喷雾器','卸妆水', '洗面奶', '牙膏', '洗发水', '沐浴露','身体乳', '去角质', '面膜','洗衣液', '浴巾','钥匙', '身份证', '耳机', '充电器', '纸巾', '零钱', '公交卡', '手机','毛衣', '衬衣', '半袖', '外套', '羽绒服', '西服', '胸罩', '裘皮', '马夹', 'T恤', '背心', '短裤', '裤衩', '内裤', '长裤', '西裤', '背带裤', '牛仔裤', '自行车', '摩托车', '公共汽车', '大客车', '三轮车', '出租车','虎', '狼', '鼠', '鹿', '猴', '树懒', '斑马', '狗', '狐', '熊', '象', '豹子','狮子', '羚羊', '驯鹿', '考拉', '犀牛', '穿山甲', '长颈鹿', '熊猫', '猩猩', '水獭', '猫','海豚', '刺猬', '狐', '北极熊', '袋鼠', '河马', '海豹', '鲸鱼','电脑', '键盘', '鼠标', '手表', '笔记本', '铅笔', '水性笔', '口罩', '眼镜',  '手', '腿', '牙齿', '鼻子', '眼睛', '嘴巴', '跳舞', '唱歌', '吃饭', '睡觉', '上厕所', '跑步', '听音乐', '看电影', '散步', '逛街','拥抱', '微笑', '马尾辫', '发箍', '橡皮筋', '玩偶', '皮卡丘', '蜡笔小新', '扇子', '会议室', '情侣', '老人', '女孩', '男孩', '生物', '地理', '数学', '化学', '物理', '政治', '历史', '哲学', '宗教', '环卫工人', '面包', '米饭', '水饺', '面条', '粉丝', '小笼包']listKeep = random.sample(stingList,4)keep = gkeepapi.Keep()
username = 'google@gmail.com'
password = 'password'keep.login(username,password)note = keep.createList('今日事件',[(listKeep[0],False),(listKeep[1],False),(listKeep[2],False),(listKeep[3],False)])label = keep.findLabel('今日事件')note.labels.add(label)keep.sync()

这里可能会抛出错误:gkeepapi.exception.LoginException: ('NeedsBrowser', 'To access your account, you must sign in on the web. Touch Next to start browser sign-in.')

主要是Google账密登录的机制问题,可以去账号设置( https://accounts.google.com/b/0/DisplayUnlockCaptcha )里开启二次验证,然后启用应用密码,将这里的password换掉即可。

window10上跑通,wear os 成功获得内容:


部署上服务器

打开Xshell,装上python3.7+和pip,装上gkeepapi库,运行!

嗯?怎么半天没反应呢?不对啊,然后意识到:靠,腾讯云连不上Google!转而换用来挂梯子的VPS,运行!

结果报错:ValueError: Timeout value connect was Timeout(connect=None, read=None, total=None), but it must be an int, float or None.

貌似是gkeepapi依赖requests库的版本问题,解决方案:

pip uninstall docker-compose, pip uninstall requests
pip install docker, pip install docker-compose

(卸了重装,万事大吉!)

再来!

结果是个匪夷所思的问题了:

gkeepapi.exception.LoginException: ('BadAuthentication', None)

看了github的issues反馈,遇到的人不在少数,有说要更新python版本的,有说因为linux环境的问题,总之稀里糊涂就是过不了登录这一环节。

前后淌了很多坑,最容易解决的办法是根据官方文档的登录缓存,从window上直接生成个token,然后利用token验证即可(反正linux上能用了,能保持几天我还没测试):

获取token,然后打印出来,再反手印在代码里,把login换成resume,启动!完美通过!


定时发送

定时就很简单了,Linux下利用crontab分分钟的事情:

sudo vim /etc/crontab
#在文档中加入
00 0 * * * root python3.8 /home/gkeep.py > home/log/auto.log

这里基本格式为:

* * * * * user command
分 时 日 月 周 用户 命令

00 0 就代表了每天0:00运行一次,因为VPS使用时区为UTC,滞后北京时间8小时,所以实际为每天8:00运行一次。


后记

目前来看使用中问题不大,但是嘛,也没多大的意义,一方面提示词在早上看完后就忘了=-=,另一方面keep在galaxy watch上不能直接以卡片的形式存在,每次都要进入应用后,选择文档再勾选,流程上让我深深怀疑自己,我的预期应该是把最新生成的内容作为卡片直接放在一级栏目里,果然定制化才是永远的神!

打通Google keep,gkeepapi使用记录相关推荐

  1. Google Filament引擎编译记录

    我之前写过两篇Filament编译文档,就在我的网站上,可以到如下地址找到: 捉不住的鼬鼠的训练场 - 文档 现在又在做安卓有关开发和编译的问题,尤其是涉及到C++原生代码编译so文件,然后安卓端引入 ...

  2. android google api - Calendar 使用记录

    背景 最近项目APP需要使用Google Calendar,需求是获取Calendar的日程安排.然后就去查找google api 找了半天,没找到官方demo在哪里,这里进行记录一下,避免采坑. 第 ...

  3. 网站服务器蜘蛛日志怎么看,如何查看百度蜘蛛,google蜘蛛爬取记录?《网站日志分析篇》...

    也许各位常常看到别人在群里聊天,某某人的网站出现什么问题了...别人建议查看网站的日志文件,分析蜘蛛的爬取情况.可是如何去分析日志文件却很少有人去提,接下来我会大概介绍一下,如何去分析网站的日志文件, ...

  4. 2017 Google 开发者大会全记录

    2017 年的 Google 在中国刷了好几个记忆点,从五月乌镇 AlphaGo 与中国顶尖棋手的终极对弈,到欧阳靖为 Google 翻译专门创作了 MV 大片,再到十二月今日的上海,2000 多位开 ...

  5. 【GDD】2018 Google 开发者大会 Day1 记录

    2018 谷歌开发者大会 时间:2018年 9月 20日 - 21日 地点:上海世博中心 报名渠道:Google开发者 微信公众号 费用:免费 复制代码 行程安排 2天行程,12个主题,60次演讲 复 ...

  6. oracle enlisttransaction,WAS运行时抛出的两种异常,经过google找到解决方案,记录以备案...

    在第一次运行范例时,您可能会得到以下错误: WSRdbDataSour I DSRA8203I: Database product name : Oracle WSRdbDataSour I DSRA ...

  7. 工程师到谷歌_我如何在2020年通过Google专业数据工程师考试

    工程师到谷歌 Want to get this certification? Well it is not an easy one. You'll need to do the homework. F ...

  8. Google code 100个开源项目

    1. ZXing http://code.google.com/p/zxing/ 条形码.二维码 2. K-9 Mail http://code.google.com/p/k9mail/ 邮件客户端 ...

  9. 一文看尽Google I/O大会:AI打电话以假乱真,TPU 3.0正式发布

    安妮 李根 发自 山景城  量子位 报道 | 公众号 QbitAI 今天凌晨,Google I/O 2018大会拉开帷幕. 开场一句Make good things together,然后就向全世界展 ...

最新文章

  1. 整理下.net分布式系统架构的思路
  2. python实现将txt文件格式转换为arff格式
  3. Apriltag可用图片:TAG16H5
  4. Linux:hping高级主机扫描
  5. C#关于电脑DPI改动显示的问题
  6. 2020年书法落款_快来排排2020鼠年书法落款时间表,收!
  7. nfc卡模式与标准模式_NFC相关标准
  8. 伺服驱动器--增益调整
  9. AspxGridView 排序分组刷新DetailRow的问题
  10. dataGridView单元格引用
  11. charles介绍及代理设置
  12. VMware Horizon 8安装部署(八)访问测试,成功部署。
  13. C语言实现日历时间转换为秒(mktime)
  14. UOS系统启动盘制作
  15. 中秋节活动征集!!!
  16. linux Nginx服务的安装及使用
  17. android java 面试题及答案_android面试题及答案
  18. PRODUCT_CHARACTERISTICS 详解
  19. 谈一谈曾经的中国互联网吧
  20. Linux学习笔记——系统函数IO

热门文章

  1. Google Play 账号关联问题解决
  2. lazyload.css,图片加载优化及图片lazyload自适应 - 轩枫阁
  3. 基于TensorFlow的Cats vs. Dogs(猫狗大战)实现和详解(1)
  4. Arduino UNO R3 (CH340G)基础篇-引脚
  5. java jama包_Java调用Jama包完成矩阵运算
  6. step协议 java_【转】Step By Step:Java 集合篇
  7. 通过json配置生成form表单,vue3+ts+elementPlus,form表单组件封
  8. 宽带市场开启烧钱模式 民资入场容易留下难
  9. 游戏设计----常见的碰撞检测
  10. 推荐|最有趣的机器学习可视化图集