from urllib
import parse
,request
import requests
,re
,execjs
,json
,time
class Tencent():
def __init__(self
):
self
.api_url
= 'https://fanyi.qq.com/api/translate'
self
.headers
= {
'Cookie': 'fy_guid=605ead81-f210-47eb-bd80-ac6ae5e7a2d8; '
'qtv=ed286a053ae88763; '
'qtk=wfMmjh3k/7Sr2xVNg/LtITgPRlnvGWBzP9a4FN0dn9PE7L5jDYiYJnW03MJLRUGHEFNCRhTfrp/V+wUj0dun1KkKNUUmS86A/wGVf6ydzhwboelTOs0hfHuF0ndtSoX+N3486tUMlm62VU4i856mqw==; ',
'Host': 'fanyi.qq.com',
'Origin': 'https://fanyi.qq.com',
'Referer': 'https://fanyi.qq.com/',
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, '
'like Gecko) Chrome/73.0.3683.86 Safari/537.36', }
self
.fromlang
= 'auto'
self
.text
=''
self
.tolang
= 'en'
self
.sessionUuid
= str(int(time
.time
() * 1000))
self
.fy_guid
, self
.qtv
, self
.qtk
= self
.get_qtv_qtk
()
self
.headers
['Cookie'] = self
.headers
['Cookie'].replace
(
'605ead81-f210-47eb-bd80-ac6ae5e7a2d8', self
.fy_guid
)
self
.headers
['Cookie'] = self
.headers
['Cookie'].replace
(
'ed286a053ae88763', self
.qtv
)
self
.headers
['Cookie'] = self
.headers
['Cookie'].replace
(
'wfMmjh3k/7Sr2xVNg/LtITgPRlnvGWBzP9a4FN0dn9PE7L5jDYiYJnW03MJLRUGHEFNCRhTfrp/V+wUj0dun1KkKNUUmS86A/wGVf6ydzhwboelTOs0hfHuF0ndtSoX+N3486tUMlm62VU4i856mqw==',
self
.qtk
)
def get_filter(self
,text
):
if isinstance(text
, list):
text
= ''.join
(text
)
text
= str(text
)
text
= text
.strip
()
filter_list
= [
'\r', '\n', '', '\u3000', '\xa0', '\u2002',
'<br>', '<br/>', ' ', ' ', ' ', '>>', '"',
'展开全部', ' '
]
for fl
in filter_list
:
text
= text
.replace
(fl
, '')
return text
def get_qtv_qtk(self
):
api_url
= 'https://fanyi.qq.com/'
headers
= {
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, '
'like Gecko) Chrome/73.0.3683.86 Safari/537.36', }
res
= requests
.get
(api_url
, headers
=headers
)
data
= res
.text
fy_guid
= res
.cookies
.get
('fy_guid')
reg
= re
.compile(r
'var qtv = "(.*?)"')
qtv
= reg
.search
(data
).group
(1)
reg
= re
.compile(r
'var qtk = "(.*?)"')
qtk
= reg
.search
(data
).group
(1)
return fy_guid
, qtv
, qtk
def getHtml(self
,url
,headers
,data
):
try:
html
= requests
.post
(url
=url
,data
= data
,headers
=headers
)
datas
= html
.json
()['translate']['records']
if html
!=None and datas
!= None :
trans_result
= ''.join
([data
['targetText'] for data
in datas
])
return trans_result
except Exception
:
return None
def translate(self
,text
):
data
= {
'source': self
.fromlang
,
'target': self
.tolang
,
'sourceText': text
,
'qtv': self
.qtv
,
'qtk': self
.qtk
,
'sessionUuid': self
.sessionUuid
, }
try:
result
= self
.getHtml
(self
.api_url
,self
.headers
,data
)
return result
except:
return '程序出现了一点小问题,无法翻译'
class English():
def __init__(self
):
self
.search
()
def search(self
):
baseurl
= "https://fanyi.baidu.com/sug"
while True:
flag
= 0
print("请输入:")
content
= input()
if content
== '':
break
for char
in content
:
if(re
.search
(r
"\W",char
)):
result
= Tencent
().translate
(content
)
flag
= 1
break
elif(len(content
)>3):
result
= Tencent
().translate
(content
)
flag
= 1
break
if(flag
==0):
datas
= {
'kw': content
}
data
= parse
.urlencode
(datas
).encode
()
headers
= {
'Content-Length': len(data
),
}
req
= request
.Request
(url
=baseurl
, data
=data
, headers
=headers
)
res
= request
.urlopen
(req
)
json_data
= res
.read
()
json_data
= json_data
.decode
()
json_data
= json
.loads
(json_data
)
data_list
= json_data
.get
('data')
if(data_list
):
item
= data_list
[0]
result
= item
['k']+' --- '+item
['v']
else:
result
= Tencent
().translate
(content
)
print('查询结果:')
print(result
)
output
= ''
for char
in result
:
if(u
'\u4e00' <= char
and char
<= u
'\u9fff'):
output
= output
+ '**'
else:
output
= output
+ '*'
print(output
)
if __name__
== '__main__':
English
()
转载请注明原文地址:https://tech.qufami.com/read-11167.html