惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

D
DataBreaches.Net
IT之家
IT之家
博客园_首页
博客园 - 【当耐特】
V
V2EX
Apple Machine Learning Research
Apple Machine Learning Research
G
Google Developers Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
Recent Announcements
Recent Announcements
F
Fortinet All Blogs
GbyAI
GbyAI
腾讯CDC
H
Hackread – Cybersecurity News, Data Breaches, AI and More
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
I
InfoQ
H
Help Net Security
T
Tailwind CSS Blog
B
Blog RSS Feed
Martin Fowler
Martin Fowler
人人都是产品经理
人人都是产品经理
The Cloudflare Blog
博客园 - 叶小钗
雷峰网
雷峰网
量子位

少数派

派早报:Google 发布 Fitbit Air 等 - 少数派 「新人报到」確認需求,再開始 - 少数派 从 SOLO 独立开发者社区,我看到了越来越多开发者开始做自己的产品 - 少数派 我怎么管理那些"不常做,但总会忘"的生活事项 - 少数派 人形机器人量产元年,数据才是具身智能的“生死线” - 少数派 BuhoLaunchpad 高度还原 Mac 启动台:开发历程与思考 - 少数派 五年陪伴依然不舍,DIY 换壳后让罗技 MX Master 3 继续服役 - 少数派 新玩意 240|少数派的编辑们最近买了啥? - 少数派 一日一技|为什么你应该关闭 iOS 的键盘声音 - 少数派 我做了个插件和 Skills,一键提取任何网站的设计规范 Design.md - 少数派 住在三四线城市的你,该开始录播客了 - 少数派 甘南秘境,大白高国 - 少数派 AI的审美:谁让把我变成川内倫子 - 少数派 返工怎能不烦恼,打工人片单总有一部是你的「嘴替」 - 少数派 为了让「上厕所」更健康,我做了一个小工具 - 少数派 AI + Skill,能够让生成的文章去除 AI 味吗? - 少数派 新玩意|韶音OpenDots ONE 耳夹式耳机 - 少数派 《美满》| 在每一个春天的晚上相爱(362) - 少数派 新玩意|优篮子 PS01 MagSnap 磁吸支架 - 少数派 自我整合手记 | 我开始早睡了:用稳定规则,为自由托底 - 少数派 用龙虾(OpenClaw)两个多月,我最深的12个体会 - 少数派 听歌时间到,12 张你可能错过的 2025 华语乐坛好专辑 - 少数派 承诺能追吗 - 少数派 macOS 26启动台没了? 我做了个不一样的App启动器 - Keboard - 少数派 《四海为家的人》| INTJ对话INTJ(361) - 少数派 你发过的那些黑历史,是时候一次清干净了 - 少数派 新玩意:安安静静玩,越玩越专注:计客密码机 - 少数派 iPad 用户首次体验 Android 平板:vivo Pad6 Pro - 少数派 数据逻辑强 - 少数派 极北行+ | 一路向北,探访日本至北之地 | 001 - 少数派
Workflow分享:显示附近的免费WiFi - 少数派
2016-11-30 · via 少数派

得益于Workflow自1.5.3版本起更新的Get Content of URL动作,该app的潜力得到了极大的提升。本文分享一种有趣的用法,搜寻附近的免费WiFi并择一显示在系统地图上。

简介

本Workflow主要分三部分:

  1. 获取当前地理位置;
  2. 通过网络资源获取附近的免费WiFi资源;
  3. 将所选WiFi显示在系统地图上

大体的步骤很少,所以是非常简单的。下面将逐步介绍。

下载链接:免费WiFi探测器,从通知中心运行。

1. 获取当前地理位置

这个直接利用Workflow自带的Get Current Location动作就可以获取。

由此获得的地理信息包含经纬度,分别使用Get Details of Locations提取即可。经纬度信息将用在步骤二中。

这里就直接使用聚合数据的“全国WiFi”API了,地址:https://www.juhe.cn/docs/api/id/18

IMG_3716.png

只需要注册个账号就可以申请API key,没有使用限制。

请求方式为Get/Post,总共有6个输入参数:

  1. lon:经度,使用上一步获取的经度;
  2. lat:纬度,使用上一步获取的纬度;
  3. gtype:所传递经纬类型 1:百度 2:谷歌 3:gps,填gps;
  4. r:搜索范围,单位M,填1000即可,太远懒得跑;
  5. key:应用APPKEY,申请后可以获得,或者直接使用我的;
  6. dtype:返回数据的格式,不用填。

IMG_3717.png

如上填写就可以获取到返回的json数据了,参照API文档页面的介绍逐层提取数据即可。

每个WiFi的数据形式如下:

{
        "name":"瑞尔威饭店",
        "intro":"中F1旅馆门厅;中F2办公区;中F3-F7奇数层走廊;中F4,F6走廊;东F2餐厅,办公;东F3-F7奇数层走廊;东F4,F6走廊;西F3-F7走廊;西F1快餐厅;西B1公共区域",
        "address":"北京市丰台区北京市丰台区莲花池东路116-2号",
        "google_lat":"39.896877",
        "google_lon":"116.325342",
        "baidu_lat":"39.9026269139",
        "baidu_lon":"116.33193121541",
        "province":"北京市",
        "city":"北京市",
        "distance":2959
        },

注意

唯一关键的地方是,如果附近有多个WiFi,则服务器会返回多组数据,这时必须要将它们排成列表供使用者选择。而未经处理的Dictionary数据在Choose from List动作中的显示统一是“Dictionary",不利于使用者查看。这里介绍两种解决方式:

使用Set Name动作

在使用Repeat with Each动作对WiFi位置信息进行逐个处理时,首先提取用于显示的信息,如WiFi名称、距离,再使用Set Name对每个Dictionary数据命名:

IMG_3718.png

这样在接下来的Choose from List动作中所有Dictionary都将显示自己独特的名字,而不是一个个干巴巴的"Dictionary"。在使用者做出选择后,就可以安排其它的Get Dictionary Value动作来进一步获取数据了。

该方式唯一的缺点就是在只有一个Dictionary数据时,由于Workflow开发者更新了Choose from List动作,此时会显示Dictionary中的键与键值,所以需要安排额外的动作对此进行处理。

使用Text动作

IMG_3719.png

该方式在Repeat with Each动作结束后,会产生一个文本List,随后的Choose from List动作将列出每个文本的首行。在使用者做出选择后,需要通过Match Text动作使用正则表达式对经纬度数据进行匹配,语法如下:

(?<=lat:).*?(?=\n)
(?<=lon:).*$

优点是避免了Set Name方案的问题,缺点是每一次循环都需要将经度纬度提取出来,当数据有成百上千个时会多浪费点时间。

3. 在系统地图显示WiFi位置

查询苹果地图相关的文档后,可以知道该URL为:

http://maps.apple.com/?ll=纬度,经度&q=名称

将从步骤二中获取的数据填入并访问即可。

使用

大致使用步骤如下:

  1. 通知中心访问:
    IMG_3720.png
  2. 苹果地图显示位置:
    IMG_3721.png

只有两步操作,所以还是很快捷的。虽然距离的显示有点问题,但还在我可以接受的范围内。不过聚合数据的WiFi数量不算特别多,不知是否会进一步更新数据库。