TTTrans 0.1.0 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.rubocop.yml +3 -0
- data/Gemfile.lock +2 -0
- data/README.md +23 -21
- data/exe/ttt +64 -5
- data/lib/tttrans/version.rb +1 -1
- data/lib/tttrans.rb +23 -4
- data/tttrans.gemspec +2 -1
- metadata +22 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6cfc01f6f5ff99adbbf7ad65bed86b5a2b302ada76cf255e5a1da27f8a15c155
|
4
|
+
data.tar.gz: 338a89ff03331d4ad7175f61386f27f643457669179e269ccde4e02f4b41cf93
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 88e46f4f37c7ace508592bfa35cfcf885e5092284693ac507046c394f7ea9e69fc7f7ddad05b8f522e89b124d51d15be400f6e7815c7c66226ce8b84ca28b2c2
|
7
|
+
data.tar.gz: f0f7d8833a14fa3a3bab622a2db8449368ca2210b71cfa08972c417595f5d87379c7d8973f186a32ca92ec221cbdaf11819f215ca4e613ac116a1228dd0956ba
|
data/.rubocop.yml
CHANGED
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -1,4 +1,7 @@
|
|
1
1
|
# TTTrans
|
2
|
+
[](https://github.com/Himeyama/tttrans/actions/workflows/main.yml)
|
3
|
+
[](https://badge.fury.io/rb/TTTrans)
|
4
|
+
|
2
5
|
この Gem は「みんなの自動翻訳@TexTra®」に対し WebAPI を叩き、翻訳するアプリです。
|
3
6
|
|
4
7
|

|
@@ -6,37 +9,36 @@
|
|
6
9
|
|機能|開発状況|
|
7
10
|
|:--:|:--:|
|
8
11
|
|英日翻訳|✅|
|
9
|
-
|
10
|
-
|
12
|
+
|日英翻訳|✅|
|
13
|
+
|設定ファイルの読み込み|✅|
|
11
14
|
|非対話モードによる翻訳||
|
12
15
|
|
13
16
|
## インストール
|
14
|
-
|
17
|
+
次のようにインストールします:
|
18
|
+
|
19
|
+
$ gem install TTTrans
|
20
|
+
|
21
|
+
アプリケーションの Gemfile に次の行を追加します (アプリケーションに追加しない場合は無視してください):
|
15
22
|
|
16
23
|
```ruby
|
17
|
-
gem '
|
24
|
+
gem 'TTTrans'
|
18
25
|
```
|
19
26
|
|
20
|
-
|
27
|
+
次のコマンドを実行します (アプリケーションに追加しない場合は無視してください):
|
21
28
|
|
22
29
|
$ bundle install
|
23
30
|
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
### 環境変数設定
|
29
|
-
環境変数を設定する必要があるため、`~/.bashrc` などに環境変数を以下のように設定してください。
|
31
|
+
### ログイン設定
|
32
|
+
API を利用するにはユーザー ID や API キーなどを設定する必要があるため、
|
33
|
+
`~/.tttconfig` に以下のように設定を書き込んでください。
|
30
34
|
|
31
|
-
```
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
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
|
-
`:
|
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
|
-
|
8
|
-
|
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
|
-
|
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[
|
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
|
data/lib/tttrans/version.rb
CHANGED
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.
|
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
|
-
|
16
|
-
key:
|
34
|
+
url, {
|
35
|
+
key: api_key,
|
17
36
|
type: "json",
|
18
|
-
name:
|
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.
|
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:
|
14
|
+
name: inifile
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 0.
|
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.
|
26
|
+
version: 3.0.0
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
|
-
name:
|
28
|
+
name: oauth
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: 0.
|
34
|
-
type: :
|
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.
|
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
|