import
random
import
requests
import
time
import
re
import
os
def
get_proxy():
return
requests.get(
"http://127.0.0.1:5010/get/"
).json()
def
delete_proxy(proxy):
requests.get(
"http://127.0.0.1:5010/delete/?proxy={}"
.
format
(proxy))
def
getHtml(s, url, headers, data):
while
True
:
retry_count
=
2
proxy
=
get_proxy().get(
"proxy"
)
while
retry_count >
0
:
try
:
html
=
s.post(url, headers
=
headers,data
=
data , proxies
=
{
"http"
:
"http://{}"
.
format
(proxy)}, timeout
=
1
)
return
html.json()
except
Exception:
retry_count
-
=
1
print
(
'代{过}{滤}理不通, 剩余机会:'
+
str
(retry_count))
delete_proxy(proxy)
print
(
'删除代{过}{滤}理'
+
proxy)
return
None
s
=
requests.Session()
m
=
hashlib.md5()
class
Dict
:
def
__init__(
self
):
self
.headers
=
{
'User-Agent'
:
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36'
,
'Referer'
:
'http://fanyi.youdao.com/'
,
'contentType'
:
'application/x-www-form-urlencoded; charset=UTF-8'
,
'Cookie'
:
'OUTFOX_SEARCH_USER_ID=-352392290@116.136.20.84; P_INFO=a121bc; OUTFOX_SEARCH_USER_ID_NCOO=710017829.1902944; JSESSIONID=aaaDa3sqezCDY-snjj91w; SESSION_FROM_COOKIE=unknown; ___rl__test__cookies='
+
str
(
int
(time.time()
*
1000
))
}
self
.url
=
'http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule&sessionFrom='
self
.base_config()
def
base_config(
self
):
s.get(
'http://fanyi.youdao.com/'
)
def
translate(
self
,e):
i
=
e
self
.headers[
'Content-Length'
]
=
str
(
233
+
len
(e))
ts
=
str
(
int
(time.time()
*
1000
))
salf
=
ts
+
str
(random.randint(
0
,
9
))
n
=
'fanyideskweb'
+
i
+
salf
+
"n%A-rKaT5fb[Gy?;N5@Tj"
m.update(n.encode(
'utf-8'
))
sign
=
m.hexdigest()
data
=
{
'i'
: i,
'from'
:
'AUTO'
,
'to'
:
'AUTO'
,
'smartresult'
:
'dict'
,
'client'
:
'fanyideskweb'
,
'salt'
: salf,
'sign'
: sign,
'ts'
: ts,
'bv'
:
'53539dde41bde18f4a71bb075fcf2e66'
,
'doctype'
:
'json'
,
'version'
:
"2.1"
,
'keyfrom'
:
"fanyi.web"
,
'action'
:
"FY_BY_REALTlME"
}
rt
=
getHtml(s,
self
.url,
self
.headers, data)
arr
=
[]
for
c
in
rt[
'translateResult'
][
0
]:
arr.append(c[
'tgt'
])
return
''.join(arr)
def
copy(
file
, file2):
for
root, dirs, files
in
os.walk(
file
):
for
f
in
files:
print
(f)
file_path
=
os.path.join(root, f)
fi
=
open
(file_path,
'r'
,encoding
=
'utf-8'
)
fi2
=
open
(os.path.join(file2, f),
'w'
,encoding
=
'utf-8'
)
while
True
:
line
=
fi.readline()
if
line.startswith(
"C_"
):
dic
=
Dict
()
line
=
re.sub(r
'([\w\s]+)\|([^|]+)([.\s]+)'
,
lambda
m: m.group(
1
)
+
'|'
+
dic.translate(m.group(
2
))
+
m.group(
3
),line)
print
(
'翻译成功:'
+
line)
fi2.write(line)
if
not
line:
fi.close()
fi2.close()
break
copy(
"C:\\Users\\Administrator\\Desktop\\python-test\\dialogues"
,
"C:\\Users\\Administrator\\Desktop\\python-test\\def"
)