如何用Python找到女朋友!
有时候女朋友一个人在外面玩耍,问她在哪个地方,就是不告诉我。但是,你又很想知道女朋友的「位置」,这该如何是好?
其实你可以这样套路女朋友,假装自己在家很无聊,可以帮她修图,让她微信发原图给你,拿到「微信原图」后,你就可以利用 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找到女朋友!相关推荐
- 用python画颗爱心祝生日快乐_新学者如何用python祝女朋友生日快乐?
谢邀. 其实这是一个蛮好的问题,既能激发自己继续学习的兴趣,又能哄女朋友开心,何乐而不为呢? 作为一名程序员,写一个脚本再简单不过了,难的是如何配上动人的文字和图片,让女朋友开心,所以这种搭配,我称之 ...
- 程序员如何用Python了解女朋友的情绪变化?
作者:云外孤岛 来源:https://www.cnblogs.com/cloudbird/p/ 10534658.html 好不容易有了女朋友,可相处起来总是磕磕碰碰. 有时候,你很想关心她,但是你太 ...
- python阴阳师_如何用Python找到阴阳师妖怪屋的最佳探索队伍!强不强?
程序由来 最初想要写这个小程序是因为,9月份那段时间我在玩妖怪屋. 因为刚开始抽卡,要啥啥没有,所以探索队伍也只是放了几个自己记得有关联的式神. 在网上有找到完整版的羁绊,但是怎么根据羁绊找到最佳的式 ...
- 如何用Python找到阴阳师妖怪屋的最佳探索队伍
阴阳师妖怪屋的最佳探索队伍 程序由来 整体思路 编写过程 完整代码 onmyoji(主程序) kami dictionary function 打包方法 最后结语 2020-10-27 更新 更新命名 ...
- 涨姿势|看我如何用 Python 哄女朋友开心
女朋友特别喜欢小猪佩奇,看到小猪佩奇的玩偶就走不动了,刚好最近研究了下 Python 的 turtle 库,简言之这个库就是用来在电脑作画的,你可以操控一只画笔,包括设置其颜色速度等参数,还可以控制其 ...
- 如何用 Python 哄女朋友开心?看了都说好!
点击上方 "程序员小乐"关注公众号, 星标或置顶一起成长 每天早上8点20分, 第一时间与你相约 每日英文 Sometimes you play a game even when ...
- python编程入门 适合于零基础朋友-Python不能帮你找到女朋友,却能让你成为有钱的单身狗。...
原标题:Python不能帮你找到女朋友,却能让你成为有钱的单身狗. 王者荣耀的团队年终奖是100个月工资.华为的员工房租补贴就有8000块.BAT校招起步价年薪20万--如果你看到这些消息的第一反应就 ...
- 如何用python做一个会聊天的女朋友_戏精程序员,用python开发了一个女朋友,天天秀恩爱...
很多人都知道,程序员大部分都是单身狗,然而,无奈Python实在太强大,居然可以用来开发一个女朋友出来. 其实,这个女朋友类似很多视频中,那些假装自己有女朋友或男朋友的人一样,也是在假装哦,但是程序员 ...
- python什么工作好找女朋友_Python不能帮你找到女朋友,却能让你成为有钱的单身狗。...
原标题:Python不能帮你找到女朋友,却能让你成为有钱的单身狗. 王者荣耀的团队年终奖是100个月工资.华为的员工房租补贴就有8000块.BAT校招起步价年薪20万--如果你看到这些消息的第一反应就 ...
最新文章
- 实验四:使用库函数API和C代码中嵌入汇编代码两种方式使用同一个系统调用
- hashlib模块,md5加密
- rust门卡有什么用_Rust能力养成之(10)用Cargo进行项目管理:扩展 调用与优化
- idea的一些常用快捷键
- 3D坦克大战游戏源码
- 网络基础 2-1(应用层,HTTP三点注意,HTTP协议格式, 最简单的HTTP服务器)
- [Cubieboard] Node.js 在 Lubuntu 上安装指南
- php一对一模型关联,通过实例学习Laravel模型中的一对一关联关系
- java如何实现tcp传输图像_如何在java中实现TCP服务器和TCP客户端传输文件
- Struts2拦截器的使用 (详解)
- Linux 命令(34)—— vim 命令
- Java的switch是否支持String作为参数,还支持哪些类型?
- Docker学习之数据管理
- 传染病研究-靶向下一代宏基因组测序(mNGS)分析
- Padavan挂载SMB共享及编译ffmpeg
- API的防篡改和防重放机制
- 在macOS上用supervisor构建稳定的SSH转发
- PYNQ-Z2零基础学习详解
- 推荐系统常用的策略算法—Bandits
- 人生三句话:唯自助者天助之