m_translator 0.1.1 → 0.1.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/Gemfile.lock +18 -14
- data/README.md +6 -2
- data/lib/m_translator/baidu.rb +7 -6
- data/lib/m_translator/google.rb +1 -1
- data/lib/m_translator/version.rb +1 -1
- data/lib/m_translator/youdao.rb +5 -3
- data/lib/tk/Baidu.js +34 -23
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 45790d5eac3144fa5ee06d24c429e5fd9df58c9da3cde5bad06295811960b77e
|
4
|
+
data.tar.gz: 1f3713312bf8add06796dfca0464f2b6238749a28842de10c3078d523e1b4712
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1e3980401a58319c653c2ded7cb3dfe66dba2230e3020dbb3601e2f1ffe7fbdf2094406c820a16b7e74e6d6e5fa5383bdd5aace6c8e73e3043828d103fb878fa
|
7
|
+
data.tar.gz: abb9b0329906b2f7df8b3459145f3010559dea1f9f99786360cd1a3af9dc2773b83e0e91c68ad5868750ccec3e65913d0909838f203ef18fef9d3ccaa040e589
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
m_translator (0.1.
|
4
|
+
m_translator (0.1.3)
|
5
5
|
activesupport
|
6
6
|
execjs (>= 2.7.0)
|
7
7
|
json (>= 1.8.6)
|
@@ -10,28 +10,31 @@ PATH
|
|
10
10
|
GEM
|
11
11
|
remote: https://gems.ruby-china.com/
|
12
12
|
specs:
|
13
|
-
activesupport (
|
13
|
+
activesupport (6.0.3.2)
|
14
14
|
concurrent-ruby (~> 1.0, >= 1.0.2)
|
15
|
-
i18n (
|
15
|
+
i18n (>= 0.7, < 2)
|
16
16
|
minitest (~> 5.1)
|
17
17
|
tzinfo (~> 1.1)
|
18
|
-
|
18
|
+
zeitwerk (~> 2.2, >= 2.2.2)
|
19
|
+
concurrent-ruby (1.1.6)
|
19
20
|
diff-lcs (1.3)
|
20
|
-
domain_name (0.5.
|
21
|
+
domain_name (0.5.20190701)
|
21
22
|
unf (>= 0.0.5, < 1.0.0)
|
22
23
|
execjs (2.7.0)
|
24
|
+
http-accept (1.7.0)
|
23
25
|
http-cookie (1.0.3)
|
24
26
|
domain_name (~> 0.5)
|
25
|
-
i18n (
|
27
|
+
i18n (1.8.5)
|
26
28
|
concurrent-ruby (~> 1.0)
|
27
|
-
json (
|
28
|
-
mime-types (3.1)
|
29
|
+
json (2.3.1)
|
30
|
+
mime-types (3.3.1)
|
29
31
|
mime-types-data (~> 3.2015)
|
30
|
-
mime-types-data (3.
|
31
|
-
minitest (5.
|
32
|
+
mime-types-data (3.2020.0512)
|
33
|
+
minitest (5.14.1)
|
32
34
|
netrc (0.11.0)
|
33
35
|
rake (10.5.0)
|
34
|
-
rest-client (2.0
|
36
|
+
rest-client (2.1.0)
|
37
|
+
http-accept (>= 1.7.0, < 2.0)
|
35
38
|
http-cookie (>= 1.0.2, < 2.0)
|
36
39
|
mime-types (>= 1.16, < 4.0)
|
37
40
|
netrc (~> 0.8)
|
@@ -49,11 +52,12 @@ GEM
|
|
49
52
|
rspec-support (~> 3.5.0)
|
50
53
|
rspec-support (3.5.0)
|
51
54
|
thread_safe (0.3.6)
|
52
|
-
tzinfo (1.2.
|
55
|
+
tzinfo (1.2.7)
|
53
56
|
thread_safe (~> 0.1)
|
54
57
|
unf (0.1.4)
|
55
58
|
unf_ext
|
56
|
-
unf_ext (0.0.7.
|
59
|
+
unf_ext (0.0.7.7)
|
60
|
+
zeitwerk (2.4.0)
|
57
61
|
|
58
62
|
PLATFORMS
|
59
63
|
ruby
|
@@ -65,4 +69,4 @@ DEPENDENCIES
|
|
65
69
|
rspec (~> 3.0)
|
66
70
|
|
67
71
|
BUNDLED WITH
|
68
|
-
1.
|
72
|
+
1.16.6
|
data/README.md
CHANGED
@@ -23,10 +23,14 @@ Or install it yourself as:
|
|
23
23
|
## Usage
|
24
24
|
|
25
25
|
``` ruby
|
26
|
-
g =MTranslator::Google.new("en","zh-CN","Hello, Who are you")
|
26
|
+
g = MTranslator::Google.new("en","zh-CN","Hello, Who are you")
|
27
27
|
g.translator
|
28
|
-
y =MTranslator::Youdao.new("zh-CHS","en","你是谁")
|
28
|
+
y = MTranslator::Youdao.new("zh-CHS","en","你是谁")
|
29
29
|
y.translator
|
30
|
+
b = MTranslator::Baidu.new('zh','en','你好,我的世界')
|
31
|
+
b.translator
|
32
|
+
s = MTranslator::Sogou.new("zh-CHS","en","你好")
|
33
|
+
s.translator
|
30
34
|
```
|
31
35
|
|
32
36
|
## Development
|
data/lib/m_translator/baidu.rb
CHANGED
@@ -4,7 +4,7 @@ module MTranslator
|
|
4
4
|
@url = "https://fanyi.baidu.com/v2transapi"
|
5
5
|
@from = from
|
6
6
|
@to = to
|
7
|
-
@text = text
|
7
|
+
p @text = CGI::unescape(text)
|
8
8
|
end
|
9
9
|
|
10
10
|
def translator
|
@@ -14,11 +14,11 @@ module MTranslator
|
|
14
14
|
|
15
15
|
private
|
16
16
|
|
17
|
-
def
|
17
|
+
def get_sign(text)
|
18
18
|
f_path = File.join(File.dirname(__FILE__), '../tk/Baidu.js' )
|
19
19
|
f = File.read(f_path)
|
20
20
|
context = ExecJS.compile(f)
|
21
|
-
context.call('
|
21
|
+
context.call('e', text)
|
22
22
|
end
|
23
23
|
|
24
24
|
def req_params
|
@@ -28,14 +28,15 @@ module MTranslator
|
|
28
28
|
params["query"] = @text
|
29
29
|
params["transtype"] = "translang"
|
30
30
|
params["simple_means_flag"] = "3"
|
31
|
-
params["sign"] =
|
32
|
-
params["token"] = "
|
31
|
+
params["sign"] = get_sign(@text)
|
32
|
+
params["token"] = "372a653a84ba137c63c4d87461d5736e"
|
33
33
|
params
|
34
34
|
end
|
35
35
|
|
36
36
|
def req_headers
|
37
37
|
headers = {}
|
38
|
-
headers["Cookie"] = "BAIDUID=16FFA1EAAF1A387C647A22DB9FC81DAE:FG=1; BIDUPSID=16FFA1EAAF1A387C647A22DB9FC81DAE; PSTM=1514024118; __cfduid=d2f7fd3a024d1ee90b8a817ddd866d9bc1514812370; REALTIME_TRANS_SWITCH=1; FANYI_WORD_SWITCH=1; HISTORY_SWITCH=1; SOUND_SPD_SWITCH=1; SOUND_PREFER_SWITCH=1; BDUSS=E83bFplYnBRen5hV3FKNDZCM3ZSZldWMVBjV1ZGbW9uTTVwcjFYVDQzTGVFTlJhQVFBQUFBJCQAAAAAAAAAAAEAAADnIjgkcG9obG9ndTQxNTA3AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAN6DrFreg6xaS; BDORZ=B490B5EBF6F3CD402E515D22BCDA1598; H_PS_PSSID=1429_21103_18559_22075; PSINO=3; locale=zh; Hm_lvt_64ecd82404c51e03dc91cb9e8c025574=1525654866,1525657996,1525658015,1525671031; Hm_lpvt_64ecd82404c51e03dc91cb9e8c025574=1525671031; to_lang_often=%5B%7B%22value%22%3A%22en%22%2C%22text%22%3A%22%u82F1%u8BED%22%7D%2C%7B%22value%22%3A%22zh%22%2C%22text%22%3A%22%u4E2D%u6587%22%7D%5D; from_lang_often=%5B%7B%22value%22%3A%22zh%22%2C%22text%22%3A%22%u4E2D%u6587%22%7D%2C%7B%22value%22%3A%22en%22%2C%22text%22%3A%22%u82F1%u8BED%22%7D%5D"
|
38
|
+
# headers["Cookie"] = "BAIDUID=16FFA1EAAF1A387C647A22DB9FC81DAE:FG=1; BIDUPSID=16FFA1EAAF1A387C647A22DB9FC81DAE; PSTM=1514024118; __cfduid=d2f7fd3a024d1ee90b8a817ddd866d9bc1514812370; REALTIME_TRANS_SWITCH=1; FANYI_WORD_SWITCH=1; HISTORY_SWITCH=1; SOUND_SPD_SWITCH=1; SOUND_PREFER_SWITCH=1; BDUSS=E83bFplYnBRen5hV3FKNDZCM3ZSZldWMVBjV1ZGbW9uTTVwcjFYVDQzTGVFTlJhQVFBQUFBJCQAAAAAAAAAAAEAAADnIjgkcG9obG9ndTQxNTA3AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAN6DrFreg6xaS; BDORZ=B490B5EBF6F3CD402E515D22BCDA1598; H_PS_PSSID=1429_21103_18559_22075; PSINO=3; locale=zh; Hm_lvt_64ecd82404c51e03dc91cb9e8c025574=1525654866,1525657996,1525658015,1525671031; Hm_lpvt_64ecd82404c51e03dc91cb9e8c025574=1525671031; to_lang_often=%5B%7B%22value%22%3A%22en%22%2C%22text%22%3A%22%u82F1%u8BED%22%7D%2C%7B%22value%22%3A%22zh%22%2C%22text%22%3A%22%u4E2D%u6587%22%7D%5D; from_lang_often=%5B%7B%22value%22%3A%22zh%22%2C%22text%22%3A%22%u4E2D%u6587%22%7D%2C%7B%22value%22%3A%22en%22%2C%22text%22%3A%22%u82F1%u8BED%22%7D%5D"
|
39
|
+
headers["Cookie"] = "BIDUPSID=D3290C65C03AEF0E98D97B8641DFFB15; PSTM=1570785944; REALTIME_TRANS_SWITCH=1; FANYI_WORD_SWITCH=1; HISTORY_SWITCH=1; SOUND_SPD_SWITCH=1; SOUND_PREFER_SWITCH=1; BAIDUID=0CC6F13854E81A68D3C564D36E7C8A03:FG=1; APPGUIDE_8_2_2=1; BDORZ=B490B5EBF6F3CD402E515D22BCDA1598; BDSFRCVID=wt_OJeC626EDLgju-c_JbHce7gSxbKcTH6aoxbIy4_AgXmAxrp74EG0PJf8g0Ku-dWitogKKBmOTHg-F_2uxOjjg8UtVJeC6EG0Ptf8g0M5; H_BDCLCKID_SF=JJkO_D_atKvjDbTnMITHh-F-5fIX5-RLf5TuLPOF5lOTJh0RbtOkjnQD-UL82bT2fRcQ0tJLb4DaStJbLjbke6cbDa_fJ5Fs-I5O0R4854QqqR5R5bOq-PvHhxoJqbbJX2OZ0l8KtDQpshRTMR_V-p4p-472K6bML5baabOmWIQHDPnPyJuMBU_sWMcChnjjJbn4KKJxWJLWeIJo5Dcf3PF3hUJiBMjLBan7056IXKohJh7FM4tW3J0ZyxomtfQxtNRJ0DnjtpChbRO4-TF-D5jXeMK; delPer=0; PSINO=2; H_PS_PSSID=1435_21104_18560_26350; Hm_lvt_64ecd82404c51e03dc91cb9e8c025574=1580216234,1580216243,1580458514,1580458537; Hm_lpvt_64ecd82404c51e03dc91cb9e8c025574=1580458539; __yjsv5_shitong=1.0_7_ed303110bee0e644d4985049ba8a5cd1f28d_300_1580458537306_120.10.109.208_66a3b40c; yjs_js_security_passport=630340c0505f771135167fa6df3e5215699dcf0b_1580458538_js; to_lang_often=%5B%7B%22value%22%3A%22zh%22%2C%22text%22%3A%22%u4E2D%u6587%22%7D%2C%7B%22value%22%3A%22en%22%2C%22text%22%3A%22%u82F1%u8BED%22%7D%5D; from_lang_often=%5B%7B%22value%22%3A%22vie%22%2C%22text%22%3A%22%u8D8A%u5357%u8BED%22%7D%2C%7B%22value%22%3A%22en%22%2C%22text%22%3A%22%u82F1%u8BED%22%7D%2C%7B%22value%22%3A%22zh%22%2C%22text%22%3A%22%u4E2D%u6587%22%7D%5D"
|
39
40
|
headers["User-Agent"] = "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36"
|
40
41
|
headers
|
41
42
|
end
|
data/lib/m_translator/google.rb
CHANGED
data/lib/m_translator/version.rb
CHANGED
data/lib/m_translator/youdao.rb
CHANGED
@@ -7,7 +7,7 @@ module MTranslator
|
|
7
7
|
@to = to
|
8
8
|
@text = text
|
9
9
|
@u = "fanyideskweb"
|
10
|
-
@c = "
|
10
|
+
@c = "n%A-rKaT5fb[Gy?;N5@Tj"
|
11
11
|
@f = "#{ctime}"+"#{rand(10 + 1)}"
|
12
12
|
end
|
13
13
|
|
@@ -27,17 +27,19 @@ module MTranslator
|
|
27
27
|
params["client"] = "fanyideskweb"
|
28
28
|
params["salt"] = @f
|
29
29
|
params["sign"] = sign
|
30
|
+
params["ts"] = ctime
|
31
|
+
params["bv"] = '53539dde41bde18f4a71bb075fcf2e66'
|
30
32
|
params["doctype"] = "json"
|
31
33
|
params["version"] = "2.1"
|
32
34
|
params["keyfrom"] = "fanyi.web"
|
33
35
|
params["action"] = "FY_BY_CLICKBUTTION"
|
34
|
-
params["typoResult"] = "false"
|
35
36
|
params
|
36
37
|
end
|
37
38
|
|
38
39
|
def req_headers
|
39
40
|
headers = {}
|
40
|
-
headers["Cookie"] = "OUTFOX_SEARCH_USER_ID_NCOO=1537643834.9570553; OUTFOX_SEARCH_USER_ID=1799185238@10.169.0.83; fanyi-ad-id=43155; fanyi-ad-closed=1; JSESSIONID=aaaBwRanNsqoobhgvaHmw; _ntes_nnid=07e771bc10603d984c2dc8045a293d30,1525267244050; ___rl__test__cookies=#{ctime}"
|
41
|
+
#headers["Cookie"] = "OUTFOX_SEARCH_USER_ID_NCOO=1537643834.9570553; OUTFOX_SEARCH_USER_ID=1799185238@10.169.0.83; fanyi-ad-id=43155; fanyi-ad-closed=1; JSESSIONID=aaaBwRanNsqoobhgvaHmw; _ntes_nnid=07e771bc10603d984c2dc8045a293d30,1525267244050; ___rl__test__cookies=#{ctime}"
|
42
|
+
headers["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=#{ctime}"
|
41
43
|
headers["Referer"] = "http://fanyi.youdao.com/"
|
42
44
|
headers["User-Agent"] = "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36"
|
43
45
|
headers
|
data/lib/tk/Baidu.js
CHANGED
@@ -1,31 +1,42 @@
|
|
1
|
-
function
|
1
|
+
function n(r, o) {
|
2
2
|
for (var t = 0; t < o.length - 2; t += 3) {
|
3
3
|
var a = o.charAt(t + 2);
|
4
4
|
a = a >= "a" ? a.charCodeAt(0) - 87 : Number(a),
|
5
|
-
|
6
|
-
|
5
|
+
a = "+" === o.charAt(t + 1) ? r >>> a : r << a,
|
6
|
+
r = "+" === o.charAt(t) ? r + a & 4294967295 : r ^ a
|
7
7
|
}
|
8
8
|
return r
|
9
9
|
}
|
10
|
-
var C = null;
|
11
|
-
var token = function(r, _gtk) {
|
12
|
-
var o = r.length;
|
13
|
-
o > 30 && (r = "" + r.substr(0, 10) + r.substr(Math.floor(o / 2) - 5, 10) + r.substring(r.length, r.length - 10));
|
14
|
-
var t = void 0,
|
15
|
-
t = null !== C ? C: (C = _gtk || "") || "";
|
16
|
-
for (var e = t.split("."), h = Number(e[0]) || 0, i = Number(e[1]) || 0, d = [], f = 0, g = 0; g < r.length; g++) {
|
17
|
-
var m = r.charCodeAt(g);
|
18
|
-
128 > m ? d[f++] = m: (2048 > m ? d[f++] = m >> 6 | 192 : (55296 === (64512 & m) && g + 1 < r.length && 56320 === (64512 & r.charCodeAt(g + 1)) ? (m = 65536 + ((1023 & m) << 10) + (1023 & r.charCodeAt(++g)), d[f++] = m >> 18 | 240, d[f++] = m >> 12 & 63 | 128) : d[f++] = m >> 12 | 224, d[f++] = m >> 6 & 63 | 128), d[f++] = 63 & m | 128)
|
19
|
-
}
|
20
|
-
for (var S = h,
|
21
|
-
u = "+-a^+6",
|
22
|
-
l = "+-3^+b+-f",
|
23
|
-
s = 0; s < d.length; s++) S += d[s],
|
24
|
-
S = a(S, u);
|
25
10
|
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
11
|
+
function e(r) {
|
12
|
+
var o = r.match(/[\uD800-\uDBFF][\uDC00-\uDFFF]/g);
|
13
|
+
if (null === o) {
|
14
|
+
var t = r.length;
|
15
|
+
t > 30 && (r = "" + r.substr(0, 10) + r.substr(Math.floor(t / 2) - 5, 10) + r.substr(-10, 10))
|
16
|
+
} else {
|
17
|
+
for (var e = r.split(/[\uD800-\uDBFF][\uDC00-\uDFFF]/), C = 0, h = e.length, f = []; h > C; C++)
|
18
|
+
"" !== e[C] && f.push.apply(f, a(e[C].split(""))),
|
19
|
+
C !== h - 1 && f.push(o[C]);
|
20
|
+
var g = f.length;
|
21
|
+
g > 30 && (r = f.slice(0, 10).join("") + f.slice(Math.floor(g / 2) - 5, Math.floor(g / 2) + 5).join("") + f.slice(-10).join(""))
|
22
|
+
}
|
23
|
+
var u = void 0
|
24
|
+
, l = "" + String.fromCharCode(103) + String.fromCharCode(116) + String.fromCharCode(107);
|
25
|
+
u ='320305.131321201';
|
26
|
+
for (var d = u.split("."), m = Number(d[0]) || 0, s = Number(d[1]) || 0, S = [], c = 0, v = 0; v < r.length; v++) {
|
27
|
+
var A = r.charCodeAt(v);
|
28
|
+
128 > A ? S[c++] = A : (2048 > A ? S[c++] = A >> 6 | 192 : (55296 === (64512 & A) && v + 1 < r.length && 56320 === (64512 & r.charCodeAt(v + 1)) ? (A = 65536 + ((1023 & A) << 10) + (1023 & r.charCodeAt(++v)),
|
29
|
+
S[c++] = A >> 18 | 240,
|
30
|
+
S[c++] = A >> 12 & 63 | 128) : S[c++] = A >> 12 | 224,
|
31
|
+
S[c++] = A >> 6 & 63 | 128),
|
32
|
+
S[c++] = 63 & A | 128)
|
33
|
+
}
|
34
|
+
for (var p = m, F = "" + String.fromCharCode(43) + String.fromCharCode(45) + String.fromCharCode(97) + ("" + String.fromCharCode(94) + String.fromCharCode(43) + String.fromCharCode(54)), D = "" + String.fromCharCode(43) + String.fromCharCode(45) + String.fromCharCode(51) + ("" + String.fromCharCode(94) + String.fromCharCode(43) + String.fromCharCode(98)) + ("" + String.fromCharCode(43) + String.fromCharCode(45) + String.fromCharCode(102)), b = 0; b < S.length; b++)
|
35
|
+
p += S[b],
|
36
|
+
p = n(p, F);
|
37
|
+
return p = n(p, D),
|
38
|
+
p ^= s,
|
39
|
+
0 > p && (p = (2147483647 & p) + 2147483648),
|
40
|
+
p %= 1e6,
|
41
|
+
p.toString() + "." + (p ^ m)
|
31
42
|
}
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: m_translator
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- jack
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-09-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rest-client
|
@@ -156,7 +156,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
156
156
|
version: '0'
|
157
157
|
requirements: []
|
158
158
|
rubyforge_project:
|
159
|
-
rubygems_version: 2.
|
159
|
+
rubygems_version: 2.7.9
|
160
160
|
signing_key:
|
161
161
|
specification_version: 4
|
162
162
|
summary: a gem is translation package
|