我的Python之旅

前言

工作原因,近两年没写文章了,这里我分享几个我最近学习python的时候写的工具

Python之旅

最近两年工作上,我真的是很忙,上一次更新文章还是2018-01-08写的年终总结。这接近两年的时间,我一直在忙于公司的项目,关于996我就不在这里吐槽了,了解这个行业的都应该知道这是常事,这个要吐槽能吐槽到地老天荒,而我倒是挺怀念刚毕业参加工作前两年,每天按时上班下班,周末双休,这也能解释为什么最初我毕业的前两年文章产量那么高,现在真是的想写也没时间写了,心有余而力不足。

其实在工作上,我最近这两年,才是我真正的成长期,从一个项目的开始参与,技术上也是从各方各面都对服务器相关内容有了更深入的了解。我其实是挺喜欢研究一些好玩的 东西,正好这两年,Python特别火,于是我也开始入坑Python,可能是职业的原因,我是一个特别致力于用把重复的工作用一个轮子来解决的人,在工作中,我会做各种工具来简化我的日常重复的操作,生活中,我也开始喜欢用Python来解决我的一些问题,不过目前为止还用的不多,主要是Python功力还不太够,目前做过以下几件事:

1. 婚礼请柬统计脚本

结合当时我自己做的微信端的请柬,用来发请柬给朋友们(当然了,装X成分比较大),然后用Python定时去统计有多少人点了愿意来。

婚礼请柬前端:https://github.com/hjcenry/wedding-invitation-client

婚礼请柬后端:https://github.com/hjcenry/wedding-invitation-server

婚礼请柬统计脚本: https://github.com/hjcenry/wedding-invitation-analysis

后续:因为大部分请的都是父母的朋友以及亲戚,所以做的这玩意儿,实际用处并不大。失败。

2.进京证状态提醒推送

因为本人是在北京北漂,然后买了个车,上了家乡的牌照,所以每周都需要申请进京证,于是就出现了好几次都忘记申请的情况,本着简化生活中一切繁琐事情的原则,我开始了用Python写一个进京证查询的脚本,并且能根据查询结果给我推送邮件或者微信,为什么不直接就用脚本给我申请了呢,一是懒,写查询是最简单的,二是安全,我想进京证系统怎么着也会有申请的验证吧,再者万一我的数据传错了,申请成了两天,或者照片传错,那就是申请不过,或者等进京证到期了再重新申请。

这个东西一开始写出来以后,最开始还挺好用的,我部署在我家里24小时开机的树莓派上(这个强大的东西已经完全被我拿来当一个小型Linux服务器使用了)。一开始都还挺好的,我有时候忘了,它只要查询到没有申请通过会一直微信提醒我。直到2019年11月1日,北京开始实行新的外地车管理政策,每个外地车一年只能申请12次进京证,每次最多7天,这都不是最关键的,最关键的是,我发现我的进京证申请脚本不管用了,原来进京证申请的接口变了,访问原来的接口只能返回403了。我只能重新对接口进行抓包分析,然而不幸的是,北京交警APP似乎做了什么,我一旦打开抓包软件的VPN,请求页面就返回服务器400,然而我正常使用,就能返回数据,不知道APP是做了什么校验,总之我原来的查询脚本就这么废了。失败

进京证状态查询:https://github.com/hjcenry/enterBjNotify

3.消息推送服务

这个东西算是从进京证状态查询中提炼出来的一个通用的脚本了,算是目前为止我应用Python最成功的的例子了,我把它部署在树莓派上,我可以直接通过命令调用python脚本,然后就能给任何我想要通知的人发消息,目前已经支持发送邮件和微信,微信接入了Server酱和WxPusher两个渠道。

消息推送服务:https://github.com/hjcenry/sender

一年一度双十一

现在是2019年11月10日,19点47分,还有4个小时13分钟,就是一年一度的双十一了,按照以往习惯,都是大家买买买的季节,其实在2011年以前,双十一最多只能算个光棍节,其实也是个新时代的概念,但在2011年淘宝第一次搞双十一开始,每年的双十一就成了大家一年一期待的狂欢购物街。

按照以往来说,双十一对我基本没有什么用,因为我是一个属于冲动型消费者,就是平时没什么兴趣就什么都不关注,一旦突然特别想要买某一个东西,我可能就会疯狂查询相关信息,然后立马入手。所以对我来说,根本不存在什么双十一,只要我乐意,每天都可以是双十一,除了三年前在双十一买了一个ikbc的青轴机械键盘以外,从来没买过东西。

那么今年不一样了,不知道什么原因,去年开始,我喜欢上了拍照拍视频,手中拥有一个三年前买的Sony A7一代相机,加一个28-70的套头,一直到现在都用的这个相机,老实说,这款相机加套头的素质还是不错的。然而今年我想追求最新的相机以及更好的镜头——Sony A7M3+蔡索55 1.8+Sony 85 1.8,这一套下来大概在两万多,朝思暮想了好久好久,年初就计划好了今年一定要购置一套更好的设备,不过同时今年也计划了要换最新款苹果手机,替换掉我四年前的iPhone 6s plus,所以其实来说,预算还挺紧张。

用Python查询电商网站价格并通知

这个为什么单独提出来一个大标题呢,因为这个确实是我目前为止最有用的一个Python应用,它的作用是能根据我提供的一个或多个商品id去查询我想要知道商品的价格,然后把各大电商网站的价格进行比对,记录一些重要信息,包括如下:
1.单个商品在某个平台的最低价格
2.单个商品在某个平台的当前价格
3.所有商品的最低价以及对应的平台

这里回应文章开头了,我说过今年双十一我更新我的摄影器材,根据以上信息,我就可以知道我想买的东西当前最低价格是多少,以及在哪个平台买最便宜。

我把脚本部署在树莓派上,并且每一个小时运行一次,查询一次价格(查询太频繁担心被封禁),然后每次查询如果出现了最低价,就调用上面提到的通用消息通知脚本给我发送微信通知,脚本在一周前就完成了,于是在一周的时间内,我不断收到价格变动的通知。这里我就想说了,京东是真的坑,它的价格是最飘忽不定的,今天降一两千,明后天就几百几百的涨上去了,不知道一会12点价格还会不会降下来。

查询电商网站价格:https://github.com/hjcenry/shopDetailNotice

后话

这里我只是分享下我自己对于python的学习已经应用,其实python这个脚本语言还可以做更多的事。我是一个Java后端开发,但在我眼里,python真的是一个易于上手,开发快捷的脚本语言,如果我要快速的写一个工具,我的第一选择一定是python而不是java,因为它写起来真的很快。不过苦于没有python基础,我写python代码都写的还不够python,都还带着java的代码风格,后续我一定会更加融入python的世界,让我的python代码看起来更加python。

本文就不详细解释代码了,通过贴上的github地址可以看到源代码,欢迎一起交流,有什么python学习的交流群也欢迎拉我入群啊,微信hjcenry,哈哈哈