基于百度API的开源自动翻译.srt文件软件的实现的几个技术细节总结附源代码

该软件的实现技术细节和构想大概是这样的,有更好的想法的可以联系我,我们一起改进这个软件

这个软件是用差不多一个星期左右的时间编出来的

思路:

一.对字幕组有了解的人一点对.srt文件有一定的了解,这种文件大概长这个样子

1
00:00:46,040 --> 00:00:51,809
East Berlin, 1975
 
2
00:01:16,400 --> 00:01:18,402
You're freezing cold.
 
3
00:01:23,280 --> 00:01:25,203
I'll give you my sweater.

所有第一步我是将以上文件分成3个独立的文件,保存为1_temp.txt, 2_temp.txt, 3_temp.txt文档.

二.然后再通过一个函数依次打开每一个这样的文件读取其中的第三行这个的英文字母

最后通过调用百度的API将英文传给百度,最后从百度接受回来译文补在每个临时文件的后面

三.将临时文件读取并连接成最后的文件


思路很简单,其中要解决的途中遇到的一些问题现在想起了就是Unicode的问题,头都想大了

百度返回的是Unicode格式的字符串

但是在python2.x的条件下要是想显示的话就很麻烦,后来是某位SegmentFault的大牛指点之下,在代码开头的地方加了一点代码

from __future__ import unicode_literals

问题就解决了

此部分代码如下

u = response.read()
dict_mid = eval(u)
dict_trans = dict_mid.get('trans_result')
dict_trans_mid = dict_trans[0]
result_mid = dict_trans_mid.get('dst')
result = (result_mid).encode("UTF-8")
print result

说到这里就想到这个头大的百度返回的json格式的包

先读取了json的包,通过eval()函数将这个str自动转换成为dict也就是字典

然后获得名为trans_result的键值,最后读取这个值为列表

最后再将这个列表的第一个元素读出来,然后读出来的又是一个字典

最后再用字典的get方法得到最后dst的翻译结果

最后encode解码从utf8为变成中文输出

其余的基本就是工程上的问题,想想就能解决,下面贴出代码的位置

https://github.com/fansubgroup/Hyperion1.0

下一步是希望继续改进.srt文件的行识别函数,兼容更多的翻译模式,提供更智能的翻译,最后还要加入可视化的操作界面

想加入这个开源软件开发的同学可以邮箱联系我super_big_hero@sina,com

下面贴出几张本人参考的文章的url,希望对看这个文章的同学有用

关于python中future的使用 http://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000/001386820023084e5263fe54fde4e4e8616597058cc4ba1000

json的操作 http://www.cnblogs.com/qq78292959/p/3467937.html


你可能感兴趣的:(ubuntu,unicode,正则表达式,utf-8)