project-yuki / YUKI

YUKI Galgame Translator
GNU General Public License v3.0
1.51k stars 145 forks source link

恢复彩云 API 的可用性 #135

Open Yesterday17 opened 4 years ago

Yesterday17 commented 4 years ago

彩云 API 不稳定是由于测试 token 超过使用限制。

故使用网页版的请求方式以绕过测试 token 的使用限额。

另外还修改了一些测试中发生变化的文本(GoogleCN)。

Isayama-Kagura commented 4 years ago

大佬,这个是什么原理,是绕过了官方提供的api请求方式,直接利用网页得出翻译结果吗? 这种方法能否在yeekit上使用? https://www.yeekit.com/site/translate

Yesterday17 commented 4 years ago

@Isayama-Kagura 扒的彩云前端api,跟扒 Notion 的差不多

Isayama-Kagura commented 4 years ago

最近我也试着给yuki加一些翻译api,本来想着把yeekit(中国对外翻译出版公司下属企业搞的,应该不会太差)也加上去的,它的网页版支持日语,但是官方手册上只提供了中英文的翻译功能。看到大佬利用网页版来请求翻译的思路,自己也试着分析了一下它的网页代码,照着它的格式拼请求参数,但是因为技术渣总是返回invalid request。希望大佬有空也看看这个api能不能用类似的方式实现。

它的页面源码里包含了一个translate.js文件,然后主要的翻译请求逻辑都在doTranslateSimple这个函数里面。

Yesterday17 commented 4 years ago

看了一下,好像什么反混淆都不需要的样子,直接 curl 就出结果了 image

Isayama-Kagura commented 4 years ago

很强,那就拜托大佬完善一下啦

Isayama-Kagura commented 4 years ago

感谢大佬指点,已经成功摸索出来了

Isayama-Kagura commented 4 years ago

还有个问题请教一下,本想改进自己的小牛api,不需要key就能用,但是看他的http请求,发送是用get,接收的响应是text/html格式的,按照之前的写法获取不了翻译结果,这个有解决办法吗 附curl curl 'https://test.niutrans.com/NiuTransServer/testtrans?query=25885775&from=zh&to=ja&src_text=%E4%BB%80%E4%B9%88%E6%83%85%E5%86%B5&source=text'

Yesterday17 commented 4 years ago

@Isayama-Kagura 具体是什么提示呢(

Isayama-Kagura commented 4 years ago

就是then后面返回的东西似乎是空的,既不是字符串也不是json,放在callback里面也显示不出东西

ghost commented 3 years ago

这个 caiyunApi.js 有个问题: 暂停(游戏)翻译 5 分钟左右恢复之后就无法翻译了,这种情况我只能重启 YUKI

翻译框里会出现 error: TypeError: Cannot read property 'replace' of undefined

ghost commented 3 years ago

就是then后面返回的东西似乎是空的,既不是字符串也不是json,放在callback里面也显示不出东西

服务器返回的 Content-Type 可以被 override 为 application/json

https://stackoverflow.com/questions/60629538/override-the-content-type-being-set-in-the-req-header-with-node-js

但是这个 url ,只会返回和 源文 无关的随机内容

クイーンC勝ち馬は直近3年で2着2回。

展示されていた『ヌーダ・ヴェリタス(裸の真実)』の金の渦巻きをモチーフにした3連のブレスレット。

4位「金沢大学医薬保健学域」0.89%

Isayama-Kagura commented 3 years ago

@ygsk10 对,url也是个问题。这个翻译api应该是在不同的时间产生不同的一串query,要得到正确的翻译结果需要输对这个参数,然而我看不出如何计算出这个数字。刚刚测试到的query=25462728

Yesterday17 commented 3 years ago

image

Isayama-Kagura commented 3 years ago

有点懂了,就是需要一开始的时候先访问主页面,然后请求app.js,再找到里面的motlog_trans。。。感觉自己代码力不足了