nblog_zon 0.0.7 → 0.0.9

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_zon.rb +1552 -1332
  3. metadata +2 -2
data/lib/nblog_zon.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')
@@ -2039,6 +2053,14 @@ class Wordpress
2039
2053
  end
2040
2054
  end
2041
2055
  end
2056
+
2057
+ if @data['포스트설정']['gpt제목'].checked?
2058
+ chat = Chat_title.new(@data['포스트설정']['api_key'].text.to_s.force_encoding('utf-8'))
2059
+ gpt_text1 = chat.message(title)
2060
+ title = gpt_text1.to_s
2061
+ end
2062
+
2063
+
2042
2064
  @data['table'][index][-1] = 5
2043
2065
  @data['table'] << []
2044
2066
  @data['table'].pop
@@ -2076,6 +2098,25 @@ class Wordpress
2076
2098
  end
2077
2099
  end
2078
2100
  end
2101
+
2102
+
2103
+ if @data['포스트설정']['gpt내용'].checked?
2104
+ api_key = @data['포스트설정']['api_key'].text.to_s.force_encoding('utf-8')
2105
+ #key_change = @data['포스트설정']['특정단어키워드로변경값'].text.to_s.force_encoding('utf-8')
2106
+ #imotcon_change = @data['포스트설정']['스티커로변경단어'].text.to_s.force_encoding('utf-8')
2107
+ #template_change = @data['포스트설정']['내템플릿변경단어'].text.to_s.force_encoding('utf-8')
2108
+ #ttdanar_change = @data['포스트설정']['단어링크적용단어'].text.to_s.force_encoding('utf-8')
2109
+ #sajine_change = @data['포스트설정']['단어사진으로변경단어'].text.to_s.force_encoding('utf-8')
2110
+ #mov_change = @data['포스트설정']['영상으로변경단어'].text.to_s.force_encoding('utf-8')
2111
+ #map_change = @data['포스트설정']['지도로변경단어'].text.to_s.force_encoding('utf-8')
2112
+ #inyong9_change = @data['포스트설정']['인용구변경단어'].text.to_s.force_encoding('utf-8')
2113
+
2114
+
2115
+ chat = Chat_content.new(api_key)
2116
+ gpt_text3 = chat.message(content)
2117
+ content = gpt_text3.to_s
2118
+ end
2119
+
2079
2120
  content_tag = content.split('@##@')[1]
2080
2121
  content = content.split('@##@')[0]
2081
2122
  @data['table'][index][-1] = 15
@@ -2274,7 +2315,7 @@ class Wordpress
2274
2315
  @data['table'][index][-1] = 50
2275
2316
  @data['table'] << []
2276
2317
  @data['table'].pop
2277
- if @data['포스트설정']['gpt'].checked?
2318
+ if @data['포스트설정']['gpt키워드'].checked?
2278
2319
  chat = Chat.new(@data['포스트설정']['api_key'].text.to_s.force_encoding('utf-8'))
2279
2320
  gpt_text = chat.message(keyword)
2280
2321
  content = content.to_s + "\n(자동생성글)\n" + gpt_text.to_s
@@ -2295,7 +2336,7 @@ class Wordpress
2295
2336
  joongbok_check = 0
2296
2337
  counter10 = 0
2297
2338
  while joongbok_check == 0
2298
- if @data['포스트설정']['내용과자동생성'].checked? or @data['포스트설정']['gpt'].checked?
2339
+ if @data['포스트설정']['내용과자동생성'].checked? or @data['포스트설정']['gpt키워드'].checked?
2299
2340
  content22 = content.split("(자동생성글)")[1].split("\n")
2300
2341
  else
2301
2342
  content22 = content.split("\n")
@@ -2319,12 +2360,12 @@ class Wordpress
2319
2360
  content2 = content.split("\n")
2320
2361
  end
2321
2362
 
2322
- if @data['포스트설정']['내용과자동생성'].checked? or @data['포스트설정']['gpt'].checked?
2363
+ if @data['포스트설정']['내용과자동생성'].checked? or @data['포스트설정']['gpt키워드'].checked?
2323
2364
  content2 = content.split("(자동생성글)")[1].split("\n")
2324
2365
  position.pop
2325
2366
  end
2326
2367
 
2327
- if @data['포스트설정']['내용과자동생성'].checked? == false and @data['포스트설정']['내용을자동생성'].checked? == false and @data['포스트설정']['gpt'].checked? == false
2368
+ if @data['포스트설정']['내용과자동생성'].checked? == false and @data['포스트설정']['내용을자동생성'].checked? == false and @data['포스트설정']['gpt키워드'].checked? == false
2328
2369
  content2 = content.split("\n")
2329
2370
  end
2330
2371
 
@@ -2370,7 +2411,7 @@ class Wordpress
2370
2411
  content = content3.join("\n")
2371
2412
  end
2372
2413
 
2373
- if @data['포스트설정']['내용과자동생성'].checked? or @data['포스트설정']['gpt'].checked?
2414
+ if @data['포스트설정']['내용과자동생성'].checked? or @data['포스트설정']['gpt키워드'].checked?
2374
2415
  content2.each_with_index do |con, index|
2375
2416
  if position.include?(index)
2376
2417
  insert_keyword_text = keyword.to_s
@@ -2400,7 +2441,7 @@ class Wordpress
2400
2441
  end
2401
2442
  end
2402
2443
 
2403
- if @data['포스트설정']['내용과자동생성'].checked? == false and @data['포스트설정']['내용을자동생성'].checked? == false and @data['포스트설정']['gpt'].checked? == false
2444
+ if @data['포스트설정']['내용과자동생성'].checked? == false and @data['포스트설정']['내용을자동생성'].checked? == false and @data['포스트설정']['gpt키워드'].checked? == false
2404
2445
  begin
2405
2446
  content2.each_with_index do |con, index|
2406
2447
  if position.include?(index)
@@ -2495,7 +2536,7 @@ class Wordpress
2495
2536
  end
2496
2537
  end
2497
2538
 
2498
- if @data['포스트설정']['내용과자동생성'].checked? or @data['포스트설정']['gpt'].checked?
2539
+ if @data['포스트설정']['내용과자동생성'].checked? or @data['포스트설정']['gpt키워드'].checked?
2499
2540
  if @data['포스트설정']['자동글 수식에 입력'].checked?
2500
2541
  content5 = content.split("(자동생성글)")[0].to_s.split("\n")
2501
2542
  content55 = content.split("(자동생성글)")[1].to_s
@@ -2570,7 +2611,7 @@ class Wordpress
2570
2611
  ###여기까지 이미지 순서대로 안되서 변경##-------------------------------------------------------------------------------
2571
2612
 
2572
2613
  ##여기서부터 이미지 순서대로 수정코드 변경####-------------------------------------------------------------------------------
2573
- if @data['포스트설정']['내용과자동생성'].checked? or @data['포스트설정']['gpt'].checked?
2614
+ if @data['포스트설정']['내용과자동생성'].checked? or @data['포스트설정']['gpt키워드'].checked?
2574
2615
  sleep(2)
2575
2616
  puts '이미지 자동 세탁 중 · · · '
2576
2617
  end
@@ -2589,7 +2630,7 @@ class Wordpress
2589
2630
  end
2590
2631
  sleep(2)
2591
2632
  puts '이미지 자동 세탁 완료 · · · '
2592
- if @data['포스트설정']['내용과자동생성'].checked? or @data['포스트설정']['gpt'].checked?
2633
+ if @data['포스트설정']['내용과자동생성'].checked? or @data['포스트설정']['gpt키워드'].checked?
2593
2634
  content = content5.join("\n")+'(자동생성글)'+content55
2594
2635
  puts content
2595
2636
  else
@@ -2611,7 +2652,7 @@ class Wordpress
2611
2652
  content = content.split(i.force_encoding('utf-8')).join(keyword)
2612
2653
  end
2613
2654
  end
2614
-
2655
+
2615
2656
  @data['table'][index][-1] = 75
2616
2657
  @data['table'] << []
2617
2658
  @data['table'].pop
@@ -2689,7 +2730,7 @@ class Wordpress
2689
2730
  content = content.split(i.force_encoding('utf-8')).join("<sticker></sticker>")
2690
2731
  end
2691
2732
  end
2692
-
2733
+
2693
2734
 
2694
2735
 
2695
2736
  if @data['포스트설정']['내템플릿사용하기'].checked?
@@ -2743,7 +2784,7 @@ class Wordpress
2743
2784
  content = content
2744
2785
  soosick_1 = content_end
2745
2786
  else
2746
- if @data['포스트설정']['gpt'].checked?
2787
+ if @data['포스트설정']['gpt키워드'].checked?
2747
2788
  if @data['포스트설정']['gpt상단'].checked?
2748
2789
  content = content_end+"\n"+content+"\n"
2749
2790
  else
@@ -3411,1261 +3452,1440 @@ class Wordpress
3411
3452
  }
3412
3453
  }
3413
3454
  }
3414
- tab_item('내용설정'){
3455
+ tab_item('내용설정'){
3456
+ horizontal_box{
3457
+ vertical_box{
3415
3458
  horizontal_box{
3416
- vertical_box{
3417
- horizontal_box{
3418
- stretchy false
3419
- button('키워드불러오기'){
3420
- on_clicked{
3421
- file = open_file
3422
- if file != nil
3423
- file_data = File.open(file, 'r', :encoding => 'utf-8').read()
3424
- file_data.split("\n").each do |keyword|
3425
- if keyword.split(' ').join('').length < 2
3426
-
3427
- else
3428
- @data['키워드설정']['키워드'] << [false, keyword]
3429
- @data['키워드설정']['키워드'] << [false, keyword]
3430
- @data['키워드설정']['키워드'].pop
3431
- end
3432
- end
3433
- end
3434
-
3435
- }
3436
- }
3459
+ stretchy false
3460
+ button('키워드불러오기'){
3461
+ on_clicked{
3462
+ file = open_file
3463
+ if file != nil
3464
+ file_data = File.open(file, 'r', :encoding => 'utf-8').read()
3465
+ file_data.split("\n").each do |keyword|
3466
+ if keyword.split(' ').join('').length < 2
3437
3467
 
3438
- }
3439
- horizontal_box{
3440
- stretchy false
3441
- grid{
3442
- button('전체선택'){
3443
- top 1
3444
- left 1
3445
- on_clicked{
3446
- for n in 0..@data['키워드설정']['키워드'].length-1
3447
- @data['키워드설정']['키워드'][n][0] = true
3448
- @data['키워드설정']['키워드'] << []
3449
- @data['키워드설정']['키워드'].pop
3450
- end
3451
- }
3452
- }
3453
- button('선택해제'){
3454
- top 1
3455
- left 2
3456
- on_clicked{
3457
- for n in 0..@data['키워드설정']['키워드'].length-1
3458
- @data['키워드설정']['키워드'][n][0] = false
3459
- @data['키워드설정']['키워드'] << []
3468
+ else
3469
+ @data['키워드설정']['키워드'] << [false, keyword]
3470
+ @data['키워드설정']['키워드'] << [false, keyword]
3460
3471
  @data['키워드설정']['키워드'].pop
3461
3472
  end
3462
- }
3463
- }
3464
- button('삭제하기'){
3465
- top 1
3466
- left 3
3467
- on_clicked{
3468
- m = Array.new
3469
- for n in 0..@data['키워드설정']['키워드'].length-1
3470
- if @data['키워드설정']['키워드'][n][0] == true
3471
- m << n
3472
- end
3473
- end
3473
+ end
3474
+ end
3474
3475
 
3475
- m.reverse.each do |i|
3476
- @data['키워드설정']['키워드'].delete_at(i)
3477
- end
3478
- @data['키워드설정']['키워드'].delete(nil)
3479
- }
3480
- }
3481
- }
3482
-
3483
- @data['키워드설정']['순서사용'] = checkbox('순서사용'){
3484
- stretchy false
3485
- on_toggled{ |c|
3486
- if c.checked?
3487
- @data['키워드설정']['랜덤사용'].checked = false
3488
- end
3489
- }
3490
- }
3491
- @data['키워드설정']['랜덤사용'] = checkbox('랜덤사용'){
3492
- stretchy false
3493
- on_toggled{ |c|
3494
- if c.checked?
3495
- @data['키워드설정']['순서사용'].checked = false
3496
- end
3497
- }
3498
- }
3499
3476
  }
3500
- table{
3501
- checkbox_column('선택'){
3502
- editable true
3503
- }
3504
- text_column('키워드'){
3505
-
3506
- }
3477
+ }
3507
3478
 
3508
- cell_rows @data['키워드설정']['키워드']
3479
+ }
3480
+ horizontal_box{
3481
+ stretchy false
3482
+ grid{
3483
+ button('전체선택'){
3484
+ top 1
3485
+ left 1
3486
+ on_clicked{
3487
+ for n in 0..@data['키워드설정']['키워드'].length-1
3488
+ @data['키워드설정']['키워드'][n][0] = true
3489
+ @data['키워드설정']['키워드'] << []
3490
+ @data['키워드설정']['키워드'].pop
3491
+ end
3509
3492
  }
3510
-
3511
3493
  }
3512
- vertical_separator{
3513
- stretchy false
3514
- }
3515
- vertical_box{
3516
- horizontal_box{
3517
- stretchy false
3518
- button('제목불러오기'){
3519
- on_clicked{
3520
- file = open_file
3521
- if file != nil
3522
- file_data = File.open(file, 'r', :encoding => 'utf-8').read()
3523
- file_data.split("\n").each do |title|
3524
- if title.split(" ").join('').length < 2
3525
-
3526
- else
3527
- @data['제목설정']['제목'] << [false, title]
3528
- @data['제목설정']['제목'] << [false, title]
3529
- @data['제목설정']['제목'].pop
3530
- end
3531
- end
3532
- end
3533
- }
3534
- }
3535
-
3494
+ button('선택해제'){
3495
+ top 1
3496
+ left 2
3497
+ on_clicked{
3498
+ for n in 0..@data['키워드설정']['키워드'].length-1
3499
+ @data['키워드설정']['키워드'][n][0] = false
3500
+ @data['키워드설정']['키워드'] << []
3501
+ @data['키워드설정']['키워드'].pop
3502
+ end
3536
3503
  }
3537
- horizontal_box{
3538
- stretchy false
3539
- grid{
3540
- button('전체선택'){
3541
- top 1
3542
- left 1
3543
- on_clicked{
3544
- for n in 0..@data['제목설정']['제목'].length-1
3545
- @data['제목설정']['제목'][n][0] = true
3546
- @data['제목설정']['제목'] << []
3547
- @data['제목설정']['제목'].pop
3548
- end
3549
- }
3550
- }
3551
- button('선택해제'){
3552
- top 1
3553
- left 2
3554
- on_clicked{
3555
- for n in 0..@data['제목설정']['제목'].length-1
3556
- @data['제목설정']['제목'][n][0] = false
3557
- @data['제목설정']['제목'] << []
3558
- @data['제목설정']['제목'].pop
3559
- end
3560
- }
3561
- }
3562
- button('삭제하기'){
3563
- top 1
3564
- left 3
3565
- on_clicked{
3566
- m = Array.new
3567
- for n in 0..@data['제목설정']['제목'].length-1
3568
- if @data['제목설정']['제목'][n][0] == true
3569
- m << n
3570
- end
3571
- end
3504
+ }
3505
+ button('삭제하기'){
3506
+ top 1
3507
+ left 3
3508
+ on_clicked{
3509
+ m = Array.new
3510
+ for n in 0..@data['키워드설정']['키워드'].length-1
3511
+ if @data['키워드설정']['키워드'][n][0] == true
3512
+ m << n
3513
+ end
3514
+ end
3572
3515
 
3573
- m.reverse.each do |i|
3574
- @data['제목설정']['제목'].delete_at(i)
3575
- end
3576
- @data['제목설정']['제목'].delete(nil)
3577
- }
3578
- }
3579
- }
3580
- @data['제목설정']['순서사용'] = checkbox('순서사용'){
3581
- stretchy false
3582
- on_toggled{ |c|
3583
- if c.checked?
3584
- @data['제목설정']['랜덤사용'].checked = false
3585
- end
3586
- }
3587
- }
3588
- @data['제목설정']['랜덤사용'] = checkbox('랜덤사용'){
3589
- stretchy false
3590
- on_toggled{ |c|
3591
- if c.checked?
3592
- @data['제목설정']['순서사용'].checked = false
3593
- end
3594
- }
3595
- }
3516
+ m.reverse.each do |i|
3517
+ @data['키워드설정']['키워드'].delete_at(i)
3518
+ end
3519
+ @data['키워드설정']['키워드'].delete(nil)
3596
3520
  }
3597
- table{
3598
- checkbox_column('선택'){
3599
- editable true
3600
- }
3601
- text_column('제목'){
3602
-
3603
- }
3604
-
3605
- cell_rows @data['제목설정']['제목']
3521
+ }
3522
+ }
3523
+
3524
+ @data['키워드설정']['순서사용'] = checkbox('순서사용'){
3525
+ stretchy false
3526
+ on_toggled{ |c|
3527
+ if c.checked?
3528
+ @data['키워드설정']['랜덤사용'].checked = false
3529
+ end
3606
3530
  }
3607
-
3608
3531
  }
3609
- vertical_separator{
3532
+ @data['키워드설정']['랜덤사용'] = checkbox('랜덤사용'){
3610
3533
  stretchy false
3534
+ on_toggled{ |c|
3535
+ if c.checked?
3536
+ @data['키워드설정']['순서사용'].checked = false
3537
+ end
3538
+ }
3539
+ }
3540
+ }
3541
+ vertical_separator{
3542
+ stretchy false
3543
+ }
3544
+ horizontal_box{
3545
+ stretchy false
3546
+ grid{
3547
+ @data['포스트설정']['gpt키워드'] = checkbox('GPT 키워드 기반 글 생성'){
3548
+ top 1
3549
+ left 0
3550
+ #enabled false # 기본적으로 비활성화
3551
+ on_toggled {
3552
+ if @data['포스트설정']['gpt키워드'].checked?
3553
+ @data['포스트설정']['gpt상단'].enabled = true # '내용투명' 활성화
3554
+ @data['포스트설정']['gpt하단'].enabled = true # '내용투명' 활성화
3555
+ else
3556
+ @data['포스트설정']['gpt상단'].checked = false # 체크 해제
3557
+ @data['포스트설정']['gpt상단'].enabled = false # 비활성화
3558
+ @data['포스트설정']['gpt하단'].checked = false # 체크 해제
3559
+ @data['포스트설정']['gpt하단'].enabled = false # 비활성화
3560
+ end
3561
+ }
3562
+
3563
+ }
3564
+
3565
+ @data['포스트설정']['gpt상단'] = checkbox('원고 위에 넣기'){
3566
+ top 1
3567
+ left 1
3568
+ enabled false # 기본적으로 비활성화
3569
+ on_toggled{
3570
+ if @data['포스트설정']['gpt상단'].checked?
3571
+ @data['포스트설정']['gpt하단'].checked = false
3572
+ end
3573
+ }
3611
3574
  }
3612
- vertical_box{
3613
- horizontal_box{
3614
- stretchy false
3615
- button('내용불러오기'){
3616
- on_clicked{
3617
- file = open_file
3618
- if file != nil
3619
- file_name = file.split("\\")[-1]
3620
- file_data = File.open(file,'r', :encoding => 'utf-8').read()
3621
- if file_data.split("\n").length < 2
3622
- file_data = file_data + "\n"
3623
- end
3624
- @data['내용설정']['내용'] << [false, file_name, file_data]
3625
- @data['내용설정']['내용'] << [false, file_name, file_data]
3626
- @data['내용설정']['내용'].pop
3627
- end
3628
- }
3629
- }
3630
3575
 
3576
+ @data['포스트설정']['gpt하단'] = checkbox('원고 아래 넣기'){
3577
+ top 1
3578
+ left 2
3579
+ enabled false # 기본적으로 비활성화
3580
+ on_toggled{
3581
+ if @data['포스트설정']['gpt하단'].checked?
3582
+ @data['포스트설정']['gpt상단'].checked = false
3583
+ end
3631
3584
  }
3632
- horizontal_box{
3633
- stretchy false
3634
- grid{
3635
- button('전체선택'){
3636
- top 1
3637
- left 1
3638
- on_clicked{
3639
- for n in 0..@data['내용설정']['내용'].length-1
3640
- @data['내용설정']['내용'][n][0] = true
3641
- @data['내용설정']['내용'] << []
3642
- @data['내용설정']['내용'].pop
3643
- end
3644
- }
3645
- }
3646
- button('선택해제'){
3647
- top 1
3648
- left 2
3649
- on_clicked{
3650
- for n in 0..@data['내용설정']['내용'].length-1
3651
- @data['내용설정']['내용'][n][0] = false
3652
- @data['내용설정']['내용'] << []
3653
- @data['내용설정']['내용'].pop
3654
- end
3655
- }
3656
- }
3657
- button('삭제하기'){
3658
- top 1
3659
- left 3
3660
- on_clicked{
3661
- m = Array.new
3662
- for n in 0..@data['내용설정']['내용'].length-1
3663
- if @data['내용설정']['내용'][n][0] == true
3664
- m << n
3665
- end
3666
- end
3667
-
3668
- m.reverse.each do |i|
3669
- @data['내용설정']['내용'].delete_at(i)
3670
- end
3671
- @data['내용설정']['내용'].delete(nil)
3672
- }
3673
- }
3674
- }
3675
- @data['내용설정']['순서사용'] = checkbox('순서사용'){
3676
- stretchy false
3677
- on_toggled{ |c|
3678
- if c.checked?
3679
- @data['내용설정']['랜덤사용'].checked = false
3680
- end
3681
- }
3682
- }
3683
- @data['내용설정']['랜덤사용'] = checkbox('랜덤사용'){
3684
- stretchy false
3685
- on_toggled{ |c|
3686
- if c.checked?
3687
- @data['내용설정']['순서사용'].checked = false
3688
- end
3689
- }
3690
- }
3691
- }
3692
- table{
3693
- checkbox_column('선택'){
3694
- editable true
3695
- }
3696
- text_column('내용파일'){
3697
-
3698
- }
3699
-
3700
- cell_rows @data['내용설정']['내용']
3701
- }
3585
+ }
3586
+ } }
3587
+ horizontal_box{
3588
+ stretchy false
3589
+ grid{
3590
+ label('※ GPT 기능 사용시 포스트설정1에서 GPT사용에 체크 필수'){
3591
+ } } }
3592
+
3593
+
3594
+ table{
3595
+ checkbox_column('선택'){
3596
+ editable true
3597
+ }
3598
+ text_column('키워드'){
3702
3599
 
3703
- horizontal_box{
3704
- stretchy false
3705
- @data['이미지설정']['폴더경로2'] = entry{
3706
- stretchy false
3707
- text "내용폴더경로 ex)C:\\내용\\폴더1"
3708
- }
3709
- button('폴더째로불러오기'){
3710
- stretchy false
3711
- on_clicked{
3712
- path = @data['이미지설정']['폴더경로2'].text.to_s.force_encoding('utf-8').force_encoding('utf-8')
3713
- Dir.entries(@data['이미지설정']['폴더경로2'].text.to_s.force_encoding('utf-8')).each do |file|
3714
- if file == '.' or file == '..'
3715
-
3716
- else
3717
- file_data = File.open(path+'/'+file,'r', :encoding => 'utf-8').read()
3718
- @data['내용설정']['내용'] << [false, file, file_data]
3719
- end
3720
- end
3721
- @data['내용설정']['내용'] << []
3722
- @data['내용설정']['내용'].pop
3723
- }
3724
- }
3725
- }
3726
3600
  }
3601
+
3602
+ cell_rows @data['키워드설정']['키워드']
3727
3603
  }
3604
+
3605
+
3606
+
3607
+ }
3608
+ vertical_separator{
3609
+ stretchy false
3728
3610
  }
3729
- tab_item('이미지설정'){
3611
+ vertical_box{
3730
3612
  horizontal_box{
3731
- vertical_box{
3732
- stretchy false
3733
- horizontal_box{
3734
- stretchy false
3735
- button('이미지불러오기'){
3736
- on_clicked{
3737
- file = open_file
3738
- if file != nil
3739
- file_name = file.split("\\")[-1]
3740
- @data['이미지설정']['이미지'] << [false, file_name, file]
3741
- @data['이미지설정']['이미지'] << [false, file_name, file]
3742
- @data['이미지설정']['이미지'].pop
3743
- end
3744
- }
3745
- }
3746
- }
3747
- horizontal_box{
3748
- stretchy false
3749
- grid{
3750
- button('전체선택'){
3751
- top 1
3752
- left 1
3753
- on_clicked{
3754
- for n in 0..@data['이미지설정']['이미지'].length-1
3755
- @data['이미지설정']['이미지'][n][0] = true
3756
- @data['이미지설정']['이미지'] << []
3757
- @data['이미지설정']['이미지'].pop
3758
- end
3759
- }
3760
- }
3761
- button('선택해제'){
3762
- top 1
3763
- left 2
3764
- on_clicked{
3765
- for n in 0..@data['이미지설정']['이미지'].length-1
3766
- @data['이미지설정']['이미지'][n][0] = false
3767
- @data['이미지설정']['이미지'] << []
3768
- @data['이미지설정']['이미지'].pop
3769
- end
3770
- }
3771
- }
3772
- button('삭제하기'){
3773
- top 1
3774
- left 3
3775
- on_clicked{
3776
- m = Array.new
3777
- for n in 0..@data['이미지설정']['이미지'].length-1
3778
- if @data['이미지설정']['이미지'][n][0] == true
3779
- m << n
3780
- end
3781
- end
3782
-
3783
- m.reverse.each do |i|
3784
- @data['이미지설정']['이미지'].delete_at(i)
3785
- end
3613
+ stretchy false
3614
+ button('제목불러오기'){
3615
+ on_clicked{
3616
+ file = open_file
3617
+ if file != nil
3618
+ file_data = File.open(file, 'r', :encoding => 'utf-8').read()
3619
+ file_data.split("\n").each do |title|
3620
+ if title.split(" ").join('').length < 2
3786
3621
 
3787
- @data['이미지설정']['이미지'].delete(nil)
3788
- }
3789
- }
3790
- }
3791
- @data['이미지설정']['순서사용'] = checkbox('순서사용'){
3792
- stretchy false
3793
- on_toggled{ |c|
3794
- if c.checked?
3795
- @data['이미지설정']['랜덤사용'].checked = false
3796
- end
3797
- }
3798
- }
3799
- @data['이미지설정']['랜덤사용'] = checkbox('랜덤사용'){
3800
- stretchy false
3801
- on_toggled{ |c|
3802
- if c.checked?
3803
- @data['이미지설정']['순서사용'].checked = false
3622
+ else
3623
+ @data['제목설정']['제목'] << [false, title]
3624
+ @data['제목설정']['제목'] << [false, title]
3625
+ @data['제목설정']['제목'].pop
3804
3626
  end
3805
- }
3806
- }
3627
+ end
3628
+ end
3807
3629
  }
3808
- table{
3809
- checkbox_column('선택'){
3810
- editable true
3811
- }
3812
- text_column('이미지파일'){
3813
-
3814
- }
3630
+ }
3815
3631
 
3816
- cell_rows @data['이미지설정']['이미지']
3817
- }
3818
- horizontal_box{
3819
- stretchy false
3820
- @data['이미지설정']['폴더경로'] = entry{
3821
- stretchy false
3822
- text "사진폴더경로 ex)C:\\사진\\폴더2"
3823
- }
3824
- button('폴더째로불러오기'){
3825
- stretchy false
3826
- on_clicked{
3827
- path = @data['이미지설정']['폴더경로'].text.to_s.force_encoding('utf-8').force_encoding('utf-8')
3828
- Dir.entries(@data['이미지설정']['폴더경로'].text.to_s.force_encoding('utf-8')).each do |file|
3829
- if file == '.' or file == '..'
3830
-
3831
- else
3832
- @data['이미지설정']['이미지'] << [false, file, path+"\\"+file.force_encoding('utf-8')]
3833
- end
3834
- end
3835
- @data['이미지설정']['이미지'] << []
3836
- @data['이미지설정']['이미지'].pop
3837
- }
3838
- }
3632
+ }
3633
+ horizontal_box{
3634
+ stretchy false
3635
+ grid{
3636
+ button('전체선택'){
3637
+ top 1
3638
+ left 1
3639
+ on_clicked{
3640
+ for n in 0..@data['제목설정']['제목'].length-1
3641
+ @data['제목설정']['제목'][n][0] = true
3642
+ @data['제목설정']['제목'] << []
3643
+ @data['제목설정']['제목'].pop
3644
+ end
3839
3645
  }
3840
-
3841
3646
  }
3842
- vertical_separator{
3843
- stretchy false
3647
+ button('선택해제'){
3648
+ top 1
3649
+ left 2
3650
+ on_clicked{
3651
+ for n in 0..@data['제목설정']['제목'].length-1
3652
+ @data['제목설정']['제목'][n][0] = false
3653
+ @data['제목설정']['제목'] << []
3654
+ @data['제목설정']['제목'].pop
3655
+ end
3656
+ }
3844
3657
  }
3658
+ button('삭제하기'){
3659
+ top 1
3660
+ left 3
3661
+ on_clicked{
3662
+ m = Array.new
3663
+ for n in 0..@data['제목설정']['제목'].length-1
3664
+ if @data['제목설정']['제목'][n][0] == true
3665
+ m << n
3666
+ end
3667
+ end
3845
3668
 
3846
- vertical_box{
3847
- horizontal_box{
3848
- stretchy false
3849
- @data['image_type'][0] = checkbox('저장 사진 사용'){
3850
- on_toggled{
3851
- if @data['image_type'][0].checked?
3852
- @data['image_type'][1].checked = false
3853
- @data['image_type'][2].checked = false
3854
- end
3855
- }
3856
- }
3857
- @data['image_type'][1] = checkbox('색상 사진 사용'){
3858
- on_toggled{
3859
- if @data['image_type'][1].checked?
3860
- @data['image_type'][0].checked = false
3861
- @data['image_type'][2].checked = false
3862
- end
3863
- }
3864
- }
3865
- @data['image_type'][2] = checkbox('자동 다운로드 사진 사용'){
3866
- on_toggled{
3867
- if @data['image_type'][2].checked?
3868
- @data['image_type'][1].checked = false
3869
- @data['image_type'][0].checked = false
3870
- end
3871
- }
3872
- }
3669
+ m.reverse.each do |i|
3670
+ @data['제목설정']['제목'].delete_at(i)
3671
+ end
3672
+ @data['제목설정']['제목'].delete(nil)
3873
3673
  }
3874
-
3875
- grid{
3876
- stretchy false
3877
- @data['이미지설정']['글자삽입1'] = checkbox('글자 삽입1'){
3878
- top 0
3879
- left 0
3880
- }
3881
- button('가져오기'){
3882
- top 0
3883
- left 1
3884
- on_clicked{
3885
- file = open_file
3886
- if file != nil
3887
- file_data = File.open(file, 'r', :encoding => 'utf-8').read()
3888
- @data['이미지설정']['이미지글자1'] = file_data.to_s.split("\n")
3889
- end
3890
- }
3891
- }
3892
- @data['이미지설정']['이미지글자1크기1'] = entry{
3893
- top 0
3894
- left 2
3895
- text 'ex) 33'
3896
- }
3897
- label('pt'){
3898
- top 0
3899
- left 3
3900
- }
3901
- @data['이미지설정']['이미지글자1크기2'] = entry{
3902
- top 0
3903
- left 4
3904
- text 'ex) 55'
3905
- }
3906
- label('pt'){
3907
- top 0
3908
- left 5
3909
- }
3910
- @data['이미지설정']['글자테두리'] = checkbox('글자 테두리'){
3911
- top 0
3912
- left 6
3913
- }
3914
-
3915
- @data['이미지설정']['글자삽입2'] = checkbox('글자 삽입2'){
3916
- top 1
3917
- left 0
3918
- }
3919
- button('가져오기'){
3920
- top 1
3921
- left 1
3922
- on_clicked{
3923
- file = open_file
3924
- if file != nil
3925
- file_data = File.open(file, 'r', :encoding => 'utf-8').read()
3926
- @data['이미지설정']['이미지글자2'] = file_data.split("\n")
3927
- end
3928
- }
3929
- }
3930
- @data['이미지설정']['이미지글자2크기1'] = entry{
3931
- top 1
3932
- left 2
3933
- text 'ex) 33'
3934
- }
3935
- label('pt'){
3936
- top 1
3937
- left 3
3938
- }
3939
- @data['이미지설정']['이미지글자2크기2'] = entry{
3940
- top 1
3941
- left 4
3942
- text 'ex) 55'
3943
- }
3944
- label('pt'){
3945
- top 1
3946
- left 5
3947
- }
3948
- @data['이미지설정']['글자그림자'] = checkbox('글자 그림자'){
3949
- top 1
3950
- left 6
3951
- }
3952
- @data['이미지설정']['필터사용'] = checkbox('필터사용(색상 사진 적용불가)'){
3953
- top 2
3954
- left 0
3955
- }
3956
- @data['이미지설정']['테두리사용'] = checkbox('테두리 사용'){
3957
- top 3
3958
- left 0
3959
- }
3960
- @data['이미지설정']['테두리크기1'] = entry{
3961
- top 3
3962
- left 2
3963
- text 'ex) 1'
3964
- }
3965
- label('pt'){
3966
- top 3
3967
- left 3
3968
- }
3969
- @data['이미지설정']['테두리크기2'] = entry{
3970
- top 3
3971
- left 4
3972
- text 'ex) 33'
3973
- }
3974
- label('pt'){
3975
- top 3
3976
- left 5
3977
- }
3978
-
3674
+ }
3675
+ }
3676
+ @data['제목설정']['순서사용'] = checkbox('순서사용'){
3677
+ stretchy false
3678
+ on_toggled{ |c|
3679
+ if c.checked?
3680
+ @data['제목설정']['랜덤사용'].checked = false
3681
+ end
3979
3682
  }
3980
-
3981
- horizontal_box{
3982
- stretchy false
3983
- @data['image_size'][0] = checkbox('랜덤 px'){
3984
- on_toggled{
3985
- if @data['image_size'][0].checked?
3986
- @data['image_size'][1].checked = false
3987
- @data['image_size'][2].checked = false
3988
- @data['image_size'][3].checked = false
3989
- @data['image_size'][4].checked = false
3990
- end
3991
- }
3992
- }
3993
- @data['image_size'][1] = checkbox('740 px'){
3994
- on_toggled{
3995
- if @data['image_size'][1].checked?
3996
- @data['image_size'][0].checked = false
3997
- @data['image_size'][2].checked = false
3998
- @data['image_size'][3].checked = false
3999
- @data['image_size'][4].checked = false
4000
- end
4001
- }
4002
- }
4003
- @data['image_size'][2] = checkbox('650 px'){
4004
- on_toggled{
4005
- if @data['image_size'][2].checked?
4006
- @data['image_size'][1].checked = false
4007
- @data['image_size'][0].checked = false
4008
- @data['image_size'][3].checked = false
4009
- @data['image_size'][4].checked = false
4010
- end
4011
- }
4012
- }
4013
- @data['image_size'][3] = checkbox('550 px'){
4014
- on_toggled{
4015
- if @data['image_size'][3].checked?
4016
- @data['image_size'][1].checked = false
4017
- @data['image_size'][2].checked = false
4018
- @data['image_size'][0].checked = false
4019
- @data['image_size'][4].checked = false
4020
- end
4021
- }
4022
- }
4023
- @data['image_size'][4] = checkbox('480 px'){
4024
- on_toggled{
4025
- if @data['image_size'][4].checked?
4026
- @data['image_size'][1].checked = false
4027
- @data['image_size'][2].checked = false
4028
- @data['image_size'][3].checked = false
4029
- @data['image_size'][0].checked = false
4030
- end
4031
- }
4032
- }
3683
+ }
3684
+ @data['제목설정']['랜덤사용'] = checkbox('랜덤사용'){
3685
+ stretchy false
3686
+ on_toggled{ |c|
3687
+ if c.checked?
3688
+ @data['제목설정']['순서사용'].checked = false
3689
+ end
4033
3690
  }
4034
3691
  }
4035
3692
  }
4036
- }
4037
-
4038
- tab_item('포스트설정1'){
3693
+ vertical_separator{
3694
+ stretchy false
3695
+ }
4039
3696
  horizontal_box{
4040
- vertical_box{
4041
- stretchy false
4042
- grid{
4043
- stretchy false
4044
- @data['포스트설정']['제목키워드변경'] = checkbox('제목에 특정 단어를 내용에 사용할 키워드로 변경'){
4045
- top 0
4046
- left 0
4047
-
4048
- }
4049
- @data['포스트설정']['제목키워드변경단어'] = entry{
4050
- top 0
4051
- left 1
4052
- text '특정단어'
4053
- }
4054
-
4055
- # @data['포스트설정']['제목단어변경'] = checkbox('제목에 특정 단어를 변경'){
4056
- # top 1
4057
- # left 0
4058
- # }
4059
- # @data['포스트설정']['제목단어변경파일불러오기'] = button('설정 파일 불러오기'){
4060
- # top 1
4061
- # left 1
4062
- # on_clicked{
4063
- # file = open_file
4064
- # if file != nil
4065
- # file_data = File.open(file, 'r', :encoding => 'utf-8').read()
4066
- # file_data.split("\n").each do |i|
4067
- # i2 = i.split('>')
4068
- # text_key = i2[0].to_s
4069
- # text_val = i2[1].to_s.split(',')
4070
- # @data['포스트설정']['제목특정단어변경데이터'][text_key] = text_val
4071
- # end
4072
- # end
4073
- # }
4074
- # }
4075
- @data['포스트설정']['제목에키워드삽입'] = checkbox('제목에 키워드 삽입'){
4076
- top 2
4077
- left 0
4078
- }
4079
- @data['포스트설정']['제목에키워드삽입숫자1'] = entry(){
4080
- top 2
4081
- left 1
4082
- text '최소수량'
4083
- }
4084
- label('~'){
4085
- top 2
4086
- left 2
4087
- }
4088
- @data['포스트설정']['제목에키워드삽입숫자2'] = entry(){
4089
- top 2
4090
- left 3
4091
- text '최대수량'
4092
- }
4093
- label('ㄴ'){
4094
- top 3
4095
- left 2
4096
- }
4097
- @data['포스트설정']['제목앞'] = checkbox('제목에 키워드 삽입 제목 앞'){
4098
- top 3
4099
- left 3
4100
- on_toggled{
4101
- if @data['포스트설정']['제목앞'].checked? == true
4102
- if @data['포스트설정']['제목뒤'].checked?
4103
- @data['포스트설정']['제목뒤'].checked = false
4104
- end
4105
- end
4106
- }
4107
- }
4108
- label('ㄴ'){
4109
- top 4
4110
- left 2
4111
- }
4112
- @data['포스트설정']['제목뒤'] = checkbox('제목에 키워드 삽입 제목 뒤'){
4113
- top 4
4114
- left 3
4115
- on_toggled{
4116
- if @data['포스트설정']['제목뒤'].checked? == true
4117
- if @data['포스트설정']['제목앞'].checked?
4118
- @data['포스트설정']['제목앞'].checked = false
4119
- end
4120
- end
4121
- }
4122
- }
4123
- @data['포스트설정']['제목내용설정'] = checkbox('내용의 첫 문장을 제목으로 설정'){
4124
- top 4
4125
- left 0
4126
- }
4127
-
4128
- @data['포스트설정']['특수문자'] = checkbox('제목에 키워드 삽입 시 특수문자 삽입'){
4129
- top 5
4130
- left 0
4131
- }
4132
- @data['포스트설정']['제목을랜덤'] = checkbox('제목을 랜덤 단어 조합으로 자동 입력'){
4133
- top 6
4134
- left 0
4135
- }
4136
- @data['포스트설정']['내용키워드삽입'] = checkbox('내용 키워드 삽입'){
4137
- top 7
4138
- left 0
4139
- }
4140
- @data['포스트설정']['키워드삽입시작숫자'] = entry(){
4141
- top 7
4142
- left 1
4143
- text '최소수량'
4144
- }
4145
- label('~'){
4146
- top 7
4147
- left 2
4148
- }
4149
- @data['포스트설정']['키워드삽입끝숫자'] = entry(){
4150
- top 7
4151
- left 3
4152
- text '최대수량'
4153
- }
4154
- @data['포스트설정']['키워드삽입'] = checkbox('내용 키워드 삽입시 링크 삽입'){
4155
- top 8
4156
- left 0
4157
- }
4158
- @data['포스트설정']['키워드삽입시링크'] = entry(){
4159
- top 8
4160
- left 1
4161
- text 'URL'
4162
- }
4163
- @data['포스트설정']['내용을자동생성'] = checkbox('내용을 키워드 기반으로 자동 생성해서 포스팅'){
4164
- top 9
4165
- left 0
4166
- on_toggled{
4167
- if @data['포스트설정']['내용을자동생성'].checked?
4168
- if @data['포스트설정']['내용과자동생성'].checked?
4169
- @data['포스트설정']['내용과자동생성'].checked = false
4170
- end
4171
- end
4172
- }
4173
- }
4174
-
4175
- @data['포스트설정']['gpt'] = checkbox('내용을 키워드 기반의 GPT로 생성해서 포스팅'){
4176
- top 10
4177
- left 0
4178
- }
4179
-
4180
- @data['포스트설정']['api_key'] = entry(){
4181
- top 10
4182
- left 1
4183
- text 'api key'
4184
- }
4185
-
4186
- @data['포스트설정']['gpt상단'] = checkbox('원고내용 위에 넣기'){
4187
- top 10
4188
- left 3
4189
- }
4190
-
4191
- @data['포스트설정']['gpt하단'] = checkbox('원고내용 아래에 넣기'){
4192
- top 11
4193
- left 3
4194
- }
3697
+ stretchy false
3698
+ grid{
3699
+ @data['포스트설정']['gpt제목'] = checkbox('제목을 이용해 GPT로 비슷한 제목 생성'){
3700
+
3701
+
3702
+ }}}
3703
+ horizontal_box{
3704
+ stretchy false
3705
+ grid{
3706
+ label('※ GPT 기능 사용시 포스트설정1에서 GPT사용에 체크 필수'){
3707
+ } } }
3708
+
4195
3709
 
4196
- aa1 = 2
4197
- @data['포스트설정']['내용과자동생성'] = checkbox('내용을 내용 파일 + 자동 생성 조합으로 포스팅'){
4198
- top 10 + aa1
4199
- left 0
4200
- on_toggled{
4201
- if @data['포스트설정']['내용과자동생성'].checked?
4202
- if @data['포스트설정']['내용을자동생성'].checked?
4203
- @data['포스트설정']['내용을자동생성'].checked = false
4204
- end
4205
- end
4206
- }
4207
- }
4208
- @data['포스트설정']['내용투명'] = checkbox('키워드 기반 자동 생성글 안보이게 처리'){
4209
- top 11+ aa1
4210
- left 0
4211
- }
4212
- @data['포스트설정']['내용자동변경'] = checkbox('내용에 단어들을 자동 변경'){
4213
- top 12+ aa1
4214
- left 0
4215
- }
4216
- button('설정 파일 불러오기'){
4217
- top 12+ aa1
4218
- left 1
4219
- on_clicked{
4220
- file = open_file
4221
- if file != nil
4222
- file_data = File.open(file, 'r', :encoding => 'utf-8').read()
4223
- file_data.split("\n").each do |i|
4224
- key = i.split('>')[0]
4225
- v = i.split('>')[1].to_s.split(',')
4226
- @data['포스트설정']['내용자동변경값'][key] = v
4227
- end
4228
- end
4229
- }
4230
- }
4231
- @data['포스트설정']['제목에도적용'] = checkbox('제목에도 적용'){
4232
- top 12+ aa1
4233
- left 3
4234
- }
3710
+ table{
3711
+ checkbox_column('선택'){
3712
+ editable true
3713
+ }
3714
+ text_column('제목'){
4235
3715
 
4236
- @data['포스트설정']['내용사진자동삽입'] = checkbox('내용 사진 자동 삽입'){
4237
- top 13+ aa1
4238
- left 0
4239
- }
4240
- @data['포스트설정']['내용사진자동삽입시작숫자'] = entry(){
4241
- top 13+ aa1
4242
- left 1
4243
- text '최소수량'
4244
- }
4245
- label('~'){
4246
- top 13+ aa1
4247
- left 2
4248
- }
4249
- @data['포스트설정']['내용사진자동삽입끝숫자'] = entry(){
4250
- top 13+ aa1
4251
- left 3
4252
- text '최대수량'
4253
- }
3716
+ }
4254
3717
 
4255
- @data['포스트설정']['내용사진링크'] = checkbox('내용 사진 자동 삽입시 링크 삽입'){
4256
- top 14+ aa1
4257
- left 0
4258
- }
3718
+ cell_rows @data['제목설정']['제목']
3719
+ }
3720
+
4259
3721
 
4260
- @data['포스트설정']['내용사진링크값'] = entry(){
4261
- top 14+ aa1
4262
- left 1
4263
- text 'URL'
4264
- }
3722
+ }
3723
+ vertical_separator{
3724
+ stretchy false
3725
+ }
3726
+ vertical_box{
3727
+ horizontal_box{
3728
+ stretchy false
3729
+ button('내용불러오기'){
3730
+ on_clicked{
3731
+ file = open_file
3732
+ if file != nil
3733
+ file_name = file.split("\\")[-1]
3734
+ file_data = File.open(file,'r', :encoding => 'utf-8').read()
3735
+ if file_data.split("\n").length < 2
3736
+ file_data = file_data + "\n"
3737
+ end
3738
+ @data['내용설정']['내용'] << [false, file_name, file_data]
3739
+ @data['내용설정']['내용'] << [false, file_name, file_data]
3740
+ @data['내용설정']['내용'].pop
3741
+ end
4265
3742
  }
4266
3743
  }
4267
3744
 
4268
- vertical_separator{
4269
- stretchy false
4270
- }
4271
-
4272
-
3745
+ }
3746
+ horizontal_box{
3747
+ stretchy false
4273
3748
  grid{
4274
- @data['포스트설정']['특정단어키워드로변경'] = checkbox('내용 특정단어를 키워드로 변경'){
4275
- top 0
4276
- left 0
3749
+ button('전체선택'){
3750
+ top 1
3751
+ left 1
3752
+ on_clicked{
3753
+ for n in 0..@data['내용설정']['내용'].length-1
3754
+ @data['내용설정']['내용'][n][0] = true
3755
+ @data['내용설정']['내용'] << []
3756
+ @data['내용설정']['내용'].pop
3757
+ end
4277
3758
  }
4278
- @data['포스트설정']['특정단어키워드로변경값'] = entry{
4279
- top 0
4280
- left 1
4281
- text '특정단어'
3759
+ }
3760
+ button('선택해제'){
3761
+ top 1
3762
+ left 2
3763
+ on_clicked{
3764
+ for n in 0..@data['내용설정']['내용'].length-1
3765
+ @data['내용설정']['내용'][n][0] = false
3766
+ @data['내용설정']['내용'] << []
3767
+ @data['내용설정']['내용'].pop
3768
+ end
4282
3769
  }
3770
+ }
3771
+ button('삭제하기'){
3772
+ top 1
3773
+ left 3
3774
+ on_clicked{
3775
+ m = Array.new
3776
+ for n in 0..@data['내용설정']['내용'].length-1
3777
+ if @data['내용설정']['내용'][n][0] == true
3778
+ m << n
3779
+ end
3780
+ end
4283
3781
 
4284
- @data['포스트설정']['제외하고등록'] = checkbox('내용 특정단어를 제외하고 등록'){
4285
- top 1
4286
- left 0
4287
- }
4288
- @data['포스트설정']['제외하고등록값'] = entry{
4289
- top 1
4290
- left 1
4291
- text '특정단어'
3782
+ m.reverse.each do |i|
3783
+ @data['내용설정']['내용'].delete_at(i)
3784
+ end
3785
+ @data['내용설정']['내용'].delete(nil)
4292
3786
  }
4293
-
4294
- @data['포스트설정']['단어링크적용'] = checkbox('내용 특정단어를 링크적용 등록'){
4295
- top 2
4296
- left 0
3787
+ }
3788
+ }
3789
+ @data['내용설정']['순서사용'] = checkbox('순서사용'){
3790
+ stretchy false
3791
+ on_toggled{ |c|
3792
+ if c.checked?
3793
+ @data['내용설정']['랜덤사용'].checked = false
3794
+ end
4297
3795
  }
4298
- @data['포스트설정']['단어링크적용단어'] = entry{
4299
- top 2
4300
- left 1
4301
- text '특정단어'
3796
+ }
3797
+ @data['내용설정']['랜덤사용'] = checkbox('랜덤사용'){
3798
+ stretchy false
3799
+ on_toggled{ |c|
3800
+ if c.checked?
3801
+ @data['내용설정']['순서사용'].checked = false
3802
+ end
4302
3803
  }
3804
+ }
3805
+ }
3806
+ vertical_separator{
3807
+ stretchy false
3808
+ }
3809
+ horizontal_box{
3810
+ stretchy false
3811
+ grid{
3812
+ @data['포스트설정']['gpt내용'] = checkbox('내용파일을 이용해 GPT로 글 변형'){
3813
+
3814
+
3815
+ }}}
3816
+ horizontal_box{
3817
+ stretchy false
3818
+ grid{
3819
+ label('※ GPT 기능 사용시 포스트설정1에서 GPT사용에 체크 필수'){
3820
+ } } }
3821
+
3822
+ table{
3823
+ checkbox_column('선택'){
3824
+ editable true
3825
+ }
3826
+ text_column('내용파일'){
4303
3827
 
4304
- label('ㄴ적용하려는 링크 URL 입력'){
4305
- top 3
4306
- left 0
4307
- }
4308
- @data['포스트설정']['단어링크적용url'] = entry{
4309
- top 3
4310
- left 1
4311
- text 'URL'
4312
- }
3828
+ }
4313
3829
 
4314
- @data['포스트설정']['단어사진으로변경'] = checkbox('내용 특정단어를 사진으로 변경'){
4315
- top 4
4316
- left 0
4317
- }
4318
- @data['포스트설정']['단어사진으로변경단어'] = entry{
4319
- top 4
4320
- left 1
4321
- text '특정단어1,@특정단어2 (앞에@붙이면 링크적용)'
4322
- }
4323
- label('ㄴ적용하려는 링크 URL 입력'){
4324
- top 5
4325
- left 0
4326
- }
3830
+ cell_rows @data['내용설정']['내용']
3831
+ }
4327
3832
 
4328
- @data['포스트설정']['단어사진으로변경URL'] = entry{
4329
- top 5
4330
- left 1
4331
- text 'URL'
4332
- }
3833
+ horizontal_box{
3834
+ stretchy false
3835
+ @data['이미지설정']['폴더경로2'] = entry{
3836
+ stretchy false
3837
+ text "내용폴더경로 ex)C:\\내용\\폴더1"
3838
+ }
3839
+ button('폴더째로 불러오기'){
3840
+
3841
+ on_clicked{
3842
+ path = @data['이미지설정']['폴더경로2'].text.to_s.force_encoding('utf-8').force_encoding('utf-8')
3843
+ Dir.entries(@data['이미지설정']['폴더경로2'].text.to_s.force_encoding('utf-8')).each do |file|
3844
+ if file == '.' or file == '..'
4333
3845
 
4334
- @data['포스트설정']['스티커로변경'] = checkbox('내용 특정단어를 스티커로 변경'){
4335
- top 6
4336
- left 0
4337
- }
4338
- @data['포스트설정']['스티커로변경단어'] = entry{
4339
- top 6
4340
- left 1
4341
- text '특정단어'
4342
- }
4343
- @data['포스트설정']['영상으로변경'] = checkbox('내용 특정단어를 영상으로 변경'){
4344
- top 7
4345
- left 0
4346
- }
4347
- @data['포스트설정']['영상으로변경단어'] = entry{
4348
- top 7
4349
- left 1
4350
- text '특정단어'
4351
- }
4352
- label('ㄴ동영상만 있는 폴더 지정하기'){
4353
- top 8
4354
- left 0
4355
- }
4356
- @data['포스트설정']['동영상폴더위치'] = entry{
4357
- top 8
4358
- left 1
4359
- text "영상폴더위치 ex) C:\\영상\\폴더3"
4360
- }
4361
- @data['포스트설정']['지도로변경'] = checkbox('내용 특정단어를 지도로 변경'){
4362
- top 9
4363
- left 0
4364
- }
4365
- @data['포스트설정']['지도로변경단어'] = entry{
4366
- top 9
4367
- left 1
4368
- text '특정단어'
4369
- }
4370
- label('ㄴ지도 삽입경우 적용 주소 입력'){
4371
- top 10
4372
- left 0
4373
- }
4374
- @data['포스트설정']['지도주소'] = entry{
4375
- top 10
4376
- left 1
4377
- text 'ex) OO시 OO구 OO동 270-68'
4378
- }
4379
- @data['포스트설정']['인용구변경'] = checkbox('내용 특정단어를 인용구로 적용'){
4380
- top 11
4381
- left 0
4382
- }
4383
- @data['포스트설정']['인용구변경단어'] = entry{
4384
- top 11
4385
- left 1
4386
- text '특정단어'
4387
- }
4388
- label('ㄴ인용구 사용시 들어갈 문구'){
4389
- top 12
4390
- left 0
4391
- }
4392
- button('설정 파일 불러오기'){
4393
- top 12
4394
- left 1
4395
- on_clicked{
4396
- file = open_file
4397
- if file != nil
4398
- file_data = File.open(file, 'r').read
4399
- @data['포스트설정']['인용구'] = file_data.split(',')
3846
+ else
3847
+ file_data = File.open(path+'/'+file,'r', :encoding => 'utf-8').read()
3848
+ @data['내용설정']['내용'] << [false, file, file_data]
4400
3849
  end
4401
- }
4402
- }
4403
- @data['포스트설정']['내템플릿사용하기'] = checkbox('내 템플릿 사용하기'){
4404
- top 13
4405
- left 0
4406
- }
4407
- @data['포스트설정']['내템플릿변경단어'] = entry{
4408
- top 13
4409
- left 1
4410
- text '탬플릿으로 전활시킬 특정단어'
3850
+ end
3851
+ @data['내용설정']['내용'] << []
3852
+ @data['내용설정']['내용'].pop
4411
3853
  }
4412
3854
  }
4413
3855
  }
4414
3856
  }
4415
- tab_item('포스트설정2'){
4416
- vertical_box{
4417
- grid{
4418
- stretchy false
4419
-
4420
- @data['포스트설정']['특정단어굵기'] = checkbox('내용 특정단어 굵기 변경(적용 단어 앞 뒤에 @@삽입)'){
4421
- top 0
4422
- left 0
4423
- }
4424
- @data['포스트설정']['단어색상변경'] = checkbox('내용 특정단어 색상 변경(적용 단어 앞 뒤에 %%삽입)'){
4425
- top 1
4426
- left 0
3857
+ }
3858
+ }
3859
+ tab_item('이미지설정'){
3860
+ horizontal_box{
3861
+ vertical_box{
3862
+ stretchy false
3863
+ horizontal_box{
3864
+ stretchy false
3865
+ button('이미지불러오기'){
3866
+ on_clicked{
3867
+ file = open_file
3868
+ if file != nil
3869
+ file_name = file.split("\\")[-1]
3870
+ @data['이미지설정']['이미지'] << [false, file_name, file]
3871
+ @data['이미지설정']['이미지'] << [false, file_name, file]
3872
+ @data['이미지설정']['이미지'].pop
3873
+ end
4427
3874
  }
4428
- @data['포스트설정']['단어크기변경'] = checkbox('내용 특정단어 크기 변경(적용 단어 앞 &30& 뒤에 &&삽입) ex) &&19&& 카페 &&&&'){
4429
- top 2
4430
- left 0
3875
+ }
3876
+ }
3877
+ horizontal_box{
3878
+ stretchy false
3879
+ grid{
3880
+ button('전체선택'){
3881
+ top 1
3882
+ left 1
3883
+ on_clicked{
3884
+ for n in 0..@data['이미지설정']['이미지'].length-1
3885
+ @data['이미지설정']['이미지'][n][0] = true
3886
+ @data['이미지설정']['이미지'] << []
3887
+ @data['이미지설정']['이미지'].pop
3888
+ end
4431
3889
  }
4432
- @data['포스트설정']['중앙정렬'] = checkbox('내용 글 중앙 정렬'){
4433
- top 3
4434
- left 0
4435
- on_toggled{
4436
- if @data['포스트설정']['중앙정렬'].checked?
4437
- @data['포스트설정']['좌측정렬'].checked = false
4438
- @data['포스트설정']['우측정렬'].checked = false
4439
- end
4440
- }
3890
+ }
3891
+ button('선택해제'){
3892
+ top 1
3893
+ left 2
3894
+ on_clicked{
3895
+ for n in 0..@data['이미지설정']['이미지'].length-1
3896
+ @data['이미지설정']['이미지'][n][0] = false
3897
+ @data['이미지설정']['이미지'] << []
3898
+ @data['이미지설정']['이미지'].pop
3899
+ end
4441
3900
  }
4442
- @data['포스트설정']['좌측정렬'] = checkbox('내용 글 좌측 정렬'){
4443
- top 4
4444
- left 0
4445
- on_toggled{
4446
- if @data['포스트설정']['좌측정렬'].checked?
4447
- @data['포스트설정']['중앙정렬'].checked = false
4448
- @data['포스트설정']['우측정렬'].checked = false
3901
+ }
3902
+ button('삭제하기'){
3903
+ top 1
3904
+ left 3
3905
+ on_clicked{
3906
+ m = Array.new
3907
+ for n in 0..@data['이미지설정']['이미지'].length-1
3908
+ if @data['이미지설정']['이미지'][n][0] == true
3909
+ m << n
4449
3910
  end
4450
- }
3911
+ end
3912
+
3913
+ m.reverse.each do |i|
3914
+ @data['이미지설정']['이미지'].delete_at(i)
3915
+ end
3916
+
3917
+ @data['이미지설정']['이미지'].delete(nil)
4451
3918
  }
4452
- @data['포스트설정']['우측정렬'] = checkbox('내용 글 우측 정렬'){
4453
- top 5
4454
- left 0
4455
- on_toggled{
4456
- if @data['포스트설정']['우측정렬'].checked?
4457
- @data['포스트설정']['좌측정렬'].checked = false
4458
- @data['포스트설정']['중앙정렬'].checked = false
4459
- end
4460
- }
3919
+ }
3920
+ }
3921
+ @data['이미지설정']['순서사용'] = checkbox('순서사용'){
3922
+ stretchy false
3923
+ on_toggled{ |c|
3924
+ if c.checked?
3925
+ @data['이미지설정']['랜덤사용'].checked = false
3926
+ end
4461
3927
  }
4462
- @data['포스트설정']['막글삽입'] = checkbox('내용 하단에 막글 삽입'){
4463
- top 6
4464
- left 0
3928
+ }
3929
+ @data['이미지설정']['랜덤사용'] = checkbox('랜덤사용'){
3930
+ stretchy false
3931
+ on_toggled{ |c|
3932
+ if c.checked?
3933
+ @data['이미지설정']['순서사용'].checked = false
3934
+ end
4465
3935
  }
4466
- @data['포스트설정']['막글삽입시작숫자'] = entry{
4467
- top 6
4468
- left 1
4469
- text '최소수량'
3936
+ }
3937
+ }
3938
+ table{
3939
+ checkbox_column('선택'){
3940
+ editable true
3941
+ }
3942
+ text_column('이미지파일'){
3943
+
3944
+ }
3945
+
3946
+ cell_rows @data['이미지설정']['이미지']
3947
+ }
3948
+ horizontal_box{
3949
+ stretchy false
3950
+ @data['이미지설정']['폴더경로'] = entry{
3951
+ stretchy false
3952
+ text "사진폴더경로 ex)C:\\사진\\폴더2"
3953
+ }
3954
+ button('폴더째로 불러오기'){
3955
+
3956
+ on_clicked{
3957
+ path = @data['이미지설정']['폴더경로'].text.to_s.force_encoding('utf-8').force_encoding('utf-8')
3958
+ Dir.entries(@data['이미지설정']['폴더경로'].text.to_s.force_encoding('utf-8')).each do |file|
3959
+ if file == '.' or file == '..'
3960
+
3961
+ else
3962
+ @data['이미지설정']['이미지'] << [false, file, path+"\\"+file.force_encoding('utf-8')]
3963
+ end
3964
+ end
3965
+ @data['이미지설정']['이미지'] << []
3966
+ @data['이미지설정']['이미지'].pop
4470
3967
  }
4471
- label('~'){
4472
- top 6
4473
- left 2
3968
+ }
3969
+ }
3970
+
3971
+ }
3972
+ vertical_separator{
3973
+ stretchy false
3974
+ }
3975
+
3976
+ vertical_box{
3977
+ horizontal_box{
3978
+ stretchy false
3979
+ @data['image_type'][0] = checkbox('저장 사진 사용'){
3980
+ on_toggled{
3981
+ if @data['image_type'][0].checked?
3982
+ @data['image_type'][1].checked = false
3983
+ @data['image_type'][2].checked = false
3984
+ end
4474
3985
  }
4475
- @data['포스트설정']['막글삽입끝숫자'] = entry{
4476
- top 6
4477
- left 3
4478
- text '최대수량'
3986
+ }
3987
+ @data['image_type'][1] = checkbox('색상 사진 사용'){
3988
+ on_toggled{
3989
+ if @data['image_type'][1].checked?
3990
+ @data['image_type'][0].checked = false
3991
+ @data['image_type'][2].checked = false
3992
+ end
4479
3993
  }
4480
- button('막글 파일 불러오기'){
4481
- top 6
4482
- left 4
4483
- on_clicked{
4484
- file = open_file
4485
- if file != nil
4486
- file_data = File.open(file, 'r', :encoding => 'utf-8').read()
4487
- @data['포스트설정']['막글'] = file_data
4488
- end
4489
- }
3994
+ }
3995
+ @data['image_type'][2] = checkbox('자동 다운로드 사진 사용'){
3996
+ on_toggled{
3997
+ if @data['image_type'][2].checked?
3998
+ @data['image_type'][1].checked = false
3999
+ @data['image_type'][0].checked = false
4000
+ end
4490
4001
  }
4491
- @data['포스트설정']['막글투명'] = checkbox('막글 안보이게 처리'){
4492
- top 7
4493
- left 0
4002
+ }
4003
+ }
4004
+
4005
+ grid{
4006
+ stretchy false
4007
+ @data['이미지설정']['글자삽입1'] = checkbox('글자 삽입1'){
4008
+ top 0
4009
+ left 0
4010
+ }
4011
+ button('가져오기'){
4012
+ top 0
4013
+ left 1
4014
+ on_clicked{
4015
+ file = open_file
4016
+ if file != nil
4017
+ file_data = File.open(file, 'r', :encoding => 'utf-8').read()
4018
+ @data['이미지설정']['이미지글자1'] = file_data.to_s.split("\n")
4019
+ end
4494
4020
  }
4495
- @data['포스트설정']['막글그대로'] = checkbox('막글 그대로 입력'){
4496
- top 7
4497
- left 1
4021
+ }
4022
+ @data['이미지설정']['이미지글자1크기1'] = entry{
4023
+ top 0
4024
+ left 2
4025
+ text 'ex) 33'
4026
+ }
4027
+ label('pt'){
4028
+ top 0
4029
+ left 3
4030
+ }
4031
+ @data['이미지설정']['이미지글자1크기2'] = entry{
4032
+ top 0
4033
+ left 4
4034
+ text 'ex) 55'
4035
+ }
4036
+ label('pt'){
4037
+ top 0
4038
+ left 5
4039
+ }
4040
+ @data['이미지설정']['글자테두리'] = checkbox('글자 테두리'){
4041
+ top 0
4042
+ left 6
4043
+ }
4044
+
4045
+ @data['이미지설정']['글자삽입2'] = checkbox('글자 삽입2'){
4046
+ top 1
4047
+ left 0
4048
+ }
4049
+ button('가져오기'){
4050
+ top 1
4051
+ left 1
4052
+ on_clicked{
4053
+ file = open_file
4054
+ if file != nil
4055
+ file_data = File.open(file, 'r', :encoding => 'utf-8').read()
4056
+ @data['이미지설정']['이미지글자2'] = file_data.split("\n")
4057
+ end
4498
4058
  }
4059
+ }
4060
+ @data['이미지설정']['이미지글자2크기1'] = entry{
4061
+ top 1
4062
+ left 2
4063
+ text 'ex) 33'
4064
+ }
4065
+ label('pt'){
4066
+ top 1
4067
+ left 3
4068
+ }
4069
+ @data['이미지설정']['이미지글자2크기2'] = entry{
4070
+ top 1
4071
+ left 4
4072
+ text 'ex) 55'
4073
+ }
4074
+ label('pt'){
4075
+ top 1
4076
+ left 5
4077
+ }
4078
+ @data['이미지설정']['글자그림자'] = checkbox('글자 그림자'){
4079
+ top 1
4080
+ left 6
4081
+ }
4082
+ @data['이미지설정']['필터사용'] = checkbox('필터사용(색상 사진 적용불가)'){
4083
+ top 2
4084
+ left 0
4085
+ }
4086
+ @data['이미지설정']['테두리사용'] = checkbox('테두리 사용'){
4087
+ top 3
4088
+ left 0
4089
+ }
4090
+ @data['이미지설정']['테두리크기1'] = entry{
4091
+ top 3
4092
+ left 2
4093
+ text 'ex) 1'
4094
+ }
4095
+ label('pt'){
4096
+ top 3
4097
+ left 3
4098
+ }
4099
+ @data['이미지설정']['테두리크기2'] = entry{
4100
+ top 3
4101
+ left 4
4102
+ text 'ex) 33'
4103
+ }
4104
+ label('pt'){
4105
+ top 3
4106
+ left 5
4107
+ }
4499
4108
 
4500
- @data['포스트설정']['태그삽입1'] = checkbox('태그삽입'){
4501
- top 8
4502
- left 0
4109
+ }
4110
+
4111
+ horizontal_box{
4112
+ stretchy false
4113
+ @data['image_size'][0] = checkbox('랜덤 px'){
4114
+ on_toggled{
4115
+ if @data['image_size'][0].checked?
4116
+ @data['image_size'][1].checked = false
4117
+ @data['image_size'][2].checked = false
4118
+ @data['image_size'][3].checked = false
4119
+ @data['image_size'][4].checked = false
4120
+ end
4503
4121
  }
4504
- @data['포스트설정']['태그삽입1시작숫자'] = entry{
4505
- top 8
4506
- left 1
4507
- text '최소수량'
4122
+ }
4123
+ @data['image_size'][1] = checkbox('740 px'){
4124
+ on_toggled{
4125
+ if @data['image_size'][1].checked?
4126
+ @data['image_size'][0].checked = false
4127
+ @data['image_size'][2].checked = false
4128
+ @data['image_size'][3].checked = false
4129
+ @data['image_size'][4].checked = false
4130
+ end
4508
4131
  }
4509
- label('~'){
4510
- top 8
4511
- left 2
4132
+ }
4133
+ @data['image_size'][2] = checkbox('650 px'){
4134
+ on_toggled{
4135
+ if @data['image_size'][2].checked?
4136
+ @data['image_size'][1].checked = false
4137
+ @data['image_size'][0].checked = false
4138
+ @data['image_size'][3].checked = false
4139
+ @data['image_size'][4].checked = false
4140
+ end
4512
4141
  }
4513
- @data['포스트설정']['태그삽입1끝숫자'] = entry{
4514
- top 8
4515
- left 3
4516
- text '최대수량'
4142
+ }
4143
+ @data['image_size'][3] = checkbox('550 px'){
4144
+ on_toggled{
4145
+ if @data['image_size'][3].checked?
4146
+ @data['image_size'][1].checked = false
4147
+ @data['image_size'][2].checked = false
4148
+ @data['image_size'][0].checked = false
4149
+ @data['image_size'][4].checked = false
4150
+ end
4517
4151
  }
4518
-
4519
- @data['포스트설정']['자동글 수식에 입력'] = checkbox('자동글 수식에 입력'){
4520
- top 9
4521
- left 0
4152
+ }
4153
+ @data['image_size'][4] = checkbox('480 px'){
4154
+ on_toggled{
4155
+ if @data['image_size'][4].checked?
4156
+ @data['image_size'][1].checked = false
4157
+ @data['image_size'][2].checked = false
4158
+ @data['image_size'][3].checked = false
4159
+ @data['image_size'][0].checked = false
4160
+ end
4522
4161
  }
4162
+ }
4163
+ }
4164
+ }
4165
+ }
4166
+ }
4523
4167
 
4524
- @data['포스트설정']['막글 수식에 입력'] = checkbox('막글 수식에 입력'){
4525
- top 9
4526
- left 1
4527
- }
4168
+ tab_item('포스트설정1'){
4169
+ horizontal_box{
4170
+ vertical_box{
4171
+ stretchy false
4172
+ grid{
4173
+ stretchy false
4174
+ @data['포스트설정']['제목키워드변경'] = checkbox('제목에 특정 단어를 내용에 사용할 키워드로 변경'){
4175
+ top 0
4176
+ left 0
4528
4177
 
4529
-
4178
+ }
4179
+ @data['포스트설정']['제목키워드변경단어'] = entry{
4180
+ top 0
4181
+ left 1
4182
+ text '특정단어'
4183
+ }
4530
4184
 
4531
- @data['포스트설정']['전체공개'] = checkbox('전체공개'){
4532
- top 10
4533
- left 0
4534
- on_toggled{
4535
- if @data['포스트설정']['전체공개'].checked?
4536
- if @data['포스트설정']['비공개'].checked? or @data['포스트설정']['서로이웃공개'].checked? or @data['포스트설정']['멤버공개'].checked?
4537
- @data['포스트설정']['멤버공개'].checked = false
4538
- @data['포스트설정']['서로이웃공개'].checked = false
4539
- @data['포스트설정']['비공개'].checked = false
4540
- end
4541
- end
4542
- }
4185
+ # @data['포스트설정']['제목단어변경'] = checkbox('제목에 특정 단어를 변경'){
4186
+ # top 1
4187
+ # left 0
4188
+ # }
4189
+ # @data['포스트설정']['제목단어변경파일불러오기'] = button('설정 파일 불러오기'){
4190
+ # top 1
4191
+ # left 1
4192
+ # on_clicked{
4193
+ # file = open_file
4194
+ # if file != nil
4195
+ # file_data = File.open(file, 'r', :encoding => 'utf-8').read()
4196
+ # file_data.split("\n").each do |i|
4197
+ # i2 = i.split('>')
4198
+ # text_key = i2[0].to_s
4199
+ # text_val = i2[1].to_s.split(',')
4200
+ # @data['포스트설정']['제목특정단어변경데이터'][text_key] = text_val
4201
+ # end
4202
+ # end
4203
+ # }
4204
+ # }
4205
+ @data['포스트설정']['제목에키워드삽입'] = checkbox('제목에 키워드 삽입'){
4206
+ top 2
4207
+ left 0
4208
+ #enabled false # 기본적으로 비활성화
4209
+ on_toggled {
4210
+ if @data['포스트설정']['제목에키워드삽입'].checked?
4211
+ @data['포스트설정']['제목앞'].enabled = true # '내용투명' 활성화
4212
+ @data['포스트설정']['제목뒤'].enabled = true # '내용투명' 활성화
4213
+ else
4214
+ @data['포스트설정']['제목앞'].checked = false # 체크 해제
4215
+ @data['포스트설정']['제목앞'].enabled = false # 비활성화
4216
+ @data['포스트설정']['제목뒤'].checked = false # 체크 해제
4217
+ @data['포스트설정']['제목뒤'].enabled = false # 비활성화
4218
+ end
4543
4219
  }
4544
- @data['포스트설정']['멤버공개'] = checkbox('이웃공개'){
4545
- top 10
4546
- left 1
4547
- on_toggled{
4548
- if @data['포스트설정']['멤버공개'].checked?
4549
- if @data['포스트설정']['전체공개'].checked? or @data['포스트설정']['서로이웃공개'].checked? or @data['포스트설정']['비공개'].checked?
4550
- @data['포스트설정']['전체공개'].checked = false
4551
- @data['포스트설정']['서로이웃공개'].checked = false
4552
- @data['포스트설정']['비공개'].checked = false
4553
- end
4220
+
4221
+ }
4222
+ @data['포스트설정']['제목에키워드삽입숫자1'] = entry(){
4223
+ top 2
4224
+ left 1
4225
+ text '최소수량'
4226
+ }
4227
+ label('~'){
4228
+ top 2
4229
+ left 2
4230
+ }
4231
+ @data['포스트설정']['제목에키워드삽입숫자2'] = entry(){
4232
+ top 2
4233
+ left 3
4234
+ text '최대수량'
4235
+ }
4236
+ label('ㄴ'){
4237
+ top 3
4238
+ left 2
4239
+ }
4240
+ @data['포스트설정']['제목앞'] = checkbox('제목에 키워드 삽입 제목 앞'){
4241
+ top 3
4242
+ left 3
4243
+ enabled false # 기본적으로 비활성화
4244
+ on_toggled{
4245
+ if @data['포스트설정']['제목앞'].checked? == true
4246
+ if @data['포스트설정']['제목뒤'].checked?
4247
+ @data['포스트설정']['제목뒤'].checked = false
4554
4248
  end
4555
- }
4249
+ end
4556
4250
  }
4557
- @data['포스트설정']['서로이웃공개'] = checkbox('서로이웃공개'){
4558
- top 11
4559
- left 0
4560
- on_toggled{
4561
- if @data['포스트설정']['서로이웃공개'].checked?
4562
- if @data['포스트설정']['전체공개'].checked? or @data['포스트설정']['비공개'].checked? or @data['포스트설정']['멤버공개'].checked?
4563
- @data['포스트설정']['전체공개'].checked = false
4564
- @data['포스트설정']['비공개'].checked = false
4565
- @data['포스트설정']['멤버공개'].checked = false
4566
- end
4251
+ }
4252
+ label('ㄴ'){
4253
+ top 4
4254
+ left 2
4255
+ }
4256
+ @data['포스트설정']['제목뒤'] = checkbox('제목에 키워드 삽입 제목 뒤'){
4257
+ top 4
4258
+ left 3
4259
+ enabled false # 기본적으로 비활성화
4260
+ on_toggled{
4261
+ if @data['포스트설정']['제목뒤'].checked? == true
4262
+ if @data['포스트설정']['제목앞'].checked?
4263
+ @data['포스트설정']['제목앞'].checked = false
4567
4264
  end
4568
- }
4265
+ end
4569
4266
  }
4570
-
4571
- @data['포스트설정']['비공개'] = checkbox('비공개'){
4572
- top 11
4573
- left 1
4574
- on_toggled{
4575
- if @data['포스트설정']['비공개'].checked?
4576
- if @data['포스트설정']['전체공개'].checked? or @data['포스트설정']['서로이웃공개'].checked? or @data['포스트설정']['멤버공개'].checked?
4577
- @data['포스트설정']['전체공개'].checked = false
4578
- @data['포스트설정']['서로이웃공개'].checked = false
4579
- @data['포스트설정']['멤버공개'].checked = false
4580
- end
4267
+ }
4268
+
4269
+ @data['포스트설정']['특수문자'] = checkbox('제목에 키워드 삽입 시 특수문자 삽입'){
4270
+ top 4
4271
+ left 0
4272
+ }
4273
+ @data['포스트설정']['제목을랜덤'] = checkbox('제목을 랜덤 단어 조합으로 자동 입력'){
4274
+ top 5
4275
+ left 0
4276
+ on_toggled{
4277
+ if @data['포스트설정']['제목을랜덤'].checked? == true
4278
+ if @data['포스트설정']['제목내용설정'].checked?
4279
+ @data['포스트설정']['제목내용설정'].checked = false
4581
4280
  end
4582
- }
4583
- }
4584
-
4585
-
4586
-
4587
- @data['포스트설정']['댓글허용'] = checkbox('댓글허용'){
4588
- top 12
4589
- left 0
4590
- }
4591
- @data['포스트설정']['블로그,카페 공유허용'] = checkbox('블로그,카페 공유허용'){
4592
- top 12
4593
- left 1
4281
+ end
4594
4282
  }
4595
- @data['포스트설정']['외부공유허용'] = checkbox('외부공유허용'){
4596
- top 13
4597
- left 0
4283
+ }
4284
+ @data['포스트설정']['제목내용설정'] = checkbox('내용의 첫 문장을 제목으로 설정'){
4285
+ top 6
4286
+ left 0
4287
+ on_toggled{
4288
+ if @data['포스트설정']['제목내용설정'].checked? == true
4289
+ if @data['포스트설정']['제목을랜덤'].checked?
4290
+ @data['포스트설정']['제목을랜덤'].checked = false
4291
+ end
4292
+ end
4598
4293
  }
4599
- @data['포스트설정']['검색허용'] = checkbox('검색허용'){
4600
- top 13
4601
- left 1
4294
+ }
4295
+ @data['포스트설정']['내용키워드삽입'] = checkbox('내용 키워드 삽입'){
4296
+ top 7
4297
+ left 0
4298
+ on_toggled {
4299
+ if @data['포스트설정']['내용키워드삽입'].checked?
4300
+ @data['포스트설정']['키워드삽입'].enabled = true # '내용투명' 활성화
4301
+ @data['포스트설정']['키워드삽입시링크'].enabled = true # '내용투명' 활성화
4302
+ else
4303
+ @data['포스트설정']['키워드삽입'].checked = false # 체크 해제
4304
+ @data['포스트설정']['키워드삽입'].enabled = false # 비활성화
4305
+ @data['포스트설정']['키워드삽입시링크'].text = 'URL' # 기본 텍스트 설정
4306
+ @data['포스트설정']['키워드삽입시링크'].enabled = false # 비활성화
4307
+ end
4602
4308
  }
4603
- @data['포스트설정']['공감허용'] = checkbox('공감허용'){
4604
- top 14
4605
- left 0
4309
+ }
4310
+ @data['포스트설정']['키워드삽입시작숫자'] = entry(){
4311
+ top 7
4312
+ left 1
4313
+
4314
+ text '최소수량'
4315
+ }
4316
+ label('~'){
4317
+ top 7
4318
+ left 2
4319
+ }
4320
+ @data['포스트설정']['키워드삽입끝숫자'] = entry(){
4321
+ top 7
4322
+ left 3
4323
+ text '최대수량'
4324
+ }
4325
+ @data['포스트설정']['키워드삽입'] = checkbox('내용 키워드 삽입시 링크 삽입'){
4326
+ enabled false # 기본적으로 비활성화
4327
+ top 8
4328
+ left 0
4329
+
4330
+ }
4331
+ @data['포스트설정']['키워드삽입시링크'] = entry(){
4332
+ enabled false # 기본적으로 비활성화
4333
+ top 8
4334
+ left 1
4335
+ text 'URL'
4336
+ }
4337
+ @data['포스트설정']['내용을자동생성'] = checkbox('키워드기반 생성으로만 등록(GPT 미 사용시 자체 생성)'){
4338
+ top 9
4339
+ left 0
4340
+ on_toggled{
4341
+ if @data['포스트설정']['내용을자동생성'].checked?
4342
+ @data['포스트설정']['내용과자동생성'].checked = false
4343
+ @data['포스트설정']['내용투명'].checked = false
4344
+ @data['포스트설정']['자동글 수식에 입력'].checked = false
4345
+
4346
+ end
4606
4347
  }
4348
+ }
4607
4349
 
4608
- @data['포스트설정']['테더링'] = checkbox('테더링 IP 사용'){
4609
- top 15
4610
- left 0
4611
- on_toggled{
4612
- if @data['포스트설정']['테더링'].checked?
4613
- @data['포스트설정']['프록시'].checked = false
4614
-
4615
- end
4616
- }
4350
+
4351
+ aa1 = 2
4352
+ @data['포스트설정']['내용과자동생성'] = checkbox('내용파일+키워드기반 생성 등록(GPT 미 사용시 자체 생성)') {
4353
+ top 10 + aa1
4354
+ left 0
4355
+ on_toggled {
4356
+ if @data['포스트설정']['내용과자동생성'].checked?
4357
+ @data['포스트설정']['내용을자동생성'].checked = false
4358
+ @data['포스트설정']['내용투명'].enabled = true # '내용투명' 활성화
4359
+ @data['포스트설정']['자동글 수식에 입력'].enabled = true # '내용투명' 활성화
4360
+ else
4361
+ @data['포스트설정']['내용투명'].checked = false # 체크 해제
4362
+ @data['포스트설정']['내용투명'].enabled = false # 비활성화
4363
+ @data['포스트설정']['자동글 수식에 입력'].checked = false # 체크 해제
4364
+ @data['포스트설정']['자동글 수식에 입력'].enabled = false # 비활성화
4365
+ end
4617
4366
  }
4618
- @data['포스트설정']['프록시'] = checkbox('프록시 IP 사용'){
4619
- top 15
4620
- left 1
4621
- on_toggled{
4622
- if @data['포스트설정']['프록시'].checked?
4623
- @data['포스트설정']['테더링'].checked = false
4624
-
4625
- end
4626
- }
4367
+ }
4368
+
4369
+ @data['포스트설정']['내용투명'] = checkbox('키워드 기반 자동 생성글 안보이게 처리') {
4370
+ top 11 + aa1
4371
+ left 0
4372
+ enabled false # 기본적으로 비활성화
4373
+ on_toggled {
4374
+ if @data['포스트설정']['내용투명'].checked?
4375
+ @data['포스트설정']['내용을자동생성'].checked = false
4376
+ @data['포스트설정']['자동글 수식에 입력'].checked = false
4377
+ end
4627
4378
  }
4628
- button('프록시 IP 파일 불러오기'){
4629
- top 15
4630
- left 3
4631
- on_clicked{
4632
- file = open_file
4633
- if file != nil
4634
- file_data = File.open(file,'r').read
4635
- @data['포스트설정']['프록시리스트'] = file_data.split("\n")
4379
+ }
4380
+ @data['포스트설정']['내용자동변경'] = checkbox('내용에 단어들을 자동 변경'){
4381
+ top 12+ aa1
4382
+ left 0
4383
+ }
4384
+ button('설정 파일 불러오기'){
4385
+ top 12+ aa1
4386
+ left 1
4387
+ on_clicked{
4388
+ file = open_file
4389
+ if file != nil
4390
+ file_data = File.open(file, 'r', :encoding => 'utf-8').read()
4391
+ file_data.split("\n").each do |i|
4392
+ key = i.split('>')[0]
4393
+ v = i.split('>')[1].to_s.split(',')
4394
+ @data['포스트설정']['내용자동변경값'][key] = v
4636
4395
  end
4637
- }
4396
+ end
4638
4397
  }
4639
-
4640
- @data['포스트설정']['발행기능'] = checkbox('포스팅 글 [ 발행 ] 하기'){
4641
- top 16
4642
- left 0
4643
- on_toggled{
4644
- if @data['포스트설정']['발행기능'].checked?
4645
- if @data['포스트설정']['저장기능'].checked?
4646
- @data['포스트설정']['저장기능'].checked = false
4647
-
4648
- end
4649
- end
4650
- }
4398
+ }
4399
+ @data['포스트설정']['제목에도적용'] = checkbox('제목에도 적용'){
4400
+ top 12+ aa1
4401
+ left 3
4402
+ }
4403
+
4404
+ @data['포스트설정']['내용사진자동삽입'] = checkbox('내용 사진 자동 삽입'){
4405
+ top 13+ aa1
4406
+ left 0
4407
+ #enabled false # 기본적으로 비활성화
4408
+ on_toggled {
4409
+ if @data['포스트설정']['내용사진자동삽입'].checked?
4410
+ @data['포스트설정']['내용사진링크'].enabled = true # '내용투명' 활성화
4411
+ @data['포스트설정']['내용사진링크값'].enabled = true # '내용투명' 활성화
4412
+ else
4413
+ @data['포스트설정']['내용사진링크'].checked = false # 체크 해제
4414
+ @data['포스트설정']['내용사진링크'].enabled = false # 비활성화
4415
+ @data['포스트설정']['내용사진링크값'].text = 'URL' # 기본 텍스트 설정
4416
+ @data['포스트설정']['내용사진링크값'].enabled = false # 비활성화
4417
+ end
4651
4418
  }
4652
- @data['포스트설정']['저장기능'] = checkbox('포스팅 글 [ 저장 ] 하기'){
4653
- top 16
4654
- left 1
4419
+ }
4420
+ @data['포스트설정']['내용사진자동삽입시작숫자'] = entry(){
4421
+ top 13+ aa1
4422
+ left 1
4423
+ text '최소수량'
4424
+ }
4425
+ label('~'){
4426
+ top 13+ aa1
4427
+ left 2
4428
+ }
4429
+ @data['포스트설정']['내용사진자동삽입끝숫자'] = entry(){
4430
+ top 13+ aa1
4431
+ left 3
4432
+ text '최대수량'
4433
+ }
4655
4434
 
4656
- on_toggled{
4657
- if @data['포스트설정']['저장기능'].checked?
4658
- if @data['포스트설정']['발행기능'].checked?
4659
- @data['포스트설정']['발행기능'].checked = false
4660
-
4661
- end
4662
- end
4663
- }
4435
+ @data['포스트설정']['내용사진링크'] = checkbox('내용 사진 자동 삽입시 링크 삽입'){
4436
+ enabled false # 기본적으로 비활성화
4437
+ top 14+ aa1
4438
+ left 0
4439
+ }
4440
+
4441
+ @data['포스트설정']['내용사진링크값'] = entry(){
4442
+ enabled false # 기본적으로 비활성화
4443
+ top 14+ aa1
4444
+ left 1
4445
+ text 'URL'
4446
+ }
4447
+
4448
+ @data['포스트설정']['ChatGPT사용'] = checkbox('Chat GPT 사용하기'){
4449
+ top 15+ aa1
4450
+ left 0
4451
+ }
4452
+
4453
+ @data['포스트설정']['api_key'] = entry(){
4454
+ top 15+ aa1
4455
+ left 1
4456
+ text 'api key 입력 필수!!'
4457
+ }
4458
+
4459
+ }
4460
+ }
4461
+
4462
+ vertical_separator{
4463
+ stretchy false
4464
+ }
4465
+
4466
+
4467
+ grid{
4468
+ @data['포스트설정']['특정단어키워드로변경'] = checkbox('내용 특정단어를 키워드로 변경'){
4469
+ top 0
4470
+ left 0
4471
+ }
4472
+ @data['포스트설정']['특정단어키워드로변경값'] = entry{
4473
+ top 0
4474
+ left 1
4475
+ text '특정단어'
4476
+ }
4477
+
4478
+ @data['포스트설정']['제외하고등록'] = checkbox('내용 특정단어를 제외하고 등록'){
4479
+ top 1
4480
+ left 0
4481
+ }
4482
+ @data['포스트설정']['제외하고등록값'] = entry{
4483
+ top 1
4484
+ left 1
4485
+ text '특정단어'
4486
+ }
4487
+
4488
+ @data['포스트설정']['단어링크적용'] = checkbox('내용 특정단어를 링크적용 등록'){
4489
+ top 2
4490
+ left 0
4491
+ }
4492
+ @data['포스트설정']['단어링크적용단어'] = entry{
4493
+ top 2
4494
+ left 1
4495
+ text '특정단어'
4496
+ }
4497
+
4498
+ label('ㄴ적용하려는 링크 URL 입력'){
4499
+ top 3
4500
+ left 0
4501
+ }
4502
+ @data['포스트설정']['단어링크적용url'] = entry{
4503
+ top 3
4504
+ left 1
4505
+ text 'URL'
4506
+ }
4507
+
4508
+ @data['포스트설정']['단어사진으로변경'] = checkbox('내용 특정단어를 사진으로 변경'){
4509
+ top 4
4510
+ left 0
4511
+ }
4512
+ @data['포스트설정']['단어사진으로변경단어'] = entry{
4513
+ top 4
4514
+ left 1
4515
+ text '특정단어1,@특정단어2 (앞에@붙이면 링크적용)'
4516
+ }
4517
+ label('ㄴ적용하려는 링크 URL 입력'){
4518
+ top 5
4519
+ left 0
4520
+ }
4521
+
4522
+ @data['포스트설정']['단어사진으로변경URL'] = entry{
4523
+ top 5
4524
+ left 1
4525
+ text 'URL'
4526
+ }
4527
+
4528
+ @data['포스트설정']['스티커로변경'] = checkbox('내용 특정단어를 스티커로 변경'){
4529
+ top 6
4530
+ left 0
4531
+ }
4532
+ @data['포스트설정']['스티커로변경단어'] = entry{
4533
+ top 6
4534
+ left 1
4535
+ text '특정단어'
4536
+ }
4537
+ @data['포스트설정']['영상으로변경'] = checkbox('내용 특정단어를 영상으로 변경'){
4538
+ top 7
4539
+ left 0
4540
+ }
4541
+ @data['포스트설정']['영상으로변경단어'] = entry{
4542
+ top 7
4543
+ left 1
4544
+ text '특정단어'
4545
+ }
4546
+ label('ㄴ동영상만 있는 폴더 지정하기'){
4547
+ top 8
4548
+ left 0
4549
+ }
4550
+ @data['포스트설정']['동영상폴더위치'] = entry{
4551
+ top 8
4552
+ left 1
4553
+ text "영상폴더위치 ex) C:\\영상\\폴더3"
4554
+ }
4555
+ @data['포스트설정']['지도로변경'] = checkbox('내용 특정단어를 지도로 변경'){
4556
+ top 9
4557
+ left 0
4558
+ }
4559
+ @data['포스트설정']['지도로변경단어'] = entry{
4560
+ top 9
4561
+ left 1
4562
+ text '특정단어'
4563
+ }
4564
+ label('ㄴ지도 삽입경우 적용 주소 입력'){
4565
+ top 10
4566
+ left 0
4567
+ }
4568
+ @data['포스트설정']['지도주소'] = entry{
4569
+ top 10
4570
+ left 1
4571
+ text 'ex) OO시 OO구 OO동 270-68'
4572
+ }
4573
+ @data['포스트설정']['인용구변경'] = checkbox('내용 특정단어를 인용구로 적용'){
4574
+ top 11
4575
+ left 0
4576
+ }
4577
+ @data['포스트설정']['인용구변경단어'] = entry{
4578
+ top 11
4579
+ left 1
4580
+ text '특정단어'
4581
+ }
4582
+ label('ㄴ인용구 사용시 들어갈 문구'){
4583
+ top 12
4584
+ left 0
4585
+ }
4586
+ button('설정 파일 불러오기'){
4587
+ top 12
4588
+ left 1
4589
+ on_clicked{
4590
+ file = open_file
4591
+ if file != nil
4592
+ file_data = File.open(file, 'r').read
4593
+ @data['포스트설정']['인용구'] = file_data.split(',')
4594
+ end
4595
+ }
4596
+ }
4597
+ @data['포스트설정']['내템플릿사용하기'] = checkbox('내 템플릿 사용하기'){
4598
+ top 13
4599
+ left 0
4600
+ }
4601
+ @data['포스트설정']['내템플릿변경단어'] = entry{
4602
+ top 13
4603
+ left 1
4604
+ text '탬플릿으로 전활시킬 특정단어'
4605
+ }
4606
+ }
4607
+ }
4608
+ }
4609
+ tab_item('포스트설정2'){
4610
+ vertical_box{
4611
+ grid{
4612
+ stretchy false
4613
+
4614
+ @data['포스트설정']['특정단어굵기'] = checkbox('내용 특정단어 굵기 변경(적용 단어 앞 뒤에 @@삽입)'){
4615
+ top 0
4616
+ left 0
4617
+ }
4618
+ @data['포스트설정']['단어색상변경'] = checkbox('내용 특정단어 색상 변경(적용 단어 앞 뒤에 %%삽입)'){
4619
+ top 1
4620
+ left 0
4621
+ }
4622
+ @data['포스트설정']['단어크기변경'] = checkbox('내용 특정단어 크기 변경(적용 단어 앞 &30& 뒤에 &&삽입) ex) &&19&& 카페 &&&&'){
4623
+ top 2
4624
+ left 0
4625
+ }
4626
+ @data['포스트설정']['중앙정렬'] = checkbox('내용 글 중앙 정렬'){
4627
+ top 3
4628
+ left 0
4629
+ on_toggled{
4630
+ if @data['포스트설정']['중앙정렬'].checked?
4631
+ @data['포스트설정']['좌측정렬'].checked = false
4632
+ @data['포스트설정']['우측정렬'].checked = false
4633
+ end
4634
+ }
4635
+ }
4636
+ @data['포스트설정']['좌측정렬'] = checkbox('내용 글 좌측 정렬'){
4637
+ top 4
4638
+ left 0
4639
+ on_toggled{
4640
+ if @data['포스트설정']['좌측정렬'].checked?
4641
+ @data['포스트설정']['중앙정렬'].checked = false
4642
+ @data['포스트설정']['우측정렬'].checked = false
4643
+ end
4644
+ }
4645
+ }
4646
+ @data['포스트설정']['우측정렬'] = checkbox('내용 글 우측 정렬'){
4647
+ top 5
4648
+ left 0
4649
+ on_toggled{
4650
+ if @data['포스트설정']['우측정렬'].checked?
4651
+ @data['포스트설정']['좌측정렬'].checked = false
4652
+ @data['포스트설정']['중앙정렬'].checked = false
4653
+ end
4654
+ }
4655
+ }
4656
+ @data['포스트설정']['막글삽입'] = checkbox('내용 하단에 막글 삽입'){
4657
+ top 6
4658
+ left 0
4659
+ #enabled false # 기본적으로 비활성화
4660
+ on_toggled {
4661
+ if @data['포스트설정']['막글삽입'].checked?
4662
+ @data['포스트설정']['막글투명'].enabled = true # '내용투명' 활성화
4663
+ @data['포스트설정']['막글그대로'].enabled = true # '내용투명' 활성화
4664
+ @data['포스트설정']['막글 수식에 입력'].enabled = true # '내용투명' 활성화
4665
+
4666
+ else
4667
+ @data['포스트설정']['막글투명'].checked = false # 체크 해제
4668
+ @data['포스트설정']['막글투명'].enabled = false # 비활성화
4669
+ @data['포스트설정']['막글그대로'].checked = false # 체크 해제
4670
+ @data['포스트설정']['막글그대로'].enabled = false # 비활성화
4671
+ @data['포스트설정']['막글 수식에 입력'].checked = false # 체크 해제
4672
+ @data['포스트설정']['막글 수식에 입력'].enabled = false # 비활성화
4673
+ end
4674
+ }
4675
+ }
4676
+ @data['포스트설정']['막글삽입시작숫자'] = entry{
4677
+ top 6
4678
+ left 1
4679
+ text '최소수량'
4680
+ }
4681
+ label('~'){
4682
+ top 6
4683
+ left 2
4684
+ }
4685
+ @data['포스트설정']['막글삽입끝숫자'] = entry{
4686
+ top 6
4687
+ left 3
4688
+ text '최대수량'
4689
+ }
4690
+ button('막글 파일 불러오기'){
4691
+ top 6
4692
+ left 4
4693
+ on_clicked{
4694
+ file = open_file
4695
+ if file != nil
4696
+ file_data = File.open(file, 'r', :encoding => 'utf-8').read()
4697
+ @data['포스트설정']['막글'] = file_data
4698
+ end
4699
+ }
4700
+ }
4701
+ @data['포스트설정']['막글투명'] = checkbox('막글 안보이게 처리'){
4702
+ top 7
4703
+ left 0
4704
+ enabled false # 기본적으로 비활성화
4705
+ }
4706
+ @data['포스트설정']['막글그대로'] = checkbox('막글 그대로 입력'){
4707
+ top 7
4708
+ left 1
4709
+ enabled false # 기본적으로 비활성화
4710
+ }
4711
+
4712
+ @data['포스트설정']['태그삽입1'] = checkbox('태그삽입'){
4713
+ top 8
4714
+ left 0
4715
+ }
4716
+ @data['포스트설정']['태그삽입1시작숫자'] = entry{
4717
+ top 8
4718
+ left 1
4719
+ text '최소수량'
4720
+ }
4721
+ label('~'){
4722
+ top 8
4723
+ left 2
4724
+ }
4725
+ @data['포스트설정']['태그삽입1끝숫자'] = entry{
4726
+ top 8
4727
+ left 3
4728
+ text '최대수량'
4729
+ }
4730
+
4731
+ @data['포스트설정']['자동글 수식에 입력'] = checkbox('자동글 수식에 입력'){
4732
+ top 9
4733
+ left 0
4734
+ enabled false # 기본적으로 비활성화
4735
+ on_toggled {
4736
+ if @data['포스트설정']['자동글 수식에 입력'].checked?
4737
+ @data['포스트설정']['내용을자동생성'].checked = false
4738
+ @data['포스트설정']['내용투명'].checked = false
4739
+ end
4664
4740
  }
4741
+ }
4742
+
4743
+ @data['포스트설정']['막글 수식에 입력'] = checkbox('막글 수식에 입력'){
4744
+ top 9
4745
+ left 1
4746
+ enabled false # 기본적으로 비활성화
4747
+ }
4748
+
4749
+
4750
+
4751
+ @data['포스트설정']['전체공개'] = checkbox('전체공개'){
4752
+ top 10
4753
+ left 0
4754
+ on_toggled{
4755
+ if @data['포스트설정']['전체공개'].checked?
4756
+ if @data['포스트설정']['비공개'].checked? or @data['포스트설정']['서로이웃공개'].checked? or @data['포스트설정']['멤버공개'].checked?
4757
+ @data['포스트설정']['멤버공개'].checked = false
4758
+ @data['포스트설정']['서로이웃공개'].checked = false
4759
+ @data['포스트설정']['비공개'].checked = false
4760
+ end
4761
+ end
4762
+ }
4763
+ }
4764
+ @data['포스트설정']['멤버공개'] = checkbox('이웃공개'){
4765
+ top 10
4766
+ left 1
4767
+ on_toggled{
4768
+ if @data['포스트설정']['멤버공개'].checked?
4769
+ if @data['포스트설정']['전체공개'].checked? or @data['포스트설정']['서로이웃공개'].checked? or @data['포스트설정']['비공개'].checked?
4770
+ @data['포스트설정']['전체공개'].checked = false
4771
+ @data['포스트설정']['서로이웃공개'].checked = false
4772
+ @data['포스트설정']['비공개'].checked = false
4773
+ end
4774
+ end
4775
+ }
4776
+ }
4777
+ @data['포스트설정']['서로이웃공개'] = checkbox('서로이웃공개'){
4778
+ top 11
4779
+ left 0
4780
+ on_toggled{
4781
+ if @data['포스트설정']['서로이웃공개'].checked?
4782
+ if @data['포스트설정']['전체공개'].checked? or @data['포스트설정']['비공개'].checked? or @data['포스트설정']['멤버공개'].checked?
4783
+ @data['포스트설정']['전체공개'].checked = false
4784
+ @data['포스트설정']['비공개'].checked = false
4785
+ @data['포스트설정']['멤버공개'].checked = false
4786
+ end
4787
+ end
4788
+ }
4789
+ }
4790
+
4791
+ @data['포스트설정']['비공개'] = checkbox('비공개'){
4792
+ top 11
4793
+ left 1
4794
+ on_toggled{
4795
+ if @data['포스트설정']['비공개'].checked?
4796
+ if @data['포스트설정']['전체공개'].checked? or @data['포스트설정']['서로이웃공개'].checked? or @data['포스트설정']['멤버공개'].checked?
4797
+ @data['포스트설정']['전체공개'].checked = false
4798
+ @data['포스트설정']['서로이웃공개'].checked = false
4799
+ @data['포스트설정']['멤버공개'].checked = false
4800
+ end
4801
+ end
4802
+ }
4803
+ }
4804
+
4805
+
4806
+
4807
+ @data['포스트설정']['댓글허용'] = checkbox('댓글허용'){
4808
+ top 12
4809
+ left 0
4810
+ }
4811
+ @data['포스트설정']['블로그,카페 공유허용'] = checkbox('블로그,카페 공유허용'){
4812
+ top 12
4813
+ left 1
4814
+ }
4815
+ @data['포스트설정']['외부공유허용'] = checkbox('외부공유허용'){
4816
+ top 13
4817
+ left 0
4818
+ }
4819
+ @data['포스트설정']['검색허용'] = checkbox('검색허용'){
4820
+ top 13
4821
+ left 1
4822
+ }
4823
+ @data['포스트설정']['공감허용'] = checkbox('공감허용'){
4824
+ top 14
4825
+ left 0
4826
+ }
4827
+
4828
+ @data['포스트설정']['테더링'] = checkbox('테더링 IP 사용'){
4829
+ top 15
4830
+ left 0
4831
+ on_toggled{
4832
+ if @data['포스트설정']['테더링'].checked?
4833
+ @data['포스트설정']['프록시'].checked = false
4834
+
4835
+ end
4836
+ }
4837
+ }
4838
+ @data['포스트설정']['프록시'] = checkbox('프록시 IP 사용'){
4839
+ top 15
4840
+ left 1
4841
+ on_toggled{
4842
+ if @data['포스트설정']['프록시'].checked?
4843
+ @data['포스트설정']['테더링'].checked = false
4844
+
4845
+ end
4846
+ }
4847
+ }
4848
+ button('프록시 IP 파일 불러오기'){
4849
+ top 15
4850
+ left 3
4851
+ on_clicked{
4852
+ file = open_file
4853
+ if file != nil
4854
+ file_data = File.open(file,'r').read
4855
+ @data['포스트설정']['프록시리스트'] = file_data.split("\n")
4856
+ end
4857
+ }
4858
+ }
4859
+
4860
+ @data['포스트설정']['발행기능'] = checkbox('포스팅 글 [ 발행 ] 하기'){
4861
+ top 16
4862
+ left 0
4863
+ on_toggled{
4864
+ if @data['포스트설정']['발행기능'].checked?
4865
+ if @data['포스트설정']['저장기능'].checked?
4866
+ @data['포스트설정']['저장기능'].checked = false
4867
+
4868
+ end
4869
+ end
4870
+ }
4871
+ }
4872
+ @data['포스트설정']['저장기능'] = checkbox('포스팅 글 [ 저장 ] 하기'){
4873
+ top 16
4874
+ left 1
4875
+
4876
+ on_toggled{
4877
+ if @data['포스트설정']['저장기능'].checked?
4878
+ if @data['포스트설정']['발행기능'].checked?
4879
+ @data['포스트설정']['발행기능'].checked = false
4880
+
4881
+ end
4882
+ end
4665
4883
  }
4666
4884
  }
4667
4885
  }
4668
4886
  }
4887
+ }
4888
+ }
4669
4889
 
4670
4890
  horizontal_box{
4671
4891
  stretchy false