#!/bin/usr/env python
#-*- coding:utf-8 -*-
'''百度地圖API-高精度IP定位'''
import urllib2,json,threading
from Tkinter import *
code={161:'定位成功',167:'定位失敗',1:'伺服器内部錯誤',101:'AK參數不存在',200:'應用不存在,AK有誤請檢查重試',201:'應用被使用者自己禁止',202:'應用被管理者删除',203:'應用類型錯誤',210:'應用IP校驗失敗',211:'應用SN校驗失敗',220:'應用Refer檢驗失敗',240:'應用服務被禁用',251:'使用者被自己删除',252:'使用者被管理者删除',260:'服務不存在',261:'服務被禁用',301:'永久配額超限,禁止通路',302:'當天配額超限,禁止通路',401:'目前并發超限,限制通路',402:'目前并發和總并發超限',999:'網絡連接配接錯誤---[内網或無網絡連接配接]'}
def GetAddress(ip,ak='oTq3kbSY0uwjt1zm0AepBr7FqYTx4Lcb'):
try:
res=urllib2.urlopen('http://api.map.baidu.com/highacciploc/v1?qcip=%s&qterm=pc&extensions=3&ak=%s&coord=bd09ll' % (ip,ak),timeout=2)
resjson=json.loads(res.read())
res.close()
return resjson
except Exception,e:
return 999
def main():
text.delete(0.0,END)
qip=ip.get()
if qip is None:
pass
else:
connectJson=GetAddress(qip)
if connectJson != 999 and connectJson['result']['error'] == 161:
formatted_address=connectJson['content']['formatted_address']#位址
confidence=connectJson['content']['confidence']#精準度
if connectJson['content'].get('business'):
business=connectJson['content']['business']#商圈
else :
business=u'無'
result=connectJson['result']['loc_time']#定位時間
if connectJson['content'].get('location_description'):
location_description=connectJson['content']['location_description']#精确到
else :
location_description=u'無'
text.insert(END,u'\nIP位址: %s 精準度: %0d%%\n\n'%(qip,float(confidence)*100))
text.insert(END,u'所在位址: '+formatted_address+'\n\n')
text.insert(END,u'所在商圈: '+business+'\n\n')
text.insert(END,u'精确到: '+location_description+'\n\n')
text.insert(END,u'定位時間: ['+result+']')
codevar.set(code.get(connectJson['result']['error']))
elif connectJson==999:
codevar.set(code.get(connectJson))
else:
codevar.set(code.get(connectJson['result']['error']))
def SearchIP():
t=threading.Thread(target=main)
t.start()
if __name__ == '__main__':
root=Tk()
root.title(u'IP精準定位 ')
root.geometry("350x300")
root.resizable(False, False)
ip=StringVar()
codevar=StringVar()
lb=Label(root,text='待查詢的IP位址:')
ent=Entry(root,textvariable=ip,width=20)
btn=Button(root,text=u' 查 詢 ',command=SearchIP)
text=Text(root,width=50,height=18)
lb.grid(row=0,column=0,pady=5)
ent.grid(row=0,column=1,pady=5)
btn.grid(row=0,column=2,pady=5)
text.grid(row=1,columnspan=3)
codelb=Label(root,textvariable=codevar)
codelb.grid(row=2,columnspan=3)
codevar.set(u'準備就緒')
mainloop()