TTTrans 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: cb740e31cd3cfe831039fc5feebf5eb11e0030563a99b539126506b3d5534532
4
- data.tar.gz: f89ff2acfdf21034d5ae8f5bd8bc1bec1399813b0f72c74cc0b3634183726668
3
+ metadata.gz: 6cfc01f6f5ff99adbbf7ad65bed86b5a2b302ada76cf255e5a1da27f8a15c155
4
+ data.tar.gz: 338a89ff03331d4ad7175f61386f27f643457669179e269ccde4e02f4b41cf93
5
5
  SHA512:
6
- metadata.gz: 489e8bcedf7eeeca73ac5fab3c248e815c86e712e4e71bfcd3b17fb4c7f2b86bf7af4f29a6c5daf1caf7e9bd8dee4e9d1cb387b038b77722ea98072392a1c83c
7
- data.tar.gz: 870febae3298d27a50bdb4654ebfce90d30a42273ec6d53ae84a6d96783959c83f27f9bdcaa85b936363fe8d35a316da4b08071ed04f3e2de36b2c21aa0343ed
6
+ metadata.gz: 88e46f4f37c7ace508592bfa35cfcf885e5092284693ac507046c394f7ea9e69fc7f7ddad05b8f522e89b124d51d15be400f6e7815c7c66226ce8b84ca28b2c2
7
+ data.tar.gz: f0f7d8833a14fa3a3bab622a2db8449368ca2210b71cfa08972c417595f5d87379c7d8973f186a32ca92ec221cbdaf11819f215ca4e613ac116a1228dd0956ba
data/.rubocop.yml CHANGED
@@ -11,3 +11,6 @@ Style/StringLiteralsInInterpolation:
11
11
 
12
12
  Layout/LineLength:
13
13
  Max: 120
14
+
15
+ Metrics/MethodLength:
16
+ Max: 80
data/Gemfile.lock CHANGED
@@ -2,12 +2,14 @@ PATH
2
2
  remote: .
3
3
  specs:
4
4
  TTTrans (0.1.0)
5
+ inifile (~> 3.0.0)
5
6
  oauth (~> 0.5.10)
6
7
 
7
8
  GEM
8
9
  remote: https://rubygems.org/
9
10
  specs:
10
11
  ast (2.4.2)
12
+ inifile (3.0.0)
11
13
  oauth (0.5.10)
12
14
  parallel (1.22.1)
13
15
  parser (3.1.2.0)
data/README.md CHANGED
@@ -1,4 +1,7 @@
1
1
  # TTTrans
2
+ [![Ruby](https://github.com/Himeyama/tttrans/actions/workflows/main.yml/badge.svg)](https://github.com/Himeyama/tttrans/actions/workflows/main.yml)
3
+ [![Gem Version](https://badge.fury.io/rb/TTTrans.svg)](https://badge.fury.io/rb/TTTrans)
4
+
2
5
  この Gem は「みんなの自動翻訳@TexTra®」に対し WebAPI を叩き、翻訳するアプリです。
3
6
 
4
7
  ![image](https://user-images.githubusercontent.com/39254183/175293482-2e432b0b-f52e-457c-bad1-e6e68d627fe1.png)
@@ -6,37 +9,36 @@
6
9
  |機能|開発状況|
7
10
  |:--:|:--:|
8
11
  |英日翻訳|✅|
9
- |日英翻訳||
10
- |設定ファイルの読み込み||
12
+ |日英翻訳|✅|
13
+ |設定ファイルの読み込み|✅|
11
14
  |非対話モードによる翻訳||
12
15
 
13
16
  ## インストール
14
- アプリケーションのGemfileに次の行を追加します:
17
+ 次のようにインストールします:
18
+
19
+ $ gem install TTTrans
20
+
21
+ アプリケーションの Gemfile に次の行を追加します (アプリケーションに追加しない場合は無視してください):
15
22
 
16
23
  ```ruby
17
- gem 'tttrans'
24
+ gem 'TTTrans'
18
25
  ```
19
26
 
20
- 次のコマンドを実行します:
27
+ 次のコマンドを実行します (アプリケーションに追加しない場合は無視してください):
21
28
 
22
29
  $ bundle install
23
30
 
24
- または、次のようにインストールします:
25
-
26
- $ gem install tttrans
27
-
28
- ### 環境変数設定
29
- 環境変数を設定する必要があるため、`~/.bashrc` などに環境変数を以下のように設定してください。
31
+ ### ログイン設定
32
+ API を利用するにはユーザー ID や API キーなどを設定する必要があるため、
33
+ `~/.tttconfig` に以下のように設定を書き込んでください。
30
34
 
31
- ```bash
32
- export TexTra_URI_EN_JA=https://mt-auto-minhon-mlt.ucri.jgn-x.jp/api/mt/generalNT_en_ja/
33
- export TexTra_ID=【TexTra に登録した ID】
34
- export TexTra_API_KEY=【API key】
35
- export TexTra_API_SECRET=【API secret】
35
+ ```ini
36
+ [textra]
37
+ id=【TexTra に登録したユーザー ID】
38
+ api_key=【API key】
39
+ api_secret=【API secret】
36
40
  ```
37
41
 
38
- 詳しくは、https://www.hikari-dev.com/2022/06/22/TexTra-ruby/ を参照してください。
39
-
40
42
  ## 使用方法
41
43
 
42
44
  `gem install` によってインストールを行った場合は、以下のコマンドで対話型翻訳を実行できます。
@@ -52,15 +54,15 @@ $ bundle # 1 回だけ
52
54
  $ bundle exec ttt
53
55
  ```
54
56
 
55
- `:q` で対話を終了します。
57
+ `:en2ja` で 英日翻訳モード、`:ja2en` で日英翻訳モードを切り替え可能です。
58
+
59
+ `:q` または、`Ctrl` + `C` で対話を終了します。
56
60
 
57
61
  ## 開発について
58
62
 
59
63
  リポジトリをチェックアウトした後、`bin/setup` を実行して依存関係をインストールします。
60
64
  また、`bin/console` を実行してインタラクティブなプロンプトを表示し、実験を行うこともできます。
61
65
 
62
- To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and the created tag, and push the `.gem` file to [rubygems.org](https://rubygems.org).
63
-
64
66
  このgemをローカルマシンにインストールするには、`bundle exec rake install` を実行します。新しいバージョンをリリースするには、`version.rb` のバージョン番号を更新してから `bundle exec rake release` を実行します。
65
67
  これによりそのバージョンの git タグが作成され、git コミットと作成されたタグがプッシュされ、
66
68
  `.gem` ファイルが [rubygems.org](https://rubygems.org) に プッシュされます。
data/exe/ttt CHANGED
@@ -1,18 +1,77 @@
1
1
  #!/usr/bin/env ruby
2
2
  # frozen_string_literal: true
3
3
 
4
- require "oauth"
5
4
  require "tttrans"
5
+ require "inifile"
6
6
 
7
- consumer = OAuth::Consumer.new(ENV["TexTra_API_KEY"], ENV["TexTra_API_SECRET"])
8
- token = OAuth::AccessToken.new(consumer)
7
+ # 設定があるか確認
8
+ def config_exists?(api_key, api_secret, user_id)
9
+ return true if [nil, ""].include?(api_key) \
10
+ || [nil, ""].include?(api_secret) \
11
+ || [nil, ""].include?(user_id)
12
+
13
+ false
14
+ end
15
+
16
+ # ~/.tttconfig から設定を読み込む
17
+ inifile = "#{ENV["HOME"]}/.tttconfig"
18
+ if File.exist?(inifile)
19
+ ini = IniFile.load(inifile)
20
+ api_key = ini["textra"]["api_key"]
21
+ api_secret = ini["textra"]["api_secret"]
22
+ user_id = ini["textra"]["id"]
23
+ end
24
+
25
+ # 環境変数が与えられた場合
26
+ envs = %w[TexTra_API_KEY TexTra_API_SECRET TexTra_ID].map do |item|
27
+ ENV[item]
28
+ end
29
+ api_key = envs[0] unless envs[0] == ""
30
+ api_secret = envs[1] unless envs[1] == ""
31
+ user_id = envs[2] unless envs[2] == ""
32
+
33
+ if config_exists?(api_key, api_secret, user_id)
34
+ warn.puts(
35
+ "\033[31mエラー: API のキーまたはユーザー ID の設定がされていません。" \
36
+ "~/.tttconfig に設定ファイルを作成してください。\033[0m"
37
+ )
38
+ exit(false)
39
+ end
40
+
41
+ token = TTTrans.token(api_key, api_secret)
42
+
43
+ mode = :en2ja
44
+ modes = {
45
+ en2ja: [" English: ", "Japanese: "],
46
+ ja2en: ["Japanese: ", " English: "]
47
+ }
9
48
 
10
49
  loop do
11
- input = Readline.readline(" English: ", true)
50
+ begin
51
+ input = Readline.readline(modes[mode][0], true)
52
+ rescue Interrupt
53
+ puts
54
+ exit(true)
55
+ end
56
+
57
+ if input.eql?(":en2ja")
58
+ puts("ℹ️ \033[36m英日翻訳に変更します\033[0m") if mode == :ja2en
59
+ mode = :en2ja
60
+ puts("-" * IO.console_size[1])
61
+ next
62
+ end
63
+
64
+ if input.eql?(":ja2en")
65
+ puts("ℹ️ \033[36m日英翻訳に変更します\033[0m") if mode == :en2ja
66
+ mode = :ja2en
67
+ puts("-" * IO.console_size[1])
68
+ next
69
+ end
70
+
12
71
  next if input.eql?("")
13
72
 
14
73
  break if input.eql?(":q")
15
74
 
16
- puts("\033[32mJapanese: \033[1;32m#{TTTrans.translate(token, input)}\033[0m")
75
+ puts("\033[32m#{modes[mode][1]}\033[1;32m#{TTTrans.translate(token, api_key, user_id, input, mode)}\033[0m")
17
76
  puts("-" * IO.console_size[1])
18
77
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module TTTrans
4
- VERSION = "0.1.0"
4
+ VERSION = "0.2.0"
5
5
  end
data/lib/tttrans.rb CHANGED
@@ -3,6 +3,7 @@
3
3
  require "readline"
4
4
  require "io/console/size"
5
5
  require "json"
6
+ require "oauth"
6
7
  require_relative "tttrans/version"
7
8
 
8
9
  # TTTrans module
@@ -10,12 +11,30 @@ module TTTrans
10
11
  class Error < StandardError; end
11
12
  # Your code goes here...
12
13
 
13
- def self.translate(token, text)
14
+ def self.token(api_key, api_secret)
15
+ consumer = OAuth::Consumer.new(api_key, api_secret)
16
+ OAuth::AccessToken.new(consumer)
17
+ end
18
+
19
+ def self.translate(
20
+ token,
21
+ api_key,
22
+ user_id,
23
+ text,
24
+ mode = :en2ja
25
+ )
26
+ case mode
27
+ when :en2ja
28
+ url = "https://mt-auto-minhon-mlt.ucri.jgn-x.jp/api/mt/generalNT_en_ja/"
29
+ when :ja2en
30
+ url = "https://mt-auto-minhon-mlt.ucri.jgn-x.jp/api/mt/generalNT_ja_en/"
31
+ end
32
+
14
33
  response = token.post(
15
- ENV["TexTra_URI_EN_JA"], {
16
- key: ENV["TexTra_API_KEY"],
34
+ url, {
35
+ key: api_key,
17
36
  type: "json",
18
- name: ENV["TexTra_ID"],
37
+ name: user_id,
19
38
  text: text
20
39
  }
21
40
  )
data/tttrans.gemspec CHANGED
@@ -32,10 +32,11 @@ Gem::Specification.new do |spec|
32
32
  spec.require_paths = ["lib"]
33
33
 
34
34
  # Uncomment to register a new dependency of your gem
35
+ spec.add_dependency "inifile", "~> 3.0.0"
35
36
  spec.add_dependency "oauth", "~> 0.5.10"
36
- spec.add_development_dependency "rubocop-rake", "~> 0.6.0"
37
37
  spec.add_development_dependency "rake", "~> 13.0.6"
38
38
  spec.add_development_dependency "rubocop", "~> 1.30.1"
39
+ spec.add_development_dependency "rubocop-rake", "~> 0.6.0"
39
40
 
40
41
  # For more information and examples about making a new gem, check out our
41
42
  # guide at: https://bundler.io/guides/creating_gem.html
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: TTTrans
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - MURATA Mitsuharu
@@ -11,33 +11,33 @@ cert_chain: []
11
11
  date: 2022-06-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: oauth
14
+ name: inifile
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 0.5.10
19
+ version: 3.0.0
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: 0.5.10
26
+ version: 3.0.0
27
27
  - !ruby/object:Gem::Dependency
28
- name: rubocop-rake
28
+ name: oauth
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: 0.6.0
34
- type: :development
33
+ version: 0.5.10
34
+ type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: 0.6.0
40
+ version: 0.5.10
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rake
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -66,6 +66,20 @@ dependencies:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
68
  version: 1.30.1
69
+ - !ruby/object:Gem::Dependency
70
+ name: rubocop-rake
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: 0.6.0
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: 0.6.0
69
83
  description:
70
84
  email:
71
85
  - hikari.photon+dev@gmail.com