记得以前刷课一直用bing的翻译api来生成实时字幕,但是更了potplayer的某个版本之后不再提供免费的api了,可能是bing限制了使用额度,也也可能是播放器某种合规问题不再支持。
目前potplayer内置了bing和google的api,也有大佬们编写了插件支持了百度的api,然而免费的额度始终是不够用的,那么还是自己实现一个翻译api吧。(前提是得有英文字幕文件)
写完查询了下,市面上应该还没有基于aws给potplayer的翻译插件,我应该是全网第一人。
按照大微软一贯的作风没,免费是不可能的。
这么好的软件怎么能不支持aws呢?
如果这个功能aws没有,那么就托管一个。
如果某些东西不支持,那用aws的api开发一个。
Api的编写
选取了Flask来编写api,只需要一个简单的路由,这个需要足够小足够轻量,然后在api返回所需要的格式。
SDK的话使用使用boto3,实现很简单:
response = client.translate_text(
Text=message,
SourceLanguageCode=source_language,
TargetLanguageCode=destination_language,
)
毕竟涉及到ak和sk,这些敏感信息建议放在环境变量或者使用secret manager托管起来。
播放器脚本
播放器使用的是angelscript,关于这个语言找到了资料很少,而且播放器也没有暴露出来任何api文档,所以姑且认为是覆盖angelscript的钩子函数。这个插件不再过多叙述,其实就是像我们的rest api发送一个HTTP的请求,然后对返回的格式进行处理。最后把值给ret这个变量。第一次接触angelscript,很多东西还不是很熟悉。插件后续还有挺大优化空间。
这个原理其实很简单,主要是写了点实用的工具,所以写出来分享。
成品
这个是github的地址:
potplayer_translate_plug_in/translate_api at master · mengze-han/potplayer_translate_plug_in · GitHub