Parcourir la source

Update app.py

蘭雅sRGB il y a 3 ans
Parent
commit
5c9c2bf1a0
1 fichiers modifiés avec 35 ajouts et 7 suppressions
  1. 35 7
      app.py

+ 35 - 7
app.py

@@ -31,11 +31,14 @@ def is_Mozilla():
     else:
         return False
 
+## 百度免费的 IP 普通定位 API 接口 
 def ip2bdgps(ip):
-    url = 'https://api.map.baidu.com/location/ip?ak=iUGOVyqGFo4QOP6QhTuZPF1P6FV5GB7p&coor=bd09ll&ip=' + ip
-    r = requests.get(url)
-    json_str = r.text
-    data = json.loads(json_str)
+    url = 'https://api.map.baidu.com/location/ip?ak=>>>百度AK码<<<&coor=bd09ll&ip=' + ip
+    try:
+        r = requests.get(url)
+        data = r.json()
+    except :
+        return
 
     if data['status'] != 0 :
         return  (116.39564504, 39.92998578 , data['status'])    # 查不到返回 北京 x,y
@@ -44,6 +47,26 @@ def ip2bdgps(ip):
         y = data['content']['point']['y']
     return  (x, y, data['status'], data)
 
+## 免费的高德 IP定位 API 接口 
+def ip2gdgps(ip):
+    url = 'http://iploc.market.alicloudapi.com/v3/ip?ip=' + ip
+    headers = {"Authorization":"APPCODE <<<IP定位APPCODE>>>" ,"Content-Type":"application/json; charset=utf-8" }
+    try:
+        r = requests.get(url=url , headers=headers)
+        data = r.json()
+    except :
+        return
+    # print(data)
+    if data['status'] != '1':
+        return  (116.39564504, 39.92998578 , data['status'])    # 查不到返回 北京 x,y
+    elif data['rectangle']:
+        rectangle = data['rectangle']   # '119.5281601,28.9855063;119.7682178,29.16913797'
+        arry = rectangle.replace(';', ',').split(',')
+        x = (float(arry[0]) +  float(arry[2])) / 2.0
+        y = (float(arry[1]) +  float(arry[3])) / 2.0
+        return  (x, y, data['status'], data)
+    return  (116.39564504, 39.92998578 , data['status'])    # 查不到返回 北京 x,y
+
 @app.route("/")
 def hello():
     ip = getip()
@@ -55,7 +78,14 @@ def hello():
 @app.route("/ip/maps/")
 def maps():
     ip = getip()
-    bdgps = ip2bdgps(ip)
+    # bdgps = ip2bdgps(ip)   #  百度地图 IP 定位 API 比较慢 ,换用 免费 高德定位
+    bdgps = ip2gdgps(ip)
+    return  render_template('maps.html',  bdgps=bdgps)
+
[email protected]("/ip/bdmaps/")
+def bdmaps():
+    ip = getip()
+    bdgps = ip2bdgps(ip)   #  百度地图 IP 定位 API 比较慢
     return  render_template('maps.html',  bdgps=bdgps)
 
 @app.route("/ip/")
@@ -93,5 +123,3 @@ if __name__ == '__main__':
 
 # export FLASK_ENV=development   # 调试模式: 修改代码不用重启服务
 # flask run --host=0.0.0.0       # 监听所有公开的 IP
-
-