我背著女朋友畦贸,用 Python 偷偷抓取了她的行蹤

image

目 標 場 景

有時候女朋友一個人在外面玩耍陨闹,問她在哪個地方,就是不告訴我薄坏。但是趋厉,你又很想知道女朋友的「位置」,這該如何是好胶坠?

image

其實你可以這樣套路女朋友觅廓,假裝自己在家很無聊,可以幫她修圖涵但,讓她微信發(fā)原圖給你杈绸,拿到「微信原圖」后,你就可以利用 Python 快速獲取到女友的具體位置了矮瘟。

準 備 工 作

首先瞳脓,在虛擬環(huán)境中安裝識別圖片元數(shù)據(jù)的庫。

pip3 install exifread

然后澈侠,進入高德開放平臺劫侧,申請一個 Web 服務的應用,獲取到一個 「Key」用于逆地理編碼 API哨啃。

image

編 寫 腳 本

整個操作分為 3 步驟烧栋,分別是獲取圖片的經(jīng)度和緯度、對經(jīng)度和緯度進行數(shù)據(jù)矯正拳球、調用高德逆地理編碼 API 獲取具體位置审姓。

第 1 步,獲取圖片的「經(jīng)度和緯度」祝峻。

使用 exifread 庫可以直接讀取圖片文件魔吐,獲取到圖片的元數(shù)據(jù)扎筒,包含經(jīng)度、緯度酬姆、南北緯方向嗜桌、東西經(jīng)方向和拍攝時間。

# 使用 exifread 獲取圖片的元數(shù)據(jù)
img_exif = exifread.process_file(open(self.img_path, 'rb'))

# 能夠讀取到屬性
if img_exif:
     # 緯度數(shù)
     latitude_gps = img_exif['GPS GPSLatitude']

     # N,S 南北緯方向
     latitude_direction = img_exif['GPS GPSLatitudeRef']

     # 經(jīng)度數(shù)
     longitude_gps = img_exif['GPS GPSLongitude']

     # E,W 東西經(jīng)方向
     longitude_direction = img_exif['GPS GPSLongitudeRef']

     # 拍攝時間
     take_time = img_exif['EXIF DateTimeOriginal']

如果元數(shù)據(jù)存在辞色,然后判斷拍攝時間是否合理骨宠。如果拍攝時間不在今天,那只能很遺憾地通知你相满,你的女朋友在向你撒謊「撒謊」层亿。

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 False
    else:
        return True

if is_lie:
        print('很遺憾的通知你,你的女朋友在撒謊v椤W厮!')
        return

如果女友沒有撒謊悯辙,那么可以進行第 2 步的操作琳省。

因為通過 GPS 獲取的經(jīng)度、緯度和高德地圖的坐標存在一定的誤差躲撰,這里需要把坐標轉換為「火星坐標系」针贬。

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坐標系的經(jīng)度
    :param lat:WGS84坐標系的緯度
    :return:
    """
    if out_of_china(lng, lat):  # 判斷是否在國內
        return lng, lat
    dlat = transformlat(lng - 105.0, lat - 35.0)
    dlng = transformlng(lng - 105.0, lat - 35.0)
    radlat = lat / 180.0 * pi
    magic = math.sin(radlat)
    magic = 1 - ee * magic * magic
    sqrtmagic = 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 + dlat
    mglng = lng + dlng
    return [mglng, mglat]

另外需要注意的是,接口中經(jīng)度拢蛋、緯度參數(shù)只能識別小數(shù)點后 6 位桦他,需要對經(jīng)緯度中的度、分谆棱、秒做一定的數(shù)據(jù)處理快压,然后再進行四舍五入。

def __format_lati_long_data(self, data):
    """
    對經(jīng)度和緯度數(shù)據(jù)做處理垃瞧,保留6位小數(shù)
    :param data: 原始經(jīng)度和緯度值
    :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只能識別到小數(shù)點后的6位
    # 需要轉換為浮點數(shù)蔫劣,并保留為6位小數(shù)
    result = "%.6f" % (data_degree + data_minute + data_sec)
    return float(result)

第 3 步,調用高德的反地理編碼 API个从,傳入申請的應用 Key脉幢,就能拿到女朋友的詳細地址。

def __get_address(self, location):
    """
    根據(jù)坐標得到詳細地址
    :param location: 經(jīng)緯度值
    :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

結 果 結 論

確保圖片是原圖的基礎上嗦锐,可以快速幫你判斷女朋友是否在撒謊嫌松;如果女朋友沒有撒謊,就返回女朋友具體的位置奕污。

本文首發(fā)于公眾號「 AirPython 」萎羔,關注公眾號后,回復「 圖片定位 」即可獲得菊值。

如果你覺得文章還不錯外驱,請大家點贊分享下育灸。你的肯定是我最大的鼓勵和支持腻窒。

推薦閱讀:

自動化篇 - 為閑魚制作一個客服機器人(上)

抖音上好看的小姐姐昵宇,Python給你都下載了

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市儿子,隨后出現(xiàn)的幾起案子瓦哎,更是在濱河造成了極大的恐慌,老刑警劉巖柔逼,帶你破解...
    沈念sama閱讀 216,496評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蒋譬,死亡現(xiàn)場離奇詭異,居然都是意外死亡愉适,警方通過查閱死者的電腦和手機犯助,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,407評論 3 392
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來维咸,“玉大人剂买,你說我怎么就攤上這事“┍停” “怎么了瞬哼?”我有些...
    開封第一講書人閱讀 162,632評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長租副。 經(jīng)常有香客問我坐慰,道長,這世上最難降的妖魔是什么用僧? 我笑而不...
    開封第一講書人閱讀 58,180評論 1 292
  • 正文 為了忘掉前任结胀,我火速辦了婚禮,結果婚禮上责循,老公的妹妹穿的比我還像新娘糟港。我一直安慰自己,他們只是感情好沼死,可當我...
    茶點故事閱讀 67,198評論 6 388
  • 文/花漫 我一把揭開白布着逐。 她就那樣靜靜地躺著,像睡著了一般意蛀。 火紅的嫁衣襯著肌膚如雪耸别。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,165評論 1 299
  • 那天县钥,我揣著相機與錄音秀姐,去河邊找鬼。 笑死若贮,一個胖子當著我的面吹牛省有,可吹牛的內容都是我干的痒留。 我是一名探鬼主播,決...
    沈念sama閱讀 40,052評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼蠢沿,長吁一口氣:“原來是場噩夢啊……” “哼伸头!你這毒婦竟也來了?” 一聲冷哼從身側響起舷蟀,我...
    開封第一講書人閱讀 38,910評論 0 274
  • 序言:老撾萬榮一對情侶失蹤恤磷,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后野宜,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體扫步,經(jīng)...
    沈念sama閱讀 45,324評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,542評論 2 332
  • 正文 我和宋清朗相戀三年匈子,在試婚紗的時候發(fā)現(xiàn)自己被綠了河胎。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,711評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡虎敦,死狀恐怖游岳,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情原茅,我是刑警寧澤吭历,帶...
    沈念sama閱讀 35,424評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站擂橘,受9級特大地震影響晌区,放射性物質發(fā)生泄漏。R本人自食惡果不足惜通贞,卻給世界環(huán)境...
    茶點故事閱讀 41,017評論 3 326
  • 文/蒙蒙 一朗若、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧昌罩,春花似錦哭懈、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,668評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至轨功,卻和暖如春旭斥,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背古涧。 一陣腳步聲響...
    開封第一講書人閱讀 32,823評論 1 269
  • 我被黑心中介騙來泰國打工垂券, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人羡滑。 一個月前我還...
    沈念sama閱讀 47,722評論 2 368
  • 正文 我出身青樓菇爪,卻偏偏與公主長得像算芯,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子凳宙,可洞房花燭夜當晚...
    茶點故事閱讀 44,611評論 2 353

推薦閱讀更多精彩內容