183 lines
6.5 KiB
Python
183 lines
6.5 KiB
Python
import json
|
||
|
||
import requests
|
||
from flask import request, Blueprint
|
||
|
||
API_INFO = Blueprint("API_INFO", __name__)
|
||
|
||
|
||
@API_INFO.route('/apis/info/qq', methods=["POST"])
|
||
def api_info_fromQQToAll():
|
||
data = request.get_data().decode("utf-8")
|
||
if data=="":
|
||
data= request.values.to_dict()
|
||
print(type(data), data)
|
||
else:
|
||
data = json.loads(data)
|
||
try:
|
||
qq = data["qq"]
|
||
print("test:",qq)
|
||
except:
|
||
return {"code": -1, "message": "请输入正确的QQ账号", "data": {}}
|
||
if "/" in qq:
|
||
result_all = []
|
||
# 批量获取
|
||
qqlist = qq.split("/")
|
||
for i in qqlist:
|
||
print("===========")
|
||
print("==查询QQ号==", i)
|
||
result = API_FromQQtoALl(i)
|
||
print("==查询结果==:", result)
|
||
if result["code"] != 1:
|
||
qqlist.append(i) # 失败了,就把这个QQ号添加进去,到时候重新执行一次 但是这样容易出现一直请求失败然后导致死循环问题
|
||
else:
|
||
result_all.append(result["data"])
|
||
return {"code": 1, "message": "sucess", "data": result_all}
|
||
return API_FromQQtoALl(qq)
|
||
|
||
# 功能方法 - 取中间文本
|
||
def getCenterContent(s, l, r):
|
||
text = s
|
||
start_text = l
|
||
end_text = r
|
||
|
||
start_index = text.find(start_text)
|
||
end_index = text.find(end_text)
|
||
|
||
if start_index >= 0 and end_index >= 0:
|
||
middle_text = text[start_index + len(start_text):end_index]
|
||
return middle_text
|
||
else:
|
||
return ""
|
||
|
||
|
||
# 未完成的接口 因为这个API获取到的QQ名称是乱码
|
||
def API_FromQQToQQName(QQNumber):
|
||
print(QQNumber)
|
||
response = requests.request("POST", "https://users.qzone.qq.com/fcg-bin/cgi_get_portrait.fcg",
|
||
data={"uins": QQNumber},
|
||
headers={
|
||
# "Accept-Encoding":"",
|
||
"Content-Type": 'application/json; charset=UTF-8'
|
||
})
|
||
print(response.headers["Content-Type"])
|
||
# print(response.content.decode("utf-8").encode('raw_unicode_escape'))
|
||
# print(response.content)
|
||
response = response.text
|
||
print(response)
|
||
# encoding = chardet.detect(response)["encoding"]
|
||
# print(encoding)
|
||
# response = response.decode(encoding)
|
||
|
||
try:
|
||
response = getCenterContent(response, "portraitCallBack(", ")")
|
||
if response == "":
|
||
return ""
|
||
response = json.loads(json.loads(json.dumps(response)))
|
||
info = response[str(QQNumber)]
|
||
name = info[6]
|
||
name = name.encode("utf-8").decode("utf-8")
|
||
print(name)
|
||
return info[0], name
|
||
except Exception as e:
|
||
print(e)
|
||
return {"code": -1, "message": "服务器异常,请重试", "data": {}}
|
||
|
||
# 通过QQ获取电话
|
||
def API_FromQqToTel(QQNumber):
|
||
# 获取手机号
|
||
response = requests.request("POST", "https://zy.xywlapi.cc/qqapi", data={"qq": QQNumber}).content.decode("utf-8")
|
||
try:
|
||
# print(response)
|
||
response = json.loads(json.loads(json.dumps(response)))
|
||
print(response)
|
||
# print(response)
|
||
if response["status"] == 200:
|
||
return {"code": 1, "message": response["message"], "data": {
|
||
"qq": QQNumber,
|
||
"tel": response["phone"],
|
||
"address": response["phonediqu"]
|
||
}}
|
||
elif response["status"] == 500:
|
||
return {"code": 0, "message": response["message"], "data": {}}
|
||
else:
|
||
return {"code": -1, "message": response["message"], "data": {}}
|
||
except Exception as e:
|
||
print('==============Err Info Start==================')
|
||
print(e,'\n',str(e))
|
||
print(response)
|
||
print('==============Err Info End==================')
|
||
return {"code": -1, "message": "服务器异常,请重试", "data": {}}
|
||
|
||
|
||
# 通过电话获取QQ
|
||
def API_FromTelToQQ(TelNumber):
|
||
response = requests.request("POST", "https://zy.xywlapi.cc/qqphone", data={"phone": TelNumber}).content.decode(
|
||
"utf-8")
|
||
try:
|
||
# print(response)
|
||
response = json.loads(json.loads(json.dumps(response)))
|
||
# print(response)
|
||
if response["status"] == 200:
|
||
return {"code": 1, "message": response["message"], "data": {
|
||
"qq": response["qq"],
|
||
"tel": TelNumber,
|
||
"address": response["phonediqu"]
|
||
}}
|
||
elif response["status"] == 500:
|
||
return {"code": 0, "message": response["message"], "data": {}}
|
||
else:
|
||
return {"code": -1, "message": response["message"], "data": {}}
|
||
except:
|
||
return {"code": -1, "message": "服务器异常,请重试", "data": {}}
|
||
|
||
|
||
def API_FromTelToWeiBo(TelNumber):
|
||
response = requests.request("POST", "https://zy.xywlapi.cc/wbphone", data={"phone": TelNumber}).content.decode(
|
||
"utf-8")
|
||
try:
|
||
# print(response)
|
||
response = json.loads(json.loads(json.dumps(response)))
|
||
# print(response)
|
||
if response["status"] == 200:
|
||
return {"code": 1, "message": response["message"], "data": {
|
||
"id": response["id"],
|
||
"tel": TelNumber,
|
||
"address": response["phonediqu"]
|
||
}}
|
||
elif response["status"] == 500:
|
||
return {"code": 0, "message": response["message"], "data": {}}
|
||
else:
|
||
return {"code": -1, "message": response["message"], "data": {}}
|
||
except:
|
||
return {"code": -1, "message": "服务器异常,请重试", "data": {}}
|
||
|
||
# 功能聚合接口,整合上面的接口,实现通过QQ号获取到全部信息
|
||
def API_FromQQtoALl(QQNumber):
|
||
res = API_FromQqToTel(QQNumber)
|
||
qq = QQNumber
|
||
if res["code"] == 1:
|
||
tel = res["data"]["tel"]
|
||
address = res["data"]["address"]
|
||
res2 = API_FromTelToWeiBo(tel)
|
||
if res2["code"] == 1:
|
||
id = res2["data"]["id"]
|
||
else:
|
||
id = "无"
|
||
return {"code": 1, "message": "success", "data": {
|
||
"qq": qq,
|
||
"tel": tel,
|
||
"id": id,
|
||
"address": address
|
||
}}
|
||
elif res["code"] == 0:
|
||
return {"code": 1, "message": "success", "data": {
|
||
"qq": qq,
|
||
"tel": '无',
|
||
"id": '无',
|
||
"address": '无'
|
||
}}
|
||
else:
|
||
return {"code": -1, "message": "服务器异常,请重试。一直失败请联系萌狼蓝天维护(哔哩哔哩/CSDN 私信 萌狼蓝天)",
|
||
"data": {}}
|