nblog_zon 0.0.7 → 0.0.10

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 +1758 -1570
  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')
@@ -535,7 +549,7 @@ class Naver
535
549
  sleep(1)
536
550
  @driver.switch_to.frame(@driver.find_element(:xpath, '//*[@id="mainFrame"]'))
537
551
 
538
- sleep(2)
552
+ sleep(1)
539
553
  page_data = @driver.page_source
540
554
  loading_counter = 1
541
555
  begin
@@ -554,7 +568,7 @@ class Naver
554
568
  begin
555
569
  sleep(1)
556
570
  puts '[작성 중인 글이 있습니다] 팝업 체크 중 (약 10초 소요)...'
557
- wait = Selenium::WebDriver::Wait.new(:timeout => 10)
571
+ wait = Selenium::WebDriver::Wait.new(:timeout => 9)
558
572
  #요소가 나타날 때까지 60초 동안 기다립니다.
559
573
  wait.until { @driver.find_element(:xpath, '//*[@class="se-popup-button se-popup-button-cancel"]') }
560
574
  sleep(1)
@@ -567,8 +581,8 @@ class Naver
567
581
  end
568
582
 
569
583
  begin
570
- puts '[도움말] 팝업 체크 중 (약 10초 소요)...'
571
- wait = Selenium::WebDriver::Wait.new(:timeout => 10)
584
+ puts '[도움말] 팝업 체크 중 (약 3초 소요)...'
585
+ wait = Selenium::WebDriver::Wait.new(:timeout => 3)
572
586
  #요소가 나타날 때까지 60초 동안 기다립니다.
573
587
  wait.until { @driver.find_element(:xpath, '//*[@class="se-help-panel-close-button"]') }
574
588
  sleep(1)
@@ -580,79 +594,70 @@ class Naver
580
594
  puts '[도움말] 팝업 팝업을 발견하지못했습니다! 다음으로 진행합니다...'
581
595
  end
582
596
 
583
- ele = @driver.find_element(:xpath, '//*[@id="'+title_id+'"]/div[1]/div')
597
+
598
+ template = option['template']
599
+ begin
600
+
601
+ if template.to_s == ''
602
+
603
+ else
604
+ @driver.find_element(:xpath, '//*[@data-name="template"]').click
605
+ sleep(1.5)
606
+
607
+ @driver.find_element(:xpath, '//*[@data-log="ltpl.my"]').click
608
+ sleep(1)
609
+ begin
610
+ @driver.find_element(:xpath, '//*[@id="'+page_id+'"]/div[1]/div/div[1]/aside/div/div[3]/div[1]/div[2]/ul/li['+template.to_s+']/a').click
611
+ puts '탬플릿 ['+template.to_s+'] 번을 사용합니다'
612
+ rescue
613
+ @driver.find_element(:xpath, '//*[@id="'+page_id+'"]/div[1]/div/div[1]/aside/div/div[3]/div[1]/div[2]/ul/li/a').click
614
+ puts '탬플릿 ['+template.to_s+'] 번을 찾지못해 첫번째 탬플릿을 사용합니다.'
615
+ sleep(1)
616
+ end
617
+ @driver.switch_to.alert.accept
618
+ sleep(5)
619
+ @driver.find_element(:xpath, '//*[@data-name="template"]').click
620
+ sleep(1)
621
+
622
+
623
+
624
+ end
625
+ rescue
626
+
627
+ end
628
+
629
+
630
+ #제목 입력
631
+ ele = @driver.find_element(:xpath, '//*[@draggable="false"]')
584
632
  @driver.action.click(ele).perform
585
- sleep(2)
633
+ sleep(1)
634
+ @driver.action.key_down(:control).key_down('a').key_up('a').key_up(:control).perform
635
+ sleep(1)
636
+ @driver.action.key_down(:delete).key_up(:delete).perform
637
+ sleep(1)
586
638
  title = title.strip
587
639
  @driver.action.send_keys(title).perform
588
- sleep(2)
640
+ sleep(1)
589
641
  @driver.action.key_down(:enter).key_up(:enter).perform
590
- sleep(2)
591
-
592
- # category = get_category()
593
- # puts category
594
- # puts category[option['category']].to_s
595
- # puts option['category']
596
- # category_value = ''
597
- # if option['category'].to_s == ''
598
- # category_value = category[category.keys[0]].to_s
599
- # else
600
- # category_value = category[option['category'].force_encoding('utf-8').to_s].to_s
601
- # end
602
- # if category_value == ''
603
- # category_value = category[category.keys[0]].to_s
604
- # end
642
+ sleep(1)
643
+ @driver.action.key_down(:control).key_down('a').key_up('a').key_up(:control).perform
644
+ sleep(1)
645
+ @driver.action.key_down(:down).key_up(:down).perform
646
+ @driver.action.key_down(:enter).key_up(:enter).perform
647
+
648
+
649
+
650
+
651
+
605
652
 
606
653
  puts content
607
654
  noko = Nokogiri::HTML(content, nil, Encoding::UTF_8.to_s)
608
655
  toomung = 0
609
656
  h = Hash.new
610
- # h[:authority] = 'blog.naver.com'
611
- # h[:method] = 'POST'
612
- # h[:path] = '/RabbitWrite.naver'
613
- # h[:scheme] = 'https'
614
- # h['accept'] = 'application/json, text/plain, */*'
615
- # h['accept-encoding'] = 'gzip, deflate, br'
616
- # h['accept-language'] = 'ko-KR,ko;q=0.9,en-US;q=0.8,en;q=0.7'
617
- # h['content-type'] = 'application/x-www-form-urlencoded'
618
- # h['cookie'] = @cookie
619
- # h['origin'] = 'https://blog.naver.com'
620
- # h['referer'] = 'https://blog.naver.com/'+@user_id+'/postwrite?categoryNo=1'
621
- # h['sec-ch-ua'] = '"Chromium";v="106", "Google Chrome";v="106", "Not;A=Brand";v="99"'
622
- # h['sec-ch-ua-mobile'] = '?0'
623
- # h['sec-ch-ua-platform'] = '"Windows"'
624
- # h['sec-fetch-dest'] = 'empty'
625
- # h['sec-fetch-mode'] = 'cors'
626
- # h['sec-fetch-site'] = 'same-origin'
627
- # h['user-agent'] = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36'
657
+
628
658
 
629
659
  data = Hash.new
630
- # data['blogId'] = @user_id
631
- # data['documentModel'] = Hash.new
632
- # data['documentModel']['documentId'] = ''
633
- # data['documentModel']['document'] = Hash.new
634
- # data['documentModel']['document']['version'] = '2.6.0'
635
- # data['documentModel']['document']['theme'] = 'default'
636
- # data['documentModel']['document']['language'] = 'ko-KR'
637
- # data['documentModel']['document']['components'] = Array.new
638
- # data['documentModel']['document']['components'][0] = {
639
- # 'id' => create_id(),
640
- # 'layout' => 'default',
641
- # 'title' => [
642
- # {
643
- # 'id' => create_id(),
644
- # 'nodes' => [{
645
- # 'id' => create_id(),
646
- # 'value' => title,
647
- # '@ctype' => 'textNode'
648
- # }],
649
- # '@ctype' => 'paragraph'
650
- # }
651
- # ],
652
- # 'subTitle' => nil,
653
- # 'align' => 'left',
654
- # '@ctype' => 'documentTitle'
655
- # }
660
+
656
661
 
657
662
  check_position = 1
658
663
  noko.css('p').each do |i|
@@ -693,30 +698,63 @@ class Naver
693
698
  if i2.to_s.include?('<img')
694
699
  path = i2.to_s.split('src="')[1].split('"')[0]
695
700
  path = URI.decode_www_form(path)[0][0]
696
- @driver.find_element(:xpath, '//*[@id="'+page_id+'"]/div[1]/div/header/div[1]/ul/li[1]/button').click
697
- sleep(2)
698
- Clipboard.copy(path.split('/').join("\\"))
699
- key_down('ctrl')
700
- key_stroke('v')
701
- key_up('ctrl')
702
- sleep(3)
703
- key_stroke('enter')
704
- sleep(3)
705
- # @driver.action.key_down(:control).send_keys('v').key_up(:control).perform
706
- # puts path = CGI.unescape(path)
707
- # image_data = image_update(path)
708
- # components_value = Hash.new
709
- # components_value['id'] = create_id()
710
- # components_value['layout'] = 'default'
711
- # begin
712
- # if i.to_s.split('text-align: ')[1].split(';')[0] == 'center'
713
- # components_value['align'] = 'center'
714
- # elsif i.to_s.split('text-align: ')[1].split(';')[0] == 'right'
715
- # components_value['align'] = 'right'
716
- # else
717
-
718
- # end
719
- # rescue
701
+ if option['라이브러리사용안함'] == 'true'
702
+ # 현재 탭의 URL을 가져오기
703
+
704
+ posting_url = @driver.current_url
705
+ @driver.execute_script("window.open('#{posting_url}');")
706
+ sleep(1)
707
+ @driver.switch_to.window(@driver.window_handles[1])
708
+ wait = Selenium::WebDriver::Wait.new(timeout: 10)
709
+ iframe = wait.until { @driver.find_element(id: 'mainFrame') }
710
+ @driver.switch_to.frame(iframe)
711
+ begin
712
+ wait = Selenium::WebDriver::Wait.new(:timeout => 3)
713
+ wait.until { @driver.find_element(:xpath, '//*[@class="se-popup-button-text"]') }
714
+ @driver.find_element(:xpath, '//*[@class="se-popup-button-text"]').click
715
+ sleep(1)
716
+ rescue
717
+ end
718
+ @driver.action.key_down(:control).key_down(:alt).send_keys('i').key_up(:alt).key_up(:control).perform
719
+ sleep(1)
720
+ Clipboard.copy(path.split('/').join("\\"))
721
+ key_down('ctrl')
722
+ key_stroke('v')
723
+ key_up('ctrl')
724
+ sleep(1)
725
+ key_stroke('enter')
726
+ sleep(2)
727
+ @driver.action.send_keys(:up).perform
728
+ sleep(1)
729
+ @driver.action.key_down(:control).send_keys('c').key_up(:control).perform
730
+ sleep(1)
731
+ @driver.switch_to.default_content()
732
+ @driver.close
733
+ sleep(1)
734
+ @driver.switch_to.window(@driver.window_handles[0])
735
+ wait = Selenium::WebDriver::Wait.new(timeout: 10)
736
+ iframe = wait.until { @driver.find_element(id: 'mainFrame') }
737
+ @driver.switch_to.frame(iframe)
738
+ #@driver.action.key_down(:control).send_keys('v').key_up(:control).perform
739
+ key_down('ctrl')
740
+ key_stroke('v')
741
+ key_up('ctrl')
742
+ sleep(1)
743
+
744
+ else
745
+ #@driver.find_element(:xpath, '//*[@id="'+page_id+'"]/div[1]/div/header/div[1]/ul/li[1]/button').click
746
+ @driver.action.key_down(:control).key_down(:alt).send_keys('i').key_up(:alt).key_up(:control).perform
747
+ sleep(2)
748
+ Clipboard.copy(path.split('/').join("\\"))
749
+ key_down('ctrl')
750
+ key_stroke('v')
751
+ key_up('ctrl')
752
+ sleep(1)
753
+ key_stroke('enter')
754
+ sleep(2)
755
+ end
756
+
757
+
720
758
 
721
759
  if i2.to_s.split('href="')[1] != nil
722
760
  href2 = i2.to_s.split('href="')[1].split('"')[0]
@@ -853,75 +891,6 @@ class Naver
853
891
  sleep(1)
854
892
 
855
893
 
856
- elsif i2.to_s.include?('<template')
857
- @driver.find_element(:xpath, '//*[@data-name="template"]').click
858
- sleep(1.5)
859
- @driver.find_element(:xpath, '//*[@id="'+page_id+'"]/div[1]/div/div[1]/aside/div/div[2]/ul/li[3]/button').click
860
- sleep(1.5)
861
- @driver.find_element(:xpath, '//*[@id="'+page_id+'"]/div[1]/div/div[1]/aside/div/div[3]/div[1]/div[2]/ul/li/a').click
862
- sleep(1.5)
863
- @driver.switch_to.alert.accept
864
- sleep(5)
865
- @driver.find_element(:xpath, '//*[@data-name="template"]').click
866
- #sleep(1)
867
- #@driver.find_element(:xpath, '//*[@class="save_count_btn__ZTLNa"]').click
868
- #sleep(1)
869
- #@driver.find_element(:xpath, '//*[@id="root"]/div/div[2]/div[2]/div[3]/div/div[2]/div[2]/div/button').click
870
- #sleep(1)
871
- #@driver.find_element(:xpath, '//*[@class="label__HjFsk"]').click
872
- #sleep(1)
873
- #@driver.find_element(:xpath, '//*[@id="root"]/div/div[2]/div[2]/div[3]/div/div[2]/div[2]/div/div/button[2]').click
874
- #sleep(1.5)
875
- #@driver.switch_to.alert.accept
876
- #sleep(1.5)
877
- #@driver.find_element(:xpath, '//*[@id="root"]/div/div[2]/div[2]/div[3]/div/div[2]/div[2]/div/div/button[3]').click
878
- #sleep(1)
879
- #@driver.find_element(:xpath, '//*[@class="close_button__YWXJ_"]').click
880
-
881
-
882
-
883
- #제목 다시 입력
884
- ele = @driver.find_element(:xpath, '//*[@draggable="false"]')
885
- @driver.action.click(ele).perform
886
- sleep(1)
887
- @driver.action.key_down(:control).key_down('a').key_up('a').key_up(:control).perform
888
- sleep(1)
889
- @driver.action.key_down(:delete).key_up(:delete).perform
890
- sleep(2)
891
- title = title.strip
892
- @driver.action.send_keys(title).perform
893
- sleep(2)
894
- @driver.action.key_down(:enter).key_up(:enter).perform
895
- sleep(2)
896
- @driver.action.key_down(:control).key_down('a').key_up('a').key_up(:control).perform
897
- sleep(1)
898
- @driver.action.key_down(:down).key_up(:down).perform
899
-
900
- # components_value = Hash.new
901
- # components_value['id'] = create_id()
902
- # components_value['layout'] = 'default'
903
- # begin
904
- # if i.to_s.split('text-align: ')[1].split(';')[0] == 'center'
905
- # components_value['align'] = 'center'
906
- # elsif i.to_s.split('text-align: ')[1].split(';')[0] == 'right'
907
- # components_value['align'] = 'right'
908
- # else
909
-
910
- # end
911
- # rescue
912
-
913
- # end
914
- # sticker_random = rand(1..9)
915
- # components_value['packCode'] = 'linesoft_01'
916
- # components_value['seq'] = sticker_random
917
- # components_value['thumbnail'] = {
918
- # 'src' => "https://storep-phinf.pstatic.net/linesoft_01/original_"+sticker_random.to_s+".gif",
919
- # "width" => 185,
920
- # 'height' => 160,
921
- # '@ctype' => 'thumbnail'
922
- # }
923
- # components_value['format'] = "animated"
924
- # components_value['@ctype'] = "sticker"
925
894
  elsif i2.to_s.include?('<koreamap')
926
895
  where = i2.to_s.split('>')[1].split('<')[0]
927
896
  @driver.find_element(:xpath, '//*[@id="'+page_id+'"]/div[1]/div/header/div[1]/ul/li[7]/button').click
@@ -1943,7 +1912,7 @@ class Wordpress
1943
1912
  @video = Array.new
1944
1913
  while true
1945
1914
  for n in 0..@data['table'].length-1
1946
- @data['table'][n][10] = 0
1915
+ @data['table'][n][11] = 0
1947
1916
  end
1948
1917
 
1949
1918
  while true
@@ -1981,6 +1950,17 @@ class Wordpress
1981
1950
  rescue
1982
1951
  option['bun'] = ''
1983
1952
  end
1953
+
1954
+ begin
1955
+ option['template'] = table[7].to_s.force_encoding('utf-8').to_s
1956
+ if option['template'].to_s == '템플릿 사용시 번호 ex)1' || option['template'].to_s == '0'
1957
+ option['template'] = ''
1958
+
1959
+ end
1960
+ rescue
1961
+ option['template'] = ''
1962
+ end
1963
+
1984
1964
 
1985
1965
  option['proxy'] = ''
1986
1966
  if @data['포스트설정']['프록시'].checked?
@@ -1991,7 +1971,7 @@ class Wordpress
1991
1971
  end
1992
1972
  end
1993
1973
 
1994
- if table[7].to_i > table[10].to_i
1974
+ if table[8].to_i > table[11].to_i
1995
1975
  if @data['포스트설정']['테더링'].checked?
1996
1976
  puts 'tedering ip change...'
1997
1977
  stdout, stderr, status = Open3.capture3('./adb devices')
@@ -2039,6 +2019,14 @@ class Wordpress
2039
2019
  end
2040
2020
  end
2041
2021
  end
2022
+
2023
+ if @data['포스트설정']['gpt제목'].checked?
2024
+ chat = Chat_title.new(@data['포스트설정']['api_key'].text.to_s.force_encoding('utf-8'))
2025
+ gpt_text1 = chat.message(title)
2026
+ title = gpt_text1.to_s
2027
+ end
2028
+
2029
+
2042
2030
  @data['table'][index][-1] = 5
2043
2031
  @data['table'] << []
2044
2032
  @data['table'].pop
@@ -2076,11 +2064,30 @@ class Wordpress
2076
2064
  end
2077
2065
  end
2078
2066
  end
2079
- content_tag = content.split('@##@')[1]
2080
- content = content.split('@##@')[0]
2081
- @data['table'][index][-1] = 15
2082
- @data['table'] << []
2083
- @data['table'].pop
2067
+
2068
+
2069
+ if @data['포스트설정']['gpt내용'].checked?
2070
+ api_key = @data['포스트설정']['api_key'].text.to_s.force_encoding('utf-8')
2071
+ #key_change = @data['포스트설정']['특정단어키워드로변경값'].text.to_s.force_encoding('utf-8')
2072
+ #imotcon_change = @data['포스트설정']['스티커로변경단어'].text.to_s.force_encoding('utf-8')
2073
+ #template_change = @data['포스트설정']['내템플릿변경단어'].text.to_s.force_encoding('utf-8')
2074
+ #ttdanar_change = @data['포스트설정']['단어링크적용단어'].text.to_s.force_encoding('utf-8')
2075
+ #sajine_change = @data['포스트설정']['단어사진으로변경단어'].text.to_s.force_encoding('utf-8')
2076
+ #mov_change = @data['포스트설정']['영상으로변경단어'].text.to_s.force_encoding('utf-8')
2077
+ #map_change = @data['포스트설정']['지도로변경단어'].text.to_s.force_encoding('utf-8')
2078
+ #inyong9_change = @data['포스트설정']['인용구변경단어'].text.to_s.force_encoding('utf-8')
2079
+
2080
+
2081
+ chat = Chat_content.new(api_key)
2082
+ gpt_text3 = chat.message(content)
2083
+ content = gpt_text3.to_s
2084
+ end
2085
+
2086
+ content_tag = content.split('@##@')[1]
2087
+ content = content.split('@##@')[0]
2088
+ @data['table'][index][-1] = 15
2089
+ @data['table'] << []
2090
+ @data['table'].pop
2084
2091
  #단어 가저오기
2085
2092
  if @data['포스트설정']['제목을랜덤'].checked? or @data['포스트설정']['내용을자동생성'].checked? or @data['포스트설정']['내용과자동생성'].checked?
2086
2093
  auto_text = get_naver_text2(keyword)
@@ -2274,7 +2281,7 @@ class Wordpress
2274
2281
  @data['table'][index][-1] = 50
2275
2282
  @data['table'] << []
2276
2283
  @data['table'].pop
2277
- if @data['포스트설정']['gpt'].checked?
2284
+ if @data['포스트설정']['gpt키워드'].checked?
2278
2285
  chat = Chat.new(@data['포스트설정']['api_key'].text.to_s.force_encoding('utf-8'))
2279
2286
  gpt_text = chat.message(keyword)
2280
2287
  content = content.to_s + "\n(자동생성글)\n" + gpt_text.to_s
@@ -2295,7 +2302,7 @@ class Wordpress
2295
2302
  joongbok_check = 0
2296
2303
  counter10 = 0
2297
2304
  while joongbok_check == 0
2298
- if @data['포스트설정']['내용과자동생성'].checked? or @data['포스트설정']['gpt'].checked?
2305
+ if @data['포스트설정']['내용과자동생성'].checked? or @data['포스트설정']['gpt키워드'].checked?
2299
2306
  content22 = content.split("(자동생성글)")[1].split("\n")
2300
2307
  else
2301
2308
  content22 = content.split("\n")
@@ -2319,12 +2326,12 @@ class Wordpress
2319
2326
  content2 = content.split("\n")
2320
2327
  end
2321
2328
 
2322
- if @data['포스트설정']['내용과자동생성'].checked? or @data['포스트설정']['gpt'].checked?
2329
+ if @data['포스트설정']['내용과자동생성'].checked? or @data['포스트설정']['gpt키워드'].checked?
2323
2330
  content2 = content.split("(자동생성글)")[1].split("\n")
2324
2331
  position.pop
2325
2332
  end
2326
2333
 
2327
- if @data['포스트설정']['내용과자동생성'].checked? == false and @data['포스트설정']['내용을자동생성'].checked? == false and @data['포스트설정']['gpt'].checked? == false
2334
+ if @data['포스트설정']['내용과자동생성'].checked? == false and @data['포스트설정']['내용을자동생성'].checked? == false and @data['포스트설정']['gpt키워드'].checked? == false
2328
2335
  content2 = content.split("\n")
2329
2336
  end
2330
2337
 
@@ -2370,7 +2377,7 @@ class Wordpress
2370
2377
  content = content3.join("\n")
2371
2378
  end
2372
2379
 
2373
- if @data['포스트설정']['내용과자동생성'].checked? or @data['포스트설정']['gpt'].checked?
2380
+ if @data['포스트설정']['내용과자동생성'].checked? or @data['포스트설정']['gpt키워드'].checked?
2374
2381
  content2.each_with_index do |con, index|
2375
2382
  if position.include?(index)
2376
2383
  insert_keyword_text = keyword.to_s
@@ -2400,7 +2407,7 @@ class Wordpress
2400
2407
  end
2401
2408
  end
2402
2409
 
2403
- if @data['포스트설정']['내용과자동생성'].checked? == false and @data['포스트설정']['내용을자동생성'].checked? == false and @data['포스트설정']['gpt'].checked? == false
2410
+ if @data['포스트설정']['내용과자동생성'].checked? == false and @data['포스트설정']['내용을자동생성'].checked? == false and @data['포스트설정']['gpt키워드'].checked? == false
2404
2411
  begin
2405
2412
  content2.each_with_index do |con, index|
2406
2413
  if position.include?(index)
@@ -2495,7 +2502,7 @@ class Wordpress
2495
2502
  end
2496
2503
  end
2497
2504
 
2498
- if @data['포스트설정']['내용과자동생성'].checked? or @data['포스트설정']['gpt'].checked?
2505
+ if @data['포스트설정']['내용과자동생성'].checked? or @data['포스트설정']['gpt키워드'].checked?
2499
2506
  if @data['포스트설정']['자동글 수식에 입력'].checked?
2500
2507
  content5 = content.split("(자동생성글)")[0].to_s.split("\n")
2501
2508
  content55 = content.split("(자동생성글)")[1].to_s
@@ -2526,51 +2533,8 @@ class Wordpress
2526
2533
  end
2527
2534
 
2528
2535
  position = position.sort
2529
- ###여기까지 이미지 순서대로 안되서 변경##-------------------------------------------------------------------------------
2530
- # if @data['포스트설정']['내용과자동생성'].checked? or @data['포스트설정']['gpt'].checked?
2531
- # image_url22 = get_image_file().force_encoding('utf-8')
2532
- # end
2533
-
2534
- # position.each do |i|
2535
- # image_url = get_image_file().force_encoding('utf-8')
2536
- # puts image_url
2537
-
2538
- # puts '사진넣는위치 => '+i.to_s
2539
- # if @data['포스트설정']['내용사진링크'].checked?
2540
- # image_memory << ""+'<a href="'+@data['포스트설정']['내용사진링크값'].text.to_s.force_encoding('utf-8').force_encoding('utf-8')+'"><img src="'+image_url+'" alt="'+keyword.force_encoding('utf-8')+'"></a>'+""
2541
- # content5.insert(i, '**image**')
2542
- # else
2543
- # image_memory << ""+'<img src="'+image_url+'" alt="'+keyword+'" class="aligncenter size-full">'+""
2544
- # content5.insert(i, '**image**')
2545
- # end
2546
- # end
2547
-
2548
- # if @data['포스트설정']['내용과자동생성'].checked? or @data['포스트설정']['gpt'].checked?
2549
- # content = content5.join("\n")+'(자동생성글)'+content55
2550
- # iconv = Iconv.new('UTF-8', 'ASCII-8BIT')
2551
- # content = iconv.iconv(content)
2552
- # content = content.encode('UTF-8', 'binary', invalid: :replace, replace: '')
2553
- # puts content
2554
- # image_url = image_url22
2555
-
2556
- # if @data['포스트설정']['자동글 수식에 입력'].checked?
2557
-
2558
- # else
2559
- # if @data['포스트설정']['내용사진링크'].checked?
2560
- # content = content.split('(자동생성글)')[0]+""+'<a href="'+@data['포스트설정']['내용사진링크값'].text.to_s.force_encoding('utf-8')+'"><img src="'+image_url+'" alt="'+keyword+'"></a>'+""+'(자동생성글)'+content.split('(자동생성글)')[1]
2561
- # else
2562
- # content = content.split('(자동생성글)')[0]+""+'<img src="'+image_url+'" alt="'+keyword+'" >'+""+'(자동생성글)'+content.split('(자동생성글)')[1]
2563
- # end
2564
- # end
2565
- # else
2566
- # content = content5.join("\n")
2567
- # end
2568
- # end
2569
- # end
2570
- ###여기까지 이미지 순서대로 안되서 변경##-------------------------------------------------------------------------------
2571
-
2572
- ##여기서부터 이미지 순서대로 수정코드 변경####-------------------------------------------------------------------------------
2573
- if @data['포스트설정']['내용과자동생성'].checked? or @data['포스트설정']['gpt'].checked?
2536
+
2537
+ if @data['포스트설정']['내용과자동생성'].checked? or @data['포스트설정']['gpt키워드'].checked?
2574
2538
  sleep(2)
2575
2539
  puts '이미지 자동 세탁 중 · · · '
2576
2540
  end
@@ -2589,7 +2553,7 @@ class Wordpress
2589
2553
  end
2590
2554
  sleep(2)
2591
2555
  puts '이미지 자동 세탁 완료 · · · '
2592
- if @data['포스트설정']['내용과자동생성'].checked? or @data['포스트설정']['gpt'].checked?
2556
+ if @data['포스트설정']['내용과자동생성'].checked? or @data['포스트설정']['gpt키워드'].checked?
2593
2557
  content = content5.join("\n")+'(자동생성글)'+content55
2594
2558
  puts content
2595
2559
  else
@@ -2597,6 +2561,8 @@ class Wordpress
2597
2561
  end
2598
2562
  end
2599
2563
  end
2564
+
2565
+
2600
2566
  ##여기서부터 이미지 순서대로 수정코드 변경####-------------------------------------------------------------------------------
2601
2567
  @data['table'][index][-1] = 70
2602
2568
  @data['table'] << []
@@ -2611,7 +2577,7 @@ class Wordpress
2611
2577
  content = content.split(i.force_encoding('utf-8')).join(keyword)
2612
2578
  end
2613
2579
  end
2614
-
2580
+
2615
2581
  @data['table'][index][-1] = 75
2616
2582
  @data['table'] << []
2617
2583
  @data['table'].pop
@@ -2628,12 +2594,7 @@ class Wordpress
2628
2594
  ttr = 0
2629
2595
  @data['포스트설정']['단어사진으로변경단어'].text.to_s.force_encoding('utf-8').split(',').each do |i|
2630
2596
  ttr = 1
2631
- # image_url = get_image_file().force_encoding('utf-8')
2632
- # if @data['포스트설정']['내용사진링크'].checked?
2633
- # content = content.split(i.force_encoding('utf-8')).join('<a href="'+@data['포스트설정']['내용사진링크값'].text.to_s.force_encoding('utf-8')+'"><img src="'+image_url+'" alt="'+keyword+'"></a>')
2634
- # else
2635
- # content = content.split(i.force_encoding('utf-8')).join('<img src="'+image_url+'" alt="'+keyword+'">')
2636
- # end
2597
+
2637
2598
  content = content.split(i.force_encoding('utf-8'))
2638
2599
  content.each_with_index do |ccm, index3|
2639
2600
  if index3 == content.length-1
@@ -2652,6 +2613,10 @@ class Wordpress
2652
2613
  content = content.join('')
2653
2614
  end
2654
2615
  end
2616
+
2617
+
2618
+
2619
+
2655
2620
 
2656
2621
  con_memory = Array.new
2657
2622
  index5 = 0
@@ -2689,17 +2654,9 @@ class Wordpress
2689
2654
  content = content.split(i.force_encoding('utf-8')).join("<sticker></sticker>")
2690
2655
  end
2691
2656
  end
2692
-
2693
-
2694
-
2695
- if @data['포스트설정']['내템플릿사용하기'].checked?
2696
- @data['포스트설정']['내템플릿변경단어'].text.to_s.force_encoding('utf-8').split(',').each do |i|
2697
- content = content.split(i.force_encoding('utf-8')).join("<template></template>")
2698
- end
2699
- end
2700
-
2701
2657
 
2702
2658
 
2659
+
2703
2660
  if @data['포스트설정']['영상으로변경'].checked?
2704
2661
  if @video.length == 0
2705
2662
  path = @data['포스트설정']['동영상폴더위치'].text.to_s.force_encoding('utf-8').force_encoding('utf-8')
@@ -2743,7 +2700,7 @@ class Wordpress
2743
2700
  content = content
2744
2701
  soosick_1 = content_end
2745
2702
  else
2746
- if @data['포스트설정']['gpt'].checked?
2703
+ if @data['포스트설정']['gpt키워드'].checked?
2747
2704
  if @data['포스트설정']['gpt상단'].checked?
2748
2705
  content = content_end+"\n"+content+"\n"
2749
2706
  else
@@ -2837,9 +2794,11 @@ class Wordpress
2837
2794
 
2838
2795
  end
2839
2796
 
2840
-
2841
-
2842
-
2797
+ if @data['포스트설정']['라이브러리사용안함'].checked?
2798
+ option['라이브러리사용안함'] = 'true'
2799
+ else
2800
+ option['라이브러리사용안함'] = 'false'
2801
+ end
2843
2802
 
2844
2803
  if @data['포스트설정']['외부공유허용'].checked?
2845
2804
  option['외부공유허용'] = 'true'
@@ -2891,7 +2850,8 @@ class Wordpress
2891
2850
  @data['table'] << []
2892
2851
  @data['table'].pop
2893
2852
 
2894
- dd_time = @data['table'][index][9].to_s.force_encoding('utf-8').to_i
2853
+ dd_time = @data['table'][index][10].to_s.force_encoding('utf-8').to_i
2854
+ template_no = @data['table'][index][7].to_s.force_encoding('utf-8').to_i
2895
2855
  naver.update(title,content,option,soosick_1,soosick_2, dd_time)
2896
2856
 
2897
2857
 
@@ -2910,11 +2870,11 @@ class Wordpress
2910
2870
  # @data2['content'] = content+'</div>'
2911
2871
 
2912
2872
  #완료했으니 수량 카운터
2913
- @data['table'][index][10] = @data['table'][index][10].to_i + 1
2873
+ @data['table'][index][11] = @data['table'][index][11].to_i + 1
2914
2874
  @data['table'][index][-1] = 100
2915
2875
  @data['table'] << []
2916
2876
  @data['table'].pop
2917
- sleep(@data['table'][index][8].to_i)
2877
+ sleep(@data['table'][index][9].to_i)
2918
2878
  end
2919
2879
  # rescue => exception
2920
2880
  # puts exception
@@ -3188,8 +3148,8 @@ class Wordpress
3188
3148
  end
3189
3149
 
3190
3150
  if i.class == Array
3191
- i[7] = i[7].to_i
3192
3151
  i[8] = i[8].to_i
3152
+ i[9] = i[9].to_i
3193
3153
  @data[key] << i
3194
3154
  @data[key] << i
3195
3155
  @data[key].pop
@@ -3259,11 +3219,14 @@ class Wordpress
3259
3219
  @data['bun'] = entry{
3260
3220
  text '예약 발행 분 단위 ex)00'
3261
3221
  }
3222
+ @data['template'] = entry{
3223
+ text '템플릿 사용시 번호 ex)1'
3224
+ }
3262
3225
 
3263
3226
  button('등록'){
3264
3227
  on_clicked {
3265
- @data['table'] << [false, @data['site_id_input'].text, @data['site_pw_input'].text,@data['category'].text , @data['proxy'].text , @data['sigan'].text, @data['bun'].text, 1, 1, 1, 0,0]
3266
- @data['table'] << [false, @data['site_id_input'].text, @data['site_pw_input'].text,@data['category'].text , @data['proxy'].text , @data['sigan'].text, @data['bun'].text, 1, 1, 1, 0,0]
3228
+ @data['table'] << [false, @data['site_id_input'].text, @data['site_pw_input'].text,@data['category'].text , @data['proxy'].text , @data['sigan'].text, @data['bun'].text, @data['template'].text, 1, 1, 1, 0,0]
3229
+ @data['table'] << [false, @data['site_id_input'].text, @data['site_pw_input'].text,@data['category'].text , @data['proxy'].text , @data['sigan'].text, @data['bun'].text, @data['template'].text,1, 1, 1, 0,0]
3267
3230
  @data['table'].pop
3268
3231
  }
3269
3232
  }
@@ -3275,8 +3238,8 @@ class Wordpress
3275
3238
  file_data.split("\n").each do |i|
3276
3239
  i3 = i.to_s.force_encoding('utf-8').to_s
3277
3240
  i2 = i3.split(',')
3278
- @data['table'] << [false, i2[0].to_s, i2[1].to_s,i2[2].to_s,i2[3].to_s,i2[4].to_s,i2[5].to_s, 1,1,1,0,0]
3279
- @data['table'] << [false, i2[0].to_s, i2[1].to_s,i2[2].to_s,i2[3].to_s,i2[4].to_s,i2[5].to_s, 1,1,1,0,0]
3241
+ @data['table'] << [false, i2[0].to_s, i2[1].to_s,i2[2].to_s,i2[3].to_s,i2[4].to_s,i2[5].to_s,i2[6].to_s, 1,1,1,0,0]
3242
+ @data['table'] << [false, i2[0].to_s, i2[1].to_s,i2[2].to_s,i2[3].to_s,i2[4].to_s,i2[5].to_s,i2[6].to_s, 1,1,1,0,0]
3280
3243
  @data['table'].pop
3281
3244
  end
3282
3245
  end
@@ -3311,6 +3274,9 @@ class Wordpress
3311
3274
  text_column('예약 분'){
3312
3275
  editable true
3313
3276
  }
3277
+ text_column('템플릿 넘버'){
3278
+ editable true
3279
+ }
3314
3280
 
3315
3281
 
3316
3282
  text_column('수량'){
@@ -3377,7 +3343,11 @@ class Wordpress
3377
3343
 
3378
3344
  grid{
3379
3345
  stretchy false
3380
-
3346
+ @data['table_template_input'] = entry{
3347
+ top 1
3348
+ left 3
3349
+ text '템플릿 넘버 ex) 3'
3350
+ }
3381
3351
  @data['table_counter_input'] = entry{
3382
3352
  top 1
3383
3353
  left 4
@@ -3391,7 +3361,7 @@ class Wordpress
3391
3361
  @data['table_delay_input2'] = entry{
3392
3362
  top 1
3393
3363
  left 6
3394
- text '등록전딜레이'
3364
+ text '등록 전 딜레이'
3395
3365
  }
3396
3366
 
3397
3367
  button('전체설정'){
@@ -3399,9 +3369,10 @@ class Wordpress
3399
3369
  left 7
3400
3370
  on_clicked{
3401
3371
  for n in 0..@data['table'].length-1
3402
- @data['table'][n][7] = @data['table_counter_input'].text.to_i
3403
- @data['table'][n][8] = @data['table_delay_input'].text.to_s
3404
- @data['table'][n][9] = @data['table_delay_input2'].text.to_s
3372
+ @data['table'][n][7] = @data['table_template_input'].text.to_i
3373
+ @data['table'][n][8] = @data['table_counter_input'].text.to_i
3374
+ @data['table'][n][9] = @data['table_delay_input'].text.to_s
3375
+ @data['table'][n][10] = @data['table_delay_input2'].text.to_s
3405
3376
  @data['table'] << []
3406
3377
  @data['table'].pop
3407
3378
  end
@@ -3411,1261 +3382,1478 @@ class Wordpress
3411
3382
  }
3412
3383
  }
3413
3384
  }
3414
- tab_item('내용설정'){
3385
+ tab_item('내용설정'){
3386
+ horizontal_box{
3387
+ vertical_box{
3415
3388
  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
- }
3389
+ stretchy false
3390
+ button('키워드불러오기'){
3391
+ on_clicked{
3392
+ file = open_file
3393
+ if file != nil
3394
+ file_data = File.open(file, 'r', :encoding => 'utf-8').read()
3395
+ file_data.split("\n").each do |keyword|
3396
+ if keyword.split(' ').join('').length < 2
3437
3397
 
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['키워드설정']['키워드'] << []
3398
+ else
3399
+ @data['키워드설정']['키워드'] << [false, keyword]
3400
+ @data['키워드설정']['키워드'] << [false, keyword]
3460
3401
  @data['키워드설정']['키워드'].pop
3461
3402
  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
3403
+ end
3404
+ end
3474
3405
 
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
3406
  }
3500
- table{
3501
- checkbox_column('선택'){
3502
- editable true
3503
- }
3504
- text_column('키워드'){
3505
-
3506
- }
3407
+ }
3507
3408
 
3508
- cell_rows @data['키워드설정']['키워드']
3409
+ }
3410
+ horizontal_box{
3411
+ stretchy false
3412
+ grid{
3413
+ button('전체선택'){
3414
+ top 1
3415
+ left 1
3416
+ on_clicked{
3417
+ for n in 0..@data['키워드설정']['키워드'].length-1
3418
+ @data['키워드설정']['키워드'][n][0] = true
3419
+ @data['키워드설정']['키워드'] << []
3420
+ @data['키워드설정']['키워드'].pop
3421
+ end
3509
3422
  }
3510
-
3511
3423
  }
3512
- vertical_separator{
3513
- stretchy false
3424
+ button('선택해제'){
3425
+ top 1
3426
+ left 2
3427
+ on_clicked{
3428
+ for n in 0..@data['키워드설정']['키워드'].length-1
3429
+ @data['키워드설정']['키워드'][n][0] = false
3430
+ @data['키워드설정']['키워드'] << []
3431
+ @data['키워드설정']['키워드'].pop
3432
+ end
3433
+ }
3514
3434
  }
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
- }
3435
+ button('삭제하기'){
3436
+ top 1
3437
+ left 3
3438
+ on_clicked{
3439
+ m = Array.new
3440
+ for n in 0..@data['키워드설정']['키워드'].length-1
3441
+ if @data['키워드설정']['키워드'][n][0] == true
3442
+ m << n
3443
+ end
3444
+ end
3535
3445
 
3446
+ m.reverse.each do |i|
3447
+ @data['키워드설정']['키워드'].delete_at(i)
3448
+ end
3449
+ @data['키워드설정']['키워드'].delete(nil)
3536
3450
  }
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
3572
-
3573
- m.reverse.each do |i|
3574
- @data['제목설정']['제목'].delete_at(i)
3575
- end
3576
- @data['제목설정']['제목'].delete(nil)
3577
- }
3578
- }
3451
+ }
3452
+ }
3453
+
3454
+ @data['키워드설정']['순서사용'] = checkbox('순서사용'){
3455
+ stretchy false
3456
+ on_toggled{ |c|
3457
+ if c.checked?
3458
+ @data['키워드설정']['랜덤사용'].checked = false
3459
+ end
3579
3460
  }
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
- }
3461
+ }
3462
+ @data['키워드설정']['랜덤사용'] = checkbox('랜덤사용'){
3463
+ stretchy false
3464
+ on_toggled{ |c|
3465
+ if c.checked?
3466
+ @data['키워드설정']['순서사용'].checked = false
3467
+ end
3596
3468
  }
3597
- table{
3598
- checkbox_column('선택'){
3599
- editable true
3600
- }
3601
- text_column('제목'){
3602
-
3603
- }
3469
+ }
3470
+ }
3471
+ vertical_separator{
3472
+ stretchy false
3473
+ }
3474
+ horizontal_box{
3475
+ stretchy false
3476
+ grid{
3477
+ @data['포스트설정']['gpt키워드'] = checkbox('GPT 키워드 기반 글 생성'){
3478
+ top 1
3479
+ left 0
3480
+ #enabled false # 기본적으로 비활성화
3481
+ on_toggled {
3482
+ if @data['포스트설정']['gpt키워드'].checked?
3483
+ @data['포스트설정']['gpt상단'].enabled = true # '내용투명' 활성화
3484
+ @data['포스트설정']['gpt하단'].enabled = true # '내용투명' 활성화
3485
+ else
3486
+ @data['포스트설정']['gpt상단'].checked = false # 체크 해제
3487
+ @data['포스트설정']['gpt상단'].enabled = false # 비활성화
3488
+ @data['포스트설정']['gpt하단'].checked = false # 체크 해제
3489
+ @data['포스트설정']['gpt하단'].enabled = false # 비활성화
3490
+ end
3491
+ }
3492
+
3493
+ }
3494
+
3495
+ @data['포스트설정']['gpt상단'] = checkbox('원고 위에 넣기'){
3496
+ top 1
3497
+ left 1
3498
+ enabled false # 기본적으로 비활성화
3499
+ on_toggled{
3500
+ if @data['포스트설정']['gpt상단'].checked?
3501
+ @data['포스트설정']['gpt하단'].checked = false
3502
+ end
3503
+ }
3504
+ }
3604
3505
 
3605
- cell_rows @data['제목설정']['제목']
3506
+ @data['포스트설정']['gpt하단'] = checkbox('원고 아래 넣기'){
3507
+ top 1
3508
+ left 2
3509
+ enabled false # 기본적으로 비활성화
3510
+ on_toggled{
3511
+ if @data['포스트설정']['gpt하단'].checked?
3512
+ @data['포스트설정']['gpt상단'].checked = false
3513
+ end
3606
3514
  }
3607
-
3515
+ }
3516
+ } }
3517
+ horizontal_box{
3518
+ stretchy false
3519
+ grid{
3520
+ label('※ GPT 기능 사용시 포스트설정1에서 GPT사용에 체크 필수'){
3521
+ } } }
3522
+
3523
+
3524
+ table{
3525
+ checkbox_column('선택'){
3526
+ editable true
3608
3527
  }
3609
- vertical_separator{
3610
- stretchy false
3528
+ text_column('키워드'){
3529
+
3611
3530
  }
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
3531
 
3631
- }
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
3532
+ cell_rows @data['키워드설정']['키워드']
3533
+ }
3534
+
3535
+
3536
+
3537
+ }
3538
+ vertical_separator{
3539
+ stretchy false
3540
+ }
3541
+ vertical_box{
3542
+ horizontal_box{
3543
+ stretchy false
3544
+ button('제목불러오기'){
3545
+ on_clicked{
3546
+ file = open_file
3547
+ if file != nil
3548
+ file_data = File.open(file, 'r', :encoding => 'utf-8').read()
3549
+ file_data.split("\n").each do |title|
3550
+ if title.split(" ").join('').length < 2
3667
3551
 
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
3552
+ else
3553
+ @data['제목설정']['제목'] << [false, title]
3554
+ @data['제목설정']['제목'] << [false, title]
3555
+ @data['제목설정']['제목'].pop
3688
3556
  end
3689
- }
3690
- }
3557
+ end
3558
+ end
3691
3559
  }
3692
- table{
3693
- checkbox_column('선택'){
3694
- editable true
3695
- }
3696
- text_column('내용파일'){
3697
-
3698
- }
3560
+ }
3699
3561
 
3700
- cell_rows @data['내용설정']['내용']
3562
+ }
3563
+ horizontal_box{
3564
+ stretchy false
3565
+ grid{
3566
+ button('전체선택'){
3567
+ top 1
3568
+ left 1
3569
+ on_clicked{
3570
+ for n in 0..@data['제목설정']['제목'].length-1
3571
+ @data['제목설정']['제목'][n][0] = true
3572
+ @data['제목설정']['제목'] << []
3573
+ @data['제목설정']['제목'].pop
3574
+ end
3575
+ }
3576
+ }
3577
+ button('선택해제'){
3578
+ top 1
3579
+ left 2
3580
+ on_clicked{
3581
+ for n in 0..@data['제목설정']['제목'].length-1
3582
+ @data['제목설정']['제목'][n][0] = false
3583
+ @data['제목설정']['제목'] << []
3584
+ @data['제목설정']['제목'].pop
3585
+ end
3701
3586
  }
3587
+ }
3588
+ button('삭제하기'){
3589
+ top 1
3590
+ left 3
3591
+ on_clicked{
3592
+ m = Array.new
3593
+ for n in 0..@data['제목설정']['제목'].length-1
3594
+ if @data['제목설정']['제목'][n][0] == true
3595
+ m << n
3596
+ end
3597
+ end
3702
3598
 
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
- }
3599
+ m.reverse.each do |i|
3600
+ @data['제목설정']['제목'].delete_at(i)
3601
+ end
3602
+ @data['제목설정']['제목'].delete(nil)
3725
3603
  }
3726
3604
  }
3727
3605
  }
3728
- }
3729
- tab_item('이미지설정'){
3730
- horizontal_box{
3731
- vertical_box{
3606
+ @data['제목설정']['순서사용'] = checkbox('순서사용'){
3732
3607
  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
- }
3608
+ on_toggled{ |c|
3609
+ if c.checked?
3610
+ @data['제목설정']['랜덤사용'].checked = false
3611
+ end
3746
3612
  }
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
3613
+ }
3614
+ @data['제목설정']['랜덤사용'] = checkbox('랜덤사용'){
3615
+ stretchy false
3616
+ on_toggled{ |c|
3617
+ if c.checked?
3618
+ @data['제목설정']['순서사용'].checked = false
3619
+ end
3620
+ }
3621
+ }
3622
+ }
3623
+ vertical_separator{
3624
+ stretchy false
3625
+ }
3626
+ horizontal_box{
3627
+ stretchy false
3628
+ grid{
3629
+ @data['포스트설정']['gpt제목'] = checkbox('제목을 이용해 GPT로 비슷한 제목 생성'){
3630
+
3631
+
3632
+ }}}
3633
+ horizontal_box{
3634
+ stretchy false
3635
+ grid{
3636
+ label('※ GPT 기능 사용시 포스트설정1에서 GPT사용에 체크 필수'){
3637
+ } } }
3638
+
3782
3639
 
3783
- m.reverse.each do |i|
3784
- @data['이미지설정']['이미지'].delete_at(i)
3785
- end
3640
+ table{
3641
+ checkbox_column('선택'){
3642
+ editable true
3643
+ }
3644
+ text_column('제목'){
3786
3645
 
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
3804
- end
3805
- }
3806
- }
3807
- }
3808
- table{
3809
- checkbox_column('선택'){
3810
- editable true
3811
- }
3812
- text_column('이미지파일'){
3646
+ }
3813
3647
 
3814
- }
3648
+ cell_rows @data['제목설정']['제목']
3649
+ }
3650
+
3815
3651
 
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
- }
3652
+ }
3653
+ vertical_separator{
3654
+ stretchy false
3655
+ }
3656
+ vertical_box{
3657
+ horizontal_box{
3658
+ stretchy false
3659
+ button('내용불러오기'){
3660
+ on_clicked{
3661
+ file = open_file
3662
+ if file != nil
3663
+ file_name = file.split("\\")[-1]
3664
+ file_data = File.open(file,'r', :encoding => 'utf-8').read()
3665
+ if file_data.split("\n").length < 2
3666
+ file_data = file_data + "\n"
3667
+ end
3668
+ @data['내용설정']['내용'] << [false, file_name, file_data]
3669
+ @data['내용설정']['내용'] << [false, file_name, file_data]
3670
+ @data['내용설정']['내용'].pop
3671
+ end
3839
3672
  }
3840
-
3841
- }
3842
- vertical_separator{
3843
- stretchy false
3844
3673
  }
3845
3674
 
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
- }
3675
+ }
3676
+ horizontal_box{
3677
+ stretchy false
3678
+ grid{
3679
+ button('전체선택'){
3680
+ top 1
3681
+ left 1
3682
+ on_clicked{
3683
+ for n in 0..@data['내용설정']['내용'].length-1
3684
+ @data['내용설정']['내용'][n][0] = true
3685
+ @data['내용설정']['내용'] << []
3686
+ @data['내용설정']['내용'].pop
3687
+ end
3873
3688
  }
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
-
3689
+ }
3690
+ button('선택해제'){
3691
+ top 1
3692
+ left 2
3693
+ on_clicked{
3694
+ for n in 0..@data['내용설정']['내용'].length-1
3695
+ @data['내용설정']['내용'][n][0] = false
3696
+ @data['내용설정']['내용'] << []
3697
+ @data['내용설정']['내용'].pop
3698
+ end
3979
3699
  }
3700
+ }
3701
+ button('삭제하기'){
3702
+ top 1
3703
+ left 3
3704
+ on_clicked{
3705
+ m = Array.new
3706
+ for n in 0..@data['내용설정']['내용'].length-1
3707
+ if @data['내용설정']['내용'][n][0] == true
3708
+ m << n
3709
+ end
3710
+ end
3980
3711
 
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
- }
3712
+ m.reverse.each do |i|
3713
+ @data['내용설정']['내용'].delete_at(i)
3714
+ end
3715
+ @data['내용설정']['내용'].delete(nil)
4033
3716
  }
4034
3717
  }
4035
3718
  }
4036
- }
4037
-
4038
- tab_item('포스트설정1'){
4039
- horizontal_box{
4040
- vertical_box{
3719
+ @data['내용설정']['순서사용'] = checkbox('순서사용'){
4041
3720
  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
- }
3721
+ on_toggled{ |c|
3722
+ if c.checked?
3723
+ @data['내용설정']['랜덤사용'].checked = false
3724
+ end
3725
+ }
3726
+ }
3727
+ @data['내용설정']['랜덤사용'] = checkbox('랜덤사용'){
3728
+ stretchy false
3729
+ on_toggled{ |c|
3730
+ if c.checked?
3731
+ @data['내용설정']['순서사용'].checked = false
3732
+ end
3733
+ }
3734
+ }
3735
+ }
3736
+ vertical_separator{
3737
+ stretchy false
3738
+ }
3739
+ horizontal_box{
3740
+ stretchy false
3741
+ grid{
3742
+ @data['포스트설정']['gpt내용'] = checkbox('내용파일을 이용해 GPT로 글 변형'){
3743
+
3744
+
3745
+ }}}
3746
+ horizontal_box{
3747
+ stretchy false
3748
+ grid{
3749
+ label('※ GPT 기능 사용시 포스트설정1에서 GPT사용에 체크 필수'){
3750
+ } } }
3751
+
3752
+ table{
3753
+ checkbox_column('선택'){
3754
+ editable true
3755
+ }
3756
+ text_column('내용파일'){
4174
3757
 
4175
- @data['포스트설정']['gpt'] = checkbox('내용을 키워드 기반의 GPT로 생성해서 포스팅'){
4176
- top 10
4177
- left 0
4178
- }
3758
+ }
4179
3759
 
4180
- @data['포스트설정']['api_key'] = entry(){
4181
- top 10
4182
- left 1
4183
- text 'api key'
4184
- }
3760
+ cell_rows @data['내용설정']['내용']
3761
+ }
4185
3762
 
4186
- @data['포스트설정']['gpt상단'] = checkbox('원고내용 위에 넣기'){
4187
- top 10
4188
- left 3
4189
- }
3763
+ horizontal_box{
3764
+ stretchy false
3765
+ @data['이미지설정']['폴더경로2'] = entry{
3766
+ stretchy false
3767
+ text "내용폴더경로 ex)C:\\내용\\폴더1"
3768
+ }
4190
3769
 
4191
- @data['포스트설정']['gpt하단'] = checkbox('원고내용 아래에 넣기'){
4192
- top 11
4193
- left 3
4194
- }
3770
+ button('폴더째로 불러오기') {
3771
+ on_clicked {
3772
+ path = @data['이미지설정']['폴더경로2'].text.to_s.force_encoding('utf-8')
4195
3773
 
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
3774
+ # 경로가 유효한지 확인
3775
+ if Dir.exist?(path)
3776
+ Dir.entries(path).each do |file|
3777
+ if file == '.' or file == '..'
3778
+ next
3779
+ else
3780
+ begin
3781
+ # 파일을 열고 내용을 읽어서 추가
3782
+ file_data = File.open(path + '/' + file, 'r', encoding: 'utf-8').read
3783
+ @data['내용설정']['내용'] << [false, file, file_data]
3784
+ rescue => e
3785
+ # 파일을 열 수 없는 경우, 오류 메시지 출력
3786
+ puts "파일을 없습니다: #{file}, 오류: #{e.message}"
4227
3787
  end
4228
3788
  end
4229
- }
4230
- }
4231
- @data['포스트설정']['제목에도적용'] = checkbox('제목에도 적용'){
4232
- top 12+ aa1
4233
- left 3
4234
- }
4235
-
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
- }
4254
-
4255
- @data['포스트설정']['내용사진링크'] = checkbox('내용 사진 자동 삽입시 링크 삽입'){
4256
- top 14+ aa1
4257
- left 0
4258
- }
3789
+ end
4259
3790
 
4260
- @data['포스트설정']['내용사진링크값'] = entry(){
4261
- top 14+ aa1
4262
- left 1
4263
- text 'URL'
4264
- }
3791
+ # 내용 배열에서 마지막 빈 항목 제거
3792
+ @data['내용설정']['내용'] << []
3793
+ @data['내용설정']['내용'].pop
3794
+ else
3795
+ # 경로가 유효하지 않을 경우, 오류 메시지 출력
3796
+ puts "경로가 존재하지 않습니다: #{path}"
3797
+ end
4265
3798
  }
4266
3799
  }
4267
-
4268
- vertical_separator{
4269
- stretchy false
3800
+ }
3801
+ }
3802
+ }
3803
+ }
3804
+ tab_item('이미지설정'){
3805
+ 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
+ }
4270
3820
  }
4271
-
4272
-
3821
+ }
3822
+ horizontal_box{
3823
+ stretchy false
4273
3824
  grid{
4274
- @data['포스트설정']['특정단어키워드로변경'] = checkbox('내용 특정단어를 키워드로 변경'){
4275
- top 0
4276
- left 0
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
4277
3834
  }
4278
- @data['포스트설정']['특정단어키워드로변경값'] = entry{
4279
- top 0
4280
- left 1
4281
- text '특정단어'
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
4282
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
4283
3857
 
4284
- @data['포스트설정']['제외하고등록'] = checkbox('내용 특정단어를 제외하고 등록'){
4285
- top 1
4286
- left 0
4287
- }
4288
- @data['포스트설정']['제외하고등록값'] = entry{
4289
- top 1
4290
- left 1
4291
- text '특정단어'
4292
- }
3858
+ m.reverse.each do |i|
3859
+ @data['이미지설정']['이미지'].delete_at(i)
3860
+ end
4293
3861
 
4294
- @data['포스트설정']['단어링크적용'] = checkbox('내용 특정단어를 링크적용 등록'){
4295
- top 2
4296
- left 0
4297
- }
4298
- @data['포스트설정']['단어링크적용단어'] = entry{
4299
- top 2
4300
- left 1
4301
- text '특정단어'
3862
+ @data['이미지설정']['이미지'].delete(nil)
4302
3863
  }
4303
-
4304
- label('ㄴ적용하려는 링크 URL 입력'){
4305
- top 3
4306
- left 0
3864
+ }
3865
+ }
3866
+ @data['이미지설정']['순서사용'] = checkbox('순서사용'){
3867
+ stretchy false
3868
+ on_toggled{ |c|
3869
+ if c.checked?
3870
+ @data['이미지설정']['랜덤사용'].checked = false
3871
+ end
4307
3872
  }
4308
- @data['포스트설정']['단어링크적용url'] = entry{
4309
- top 3
4310
- left 1
4311
- text 'URL'
3873
+ }
3874
+ @data['이미지설정']['랜덤사용'] = checkbox('랜덤사용'){
3875
+ stretchy false
3876
+ on_toggled{ |c|
3877
+ if c.checked?
3878
+ @data['이미지설정']['순서사용'].checked = false
3879
+ end
4312
3880
  }
3881
+ }
3882
+ }
3883
+ table{
3884
+ checkbox_column('선택'){
3885
+ editable true
3886
+ }
3887
+ text_column('이미지파일'){
4313
3888
 
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
- }
3889
+ }
4327
3890
 
4328
- @data['포스트설정']['단어사진으로변경URL'] = entry{
4329
- top 5
4330
- left 1
4331
- text 'URL'
4332
- }
3891
+ cell_rows @data['이미지설정']['이미지']
3892
+ }
3893
+ horizontal_box{
3894
+ stretchy false
3895
+ @data['이미지설정']['폴더경로'] = entry{
3896
+ stretchy false
3897
+ text "사진폴더경로 ex)C:\\사진\\폴더2"
3898
+ }
4333
3899
 
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(',')
3900
+ button('폴더째로 불러오기') {
3901
+ on_clicked {
3902
+ path = @data['이미지설정']['폴더경로'].text.to_s.force_encoding('utf-8')
3903
+
3904
+ # 경로가 유효한지 확인
3905
+ if Dir.exist?(path)
3906
+ Dir.entries(path).each do |file|
3907
+ if file == '.' or file == '..'
3908
+ next
3909
+ else
3910
+ # 폴더 내의 파일을 이미지 리스트에 추가
3911
+ @data['이미지설정']['이미지'] << [false, file, path + "\\" + file.force_encoding('utf-8')]
4400
3912
  end
4401
- }
4402
- }
4403
- @data['포스트설정']['내템플릿사용하기'] = checkbox('내 템플릿 사용하기'){
4404
- top 13
4405
- left 0
4406
- }
4407
- @data['포스트설정']['내템플릿변경단어'] = entry{
4408
- top 13
4409
- left 1
4410
- text '탬플릿으로 전활시킬 특정단어'
4411
- }
3913
+ end
3914
+
3915
+ # 마지막 빈 항목 추가 후 제거 (원래 로직에 맞춰)
3916
+ @data['이미지설정']['이미지'] << []
3917
+ @data['이미지설정']['이미지'].pop
3918
+ else
3919
+ # 경로가 존재하지 않으면 경고 메시지 출력
3920
+ puts "경로가 존재하지 않습니다: #{path}"
3921
+ end
4412
3922
  }
4413
3923
  }
3924
+ }
3925
+
4414
3926
  }
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
3927
+ vertical_separator{
3928
+ stretchy false
3929
+ }
3930
+
3931
+ vertical_box{
3932
+ horizontal_box{
3933
+ stretchy false
3934
+ @data['image_type'][0] = checkbox('저장 사진 사용'){
3935
+ on_toggled{
3936
+ if @data['image_type'][0].checked?
3937
+ @data['image_type'][1].checked = false
3938
+ @data['image_type'][2].checked = false
3939
+ end
4427
3940
  }
4428
- @data['포스트설정']['단어크기변경'] = checkbox('내용 특정단어 크기 변경(적용 단어 앞 &30& 뒤에 &&삽입) ex) &&19&& 카페 &&&&'){
4429
- top 2
4430
- left 0
3941
+ }
3942
+ @data['image_type'][1] = checkbox('색상 사진 사용'){
3943
+ on_toggled{
3944
+ if @data['image_type'][1].checked?
3945
+ @data['image_type'][0].checked = false
3946
+ @data['image_type'][2].checked = false
3947
+ end
4431
3948
  }
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
- }
3949
+ }
3950
+ @data['image_type'][2] = checkbox('자동 다운로드 사진 사용'){
3951
+ on_toggled{
3952
+ if @data['image_type'][2].checked?
3953
+ @data['image_type'][1].checked = false
3954
+ @data['image_type'][0].checked = false
3955
+ end
4441
3956
  }
4442
- @data['포스트설정']['좌측정렬'] = checkbox('내용 글 좌측 정렬'){
4443
- top 4
4444
- left 0
4445
- on_toggled{
4446
- if @data['포스트설정']['좌측정렬'].checked?
4447
- @data['포스트설정']['중앙정렬'].checked = false
4448
- @data['포스트설정']['우측정렬'].checked = false
4449
- end
4450
- }
3957
+ }
3958
+ }
3959
+
3960
+ grid{
3961
+ stretchy false
3962
+ @data['이미지설정']['글자삽입1'] = checkbox('글자 삽입1'){
3963
+ top 0
3964
+ left 0
3965
+ }
3966
+ button('가져오기'){
3967
+ top 0
3968
+ left 1
3969
+ on_clicked{
3970
+ file = open_file
3971
+ if file != nil
3972
+ file_data = File.open(file, 'r', :encoding => 'utf-8').read()
3973
+ @data['이미지설정']['이미지글자1'] = file_data.to_s.split("\n")
3974
+ end
4451
3975
  }
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
- }
4461
- }
4462
- @data['포스트설정']['막글삽입'] = checkbox('내용 하단에 막글 삽입'){
4463
- top 6
4464
- left 0
4465
- }
4466
- @data['포스트설정']['막글삽입시작숫자'] = entry{
4467
- top 6
4468
- left 1
4469
- text '최소수량'
4470
- }
4471
- label('~'){
4472
- top 6
4473
- left 2
4474
- }
4475
- @data['포스트설정']['막글삽입끝숫자'] = entry{
4476
- top 6
4477
- left 3
4478
- text '최대수량'
4479
- }
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
- }
4490
- }
4491
- @data['포스트설정']['막글투명'] = checkbox('막글 안보이게 처리'){
4492
- top 7
4493
- left 0
4494
- }
4495
- @data['포스트설정']['막글그대로'] = checkbox('막글 그대로 입력'){
4496
- top 7
4497
- left 1
3976
+ }
3977
+ @data['이미지설정']['이미지글자1크기1'] = entry{
3978
+ top 0
3979
+ left 2
3980
+ text 'ex) 33'
3981
+ }
3982
+ label('pt'){
3983
+ top 0
3984
+ left 3
3985
+ }
3986
+ @data['이미지설정']['이미지글자1크기2'] = entry{
3987
+ top 0
3988
+ left 4
3989
+ text 'ex) 55'
3990
+ }
3991
+ label('pt'){
3992
+ top 0
3993
+ left 5
3994
+ }
3995
+ @data['이미지설정']['글자테두리'] = checkbox('글자 테두리'){
3996
+ top 0
3997
+ left 6
3998
+ }
3999
+
4000
+ @data['이미지설정']['글자삽입2'] = checkbox('글자 삽입2'){
4001
+ top 1
4002
+ left 0
4003
+ }
4004
+ button('가져오기'){
4005
+ top 1
4006
+ left 1
4007
+ on_clicked{
4008
+ file = open_file
4009
+ if file != nil
4010
+ file_data = File.open(file, 'r', :encoding => 'utf-8').read()
4011
+ @data['이미지설정']['이미지글자2'] = file_data.split("\n")
4012
+ end
4498
4013
  }
4014
+ }
4015
+ @data['이미지설정']['이미지글자2크기1'] = entry{
4016
+ top 1
4017
+ left 2
4018
+ text 'ex) 33'
4019
+ }
4020
+ label('pt'){
4021
+ top 1
4022
+ left 3
4023
+ }
4024
+ @data['이미지설정']['이미지글자2크기2'] = entry{
4025
+ top 1
4026
+ left 4
4027
+ text 'ex) 55'
4028
+ }
4029
+ label('pt'){
4030
+ top 1
4031
+ left 5
4032
+ }
4033
+ @data['이미지설정']['글자그림자'] = checkbox('글자 그림자'){
4034
+ top 1
4035
+ left 6
4036
+ }
4037
+ @data['이미지설정']['필터사용'] = checkbox('필터사용(색상 사진 적용불가)'){
4038
+ top 2
4039
+ left 0
4040
+ }
4041
+ @data['이미지설정']['테두리사용'] = checkbox('테두리 사용'){
4042
+ top 3
4043
+ left 0
4044
+ }
4045
+ @data['이미지설정']['테두리크기1'] = entry{
4046
+ top 3
4047
+ left 2
4048
+ text 'ex) 1'
4049
+ }
4050
+ label('pt'){
4051
+ top 3
4052
+ left 3
4053
+ }
4054
+ @data['이미지설정']['테두리크기2'] = entry{
4055
+ top 3
4056
+ left 4
4057
+ text 'ex) 33'
4058
+ }
4059
+ label('pt'){
4060
+ top 3
4061
+ left 5
4062
+ }
4063
+
4064
+ }
4499
4065
 
4500
- @data['포스트설정']['태그삽입1'] = checkbox('태그삽입'){
4501
- top 8
4502
- left 0
4066
+ horizontal_box{
4067
+ stretchy false
4068
+ @data['image_size'][0] = checkbox('랜덤 px'){
4069
+ on_toggled{
4070
+ if @data['image_size'][0].checked?
4071
+ @data['image_size'][1].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
4503
4076
  }
4504
- @data['포스트설정']['태그삽입1시작숫자'] = entry{
4505
- top 8
4506
- left 1
4507
- text '최소수량'
4077
+ }
4078
+ @data['image_size'][1] = checkbox('740 px'){
4079
+ on_toggled{
4080
+ if @data['image_size'][1].checked?
4081
+ @data['image_size'][0].checked = false
4082
+ @data['image_size'][2].checked = false
4083
+ @data['image_size'][3].checked = false
4084
+ @data['image_size'][4].checked = false
4085
+ end
4508
4086
  }
4509
- label('~'){
4510
- top 8
4511
- left 2
4087
+ }
4088
+ @data['image_size'][2] = checkbox('650 px'){
4089
+ on_toggled{
4090
+ if @data['image_size'][2].checked?
4091
+ @data['image_size'][1].checked = false
4092
+ @data['image_size'][0].checked = false
4093
+ @data['image_size'][3].checked = false
4094
+ @data['image_size'][4].checked = false
4095
+ end
4512
4096
  }
4513
- @data['포스트설정']['태그삽입1끝숫자'] = entry{
4514
- top 8
4515
- left 3
4516
- text '최대수량'
4097
+ }
4098
+ @data['image_size'][3] = checkbox('550 px'){
4099
+ on_toggled{
4100
+ if @data['image_size'][3].checked?
4101
+ @data['image_size'][1].checked = false
4102
+ @data['image_size'][2].checked = false
4103
+ @data['image_size'][0].checked = false
4104
+ @data['image_size'][4].checked = false
4105
+ end
4517
4106
  }
4518
-
4519
- @data['포스트설정']['자동글 수식에 입력'] = checkbox('자동글 수식에 입력'){
4520
- top 9
4521
- left 0
4107
+ }
4108
+ @data['image_size'][4] = checkbox('480 px'){
4109
+ on_toggled{
4110
+ if @data['image_size'][4].checked?
4111
+ @data['image_size'][1].checked = false
4112
+ @data['image_size'][2].checked = false
4113
+ @data['image_size'][3].checked = false
4114
+ @data['image_size'][0].checked = false
4115
+ end
4522
4116
  }
4117
+ }
4118
+ }
4119
+ vertical_separator{
4120
+ stretchy false
4121
+ }
4122
+ horizontal_box{
4123
+ stretchy false
4124
+ @data['포스트설정']['라이브러리사용안함'] = checkbox('사진 라이브러리에서 제외시키기 적용'){
4125
+
4126
+ }
4127
+ }
4128
+ }
4129
+ }
4130
+ }
4523
4131
 
4524
- @data['포스트설정']['막글 수식에 입력'] = checkbox('막글 수식에 입력'){
4525
- top 9
4526
- left 1
4527
- }
4132
+ tab_item('포스트설정1'){
4133
+ horizontal_box{
4134
+ vertical_box{
4135
+ stretchy false
4136
+ grid{
4137
+ stretchy false
4138
+ @data['포스트설정']['제목키워드변경'] = checkbox('제목에 특정 단어를 내용에 사용할 키워드로 변경'){
4139
+ top 0
4140
+ left 0
4528
4141
 
4529
-
4142
+ }
4143
+ @data['포스트설정']['제목키워드변경단어'] = entry{
4144
+ top 0
4145
+ left 1
4146
+ text '특정단어'
4147
+ }
4530
4148
 
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
- }
4149
+ # @data['포스트설정']['제목단어변경'] = checkbox('제목에 특정 단어를 변경'){
4150
+ # top 1
4151
+ # left 0
4152
+ # }
4153
+ # @data['포스트설정']['제목단어변경파일불러오기'] = button('설정 파일 불러오기'){
4154
+ # top 1
4155
+ # left 1
4156
+ # on_clicked{
4157
+ # file = open_file
4158
+ # if file != nil
4159
+ # file_data = File.open(file, 'r', :encoding => 'utf-8').read()
4160
+ # file_data.split("\n").each do |i|
4161
+ # i2 = i.split('>')
4162
+ # text_key = i2[0].to_s
4163
+ # text_val = i2[1].to_s.split(',')
4164
+ # @data['포스트설정']['제목특정단어변경데이터'][text_key] = text_val
4165
+ # end
4166
+ # end
4167
+ # }
4168
+ # }
4169
+ @data['포스트설정']['제목에키워드삽입'] = checkbox('제목에 키워드 삽입'){
4170
+ top 2
4171
+ left 0
4172
+ #enabled false # 기본적으로 비활성화
4173
+ on_toggled {
4174
+ if @data['포스트설정']['제목에키워드삽입'].checked?
4175
+ @data['포스트설정']['제목앞'].enabled = true # '내용투명' 활성화
4176
+ @data['포스트설정']['제목뒤'].enabled = true # '내용투명' 활성화
4177
+ else
4178
+ @data['포스트설정']['제목앞'].checked = false # 체크 해제
4179
+ @data['포스트설정']['제목앞'].enabled = false # 비활성화
4180
+ @data['포스트설정']['제목뒤'].checked = false # 체크 해제
4181
+ @data['포스트설정']['제목뒤'].enabled = false # 비활성화
4182
+ end
4543
4183
  }
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
4184
+
4185
+ }
4186
+ @data['포스트설정']['제목에키워드삽입숫자1'] = entry(){
4187
+ top 2
4188
+ left 1
4189
+ text '최소수량'
4190
+ }
4191
+ label('~'){
4192
+ top 2
4193
+ left 2
4194
+ }
4195
+ @data['포스트설정']['제목에키워드삽입숫자2'] = entry(){
4196
+ top 2
4197
+ left 3
4198
+ text '최대수량'
4199
+ }
4200
+ label('ㄴ'){
4201
+ top 3
4202
+ left 2
4203
+ }
4204
+ @data['포스트설정']['제목앞'] = checkbox('제목에 키워드 삽입 제목 앞'){
4205
+ top 3
4206
+ left 3
4207
+ enabled false # 기본적으로 비활성화
4208
+ on_toggled{
4209
+ if @data['포스트설정']['제목앞'].checked? == true
4210
+ if @data['포스트설정']['제목뒤'].checked?
4211
+ @data['포스트설정']['제목뒤'].checked = false
4554
4212
  end
4555
- }
4213
+ end
4556
4214
  }
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
4215
+ }
4216
+ label('ㄴ'){
4217
+ top 4
4218
+ left 2
4219
+ }
4220
+ @data['포스트설정']['제목뒤'] = checkbox('제목에 키워드 삽입 제목 뒤'){
4221
+ top 4
4222
+ left 3
4223
+ enabled false # 기본적으로 비활성화
4224
+ on_toggled{
4225
+ if @data['포스트설정']['제목뒤'].checked? == true
4226
+ if @data['포스트설정']['제목앞'].checked?
4227
+ @data['포스트설정']['제목앞'].checked = false
4567
4228
  end
4568
- }
4229
+ end
4569
4230
  }
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
4231
+ }
4232
+
4233
+ @data['포스트설정']['특수문자'] = checkbox('제목에 키워드 삽입 시 특수문자 삽입'){
4234
+ top 4
4235
+ left 0
4236
+ }
4237
+ @data['포스트설정']['제목을랜덤'] = checkbox('제목을 랜덤 단어 조합으로 자동 입력'){
4238
+ top 5
4239
+ left 0
4240
+ on_toggled{
4241
+ if @data['포스트설정']['제목을랜덤'].checked? == true
4242
+ if @data['포스트설정']['제목내용설정'].checked?
4243
+ @data['포스트설정']['제목내용설정'].checked = false
4581
4244
  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
4245
+ end
4594
4246
  }
4595
- @data['포스트설정']['외부공유허용'] = checkbox('외부공유허용'){
4596
- top 13
4597
- left 0
4247
+ }
4248
+ @data['포스트설정']['제목내용설정'] = checkbox('내용의 첫 문장을 제목으로 설정'){
4249
+ top 6
4250
+ left 0
4251
+ on_toggled{
4252
+ if @data['포스트설정']['제목내용설정'].checked? == true
4253
+ if @data['포스트설정']['제목을랜덤'].checked?
4254
+ @data['포스트설정']['제목을랜덤'].checked = false
4255
+ end
4256
+ end
4598
4257
  }
4599
- @data['포스트설정']['검색허용'] = checkbox('검색허용'){
4600
- top 13
4601
- left 1
4258
+ }
4259
+ @data['포스트설정']['내용키워드삽입'] = checkbox('내용 키워드 삽입'){
4260
+ top 7
4261
+ left 0
4262
+ on_toggled {
4263
+ if @data['포스트설정']['내용키워드삽입'].checked?
4264
+ @data['포스트설정']['키워드삽입'].enabled = true # '내용투명' 활성화
4265
+ @data['포스트설정']['키워드삽입시링크'].enabled = true # '내용투명' 활성화
4266
+ else
4267
+ @data['포스트설정']['키워드삽입'].checked = false # 체크 해제
4268
+ @data['포스트설정']['키워드삽입'].enabled = false # 비활성화
4269
+ @data['포스트설정']['키워드삽입시링크'].text = 'URL' # 기본 텍스트 설정
4270
+ @data['포스트설정']['키워드삽입시링크'].enabled = false # 비활성화
4271
+ end
4602
4272
  }
4603
- @data['포스트설정']['공감허용'] = checkbox('공감허용'){
4604
- top 14
4605
- left 0
4273
+ }
4274
+ @data['포스트설정']['키워드삽입시작숫자'] = entry(){
4275
+ top 7
4276
+ left 1
4277
+
4278
+ text '최소수량'
4279
+ }
4280
+ label('~'){
4281
+ top 7
4282
+ left 2
4283
+ }
4284
+ @data['포스트설정']['키워드삽입끝숫자'] = entry(){
4285
+ top 7
4286
+ left 3
4287
+ text '최대수량'
4288
+ }
4289
+ @data['포스트설정']['키워드삽입'] = checkbox('내용 키워드 삽입시 링크 삽입'){
4290
+ enabled false # 기본적으로 비활성화
4291
+ top 8
4292
+ left 0
4293
+
4294
+ }
4295
+ @data['포스트설정']['키워드삽입시링크'] = entry(){
4296
+ enabled false # 기본적으로 비활성화
4297
+ top 8
4298
+ left 1
4299
+ text 'URL'
4300
+ }
4301
+ @data['포스트설정']['내용을자동생성'] = checkbox('키워드기반 생성으로만 등록(GPT 미 사용시 자체 생성)'){
4302
+ top 9
4303
+ left 0
4304
+ on_toggled{
4305
+ if @data['포스트설정']['내용을자동생성'].checked?
4306
+ @data['포스트설정']['내용과자동생성'].checked = false
4307
+ @data['포스트설정']['내용투명'].checked = false
4308
+ @data['포스트설정']['자동글 수식에 입력'].checked = false
4309
+
4310
+ end
4606
4311
  }
4312
+ }
4607
4313
 
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
- }
4314
+
4315
+ aa1 = 2
4316
+ @data['포스트설정']['내용과자동생성'] = checkbox('내용파일+키워드기반 생성 등록(GPT 미 사용시 자체 생성)') {
4317
+ top 10 + aa1
4318
+ left 0
4319
+ on_toggled {
4320
+ if @data['포스트설정']['내용과자동생성'].checked?
4321
+ @data['포스트설정']['내용을자동생성'].checked = false
4322
+ @data['포스트설정']['내용투명'].enabled = true # '내용투명' 활성화
4323
+ @data['포스트설정']['자동글 수식에 입력'].enabled = true # '내용투명' 활성화
4324
+ else
4325
+ @data['포스트설정']['내용투명'].checked = false # 체크 해제
4326
+ @data['포스트설정']['내용투명'].enabled = false # 비활성화
4327
+ @data['포스트설정']['자동글 수식에 입력'].checked = false # 체크 해제
4328
+ @data['포스트설정']['자동글 수식에 입력'].enabled = false # 비활성화
4329
+ end
4617
4330
  }
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
- }
4331
+ }
4332
+
4333
+ @data['포스트설정']['내용투명'] = checkbox('키워드 기반 자동 생성글 안보이게 처리') {
4334
+ top 11 + aa1
4335
+ left 0
4336
+ enabled false # 기본적으로 비활성화
4337
+ on_toggled {
4338
+ if @data['포스트설정']['내용투명'].checked?
4339
+ @data['포스트설정']['내용을자동생성'].checked = false
4340
+ @data['포스트설정']['자동글 수식에 입력'].checked = false
4341
+ end
4627
4342
  }
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")
4343
+ }
4344
+ @data['포스트설정']['내용자동변경'] = checkbox('내용에 단어들을 자동 변경'){
4345
+ top 12+ aa1
4346
+ left 0
4347
+ }
4348
+ button('설정 파일 불러오기'){
4349
+ top 12+ aa1
4350
+ left 1
4351
+ on_clicked{
4352
+ file = open_file
4353
+ if file != nil
4354
+ file_data = File.open(file, 'r', :encoding => 'utf-8').read()
4355
+ file_data.split("\n").each do |i|
4356
+ key = i.split('>')[0]
4357
+ v = i.split('>')[1].to_s.split(',')
4358
+ @data['포스트설정']['내용자동변경값'][key] = v
4636
4359
  end
4637
- }
4360
+ end
4638
4361
  }
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
- }
4362
+ }
4363
+ @data['포스트설정']['제목에도적용'] = checkbox('제목에도 적용'){
4364
+ top 12+ aa1
4365
+ left 3
4366
+ }
4367
+
4368
+ @data['포스트설정']['내용사진자동삽입'] = checkbox('내용 사진 자동 삽입'){
4369
+ top 13+ aa1
4370
+ left 0
4371
+ #enabled false # 기본적으로 비활성화
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
4651
4382
  }
4652
- @data['포스트설정']['저장기능'] = checkbox('포스팅 글 [ 저장 ] 하기'){
4653
- top 16
4654
- left 1
4383
+ }
4384
+ @data['포스트설정']['내용사진자동삽입시작숫자'] = entry(){
4385
+ top 13+ aa1
4386
+ left 1
4387
+ text '최소수량'
4388
+ }
4389
+ label('~'){
4390
+ top 13+ aa1
4391
+ left 2
4392
+ }
4393
+ @data['포스트설정']['내용사진자동삽입끝숫자'] = entry(){
4394
+ top 13+ aa1
4395
+ left 3
4396
+ text '최대수량'
4397
+ }
4655
4398
 
4656
- on_toggled{
4657
- if @data['포스트설정']['저장기능'].checked?
4658
- if @data['포스트설정']['발행기능'].checked?
4659
- @data['포스트설정']['발행기능'].checked = false
4660
-
4661
- end
4662
- end
4663
- }
4399
+ @data['포스트설정']['내용사진링크'] = checkbox('내용 사진 자동 삽입시 링크 삽입'){
4400
+ enabled false # 기본적으로 비활성화
4401
+ top 14+ aa1
4402
+ left 0
4403
+ }
4404
+
4405
+ @data['포스트설정']['내용사진링크값'] = entry(){
4406
+ enabled false # 기본적으로 비활성화
4407
+ top 14+ aa1
4408
+ left 1
4409
+ text 'URL'
4410
+ }
4411
+
4412
+ @data['포스트설정']['ChatGPT사용'] = checkbox('Chat GPT 사용하기'){
4413
+ top 15+ aa1
4414
+ left 0
4415
+ }
4416
+
4417
+ @data['포스트설정']['api_key'] = entry(){
4418
+ top 15+ aa1
4419
+ left 1
4420
+ text 'api key 입력 필수!!'
4421
+ }
4422
+
4423
+ }
4424
+ }
4425
+
4426
+ vertical_separator{
4427
+ stretchy false
4428
+ }
4429
+
4430
+
4431
+ grid{
4432
+ @data['포스트설정']['특정단어키워드로변경'] = checkbox('내용 특정단어를 키워드로 변경'){
4433
+ top 0
4434
+ left 0
4435
+ }
4436
+ @data['포스트설정']['특정단어키워드로변경값'] = entry{
4437
+ top 0
4438
+ left 1
4439
+ text '특정단어'
4440
+ }
4441
+
4442
+ @data['포스트설정']['제외하고등록'] = checkbox('내용 특정단어를 제외하고 등록'){
4443
+ top 1
4444
+ left 0
4445
+ }
4446
+ @data['포스트설정']['제외하고등록값'] = entry{
4447
+ top 1
4448
+ left 1
4449
+ text '특정단어'
4450
+ }
4451
+
4452
+ @data['포스트설정']['단어링크적용'] = checkbox('내용 특정단어를 링크적용 등록'){
4453
+ top 2
4454
+ left 0
4455
+ }
4456
+ @data['포스트설정']['단어링크적용단어'] = entry{
4457
+ top 2
4458
+ left 1
4459
+ text '특정단어'
4460
+ }
4461
+
4462
+ label('ㄴ적용하려는 링크 URL 입력'){
4463
+ top 3
4464
+ left 0
4465
+ }
4466
+ @data['포스트설정']['단어링크적용url'] = entry{
4467
+ top 3
4468
+ left 1
4469
+ text 'URL'
4470
+ }
4471
+
4472
+ @data['포스트설정']['단어사진으로변경'] = checkbox('특정단어를 사진으로 변경'){
4473
+ top 4
4474
+ left 0
4475
+ }
4476
+ @data['포스트설정']['단어사진으로변경단어'] = entry{
4477
+ top 4
4478
+ left 1
4479
+ text '특정단어1,@특정단어2 (앞에@붙이면 링크적용)'
4480
+ }
4481
+ label('ㄴ적용하려는 링크 URL 입력'){
4482
+ top 5
4483
+ left 0
4484
+ }
4485
+
4486
+ @data['포스트설정']['단어사진으로변경URL'] = entry{
4487
+ top 5
4488
+ left 1
4489
+ text 'URL'
4490
+ }
4491
+
4492
+
4493
+ # @data['포스트설정']['슬라이드로변경'] = checkbox('특정단어를 슬라이드사진 변경'){
4494
+ # top 6
4495
+ # left 0
4496
+ # }
4497
+ # @data['포스트설정']['단어슬라이드변경'] = entry{
4498
+ # top 6
4499
+ # left 1
4500
+ # text '특정단어'
4501
+ # }
4502
+
4503
+ @data['포스트설정']['스티커로변경'] = checkbox('특정단어를 스티커로 변경'){
4504
+ top 6
4505
+ left 0
4506
+ }
4507
+ @data['포스트설정']['스티커로변경단어'] = entry{
4508
+ top 6
4509
+ left 1
4510
+ text '특정단어'
4511
+ }
4512
+ @data['포스트설정']['영상으로변경'] = checkbox('특정단어를 영상으로 변경'){
4513
+ top 7
4514
+ left 0
4515
+ }
4516
+ @data['포스트설정']['영상으로변경단어'] = entry{
4517
+ top 7
4518
+ left 1
4519
+ text '특정단어'
4520
+ }
4521
+ label('ㄴ동영상만 있는 폴더 지정하기'){
4522
+ top 8
4523
+ left 0
4524
+ }
4525
+ @data['포스트설정']['동영상폴더위치'] = entry{
4526
+ top 8
4527
+ left 1
4528
+ text "영상폴더위치 ex) C:\\영상\\폴더3"
4529
+ }
4530
+ @data['포스트설정']['지도로변경'] = checkbox('특정단어를 지도로 변경'){
4531
+ top 9
4532
+ left 0
4533
+ }
4534
+ @data['포스트설정']['지도로변경단어'] = entry{
4535
+ top 9
4536
+ left 1
4537
+ text '특정단어'
4538
+ }
4539
+ label('ㄴ지도 삽입경우 적용 주소 입력'){
4540
+ top 10
4541
+ left 0
4542
+ }
4543
+ @data['포스트설정']['지도주소'] = entry{
4544
+ top 10
4545
+ left 1
4546
+ text 'ex) OO시 OO구 OO동 270-68'
4547
+ }
4548
+ @data['포스트설정']['인용구변경'] = checkbox('특정단어를 인용구로 적용'){
4549
+ top 11
4550
+ left 0
4551
+ }
4552
+ @data['포스트설정']['인용구변경단어'] = entry{
4553
+ top 11
4554
+ left 1
4555
+ text '특정단어'
4556
+ }
4557
+ label('ㄴ인용구 사용시 들어갈 문구'){
4558
+ top 12
4559
+ left 0
4560
+ }
4561
+ button('설정 파일 불러오기'){
4562
+ top 12
4563
+ left 1
4564
+ on_clicked{
4565
+ file = open_file
4566
+ if file != nil
4567
+ file_data = File.open(file, 'r').read
4568
+ @data['포스트설정']['인용구'] = file_data.split(',')
4569
+ end
4570
+ }
4571
+ }
4572
+
4573
+
4574
+ }
4575
+ }
4576
+ }
4577
+ tab_item('포스트설정2'){
4578
+ vertical_box{
4579
+ grid{
4580
+ stretchy false
4581
+
4582
+ @data['포스트설정']['특정단어굵기'] = checkbox('내용 특정단어 굵기 변경(적용 단어 앞 뒤에 @@삽입)'){
4583
+ top 0
4584
+ left 0
4585
+ }
4586
+ @data['포스트설정']['단어색상변경'] = checkbox('내용 특정단어 색상 변경(적용 단어 앞 뒤에 %%삽입)'){
4587
+ top 1
4588
+ left 0
4589
+ }
4590
+ @data['포스트설정']['단어크기변경'] = checkbox('내용 특정단어 크기 변경(적용 단어 앞 &30& 뒤에 &&삽입) ex) &&19&& 카페 &&&&'){
4591
+ top 2
4592
+ left 0
4593
+ }
4594
+ @data['포스트설정']['중앙정렬'] = checkbox('내용 글 중앙 정렬'){
4595
+ top 3
4596
+ left 0
4597
+ on_toggled{
4598
+ if @data['포스트설정']['중앙정렬'].checked?
4599
+ @data['포스트설정']['좌측정렬'].checked = false
4600
+ @data['포스트설정']['우측정렬'].checked = false
4601
+ end
4602
+ }
4603
+ }
4604
+ @data['포스트설정']['좌측정렬'] = checkbox('내용 글 좌측 정렬'){
4605
+ top 4
4606
+ left 0
4607
+ on_toggled{
4608
+ if @data['포스트설정']['좌측정렬'].checked?
4609
+ @data['포스트설정']['중앙정렬'].checked = false
4610
+ @data['포스트설정']['우측정렬'].checked = false
4611
+ end
4612
+ }
4613
+ }
4614
+ @data['포스트설정']['우측정렬'] = checkbox('내용 글 우측 정렬'){
4615
+ top 5
4616
+ left 0
4617
+ on_toggled{
4618
+ if @data['포스트설정']['우측정렬'].checked?
4619
+ @data['포스트설정']['좌측정렬'].checked = false
4620
+ @data['포스트설정']['중앙정렬'].checked = false
4621
+ end
4622
+ }
4623
+ }
4624
+ @data['포스트설정']['막글삽입'] = checkbox('내용 하단에 막글 삽입'){
4625
+ top 6
4626
+ left 0
4627
+ #enabled false # 기본적으로 비활성화
4628
+ on_toggled {
4629
+ if @data['포스트설정']['막글삽입'].checked?
4630
+ @data['포스트설정']['막글투명'].enabled = true # '내용투명' 활성화
4631
+ @data['포스트설정']['막글그대로'].enabled = true # '내용투명' 활성화
4632
+ @data['포스트설정']['막글 수식에 입력'].enabled = true # '내용투명' 활성화
4633
+
4634
+ else
4635
+ @data['포스트설정']['막글투명'].checked = false # 체크 해제
4636
+ @data['포스트설정']['막글투명'].enabled = false # 비활성화
4637
+ @data['포스트설정']['막글그대로'].checked = false # 체크 해제
4638
+ @data['포스트설정']['막글그대로'].enabled = false # 비활성화
4639
+ @data['포스트설정']['막글 수식에 입력'].checked = false # 체크 해제
4640
+ @data['포스트설정']['막글 수식에 입력'].enabled = false # 비활성화
4641
+ end
4642
+ }
4643
+ }
4644
+ @data['포스트설정']['막글삽입시작숫자'] = entry{
4645
+ top 6
4646
+ left 1
4647
+ text '최소수량'
4648
+ }
4649
+ label('~'){
4650
+ top 6
4651
+ left 2
4652
+ }
4653
+ @data['포스트설정']['막글삽입끝숫자'] = entry{
4654
+ top 6
4655
+ left 3
4656
+ text '최대수량'
4657
+ }
4658
+ button('막글 파일 불러오기'){
4659
+ top 6
4660
+ left 4
4661
+ on_clicked{
4662
+ file = open_file
4663
+ if file != nil
4664
+ file_data = File.open(file, 'r', :encoding => 'utf-8').read()
4665
+ @data['포스트설정']['막글'] = file_data
4666
+ end
4667
+ }
4668
+ }
4669
+ @data['포스트설정']['막글투명'] = checkbox('막글 안보이게 처리'){
4670
+ top 7
4671
+ left 0
4672
+ enabled false # 기본적으로 비활성화
4673
+ }
4674
+ @data['포스트설정']['막글그대로'] = checkbox('막글 그대로 입력'){
4675
+ top 7
4676
+ left 1
4677
+ enabled false # 기본적으로 비활성화
4678
+ }
4679
+
4680
+ @data['포스트설정']['태그삽입1'] = checkbox('태그삽입'){
4681
+ top 8
4682
+ left 0
4683
+ }
4684
+ @data['포스트설정']['태그삽입1시작숫자'] = entry{
4685
+ top 8
4686
+ left 1
4687
+ text '최소수량'
4688
+ }
4689
+ label('~'){
4690
+ top 8
4691
+ left 2
4692
+ }
4693
+ @data['포스트설정']['태그삽입1끝숫자'] = entry{
4694
+ top 8
4695
+ left 3
4696
+ text '최대수량'
4697
+ }
4698
+
4699
+ @data['포스트설정']['자동글 수식에 입력'] = checkbox('자동글 수식에 입력'){
4700
+ top 9
4701
+ left 0
4702
+ enabled false # 기본적으로 비활성화
4703
+ on_toggled {
4704
+ if @data['포스트설정']['자동글 수식에 입력'].checked?
4705
+ @data['포스트설정']['내용을자동생성'].checked = false
4706
+ @data['포스트설정']['내용투명'].checked = false
4707
+ end
4664
4708
  }
4709
+ }
4710
+
4711
+ @data['포스트설정']['막글 수식에 입력'] = checkbox('막글 수식에 입력'){
4712
+ top 9
4713
+ left 1
4714
+ enabled false # 기본적으로 비활성화
4715
+ }
4716
+
4717
+
4718
+
4719
+ @data['포스트설정']['전체공개'] = checkbox('전체공개'){
4720
+ top 10
4721
+ left 0
4722
+ on_toggled{
4723
+ if @data['포스트설정']['전체공개'].checked?
4724
+ if @data['포스트설정']['비공개'].checked? or @data['포스트설정']['서로이웃공개'].checked? or @data['포스트설정']['멤버공개'].checked?
4725
+ @data['포스트설정']['멤버공개'].checked = false
4726
+ @data['포스트설정']['서로이웃공개'].checked = false
4727
+ @data['포스트설정']['비공개'].checked = false
4728
+ end
4729
+ end
4730
+ }
4731
+ }
4732
+ @data['포스트설정']['멤버공개'] = checkbox('이웃공개'){
4733
+ top 10
4734
+ left 1
4735
+ on_toggled{
4736
+ if @data['포스트설정']['멤버공개'].checked?
4737
+ if @data['포스트설정']['전체공개'].checked? or @data['포스트설정']['서로이웃공개'].checked? or @data['포스트설정']['비공개'].checked?
4738
+ @data['포스트설정']['전체공개'].checked = false
4739
+ @data['포스트설정']['서로이웃공개'].checked = false
4740
+ @data['포스트설정']['비공개'].checked = false
4741
+ end
4742
+ end
4743
+ }
4744
+ }
4745
+ @data['포스트설정']['서로이웃공개'] = checkbox('서로이웃공개'){
4746
+ top 11
4747
+ left 0
4748
+ on_toggled{
4749
+ if @data['포스트설정']['서로이웃공개'].checked?
4750
+ if @data['포스트설정']['전체공개'].checked? or @data['포스트설정']['비공개'].checked? or @data['포스트설정']['멤버공개'].checked?
4751
+ @data['포스트설정']['전체공개'].checked = false
4752
+ @data['포스트설정']['비공개'].checked = false
4753
+ @data['포스트설정']['멤버공개'].checked = false
4754
+ end
4755
+ end
4756
+ }
4757
+ }
4758
+
4759
+ @data['포스트설정']['비공개'] = checkbox('비공개'){
4760
+ top 11
4761
+ left 1
4762
+ on_toggled{
4763
+ if @data['포스트설정']['비공개'].checked?
4764
+ if @data['포스트설정']['전체공개'].checked? or @data['포스트설정']['서로이웃공개'].checked? or @data['포스트설정']['멤버공개'].checked?
4765
+ @data['포스트설정']['전체공개'].checked = false
4766
+ @data['포스트설정']['서로이웃공개'].checked = false
4767
+ @data['포스트설정']['멤버공개'].checked = false
4768
+ end
4769
+ end
4770
+ }
4771
+ }
4772
+
4773
+
4774
+
4775
+ @data['포스트설정']['댓글허용'] = checkbox('댓글허용'){
4776
+ top 12
4777
+ left 0
4778
+ }
4779
+ @data['포스트설정']['블로그,카페 공유허용'] = checkbox('블로그,카페 공유허용'){
4780
+ top 12
4781
+ left 1
4782
+ }
4783
+ @data['포스트설정']['외부공유허용'] = checkbox('외부공유허용'){
4784
+ top 13
4785
+ left 0
4786
+ }
4787
+ @data['포스트설정']['검색허용'] = checkbox('검색허용'){
4788
+ top 13
4789
+ left 1
4790
+ }
4791
+ @data['포스트설정']['공감허용'] = checkbox('공감허용'){
4792
+ top 14
4793
+ left 0
4794
+ }
4795
+
4796
+ @data['포스트설정']['테더링'] = checkbox('테더링 IP 사용'){
4797
+ top 15
4798
+ left 0
4799
+ on_toggled{
4800
+ if @data['포스트설정']['테더링'].checked?
4801
+ @data['포스트설정']['프록시'].checked = false
4802
+
4803
+ end
4804
+ }
4805
+ }
4806
+ @data['포스트설정']['프록시'] = checkbox('프록시 IP 사용'){
4807
+ top 15
4808
+ left 1
4809
+ on_toggled{
4810
+ if @data['포스트설정']['프록시'].checked?
4811
+ @data['포스트설정']['테더링'].checked = false
4812
+
4813
+ end
4814
+ }
4815
+ }
4816
+ button('프록시 IP 파일 불러오기'){
4817
+ top 15
4818
+ left 3
4819
+ on_clicked{
4820
+ file = open_file
4821
+ if file != nil
4822
+ file_data = File.open(file,'r').read
4823
+ @data['포스트설정']['프록시리스트'] = file_data.split("\n")
4824
+ end
4825
+ }
4826
+ }
4827
+
4828
+ @data['포스트설정']['발행기능'] = checkbox('포스팅 글 [ 발행 ] 하기'){
4829
+ top 16
4830
+ left 0
4831
+ on_toggled{
4832
+ if @data['포스트설정']['발행기능'].checked?
4833
+ if @data['포스트설정']['저장기능'].checked?
4834
+ @data['포스트설정']['저장기능'].checked = false
4835
+
4836
+ end
4837
+ end
4838
+ }
4839
+ }
4840
+ @data['포스트설정']['저장기능'] = checkbox('포스팅 글 [ 저장 ] 하기'){
4841
+ top 16
4842
+ left 1
4843
+
4844
+ on_toggled{
4845
+ if @data['포스트설정']['저장기능'].checked?
4846
+ if @data['포스트설정']['발행기능'].checked?
4847
+ @data['포스트설정']['발행기능'].checked = false
4848
+
4849
+ end
4850
+ end
4665
4851
  }
4666
4852
  }
4667
4853
  }
4668
4854
  }
4855
+ }
4856
+ }
4669
4857
 
4670
4858
  horizontal_box{
4671
4859
  stretchy false