有时候女朋友一个人在外面玩耍,问她在哪个地方,就是不告诉我。但是,你又很想知道女朋友的「位置」,这该如何是好?

其实你可以这样套路女朋友,假装自己在家很无聊,可以帮她修图,让她微信发原图给你,拿到「微信原图」后,你就可以利用 Python 快速获取到女友的具体位置了。

准 备 工 作

首先,在虚拟环境中安装识别图片元数据的库。

pip3 install exifread

然后,进入高德开放平台,申请一个 Web 服务的应用,获取到一个 「Key」用于逆地理编码 API。

编 写 脚 本

整个操作分为 3 步骤,分别是获取图片的经度和纬度、对经度和纬度进行数据矫正、调用高德逆地理编码 API 获取具体位置。

第 1 步,获取图片的「经度和纬度」。

使用 exifread 库可以直接读取图片文件,获取到图片的元数据,包含经度、纬度、南北纬方向、东西经方向和拍摄时间。

# 使用 exifread 获取图片的元数据
img_exif = exifread.process_file(open(self.img_path, 'rb'))# 能够读取到属性
if img_exif:# 纬度数latitude_gps = img_exif['GPS GPSLatitude']# N,S 南北纬方向latitude_direction = img_exif['GPS GPSLatitudeRef']# 经度数longitude_gps = img_exif['GPS GPSLongitude']# E,W 东西经方向longitude_direction = img_exif['GPS GPSLongitudeRef']# 拍摄时间take_time = img_exif['EXIF DateTimeOriginal']

如果元数据存在,然后判断拍摄时间是否合理。如果拍摄时间不在今天,那只能很遗憾地通知你,你的女朋友在向你撒谎「撒谎」。

def judge_time_met(self, take_time):"""判断拍摄时间是否是在今天:param take_time::return:"""# 拍摄时间format_time = str(take_time).split(" ")[0].replace(":", "-")# 当天日期today = str(datetime.date.today())if format_time == today:return Trueelse:return Falseif is_lie:print('很遗憾的通知你,你的女朋友在撒谎!!!')return

如果女友没有撒谎,那么可以进行第 2 步的操作。

因为通过 GPS 获取的经度、纬度和高德地图的坐标存在一定的误差,这里需要把坐标转换为「火星坐标系」。

x_pi = 3.14159265358979324 * 3000.0 / 180.0
pi = 3.1415926535897932384626  # π
a = 6378245.0  # 长半轴
ee = 0.00669342162296594323  # 扁率def wgs84togcj02(lng, lat):"""WGS84转GCJ02(火星坐标系):param lng:WGS84坐标系的经度:param lat:WGS84坐标系的纬度:return:"""if out_of_china(lng, lat):  # 判断是否在国内return lng, latdlat = transformlat(lng - 105.0, lat - 35.0)dlng = transformlng(lng - 105.0, lat - 35.0)radlat = lat / 180.0 * pimagic = math.sin(radlat)magic = 1 - ee * magic * magicsqrtmagic = math.sqrt(magic)dlat = (dlat * 180.0) / ((a * (1 - ee)) / (magic * sqrtmagic) * pi)dlng = (dlng * 180.0) / (a / sqrtmagic * math.cos(radlat) * pi)mglat = lat + dlatmglng = lng + dlngreturn [mglng, mglat]

另外需要注意的是,接口中经度、纬度参数只能识别小数点后 6 位,需要对经纬度中的度、分、秒做一定的数据处理,然后再进行四舍五入。

def __format_lati_long_data(self, data):"""对经度和纬度数据做处理,保留6位小数:param data: 原始经度和纬度值:return:"""# 删除左右括号和空格data_list_tmp = str(data).replace('[', '').replace(']', '').split(',')data_list = [data.strip() for data in data_list_tmp]# 替换秒的值data_tmp = data_list[-1].split('/')# 秒的值data_sec = int(data_tmp[0]) / int(data_tmp[1]) / 3600# 替换分的值data_tmp = data_list[-2]# 分的值data_minute = int(data_tmp) / 60# 度的值data_degree = int(data_list[0])# 由于高德API只能识别到小数点后的6位# 需要转换为浮点数,并保留为6位小数result = "%.6f" % (data_degree + data_minute + data_sec)return float(result)

第 3 步,调用高德的反地理编码 API,传入申请的应用 Key,就能拿到女朋友的详细地址。

def __get_address(self, location):"""根据坐标得到详细地址:param location: 经纬度值:return:"""resp = requests.get(self.url_get_position.format(self.api_key, location))location_data = json.loads(resp.text)address = location_data.get('regeocode').get('formatted_address')return address

确保图片是原图的基础上,可以快速帮你判断女朋友是否在撒谎;如果女朋友没有撒谎,就返回女朋友具体的位置。

如果你觉得文章还不错,请大家点赞分享下。你的肯定是我最大的鼓励和支持。

如何用Python找到女朋友!相关推荐

  1. 用python画颗爱心祝生日快乐_新学者如何用python祝女朋友生日快乐?

    谢邀. 其实这是一个蛮好的问题,既能激发自己继续学习的兴趣,又能哄女朋友开心,何乐而不为呢? 作为一名程序员,写一个脚本再简单不过了,难的是如何配上动人的文字和图片,让女朋友开心,所以这种搭配,我称之 ...

  2. 程序员如何用Python了解女朋友的情绪变化?

    作者:云外孤岛 来源:https://www.cnblogs.com/cloudbird/p/ 10534658.html 好不容易有了女朋友,可相处起来总是磕磕碰碰. 有时候,你很想关心她,但是你太 ...

  3. python阴阳师_如何用Python找到阴阳师妖怪屋的最佳探索队伍!强不强?

    程序由来 最初想要写这个小程序是因为,9月份那段时间我在玩妖怪屋. 因为刚开始抽卡,要啥啥没有,所以探索队伍也只是放了几个自己记得有关联的式神. 在网上有找到完整版的羁绊,但是怎么根据羁绊找到最佳的式 ...

  4. 如何用Python找到阴阳师妖怪屋的最佳探索队伍

    阴阳师妖怪屋的最佳探索队伍 程序由来 整体思路 编写过程 完整代码 onmyoji(主程序) kami dictionary function 打包方法 最后结语 2020-10-27 更新 更新命名 ...

  5. 涨姿势|看我如何用 Python 哄女朋友开心

    女朋友特别喜欢小猪佩奇,看到小猪佩奇的玩偶就走不动了,刚好最近研究了下 Python 的 turtle 库,简言之这个库就是用来在电脑作画的,你可以操控一只画笔,包括设置其颜色速度等参数,还可以控制其 ...

  6. 如何用 Python 哄女朋友开心?看了都说好!

    点击上方 "程序员小乐"关注公众号, 星标或置顶一起成长 每天早上8点20分, 第一时间与你相约 每日英文 Sometimes you play a game even when ...

  7. python编程入门 适合于零基础朋友-Python不能帮你找到女朋友,却能让你成为有钱的单身狗。...

    原标题:Python不能帮你找到女朋友,却能让你成为有钱的单身狗. 王者荣耀的团队年终奖是100个月工资.华为的员工房租补贴就有8000块.BAT校招起步价年薪20万--如果你看到这些消息的第一反应就 ...

  8. 如何用python做一个会聊天的女朋友_戏精程序员,用python开发了一个女朋友,天天秀恩爱...

    很多人都知道,程序员大部分都是单身狗,然而,无奈Python实在太强大,居然可以用来开发一个女朋友出来. 其实,这个女朋友类似很多视频中,那些假装自己有女朋友或男朋友的人一样,也是在假装哦,但是程序员 ...

  9. python什么工作好找女朋友_Python不能帮你找到女朋友,却能让你成为有钱的单身狗。...

    原标题:Python不能帮你找到女朋友,却能让你成为有钱的单身狗. 王者荣耀的团队年终奖是100个月工资.华为的员工房租补贴就有8000块.BAT校招起步价年薪20万--如果你看到这些消息的第一反应就 ...

最新文章

  1. 实验四:使用库函数API和C代码中嵌入汇编代码两种方式使用同一个系统调用
  2. hashlib模块,md5加密
  3. rust门卡有什么用_Rust能力养成之(10)用Cargo进行项目管理:扩展 调用与优化
  4. idea的一些常用快捷键
  5. 3D坦克大战游戏源码
  6. 网络基础 2-1(应用层,HTTP三点注意,HTTP协议格式, 最简单的HTTP服务器)
  7. [Cubieboard] Node.js 在 Lubuntu 上安装指南
  8. php一对一模型关联,通过实例学习Laravel模型中的一对一关联关系
  9. java如何实现tcp传输图像_如何在java中实现TCP服务器和TCP客户端传输文件
  10. Struts2拦截器的使用 (详解)
  11. Linux 命令(34)—— vim 命令
  12. Java的switch是否支持String作为参数,还支持哪些类型?
  13. Docker学习之数据管理
  14. 传染病研究-靶向下一代宏基因组测序(mNGS)分析
  15. Padavan挂载SMB共享及编译ffmpeg
  16. API的防篡改和防重放机制
  17. 在macOS上用supervisor构建稳定的SSH转发
  18. PYNQ-Z2零基础学习详解
  19. 推荐系统常用的策略算法—Bandits
  20. 人生三句话:唯自助者天助之

热门文章

  1. 公民身份号码 校验码 检证程序
  2. win7下载python3.7.4_Python for windows 下载
  3. java爬虫学习——第一节 HttpClient使用
  4. ios与安卓的时间兼容问题
  5. 【坤坤、开团、鸡你太美表情包】
  6. 笔记本电脑一开盖就开机?
  7. 什么是RAID?RAID有什么用?RAID原理是什么
  8. 云队友丨王兴的无限游戏:很多人误认为干掉对手,就胜利结束
  9. 极验滑块轨迹生成 3、4通用
  10. 网易云音乐(2)————加载失败的原因