jekyll-chatgpt-translate 0.0.31 → 0.0.32
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 +1 -1
- data/features/cli.feature +38 -0
- data/jekyll-chatgpt-translate.gemspec +1 -1
- data/lib/jekyll-chatgpt-translate/generator.rb +6 -2
- data/lib/jekyll-chatgpt-translate/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a186798ad4c85bb986a0ad9aa25a8b3c659af36f4ee351ab4b8c0a6ddc407f90
|
4
|
+
data.tar.gz: b7fac01e0df9bc04f2d977f729b6bfc6aa28997775346610c76e3b2df0736c71
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 135850d3b8d6a9bbeabde741e5cb1c183ab4ead16a5caeb6612e99c0db7f4d9dd310d889b9144b6985af9a003a99f184261ab72eeaffba0aff1dec31e54a45ba
|
7
|
+
data.tar.gz: fad830cf25f4bf56ad35216da0132c4911c08ad85de7dd5a25e79f583e3a06781eccc5529588f5d511e800f300cd0d01520559d7758723558118561e3b4142c9
|
data/.rubocop.yml
CHANGED
data/features/cli.feature
CHANGED
@@ -168,3 +168,41 @@ Feature: Simple site building
|
|
168
168
|
And File "_site/2023/01/01/hello.html" contains "/bye.html"
|
169
169
|
And File "_site/2023/02/02/bye.html" exists
|
170
170
|
And File "_site/2023/02/02/bye.html" contains "/hello.html"
|
171
|
+
|
172
|
+
Scenario: No translation at all
|
173
|
+
Given I have a "_config.yml" file with content:
|
174
|
+
"""
|
175
|
+
url: https://www.yegor256.com
|
176
|
+
markdown: kramdown
|
177
|
+
plugins:
|
178
|
+
- jekyll-chatgpt-translate
|
179
|
+
chatgpt-translate:
|
180
|
+
source: en
|
181
|
+
threshold: 0
|
182
|
+
api_key: "it-is-not-used, because EN to EN translation"
|
183
|
+
layout: default
|
184
|
+
targets:
|
185
|
+
-
|
186
|
+
language: en
|
187
|
+
permalink: :slug.html
|
188
|
+
"""
|
189
|
+
And I have a "_layouts/default.html" file with content:
|
190
|
+
"""
|
191
|
+
{{ content }}
|
192
|
+
"""
|
193
|
+
And I have a "_posts/2023-01-01-hello.md" file with content:
|
194
|
+
"""
|
195
|
+
---
|
196
|
+
title: foo
|
197
|
+
---
|
198
|
+
{% if page.chatgpt-translate.model %}
|
199
|
+
TRANSLATED :(
|
200
|
+
{% else %}
|
201
|
+
NO TRANSLATION! :)
|
202
|
+
{% endif %}
|
203
|
+
"""
|
204
|
+
Then I build Jekyll site
|
205
|
+
And Exit code is zero
|
206
|
+
And Stdout contains "The page is absent, need to translate"
|
207
|
+
And File "_site/2023/01/01/hello.html" exists
|
208
|
+
And File "_site/2023/01/01/hello.html" contains "NO TRANSLATION!"
|
@@ -28,7 +28,7 @@ Gem::Specification.new do |s|
|
|
28
28
|
s.required_rubygems_version = Gem::Requirement.new('>= 0') if s.respond_to? :required_rubygems_version=
|
29
29
|
s.required_ruby_version = '>= 2.6'
|
30
30
|
s.name = 'jekyll-chatgpt-translate'
|
31
|
-
s.version = '0.0.
|
31
|
+
s.version = '0.0.32'
|
32
32
|
s.license = 'MIT'
|
33
33
|
s.summary = 'Translate Jekyll Pages Through ChatGPT'
|
34
34
|
s.description = [
|
@@ -60,7 +60,7 @@ class GptTranslate::Generator < Jekyll::Generator
|
|
60
60
|
copied = 0
|
61
61
|
model = config['model'] || 'gpt-3.5-turbo'
|
62
62
|
marker = "Translated by ChatGPT #{model}#{version.empty? ? '' : "/#{version}"}"
|
63
|
-
site.posts.docs.shuffle.
|
63
|
+
site.posts.docs.shuffle.each_with_index do |doc, pos|
|
64
64
|
plain = GptTranslate::Plain.new(doc.content).to_s
|
65
65
|
config['targets'].each do |target|
|
66
66
|
start = Time.now
|
@@ -86,12 +86,14 @@ class GptTranslate::Generator < Jekyll::Generator
|
|
86
86
|
)
|
87
87
|
html = config['no_download'].nil? ? GptTranslate::Ping.new(site, link).download : nil
|
88
88
|
needed = false
|
89
|
+
added = false
|
89
90
|
if html.nil?
|
90
91
|
Jekyll.logger.info("The page is absent, need to translate #{link.inspect}")
|
91
92
|
needed = true
|
92
93
|
else
|
93
94
|
copied += 1
|
94
95
|
site.static_files << DownloadedFile.new(site, link, html)
|
96
|
+
added = true
|
95
97
|
if version.empty?
|
96
98
|
Jekyll.logger.info("Re-translation not required, since version is empty: #{link.inspect}")
|
97
99
|
elsif html.include?(marker)
|
@@ -103,7 +105,7 @@ class GptTranslate::Generator < Jekyll::Generator
|
|
103
105
|
end
|
104
106
|
end
|
105
107
|
if translated >= threshold
|
106
|
-
Jekyll.logger.info("
|
108
|
+
Jekyll.logger.info("Page ##{pos} is ignored, we are over the threshold of #{threshold}: #{link}")
|
107
109
|
elsif needed
|
108
110
|
gpt = GptTranslate::ChatGPT.new(
|
109
111
|
key,
|
@@ -124,10 +126,12 @@ class GptTranslate::Generator < Jekyll::Generator
|
|
124
126
|
)
|
125
127
|
site.pages << Jekyll::Page.new(site, site.source, File.dirname(path), File.basename(path))
|
126
128
|
site.static_files.delete_if { |f| f.is_a?(DownloadedFile) && f.link == link }
|
129
|
+
added = true
|
127
130
|
translated += 1
|
128
131
|
Jekyll.logger.info("Translated via ChatGPT \
|
129
132
|
in #{(Time.now - start).round(2)}s: #{path} (#{File.size(path)} bytes)")
|
130
133
|
end
|
134
|
+
next unless added
|
131
135
|
doc.data['chatgpt-translate'] ||= {}
|
132
136
|
doc.data['chatgpt-translate']['model'] ||= model
|
133
137
|
doc.data['chatgpt-translate']['urls'] ||= {}
|