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