translator-srt 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 6ee07e78b451695d2e7d03c9da80126f734ea885
4
+ data.tar.gz: bc16d2a73ece72f2c9873abbc3f98f9f73e75fc6
5
+ SHA512:
6
+ metadata.gz: 945bb15f2df8f0d60bc25a1df4e3c613a13c01b1695507ddefc83a10c904f1e4b882b58d7342fe4ec73ada4d749c696ac24aa707ca9998d127024f4312509c92
7
+ data.tar.gz: 74661f4c4ab8dc2557bd929214119f0125412d0e96d89a8cbdeffa7db33bce58219d2c1bec476182a35cb2fa8716d22236bcebf210bccc2297de8a21800c2318
@@ -0,0 +1,17 @@
1
+ # Ignore RubyMine project files
2
+ .idea
3
+
4
+ *.gem
5
+ *.rbc
6
+ .bundle
7
+ .config
8
+ .yardoc
9
+ Gemfile*.lock
10
+ InstalledFiles
11
+ _yardoc
12
+ coverage
13
+ doc/
14
+ lib/bundler/man
15
+ pkg
16
+ tmp
17
+ .rvmrc
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in translator_srt.gemspec
4
+ gemspec
data/LICENSE ADDED
@@ -0,0 +1,28 @@
1
+ Copyright (c) 2014, Vadim Poplavskiy
2
+ All rights reserved.
3
+
4
+ Redistribution and use in source and binary forms, with or without
5
+ modification, are permitted provided that the following conditions are met:
6
+
7
+ * Redistributions of source code must retain the above copyright notice, this
8
+ list of conditions and the following disclaimer.
9
+
10
+ * Redistributions in binary form must reproduce the above copyright notice,
11
+ this list of conditions and the following disclaimer in the documentation
12
+ and/or other materials provided with the distribution.
13
+
14
+ * Neither the name of translator-srt nor the names of its
15
+ contributors may be used to endorse or promote products derived from
16
+ this software without specific prior written permission.
17
+
18
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
19
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
20
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
21
+ DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
22
+ FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
23
+ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
24
+ SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
25
+ CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
26
+ OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
27
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28
+
@@ -0,0 +1,4 @@
1
+ require 'translator_srt/google_translate'
2
+ require 'translator_srt/version'
3
+
4
+ module TranslatorSrt end
@@ -0,0 +1,22 @@
1
+ require 'translator_srt/google_translate/result_parser'
2
+ require 'translator_srt/google_translate/service'
3
+
4
+ module TranslatorSrt
5
+ module GoogleTranslate
6
+ def self.translate_srt_file(from_lang, to_lang, path_srt_file)
7
+ srt_file_content = File.read(path_srt_file)
8
+ result = Service.new.translate(from_lang, to_lang, srt_file_content)
9
+
10
+ puts "Translated srt string"
11
+
12
+ ResultParser.new(result).to_s
13
+ end
14
+ def self.translate_srt_string(from_lang, to_lang, text)
15
+ result = Service.new.translate(from_lang, to_lang, text)
16
+
17
+ puts "Translated srt string"
18
+
19
+ ResultParser.new(result).to_s
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,51 @@
1
+ module TranslatorSrt
2
+ module GoogleTranslate
3
+ class ResultParser
4
+ def initialize(result)
5
+ @result = result
6
+ end
7
+
8
+ def to_s
9
+ normalize_translation
10
+
11
+ @result.join
12
+ end
13
+
14
+ private
15
+
16
+ def normalize_translation
17
+ to_one_ar
18
+
19
+ list_keys = {
20
+ "-->" => ["###"],
21
+ "," => [" ## ", "##"],
22
+ ":" => [" # ", "#"],
23
+ }
24
+
25
+ list_keys.each do |key_group, group|
26
+ group.each do |key|
27
+ @result.each_index do |index_translation|
28
+ @result[index_translation] = @result[index_translation].gsub key, key_group
29
+ end
30
+
31
+ end
32
+ end
33
+ end
34
+
35
+ def to_one_ar
36
+ permit_translation
37
+
38
+ result_in_one_array = []
39
+ @result.each do |item|
40
+ result_in_one_array.append item.first
41
+ end
42
+
43
+ @result = result_in_one_array
44
+ end
45
+
46
+ def permit_translation
47
+ @result = @result.first
48
+ end
49
+ end
50
+ end
51
+ end
@@ -0,0 +1,50 @@
1
+ require 'net/http'
2
+ require 'json'
3
+ require 'tempfile'
4
+ require 'resource_accessor'
5
+
6
+ module TranslatorSrt
7
+ module GoogleTranslate
8
+ class Service
9
+ GOOGLE_TRANSLATE_SERVICE_URL = "translate.google.com"
10
+
11
+ def translate(from_lang, to_lang, text)
12
+ raise("Missing 'from' language") unless from_lang
13
+ raise("Missing 'to' language") unless to_lang
14
+ raise("Missing text for translation") unless text
15
+
16
+ r = call_translate_service(from_lang, to_lang, text)
17
+
18
+ result = JSON.parse(r.gsub('[,', '['))
19
+
20
+ raise("Translate Server is down") if (!result || result.empty?)
21
+
22
+ result
23
+ end
24
+
25
+ private
26
+
27
+ def translate_url(from_lang, to_lang)
28
+ "https://#{GOOGLE_TRANSLATE_SERVICE_URL}/translate_a/single?client=t&sl=#{from_lang}&tl=#{to_lang}&hl=en&dt=bd&dt=ex&dt=ld&dt=md&dt=qc&dt=rw&dt=rm&dt=ss&dt=t&dt=at&dt=sw&ie=UTF-8&oe=UTF-8&prev=btn&rom=1&ssel=0&tsel=0"
29
+ end
30
+
31
+ def call_translate_service from_lang, to_lang, text
32
+ url = translate_url(from_lang, to_lang)
33
+
34
+ response = call_service(url, normalize_to_translate(text))
35
+
36
+ response.body.split(',').collect { |s| s == '' ? "\"\"" : s }.join(",") # fix json object
37
+ end
38
+
39
+ def call_service url, q
40
+ accessor = ResourceAccessor.new
41
+
42
+ accessor.get_response url: url, :method => :post, :body => {q: q}
43
+ end
44
+
45
+ def normalize_to_translate text
46
+ text.gsub(":", "#").gsub(",", "##").gsub("-->", "###")
47
+ end
48
+ end
49
+ end
50
+ end
@@ -0,0 +1,3 @@
1
+ module TranslatorSrt
2
+ VERSION = '0.0.1'
3
+ end
@@ -0,0 +1,19 @@
1
+ lib = File.expand_path('../lib', __FILE__)
2
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
+ require 'translator_srt/version'
4
+
5
+ Gem::Specification.new do |spec|
6
+ spec.name = 'translator-srt'
7
+ spec.version = TranslatorSrt::VERSION
8
+ spec.authors = ['Vadim Poplavskiy']
9
+ spec.email = ['im@demetrodon.com']
10
+ spec.summary = %q{Translator srt files}
11
+ spec.description = ''
12
+ spec.homepage = 'https://github.com/demetrodon/translator-srt'
13
+ spec.license = 'New BSD'
14
+
15
+ spec.files = `git ls-files`.split($/)
16
+ spec.require_paths = ['lib']
17
+
18
+ spec.add_dependency 'resource_accessor'
19
+ end
metadata ADDED
@@ -0,0 +1,67 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: translator-srt
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Vadim Poplavskiy
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-10-26 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: resource_accessor
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ description: ''
28
+ email:
29
+ - im@demetrodon.com
30
+ executables: []
31
+ extensions: []
32
+ extra_rdoc_files: []
33
+ files:
34
+ - ".gitignore"
35
+ - Gemfile
36
+ - LICENSE
37
+ - lib/translator_srt.rb
38
+ - lib/translator_srt/google_translate.rb
39
+ - lib/translator_srt/google_translate/result_parser.rb
40
+ - lib/translator_srt/google_translate/service.rb
41
+ - lib/translator_srt/version.rb
42
+ - translator_srt.gemspec
43
+ homepage: https://github.com/demetrodon/translator-srt
44
+ licenses:
45
+ - New BSD
46
+ metadata: {}
47
+ post_install_message:
48
+ rdoc_options: []
49
+ require_paths:
50
+ - lib
51
+ required_ruby_version: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - ">="
54
+ - !ruby/object:Gem::Version
55
+ version: '0'
56
+ required_rubygems_version: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - ">="
59
+ - !ruby/object:Gem::Version
60
+ version: '0'
61
+ requirements: []
62
+ rubyforge_project:
63
+ rubygems_version: 2.2.2
64
+ signing_key:
65
+ specification_version: 4
66
+ summary: Translator srt files
67
+ test_files: []