做者本人吊丝码农,坐标苏州,一把年纪了上下班还要挤公交,每次出门以前,都习惯性的查询一下目前公交距离本身还有多少站路,以肯定走路的步伐快慢[捂脸哭]。php
在苏州的朋友可能会知道,查询各路公交有个专门的微信公众号,因此天天出门时要查公交的时候,还得git
1.先打开微信;
2.找到公众号;
3.点击公众号第二个tab“公交查询”呼出菜单;
4.再点开“公交实时查询”的菜单按钮,才能打开查询的网页;
5.输入要查询的公交线路;
6.点击搜索出的结果;
复制代码
经历这繁琐的6步,才能查询到运行状况。Emmmm到这里是否是以为天天出门第一句,先说一声xxx。 github
其实说白了,咱们要解决的问题,或者说需求就是用最简单的步骤,获知最近一班你想要乘坐的公交,距离本身还有多少站路?编程
通过前几步复杂的步骤,无非就是打开了一个专门的网页,查询相应的接口。打开强大的Charles,设置手机代理抓包,抓到以下几个接口:json
1.网页地址 苏州公交110南线示例 请求方式:GET app.2500.tv/bus/lineInf… 一个get请求后面接了俩参数,可是只能在微信内嵌浏览器内打开(多是为了获取用户openId,用于统计)。api
2.查询接口 app.2500.tv/bus/api_lin… 请求方式:POST 入参数:lineID 返回:浏览器
{
"status":1,
"data":[
{
"BusInfo":"",
"Code":"ADU",
"ID":10003883,
"InTime":"",
"OutTime":"",
"StationCName":"星塘公交中心"
},]
}
复制代码
其实有了第二个接口,就能作不少事情了。bash
咱们已经能有办法获取到数据了,可是咱们想要在手机上处理数据,就必须得有一个容器来获取数据,再处理数据。这个时候就轮到主角JSBox登场了。微信
JSBox 是由知名的 PIN (iOS 剪贴板加强工具) 的做者@StackOverflowError推出的一款可以让你在 iOS 上编写与运行 JavaScript 脚本的工具。 这个app是收费的,貌似还不便宜,没记错的话是50软妹币。不过本人恰好某次转发微博抽奖抽到一个兑换码😜😜😜😜 点击这里了解更多关于JSBox 我的推荐使用VSCode来编辑脚本,毕竟在手机上码代码太难受了,并且JSBox还提供了VSCode插件,可以在线编辑调试,很是方便。数据结构
利用JSBox封装好的$http,去调接口,而后再对返回的json,作下一步的处理(遍历,循环,判断,计算),计算出当前最近的通常公交,距离你有几站路。
有人也许会说,iOS的捷径app,也能实现。确实不能否认,本人只对捷径研究了一两个小时,里面也有高级的api,来调接口。可是不用捷径直接处理的缘由以下:
UI展现,直接利用了JSBox提供的控件label 和 list。 将第2.2中处理好的数据展现出来,展现出:
1.还剩余多少站路
2.还剩余那些站。
直接照着文档一步一步敲,并且Masonry似的布局方式对iOS开发者很友好,就能够轻轻松松搭UI界面。
直接运行脚本,来看效果:
废话不说上图
经过Siri,也能实现一键查询。不过经过Siri实现的方式有两种。
在JSBox App里,添加方式有以下两种: 脚本设置页面 -> 添加为 -> 添加为 Siri 系统设置页面 -> Siri 与搜索 -> 在捷径中找到相应的脚本 效果图:
固然须要你先建立一个捷径,而且你要在捷径里,添加一个JSBox提供的组件。而后再设置Siri指令。
首先,你仍是要先建立一个捷径App,导入JSBox提供的组件。而后再设置“添加到主屏幕”
整个脚本,我都是把线路参数,公交站参数等等直接写在脚本里的,直接作成二维码分享出去意义不大,毕竟每一个人的查询需求是不一样的。有须要的,能够下载脚本,根据公众号的网页抓包,获得你想要的线路和站台参数,修改完后再执行。 附上Demo,走过路过的朋友不妨能够star或者fork一下。
万变不离其宗,对于非苏州的朋友,能够各自查找所在城市相关的微信微博网站等等,找到相应的查询接口,JSON数据结构修改一下,就能够了。
本人先后花了不到一天的时间,从0开始学习JSBox和捷径,直至作出最终效果。能够说上手难度仍是很低的。整个过程也学习了不少,感觉到了JSBox这个app很强大,值得深刻研究。 完结,鼓掌散花!👏👏🌹🌹