nblog_duo 0.0.6 → 0.0.7

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.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/nblog_duo.rb +1551 -1332
  3. metadata +2 -2
data/lib/nblog_duo.rb CHANGED
@@ -16,7 +16,10 @@ require 'uri'
16
16
  require 'cgi'
17
17
  require 'digest'
18
18
  require 'auto_click'
19
+ require 'rainbow/refinement'
19
20
  include AutoClickMethods
21
+ using Rainbow
22
+ include Glimmer
20
23
 
21
24
  class Chat
22
25
  def initialize(api_key)
@@ -30,10 +33,11 @@ class Chat
30
33
  'Authorization' => 'Bearer ' + @api_key
31
34
  }
32
35
  d = {
33
- 'model' => 'gpt-3.5-turbo',
36
+ #'model' => 'gpt-3.5-turbo',
37
+ 'model' => 'gpt-4',
34
38
  'messages' => [{
35
39
  "role" => "assistant",
36
- "content" => keyword.to_s+" 소개하는 글을 1000자에서 2000자 사이로 만들어줘"
40
+ "content" => keyword.to_s+" 소개하는 글을 1500자에서 2500자 사이로 만들어줘"
37
41
  }]
38
42
  }
39
43
  answer = ''
@@ -64,10 +68,11 @@ class Chat
64
68
  'Authorization' => 'Bearer ' + @api_key
65
69
  }
66
70
  d = {
67
- 'model' => 'gpt-3.5-turbo',
71
+ #'model' => 'gpt-3.5-turbo',
72
+ 'model' => 'gpt-4',
68
73
  'messages' => [{
69
74
  "role" => "assistant",
70
- "content" => keyword.to_s+" 관련된 글을 1000자에서 2000자 사이로 만들어줘"
75
+ "content" => keyword.to_s+" 관련된 글을 1500자에서 2500자 사이로 만들어줘"
71
76
  }]
72
77
  }
73
78
  answer = ''
@@ -98,26 +103,134 @@ class Chat
98
103
  end
99
104
  end
100
105
 
106
+ class Chat_title
107
+ def initialize(api_key)
108
+ @api_key = api_key
109
+ end
110
+
111
+ def message(title)
112
+ url = 'https://api.openai.com/v1/chat/completions'
113
+ headers = {
114
+ 'Content-Type' => 'application/json',
115
+ 'Authorization' => 'Bearer ' + @api_key
116
+ }
117
+ data = {
118
+ 'model' => 'gpt-4',
119
+ 'messages' => [{
120
+ "role" => "system",
121
+ "content" => "너는 매우 친절하고 성의 있게 답변하는 AI 어시스턴트야."
122
+ },
123
+ {
124
+ "role" => "user",
125
+ "content" => "#{title}\n위 문장을 비슷한 길이로 ChatGPT의 멘트는 빼고 표현을 더 추가해서 하나만 만들어줘."
126
+ }]
127
+ }
128
+
129
+ begin
130
+ req = HTTP.headers(headers).post(url, json: data)
131
+ puts "HTTP Status: #{req.status}" # 상태 코드 확인
132
+ response = JSON.parse(req.body.to_s)
133
+ puts "API Response: #{response}" # 전체 응답 출력
134
+
135
+ if req.status == 429
136
+ return "API 요청 제한을 초과했습니다. 플랜 및 할당량을 확인하세요."
137
+ end
138
+
139
+ # 응답 데이터에서 안전하게 값 추출
140
+ answer = response.dig('choices', 0, 'message', 'content')
141
+ answer ||= (title) # 응답이 없을 경우 기본 메시지 설정
142
+ rescue => e
143
+ puts "Error: #{e.message}"
144
+ answer = "오류가 발생했습니다."
145
+ end
146
+
147
+ puts 'API return ==> '
148
+ puts answer
149
+ answer
150
+ end
151
+ end
152
+
153
+ class Chat_content
154
+ def initialize(api_key)
155
+ @api_key = api_key
156
+ end
157
+
158
+ def message(content)
159
+
160
+ url = 'https://api.openai.com/v1/chat/completions'
161
+ headers = {
162
+ 'Content-Type' => 'application/json',
163
+ 'Authorization' => 'Bearer ' + @api_key
164
+ }
165
+ data = {
166
+ 'model' => 'gpt-4',
167
+ 'messages' => [{
168
+ "role" => "system",
169
+ "content" => "너는 매우 친절하고 성의 있게 답변하는 AI 어시스턴트야."
170
+ },
171
+ {
172
+ "role" => "user",
173
+ "content" => "#{content}\nChatGPT의 멘트는 빼고 위 전체적인 내용의 형식을 똑같이 표현을 더 추가하고 유사어로 변경하여 하나 만들어줘! 전화번호,연락처,가격,홈페이지안내 ,상담안내 관련 문구는 유지해야해"
174
+ }]
175
+ }
176
+
177
+ begin
178
+ req = HTTP.headers(headers).post(url, json: data)
179
+ puts "HTTP Status: #{req.status}" # 상태 코드 확인
180
+ response = JSON.parse(req.body.to_s)
181
+ puts "API Response: #{response}" # 전체 응답 출력
182
+
183
+ if req.status == 429
184
+ return "API 요청 제한을 초과했습니다. 플랜 및 할당량을 확인하세요."
185
+ end
186
+
187
+ # 응답 데이터에서 안전하게 값 추출
188
+ answer = response.dig('choices', 0, 'message', 'content')
189
+ answer ||= (content) # 응답이 없을 경우 기본 메시지 설정
190
+ rescue => e
191
+ puts "Error: #{e.message}"
192
+ answer = "오류가 발생했습니다."
193
+ end
194
+
195
+ puts 'API return ==> '
196
+ puts answer
197
+ answer
198
+ end
199
+ end
200
+
201
+
202
+ #############################################gpt############################################
203
+
101
204
  class Naver
102
205
  def initialize
103
206
  @seed = 1
104
- @cookie = ''
105
207
  end
208
+ def chrome_setup(user_id)
209
+ naver_cookie_dir = "C:/naver_cookie"
210
+ FileUtils.mkdir_p(naver_cookie_dir) unless File.exist?(naver_cookie_dir)
211
+ system(%{"C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe" https://naver.com/ --remote-debugging-port=9222 --user-data-dir=C:/naver_cookie/#{user_id}})
106
212
 
107
- def chrome_start(proxy)
213
+ end
214
+ def chrome_start(proxy, user_id)
215
+ naver_cookie_dir = "C:/naver_cookie"
216
+ FileUtils.mkdir_p(naver_cookie_dir) unless File.exist?(naver_cookie_dir)
108
217
  if proxy == ''
109
218
  begin
110
219
  Selenium::WebDriver::Chrome::Service.driver_path = './chromedriver.exe'
111
220
  options = Selenium::WebDriver::Chrome::Options.new
112
- options.add_argument('--start-maximized')
113
- @driver = Selenium::WebDriver.for(:chrome, options: options)
114
-
221
+ options.page_load_strategy = :normal
222
+ options.timeouts = {page_load: 20_000}
223
+ options.page_load_strategy = 'none'
224
+ options.add_argument('--remote-debugging-port=9222')
225
+ options.add_argument('user-data-dir=C:/naver_cookie/' + user_id)
226
+ @driver = Selenium::WebDriver.for(:chrome, capabilities: options)
115
227
  rescue
116
- @driver = Selenium::WebDriver.for :chrome
228
+ @driver = Selenium::WebDriver.for(:chrome, capabilities: options)
117
229
  end
118
230
  else
119
231
  begin
120
232
  Selenium::WebDriver::Chrome::Service.driver_path = './chromedriver.exe'
233
+ options = Selenium::WebDriver::Chrome::Options.new
121
234
  # profile = Selenium::WebDriver::Chrome::Profile.new
122
235
  # profile['network.proxy.type'] = 1
123
236
  # profile['network.proxy.http'] = proxy.split(':')[0]
@@ -125,213 +238,113 @@ class Naver
125
238
  # options = Selenium::WebDriver::Chrome::Options.new
126
239
  # options.profile = profile
127
240
  options = Selenium::WebDriver::Chrome::Options.new
128
- options.add_argument('--start-maximized')
129
241
  options.add_argument '--proxy-server='+proxy.to_s.force_encoding('utf-8').to_s
130
- @driver = Selenium::WebDriver.for(:chrome, options: options)
242
+ options.page_load_strategy = :normal
243
+ options.timeouts = {page_load: 20_000}
244
+ options.page_load_strategy = 'none'
245
+ options.add_argument('--remote-debugging-port=9222')
246
+ options.add_argument('user-data-dir=C:/naver_cookie/' + user_id)
247
+ @driver = Selenium::WebDriver.for(:chrome, capabilities: options)
131
248
  rescue => e
132
249
  puts e
133
250
  puts 'proxy error...'
134
251
  begin
135
252
  Selenium::WebDriver::Chrome::Service.driver_path = './chromedriver.exe'
136
253
  options = Selenium::WebDriver::Chrome::Options.new
137
- options.add_argument('--start-maximized')
138
- @driver = Selenium::WebDriver.for(:chrome, options: options)
254
+ options.page_load_strategy = :normal
255
+ options.timeouts = {page_load: 20_000}
256
+ options.page_load_strategy = 'none'
257
+ options.add_argument('--remote-debugging-port=9222')
258
+ options.add_argument('user-data-dir=C:/naver_cookie/' + user_id)
259
+ @driver = Selenium::WebDriver.for(:chrome, capabilities: options)
139
260
  rescue
140
- @driver = Selenium::WebDriver.for :chrome
261
+ @driver = Selenium::WebDriver.for(:chrome, capabilities: options)
141
262
  end
142
263
  end
143
264
  end
144
265
  end
145
266
 
267
+
268
+
146
269
  def login(user_id, user_pw, proxy)
147
270
  @user_id = user_id
148
271
  @user_id11 = user_id
149
- chrome_start(proxy)
150
- @driver.get('https://www.naver.com')
151
- sleep(1)
152
- user_cookie_file = Array.new
153
- begin
154
- Dir.entries('./cookie').each do |i|
155
- if i == '.' or i == '..'
272
+ current_dir = File.dirname(__FILE__)
273
+ naver_cookie_dir = "C:/naver_cookie"
274
+ FileUtils.mkdir_p(naver_cookie_dir) unless File.exist?(naver_cookie_dir)
156
275
 
157
- else
158
- user_cookie_file << i
159
- end
276
+
277
+
278
+ unless File.exist?("C:/naver_cookie/" + user_id)
279
+ driverfile_src = File.join(current_dir, 'driverfile')
280
+ if Dir.exist?(driverfile_src)
281
+ FileUtils.cp_r(driverfile_src, "C:/naver_cookie/" + user_id)
282
+
160
283
  end
161
- rescue
284
+ end
162
285
 
163
- end
286
+ # 새로운 스레드 생성 및 실행
287
+ Thread.new { chrome_setup(user_id) }
288
+ sleep(3)
164
289
 
165
- @cookie4 = Hash.new
166
- if user_cookie_file.include?(user_id+'.txt')
167
- f = File.open('./cookie/'+user_id+'.txt', 'r')
168
- @cookie4 = JSON.parse(f.read())
169
- f.close
170
- end
171
290
 
172
- begin
173
- @cookie4.each do |i|
174
- p i
175
- @driver.manage.add_cookie(name: i['name'], value: i['value'], same_site: i['same_site'], domain: i['domain'], path: i['path'])
176
- end
177
- rescue
291
+ chrome_start(proxy, user_id)
292
+ @driver.get('https://www.naver.com')
293
+ puts'[Step.01] 계정 로그인 및 세션 확인.......'.yellow
294
+
178
295
 
179
- end
180
296
  sleep(1)
181
- @driver.get('https://www.naver.com')
297
+
182
298
  begin
183
- # begin
184
- # @driver.switch_to.frame(@driver.find_element(:xpath, '//*[@id="minime"]'))
185
- # rescue
186
-
187
- # end
188
- @driver.find_element(:xpath, '//*[@id="account"]/div/a').click
299
+ wait = Selenium::WebDriver::Wait.new(:timeout => 3)
300
+ #요소가 나타날 때까지 3초 동안 기다립니다.
301
+ wait.until { @driver.find_element(:xpath, '//*[@class="MyView-module__link_login___HpHMW"]') }
302
+ sleep(1.5)
303
+ @driver.find_element(:xpath, '//*[@class="MyView-module__link_login___HpHMW"]').click
189
304
  check_cookie_login = 0
305
+ sleep(1)
190
306
  rescue
191
307
  check_cookie_login = 1
308
+ puts'[Step.02] 계정 세션 확인!! 로그인 skip.......'.yellow
309
+ sleep(2.5)
192
310
  end
193
311
 
194
312
  if check_cookie_login == 0
313
+ puts'[Step.02] 계정 세션이 없거나 기간 만료로 인해 로그인 시도.......'.yellow
195
314
  # @driver.find_element(:xpath, '//*[@id="right-content-area"]/div[1]/div[1]/div/a').click
196
-
197
- wait = Selenium::WebDriver::Wait.new(:timeout => 60)
198
- #요소가 나타날 때까지 60초 동안 기다립니다.
199
- wait.until { @driver.find_element(:xpath, '//*[@aria-label="아이디 또는 전화번호"]') }
200
-
201
- sleep(2)
315
+ sleep(3)
316
+ wait = Selenium::WebDriver::Wait.new(:timeout => 3)
317
+ #요소가 나타날 때까지 3초 동안 기다립니다.
318
+ wait.until { @driver.find_element(:xpath, '//*[@for="switch"]') }
319
+ sleep(1.5)
320
+ @driver.find_element(:xpath, '//*[@id="login_keep_wrap"]/div[1]/label').click
321
+ sleep(1.5)
202
322
  @driver.find_element(:xpath, '//*[@id="id"]').click
203
323
  Clipboard.copy(user_id)
204
324
  @driver.action.key_down(:control).send_keys('v').key_up(:control).perform
205
- sleep(2)
325
+ sleep(1.5)
206
326
  @driver.find_element(:xpath, '//*[@id="pw"]').click
207
327
  Clipboard.copy(user_pw)
208
328
  @driver.action.key_down(:control).send_keys('v').key_up(:control).perform
209
- sleep(2)
210
- @driver.find_element(:xpath, '//*[@class="switch_btn"]').click
211
- sleep(3)
329
+ sleep(1.5)
212
330
  @driver.find_element(:xpath, '//*[@id="log.login"]').click
213
- sleep(3)
331
+ sleep(2.5)
214
332
 
215
-
216
333
  else
217
334
  # @driver.switch_to.default_content
218
335
  end
219
336
 
220
- @cookie = ''
221
- cookie2 = Array.new
222
- @driver.manage.all_cookies.each do |i|
223
- puts i
224
- @cookie += i[:name]+'='+i[:value]+'; '
225
- cookie2 << i
226
- end
227
-
228
- File.open('./cookie/'+user_id+'.txt', 'w') do |ff|
229
- ff.write(cookie2.to_json)
230
- end
231
-
232
- sleep(2)
233
337
  begin
234
- # 타임아웃을 10초로 설정
235
- wait = Selenium::WebDriver::Wait.new(:timeout => 10)
236
- #요소가 나타날 때까지 10초 동안 기다립니다.
237
- wait.until { @driver.find_element(:xpath, '//*[@role="region"]') }
238
- @driver.find_element(:xpath, '//*[@role="region"]')
239
- sleep(2)
338
+ wait = Selenium::WebDriver::Wait.new(:timeout => 3)
339
+ #요소가 나타날 때까지 3초 동안 기다립니다.
340
+ wait.until { @driver.find_element(:xpath, '//*[@class="MyView-module__btn_logout___bsTOJ"]') }
341
+
240
342
  rescue => e
241
- puts '로그인 실패!! 제한 및 ID/PW 확인 해주세요!!'
242
- puts '로그인 실패 이유로 다음 계정을 사용합니다.'
343
+ puts '-[√] 로그인 실패!!.......'.red
243
344
  puts e
244
345
  @driver.close
245
- return 0
246
- end
247
- =begin
248
-
249
- sleep(2)
250
- if @driver.current_url.include?('viewPhoneInfo')
251
- #@driver.get('https://blog.naver.com/'+user_id)
252
- sleep(2)
253
- @driver.get('https://blog.naver.com/')
254
-
255
- sleep(1)
256
- # 타임아웃을 10초로 설정
257
- wait = Selenium::WebDriver::Wait.new(:timeout => 10)
258
- #요소가 나타날 때까지 10초 동안 기다립니다.
259
- wait.until { @driver.find_element(:xpath, '//*[@alt="로그아웃"]') }
260
- @driver.find_element(:xpath, '//*[@alt="로그아웃"]')
261
- sleep(2)
262
-
263
- @driver.find_element(:xpath, '//*[@alt="내 블로그"]').click
264
- sleep(1)
265
- #@driver.find_element(:xpath, '//*[@id="account"]/div[3]/div[2]/div[1]/a[2]').click
266
- sleep(1)
267
- @driver.switch_to.window(@driver.window_handles[1])
268
- @user_id = @driver.current_url.split('/')[-1]
269
- @url = 'https://blog.naver.com/'+@user_id
270
- @driver.close
271
- @driver.switch_to.window(@driver.window_handles[0])
272
- return 1
273
- else
274
- begin
275
- sleep(2)
276
- # @driver.switch_to.frame(@driver.find_element(:xpath, '//*[@id="my-iframe"]'))
277
- # puts @driver.find_element(:xpath, '/html/body/div/div/div[1]/div[1]/a[1]').text
278
- # @driver.find_element(:xpath, '//*[@id="account"]/div[2]/div/div/ul/li[3]/a/span').click
279
- # sleep(1)
280
- # @driver.find_element(:xpath, '//*[@id="account"]/div[2]/div/div/ul/li[3]/a/span')
281
- #@driver.get('https://blog.naver.com/'+user_id)
282
-
283
- @driver.get('https://blog.naver.com/')
284
-
285
- sleep(1)
286
- # 타임아웃을 10초로 설정
287
- wait = Selenium::WebDriver::Wait.new(:timeout => 10)
288
- #요소가 나타날 때까지 10초 동안 기다립니다.
289
- wait.until { @driver.find_element(:xpath, '//*[@alt="로그아웃"]') }
290
- @driver.find_element(:xpath, '//*[@alt="로그아웃"]')
291
- sleep(2)
292
-
293
-
294
- sleep(3)
295
- @driver.find_element(:xpath, '//*[@alt="내 블로그"]').click
296
- sleep(1)
297
- #@driver.find_element(:xpath, '//*[@id="account"]/div[3]/div[2]/div[1]/a[2]').click
298
- #sleep(1)
299
- sleep(1)
300
- @driver.switch_to.window(@driver.window_handles[1])
301
- @user_id = @driver.current_url.split('/')[-1]
302
- @url = 'https://blog.naver.com/'+@user_id
303
- @driver.close
304
- @driver.switch_to.window(@driver.window_handles[0])
305
- return 1
306
- rescue => e
307
- puts e
308
- @driver.close
309
- return 0
310
- end
346
+ return 0
311
347
  end
312
- =end
313
- end
314
-
315
-
316
- def title_action(text)
317
- #제목
318
- @driver.find_element(:xpath, '/html/body/div[1]/div/div[3]/div/div/div[1]/div/div[1]/div[2]/section/article/div[1]/div[1]/div').click
319
- Clipboard.copy(text)
320
- @driver.action.key_down(:control).send_keys('v').key_up(:control).perform
321
- end
322
-
323
- def update_test
324
- #@driver.get('https://blog.naver.com/'+@user_id+'?Redirect=Write')
325
- @driver.get('https://blog.naver.com/GoBlogWrite.naver')
326
- sleep(1)
327
- wait = Selenium::WebDriver::Wait.new(:timeout => 60)
328
- #요소가 나타날 때까지 30초 동안 기다립니다.
329
- wait.until { @driver.find_element(:xpath, '//*[@id="mainFrame"]') }
330
- sleep(1)
331
- @driver.switch_to.frame(@driver.find_element(:xpath, '//*[@id="mainFrame"]'))
332
-
333
- title_action('제목 test')
334
-
335
348
  end
336
349
 
337
350
  def create_id
@@ -521,6 +534,7 @@ class Naver
521
534
  puts myJSON
522
535
  return myJSON
523
536
  end
537
+
524
538
 
525
539
  def update(title, content, option, soosick_1, soosick_2, dd_time)
526
540
  #@driver.get(@url+'?Redirect=Write')
@@ -2108,6 +2122,14 @@ class Wordpress
2108
2122
  end
2109
2123
  end
2110
2124
  end
2125
+
2126
+ if @data['포스트설정']['gpt제목'].checked?
2127
+ chat = Chat_title.new(@data['포스트설정']['api_key'].text.to_s.force_encoding('utf-8'))
2128
+ gpt_text1 = chat.message(title)
2129
+ title = gpt_text1.to_s
2130
+ end
2131
+
2132
+
2111
2133
  @data['table'][index][-1] = 5
2112
2134
  @data['table'] << []
2113
2135
  @data['table'].pop
@@ -2145,6 +2167,24 @@ class Wordpress
2145
2167
  end
2146
2168
  end
2147
2169
  end
2170
+
2171
+ if @data['포스트설정']['gpt내용'].checked?
2172
+ api_key = @data['포스트설정']['api_key'].text.to_s.force_encoding('utf-8')
2173
+ #key_change = @data['포스트설정']['특정단어키워드로변경값'].text.to_s.force_encoding('utf-8')
2174
+ #imotcon_change = @data['포스트설정']['스티커로변경단어'].text.to_s.force_encoding('utf-8')
2175
+ #template_change = @data['포스트설정']['내템플릿변경단어'].text.to_s.force_encoding('utf-8')
2176
+ #ttdanar_change = @data['포스트설정']['단어링크적용단어'].text.to_s.force_encoding('utf-8')
2177
+ #sajine_change = @data['포스트설정']['단어사진으로변경단어'].text.to_s.force_encoding('utf-8')
2178
+ #mov_change = @data['포스트설정']['영상으로변경단어'].text.to_s.force_encoding('utf-8')
2179
+ #map_change = @data['포스트설정']['지도로변경단어'].text.to_s.force_encoding('utf-8')
2180
+ #inyong9_change = @data['포스트설정']['인용구변경단어'].text.to_s.force_encoding('utf-8')
2181
+
2182
+
2183
+ chat = Chat_content.new(api_key)
2184
+ gpt_text3 = chat.message(content)
2185
+ content = gpt_text3.to_s
2186
+ end
2187
+
2148
2188
  content_tag = content.split('@##@')[1]
2149
2189
  content = content.split('@##@')[0]
2150
2190
  @data['table'][index][-1] = 15
@@ -2343,7 +2383,7 @@ class Wordpress
2343
2383
  @data['table'][index][-1] = 50
2344
2384
  @data['table'] << []
2345
2385
  @data['table'].pop
2346
- if @data['포스트설정']['gpt'].checked?
2386
+ if @data['포스트설정']['gpt키워드'].checked?
2347
2387
  chat = Chat.new(@data['포스트설정']['api_key'].text.to_s.force_encoding('utf-8'))
2348
2388
  gpt_text = chat.message(keyword)
2349
2389
  content = content.to_s + "\n(자동생성글)\n" + gpt_text.to_s
@@ -2364,7 +2404,7 @@ class Wordpress
2364
2404
  joongbok_check = 0
2365
2405
  counter10 = 0
2366
2406
  while joongbok_check == 0
2367
- if @data['포스트설정']['내용과자동생성'].checked? or @data['포스트설정']['gpt'].checked?
2407
+ if @data['포스트설정']['내용과자동생성'].checked? or @data['포스트설정']['gpt키워드'].checked?
2368
2408
  content22 = content.split("(자동생성글)")[1].split("\n")
2369
2409
  else
2370
2410
  content22 = content.split("\n")
@@ -2388,12 +2428,12 @@ class Wordpress
2388
2428
  content2 = content.split("\n")
2389
2429
  end
2390
2430
 
2391
- if @data['포스트설정']['내용과자동생성'].checked? or @data['포스트설정']['gpt'].checked?
2431
+ if @data['포스트설정']['내용과자동생성'].checked? or @data['포스트설정']['gpt키워드'].checked?
2392
2432
  content2 = content.split("(자동생성글)")[1].split("\n")
2393
2433
  position.pop
2394
2434
  end
2395
2435
 
2396
- if @data['포스트설정']['내용과자동생성'].checked? == false and @data['포스트설정']['내용을자동생성'].checked? == false and @data['포스트설정']['gpt'].checked? == false
2436
+ if @data['포스트설정']['내용과자동생성'].checked? == false and @data['포스트설정']['내용을자동생성'].checked? == false and @data['포스트설정']['gpt키워드'].checked? == false
2397
2437
  content2 = content.split("\n")
2398
2438
  end
2399
2439
 
@@ -2439,7 +2479,7 @@ class Wordpress
2439
2479
  content = content3.join("\n")
2440
2480
  end
2441
2481
 
2442
- if @data['포스트설정']['내용과자동생성'].checked? or @data['포스트설정']['gpt'].checked?
2482
+ if @data['포스트설정']['내용과자동생성'].checked? or @data['포스트설정']['gpt키워드'].checked?
2443
2483
  content2.each_with_index do |con, index|
2444
2484
  if position.include?(index)
2445
2485
  insert_keyword_text = keyword.to_s
@@ -2469,7 +2509,7 @@ class Wordpress
2469
2509
  end
2470
2510
  end
2471
2511
 
2472
- if @data['포스트설정']['내용과자동생성'].checked? == false and @data['포스트설정']['내용을자동생성'].checked? == false and @data['포스트설정']['gpt'].checked? == false
2512
+ if @data['포스트설정']['내용과자동생성'].checked? == false and @data['포스트설정']['내용을자동생성'].checked? == false and @data['포스트설정']['gpt키워드'].checked? == false
2473
2513
  begin
2474
2514
  content2.each_with_index do |con, index|
2475
2515
  if position.include?(index)
@@ -2564,7 +2604,7 @@ class Wordpress
2564
2604
  end
2565
2605
  end
2566
2606
 
2567
- if @data['포스트설정']['내용과자동생성'].checked? or @data['포스트설정']['gpt'].checked?
2607
+ if @data['포스트설정']['내용과자동생성'].checked? or @data['포스트설정']['gpt키워드'].checked?
2568
2608
  if @data['포스트설정']['자동글 수식에 입력'].checked?
2569
2609
  content5 = content.split("(자동생성글)")[0].to_s.split("\n")
2570
2610
  content55 = content.split("(자동생성글)")[1].to_s
@@ -2639,7 +2679,7 @@ class Wordpress
2639
2679
  ###여기까지 이미지 순서대로 안되서 변경##-------------------------------------------------------------------------------
2640
2680
 
2641
2681
  ##여기서부터 이미지 순서대로 수정코드 변경####-------------------------------------------------------------------------------
2642
- if @data['포스트설정']['내용과자동생성'].checked? or @data['포스트설정']['gpt'].checked?
2682
+ if @data['포스트설정']['내용과자동생성'].checked? or @data['포스트설정']['gpt키워드'].checked?
2643
2683
  sleep(2)
2644
2684
  puts '이미지 자동 세탁 중 · · · '
2645
2685
  end
@@ -2658,7 +2698,7 @@ class Wordpress
2658
2698
  end
2659
2699
  sleep(2)
2660
2700
  puts '이미지 자동 세탁 완료 · · · '
2661
- if @data['포스트설정']['내용과자동생성'].checked? or @data['포스트설정']['gpt'].checked?
2701
+ if @data['포스트설정']['내용과자동생성'].checked? or @data['포스트설정']['gpt키워드'].checked?
2662
2702
  content = content5.join("\n")+'(자동생성글)'+content55
2663
2703
  puts content
2664
2704
  else
@@ -2680,7 +2720,7 @@ class Wordpress
2680
2720
  content = content.split(i.force_encoding('utf-8')).join(keyword)
2681
2721
  end
2682
2722
  end
2683
-
2723
+
2684
2724
  @data['table'][index][-1] = 75
2685
2725
  @data['table'] << []
2686
2726
  @data['table'].pop
@@ -2758,7 +2798,7 @@ class Wordpress
2758
2798
  content = content.split(i.force_encoding('utf-8')).join("<sticker></sticker>")
2759
2799
  end
2760
2800
  end
2761
-
2801
+
2762
2802
 
2763
2803
 
2764
2804
  if @data['포스트설정']['내템플릿사용하기'].checked?
@@ -2812,7 +2852,7 @@ class Wordpress
2812
2852
  content = content
2813
2853
  soosick_1 = content_end
2814
2854
  else
2815
- if @data['포스트설정']['gpt'].checked?
2855
+ if @data['포스트설정']['gpt키워드'].checked?
2816
2856
  if @data['포스트설정']['gpt상단'].checked?
2817
2857
  content = content_end+"\n"+content+"\n"
2818
2858
  else
@@ -3486,1261 +3526,1440 @@ class Wordpress
3486
3526
  }
3487
3527
  }
3488
3528
  }
3489
- tab_item('내용설정'){
3529
+ tab_item('내용설정'){
3530
+ horizontal_box{
3531
+ vertical_box{
3490
3532
  horizontal_box{
3491
- vertical_box{
3492
- horizontal_box{
3493
- stretchy false
3494
- button('키워드불러오기'){
3495
- on_clicked{
3496
- file = open_file
3497
- if file != nil
3498
- file_data = File.open(file, 'r', :encoding => 'utf-8').read()
3499
- file_data.split("\n").each do |keyword|
3500
- if keyword.split(' ').join('').length < 2
3501
-
3502
- else
3503
- @data['키워드설정']['키워드'] << [false, keyword]
3504
- @data['키워드설정']['키워드'] << [false, keyword]
3505
- @data['키워드설정']['키워드'].pop
3506
- end
3507
- end
3508
- end
3509
-
3510
- }
3511
- }
3533
+ stretchy false
3534
+ button('키워드불러오기'){
3535
+ on_clicked{
3536
+ file = open_file
3537
+ if file != nil
3538
+ file_data = File.open(file, 'r', :encoding => 'utf-8').read()
3539
+ file_data.split("\n").each do |keyword|
3540
+ if keyword.split(' ').join('').length < 2
3512
3541
 
3513
- }
3514
- horizontal_box{
3515
- stretchy false
3516
- grid{
3517
- button('전체선택'){
3518
- top 1
3519
- left 1
3520
- on_clicked{
3521
- for n in 0..@data['키워드설정']['키워드'].length-1
3522
- @data['키워드설정']['키워드'][n][0] = true
3523
- @data['키워드설정']['키워드'] << []
3524
- @data['키워드설정']['키워드'].pop
3525
- end
3526
- }
3527
- }
3528
- button('선택해제'){
3529
- top 1
3530
- left 2
3531
- on_clicked{
3532
- for n in 0..@data['키워드설정']['키워드'].length-1
3533
- @data['키워드설정']['키워드'][n][0] = false
3534
- @data['키워드설정']['키워드'] << []
3542
+ else
3543
+ @data['키워드설정']['키워드'] << [false, keyword]
3544
+ @data['키워드설정']['키워드'] << [false, keyword]
3535
3545
  @data['키워드설정']['키워드'].pop
3536
3546
  end
3537
- }
3538
- }
3539
- button('삭제하기'){
3540
- top 1
3541
- left 3
3542
- on_clicked{
3543
- m = Array.new
3544
- for n in 0..@data['키워드설정']['키워드'].length-1
3545
- if @data['키워드설정']['키워드'][n][0] == true
3546
- m << n
3547
- end
3548
- end
3547
+ end
3548
+ end
3549
3549
 
3550
- m.reverse.each do |i|
3551
- @data['키워드설정']['키워드'].delete_at(i)
3552
- end
3553
- @data['키워드설정']['키워드'].delete(nil)
3554
- }
3555
- }
3556
- }
3557
-
3558
- @data['키워드설정']['순서사용'] = checkbox('순서사용'){
3559
- stretchy false
3560
- on_toggled{ |c|
3561
- if c.checked?
3562
- @data['키워드설정']['랜덤사용'].checked = false
3563
- end
3564
- }
3565
- }
3566
- @data['키워드설정']['랜덤사용'] = checkbox('랜덤사용'){
3567
- stretchy false
3568
- on_toggled{ |c|
3569
- if c.checked?
3570
- @data['키워드설정']['순서사용'].checked = false
3571
- end
3572
- }
3573
- }
3574
3550
  }
3575
- table{
3576
- checkbox_column('선택'){
3577
- editable true
3578
- }
3579
- text_column('키워드'){
3580
-
3581
- }
3551
+ }
3582
3552
 
3583
- cell_rows @data['키워드설정']['키워드']
3553
+ }
3554
+ horizontal_box{
3555
+ stretchy false
3556
+ grid{
3557
+ button('전체선택'){
3558
+ top 1
3559
+ left 1
3560
+ on_clicked{
3561
+ for n in 0..@data['키워드설정']['키워드'].length-1
3562
+ @data['키워드설정']['키워드'][n][0] = true
3563
+ @data['키워드설정']['키워드'] << []
3564
+ @data['키워드설정']['키워드'].pop
3565
+ end
3584
3566
  }
3585
-
3586
3567
  }
3587
- vertical_separator{
3588
- stretchy false
3589
- }
3590
- vertical_box{
3591
- horizontal_box{
3592
- stretchy false
3593
- button('제목불러오기'){
3594
- on_clicked{
3595
- file = open_file
3596
- if file != nil
3597
- file_data = File.open(file, 'r', :encoding => 'utf-8').read()
3598
- file_data.split("\n").each do |title|
3599
- if title.split(" ").join('').length < 2
3600
-
3601
- else
3602
- @data['제목설정']['제목'] << [false, title]
3603
- @data['제목설정']['제목'] << [false, title]
3604
- @data['제목설정']['제목'].pop
3605
- end
3606
- end
3607
- end
3608
- }
3609
- }
3610
-
3568
+ button('선택해제'){
3569
+ top 1
3570
+ left 2
3571
+ on_clicked{
3572
+ for n in 0..@data['키워드설정']['키워드'].length-1
3573
+ @data['키워드설정']['키워드'][n][0] = false
3574
+ @data['키워드설정']['키워드'] << []
3575
+ @data['키워드설정']['키워드'].pop
3576
+ end
3611
3577
  }
3612
- horizontal_box{
3613
- stretchy false
3614
- grid{
3615
- button('전체선택'){
3616
- top 1
3617
- left 1
3618
- on_clicked{
3619
- for n in 0..@data['제목설정']['제목'].length-1
3620
- @data['제목설정']['제목'][n][0] = true
3621
- @data['제목설정']['제목'] << []
3622
- @data['제목설정']['제목'].pop
3623
- end
3624
- }
3625
- }
3626
- button('선택해제'){
3627
- top 1
3628
- left 2
3629
- on_clicked{
3630
- for n in 0..@data['제목설정']['제목'].length-1
3631
- @data['제목설정']['제목'][n][0] = false
3632
- @data['제목설정']['제목'] << []
3633
- @data['제목설정']['제목'].pop
3634
- end
3635
- }
3636
- }
3637
- button('삭제하기'){
3638
- top 1
3639
- left 3
3640
- on_clicked{
3641
- m = Array.new
3642
- for n in 0..@data['제목설정']['제목'].length-1
3643
- if @data['제목설정']['제목'][n][0] == true
3644
- m << n
3645
- end
3646
- end
3578
+ }
3579
+ button('삭제하기'){
3580
+ top 1
3581
+ left 3
3582
+ on_clicked{
3583
+ m = Array.new
3584
+ for n in 0..@data['키워드설정']['키워드'].length-1
3585
+ if @data['키워드설정']['키워드'][n][0] == true
3586
+ m << n
3587
+ end
3588
+ end
3647
3589
 
3648
- m.reverse.each do |i|
3649
- @data['제목설정']['제목'].delete_at(i)
3650
- end
3651
- @data['제목설정']['제목'].delete(nil)
3652
- }
3653
- }
3654
- }
3655
- @data['제목설정']['순서사용'] = checkbox('순서사용'){
3656
- stretchy false
3657
- on_toggled{ |c|
3658
- if c.checked?
3659
- @data['제목설정']['랜덤사용'].checked = false
3660
- end
3661
- }
3662
- }
3663
- @data['제목설정']['랜덤사용'] = checkbox('랜덤사용'){
3664
- stretchy false
3665
- on_toggled{ |c|
3666
- if c.checked?
3667
- @data['제목설정']['순서사용'].checked = false
3668
- end
3669
- }
3670
- }
3590
+ m.reverse.each do |i|
3591
+ @data['키워드설정']['키워드'].delete_at(i)
3592
+ end
3593
+ @data['키워드설정']['키워드'].delete(nil)
3671
3594
  }
3672
- table{
3673
- checkbox_column('선택'){
3674
- editable true
3675
- }
3676
- text_column('제목'){
3677
-
3678
- }
3679
-
3680
- cell_rows @data['제목설정']['제목']
3595
+ }
3596
+ }
3597
+
3598
+ @data['키워드설정']['순서사용'] = checkbox('순서사용'){
3599
+ stretchy false
3600
+ on_toggled{ |c|
3601
+ if c.checked?
3602
+ @data['키워드설정']['랜덤사용'].checked = false
3603
+ end
3681
3604
  }
3682
-
3683
3605
  }
3684
- vertical_separator{
3606
+ @data['키워드설정']['랜덤사용'] = checkbox('랜덤사용'){
3685
3607
  stretchy false
3608
+ on_toggled{ |c|
3609
+ if c.checked?
3610
+ @data['키워드설정']['순서사용'].checked = false
3611
+ end
3612
+ }
3613
+ }
3614
+ }
3615
+ vertical_separator{
3616
+ stretchy false
3617
+ }
3618
+ horizontal_box{
3619
+ stretchy false
3620
+ grid{
3621
+ @data['포스트설정']['gpt키워드'] = checkbox('GPT 키워드 기반 글 생성'){
3622
+ top 1
3623
+ left 0
3624
+ #enabled false # 기본적으로 비활성화
3625
+ on_toggled {
3626
+ if @data['포스트설정']['gpt키워드'].checked?
3627
+ @data['포스트설정']['gpt상단'].enabled = true # '내용투명' 활성화
3628
+ @data['포스트설정']['gpt하단'].enabled = true # '내용투명' 활성화
3629
+ else
3630
+ @data['포스트설정']['gpt상단'].checked = false # 체크 해제
3631
+ @data['포스트설정']['gpt상단'].enabled = false # 비활성화
3632
+ @data['포스트설정']['gpt하단'].checked = false # 체크 해제
3633
+ @data['포스트설정']['gpt하단'].enabled = false # 비활성화
3634
+ end
3635
+ }
3636
+
3637
+ }
3638
+
3639
+ @data['포스트설정']['gpt상단'] = checkbox('원고 위에 넣기'){
3640
+ top 1
3641
+ left 1
3642
+ enabled false # 기본적으로 비활성화
3643
+ on_toggled{
3644
+ if @data['포스트설정']['gpt상단'].checked?
3645
+ @data['포스트설정']['gpt하단'].checked = false
3646
+ end
3647
+ }
3686
3648
  }
3687
- vertical_box{
3688
- horizontal_box{
3689
- stretchy false
3690
- button('내용불러오기'){
3691
- on_clicked{
3692
- file = open_file
3693
- if file != nil
3694
- file_name = file.split("\\")[-1]
3695
- file_data = File.open(file,'r', :encoding => 'utf-8').read()
3696
- if file_data.split("\n").length < 2
3697
- file_data = file_data + "\n"
3698
- end
3699
- @data['내용설정']['내용'] << [false, file_name, file_data]
3700
- @data['내용설정']['내용'] << [false, file_name, file_data]
3701
- @data['내용설정']['내용'].pop
3702
- end
3703
- }
3704
- }
3705
3649
 
3650
+ @data['포스트설정']['gpt하단'] = checkbox('원고 아래 넣기'){
3651
+ top 1
3652
+ left 2
3653
+ enabled false # 기본적으로 비활성화
3654
+ on_toggled{
3655
+ if @data['포스트설정']['gpt하단'].checked?
3656
+ @data['포스트설정']['gpt상단'].checked = false
3657
+ end
3706
3658
  }
3707
- horizontal_box{
3708
- stretchy false
3709
- grid{
3710
- button('전체선택'){
3711
- top 1
3712
- left 1
3713
- on_clicked{
3714
- for n in 0..@data['내용설정']['내용'].length-1
3715
- @data['내용설정']['내용'][n][0] = true
3716
- @data['내용설정']['내용'] << []
3717
- @data['내용설정']['내용'].pop
3718
- end
3719
- }
3720
- }
3721
- button('선택해제'){
3722
- top 1
3723
- left 2
3724
- on_clicked{
3725
- for n in 0..@data['내용설정']['내용'].length-1
3726
- @data['내용설정']['내용'][n][0] = false
3727
- @data['내용설정']['내용'] << []
3728
- @data['내용설정']['내용'].pop
3729
- end
3730
- }
3731
- }
3732
- button('삭제하기'){
3733
- top 1
3734
- left 3
3735
- on_clicked{
3736
- m = Array.new
3737
- for n in 0..@data['내용설정']['내용'].length-1
3738
- if @data['내용설정']['내용'][n][0] == true
3739
- m << n
3740
- end
3741
- end
3742
-
3743
- m.reverse.each do |i|
3744
- @data['내용설정']['내용'].delete_at(i)
3745
- end
3746
- @data['내용설정']['내용'].delete(nil)
3747
- }
3748
- }
3749
- }
3750
- @data['내용설정']['순서사용'] = checkbox('순서사용'){
3751
- stretchy false
3752
- on_toggled{ |c|
3753
- if c.checked?
3754
- @data['내용설정']['랜덤사용'].checked = false
3755
- end
3756
- }
3757
- }
3758
- @data['내용설정']['랜덤사용'] = checkbox('랜덤사용'){
3759
- stretchy false
3760
- on_toggled{ |c|
3761
- if c.checked?
3762
- @data['내용설정']['순서사용'].checked = false
3763
- end
3764
- }
3765
- }
3766
- }
3767
- table{
3768
- checkbox_column('선택'){
3769
- editable true
3770
- }
3771
- text_column('내용파일'){
3772
-
3773
- }
3774
-
3775
- cell_rows @data['내용설정']['내용']
3776
- }
3659
+ }
3660
+ } }
3661
+ horizontal_box{
3662
+ stretchy false
3663
+ grid{
3664
+ label('※ GPT 기능 사용시 포스트설정1에서 GPT사용에 체크 필수'){
3665
+ } } }
3666
+
3667
+
3668
+ table{
3669
+ checkbox_column('선택'){
3670
+ editable true
3671
+ }
3672
+ text_column('키워드'){
3777
3673
 
3778
- horizontal_box{
3779
- stretchy false
3780
- @data['이미지설정']['폴더경로2'] = entry{
3781
- stretchy false
3782
- text "내용폴더경로 ex)C:\\내용\\폴더1"
3783
- }
3784
- button('폴더째로불러오기'){
3785
- stretchy false
3786
- on_clicked{
3787
- path = @data['이미지설정']['폴더경로2'].text.to_s.force_encoding('utf-8').force_encoding('utf-8')
3788
- Dir.entries(@data['이미지설정']['폴더경로2'].text.to_s.force_encoding('utf-8')).each do |file|
3789
- if file == '.' or file == '..'
3790
-
3791
- else
3792
- file_data = File.open(path+'/'+file,'r', :encoding => 'utf-8').read()
3793
- @data['내용설정']['내용'] << [false, file, file_data]
3794
- end
3795
- end
3796
- @data['내용설정']['내용'] << []
3797
- @data['내용설정']['내용'].pop
3798
- }
3799
- }
3800
- }
3801
3674
  }
3675
+
3676
+ cell_rows @data['키워드설정']['키워드']
3802
3677
  }
3678
+
3679
+
3680
+
3681
+ }
3682
+ vertical_separator{
3683
+ stretchy false
3803
3684
  }
3804
- tab_item('이미지설정'){
3685
+ vertical_box{
3805
3686
  horizontal_box{
3806
- vertical_box{
3807
- stretchy false
3808
- horizontal_box{
3809
- stretchy false
3810
- button('이미지불러오기'){
3811
- on_clicked{
3812
- file = open_file
3813
- if file != nil
3814
- file_name = file.split("\\")[-1]
3815
- @data['이미지설정']['이미지'] << [false, file_name, file]
3816
- @data['이미지설정']['이미지'] << [false, file_name, file]
3817
- @data['이미지설정']['이미지'].pop
3818
- end
3819
- }
3820
- }
3821
- }
3822
- horizontal_box{
3823
- stretchy false
3824
- grid{
3825
- button('전체선택'){
3826
- top 1
3827
- left 1
3828
- on_clicked{
3829
- for n in 0..@data['이미지설정']['이미지'].length-1
3830
- @data['이미지설정']['이미지'][n][0] = true
3831
- @data['이미지설정']['이미지'] << []
3832
- @data['이미지설정']['이미지'].pop
3833
- end
3834
- }
3835
- }
3836
- button('선택해제'){
3837
- top 1
3838
- left 2
3839
- on_clicked{
3840
- for n in 0..@data['이미지설정']['이미지'].length-1
3841
- @data['이미지설정']['이미지'][n][0] = false
3842
- @data['이미지설정']['이미지'] << []
3843
- @data['이미지설정']['이미지'].pop
3844
- end
3845
- }
3846
- }
3847
- button('삭제하기'){
3848
- top 1
3849
- left 3
3850
- on_clicked{
3851
- m = Array.new
3852
- for n in 0..@data['이미지설정']['이미지'].length-1
3853
- if @data['이미지설정']['이미지'][n][0] == true
3854
- m << n
3855
- end
3856
- end
3857
-
3858
- m.reverse.each do |i|
3859
- @data['이미지설정']['이미지'].delete_at(i)
3860
- end
3687
+ stretchy false
3688
+ button('제목불러오기'){
3689
+ on_clicked{
3690
+ file = open_file
3691
+ if file != nil
3692
+ file_data = File.open(file, 'r', :encoding => 'utf-8').read()
3693
+ file_data.split("\n").each do |title|
3694
+ if title.split(" ").join('').length < 2
3861
3695
 
3862
- @data['이미지설정']['이미지'].delete(nil)
3863
- }
3864
- }
3865
- }
3866
- @data['이미지설정']['순서사용'] = checkbox('순서사용'){
3867
- stretchy false
3868
- on_toggled{ |c|
3869
- if c.checked?
3870
- @data['이미지설정']['랜덤사용'].checked = false
3871
- end
3872
- }
3873
- }
3874
- @data['이미지설정']['랜덤사용'] = checkbox('랜덤사용'){
3875
- stretchy false
3876
- on_toggled{ |c|
3877
- if c.checked?
3878
- @data['이미지설정']['순서사용'].checked = false
3696
+ else
3697
+ @data['제목설정']['제목'] << [false, title]
3698
+ @data['제목설정']['제목'] << [false, title]
3699
+ @data['제목설정']['제목'].pop
3879
3700
  end
3880
- }
3881
- }
3701
+ end
3702
+ end
3882
3703
  }
3883
- table{
3884
- checkbox_column('선택'){
3885
- editable true
3886
- }
3887
- text_column('이미지파일'){
3888
-
3889
- }
3704
+ }
3890
3705
 
3891
- cell_rows @data['이미지설정']['이미지']
3892
- }
3893
- horizontal_box{
3894
- stretchy false
3895
- @data['이미지설정']['폴더경로'] = entry{
3896
- stretchy false
3897
- text "사진폴더경로 ex)C:\\사진\\폴더2"
3898
- }
3899
- button('폴더째로불러오기'){
3900
- stretchy false
3901
- on_clicked{
3902
- path = @data['이미지설정']['폴더경로'].text.to_s.force_encoding('utf-8').force_encoding('utf-8')
3903
- Dir.entries(@data['이미지설정']['폴더경로'].text.to_s.force_encoding('utf-8')).each do |file|
3904
- if file == '.' or file == '..'
3905
-
3906
- else
3907
- @data['이미지설정']['이미지'] << [false, file, path+"\\"+file.force_encoding('utf-8')]
3908
- end
3909
- end
3910
- @data['이미지설정']['이미지'] << []
3911
- @data['이미지설정']['이미지'].pop
3912
- }
3913
- }
3706
+ }
3707
+ horizontal_box{
3708
+ stretchy false
3709
+ grid{
3710
+ button('전체선택'){
3711
+ top 1
3712
+ left 1
3713
+ on_clicked{
3714
+ for n in 0..@data['제목설정']['제목'].length-1
3715
+ @data['제목설정']['제목'][n][0] = true
3716
+ @data['제목설정']['제목'] << []
3717
+ @data['제목설정']['제목'].pop
3718
+ end
3914
3719
  }
3915
-
3916
3720
  }
3917
- vertical_separator{
3918
- stretchy false
3721
+ button('선택해제'){
3722
+ top 1
3723
+ left 2
3724
+ on_clicked{
3725
+ for n in 0..@data['제목설정']['제목'].length-1
3726
+ @data['제목설정']['제목'][n][0] = false
3727
+ @data['제목설정']['제목'] << []
3728
+ @data['제목설정']['제목'].pop
3729
+ end
3730
+ }
3919
3731
  }
3732
+ button('삭제하기'){
3733
+ top 1
3734
+ left 3
3735
+ on_clicked{
3736
+ m = Array.new
3737
+ for n in 0..@data['제목설정']['제목'].length-1
3738
+ if @data['제목설정']['제목'][n][0] == true
3739
+ m << n
3740
+ end
3741
+ end
3920
3742
 
3921
- vertical_box{
3922
- horizontal_box{
3923
- stretchy false
3924
- @data['image_type'][0] = checkbox('저장 사진 사용'){
3925
- on_toggled{
3926
- if @data['image_type'][0].checked?
3927
- @data['image_type'][1].checked = false
3928
- @data['image_type'][2].checked = false
3929
- end
3930
- }
3931
- }
3932
- @data['image_type'][1] = checkbox('색상 사진 사용'){
3933
- on_toggled{
3934
- if @data['image_type'][1].checked?
3935
- @data['image_type'][0].checked = false
3936
- @data['image_type'][2].checked = false
3937
- end
3938
- }
3939
- }
3940
- @data['image_type'][2] = checkbox('자동 다운로드 사진 사용'){
3941
- on_toggled{
3942
- if @data['image_type'][2].checked?
3943
- @data['image_type'][1].checked = false
3944
- @data['image_type'][0].checked = false
3945
- end
3946
- }
3947
- }
3743
+ m.reverse.each do |i|
3744
+ @data['제목설정']['제목'].delete_at(i)
3745
+ end
3746
+ @data['제목설정']['제목'].delete(nil)
3948
3747
  }
3949
-
3950
- grid{
3951
- stretchy false
3952
- @data['이미지설정']['글자삽입1'] = checkbox('글자 삽입1'){
3953
- top 0
3954
- left 0
3955
- }
3956
- button('가져오기'){
3957
- top 0
3958
- left 1
3959
- on_clicked{
3960
- file = open_file
3961
- if file != nil
3962
- file_data = File.open(file, 'r', :encoding => 'utf-8').read()
3963
- @data['이미지설정']['이미지글자1'] = file_data.to_s.split("\n")
3964
- end
3965
- }
3966
- }
3967
- @data['이미지설정']['이미지글자1크기1'] = entry{
3968
- top 0
3969
- left 2
3970
- text 'ex) 33'
3971
- }
3972
- label('pt'){
3973
- top 0
3974
- left 3
3975
- }
3976
- @data['이미지설정']['이미지글자1크기2'] = entry{
3977
- top 0
3978
- left 4
3979
- text 'ex) 55'
3980
- }
3981
- label('pt'){
3982
- top 0
3983
- left 5
3984
- }
3985
- @data['이미지설정']['글자테두리'] = checkbox('글자 테두리'){
3986
- top 0
3987
- left 6
3988
- }
3989
-
3990
- @data['이미지설정']['글자삽입2'] = checkbox('글자 삽입2'){
3991
- top 1
3992
- left 0
3993
- }
3994
- button('가져오기'){
3995
- top 1
3996
- left 1
3997
- on_clicked{
3998
- file = open_file
3999
- if file != nil
4000
- file_data = File.open(file, 'r', :encoding => 'utf-8').read()
4001
- @data['이미지설정']['이미지글자2'] = file_data.split("\n")
4002
- end
4003
- }
4004
- }
4005
- @data['이미지설정']['이미지글자2크기1'] = entry{
4006
- top 1
4007
- left 2
4008
- text 'ex) 33'
4009
- }
4010
- label('pt'){
4011
- top 1
4012
- left 3
4013
- }
4014
- @data['이미지설정']['이미지글자2크기2'] = entry{
4015
- top 1
4016
- left 4
4017
- text 'ex) 55'
4018
- }
4019
- label('pt'){
4020
- top 1
4021
- left 5
4022
- }
4023
- @data['이미지설정']['글자그림자'] = checkbox('글자 그림자'){
4024
- top 1
4025
- left 6
4026
- }
4027
- @data['이미지설정']['필터사용'] = checkbox('필터사용(색상 사진 적용불가)'){
4028
- top 2
4029
- left 0
4030
- }
4031
- @data['이미지설정']['테두리사용'] = checkbox('테두리 사용'){
4032
- top 3
4033
- left 0
4034
- }
4035
- @data['이미지설정']['테두리크기1'] = entry{
4036
- top 3
4037
- left 2
4038
- text 'ex) 1'
4039
- }
4040
- label('pt'){
4041
- top 3
4042
- left 3
4043
- }
4044
- @data['이미지설정']['테두리크기2'] = entry{
4045
- top 3
4046
- left 4
4047
- text 'ex) 33'
4048
- }
4049
- label('pt'){
4050
- top 3
4051
- left 5
4052
- }
4053
-
3748
+ }
3749
+ }
3750
+ @data['제목설정']['순서사용'] = checkbox('순서사용'){
3751
+ stretchy false
3752
+ on_toggled{ |c|
3753
+ if c.checked?
3754
+ @data['제목설정']['랜덤사용'].checked = false
3755
+ end
4054
3756
  }
4055
-
4056
- horizontal_box{
4057
- stretchy false
4058
- @data['image_size'][0] = checkbox('랜덤 px'){
4059
- on_toggled{
4060
- if @data['image_size'][0].checked?
4061
- @data['image_size'][1].checked = false
4062
- @data['image_size'][2].checked = false
4063
- @data['image_size'][3].checked = false
4064
- @data['image_size'][4].checked = false
4065
- end
4066
- }
4067
- }
4068
- @data['image_size'][1] = checkbox('740 px'){
4069
- on_toggled{
4070
- if @data['image_size'][1].checked?
4071
- @data['image_size'][0].checked = false
4072
- @data['image_size'][2].checked = false
4073
- @data['image_size'][3].checked = false
4074
- @data['image_size'][4].checked = false
4075
- end
4076
- }
4077
- }
4078
- @data['image_size'][2] = checkbox('650 px'){
4079
- on_toggled{
4080
- if @data['image_size'][2].checked?
4081
- @data['image_size'][1].checked = false
4082
- @data['image_size'][0].checked = false
4083
- @data['image_size'][3].checked = false
4084
- @data['image_size'][4].checked = false
4085
- end
4086
- }
4087
- }
4088
- @data['image_size'][3] = checkbox('550 px'){
4089
- on_toggled{
4090
- if @data['image_size'][3].checked?
4091
- @data['image_size'][1].checked = false
4092
- @data['image_size'][2].checked = false
4093
- @data['image_size'][0].checked = false
4094
- @data['image_size'][4].checked = false
4095
- end
4096
- }
4097
- }
4098
- @data['image_size'][4] = checkbox('480 px'){
4099
- on_toggled{
4100
- if @data['image_size'][4].checked?
4101
- @data['image_size'][1].checked = false
4102
- @data['image_size'][2].checked = false
4103
- @data['image_size'][3].checked = false
4104
- @data['image_size'][0].checked = false
4105
- end
4106
- }
4107
- }
3757
+ }
3758
+ @data['제목설정']['랜덤사용'] = checkbox('랜덤사용'){
3759
+ stretchy false
3760
+ on_toggled{ |c|
3761
+ if c.checked?
3762
+ @data['제목설정']['순서사용'].checked = false
3763
+ end
4108
3764
  }
4109
3765
  }
4110
3766
  }
4111
- }
4112
-
4113
- tab_item('포스트설정1'){
3767
+ vertical_separator{
3768
+ stretchy false
3769
+ }
4114
3770
  horizontal_box{
4115
- vertical_box{
4116
- stretchy false
4117
- grid{
4118
- stretchy false
4119
- @data['포스트설정']['제목키워드변경'] = checkbox('제목에 특정 단어를 내용에 사용할 키워드로 변경'){
4120
- top 0
4121
- left 0
4122
-
4123
- }
4124
- @data['포스트설정']['제목키워드변경단어'] = entry{
4125
- top 0
4126
- left 1
4127
- text '특정단어'
4128
- }
4129
-
4130
- # @data['포스트설정']['제목단어변경'] = checkbox('제목에 특정 단어를 변경'){
4131
- # top 1
4132
- # left 0
4133
- # }
4134
- # @data['포스트설정']['제목단어변경파일불러오기'] = button('설정 파일 불러오기'){
4135
- # top 1
4136
- # left 1
4137
- # on_clicked{
4138
- # file = open_file
4139
- # if file != nil
4140
- # file_data = File.open(file, 'r', :encoding => 'utf-8').read()
4141
- # file_data.split("\n").each do |i|
4142
- # i2 = i.split('>')
4143
- # text_key = i2[0].to_s
4144
- # text_val = i2[1].to_s.split(',')
4145
- # @data['포스트설정']['제목특정단어변경데이터'][text_key] = text_val
4146
- # end
4147
- # end
4148
- # }
4149
- # }
4150
- @data['포스트설정']['제목에키워드삽입'] = checkbox('제목에 키워드 삽입'){
4151
- top 2
4152
- left 0
4153
- }
4154
- @data['포스트설정']['제목에키워드삽입숫자1'] = entry(){
4155
- top 2
4156
- left 1
4157
- text '최소수량'
4158
- }
4159
- label('~'){
4160
- top 2
4161
- left 2
4162
- }
4163
- @data['포스트설정']['제목에키워드삽입숫자2'] = entry(){
4164
- top 2
4165
- left 3
4166
- text '최대수량'
4167
- }
4168
- label('ㄴ'){
4169
- top 3
4170
- left 2
4171
- }
4172
- @data['포스트설정']['제목앞'] = checkbox('제목에 키워드 삽입 제목 앞'){
4173
- top 3
4174
- left 3
4175
- on_toggled{
4176
- if @data['포스트설정']['제목앞'].checked? == true
4177
- if @data['포스트설정']['제목뒤'].checked?
4178
- @data['포스트설정']['제목뒤'].checked = false
4179
- end
4180
- end
4181
- }
4182
- }
4183
- label('ㄴ'){
4184
- top 4
4185
- left 2
4186
- }
4187
- @data['포스트설정']['제목뒤'] = checkbox('제목에 키워드 삽입 제목 뒤'){
4188
- top 4
4189
- left 3
4190
- on_toggled{
4191
- if @data['포스트설정']['제목뒤'].checked? == true
4192
- if @data['포스트설정']['제목앞'].checked?
4193
- @data['포스트설정']['제목앞'].checked = false
4194
- end
4195
- end
4196
- }
4197
- }
4198
- @data['포스트설정']['제목내용설정'] = checkbox('내용의 첫 문장을 제목으로 설정'){
4199
- top 4
4200
- left 0
4201
- }
4202
-
4203
- @data['포스트설정']['특수문자'] = checkbox('제목에 키워드 삽입 시 특수문자 삽입'){
4204
- top 5
4205
- left 0
4206
- }
4207
- @data['포스트설정']['제목을랜덤'] = checkbox('제목을 랜덤 단어 조합으로 자동 입력'){
4208
- top 6
4209
- left 0
4210
- }
4211
- @data['포스트설정']['내용키워드삽입'] = checkbox('내용 키워드 삽입'){
4212
- top 7
4213
- left 0
4214
- }
4215
- @data['포스트설정']['키워드삽입시작숫자'] = entry(){
4216
- top 7
4217
- left 1
4218
- text '최소수량'
4219
- }
4220
- label('~'){
4221
- top 7
4222
- left 2
4223
- }
4224
- @data['포스트설정']['키워드삽입끝숫자'] = entry(){
4225
- top 7
4226
- left 3
4227
- text '최대수량'
4228
- }
4229
- @data['포스트설정']['키워드삽입'] = checkbox('내용 키워드 삽입시 링크 삽입'){
4230
- top 8
4231
- left 0
4232
- }
4233
- @data['포스트설정']['키워드삽입시링크'] = entry(){
4234
- top 8
4235
- left 1
4236
- text 'URL'
4237
- }
4238
- @data['포스트설정']['내용을자동생성'] = checkbox('내용을 키워드 기반으로 자동 생성해서 포스팅'){
4239
- top 9
4240
- left 0
4241
- on_toggled{
4242
- if @data['포스트설정']['내용을자동생성'].checked?
4243
- if @data['포스트설정']['내용과자동생성'].checked?
4244
- @data['포스트설정']['내용과자동생성'].checked = false
4245
- end
4246
- end
4247
- }
4248
- }
4249
-
4250
- @data['포스트설정']['gpt'] = checkbox('내용을 키워드 기반의 GPT로 생성해서 포스팅'){
4251
- top 10
4252
- left 0
4253
- }
4254
-
4255
- @data['포스트설정']['api_key'] = entry(){
4256
- top 10
4257
- left 1
4258
- text 'api key'
4259
- }
4260
-
4261
- @data['포스트설정']['gpt상단'] = checkbox('원고내용 위에 넣기'){
4262
- top 10
4263
- left 3
4264
- }
4265
-
4266
- @data['포스트설정']['gpt하단'] = checkbox('원고내용 아래에 넣기'){
4267
- top 11
4268
- left 3
4269
- }
3771
+ stretchy false
3772
+ grid{
3773
+ @data['포스트설정']['gpt제목'] = checkbox('제목을 이용해 GPT로 비슷한 제목 생성'){
3774
+
3775
+
3776
+ }}}
3777
+ horizontal_box{
3778
+ stretchy false
3779
+ grid{
3780
+ label('※ GPT 기능 사용시 포스트설정1에서 GPT사용에 체크 필수'){
3781
+ } } }
3782
+
4270
3783
 
4271
- aa1 = 2
4272
- @data['포스트설정']['내용과자동생성'] = checkbox('내용을 내용 파일 + 자동 생성 조합으로 포스팅'){
4273
- top 10 + aa1
4274
- left 0
4275
- on_toggled{
4276
- if @data['포스트설정']['내용과자동생성'].checked?
4277
- if @data['포스트설정']['내용을자동생성'].checked?
4278
- @data['포스트설정']['내용을자동생성'].checked = false
4279
- end
4280
- end
4281
- }
4282
- }
4283
- @data['포스트설정']['내용투명'] = checkbox('키워드 기반 자동 생성글 안보이게 처리'){
4284
- top 11+ aa1
4285
- left 0
4286
- }
4287
- @data['포스트설정']['내용자동변경'] = checkbox('내용에 단어들을 자동 변경'){
4288
- top 12+ aa1
4289
- left 0
4290
- }
4291
- button('설정 파일 불러오기'){
4292
- top 12+ aa1
4293
- left 1
4294
- on_clicked{
4295
- file = open_file
4296
- if file != nil
4297
- file_data = File.open(file, 'r', :encoding => 'utf-8').read()
4298
- file_data.split("\n").each do |i|
4299
- key = i.split('>')[0]
4300
- v = i.split('>')[1].to_s.split(',')
4301
- @data['포스트설정']['내용자동변경값'][key] = v
4302
- end
4303
- end
4304
- }
4305
- }
4306
- @data['포스트설정']['제목에도적용'] = checkbox('제목에도 적용'){
4307
- top 12+ aa1
4308
- left 3
4309
- }
3784
+ table{
3785
+ checkbox_column('선택'){
3786
+ editable true
3787
+ }
3788
+ text_column('제목'){
4310
3789
 
4311
- @data['포스트설정']['내용사진자동삽입'] = checkbox('내용 사진 자동 삽입'){
4312
- top 13+ aa1
4313
- left 0
4314
- }
4315
- @data['포스트설정']['내용사진자동삽입시작숫자'] = entry(){
4316
- top 13+ aa1
4317
- left 1
4318
- text '최소수량'
4319
- }
4320
- label('~'){
4321
- top 13+ aa1
4322
- left 2
4323
- }
4324
- @data['포스트설정']['내용사진자동삽입끝숫자'] = entry(){
4325
- top 13+ aa1
4326
- left 3
4327
- text '최대수량'
4328
- }
3790
+ }
4329
3791
 
4330
- @data['포스트설정']['내용사진링크'] = checkbox('내용 사진 자동 삽입시 링크 삽입'){
4331
- top 14+ aa1
4332
- left 0
4333
- }
3792
+ cell_rows @data['제목설정']['제목']
3793
+ }
3794
+
4334
3795
 
4335
- @data['포스트설정']['내용사진링크값'] = entry(){
4336
- top 14+ aa1
4337
- left 1
4338
- text 'URL'
4339
- }
3796
+ }
3797
+ vertical_separator{
3798
+ stretchy false
3799
+ }
3800
+ vertical_box{
3801
+ horizontal_box{
3802
+ stretchy false
3803
+ button('내용불러오기'){
3804
+ on_clicked{
3805
+ file = open_file
3806
+ if file != nil
3807
+ file_name = file.split("\\")[-1]
3808
+ file_data = File.open(file,'r', :encoding => 'utf-8').read()
3809
+ if file_data.split("\n").length < 2
3810
+ file_data = file_data + "\n"
3811
+ end
3812
+ @data['내용설정']['내용'] << [false, file_name, file_data]
3813
+ @data['내용설정']['내용'] << [false, file_name, file_data]
3814
+ @data['내용설정']['내용'].pop
3815
+ end
4340
3816
  }
4341
3817
  }
4342
3818
 
4343
- vertical_separator{
4344
- stretchy false
4345
- }
4346
-
4347
-
3819
+ }
3820
+ horizontal_box{
3821
+ stretchy false
4348
3822
  grid{
4349
- @data['포스트설정']['특정단어키워드로변경'] = checkbox('내용 특정단어를 키워드로 변경'){
4350
- top 0
4351
- left 0
3823
+ button('전체선택'){
3824
+ top 1
3825
+ left 1
3826
+ on_clicked{
3827
+ for n in 0..@data['내용설정']['내용'].length-1
3828
+ @data['내용설정']['내용'][n][0] = true
3829
+ @data['내용설정']['내용'] << []
3830
+ @data['내용설정']['내용'].pop
3831
+ end
4352
3832
  }
4353
- @data['포스트설정']['특정단어키워드로변경값'] = entry{
4354
- top 0
4355
- left 1
4356
- text '특정단어'
3833
+ }
3834
+ button('선택해제'){
3835
+ top 1
3836
+ left 2
3837
+ on_clicked{
3838
+ for n in 0..@data['내용설정']['내용'].length-1
3839
+ @data['내용설정']['내용'][n][0] = false
3840
+ @data['내용설정']['내용'] << []
3841
+ @data['내용설정']['내용'].pop
3842
+ end
4357
3843
  }
3844
+ }
3845
+ button('삭제하기'){
3846
+ top 1
3847
+ left 3
3848
+ on_clicked{
3849
+ m = Array.new
3850
+ for n in 0..@data['내용설정']['내용'].length-1
3851
+ if @data['내용설정']['내용'][n][0] == true
3852
+ m << n
3853
+ end
3854
+ end
4358
3855
 
4359
- @data['포스트설정']['제외하고등록'] = checkbox('내용 특정단어를 제외하고 등록'){
4360
- top 1
4361
- left 0
4362
- }
4363
- @data['포스트설정']['제외하고등록값'] = entry{
4364
- top 1
4365
- left 1
4366
- text '특정단어'
3856
+ m.reverse.each do |i|
3857
+ @data['내용설정']['내용'].delete_at(i)
3858
+ end
3859
+ @data['내용설정']['내용'].delete(nil)
4367
3860
  }
4368
-
4369
- @data['포스트설정']['단어링크적용'] = checkbox('내용 특정단어를 링크적용 등록'){
4370
- top 2
4371
- left 0
3861
+ }
3862
+ }
3863
+ @data['내용설정']['순서사용'] = checkbox('순서사용'){
3864
+ stretchy false
3865
+ on_toggled{ |c|
3866
+ if c.checked?
3867
+ @data['내용설정']['랜덤사용'].checked = false
3868
+ end
4372
3869
  }
4373
- @data['포스트설정']['단어링크적용단어'] = entry{
4374
- top 2
4375
- left 1
4376
- text '특정단어'
3870
+ }
3871
+ @data['내용설정']['랜덤사용'] = checkbox('랜덤사용'){
3872
+ stretchy false
3873
+ on_toggled{ |c|
3874
+ if c.checked?
3875
+ @data['내용설정']['순서사용'].checked = false
3876
+ end
4377
3877
  }
3878
+ }
3879
+ }
3880
+ vertical_separator{
3881
+ stretchy false
3882
+ }
3883
+ horizontal_box{
3884
+ stretchy false
3885
+ grid{
3886
+ @data['포스트설정']['gpt내용'] = checkbox('내용파일을 이용해 GPT로 글 변형'){
3887
+
3888
+
3889
+ }}}
3890
+ horizontal_box{
3891
+ stretchy false
3892
+ grid{
3893
+ label('※ GPT 기능 사용시 포스트설정1에서 GPT사용에 체크 필수'){
3894
+ } } }
3895
+
3896
+ table{
3897
+ checkbox_column('선택'){
3898
+ editable true
3899
+ }
3900
+ text_column('내용파일'){
4378
3901
 
4379
- label('ㄴ적용하려는 링크 URL 입력'){
4380
- top 3
4381
- left 0
4382
- }
4383
- @data['포스트설정']['단어링크적용url'] = entry{
4384
- top 3
4385
- left 1
4386
- text 'URL'
4387
- }
3902
+ }
4388
3903
 
4389
- @data['포스트설정']['단어사진으로변경'] = checkbox('내용 특정단어를 사진으로 변경'){
4390
- top 4
4391
- left 0
4392
- }
4393
- @data['포스트설정']['단어사진으로변경단어'] = entry{
4394
- top 4
4395
- left 1
4396
- text '특정단어1,@특정단어2 (앞에@붙이면 링크적용)'
4397
- }
4398
- label('ㄴ적용하려는 링크 URL 입력'){
4399
- top 5
4400
- left 0
4401
- }
3904
+ cell_rows @data['내용설정']['내용']
3905
+ }
4402
3906
 
4403
- @data['포스트설정']['단어사진으로변경URL'] = entry{
4404
- top 5
4405
- left 1
4406
- text 'URL'
4407
- }
3907
+ horizontal_box{
3908
+ stretchy false
3909
+ @data['이미지설정']['폴더경로2'] = entry{
3910
+ stretchy false
3911
+ text "내용폴더경로 ex)C:\\내용\\폴더1"
3912
+ }
3913
+ button('폴더째로 불러오기'){
3914
+
3915
+ on_clicked{
3916
+ path = @data['이미지설정']['폴더경로2'].text.to_s.force_encoding('utf-8').force_encoding('utf-8')
3917
+ Dir.entries(@data['이미지설정']['폴더경로2'].text.to_s.force_encoding('utf-8')).each do |file|
3918
+ if file == '.' or file == '..'
4408
3919
 
4409
- @data['포스트설정']['스티커로변경'] = checkbox('내용 특정단어를 스티커로 변경'){
4410
- top 6
4411
- left 0
4412
- }
4413
- @data['포스트설정']['스티커로변경단어'] = entry{
4414
- top 6
4415
- left 1
4416
- text '특정단어'
4417
- }
4418
- @data['포스트설정']['영상으로변경'] = checkbox('내용 특정단어를 영상으로 변경'){
4419
- top 7
4420
- left 0
4421
- }
4422
- @data['포스트설정']['영상으로변경단어'] = entry{
4423
- top 7
4424
- left 1
4425
- text '특정단어'
4426
- }
4427
- label('ㄴ동영상만 있는 폴더 지정하기'){
4428
- top 8
4429
- left 0
4430
- }
4431
- @data['포스트설정']['동영상폴더위치'] = entry{
4432
- top 8
4433
- left 1
4434
- text "영상폴더위치 ex) C:\\영상\\폴더3"
4435
- }
4436
- @data['포스트설정']['지도로변경'] = checkbox('내용 특정단어를 지도로 변경'){
4437
- top 9
4438
- left 0
4439
- }
4440
- @data['포스트설정']['지도로변경단어'] = entry{
4441
- top 9
4442
- left 1
4443
- text '특정단어'
4444
- }
4445
- label('ㄴ지도 삽입경우 적용 주소 입력'){
4446
- top 10
4447
- left 0
4448
- }
4449
- @data['포스트설정']['지도주소'] = entry{
4450
- top 10
4451
- left 1
4452
- text 'ex) OO시 OO구 OO동 270-68'
4453
- }
4454
- @data['포스트설정']['인용구변경'] = checkbox('내용 특정단어를 인용구로 적용'){
4455
- top 11
4456
- left 0
4457
- }
4458
- @data['포스트설정']['인용구변경단어'] = entry{
4459
- top 11
4460
- left 1
4461
- text '특정단어'
4462
- }
4463
- label('ㄴ인용구 사용시 들어갈 문구'){
4464
- top 12
4465
- left 0
4466
- }
4467
- button('설정 파일 불러오기'){
4468
- top 12
4469
- left 1
4470
- on_clicked{
4471
- file = open_file
4472
- if file != nil
4473
- file_data = File.open(file, 'r').read
4474
- @data['포스트설정']['인용구'] = file_data.split(',')
3920
+ else
3921
+ file_data = File.open(path+'/'+file,'r', :encoding => 'utf-8').read()
3922
+ @data['내용설정']['내용'] << [false, file, file_data]
4475
3923
  end
4476
- }
4477
- }
4478
- @data['포스트설정']['내템플릿사용하기'] = checkbox('내 템플릿 사용하기'){
4479
- top 13
4480
- left 0
4481
- }
4482
- @data['포스트설정']['내템플릿변경단어'] = entry{
4483
- top 13
4484
- left 1
4485
- text '탬플릿으로 전활시킬 특정단어'
3924
+ end
3925
+ @data['내용설정']['내용'] << []
3926
+ @data['내용설정']['내용'].pop
4486
3927
  }
4487
3928
  }
4488
3929
  }
4489
3930
  }
4490
- tab_item('포스트설정2'){
4491
- vertical_box{
4492
- grid{
4493
- stretchy false
4494
-
4495
- @data['포스트설정']['특정단어굵기'] = checkbox('내용 특정단어 굵기 변경(적용 단어 앞 뒤에 @@삽입)'){
4496
- top 0
4497
- left 0
4498
- }
4499
- @data['포스트설정']['단어색상변경'] = checkbox('내용 특정단어 색상 변경(적용 단어 앞 뒤에 %%삽입)'){
4500
- top 1
4501
- left 0
3931
+ }
3932
+ }
3933
+ tab_item('이미지설정'){
3934
+ horizontal_box{
3935
+ vertical_box{
3936
+ stretchy false
3937
+ horizontal_box{
3938
+ stretchy false
3939
+ button('이미지불러오기'){
3940
+ on_clicked{
3941
+ file = open_file
3942
+ if file != nil
3943
+ file_name = file.split("\\")[-1]
3944
+ @data['이미지설정']['이미지'] << [false, file_name, file]
3945
+ @data['이미지설정']['이미지'] << [false, file_name, file]
3946
+ @data['이미지설정']['이미지'].pop
3947
+ end
4502
3948
  }
4503
- @data['포스트설정']['단어크기변경'] = checkbox('내용 특정단어 크기 변경(적용 단어 앞 &30& 뒤에 &&삽입) ex) &&19&& 카페 &&&&'){
4504
- top 2
4505
- left 0
3949
+ }
3950
+ }
3951
+ horizontal_box{
3952
+ stretchy false
3953
+ grid{
3954
+ button('전체선택'){
3955
+ top 1
3956
+ left 1
3957
+ on_clicked{
3958
+ for n in 0..@data['이미지설정']['이미지'].length-1
3959
+ @data['이미지설정']['이미지'][n][0] = true
3960
+ @data['이미지설정']['이미지'] << []
3961
+ @data['이미지설정']['이미지'].pop
3962
+ end
4506
3963
  }
4507
- @data['포스트설정']['중앙정렬'] = checkbox('내용 글 중앙 정렬'){
4508
- top 3
4509
- left 0
4510
- on_toggled{
4511
- if @data['포스트설정']['중앙정렬'].checked?
4512
- @data['포스트설정']['좌측정렬'].checked = false
4513
- @data['포스트설정']['우측정렬'].checked = false
4514
- end
4515
- }
3964
+ }
3965
+ button('선택해제'){
3966
+ top 1
3967
+ left 2
3968
+ on_clicked{
3969
+ for n in 0..@data['이미지설정']['이미지'].length-1
3970
+ @data['이미지설정']['이미지'][n][0] = false
3971
+ @data['이미지설정']['이미지'] << []
3972
+ @data['이미지설정']['이미지'].pop
3973
+ end
4516
3974
  }
4517
- @data['포스트설정']['좌측정렬'] = checkbox('내용 글 좌측 정렬'){
4518
- top 4
4519
- left 0
4520
- on_toggled{
4521
- if @data['포스트설정']['좌측정렬'].checked?
4522
- @data['포스트설정']['중앙정렬'].checked = false
4523
- @data['포스트설정']['우측정렬'].checked = false
3975
+ }
3976
+ button('삭제하기'){
3977
+ top 1
3978
+ left 3
3979
+ on_clicked{
3980
+ m = Array.new
3981
+ for n in 0..@data['이미지설정']['이미지'].length-1
3982
+ if @data['이미지설정']['이미지'][n][0] == true
3983
+ m << n
4524
3984
  end
4525
- }
3985
+ end
3986
+
3987
+ m.reverse.each do |i|
3988
+ @data['이미지설정']['이미지'].delete_at(i)
3989
+ end
3990
+
3991
+ @data['이미지설정']['이미지'].delete(nil)
4526
3992
  }
4527
- @data['포스트설정']['우측정렬'] = checkbox('내용 글 우측 정렬'){
4528
- top 5
4529
- left 0
4530
- on_toggled{
4531
- if @data['포스트설정']['우측정렬'].checked?
4532
- @data['포스트설정']['좌측정렬'].checked = false
4533
- @data['포스트설정']['중앙정렬'].checked = false
4534
- end
4535
- }
3993
+ }
3994
+ }
3995
+ @data['이미지설정']['순서사용'] = checkbox('순서사용'){
3996
+ stretchy false
3997
+ on_toggled{ |c|
3998
+ if c.checked?
3999
+ @data['이미지설정']['랜덤사용'].checked = false
4000
+ end
4536
4001
  }
4537
- @data['포스트설정']['막글삽입'] = checkbox('내용 하단에 막글 삽입'){
4538
- top 6
4539
- left 0
4002
+ }
4003
+ @data['이미지설정']['랜덤사용'] = checkbox('랜덤사용'){
4004
+ stretchy false
4005
+ on_toggled{ |c|
4006
+ if c.checked?
4007
+ @data['이미지설정']['순서사용'].checked = false
4008
+ end
4540
4009
  }
4541
- @data['포스트설정']['막글삽입시작숫자'] = entry{
4542
- top 6
4543
- left 1
4544
- text '최소수량'
4010
+ }
4011
+ }
4012
+ table{
4013
+ checkbox_column('선택'){
4014
+ editable true
4015
+ }
4016
+ text_column('이미지파일'){
4017
+
4018
+ }
4019
+
4020
+ cell_rows @data['이미지설정']['이미지']
4021
+ }
4022
+ horizontal_box{
4023
+ stretchy false
4024
+ @data['이미지설정']['폴더경로'] = entry{
4025
+ stretchy false
4026
+ text "사진폴더경로 ex)C:\\사진\\폴더2"
4027
+ }
4028
+ button('폴더째로 불러오기'){
4029
+
4030
+ on_clicked{
4031
+ path = @data['이미지설정']['폴더경로'].text.to_s.force_encoding('utf-8').force_encoding('utf-8')
4032
+ Dir.entries(@data['이미지설정']['폴더경로'].text.to_s.force_encoding('utf-8')).each do |file|
4033
+ if file == '.' or file == '..'
4034
+
4035
+ else
4036
+ @data['이미지설정']['이미지'] << [false, file, path+"\\"+file.force_encoding('utf-8')]
4037
+ end
4038
+ end
4039
+ @data['이미지설정']['이미지'] << []
4040
+ @data['이미지설정']['이미지'].pop
4545
4041
  }
4546
- label('~'){
4547
- top 6
4548
- left 2
4042
+ }
4043
+ }
4044
+
4045
+ }
4046
+ vertical_separator{
4047
+ stretchy false
4048
+ }
4049
+
4050
+ vertical_box{
4051
+ horizontal_box{
4052
+ stretchy false
4053
+ @data['image_type'][0] = checkbox('저장 사진 사용'){
4054
+ on_toggled{
4055
+ if @data['image_type'][0].checked?
4056
+ @data['image_type'][1].checked = false
4057
+ @data['image_type'][2].checked = false
4058
+ end
4549
4059
  }
4550
- @data['포스트설정']['막글삽입끝숫자'] = entry{
4551
- top 6
4552
- left 3
4553
- text '최대수량'
4060
+ }
4061
+ @data['image_type'][1] = checkbox('색상 사진 사용'){
4062
+ on_toggled{
4063
+ if @data['image_type'][1].checked?
4064
+ @data['image_type'][0].checked = false
4065
+ @data['image_type'][2].checked = false
4066
+ end
4554
4067
  }
4555
- button('막글 파일 불러오기'){
4556
- top 6
4557
- left 4
4558
- on_clicked{
4559
- file = open_file
4560
- if file != nil
4561
- file_data = File.open(file, 'r', :encoding => 'utf-8').read()
4562
- @data['포스트설정']['막글'] = file_data
4563
- end
4564
- }
4068
+ }
4069
+ @data['image_type'][2] = checkbox('자동 다운로드 사진 사용'){
4070
+ on_toggled{
4071
+ if @data['image_type'][2].checked?
4072
+ @data['image_type'][1].checked = false
4073
+ @data['image_type'][0].checked = false
4074
+ end
4565
4075
  }
4566
- @data['포스트설정']['막글투명'] = checkbox('막글 안보이게 처리'){
4567
- top 7
4568
- left 0
4076
+ }
4077
+ }
4078
+
4079
+ grid{
4080
+ stretchy false
4081
+ @data['이미지설정']['글자삽입1'] = checkbox('글자 삽입1'){
4082
+ top 0
4083
+ left 0
4084
+ }
4085
+ button('가져오기'){
4086
+ top 0
4087
+ left 1
4088
+ on_clicked{
4089
+ file = open_file
4090
+ if file != nil
4091
+ file_data = File.open(file, 'r', :encoding => 'utf-8').read()
4092
+ @data['이미지설정']['이미지글자1'] = file_data.to_s.split("\n")
4093
+ end
4569
4094
  }
4570
- @data['포스트설정']['막글그대로'] = checkbox('막글 그대로 입력'){
4571
- top 7
4572
- left 1
4095
+ }
4096
+ @data['이미지설정']['이미지글자1크기1'] = entry{
4097
+ top 0
4098
+ left 2
4099
+ text 'ex) 33'
4100
+ }
4101
+ label('pt'){
4102
+ top 0
4103
+ left 3
4104
+ }
4105
+ @data['이미지설정']['이미지글자1크기2'] = entry{
4106
+ top 0
4107
+ left 4
4108
+ text 'ex) 55'
4109
+ }
4110
+ label('pt'){
4111
+ top 0
4112
+ left 5
4113
+ }
4114
+ @data['이미지설정']['글자테두리'] = checkbox('글자 테두리'){
4115
+ top 0
4116
+ left 6
4117
+ }
4118
+
4119
+ @data['이미지설정']['글자삽입2'] = checkbox('글자 삽입2'){
4120
+ top 1
4121
+ left 0
4122
+ }
4123
+ button('가져오기'){
4124
+ top 1
4125
+ left 1
4126
+ on_clicked{
4127
+ file = open_file
4128
+ if file != nil
4129
+ file_data = File.open(file, 'r', :encoding => 'utf-8').read()
4130
+ @data['이미지설정']['이미지글자2'] = file_data.split("\n")
4131
+ end
4573
4132
  }
4133
+ }
4134
+ @data['이미지설정']['이미지글자2크기1'] = entry{
4135
+ top 1
4136
+ left 2
4137
+ text 'ex) 33'
4138
+ }
4139
+ label('pt'){
4140
+ top 1
4141
+ left 3
4142
+ }
4143
+ @data['이미지설정']['이미지글자2크기2'] = entry{
4144
+ top 1
4145
+ left 4
4146
+ text 'ex) 55'
4147
+ }
4148
+ label('pt'){
4149
+ top 1
4150
+ left 5
4151
+ }
4152
+ @data['이미지설정']['글자그림자'] = checkbox('글자 그림자'){
4153
+ top 1
4154
+ left 6
4155
+ }
4156
+ @data['이미지설정']['필터사용'] = checkbox('필터사용(색상 사진 적용불가)'){
4157
+ top 2
4158
+ left 0
4159
+ }
4160
+ @data['이미지설정']['테두리사용'] = checkbox('테두리 사용'){
4161
+ top 3
4162
+ left 0
4163
+ }
4164
+ @data['이미지설정']['테두리크기1'] = entry{
4165
+ top 3
4166
+ left 2
4167
+ text 'ex) 1'
4168
+ }
4169
+ label('pt'){
4170
+ top 3
4171
+ left 3
4172
+ }
4173
+ @data['이미지설정']['테두리크기2'] = entry{
4174
+ top 3
4175
+ left 4
4176
+ text 'ex) 33'
4177
+ }
4178
+ label('pt'){
4179
+ top 3
4180
+ left 5
4181
+ }
4574
4182
 
4575
- @data['포스트설정']['태그삽입1'] = checkbox('태그삽입'){
4576
- top 8
4577
- left 0
4183
+ }
4184
+
4185
+ horizontal_box{
4186
+ stretchy false
4187
+ @data['image_size'][0] = checkbox('랜덤 px'){
4188
+ on_toggled{
4189
+ if @data['image_size'][0].checked?
4190
+ @data['image_size'][1].checked = false
4191
+ @data['image_size'][2].checked = false
4192
+ @data['image_size'][3].checked = false
4193
+ @data['image_size'][4].checked = false
4194
+ end
4578
4195
  }
4579
- @data['포스트설정']['태그삽입1시작숫자'] = entry{
4580
- top 8
4581
- left 1
4582
- text '최소수량'
4196
+ }
4197
+ @data['image_size'][1] = checkbox('740 px'){
4198
+ on_toggled{
4199
+ if @data['image_size'][1].checked?
4200
+ @data['image_size'][0].checked = false
4201
+ @data['image_size'][2].checked = false
4202
+ @data['image_size'][3].checked = false
4203
+ @data['image_size'][4].checked = false
4204
+ end
4583
4205
  }
4584
- label('~'){
4585
- top 8
4586
- left 2
4206
+ }
4207
+ @data['image_size'][2] = checkbox('650 px'){
4208
+ on_toggled{
4209
+ if @data['image_size'][2].checked?
4210
+ @data['image_size'][1].checked = false
4211
+ @data['image_size'][0].checked = false
4212
+ @data['image_size'][3].checked = false
4213
+ @data['image_size'][4].checked = false
4214
+ end
4587
4215
  }
4588
- @data['포스트설정']['태그삽입1끝숫자'] = entry{
4589
- top 8
4590
- left 3
4591
- text '최대수량'
4216
+ }
4217
+ @data['image_size'][3] = checkbox('550 px'){
4218
+ on_toggled{
4219
+ if @data['image_size'][3].checked?
4220
+ @data['image_size'][1].checked = false
4221
+ @data['image_size'][2].checked = false
4222
+ @data['image_size'][0].checked = false
4223
+ @data['image_size'][4].checked = false
4224
+ end
4592
4225
  }
4593
-
4594
- @data['포스트설정']['자동글 수식에 입력'] = checkbox('자동글 수식에 입력'){
4595
- top 9
4596
- left 0
4226
+ }
4227
+ @data['image_size'][4] = checkbox('480 px'){
4228
+ on_toggled{
4229
+ if @data['image_size'][4].checked?
4230
+ @data['image_size'][1].checked = false
4231
+ @data['image_size'][2].checked = false
4232
+ @data['image_size'][3].checked = false
4233
+ @data['image_size'][0].checked = false
4234
+ end
4597
4235
  }
4236
+ }
4237
+ }
4238
+ }
4239
+ }
4240
+ }
4598
4241
 
4599
- @data['포스트설정']['막글 수식에 입력'] = checkbox('막글 수식에 입력'){
4600
- top 9
4601
- left 1
4602
- }
4242
+ tab_item('포스트설정1'){
4243
+ horizontal_box{
4244
+ vertical_box{
4245
+ stretchy false
4246
+ grid{
4247
+ stretchy false
4248
+ @data['포스트설정']['제목키워드변경'] = checkbox('제목에 특정 단어를 내용에 사용할 키워드로 변경'){
4249
+ top 0
4250
+ left 0
4603
4251
 
4604
-
4252
+ }
4253
+ @data['포스트설정']['제목키워드변경단어'] = entry{
4254
+ top 0
4255
+ left 1
4256
+ text '특정단어'
4257
+ }
4605
4258
 
4606
- @data['포스트설정']['전체공개'] = checkbox('전체공개'){
4607
- top 10
4608
- left 0
4609
- on_toggled{
4610
- if @data['포스트설정']['전체공개'].checked?
4611
- if @data['포스트설정']['비공개'].checked? or @data['포스트설정']['서로이웃공개'].checked? or @data['포스트설정']['멤버공개'].checked?
4612
- @data['포스트설정']['멤버공개'].checked = false
4613
- @data['포스트설정']['서로이웃공개'].checked = false
4614
- @data['포스트설정']['비공개'].checked = false
4615
- end
4616
- end
4617
- }
4259
+ # @data['포스트설정']['제목단어변경'] = checkbox('제목에 특정 단어를 변경'){
4260
+ # top 1
4261
+ # left 0
4262
+ # }
4263
+ # @data['포스트설정']['제목단어변경파일불러오기'] = button('설정 파일 불러오기'){
4264
+ # top 1
4265
+ # left 1
4266
+ # on_clicked{
4267
+ # file = open_file
4268
+ # if file != nil
4269
+ # file_data = File.open(file, 'r', :encoding => 'utf-8').read()
4270
+ # file_data.split("\n").each do |i|
4271
+ # i2 = i.split('>')
4272
+ # text_key = i2[0].to_s
4273
+ # text_val = i2[1].to_s.split(',')
4274
+ # @data['포스트설정']['제목특정단어변경데이터'][text_key] = text_val
4275
+ # end
4276
+ # end
4277
+ # }
4278
+ # }
4279
+ @data['포스트설정']['제목에키워드삽입'] = checkbox('제목에 키워드 삽입'){
4280
+ top 2
4281
+ left 0
4282
+ #enabled false # 기본적으로 비활성화
4283
+ on_toggled {
4284
+ if @data['포스트설정']['제목에키워드삽입'].checked?
4285
+ @data['포스트설정']['제목앞'].enabled = true # '내용투명' 활성화
4286
+ @data['포스트설정']['제목뒤'].enabled = true # '내용투명' 활성화
4287
+ else
4288
+ @data['포스트설정']['제목앞'].checked = false # 체크 해제
4289
+ @data['포스트설정']['제목앞'].enabled = false # 비활성화
4290
+ @data['포스트설정']['제목뒤'].checked = false # 체크 해제
4291
+ @data['포스트설정']['제목뒤'].enabled = false # 비활성화
4292
+ end
4618
4293
  }
4619
- @data['포스트설정']['멤버공개'] = checkbox('이웃공개'){
4620
- top 10
4621
- left 1
4622
- on_toggled{
4623
- if @data['포스트설정']['멤버공개'].checked?
4624
- if @data['포스트설정']['전체공개'].checked? or @data['포스트설정']['서로이웃공개'].checked? or @data['포스트설정']['비공개'].checked?
4625
- @data['포스트설정']['전체공개'].checked = false
4626
- @data['포스트설정']['서로이웃공개'].checked = false
4627
- @data['포스트설정']['비공개'].checked = false
4628
- end
4294
+
4295
+ }
4296
+ @data['포스트설정']['제목에키워드삽입숫자1'] = entry(){
4297
+ top 2
4298
+ left 1
4299
+ text '최소수량'
4300
+ }
4301
+ label('~'){
4302
+ top 2
4303
+ left 2
4304
+ }
4305
+ @data['포스트설정']['제목에키워드삽입숫자2'] = entry(){
4306
+ top 2
4307
+ left 3
4308
+ text '최대수량'
4309
+ }
4310
+ label('ㄴ'){
4311
+ top 3
4312
+ left 2
4313
+ }
4314
+ @data['포스트설정']['제목앞'] = checkbox('제목에 키워드 삽입 제목 앞'){
4315
+ top 3
4316
+ left 3
4317
+ enabled false # 기본적으로 비활성화
4318
+ on_toggled{
4319
+ if @data['포스트설정']['제목앞'].checked? == true
4320
+ if @data['포스트설정']['제목뒤'].checked?
4321
+ @data['포스트설정']['제목뒤'].checked = false
4629
4322
  end
4630
- }
4323
+ end
4631
4324
  }
4632
- @data['포스트설정']['서로이웃공개'] = checkbox('서로이웃공개'){
4633
- top 11
4634
- left 0
4635
- on_toggled{
4636
- if @data['포스트설정']['서로이웃공개'].checked?
4637
- if @data['포스트설정']['전체공개'].checked? or @data['포스트설정']['비공개'].checked? or @data['포스트설정']['멤버공개'].checked?
4638
- @data['포스트설정']['전체공개'].checked = false
4639
- @data['포스트설정']['비공개'].checked = false
4640
- @data['포스트설정']['멤버공개'].checked = false
4641
- end
4325
+ }
4326
+ label('ㄴ'){
4327
+ top 4
4328
+ left 2
4329
+ }
4330
+ @data['포스트설정']['제목뒤'] = checkbox('제목에 키워드 삽입 제목 뒤'){
4331
+ top 4
4332
+ left 3
4333
+ enabled false # 기본적으로 비활성화
4334
+ on_toggled{
4335
+ if @data['포스트설정']['제목뒤'].checked? == true
4336
+ if @data['포스트설정']['제목앞'].checked?
4337
+ @data['포스트설정']['제목앞'].checked = false
4642
4338
  end
4643
- }
4339
+ end
4644
4340
  }
4645
-
4646
- @data['포스트설정']['비공개'] = checkbox('비공개'){
4647
- top 11
4648
- left 1
4649
- on_toggled{
4650
- if @data['포스트설정']['비공개'].checked?
4651
- if @data['포스트설정']['전체공개'].checked? or @data['포스트설정']['서로이웃공개'].checked? or @data['포스트설정']['멤버공개'].checked?
4652
- @data['포스트설정']['전체공개'].checked = false
4653
- @data['포스트설정']['서로이웃공개'].checked = false
4654
- @data['포스트설정']['멤버공개'].checked = false
4655
- end
4341
+ }
4342
+
4343
+ @data['포스트설정']['특수문자'] = checkbox('제목에 키워드 삽입 시 특수문자 삽입'){
4344
+ top 4
4345
+ left 0
4346
+ }
4347
+ @data['포스트설정']['제목을랜덤'] = checkbox('제목을 랜덤 단어 조합으로 자동 입력'){
4348
+ top 5
4349
+ left 0
4350
+ on_toggled{
4351
+ if @data['포스트설정']['제목을랜덤'].checked? == true
4352
+ if @data['포스트설정']['제목내용설정'].checked?
4353
+ @data['포스트설정']['제목내용설정'].checked = false
4656
4354
  end
4657
- }
4658
- }
4659
-
4660
-
4661
-
4662
- @data['포스트설정']['댓글허용'] = checkbox('댓글허용'){
4663
- top 12
4664
- left 0
4665
- }
4666
- @data['포스트설정']['블로그,카페 공유허용'] = checkbox('블로그,카페 공유허용'){
4667
- top 12
4668
- left 1
4355
+ end
4669
4356
  }
4670
- @data['포스트설정']['외부공유허용'] = checkbox('외부공유허용'){
4671
- top 13
4672
- left 0
4357
+ }
4358
+ @data['포스트설정']['제목내용설정'] = checkbox('내용의 첫 문장을 제목으로 설정'){
4359
+ top 6
4360
+ left 0
4361
+ on_toggled{
4362
+ if @data['포스트설정']['제목내용설정'].checked? == true
4363
+ if @data['포스트설정']['제목을랜덤'].checked?
4364
+ @data['포스트설정']['제목을랜덤'].checked = false
4365
+ end
4366
+ end
4673
4367
  }
4674
- @data['포스트설정']['검색허용'] = checkbox('검색허용'){
4675
- top 13
4676
- left 1
4368
+ }
4369
+ @data['포스트설정']['내용키워드삽입'] = checkbox('내용 키워드 삽입'){
4370
+ top 7
4371
+ left 0
4372
+ on_toggled {
4373
+ if @data['포스트설정']['내용키워드삽입'].checked?
4374
+ @data['포스트설정']['키워드삽입'].enabled = true # '내용투명' 활성화
4375
+ @data['포스트설정']['키워드삽입시링크'].enabled = true # '내용투명' 활성화
4376
+ else
4377
+ @data['포스트설정']['키워드삽입'].checked = false # 체크 해제
4378
+ @data['포스트설정']['키워드삽입'].enabled = false # 비활성화
4379
+ @data['포스트설정']['키워드삽입시링크'].text = 'URL' # 기본 텍스트 설정
4380
+ @data['포스트설정']['키워드삽입시링크'].enabled = false # 비활성화
4381
+ end
4677
4382
  }
4678
- @data['포스트설정']['공감허용'] = checkbox('공감허용'){
4679
- top 14
4680
- left 0
4383
+ }
4384
+ @data['포스트설정']['키워드삽입시작숫자'] = entry(){
4385
+ top 7
4386
+ left 1
4387
+
4388
+ text '최소수량'
4389
+ }
4390
+ label('~'){
4391
+ top 7
4392
+ left 2
4393
+ }
4394
+ @data['포스트설정']['키워드삽입끝숫자'] = entry(){
4395
+ top 7
4396
+ left 3
4397
+ text '최대수량'
4398
+ }
4399
+ @data['포스트설정']['키워드삽입'] = checkbox('내용 키워드 삽입시 링크 삽입'){
4400
+ enabled false # 기본적으로 비활성화
4401
+ top 8
4402
+ left 0
4403
+
4404
+ }
4405
+ @data['포스트설정']['키워드삽입시링크'] = entry(){
4406
+ enabled false # 기본적으로 비활성화
4407
+ top 8
4408
+ left 1
4409
+ text 'URL'
4410
+ }
4411
+ @data['포스트설정']['내용을자동생성'] = checkbox('키워드기반 생성으로만 등록(GPT 미 사용시 자체 생성)'){
4412
+ top 9
4413
+ left 0
4414
+ on_toggled{
4415
+ if @data['포스트설정']['내용을자동생성'].checked?
4416
+ @data['포스트설정']['내용과자동생성'].checked = false
4417
+ @data['포스트설정']['내용투명'].checked = false
4418
+ @data['포스트설정']['자동글 수식에 입력'].checked = false
4419
+
4420
+ end
4681
4421
  }
4422
+ }
4682
4423
 
4683
- @data['포스트설정']['테더링'] = checkbox('테더링 IP 사용'){
4684
- top 15
4685
- left 0
4686
- on_toggled{
4687
- if @data['포스트설정']['테더링'].checked?
4688
- @data['포스트설정']['프록시'].checked = false
4689
-
4690
- end
4691
- }
4424
+
4425
+ aa1 = 2
4426
+ @data['포스트설정']['내용과자동생성'] = checkbox('내용파일+키워드기반 생성 등록(GPT 미 사용시 자체 생성)') {
4427
+ top 10 + aa1
4428
+ left 0
4429
+ on_toggled {
4430
+ if @data['포스트설정']['내용과자동생성'].checked?
4431
+ @data['포스트설정']['내용을자동생성'].checked = false
4432
+ @data['포스트설정']['내용투명'].enabled = true # '내용투명' 활성화
4433
+ @data['포스트설정']['자동글 수식에 입력'].enabled = true # '내용투명' 활성화
4434
+ else
4435
+ @data['포스트설정']['내용투명'].checked = false # 체크 해제
4436
+ @data['포스트설정']['내용투명'].enabled = false # 비활성화
4437
+ @data['포스트설정']['자동글 수식에 입력'].checked = false # 체크 해제
4438
+ @data['포스트설정']['자동글 수식에 입력'].enabled = false # 비활성화
4439
+ end
4692
4440
  }
4693
- @data['포스트설정']['프록시'] = checkbox('프록시 IP 사용'){
4694
- top 15
4695
- left 1
4696
- on_toggled{
4697
- if @data['포스트설정']['프록시'].checked?
4698
- @data['포스트설정']['테더링'].checked = false
4699
-
4700
- end
4701
- }
4441
+ }
4442
+
4443
+ @data['포스트설정']['내용투명'] = checkbox('키워드 기반 자동 생성글 안보이게 처리') {
4444
+ top 11 + aa1
4445
+ left 0
4446
+ enabled false # 기본적으로 비활성화
4447
+ on_toggled {
4448
+ if @data['포스트설정']['내용투명'].checked?
4449
+ @data['포스트설정']['내용을자동생성'].checked = false
4450
+ @data['포스트설정']['자동글 수식에 입력'].checked = false
4451
+ end
4702
4452
  }
4703
- button('프록시 IP 파일 불러오기'){
4704
- top 15
4705
- left 3
4706
- on_clicked{
4707
- file = open_file
4708
- if file != nil
4709
- file_data = File.open(file,'r').read
4710
- @data['포스트설정']['프록시리스트'] = file_data.split("\n")
4453
+ }
4454
+ @data['포스트설정']['내용자동변경'] = checkbox('내용에 단어들을 자동 변경'){
4455
+ top 12+ aa1
4456
+ left 0
4457
+ }
4458
+ button('설정 파일 불러오기'){
4459
+ top 12+ aa1
4460
+ left 1
4461
+ on_clicked{
4462
+ file = open_file
4463
+ if file != nil
4464
+ file_data = File.open(file, 'r', :encoding => 'utf-8').read()
4465
+ file_data.split("\n").each do |i|
4466
+ key = i.split('>')[0]
4467
+ v = i.split('>')[1].to_s.split(',')
4468
+ @data['포스트설정']['내용자동변경값'][key] = v
4711
4469
  end
4712
- }
4470
+ end
4713
4471
  }
4714
-
4715
- @data['포스트설정']['발행기능'] = checkbox('포스팅 글 [ 발행 ] 하기'){
4716
- top 16
4717
- left 0
4718
- on_toggled{
4719
- if @data['포스트설정']['발행기능'].checked?
4720
- if @data['포스트설정']['저장기능'].checked?
4721
- @data['포스트설정']['저장기능'].checked = false
4722
-
4723
- end
4724
- end
4725
- }
4472
+ }
4473
+ @data['포스트설정']['제목에도적용'] = checkbox('제목에도 적용'){
4474
+ top 12+ aa1
4475
+ left 3
4476
+ }
4477
+
4478
+ @data['포스트설정']['내용사진자동삽입'] = checkbox('내용 사진 자동 삽입'){
4479
+ top 13+ aa1
4480
+ left 0
4481
+ #enabled false # 기본적으로 비활성화
4482
+ on_toggled {
4483
+ if @data['포스트설정']['내용사진자동삽입'].checked?
4484
+ @data['포스트설정']['내용사진링크'].enabled = true # '내용투명' 활성화
4485
+ @data['포스트설정']['내용사진링크값'].enabled = true # '내용투명' 활성화
4486
+ else
4487
+ @data['포스트설정']['내용사진링크'].checked = false # 체크 해제
4488
+ @data['포스트설정']['내용사진링크'].enabled = false # 비활성화
4489
+ @data['포스트설정']['내용사진링크값'].text = 'URL' # 기본 텍스트 설정
4490
+ @data['포스트설정']['내용사진링크값'].enabled = false # 비활성화
4491
+ end
4726
4492
  }
4727
- @data['포스트설정']['저장기능'] = checkbox('포스팅 글 [ 저장 ] 하기'){
4728
- top 16
4729
- left 1
4493
+ }
4494
+ @data['포스트설정']['내용사진자동삽입시작숫자'] = entry(){
4495
+ top 13+ aa1
4496
+ left 1
4497
+ text '최소수량'
4498
+ }
4499
+ label('~'){
4500
+ top 13+ aa1
4501
+ left 2
4502
+ }
4503
+ @data['포스트설정']['내용사진자동삽입끝숫자'] = entry(){
4504
+ top 13+ aa1
4505
+ left 3
4506
+ text '최대수량'
4507
+ }
4730
4508
 
4731
- on_toggled{
4732
- if @data['포스트설정']['저장기능'].checked?
4733
- if @data['포스트설정']['발행기능'].checked?
4734
- @data['포스트설정']['발행기능'].checked = false
4735
-
4736
- end
4737
- end
4738
- }
4509
+ @data['포스트설정']['내용사진링크'] = checkbox('내용 사진 자동 삽입시 링크 삽입'){
4510
+ enabled false # 기본적으로 비활성화
4511
+ top 14+ aa1
4512
+ left 0
4513
+ }
4514
+
4515
+ @data['포스트설정']['내용사진링크값'] = entry(){
4516
+ enabled false # 기본적으로 비활성화
4517
+ top 14+ aa1
4518
+ left 1
4519
+ text 'URL'
4520
+ }
4521
+
4522
+ @data['포스트설정']['ChatGPT사용'] = checkbox('Chat GPT 사용하기'){
4523
+ top 15+ aa1
4524
+ left 0
4525
+ }
4526
+
4527
+ @data['포스트설정']['api_key'] = entry(){
4528
+ top 15+ aa1
4529
+ left 1
4530
+ text 'api key 입력 필수!!'
4531
+ }
4532
+
4533
+ }
4534
+ }
4535
+
4536
+ vertical_separator{
4537
+ stretchy false
4538
+ }
4539
+
4540
+
4541
+ grid{
4542
+ @data['포스트설정']['특정단어키워드로변경'] = checkbox('내용 특정단어를 키워드로 변경'){
4543
+ top 0
4544
+ left 0
4545
+ }
4546
+ @data['포스트설정']['특정단어키워드로변경값'] = entry{
4547
+ top 0
4548
+ left 1
4549
+ text '특정단어'
4550
+ }
4551
+
4552
+ @data['포스트설정']['제외하고등록'] = checkbox('내용 특정단어를 제외하고 등록'){
4553
+ top 1
4554
+ left 0
4555
+ }
4556
+ @data['포스트설정']['제외하고등록값'] = entry{
4557
+ top 1
4558
+ left 1
4559
+ text '특정단어'
4560
+ }
4561
+
4562
+ @data['포스트설정']['단어링크적용'] = checkbox('내용 특정단어를 링크적용 등록'){
4563
+ top 2
4564
+ left 0
4565
+ }
4566
+ @data['포스트설정']['단어링크적용단어'] = entry{
4567
+ top 2
4568
+ left 1
4569
+ text '특정단어'
4570
+ }
4571
+
4572
+ label('ㄴ적용하려는 링크 URL 입력'){
4573
+ top 3
4574
+ left 0
4575
+ }
4576
+ @data['포스트설정']['단어링크적용url'] = entry{
4577
+ top 3
4578
+ left 1
4579
+ text 'URL'
4580
+ }
4581
+
4582
+ @data['포스트설정']['단어사진으로변경'] = checkbox('내용 특정단어를 사진으로 변경'){
4583
+ top 4
4584
+ left 0
4585
+ }
4586
+ @data['포스트설정']['단어사진으로변경단어'] = entry{
4587
+ top 4
4588
+ left 1
4589
+ text '특정단어1,@특정단어2 (앞에@붙이면 링크적용)'
4590
+ }
4591
+ label('ㄴ적용하려는 링크 URL 입력'){
4592
+ top 5
4593
+ left 0
4594
+ }
4595
+
4596
+ @data['포스트설정']['단어사진으로변경URL'] = entry{
4597
+ top 5
4598
+ left 1
4599
+ text 'URL'
4600
+ }
4601
+
4602
+ @data['포스트설정']['스티커로변경'] = checkbox('내용 특정단어를 스티커로 변경'){
4603
+ top 6
4604
+ left 0
4605
+ }
4606
+ @data['포스트설정']['스티커로변경단어'] = entry{
4607
+ top 6
4608
+ left 1
4609
+ text '특정단어'
4610
+ }
4611
+ @data['포스트설정']['영상으로변경'] = checkbox('내용 특정단어를 영상으로 변경'){
4612
+ top 7
4613
+ left 0
4614
+ }
4615
+ @data['포스트설정']['영상으로변경단어'] = entry{
4616
+ top 7
4617
+ left 1
4618
+ text '특정단어'
4619
+ }
4620
+ label('ㄴ동영상만 있는 폴더 지정하기'){
4621
+ top 8
4622
+ left 0
4623
+ }
4624
+ @data['포스트설정']['동영상폴더위치'] = entry{
4625
+ top 8
4626
+ left 1
4627
+ text "영상폴더위치 ex) C:\\영상\\폴더3"
4628
+ }
4629
+ @data['포스트설정']['지도로변경'] = checkbox('내용 특정단어를 지도로 변경'){
4630
+ top 9
4631
+ left 0
4632
+ }
4633
+ @data['포스트설정']['지도로변경단어'] = entry{
4634
+ top 9
4635
+ left 1
4636
+ text '특정단어'
4637
+ }
4638
+ label('ㄴ지도 삽입경우 적용 주소 입력'){
4639
+ top 10
4640
+ left 0
4641
+ }
4642
+ @data['포스트설정']['지도주소'] = entry{
4643
+ top 10
4644
+ left 1
4645
+ text 'ex) OO시 OO구 OO동 270-68'
4646
+ }
4647
+ @data['포스트설정']['인용구변경'] = checkbox('내용 특정단어를 인용구로 적용'){
4648
+ top 11
4649
+ left 0
4650
+ }
4651
+ @data['포스트설정']['인용구변경단어'] = entry{
4652
+ top 11
4653
+ left 1
4654
+ text '특정단어'
4655
+ }
4656
+ label('ㄴ인용구 사용시 들어갈 문구'){
4657
+ top 12
4658
+ left 0
4659
+ }
4660
+ button('설정 파일 불러오기'){
4661
+ top 12
4662
+ left 1
4663
+ on_clicked{
4664
+ file = open_file
4665
+ if file != nil
4666
+ file_data = File.open(file, 'r').read
4667
+ @data['포스트설정']['인용구'] = file_data.split(',')
4668
+ end
4669
+ }
4670
+ }
4671
+ @data['포스트설정']['내템플릿사용하기'] = checkbox('내 템플릿 사용하기'){
4672
+ top 13
4673
+ left 0
4674
+ }
4675
+ @data['포스트설정']['내템플릿변경단어'] = entry{
4676
+ top 13
4677
+ left 1
4678
+ text '탬플릿으로 전활시킬 특정단어'
4679
+ }
4680
+ }
4681
+ }
4682
+ }
4683
+ tab_item('포스트설정2'){
4684
+ vertical_box{
4685
+ grid{
4686
+ stretchy false
4687
+
4688
+ @data['포스트설정']['특정단어굵기'] = checkbox('내용 특정단어 굵기 변경(적용 단어 앞 뒤에 @@삽입)'){
4689
+ top 0
4690
+ left 0
4691
+ }
4692
+ @data['포스트설정']['단어색상변경'] = checkbox('내용 특정단어 색상 변경(적용 단어 앞 뒤에 %%삽입)'){
4693
+ top 1
4694
+ left 0
4695
+ }
4696
+ @data['포스트설정']['단어크기변경'] = checkbox('내용 특정단어 크기 변경(적용 단어 앞 &30& 뒤에 &&삽입) ex) &&19&& 카페 &&&&'){
4697
+ top 2
4698
+ left 0
4699
+ }
4700
+ @data['포스트설정']['중앙정렬'] = checkbox('내용 글 중앙 정렬'){
4701
+ top 3
4702
+ left 0
4703
+ on_toggled{
4704
+ if @data['포스트설정']['중앙정렬'].checked?
4705
+ @data['포스트설정']['좌측정렬'].checked = false
4706
+ @data['포스트설정']['우측정렬'].checked = false
4707
+ end
4708
+ }
4709
+ }
4710
+ @data['포스트설정']['좌측정렬'] = checkbox('내용 글 좌측 정렬'){
4711
+ top 4
4712
+ left 0
4713
+ on_toggled{
4714
+ if @data['포스트설정']['좌측정렬'].checked?
4715
+ @data['포스트설정']['중앙정렬'].checked = false
4716
+ @data['포스트설정']['우측정렬'].checked = false
4717
+ end
4718
+ }
4719
+ }
4720
+ @data['포스트설정']['우측정렬'] = checkbox('내용 글 우측 정렬'){
4721
+ top 5
4722
+ left 0
4723
+ on_toggled{
4724
+ if @data['포스트설정']['우측정렬'].checked?
4725
+ @data['포스트설정']['좌측정렬'].checked = false
4726
+ @data['포스트설정']['중앙정렬'].checked = false
4727
+ end
4728
+ }
4729
+ }
4730
+ @data['포스트설정']['막글삽입'] = checkbox('내용 하단에 막글 삽입'){
4731
+ top 6
4732
+ left 0
4733
+ #enabled false # 기본적으로 비활성화
4734
+ on_toggled {
4735
+ if @data['포스트설정']['막글삽입'].checked?
4736
+ @data['포스트설정']['막글투명'].enabled = true # '내용투명' 활성화
4737
+ @data['포스트설정']['막글그대로'].enabled = true # '내용투명' 활성화
4738
+ @data['포스트설정']['막글 수식에 입력'].enabled = true # '내용투명' 활성화
4739
+
4740
+ else
4741
+ @data['포스트설정']['막글투명'].checked = false # 체크 해제
4742
+ @data['포스트설정']['막글투명'].enabled = false # 비활성화
4743
+ @data['포스트설정']['막글그대로'].checked = false # 체크 해제
4744
+ @data['포스트설정']['막글그대로'].enabled = false # 비활성화
4745
+ @data['포스트설정']['막글 수식에 입력'].checked = false # 체크 해제
4746
+ @data['포스트설정']['막글 수식에 입력'].enabled = false # 비활성화
4747
+ end
4748
+ }
4749
+ }
4750
+ @data['포스트설정']['막글삽입시작숫자'] = entry{
4751
+ top 6
4752
+ left 1
4753
+ text '최소수량'
4754
+ }
4755
+ label('~'){
4756
+ top 6
4757
+ left 2
4758
+ }
4759
+ @data['포스트설정']['막글삽입끝숫자'] = entry{
4760
+ top 6
4761
+ left 3
4762
+ text '최대수량'
4763
+ }
4764
+ button('막글 파일 불러오기'){
4765
+ top 6
4766
+ left 4
4767
+ on_clicked{
4768
+ file = open_file
4769
+ if file != nil
4770
+ file_data = File.open(file, 'r', :encoding => 'utf-8').read()
4771
+ @data['포스트설정']['막글'] = file_data
4772
+ end
4773
+ }
4774
+ }
4775
+ @data['포스트설정']['막글투명'] = checkbox('막글 안보이게 처리'){
4776
+ top 7
4777
+ left 0
4778
+ enabled false # 기본적으로 비활성화
4779
+ }
4780
+ @data['포스트설정']['막글그대로'] = checkbox('막글 그대로 입력'){
4781
+ top 7
4782
+ left 1
4783
+ enabled false # 기본적으로 비활성화
4784
+ }
4785
+
4786
+ @data['포스트설정']['태그삽입1'] = checkbox('태그삽입'){
4787
+ top 8
4788
+ left 0
4789
+ }
4790
+ @data['포스트설정']['태그삽입1시작숫자'] = entry{
4791
+ top 8
4792
+ left 1
4793
+ text '최소수량'
4794
+ }
4795
+ label('~'){
4796
+ top 8
4797
+ left 2
4798
+ }
4799
+ @data['포스트설정']['태그삽입1끝숫자'] = entry{
4800
+ top 8
4801
+ left 3
4802
+ text '최대수량'
4803
+ }
4804
+
4805
+ @data['포스트설정']['자동글 수식에 입력'] = checkbox('자동글 수식에 입력'){
4806
+ top 9
4807
+ left 0
4808
+ enabled false # 기본적으로 비활성화
4809
+ on_toggled {
4810
+ if @data['포스트설정']['자동글 수식에 입력'].checked?
4811
+ @data['포스트설정']['내용을자동생성'].checked = false
4812
+ @data['포스트설정']['내용투명'].checked = false
4813
+ end
4739
4814
  }
4815
+ }
4816
+
4817
+ @data['포스트설정']['막글 수식에 입력'] = checkbox('막글 수식에 입력'){
4818
+ top 9
4819
+ left 1
4820
+ enabled false # 기본적으로 비활성화
4821
+ }
4822
+
4823
+
4824
+
4825
+ @data['포스트설정']['전체공개'] = checkbox('전체공개'){
4826
+ top 10
4827
+ left 0
4828
+ on_toggled{
4829
+ if @data['포스트설정']['전체공개'].checked?
4830
+ if @data['포스트설정']['비공개'].checked? or @data['포스트설정']['서로이웃공개'].checked? or @data['포스트설정']['멤버공개'].checked?
4831
+ @data['포스트설정']['멤버공개'].checked = false
4832
+ @data['포스트설정']['서로이웃공개'].checked = false
4833
+ @data['포스트설정']['비공개'].checked = false
4834
+ end
4835
+ end
4836
+ }
4837
+ }
4838
+ @data['포스트설정']['멤버공개'] = checkbox('이웃공개'){
4839
+ top 10
4840
+ left 1
4841
+ on_toggled{
4842
+ if @data['포스트설정']['멤버공개'].checked?
4843
+ if @data['포스트설정']['전체공개'].checked? or @data['포스트설정']['서로이웃공개'].checked? or @data['포스트설정']['비공개'].checked?
4844
+ @data['포스트설정']['전체공개'].checked = false
4845
+ @data['포스트설정']['서로이웃공개'].checked = false
4846
+ @data['포스트설정']['비공개'].checked = false
4847
+ end
4848
+ end
4849
+ }
4850
+ }
4851
+ @data['포스트설정']['서로이웃공개'] = checkbox('서로이웃공개'){
4852
+ top 11
4853
+ left 0
4854
+ on_toggled{
4855
+ if @data['포스트설정']['서로이웃공개'].checked?
4856
+ if @data['포스트설정']['전체공개'].checked? or @data['포스트설정']['비공개'].checked? or @data['포스트설정']['멤버공개'].checked?
4857
+ @data['포스트설정']['전체공개'].checked = false
4858
+ @data['포스트설정']['비공개'].checked = false
4859
+ @data['포스트설정']['멤버공개'].checked = false
4860
+ end
4861
+ end
4862
+ }
4863
+ }
4864
+
4865
+ @data['포스트설정']['비공개'] = checkbox('비공개'){
4866
+ top 11
4867
+ left 1
4868
+ on_toggled{
4869
+ if @data['포스트설정']['비공개'].checked?
4870
+ if @data['포스트설정']['전체공개'].checked? or @data['포스트설정']['서로이웃공개'].checked? or @data['포스트설정']['멤버공개'].checked?
4871
+ @data['포스트설정']['전체공개'].checked = false
4872
+ @data['포스트설정']['서로이웃공개'].checked = false
4873
+ @data['포스트설정']['멤버공개'].checked = false
4874
+ end
4875
+ end
4876
+ }
4877
+ }
4878
+
4879
+
4880
+
4881
+ @data['포스트설정']['댓글허용'] = checkbox('댓글허용'){
4882
+ top 12
4883
+ left 0
4884
+ }
4885
+ @data['포스트설정']['블로그,카페 공유허용'] = checkbox('블로그,카페 공유허용'){
4886
+ top 12
4887
+ left 1
4888
+ }
4889
+ @data['포스트설정']['외부공유허용'] = checkbox('외부공유허용'){
4890
+ top 13
4891
+ left 0
4892
+ }
4893
+ @data['포스트설정']['검색허용'] = checkbox('검색허용'){
4894
+ top 13
4895
+ left 1
4896
+ }
4897
+ @data['포스트설정']['공감허용'] = checkbox('공감허용'){
4898
+ top 14
4899
+ left 0
4900
+ }
4901
+
4902
+ @data['포스트설정']['테더링'] = checkbox('테더링 IP 사용'){
4903
+ top 15
4904
+ left 0
4905
+ on_toggled{
4906
+ if @data['포스트설정']['테더링'].checked?
4907
+ @data['포스트설정']['프록시'].checked = false
4908
+
4909
+ end
4910
+ }
4911
+ }
4912
+ @data['포스트설정']['프록시'] = checkbox('프록시 IP 사용'){
4913
+ top 15
4914
+ left 1
4915
+ on_toggled{
4916
+ if @data['포스트설정']['프록시'].checked?
4917
+ @data['포스트설정']['테더링'].checked = false
4918
+
4919
+ end
4920
+ }
4921
+ }
4922
+ button('프록시 IP 파일 불러오기'){
4923
+ top 15
4924
+ left 3
4925
+ on_clicked{
4926
+ file = open_file
4927
+ if file != nil
4928
+ file_data = File.open(file,'r').read
4929
+ @data['포스트설정']['프록시리스트'] = file_data.split("\n")
4930
+ end
4931
+ }
4932
+ }
4933
+
4934
+ @data['포스트설정']['발행기능'] = checkbox('포스팅 글 [ 발행 ] 하기'){
4935
+ top 16
4936
+ left 0
4937
+ on_toggled{
4938
+ if @data['포스트설정']['발행기능'].checked?
4939
+ if @data['포스트설정']['저장기능'].checked?
4940
+ @data['포스트설정']['저장기능'].checked = false
4941
+
4942
+ end
4943
+ end
4944
+ }
4945
+ }
4946
+ @data['포스트설정']['저장기능'] = checkbox('포스팅 글 [ 저장 ] 하기'){
4947
+ top 16
4948
+ left 1
4949
+
4950
+ on_toggled{
4951
+ if @data['포스트설정']['저장기능'].checked?
4952
+ if @data['포스트설정']['발행기능'].checked?
4953
+ @data['포스트설정']['발행기능'].checked = false
4954
+
4955
+ end
4956
+ end
4740
4957
  }
4741
4958
  }
4742
4959
  }
4743
4960
  }
4961
+ }
4962
+ }
4744
4963
 
4745
4964
  horizontal_box{
4746
4965
  stretchy false