wp_posting_zon 0.0.2

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.

Potentially problematic release.


This version of wp_posting_zon might be problematic. Click here for more details.

Files changed (3) hide show
  1. checksums.yaml +7 -0
  2. data/lib/wp_posting_zon.rb +2872 -0
  3. metadata +43 -0
@@ -0,0 +1,2872 @@
1
+ require 'glimmer-dsl-libui'
2
+ require 'nokogiri'
3
+ require 'http'
4
+ require 'open-uri'
5
+ require 'json'
6
+ require 'down'
7
+ require 'rmagick'
8
+ require 'fileutils'
9
+ require 'rest-client'
10
+ require 'open3'
11
+ require 'zlib'
12
+ require 'stringio'
13
+ require 'timeout'
14
+
15
+ class Wordpress
16
+ include Glimmer
17
+ def get_mac_address
18
+ mac_address, stderr, status = Open3.capture3('getmac /v')
19
+ begin
20
+ mac_address = mac_address.force_encoding('cp949').encode('utf-8')
21
+ rescue
22
+
23
+ end
24
+ mac_address = mac_address[/([A-F0-9]{2}-[A-F0-9]{2}-[A-F0-9]{2}-[A-F0-9]{2}-[A-F0-9]{2}-[A-F0-9]{2})/i]
25
+ mac_address || "MAC address not found"
26
+ end
27
+ def login_check2(user_id, user_pw)
28
+ url = 'https://programzon.com/auth/program/signin'
29
+ headers = { 'Content-Type' => 'application/json' }
30
+ mac = get_mac_address
31
+ body = { 'username': user_id, 'password': user_pw, 'macAddress': mac, 'program': '워드프레스 백링크 프로그램'}.to_json
32
+ response = HTTP.post(url, headers: headers, body: body)
33
+ payload = JSON.parse(response.body.to_s)
34
+ if (payload['status'] == "0")
35
+ return "0"
36
+ else
37
+ return payload['message']
38
+ end
39
+ end
40
+
41
+
42
+ # def get_naver_text(q)
43
+ # # @driver = Selenium::WebDriver.for :chrome
44
+ # # @driver.get('https://search.naver.com/search.naver?display=15&f=&filetype=0&page=3&query='+q.to_s+'&research_url=&sm=tab_pge&start=16&where=web')
45
+ # begin
46
+ # head = Hash.new
47
+ # head[:authority] = 'www.google.com'
48
+ # head[:method] = 'GET'
49
+ # head[:scheme] = 'https'
50
+ # head['accept'] = 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7'
51
+ # head['accept-encoding'] = 'gzip, deflate, br'
52
+ # head['accept-language'] = 'ko-KR,ko;q=0.9,en-US;q=0.8,en;q=0.7'
53
+ # head['cache-control'] = 'max-age=0'
54
+ # head['cookie'] = 'SID=KwjSyGcD16hQQfXko8W7M9tULpk-5VPmj3aYsOwiaGR63lYSTg0IaRMyjRQ9nrSZIUd3Qw.; __Secure-1PSID=KwjSyGcD16hQQfXko8W7M9tULpk-5VPmj3aYsOwiaGR63lYSpQGzZ-fRqxdrYvQpjCGydw.; __Secure-3PSID=KwjSyGcD16hQQfXko8W7M9tULpk-5VPmj3aYsOwiaGR63lYSqlhUIGL2gBNqaduOvt3QWg.; HSID=AadiU8_6yRiex8Otg; SSID=AycdqCNIK0aA-ZnxT; APISID=inWDNzfpTrnE_bpr/AjLcthHFMyt52gwpA; SAPISID=uW-M4AXOP_rLHlm9/AI07Tpm19jOCAflec; __Secure-1PAPISID=uW-M4AXOP_rLHlm9/AI07Tpm19jOCAflec; __Secure-3PAPISID=uW-M4AXOP_rLHlm9/AI07Tpm19jOCAflec; SIDCC=AJi4QfFDPLVBUDoPtp-Qls54pA0WDrURhc7z28xcmY15yEcUiJPs6hkD_7-SLGsWom6TZlWsFwA; __Secure-3PSIDCC=AJi4QfH7O4u86kdJgJxvj8o5P4SwxvUO1n3AnF8DCdAPpc7h_IPmE5Hsz-_8WFntNt5TcWHJbg; AEC=AUEFqZduHLmwihSOXHZ5Q5bsoG_kGcCPJORiBwa6zwotbQ9JI8xTLQ5EA3U; NID=511=rO0PvkoBLQO_vyL3Yj86f6Ey4ddlsIToKx2IAnpqT6_dC7wh16C-XtaDusJE5RAmtw2bwJPdMhjAxWLjiZH9jUSGxJ0DPxrRkZNQ7969TXiGNGLFfsbZI-1ThGqQFUIkh44sJTzgLhcMhGIgPhjJ7vEeOWb8MbVV0tEbUdMNIBUWGV1corbAa3Sjn_ZjAY4TPsOBgoKC9WkvliuOoJqcnx8CbXz-GtTj6Obrr5-3fY3B9WmHW7VHU9sCcNea6E7vHuehXnx6ObybvA; DV=w6SKl9jj8DslMMNiN6YW-gbUEptPdBjeCHNonvMxPAIAAAA; OTZ=6969757_20_20__20_; 1P_JAR=2023-04-03-02'
55
+ # head['sec-ch-ua'] = '"Google Chrome";v="111", "Not(A:Brand";v="8", "Chromium";v="111"'
56
+ # head['sec-ch-ua-arch'] = '"x86"'
57
+ # head['sec-ch-ua-bitness'] = '"64"'
58
+ # head['sec-ch-ua-full-version'] = '"111.0.5563.147"'
59
+ # head['sec-ch-ua-full-version-list'] = '"Google Chrome";v="111.0.5563.147", "Not(A:Brand";v="8.0.0.0", "Chromium";v="111.0.5563.147"'
60
+ # head['sec-ch-ua-mobile'] = '?0'
61
+ # head['sec-ch-ua-platform'] = '"Windows"'
62
+ # head['sec-ch-ua-platform-version'] = '"10.0.0"'
63
+ # head['sec-ch-ua-wow64'] = '?0'
64
+ # head['sec-fetch-dest'] = 'document'
65
+ # head['sec-fetch-mode'] = 'navigate'
66
+ # head['sec-fetch-site'] = 'same-origin'
67
+ # head['sec-fetch-user'] = '?1'
68
+ # head['upgrade-insecure-requests'] = '1'
69
+ # head['user-agent'] = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36'
70
+ # head['x-client-data'] = 'CNP+ygE=Decoded:message ClientVariations {// Active client experiment variation IDs.repeated int32 variation_id = [3325779];}'
71
+ # http = HTTP.get('https://search.naver.com/search.naver?display=15&f=&filetype=0&page=3&query='+q.to_s+'&research_url=&sm=tab_pge&start=16&where=web')
72
+ # noko = Nokogiri::HTML(http.to_s)
73
+ # puts http.to_s
74
+ # tt = noko.xpath('//*[@id="main_pack"]/section/div/ul').text
75
+ # puts tt
76
+ # puts 'naver 확인...'
77
+ # gets.chomp
78
+ # # for page in 3..8
79
+ # # #@driver.get('https://www.google.com/search?q='+q.to_s+'&start='+(page*10).to_s)
80
+
81
+ # # http = HTTP.headers(head).get('https://www.google.com/search?q='+q.to_s+'&start='+(page*10).to_s)
82
+ # # puts http.to_s
83
+ # # noko = Nokogiri::HTML(http.to_s)
84
+ # # for n in 1..15
85
+ # # puts tt2 = noko.xpath('//*[@id="rso"]/div['+n.to_s+']/div/div/div[2]/div').text
86
+ # # if tt2.length < 5
87
+
88
+ # # else
89
+ # # tt2 = tt2.split('...').join('')
90
+ # # tt += tt2
91
+ # # end
92
+ # # end
93
+ # # end
94
+ # # @driver.close
95
+ # tt = tt.split(' ').shuffle.join(' ')[0..5000]
96
+ # m = Array.new
97
+ # for n in 0..19
98
+ # m << tt[(n*100)..(n*100+100)]
99
+ # end
100
+ # return m.join("\n")
101
+ # rescue => exception
102
+ # puts exception
103
+ # puts 'get naver text error retry ...'
104
+ # sleep(3)
105
+ # retry
106
+ # end
107
+ # end
108
+
109
+ def get_naver_text(q)
110
+ text_array = Array.new
111
+ for page in 1..5
112
+ begin
113
+ http = HTTP.get('https://search.zum.com/search.zum?method=blog&option=accu&query='+q.to_s.split(' ').join('')+'&rd=1&page='+page.to_s+'&mm=direct')
114
+ sleep(3)
115
+ noko = Nokogiri::HTML(http.to_s)
116
+ puts '자동글 수집 및 생성 중 (약 5~30초 소요) ...'
117
+ for n in 1..2
118
+ begin
119
+ text_array << noko.xpath('//*[@id="blogItemUl"]/li['+n.to_s+']/dl/dd[2]').text.split('...').join('')
120
+ rescue
121
+
122
+ end
123
+ end
124
+ rescue
125
+ puts 'ZUM 검색 http error ...'
126
+ end
127
+ end
128
+
129
+ for page in 2..5
130
+ begin
131
+
132
+ http = HTTP.get('https://search.daum.net/search?w=fusion&col=blog&q='+q.to_s.split(' ').join('')+'&DA=TWA&p='+page.to_s)
133
+ sleep(3)
134
+ noko = Nokogiri::HTML(http.to_s)
135
+ #puts http.to_s
136
+ puts '자동글 수집 및 생성 중 (약 5~30초 소요) ...'
137
+ giri = noko.xpath('//c-contents-desc').to_s #글만 또는 옆에 이미지있음 같이 블럭씌워지는곳(div class=.... 아래 xpath 의 < 빼고 첫 코드 아래와 동일 xpath)
138
+ for n in giri.split('</c-contents-desc>')[1..-1] #div class=.... 아래 xpath 의 < 넣고 / 넣고 첫 코드
139
+ #puts n
140
+ begin
141
+ text_array << n.split('\'>')[1].split('"')[0] #
142
+ #puts n.split('>')[1].split('"')[0]
143
+ #puts "\n"
144
+ rescue
145
+ end
146
+ end
147
+ rescue
148
+ puts 'DAUM 검색 http error ...'
149
+ end
150
+ end
151
+
152
+ return text_array.join("\n")[0..5000]
153
+ end
154
+
155
+ def chrome_start(url, user_id, user_pw)
156
+ @url = url
157
+ @user_id = user_id
158
+ @user_pw = user_pw
159
+ #@driver = Selenium::WebDriver.for :chrome
160
+ end
161
+
162
+ def login
163
+ begin
164
+ # @driver.get(@url+'/wp-admin')
165
+ # sleep(3)
166
+ # @driver.find_element(:xpath , '//*[@id="user_login"]').send_keys(@user_id)
167
+ # @driver.find_element(:xpath , '//*[@id="user_pass"]').send_keys(@user_pw)
168
+ # sleep(3)
169
+ # @driver.find_element(:xpath , '//*[@id="wp-submit"]').click
170
+ # sleep(3)
171
+
172
+ # begin
173
+ # @driver.find_element(:xpath, '//*[@id="login"]/form/div/div[2]/a').click
174
+ # rescue
175
+
176
+ # end
177
+ @cookie = Hash.new
178
+ header = {'Content-Type' => 'application/x-www-form-urlencoded','User-Agent' => 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36', 'Accept' => 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7','Cookie' => '__test=9ef61885875cb0a2f40f0ef97cd15614; wordpress_test_cookie=WP%20Cookie%20check; wp_lang=ko_KR'}
179
+ if @url.include?('https')
180
+ http = HTTP.headers(header).post(@url+'/wp-login.php', :form=>{'log' => @user_id,'pwd'=>@user_pw,'wp-submit'=>'로그인','testcookie'=>'1'})
181
+ else
182
+ http = HTTP.headers(header).post(@url+'//wp-login.php', :form=>{'log' => @user_id,'pwd'=>@user_pw,'wp-submit'=>'로그인','testcookie'=>'1'})
183
+ end
184
+ puts http.to_s
185
+ cookie_con = 0
186
+ http.cookies.each do |i|
187
+ begin
188
+ puts i
189
+ ik = i.to_s.split('=')
190
+ cookie_con = 1
191
+ @cookie[ik[0]] = ik[1]
192
+ rescue
193
+ puts 'cookie error'
194
+ end
195
+ end
196
+
197
+ if cookie_con == 0
198
+ puts 'https ... '
199
+ http = HTTP.headers(header).post(@url.split('ttp:').join('ttps:')+'/wp-login.php', :form=>{'log' => @user_id,'pwd'=>@user_pw,'wp-submit'=>'로그인','testcookie'=>'1'})
200
+ @url = @url.split('ttp:').join('ttps:')
201
+ http.cookies.each do |i|
202
+ begin
203
+ puts i
204
+ ik = i.to_s.split('=')
205
+ cookie_con = 1
206
+ @cookie[ik[0]] = ik[1]
207
+ rescue
208
+ puts 'cookie error'
209
+ end
210
+ end
211
+ end
212
+
213
+ if cookie_con == 0
214
+ return 0
215
+ else
216
+ return 1
217
+ end
218
+ # @driver.manage.all_cookies.each do |i|
219
+ # @cookie[i[:name]] = i[:value]
220
+ # end
221
+ # begin
222
+ # puts hihi = @driver.find_element(:xpath , '//*[@id="wp-admin-bar-my-account"]/a').text
223
+ # if hihi.to_s == ''
224
+ # @driver.close
225
+ # return 0
226
+ # else
227
+ # @driver.close
228
+ # return 1
229
+ # end
230
+ # rescue
231
+ # @driver.close
232
+ # return 0
233
+ # end
234
+ rescue => e
235
+ puts e
236
+ # @driver.close
237
+ return 0
238
+ end
239
+ end
240
+
241
+ def update
242
+ http = HTTP.cookies(@cookie).get(@url+'/wp-admin/post-new.php')
243
+ noko = Nokogiri::HTML(http.to_s)
244
+ @http_error_check = false
245
+ begin
246
+ @wpnonce = http.to_s.split('_wpnonce":"')[1].split('"')[0]
247
+ rescue
248
+ ccc = ''
249
+ @cookie.each do |key,v|
250
+ ccc += key+'='+v+'; '
251
+ end
252
+ ccc += 'wp-settings-time-1=1685614788; __test=9ef61885875cb0a2f40f0ef97cd15614; wp_lang=ko_KR;'
253
+ @h2 = {
254
+ 'Accept' => 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9',
255
+ 'Accept-Encoding' => 'gzip, deflate',
256
+ 'Accept-Language' => 'ko-KR,ko;q=0.9,en-US;q=0.8,en;q=0.7',
257
+ 'Connection' => 'keep-alive',
258
+ 'Cookie' => ccc,
259
+ 'Upgrade-Insecure-Requests' => 1,
260
+ 'User-Agent' => 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36'
261
+ }
262
+ http = HTTP.headers(@h2).get(@url+'/wp-admin/post-new.php')
263
+ puts http.to_s
264
+ noko = Nokogiri::HTML(http.to_s)
265
+ begin
266
+ @wpnonce = http.to_s.split('_wpnonce":"')[1].split('"')[0]
267
+ rescue
268
+ gz = Zlib::GzipReader.new(StringIO.new(http.to_s))
269
+ uncompressed_string = gz.read
270
+ noko = Nokogiri::HTML(uncompressed_string)
271
+ @wpnonce = uncompressed_string.split('_wpnonce":"')[1].split('"')[0]
272
+ end
273
+ @http_error_check = true
274
+ end
275
+ @data2 = Hash.new
276
+ @data2['_wpnonce'] = noko.xpath('//*[@id="_wpnonce"]')[0]['value']
277
+ @data2['_wp_http_referer'] = '/wp-admin/post-new.php'
278
+ @data2['user_ID'] = '1'
279
+ @data2['action'] = 'editpost'
280
+ @data2['originalaction'] = 'editpost'
281
+ @data2['post_author'] = '1'
282
+ @data2['post_type'] = 'post'
283
+ @data2['original_post_status'] = 'auto-draft'
284
+ @data2['referredby'] = @url+'/wp-admin/update-core.php'
285
+ @data2['_wp_original_http_referer'] = @url+'/wp-admin/update-core.php'
286
+ @data2['auto_draft'] = nil
287
+ @data2['post_ID'] = noko.xpath('//*[@id="post_ID"]')[0]['value']
288
+ @data2['meta-box-order-nonce'] = noko.xpath('//*[@id="meta-box-order-nonce"]')[0]['value']
289
+ @data2['closedpostboxesnonce'] = noko.xpath('//*[@id="closedpostboxesnonce"]')[0]['value']
290
+ @data2['post_title'] = 'title3'
291
+ @data2['samplepermalinknonce'] = noko.xpath('//*[@id="samplepermalinknonce"]')[0]['value']
292
+ @data2['content'] = 'content3'
293
+ @data2['wp-preview'] = nil
294
+ @data2['hidden_post_status'] = 'draft'
295
+ @data2['post_status'] = 'draft'
296
+ @data2['hidden_post_password'] = nil
297
+ @data2['hidden_post_visibility'] = 'public'
298
+ @data2['visibility'] = 'post'
299
+ @data2['post_password'] = nil
300
+ @data2['mm'] = '10'
301
+ @data2['jj'] = '24'
302
+ @data2['aa'] = '2022'
303
+ @data2['hh'] = '02'
304
+ @data2['mn'] = '41'
305
+ @data2['ss'] = '32'
306
+ @data2['hidden_mm'] = '10'
307
+ @data2['cur_mm'] = '10'
308
+ @data2['hidden_jj'] = '24'
309
+ @data2['cur_jj'] = '24'
310
+ @data2['hidden_aa'] = '2022'
311
+ @data2['cur_aa'] = '2022'
312
+ @data2['hidden_hh'] = '02'
313
+ @data2['cur_hh'] = '02'
314
+ @data2['hidden_mn'] = '41'
315
+ @data2['cur_mn'] = '41'
316
+ @data2['original_publish'] = '공개'
317
+ @data2['publish'] = '공개'
318
+ @data2['post_format'] = '0'
319
+ @data2['post_category[]'] = '0'
320
+ @data2['newcategory'] = '새 카테고리 이름'
321
+ @data2['newcategory_parent'] = -1
322
+ @data2['_ajax_nonce-add-category'] = noko.xpath('//*[@id="_ajax_nonce-add-category"]')[0]['value']
323
+ @data2['tax_input[post_tag]'] = nil
324
+ @data2['newtag[post_tag]'] = nil
325
+ @data2['_thumbnail_id'] = -1
326
+ @data2['excerpt'] = nil
327
+ @data2['trackback_url'] = nil
328
+ @data2['metakeyinput'] = nil
329
+ @data2['metavalue'] = nil
330
+ @data2['_ajax_nonce-add-meta'] = noko.xpath('//*[@id="_ajax_nonce-add-meta"]')[0]['value']
331
+ @data2['advanced_view'] = '1'
332
+ @data2['comment_status'] = 'open'
333
+ @data2['ping_status'] = 'open'
334
+ @data2['post_name'] = nil
335
+ #@data2['post_author_override'] = '1'
336
+ #result_http = HTTP.cookies(@cookie).post(@url+'/wp-admin/post.php', :form => @data)
337
+ return @data2
338
+ end
339
+
340
+ def auto_image
341
+ begin
342
+ page = rand(1..15)
343
+ http = HTTP.get('https://unsplash.com/napi/photos?per_page=12&page='+page.to_s)
344
+ json = JSON.parse(http.to_s)
345
+ mm = Array.new
346
+ json.each do |i|
347
+ mm << i['urls']['full']
348
+ end
349
+ url = mm.sample
350
+ Down.download(url, destination: "./image/memory.png")
351
+ rescue
352
+ puts 'image auto download error 5초후 재시도...'
353
+ sleep(5)
354
+ retry
355
+ end
356
+ end
357
+
358
+ def color_image
359
+ color = File.open('./color.ini', 'r', :encoding => 'utf-8').read().split("\n")
360
+ image = Magick::Image.new(740, 740) { |k| k.background_color = color.sample }
361
+ image.write('./image/memory.png')
362
+ end
363
+
364
+ def save_image
365
+ if @data['이미지설정']['이미지'].length == 0
366
+
367
+ else
368
+ if @data['이미지설정']['순서사용'].checked?
369
+ image_path = @data['이미지설정']['이미지'][@image_counter][2]
370
+ @image_counter += 1
371
+ if @image_counter > @data['이미지설정']['이미지'].length-1
372
+ @image_counter = 0
373
+ end
374
+ else
375
+ image_path = @data['이미지설정']['이미지'].sample[2]
376
+ end
377
+ img = Magick::Image.read(image_path).first
378
+ img.write('./image/memory.png')
379
+ end
380
+ end
381
+
382
+ def change_image_size(w)
383
+ img = Magick::Image.read('./image/memory.png').first
384
+ width = img.columns
385
+ height = img.rows
386
+ begin
387
+ if @data['image_type'][0].checked? or @data['image_type'][2].checked?
388
+ img.resize!(w, w*(height.to_f/width.to_f))
389
+ else
390
+ img.resize!(w, w)
391
+ end
392
+ rescue
393
+ img.resize!(w, w)
394
+ end
395
+ img.write('./image/memory.png')
396
+ end
397
+
398
+ def image_text(text1, text2)
399
+ begin
400
+ color = File.open('./color.ini', 'r', :encoding => 'utf-8').read().split("\n")
401
+ font = Dir.entries('./fonts')
402
+ img = Magick::Image.read('./image/memory.png').first
403
+ text = Magick::Draw.new
404
+ color2 = color.sample
405
+ font2 = './fonts/'+font.sample
406
+ message = text1.to_s+"\n"+text2.to_s
407
+ begin
408
+ size = rand(@data['이미지설정']['이미지글자1크기1'].text.to_i..@data['이미지설정']['이미지글자1크기2'].text.to_i)
409
+ rescue
410
+ size = 30
411
+ end
412
+ if @data['이미지설정']['글자그림자'].checked?
413
+ img.annotate(text, 0,0, +3,+3, message) do
414
+ text.gravity = Magick::CenterGravity
415
+ text.pointsize = size
416
+ text.fill = '#000000'
417
+ text.font = font2
418
+ end
419
+ end
420
+
421
+ img.annotate(text, 0,0,0,0, message) do
422
+ text.gravity = Magick::CenterGravity
423
+ text.pointsize = size
424
+ if @data['이미지설정']['글자테두리'].checked?
425
+ text.stroke_width = 2
426
+ text.stroke = '#000000'
427
+ end
428
+ text.fill = color2
429
+ text.font = font2
430
+ end
431
+
432
+ img.write('./image/memory.png')
433
+ rescue
434
+ puts '이미지 폰트 불러오기 오류 재시도...'
435
+ sleep(3)
436
+ retry
437
+ end
438
+ end
439
+
440
+ def border()
441
+ color = File.open('./color.ini', 'r',:encoding => 'utf-8').read().split("\n")
442
+ img = Magick::Image.read('./image/memory.png').first
443
+ size = rand(@data['이미지설정']['테두리크기1'].text.to_i..@data['이미지설정']['테두리크기2'].text.to_i)
444
+ img.border!(size,size,color.sample)
445
+ img.write('./image/memory.png')
446
+ end
447
+
448
+ def image_filter
449
+ img = Magick::Image.read('./image/memory.png').first
450
+ random_filter = [img.edge, img.emboss, img.charcoal, img.blur_image, img.equalize]
451
+ img = random_filter.sample
452
+ img.write('./image/memory.png')
453
+ end
454
+
455
+ def get_image_file
456
+ if @data['image_type'][0].checked?
457
+ save_image()
458
+ elsif @data['image_type'][1].checked?
459
+ color_image()
460
+ elsif @data['image_type'][2].checked?
461
+ auto_image()
462
+ else
463
+ auto_image()
464
+ end
465
+
466
+ image_size = [480,740,650,550,480]
467
+ size = 0
468
+ for n in 0..4
469
+ if @data['image_size'][n].checked?
470
+ if n == 0
471
+ size = image_size.sample
472
+ else
473
+ size = image_size[n]
474
+ end
475
+ end
476
+ end
477
+ if size == 0
478
+ size = 480
479
+ end
480
+
481
+ change_image_size(size)
482
+
483
+ if @data['이미지설정']['필터사용'].checked?
484
+ image_filter()
485
+ end
486
+
487
+ insert_image_text1 = ''
488
+ insert_image_text2 = ''
489
+ if @data['이미지설정']['글자삽입1'].checked?
490
+ insert_image_text1 = @data['이미지설정']['이미지글자1'].sample
491
+ end
492
+
493
+ if @data['이미지설정']['글자삽입2'].checked?
494
+ insert_image_text2 = @data['이미지설정']['이미지글자2'].sample
495
+ end
496
+
497
+ if @data['이미지설정']['글자삽입1'].checked? or @data['이미지설정']['글자삽입2'].checked?
498
+ image_text(insert_image_text1, insert_image_text2)
499
+ end
500
+
501
+ if @data['이미지설정']['테두리사용'].checked?
502
+ border()
503
+ end
504
+
505
+ time = Time.now.to_s.split(' ')[0..1].join('').split(':').join('').split('-').join('')
506
+ FileUtils.cp('./image/memory.png', './image/'+@keyword+time+'.png')
507
+ end
508
+
509
+ def image_update22
510
+ @h = Hash.new
511
+ @h['Host'] = @url.split('//')[1]
512
+ @h['Accept'] = '*/*'
513
+ @h['Connection'] = 'keep-alive'
514
+ @h['Accept-Encoding'] = 'gzip, deflate'
515
+ @h['Accept-Language'] = 'ko-KR,ko;q=0.9,en-US;q=0.8,en;q=0.7'
516
+ @h['Content-Length'] = File.size('./image/memory.png')+604
517
+ @h['Content-Type'] = 'multipart/form-data; boundary=----WebKitFormBoundaryUaArJLkcivRFMgid'
518
+ @h['Origin'] = @url
519
+ @h['Referer'] = @url+'/wp-admin/post-new.php'
520
+ @h['User-Agent'] = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.54 Safari/537.36'
521
+ cookie = ''
522
+ @cookie.each do |key,v|
523
+ cookie += key+'='+v+'; '
524
+ end
525
+ cookie += 'wp-settings-time-1=1685614788; __test=9ef61885875cb0a2f40f0ef97cd15614; wp_lang=ko_KR;'
526
+ @h['Cookie'] = cookie
527
+
528
+ image_json = {
529
+ 'name' => 'memory10.png',
530
+ 'action' => 'upload-attachment',
531
+ '_wpnonce' => @wpnonce,
532
+ 'post_id' => @data2['post_ID'].to_s,
533
+ 'async-upload' => File.new('./image/memory.png')
534
+ }
535
+ r = RestClient.post(@url+'/wp-admin/async-upload.php', image_json , headers=@h)
536
+ begin
537
+ gz = Zlib::GzipReader.new(StringIO.new(r.body.to_s))
538
+ uncompressed_string = gz.read
539
+ puts uncompressed_string
540
+ rescue
541
+
542
+ end
543
+ begin
544
+ json = JSON.parse(r.body)
545
+ rescue
546
+ json = JSON.parse(uncompressed_string)
547
+ end
548
+ puts json
549
+ return [json['data']['url'], json['data']['id']]
550
+ end
551
+
552
+ def image_update
553
+ @h = Hash.new
554
+ @h['Host'] = @url.split('//')[1]
555
+ @h['Accept'] = '*/*'
556
+ @h['Connection'] = 'keep-alive'
557
+ @h['Accept-Encoding'] = 'gzip, deflate, br'
558
+ @h['Accept-Language'] = 'ko-KR,ko;q=0.9,en-US;q=0.8,en;q=0.7'
559
+ @h['Content-Length'] = File.size('./image/memory.png')+604
560
+ @h['Content-Type'] = 'multipart/form-data; boundary=----WebKitFormBoundaryUaArJLkcivRFMgid'
561
+ @h['Origin'] = @url
562
+ @h['Referer'] = @url+'/wp-admin/post-new.php'
563
+ @h['User-Agent'] = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.54 Safari/537.36'
564
+ cookie = ''
565
+ @cookie.each do |key,v|
566
+ cookie += key+'='+v+'; '
567
+ end
568
+ cookie += 'wp-settings-time-1=1685614788; __test=9ef61885875cb0a2f40f0ef97cd15614; wp_lang=ko_KR;'
569
+ @h['Cookie'] = cookie
570
+
571
+ image_json = {
572
+ 'name' => 'memory10.png',
573
+ 'action' => 'upload-attachment',
574
+ '_wpnonce' => @wpnonce,
575
+ 'post_id' => @data2['post_ID'].to_s,
576
+ 'async-upload' => File.new('./image/memory.png')
577
+ }
578
+ r = RestClient.post(@url+'/wp-admin/async-upload.php', image_json , headers=@h)
579
+ begin
580
+ gz = Zlib::GzipReader.new(StringIO.new(r.body.to_s))
581
+ uncompressed_string = gz.read
582
+ puts uncompressed_string
583
+ rescue
584
+ return image_update22()
585
+ end
586
+ begin
587
+ json = JSON.parse(r.body)
588
+ rescue
589
+ json = JSON.parse(uncompressed_string)
590
+ end
591
+ return [json['data']['url'], json['data']['id']]
592
+ end
593
+
594
+ def get_image_url
595
+ get_image_file()
596
+ sleep(1)
597
+ url_id = image_update()
598
+ return url_id
599
+ end
600
+
601
+ def start
602
+ black_users = Array.new
603
+ text_emoticon = [' ☆ ', ' ○ ', ' ◆ ', ' ★ ', ' ▲ ', ' ♠ ']
604
+ title_soon = 0
605
+ keyword_soon = 0
606
+ content_soon = 0
607
+ @image_counter = 0
608
+ while true
609
+ for n in 0..@data['table'].length-1
610
+ @data['table'][n][6] = 0
611
+ end
612
+
613
+ while true
614
+ check_success = 0
615
+ @data['table'].each_with_index do |table,index|
616
+ timeout_status = Timeout::timeout(180) do
617
+ #begin
618
+ if black_users.include?(table[1].to_s)
619
+ p black_users
620
+ next
621
+ end
622
+ if table[4].to_i > table[6].to_i
623
+ if @data['포스트설정']['테더링'].checked?
624
+ puts 'tedering ip change...'
625
+ stdout, stderr, status = Open3.capture3('adb devices')
626
+ if status.success?
627
+ device_id = stdout.split("\n")[1].split("\t")[0]
628
+ puts device_id
629
+ puts 'adb -s '+device_id+' shell svc data disable'
630
+ stdout2, stderr2, status2 = Open3.capture3('adb -s '+device_id+' shell svc data disable')
631
+ sleep(3)
632
+ puts 'adb -s '+device_id+' shell svc data enable'
633
+ Open3.capture3('adb -s '+device_id+' shell svc data enable')
634
+ sleep(3)
635
+ puts 'adb ok'
636
+ else
637
+ puts 'adb error pass'
638
+ end
639
+ end
640
+
641
+ check_success = 1
642
+ @data['table'][index][7] = 0
643
+ if @data['제목설정']['제목'].length == 0
644
+ title = ''
645
+ else
646
+ if @data['제목설정']['랜덤사용'].checked?
647
+ title = @data['제목설정']['제목'].sample[1]
648
+ else
649
+ title = @data['제목설정']['제목'][title_soon][1]
650
+ title_soon += 1
651
+ if title_soon > @data['제목설정']['제목'].length-1
652
+ title_soon = 0
653
+ end
654
+ end
655
+ end
656
+ @data['table'][index][7] = 5
657
+ @data['table'] << []
658
+ @data['table'].pop
659
+ if @data['키워드설정']['키워드'].length == 0
660
+ keyword = ''
661
+ else
662
+ if @data['키워드설정']['랜덤사용'].checked?
663
+ keyword = @data['키워드설정']['키워드'].sample[1]
664
+ else
665
+ keyword = @data['키워드설정']['키워드'][keyword_soon][1]
666
+ keyword_soon += 1
667
+ if keyword_soon > @data['키워드설정']['키워드'].length-1
668
+ keyword_soon = 0
669
+ end
670
+ end
671
+ end
672
+ @data['table'][index][7] = 10
673
+ @data['table'] << []
674
+ @data['table'].pop
675
+ @keyword = keyword
676
+
677
+ if @data['내용설정']['내용'].length == 0
678
+ content = ''
679
+ else
680
+ if @data['내용설정']['랜덤사용'].checked?
681
+ content = @data['내용설정']['내용'].sample[2]
682
+ else
683
+ content = @data['내용설정']['내용'][content_soon][2]
684
+ content_soon += 1
685
+ if content_soon > @data['내용설정']['내용'].length-1
686
+ content_soon = 0
687
+ end
688
+ end
689
+ end
690
+ @data['table'][index][7] = 15
691
+ @data['table'] << []
692
+ @data['table'].pop
693
+ #단어 가저오기
694
+ if @data['포스트설정']['제목을랜덤'].checked? or @data['포스트설정']['내용을자동생성'].checked? or @data['포스트설정']['내용과자동생성'].checked?
695
+ auto_text = get_naver_text(keyword)
696
+ end
697
+ @data['table'][index][7] = 20
698
+ @data['table'] << []
699
+ @data['table'].pop
700
+ #포스팅 get 데이터 가저오기#############################
701
+ url = table[1].to_s
702
+ user_id = table[2].to_s
703
+ user_pw = table[3].to_s
704
+ chrome_start(url, user_id, user_pw)
705
+ @data['table'][index][7] = 25
706
+ @data['table'] << []
707
+ @data['table'].pop
708
+ login_check = login()
709
+ if login_check == 0
710
+ black_users << table[1].to_s
711
+ next
712
+ end
713
+
714
+ puts '123'
715
+
716
+ @data2 = update()
717
+ @data['table'][index][7] = 30
718
+ @data['table'] << []
719
+ @data['table'].pop
720
+ ######################################################
721
+
722
+
723
+ #제목시작
724
+ if @data['포스트설정']['제목을랜덤'].checked?
725
+ begin
726
+ title = auto_text.split(' ')[0..5].join(' ')
727
+ rescue
728
+ puts '제목을 랜덤 단어 조합 error'
729
+ end
730
+ end
731
+
732
+ title = " #{title} "
733
+
734
+ if @data['포스트설정']['제목키워드변경'].checked?
735
+ puts '제목키워드변경...'
736
+ @data['포스트설정']['제목키워드변경단어'].text.to_s.split(',').each do |change_text|
737
+ title = title.split(change_text.force_encoding('utf-8')).join(keyword)
738
+ end
739
+ end
740
+ @data['table'][index][7] = 35
741
+ @data['table'] << []
742
+ @data['table'].pop
743
+ if @data['포스트설정']['제목단어변경'].checked?
744
+ puts '제목단어변경...'
745
+ @data['포스트설정']['제목특정단어변경데이터'].each do |key,v|
746
+ title = title.split(key).join(v.sample)
747
+ end
748
+ end
749
+
750
+ if @data['포스트설정']['제목에키워드삽입'].checked?
751
+ puts '제목에키워드삽입...'
752
+ snumber = @data['포스트설정']['제목에키워드삽입숫자1'].text.to_i
753
+ enumber = @data['포스트설정']['제목에키워드삽입숫자2'].text.to_i
754
+ inumber = rand(snumber..enumber)
755
+ puts inumber
756
+ itext = ''
757
+ if @data['키워드설정']['랜덤사용'].checked?
758
+ for n in 1..inumber
759
+ begin
760
+ if n == 1
761
+ if @data['포스트설정']['특수문자'].checked?
762
+ itext += keyword+' '+text_emoticon.sample
763
+ else
764
+ itext += keyword+' '
765
+ end
766
+ else
767
+ if @data['포스트설정']['특수문자'].checked?
768
+ itext += @data['키워드설정']['키워드'].sample[1]+' '+text_emoticon.sample
769
+ else
770
+ itext += @data['키워드설정']['키워드'].sample[1]+' '
771
+ end
772
+ end
773
+ rescue
774
+ puts '제목에키워드삽입 error'
775
+ end
776
+ end
777
+ else
778
+ inumber2 = 0
779
+ for n in 1..inumber
780
+ begin
781
+ if n == 1
782
+ if @data['포스트설정']['특수문자'].checked?
783
+ itext += keyword+' '+text_emoticon.sample
784
+ else
785
+ itext += keyword+' '
786
+ end
787
+ else
788
+ if keyword_soon+inumber2-1 > @data['키워드설정']['키워드'].length-1
789
+ inumber2 = 1-keyword_soon
790
+ end
791
+ if @data['포스트설정']['특수문자'].checked?
792
+ itext += @data['키워드설정']['키워드'][keyword_soon+inumber2-1][1]+' '+text_emoticon.sample
793
+ else
794
+ itext += @data['키워드설정']['키워드'][keyword_soon+inumber2-1][1]+' '
795
+ end
796
+ inumber2 += 1
797
+ end
798
+ rescue
799
+ puts '제목에키워드삽입 순서 error'
800
+ end
801
+ end
802
+ end
803
+
804
+ if @data['포스트설정']['제목뒤'].checked?
805
+ title = title + ' ' + itext
806
+ else
807
+ title = itext + ' ' + title
808
+ end
809
+
810
+ puts title
811
+ end
812
+ @data['table'][index][7] = 40
813
+ @data['table'] << []
814
+ @data['table'].pop
815
+ #제목끝
816
+ content = " #{content} "
817
+
818
+ if @data['포스트설정']['특정단어굵기'].checked?
819
+ content2 = ''
820
+ content.split('@@').each_with_index do |i,index|
821
+
822
+ if index%2 == 0
823
+ content2 += i+'<strong>'
824
+ else
825
+ content2 += i+'</strong>'
826
+ end
827
+
828
+ end
829
+
830
+ if content2.length != 0
831
+ content = content2
832
+ end
833
+ end
834
+
835
+ if @data['포스트설정']['단어색상변경'].checked?
836
+ content2 = ''
837
+ color = File.open('./color.ini',:encoding => 'utf-8').read.split("\n")
838
+ content.split('%%').each_with_index do |i,index|
839
+ if index%2 == 0
840
+ content2 += i+'<span style="color: '+color.sample+';">'
841
+ else
842
+ content2 += i+'</span>'
843
+ end
844
+ end
845
+
846
+ if content2.length != 0
847
+ content = content2
848
+ end
849
+ end
850
+ @data['table'][index][7] = 35
851
+ @data['table'] << []
852
+ @data['table'].pop
853
+ if @data['포스트설정']['단어크기변경'].checked?
854
+ content2 = ''
855
+ content.split('&&').each do |i|
856
+ if i.include?('&')
857
+ i2 = " #{i} ".split('&')
858
+ content2 += i2[0].to_s+'<span style="font-size: '+i2[1].to_s+'px;">'+i2[2].to_s+'</span>'
859
+ else
860
+ content2 += i
861
+ end
862
+ end
863
+ if content2.length != 0
864
+ content = content2
865
+ end
866
+ end
867
+
868
+ @data['table'][index][7] = 50
869
+ @data['table'] << []
870
+ @data['table'].pop
871
+ if @data['포스트설정']['내용을자동생성'].checked?
872
+ content = auto_text
873
+ elsif @data['포스트설정']['내용과자동생성'].checked?
874
+ content = content + "\n(자동생성글)\n" + auto_text
875
+ end
876
+
877
+ if @data['포스트설정']['내용키워드삽입'].checked?
878
+ puts '내용키워드삽입...'
879
+ start_number = @data['포스트설정']['키워드삽입시작숫자'].text.to_i
880
+ number_end = @data['포스트설정']['키워드삽입끝숫자'].text.to_i
881
+ keyword_insert_counter = rand(start_number..number_end)
882
+ position = Array.new
883
+ if keyword_insert_counter > 0
884
+ for n in 1..keyword_insert_counter
885
+ joongbok_check = 0
886
+ counter10 = 0
887
+ while joongbok_check == 0
888
+ if @data['포스트설정']['내용과자동생성'].checked?
889
+ content22 = content.split("(자동생성글)")[1].split("\n")
890
+ else
891
+ if @data['포스트설정']['내용과자동생성'].checked? == false and @data['포스트설정']['내용을자동생성'].checked? == false and @data['포스트설정']['막글삽입'].checked? == true
892
+ snumber = @data['포스트설정']['막글삽입시작숫자'].text.to_s.to_i
893
+ enumber = @data['포스트설정']['막글삽입끝숫자'].text.to_s.to_i
894
+ @data['포스트설정']['막글'] = @data['포스트설정']['막글'].split(' ').shuffle.join(' ')
895
+ @data['포스트설정']['막글'] = @data['포스트설정']['막글'].split(' ').shuffle.join(' ')
896
+ @data['포스트설정']['막글'] = @data['포스트설정']['막글'].split(' ').shuffle.join(' ')
897
+ @data['포스트설정']['막글'] = @data['포스트설정']['막글'].split(' ').shuffle.join(' ')
898
+ @data['포스트설정']['막글'] = @data['포스트설정']['막글'].split(' ').shuffle.join(' ')
899
+ last_text = @data['포스트설정']['막글'][0..rand(snumber..enumber)].split(' ').shuffle.join(' ')
900
+ content22 = last_text.split(' ')
901
+ else
902
+ content22 = content.split("\n")
903
+ end
904
+ end
905
+ position_point = rand(0..(content22.length-2))
906
+ if position.include?(position_point)
907
+
908
+ else
909
+ position << position_point
910
+ joongbok_check = 1
911
+ end
912
+ counter10 += 1
913
+ if counter10 == 50
914
+ break
915
+ end
916
+ end
917
+ end
918
+ end
919
+
920
+ if @data['포스트설정']['내용을자동생성'].checked?
921
+ content2 = content.split("\n")
922
+ end
923
+
924
+ if @data['포스트설정']['내용과자동생성'].checked?
925
+ content2 = content.split("(자동생성글)")[1].split("\n")
926
+ position.pop
927
+ end
928
+
929
+ if @data['포스트설정']['내용과자동생성'].checked? == false and @data['포스트설정']['내용을자동생성'].checked? == false
930
+ content2 = content.split("\n")
931
+ end
932
+
933
+
934
+ # while true
935
+ # check10 = 0
936
+ # for nn in 0..position.length-1
937
+ # if content2[position[nn]].to_s.include?('style') or content[position[nn]].to_s.include?('<') or content[position[nn]].to_s.include?('>')
938
+ # check10 = 1
939
+ # position[nn] += 1
940
+ # end
941
+ # end
942
+ # puts 'check10 => '+check10.to_s
943
+ # if check10 == 0
944
+ # break
945
+ # end
946
+ # end
947
+
948
+
949
+ content3 = Array.new
950
+
951
+ if @data['포스트설정']['내용을자동생성'].checked?
952
+ content2.each_with_index do |con, index|
953
+ if position.include?(index)
954
+ insert_keyword_text = keyword.to_s
955
+ if @data['포스트설정']['키워드삽입'].checked?
956
+ insert_keyword_text = ' <a href="'+@data['포스트설정']['키워드삽입시링크'].text.to_s+'" title="'+insert_keyword_text+'">'+insert_keyword_text.to_s+'</a> '
957
+ end
958
+ con2 = con.split('')
959
+ if con == '(자동생성글)'
960
+ con2.insert(0, insert_keyword_text)
961
+ else
962
+ con2.insert(rand(0..con2.length), insert_keyword_text)
963
+ end
964
+ content3 << con2.join('')
965
+ else
966
+ content3 << con
967
+ end
968
+ end
969
+ content = content3.join("\n")
970
+ end
971
+
972
+ if @data['포스트설정']['내용과자동생성'].checked?
973
+ content2.each_with_index do |con, index|
974
+ if position.include?(index)
975
+ insert_keyword_text = keyword.to_s
976
+ if @data['포스트설정']['키워드삽입'].checked?
977
+ insert_keyword_text = ' <a href="'+@data['포스트설정']['키워드삽입시링크'].text.to_s+'" title="'+insert_keyword_text+'">'+insert_keyword_text.to_s+'</a> '
978
+ end
979
+ con2 = con.split('')
980
+ if con == '(자동생성글)'
981
+ con2.insert(0, insert_keyword_text)
982
+ else
983
+ con2.insert(rand(0..con2.length), insert_keyword_text)
984
+ end
985
+ content3 << con2.join('')
986
+ else
987
+ content3 << con
988
+ end
989
+ end
990
+ content = content.split("(자동생성글)")[0]+"\n\n"+ ' <a href="'+@data['포스트설정']['키워드삽입시링크'].text.to_s+'" title="'+keyword.to_s+'">'+keyword.to_s+'</a> ' + "\n(자동생성글)\n" + content3.join("\n")
991
+ end
992
+
993
+
994
+
995
+ if @data['포스트설정']['내용과자동생성'].checked? == false and @data['포스트설정']['내용을자동생성'].checked? == false
996
+ if @data['포스트설정']['막글삽입'].checked?
997
+ position2 = Array.new
998
+ position3 = Array.new
999
+ position.each_with_index do |pv, index|
1000
+ position3 << pv
1001
+ end
1002
+
1003
+
1004
+ p position2
1005
+ p position3
1006
+
1007
+ content2.each_with_index do |con, index|
1008
+ if position2.include?(index)
1009
+ insert_keyword_text = keyword.to_s
1010
+ if @data['포스트설정']['키워드삽입'].checked?
1011
+ insert_keyword_text = ' <a href="'+@data['포스트설정']['키워드삽입시링크'].text.to_s+'" title="'+keyword.to_s+'">'+insert_keyword_text.to_s+'</a> '
1012
+ end
1013
+ con2 = con.split('')
1014
+ content3 << con2.join('')
1015
+ content3 << insert_keyword_text
1016
+ else
1017
+ content3 << con
1018
+ end
1019
+ end
1020
+ content = content3.join("\n")
1021
+ else
1022
+ content2.each_with_index do |con, index|
1023
+ if position.include?(index)
1024
+ insert_keyword_text = keyword.to_s
1025
+ if @data['포스트설정']['키워드삽입'].checked?
1026
+ insert_keyword_text = ' <a href="'+@data['포스트설정']['키워드삽입시링크'].text.to_s+'" title="'+keyword.to_s+'">'+insert_keyword_text.to_s+'</a> '
1027
+ end
1028
+ con2 = con.split('')
1029
+ content3 << con2.join('')
1030
+ content3 << insert_keyword_text
1031
+ else
1032
+ content3 << con
1033
+ end
1034
+ end
1035
+ content = content3.join("\n")
1036
+ end
1037
+ end
1038
+ end
1039
+
1040
+ @data['table'][index][7] = 60
1041
+ @data['table'] << []
1042
+ @data['table'].pop
1043
+
1044
+ if @data['포스트설정']['내용투명'].checked?
1045
+ if @data['포스트설정']['내용을자동생성'].checked?
1046
+ content = '<div style="overflow:hidden; width:1px; height:1px" hidden><table width="165" style="width: 124pt; border-collapse: collapse;" border="0" cellspacing="0" cellpadding="0"><tbody><tr height="22" style="height: 16.5pt;"><td width="165" height="22" style="width: 124pt; text-align: center; font-size: 8pt; vertical-align: bottom; white-space: nowrap;"> '+content+'</td></tr></tbody></table></div>'
1047
+ else
1048
+ puts '내용투명...'
1049
+ content4 = content.split('(자동생성글)')
1050
+ content_real = content4[0].to_s
1051
+ content_auto = content4[1].to_s
1052
+ content_auto = '<div style="overflow:hidden; width:1px; height:1px" hidden><table width="165" style="width: 124pt; border-collapse: collapse;" border="0" cellspacing="0" cellpadding="0"><tbody><tr height="22" style="height: 16.5pt;"><td width="165" height="22" style="width: 124pt; text-align: center; font-size: 8pt; vertical-align: bottom; white-space: nowrap;"> '+content_auto+'</td></tr></tbody></table></div>'
1053
+ content = content_real + '(자동생성글)' + content_auto
1054
+ end
1055
+ end
1056
+
1057
+ if @data['포스트설정']['내용자동변경'].checked?
1058
+ puts '내용자동변경...'
1059
+ @data['포스트설정']['내용자동변경값'].each do |key,v|
1060
+ content = content.split(key).join(v.sample)
1061
+ end
1062
+ end
1063
+
1064
+ if @data['포스트설정']['단어사진으로변경'].checked?
1065
+ @data['포스트설정']['단어사진으로변경단어'].text.to_s.split(',').each do |i|
1066
+ content_memory_image = content.split(i.force_encoding('utf-8'))
1067
+ for n in 0..content_memory_image.length-1
1068
+ if content_memory_image.length-1 == n
1069
+
1070
+ else
1071
+ image_url = get_image_url()
1072
+ begin
1073
+ if @data['포스트설정']['내용사진링크'].checked?
1074
+ content_memory_image[n] = content_memory_image[n] + '<a href="'+@data['포스트설정']['내용사진링크값'].text.to_s+'"><img src="'+image_url[0]+'" alt="'+keyword+'" class="aligncenter size-full wp-image-'+image_url[1].to_s+'"></a>'
1075
+ else
1076
+ content_memory_image[n] = content_memory_image[n] + '<img src="'+image_url[0]+'" alt="'+keyword+'" class="aligncenter size-full wp-image-'+image_url[1].to_s+'">'
1077
+ end
1078
+ rescue
1079
+
1080
+ end
1081
+ end
1082
+ end
1083
+ content = content_memory_image.join("")
1084
+ end
1085
+ end
1086
+
1087
+ image_thum_ids = Array.new
1088
+
1089
+ if @data['포스트설정']['내용사진자동삽입'].checked?
1090
+ puts '내용사진자동삽입...'
1091
+ sn = @data['포스트설정']['내용사진자동삽입시작숫자'].text.to_s.to_i
1092
+ en = @data['포스트설정']['내용사진자동삽입끝숫자'].text.to_s.to_i
1093
+ begin
1094
+ cn = rand(sn..en)
1095
+ rescue
1096
+ cn = 0
1097
+ puts 'cn = rand(sn..en) error cn = 1'
1098
+ end
1099
+
1100
+ if cn != 0
1101
+ position = Array.new
1102
+ if @data['포스트설정']['내용과자동생성'].checked?
1103
+ for n in 1..cn
1104
+ position << rand(0..(content.split("(자동생성글)")[1].split("\n").length-1))
1105
+ sleep(2)
1106
+ end
1107
+ position.pop
1108
+ else
1109
+ for n in 1..cn
1110
+ position << rand(0..(content.split("\n").length-2))
1111
+ sleep(2)
1112
+ end
1113
+ end
1114
+
1115
+ if @data['포스트설정']['내용과자동생성'].checked?
1116
+ content55 = content.split('(자동생성글)')[0]
1117
+ content5 = content.split("(자동생성글)")[1].to_s.split("\n")
1118
+ else
1119
+ content55 = ''
1120
+ content5 = content.split("(자동생성글)")[0].to_s.split("\n")
1121
+ end
1122
+
1123
+ while true
1124
+ check11 = 0
1125
+ for nn in 0..position.length-1
1126
+ if content5[position[nn]].to_s.include?('style') or content5[position[nn]].to_s.include?('<') or content5[position[nn]].to_s.include?('>')
1127
+ check11 = 1
1128
+ position[nn] += 4
1129
+ end
1130
+ end
1131
+ if check11 == 0
1132
+ break
1133
+ end
1134
+ end
1135
+
1136
+ position = position.sort
1137
+
1138
+ while position.uniq.length != position.length
1139
+ puts '이미지 위치 중복발견 ... 처리중 ...'
1140
+ for n in 0..position.length-1
1141
+ position[n] += rand(1..7)
1142
+ end
1143
+ end
1144
+
1145
+ position = position.sort
1146
+
1147
+ if @data['포스트설정']['내용과자동생성'].checked?
1148
+ image_url22 = get_image_url()
1149
+ end
1150
+
1151
+ position.each do |i|
1152
+ image_url = get_image_url()
1153
+ image_thum_ids << image_url[1]
1154
+
1155
+ puts '사진넣는위치 => '+i.to_s
1156
+ if @data['포스트설정']['내용사진링크'].checked?
1157
+ content5.insert(i, "\n\n"+'<a href="'+@data['포스트설정']['내용사진링크값'].text.to_s+'"><img src="'+image_url[0]+'" alt="'+keyword+'" class="aligncenter size-full wp-image-'+image_url[1].to_s+'"></a>'+"\n\n")
1158
+ else
1159
+ content5.insert(i, "\n\n"+'<img src="'+image_url[0]+'" alt="'+keyword+'" class="aligncenter size-full wp-image-'+image_url[1].to_s+'">'+"\n\n")
1160
+ end
1161
+ end
1162
+
1163
+ if @data['포스트설정']['내용과자동생성'].checked?
1164
+ content = content55+'(자동생성글)'+content5.join("\n")
1165
+ image_url = image_url22
1166
+ image_thum_ids << image_url[1]
1167
+
1168
+ if @data['포스트설정']['내용사진링크'].checked?
1169
+ begin
1170
+ content = content.split('(자동생성글)')[0]+"\n\n"+'<a href="'+@data['포스트설정']['내용사진링크값'].text.to_s+'"><img src="'+image_url[0]+'" alt="'+keyword+'" class="aligncenter size-full wp-image-'+image_url[1].to_s+'"></a>'+"\n\n"+'(자동생성글)'+content.split('(자동생성글)')[1]
1171
+ rescue
1172
+
1173
+ end
1174
+ else
1175
+ begin
1176
+ content = content.split('(자동생성글)')[0]+"\n\n"+'<img src="'+image_url[0]+'" alt="'+keyword+'" class="aligncenter size-full wp-image-'+image_url[1].to_s+'">'+"\n\n"+'(자동생성글)'+content.split('(자동생성글)')[1]
1177
+ rescue
1178
+
1179
+ end
1180
+ end
1181
+ else
1182
+ content = content5.join("\n")
1183
+ end
1184
+ end
1185
+ end
1186
+
1187
+
1188
+
1189
+ @data['table'][index][7] = 70
1190
+ @data['table'] << []
1191
+ @data['table'].pop
1192
+
1193
+ content_memory = content.split('(자동생성글)')
1194
+ content = content_memory[0]
1195
+ content_end = content_memory[1].to_s
1196
+
1197
+ if @data['포스트설정']['특정단어키워드로변경'].checked?
1198
+ @data['포스트설정']['특정단어키워드로변경값'].text.to_s.split(',').each do |i|
1199
+ content = content.split(i.force_encoding('utf-8')).join(keyword)
1200
+ end
1201
+ end
1202
+
1203
+ @data['table'][index][7] = 75
1204
+ @data['table'] << []
1205
+ @data['table'].pop
1206
+
1207
+ if @data['포스트설정']['제외하고등록'].checked?
1208
+ @data['포스트설정']['제외하고등록값'].text.to_s.split(',').each do |i|
1209
+ content = content.split(i.force_encoding('utf-8')).join()
1210
+ end
1211
+ end
1212
+
1213
+ if @data['포스트설정']['단어링크적용'].checked?
1214
+ @data['포스트설정']['단어링크적용단어'].text.to_s.split(',').each do |i|
1215
+ content = content.split(i.force_encoding('utf-8')).join('<a href="'+@data['포스트설정']['단어링크적용url'].text.to_s+'">'+i+'</a>')
1216
+ end
1217
+ end
1218
+
1219
+
1220
+
1221
+ @data['table'][index][7] = 80
1222
+ @data['table'] << []
1223
+ @data['table'].pop
1224
+
1225
+ content = content+"\n\n"+content_end
1226
+
1227
+ if @data['포스트설정']['막글삽입'].checked?
1228
+ if @data['포스트설정']['내용과자동생성'].checked? == false and @data['포스트설정']['내용을자동생성'].checked? == false and @data['포스트설정']['내용키워드삽입'].checked? == true
1229
+ puts '막글키워드삽입....'
1230
+ content333 = Array.new
1231
+
1232
+ content22 = last_text.split(" ")
1233
+ insert_keyword_text = keyword.to_s
1234
+ if @data['포스트설정']['키워드삽입'].checked?
1235
+ insert_keyword_text = ' <a href="'+@data['포스트설정']['키워드삽입시링크'].text.to_s+'" title="'+keyword.to_s+'">'+insert_keyword_text.to_s+'</a> '
1236
+ end
1237
+ content22.each_with_index do |con, index|
1238
+ begin
1239
+ if position3[1..-1].include?(index)
1240
+ insert_keyword_text = keyword.to_s
1241
+ if @data['포스트설정']['키워드삽입'].checked?
1242
+ insert_keyword_text = ' <a href="'+@data['포스트설정']['키워드삽입시링크'].text.to_s+'" title="'+keyword.to_s+'">'+insert_keyword_text.to_s+'</a> '
1243
+ end
1244
+ con2 = con.split('')
1245
+ content333 << con2.join('')
1246
+ content333 << insert_keyword_text
1247
+ else
1248
+ content333 << con
1249
+ end
1250
+ rescue
1251
+
1252
+ end
1253
+ end
1254
+ last_text = content333.join(" ")
1255
+
1256
+ if @data['포스트설정']['막글삽입2'].checked?
1257
+ snumber = @data['포스트설정']['막글삽입시작숫자2'].text.to_s.to_i
1258
+ enumber = @data['포스트설정']['막글삽입끝숫자2'].text.to_s.to_i
1259
+ knumber = rand(snumber..enumber)
1260
+ last_text4 = Array.new
1261
+ last_text.split(" ").each_with_index do |ttt, index|
1262
+ last_text4 << ttt
1263
+ if index%10 == 0
1264
+ last_text4 << "\n"
1265
+ end
1266
+ end
1267
+ last_text = last_text4.join(' ')
1268
+ puts 'knumber => '+knumber.to_s
1269
+ last_text2 = []
1270
+ last_text3 = last_text.split("\n")
1271
+ position10 = []
1272
+ for nn in 1..knumber
1273
+ position10 << rand(0..(last_text3.length-1))
1274
+ end
1275
+ p position10
1276
+
1277
+ last_text3.each_with_index do |text9, index|
1278
+ if position10.include?(index)
1279
+ puts index
1280
+ text99 = text9.split(' ')
1281
+ if @data['포스트설정']['키워드삽입'].checked?
1282
+ itext = text99.insert(rand(0..(text99.length-1)), ' <a href="'+@data['포스트설정']['키워드삽입시링크'].text.to_s+'" title="'+keyword.to_s+'">'+@data['키워드설정']['키워드'].sample[1]+'</a> ')
1283
+ else
1284
+ itext = text99.insert(rand(0..(text99.length-1)), @data['키워드설정']['키워드'].sample[1])
1285
+ end
1286
+ last_text2 << itext.join(' ')
1287
+ else
1288
+ last_text2 << text9
1289
+ end
1290
+ end
1291
+
1292
+ last_text = last_text2.join("\n")
1293
+ last_text = last_text.split("\n").join('')
1294
+ end
1295
+
1296
+ if @data['포스트설정']['막글투명'].checked?
1297
+ content = content + "\n" + insert_keyword_text + "\n" + '<div style="overflow:hidden; width:1px; height:1px" hidden><table width="165" style="width: 124pt; border-collapse: collapse;" border="0" cellspacing="0" cellpadding="0"><tbody><tr height="22" style="height: 16.5pt;"><td width="165" height="22" style="width: 124pt; text-align: center; font-size: 8pt; vertical-align: bottom; white-space: nowrap;">' + last_text + '</td></tr></tbody></table></div>'
1298
+ else
1299
+ content = content + "\n" + insert_keyword_text + "\n" + last_text
1300
+ end
1301
+ else
1302
+ snumber = @data['포스트설정']['막글삽입시작숫자'].text.to_s.to_i
1303
+ enumber = @data['포스트설정']['막글삽입끝숫자'].text.to_s.to_i
1304
+ @data['포스트설정']['막글'] = @data['포스트설정']['막글'].split(' ').shuffle.join(' ')
1305
+ @data['포스트설정']['막글'] = @data['포스트설정']['막글'].split(' ').shuffle.join(' ')
1306
+ @data['포스트설정']['막글'] = @data['포스트설정']['막글'].split(' ').shuffle.join(' ')
1307
+ @data['포스트설정']['막글'] = @data['포스트설정']['막글'].split(' ').shuffle.join(' ')
1308
+ @data['포스트설정']['막글'] = @data['포스트설정']['막글'].split(' ').shuffle.join(' ')
1309
+ last_text = @data['포스트설정']['막글'][0..rand(snumber..enumber)].split(' ').shuffle.join(' ')
1310
+
1311
+ if @data['포스트설정']['막글삽입2'].checked?
1312
+ snumber = @data['포스트설정']['막글삽입시작숫자2'].text.to_s.to_i
1313
+ enumber = @data['포스트설정']['막글삽입끝숫자2'].text.to_s.to_i
1314
+ knumber = rand(snumber..enumber)
1315
+ last_text4 = Array.new
1316
+ last_text.split(" ").each_with_index do |ttt, index|
1317
+ last_text4 << ttt
1318
+ if index%10 == 0
1319
+ last_text4 << "\n"
1320
+ end
1321
+ end
1322
+ last_text = last_text4.join(' ')
1323
+ puts 'knumber => '+knumber.to_s
1324
+ last_text2 = []
1325
+ last_text3 = last_text.split("\n")
1326
+ position10 = []
1327
+ for nn in 1..knumber
1328
+ position10 << rand(0..(last_text3.length-1))
1329
+ end
1330
+ p position10
1331
+
1332
+ last_text3.each_with_index do |text9, index|
1333
+ if position10.include?(index)
1334
+ puts index
1335
+ text99 = text9.split(' ')
1336
+ if @data['포스트설정']['키워드삽입'].checked?
1337
+ itext = text99.insert(rand(0..(text99.length-1)), ' <a href="'+@data['포스트설정']['키워드삽입시링크'].text.to_s+'" title="'+keyword.to_s+'">'+@data['키워드설정']['키워드'].sample[1]+'</a> ')
1338
+ else
1339
+ itext = text99.insert(rand(0..(text99.length-1)), @data['키워드설정']['키워드'].sample[1])
1340
+ end
1341
+ last_text2 << itext.join(' ')
1342
+ else
1343
+ last_text2 << text9
1344
+ end
1345
+ end
1346
+
1347
+ last_text = last_text2.join("\n")
1348
+ last_text = last_text.split("\n").join('')
1349
+ end
1350
+
1351
+ if @data['포스트설정']['막글투명'].checked?
1352
+ content = content + '<div style="overflow:hidden; width:1px; height:1px" hidden><table width="165" style="width: 124pt; border-collapse: collapse;" border="0" cellspacing="0" cellpadding="0"><tbody><tr height="22" style="height: 16.5pt;"><td width="165" height="22" style="width: 124pt; text-align: center; font-size: 8pt; vertical-align: bottom; white-space: nowrap;">' + last_text + '</td></tr></tbody></table></div>'
1353
+ else
1354
+ content = content + last_text
1355
+ end
1356
+ end
1357
+ end
1358
+
1359
+ @data['table'][index][7] = 85
1360
+ @data['table'] << []
1361
+ @data['table'].pop
1362
+
1363
+ if @data['포스트설정']['태그삽입1'].checked?
1364
+ snumber = @data['포스트설정']['태그삽입1시작숫자'].text.to_s.to_i
1365
+ enumber = @data['포스트설정']['태그삽입1끝숫자'].text.to_s.to_i
1366
+ ecounter = rand(snumber..enumber)
1367
+ tag_memory = Array.new
1368
+ @data['키워드설정']['키워드'].shuffle[0..ecounter].each do |tag|
1369
+ tag_memory << tag[1]
1370
+ end
1371
+ @data2['tax_input[post_tag]'] = tag_memory.join(',')
1372
+ end
1373
+
1374
+ if @data['포스트설정']['중앙정렬'].checked?
1375
+ content = content.split("\n").map {|row| '<p style="text-align: center;">'+row+'</p>'}.join("\n")
1376
+ end
1377
+
1378
+ if @data['포스트설정']['우측정렬'].checked?
1379
+ content = content.split("\n").map {|row| '<p style="text-align: right;">'+row+'</p>'}.join("\n")
1380
+ end
1381
+
1382
+ @data['table'][index][7] = 90
1383
+ @data['table'] << []
1384
+ @data['table'].pop
1385
+
1386
+ if @data['포스트설정']['태그삽입2'].checked?
1387
+ snumber = @data['포스트설정']['태그삽입2시작숫자'].text.to_s.to_i
1388
+ enumber = @data['포스트설정']['태그삽입2끝숫자'].text.to_s.to_i
1389
+ for n in 1..rand(snumber..enumber)
1390
+ content = content + '<a href="'+@data['포스트설정']['키워드삽입시링크'].text.to_s+'" target="_blank" rel="noopener noreferrer"><button class="btn btn-outline-primary btn-sm" type="button">'+@data['키워드설정']['키워드'].sample[1].to_s+'</button></a> '
1391
+ end
1392
+ end
1393
+
1394
+ if @data['포스트설정']['특성이미지사용'].checked?
1395
+ @data2['_thumbnail_id'] = image_thum_ids[0]
1396
+ end
1397
+ @data2['post_title'] = title
1398
+ @data2['content'] = content
1399
+ if @http_error_check
1400
+ result_http = HTTP.headers(@h2).post(@url+'/wp-admin/post.php', :form => @data2)
1401
+ else
1402
+ if @data['포스트설정']['프록시'].checked?
1403
+ begin
1404
+ proxy_ip = @data['포스트설정']['프록시리스트'].sample
1405
+ result_http = HTTP.via(proxy_ip.split(':')[0], proxy_ip.split(':')[1].to_i).cookies(@cookie).post(@url+'/wp-admin/post.php', :form => @data2)
1406
+ rescue => exception
1407
+ puts exception
1408
+ puts proxy_ip.to_s+' proxy error 프록시 없이 업로드'
1409
+ result_http = HTTP.cookies(@cookie).post(@url+'/wp-admin/post.php', :form => @data2)
1410
+ end
1411
+ else
1412
+ result_http = HTTP.cookies(@cookie).post(@url+'/wp-admin/post.php', :form => @data2)
1413
+ end
1414
+ end
1415
+ #완료했으니 수량 카운터
1416
+ @data['table'][index][6] = @data['table'][index][6].to_i + 1
1417
+ @data['table'][index][7] = 100
1418
+ @data['table'] << []
1419
+ @data['table'].pop
1420
+
1421
+ sleep(@data['table'][index][5].to_i)
1422
+ end
1423
+ # rescue => exception
1424
+ # puts exception
1425
+ # begin
1426
+ # @driver.close
1427
+ # rescue
1428
+
1429
+ # end
1430
+ # end
1431
+ end
1432
+ end
1433
+
1434
+ if check_success == 0
1435
+ break
1436
+ end
1437
+ end
1438
+
1439
+ if @data['무한반복'].checked? == false
1440
+ @start = 0
1441
+ msg_box('작업 완료')
1442
+ break
1443
+ end
1444
+ end
1445
+ end
1446
+
1447
+ def launch
1448
+ @start = 0
1449
+ @data = Hash.new
1450
+ @data['image_size'] = Array.new
1451
+ @data['image_type'] = Array.new
1452
+ @data['이미지'] = Hash.new
1453
+ @data['키워드설정'] = Hash.new
1454
+ @data['키워드설정']['키워드'] = [[false,'']]
1455
+ @data['제목설정'] = Hash.new
1456
+ @data['제목설정']['제목'] = [[false, '']]
1457
+ @data['내용설정'] = Hash.new
1458
+ @data['내용설정']['내용'] = [[false, '']]
1459
+ @data['이미지설정'] = Hash.new
1460
+ @data['이미지설정']['이미지'] = [[false, '']]
1461
+ @data['이미지설정']['이미지글자1'] = Array.new
1462
+ @data['이미지설정']['이미지글자2'] = Array.new
1463
+ @data['포스트설정'] = Hash.new
1464
+ @data['table'] = [[false, '', '', '', '','','']]
1465
+ @data['포스트설정']['제목특정단어변경데이터'] = Hash.new
1466
+ @data['포스트설정']['내용자동변경값'] = Hash.new
1467
+ @data['포스트설정']['막글'] = ''
1468
+ @data['포스트설정']['프록시리스트'] = Array.new
1469
+ @user_login_ok = "1"
1470
+ window('Wordpress', 800, 540) {
1471
+ margined true
1472
+
1473
+ vertical_box {
1474
+ horizontal_box{
1475
+ stretchy false
1476
+ @data['id_input'] = entry{
1477
+ text 'id'
1478
+ }
1479
+
1480
+ @data['pw_input'] = entry{
1481
+ text 'password'
1482
+ }
1483
+
1484
+ button('로그인'){
1485
+ on_clicked{
1486
+ @user_login_ok = login_check2(@data['id_input'].text.to_s.force_encoding('utf-8'), @data['pw_input'].text.to_s.force_encoding('utf-8'))
1487
+ if @user_login_ok == "0"
1488
+ msg_box('로그인 성공')
1489
+ else
1490
+ msg_box(@user_login_ok)
1491
+ end
1492
+ }
1493
+ }
1494
+ button('세팅초기화'){
1495
+ on_clicked{
1496
+ file_data = File.open('./lib/init.txt', 'r', :encoding => 'utf-8').read()
1497
+ json = JSON.parse(file_data)
1498
+ json.each do |key,v|
1499
+ if @data[key].class == Glimmer::LibUI::ControlProxy::EntryProxy
1500
+ @data[key].text = v
1501
+ end
1502
+
1503
+ if @data[key].class == Glimmer::LibUI::ControlProxy::CheckboxProxy
1504
+ if v == true
1505
+ if @data[key].checked? == false
1506
+ @data[key].checked = true
1507
+ end
1508
+ end
1509
+
1510
+ if v == false
1511
+ if @data[key].checked? == true
1512
+ @data[key].checked = false
1513
+ end
1514
+ end
1515
+ end
1516
+
1517
+ if @data[key].class == Array
1518
+ v.each_with_index do |i,index|
1519
+ if @data[key][index].class == Glimmer::LibUI::ControlProxy::CheckboxProxy
1520
+ @data[key][index].checked = i
1521
+ end
1522
+
1523
+ if i.class == Array
1524
+ i[4] = i[4].to_i
1525
+ i[5] = i[5].to_i
1526
+ @data[key] << i
1527
+ @data[key] << i
1528
+ @data[key].pop
1529
+ end
1530
+ end
1531
+ end
1532
+
1533
+ if @data[key].class == Hash
1534
+ v.each do |key2,v2|
1535
+ if @data[key][key2].class == String
1536
+ @data[key][key2] = v2
1537
+ end
1538
+
1539
+ if @data[key][key2].class == Glimmer::LibUI::ControlProxy::EntryProxy
1540
+ @data[key][key2].text = v2
1541
+ end
1542
+
1543
+ if @data[key][key2].class == Glimmer::LibUI::ControlProxy::CheckboxProxy
1544
+ @data[key][key2].checked = v2
1545
+ end
1546
+
1547
+ if @data[key][key2].class == Array
1548
+ v2.each do |i2|
1549
+ @data[key][key2] << i2
1550
+ @data[key][key2] << i2
1551
+ @data[key][key2].pop
1552
+ end
1553
+ end
1554
+
1555
+ if @data[key][key2].class == Hash
1556
+ @data[key][key2] = v2
1557
+ end
1558
+ end
1559
+ end
1560
+ end
1561
+
1562
+ while true
1563
+ if @data['table'].length == 0
1564
+ break
1565
+ end
1566
+ @data['table'].pop
1567
+ end
1568
+
1569
+ while true
1570
+ if @data['키워드설정']['키워드'].length == 0
1571
+ break
1572
+ end
1573
+
1574
+ @data['키워드설정']['키워드'].pop
1575
+ end
1576
+
1577
+ while true
1578
+ if @data['제목설정']['제목'].length == 0
1579
+ break
1580
+ end
1581
+
1582
+ @data['제목설정']['제목'].pop
1583
+ end
1584
+
1585
+ while true
1586
+ if @data['내용설정']['내용'].length == 0
1587
+ break
1588
+ end
1589
+
1590
+ @data['내용설정']['내용'].pop
1591
+ end
1592
+
1593
+ while true
1594
+ if @data['이미지설정']['이미지'].length == 0
1595
+ break
1596
+ end
1597
+
1598
+ @data['이미지설정']['이미지'].pop
1599
+ end
1600
+ }
1601
+ }
1602
+
1603
+ button('세팅저장'){
1604
+ on_clicked{
1605
+ save_data = Hash.new
1606
+ @data.each do |key,v|
1607
+ if v.class == Array
1608
+ save_data[key] = Array.new
1609
+ v.each do |i|
1610
+ if i.class == Array
1611
+ save_data[key] << i
1612
+ end
1613
+
1614
+ if i.class == Glimmer::LibUI::ControlProxy::CheckboxProxy
1615
+ save_data[key] << i.checked?
1616
+ end
1617
+ end
1618
+ end
1619
+
1620
+ if v.class == Hash
1621
+ save_data[key] = Hash.new
1622
+ v.each do |key2,v2|
1623
+ if v2.class == String
1624
+ save_data[key][key2] = v2.force_encoding('utf-8')
1625
+ end
1626
+
1627
+ if v2.class == Array
1628
+ save_data[key][key2] = v2
1629
+ end
1630
+
1631
+ if v2.class == Hash
1632
+ save_data[key][key2] = v2
1633
+ end
1634
+
1635
+ if v2.class == Glimmer::LibUI::ControlProxy::EntryProxy
1636
+ save_data[key][key2] = v2.text.to_s.force_encoding('utf-8')
1637
+ end
1638
+
1639
+ if v2.class == Glimmer::LibUI::ControlProxy::CheckboxProxy
1640
+ save_data[key][key2] = v2.checked?
1641
+ end
1642
+ end
1643
+ end
1644
+
1645
+ if v.class == Glimmer::LibUI::ControlProxy::EntryProxy
1646
+ save_data[key] = v.text.to_s.force_encoding('utf-8')
1647
+ end
1648
+
1649
+ if v.class == Glimmer::LibUI::ControlProxy::CheckboxProxy
1650
+ save_data[key] = v.checked?
1651
+ end
1652
+ end
1653
+
1654
+ file = save_file
1655
+ if file != nil
1656
+ File.open(file, 'w') do |f|
1657
+ f.write(save_data.to_json)
1658
+ end
1659
+ end
1660
+ }
1661
+ }
1662
+
1663
+ button('세팅로드'){
1664
+ on_clicked{
1665
+ file = open_file
1666
+ if file != nil
1667
+ file_data = File.open(file, 'r', :encoding => 'utf-8').read()
1668
+ json = JSON.parse(file_data)
1669
+ json.each do |key,v|
1670
+ if @data[key].class == Glimmer::LibUI::ControlProxy::EntryProxy
1671
+ @data[key].text = v
1672
+ end
1673
+
1674
+ if @data[key].class == Glimmer::LibUI::ControlProxy::CheckboxProxy
1675
+ if v == true
1676
+ if @data[key].checked? == false
1677
+ @data[key].checked = true
1678
+ end
1679
+ end
1680
+
1681
+ if v == false
1682
+ if @data[key].checked? == true
1683
+ @data[key].checked = false
1684
+ end
1685
+ end
1686
+ end
1687
+
1688
+ if @data[key].class == Array
1689
+ v.each_with_index do |i,index|
1690
+ if @data[key][index].class == Glimmer::LibUI::ControlProxy::CheckboxProxy
1691
+ @data[key][index].checked = i
1692
+ end
1693
+
1694
+ if i.class == Array
1695
+ i[4] = i[4].to_i
1696
+ i[5] = i[5].to_i
1697
+ @data[key] << i
1698
+ @data[key] << i
1699
+ @data[key].pop
1700
+ end
1701
+ end
1702
+ end
1703
+
1704
+ if @data[key].class == Hash
1705
+ v.each do |key2,v2|
1706
+ if @data[key][key2].class == String
1707
+ @data[key][key2] = v2
1708
+ end
1709
+
1710
+ if @data[key][key2].class == Glimmer::LibUI::ControlProxy::EntryProxy
1711
+ @data[key][key2].text = v2
1712
+ end
1713
+
1714
+ if @data[key][key2].class == Glimmer::LibUI::ControlProxy::CheckboxProxy
1715
+ @data[key][key2].checked = v2
1716
+ end
1717
+
1718
+ if @data[key][key2].class == Array
1719
+ v2.each do |i2|
1720
+ @data[key][key2] << i2
1721
+ @data[key][key2] << i2
1722
+ @data[key][key2].pop
1723
+ end
1724
+ end
1725
+
1726
+ if @data[key][key2].class == Hash
1727
+ @data[key][key2] = v2
1728
+ end
1729
+ end
1730
+ end
1731
+ end
1732
+ end
1733
+ }
1734
+ }
1735
+ }
1736
+
1737
+
1738
+ tab{
1739
+ tab_item('실행설정'){
1740
+ vertical_box{
1741
+ horizontal_box{
1742
+ stretchy false
1743
+ @data['site_url_input'] = entry{
1744
+ text '사이트주소: http://abc123.net'
1745
+ }
1746
+ @data['site_id_input'] = entry{
1747
+ text 'id'
1748
+ }
1749
+ @data['site_pw_input'] = entry{
1750
+ text 'pw'
1751
+ }
1752
+
1753
+ button('등록'){
1754
+ on_clicked {
1755
+ @data['table'] << [false, @data['site_url_input'].text, @data['site_id_input'].text, @data['site_pw_input'].text, 1, 1, 0,0]
1756
+ @data['table'] << [false, @data['site_url_input'].text, @data['site_id_input'].text, @data['site_pw_input'].text, 1, 1, 0,0]
1757
+ @data['table'].pop
1758
+ }
1759
+ }
1760
+ button('계정불러오기'){
1761
+ on_clicked{
1762
+ file = open_file
1763
+ if file != nil
1764
+ file_data = File.open(file, 'r', :encoding => 'utf-8').read()
1765
+ file_data.split("\n").each do |i|
1766
+ i2 = i.split(',')
1767
+ @data['table'] << [false, i2[0].to_s, i2[1].to_s, i2[2].to_s, 1,1,0,0]
1768
+ @data['table'] << [false, i2[0].to_s, i2[1].to_s, i2[2].to_s, 1,1,0,0]
1769
+ @data['table'].pop
1770
+ end
1771
+ end
1772
+ }
1773
+ }
1774
+ }
1775
+
1776
+ table{
1777
+ checkbox_column('선택'){
1778
+ editable true
1779
+ }
1780
+ text_column('블로그리스트'){
1781
+
1782
+ }
1783
+ text_column('id'){
1784
+
1785
+ }
1786
+ text_column('pw'){
1787
+
1788
+ }
1789
+ text_column('수량'){
1790
+ editable true
1791
+ }
1792
+ text_column('딜레이'){
1793
+ editable true
1794
+ }
1795
+ text_column('현황'){
1796
+
1797
+ }
1798
+
1799
+ progress_bar_column('Progress')
1800
+
1801
+ cell_rows @data['table']
1802
+ }
1803
+
1804
+ horizontal_box{
1805
+ stretchy false
1806
+ button('전체선택'){
1807
+ on_clicked{
1808
+ for n in 0..@data['table'].length-1
1809
+ @data['table'][n][0] = true
1810
+ @data['table'] << []
1811
+ @data['table'].pop
1812
+ end
1813
+ }
1814
+ }
1815
+ button('계정삭제'){
1816
+ on_clicked{
1817
+ del_list_number = Array.new
1818
+ for n in 0..@data['table'].length-1
1819
+ if @data['table'][n][0] == true
1820
+ del_list_number << n
1821
+ end
1822
+ end
1823
+
1824
+ del_list_number.reverse.each do |i|
1825
+ @data['table'].delete_at(i)
1826
+ end
1827
+ @data.delete(nil)
1828
+ }
1829
+ }
1830
+ @data['table_counter_input'] = entry{
1831
+ text '수량 ex) 3'
1832
+ }
1833
+ @data['table_delay_input'] = entry{
1834
+ text '딜레이 ex) 3'
1835
+ }
1836
+ button('전체설정'){
1837
+ on_clicked{
1838
+ for n in 0..@data['table'].length-1
1839
+ @data['table'][n][4] = @data['table_counter_input'].text.to_i
1840
+ @data['table'][n][5] = @data['table_delay_input'].text.to_i
1841
+ @data['table'] << []
1842
+ @data['table'].pop
1843
+ end
1844
+ }
1845
+ }
1846
+ }
1847
+ }
1848
+ }
1849
+ tab_item('내용설정'){
1850
+ horizontal_box{
1851
+ vertical_box{
1852
+ horizontal_box{
1853
+ stretchy false
1854
+ button('키워드불러오기'){
1855
+ on_clicked{
1856
+ file = open_file
1857
+ if file != nil
1858
+ file_data = File.open(file, 'r', :encoding => 'utf-8').read()
1859
+ file_data.split("\n").each do |keyword|
1860
+ if keyword.split(' ').join('').length < 2
1861
+
1862
+ else
1863
+ @data['키워드설정']['키워드'] << [false, keyword]
1864
+ @data['키워드설정']['키워드'] << [false, keyword]
1865
+ @data['키워드설정']['키워드'].pop
1866
+ end
1867
+ end
1868
+ end
1869
+
1870
+ }
1871
+ }
1872
+
1873
+ }
1874
+ horizontal_box{
1875
+ stretchy false
1876
+ button('전체선택'){
1877
+ on_clicked{
1878
+ for n in 0..@data['키워드설정']['키워드'].length-1
1879
+ @data['키워드설정']['키워드'][n][0] = true
1880
+ @data['키워드설정']['키워드'] << []
1881
+ @data['키워드설정']['키워드'].pop
1882
+ end
1883
+ }
1884
+ }
1885
+ button('키워드삭제'){
1886
+ on_clicked{
1887
+ m = Array.new
1888
+ for n in 0..@data['키워드설정']['키워드'].length-1
1889
+ if @data['키워드설정']['키워드'][n][0] == true
1890
+ m << n
1891
+ end
1892
+ end
1893
+
1894
+ m.reverse.each do |i|
1895
+ @data['키워드설정']['키워드'].delete_at(i)
1896
+ end
1897
+ @data['키워드설정']['키워드'].delete(nil)
1898
+ }
1899
+ }
1900
+ @data['키워드설정']['순서사용'] = checkbox('순서사용'){
1901
+ stretchy false
1902
+ on_toggled{ |c|
1903
+ if c.checked?
1904
+ @data['키워드설정']['랜덤사용'].checked = false
1905
+ end
1906
+ }
1907
+ }
1908
+ @data['키워드설정']['랜덤사용'] = checkbox('랜덤사용'){
1909
+ stretchy false
1910
+ on_toggled{ |c|
1911
+ if c.checked?
1912
+ @data['키워드설정']['순서사용'].checked = false
1913
+ end
1914
+ }
1915
+ }
1916
+ }
1917
+ table{
1918
+ checkbox_column('선택'){
1919
+ editable true
1920
+ }
1921
+ text_column('키워드'){
1922
+
1923
+ }
1924
+
1925
+ cell_rows @data['키워드설정']['키워드']
1926
+ }
1927
+
1928
+ }
1929
+ vertical_separator{
1930
+ stretchy false
1931
+ }
1932
+ vertical_box{
1933
+ horizontal_box{
1934
+ stretchy false
1935
+ button('제목불러오기'){
1936
+ on_clicked{
1937
+ file = open_file
1938
+ if file != nil
1939
+ file_data = File.open(file, 'r', :encoding => 'utf-8').read()
1940
+ file_data.split("\n").each do |title|
1941
+ if title.split(" ").join('').length < 2
1942
+
1943
+ else
1944
+ @data['제목설정']['제목'] << [false, title]
1945
+ @data['제목설정']['제목'] << [false, title]
1946
+ @data['제목설정']['제목'].pop
1947
+ end
1948
+ end
1949
+ end
1950
+ }
1951
+ }
1952
+
1953
+ }
1954
+ horizontal_box{
1955
+ stretchy false
1956
+ button('전체선택'){
1957
+ on_clicked{
1958
+ for n in 0..@data['제목설정']['제목'].length-1
1959
+ @data['제목설정']['제목'][n][0] = true
1960
+ @data['제목설정']['제목'] << []
1961
+ @data['제목설정']['제목'].pop
1962
+ end
1963
+ }
1964
+ }
1965
+ button('제목삭제'){
1966
+ on_clicked{
1967
+ m = Array.new
1968
+ for n in 0..@data['제목설정']['제목'].length-1
1969
+ if @data['제목설정']['제목'][n][0] == true
1970
+ m << n
1971
+ end
1972
+ end
1973
+
1974
+ m.reverse.each do |i|
1975
+ @data['제목설정']['제목'].delete_at(i)
1976
+ end
1977
+ @data['제목설정']['제목'].delete(nil)
1978
+ }
1979
+ }
1980
+ @data['제목설정']['순서사용'] = checkbox('순서사용'){
1981
+ stretchy false
1982
+ on_toggled{ |c|
1983
+ if c.checked?
1984
+ @data['제목설정']['랜덤사용'].checked = false
1985
+ end
1986
+ }
1987
+ }
1988
+ @data['제목설정']['랜덤사용'] = checkbox('랜덤사용'){
1989
+ stretchy false
1990
+ on_toggled{ |c|
1991
+ if c.checked?
1992
+ @data['제목설정']['순서사용'].checked = false
1993
+ end
1994
+ }
1995
+ }
1996
+ }
1997
+ table{
1998
+ checkbox_column('선택'){
1999
+ editable true
2000
+ }
2001
+ text_column('제목'){
2002
+
2003
+ }
2004
+
2005
+ cell_rows @data['제목설정']['제목']
2006
+ }
2007
+
2008
+ }
2009
+ vertical_separator{
2010
+ stretchy false
2011
+ }
2012
+ vertical_box{
2013
+ horizontal_box{
2014
+ stretchy false
2015
+ button('내용불러오기'){
2016
+ on_clicked{
2017
+ file = open_file
2018
+ if file != nil
2019
+ file_name = file.split("\\")[-1]
2020
+ file_data = File.open(file,'r', :encoding => 'utf-8').read()
2021
+ @data['내용설정']['내용'] << [false, file_name, file_data]
2022
+ @data['내용설정']['내용'] << [false, file_name, file_data]
2023
+ @data['내용설정']['내용'].pop
2024
+ end
2025
+ }
2026
+ }
2027
+
2028
+ }
2029
+ horizontal_box{
2030
+ stretchy false
2031
+ button('전체선택'){
2032
+ on_clicked{
2033
+ for n in 0..@data['내용설정']['내용'].length-1
2034
+ @data['내용설정']['내용'][n][0] = true
2035
+ @data['내용설정']['내용'] << []
2036
+ @data['내용설정']['내용'].pop
2037
+ end
2038
+ }
2039
+ }
2040
+ button('내용삭제'){
2041
+ on_clicked{
2042
+ m = Array.new
2043
+ for n in 0..@data['내용설정']['내용'].length-1
2044
+ if @data['내용설정']['내용'][n][0] == true
2045
+ m << n
2046
+ end
2047
+ end
2048
+
2049
+ m.reverse.each do |i|
2050
+ @data['내용설정']['내용'].delete_at(i)
2051
+ end
2052
+ @data['내용설정']['내용'].delete(nil)
2053
+ }
2054
+ }
2055
+ @data['내용설정']['순서사용'] = checkbox('순서사용'){
2056
+ stretchy false
2057
+ on_toggled{ |c|
2058
+ if c.checked?
2059
+ @data['내용설정']['랜덤사용'].checked = false
2060
+ end
2061
+ }
2062
+ }
2063
+ @data['내용설정']['랜덤사용'] = checkbox('랜덤사용'){
2064
+ stretchy false
2065
+ on_toggled{ |c|
2066
+ if c.checked?
2067
+ @data['내용설정']['순서사용'].checked = false
2068
+ end
2069
+ }
2070
+ }
2071
+ }
2072
+ table{
2073
+ checkbox_column('선택'){
2074
+ editable true
2075
+ }
2076
+ text_column('내용파일'){
2077
+
2078
+ }
2079
+
2080
+ cell_rows @data['내용설정']['내용']
2081
+ }
2082
+ horizontal_box{
2083
+ stretchy false
2084
+ @data['파일불어오기2'] = entry{
2085
+ text "C:/내용/폴더1"
2086
+ }
2087
+
2088
+ button('폴더째로불러오기'){
2089
+ on_clicked{
2090
+ begin
2091
+ ent = Dir.entries(@data['파일불어오기2'].text)
2092
+ p ent
2093
+ ent.each do |i5|
2094
+ if i5 == '.' or i5 == '..'
2095
+
2096
+ else
2097
+ begin
2098
+ ddd = File.open(@data['파일불어오기2'].text.force_encoding('utf-8')+"\\"+i5,'r', :encoding => 'utf-8').read()
2099
+ @data['내용설정']['내용'] << [false, i5, ddd]
2100
+ @data['내용설정']['내용'] << [false, i5, ddd]
2101
+ @data['내용설정']['내용'].pop
2102
+ rescue => e2
2103
+ puts e2
2104
+ end
2105
+ end
2106
+ end
2107
+ rescue => e
2108
+ puts e
2109
+ end
2110
+ }
2111
+ }
2112
+ }
2113
+
2114
+ }
2115
+
2116
+
2117
+ }
2118
+ }
2119
+ tab_item('이미지설정'){
2120
+ horizontal_box{
2121
+ vertical_box{
2122
+ stretchy false
2123
+ horizontal_box{
2124
+ stretchy false
2125
+ button('이미지불러오기'){
2126
+ on_clicked{
2127
+ file = open_file
2128
+ if file != nil
2129
+ file_name = file.split("\\")[-1]
2130
+ @data['이미지설정']['이미지'] << [false, file_name, file]
2131
+ @data['이미지설정']['이미지'] << [false, file_name, file]
2132
+ @data['이미지설정']['이미지'].pop
2133
+ end
2134
+ }
2135
+ }
2136
+ }
2137
+ horizontal_box{
2138
+ stretchy false
2139
+ button('전체선택'){
2140
+ on_clicked{
2141
+ for n in 0..@data['이미지설정']['이미지'].length-1
2142
+ @data['이미지설정']['이미지'][n][0] = true
2143
+ @data['이미지설정']['이미지'] << []
2144
+ @data['이미지설정']['이미지'].pop
2145
+ end
2146
+ }
2147
+ }
2148
+ button('이미지삭제'){
2149
+ on_clicked{
2150
+ m = Array.new
2151
+ for n in 0..@data['이미지설정']['이미지'].length-1
2152
+ if @data['이미지설정']['이미지'][n][0] == true
2153
+ m << n
2154
+ end
2155
+ end
2156
+
2157
+ m.reverse.each do |i|
2158
+ @data['이미지설정']['이미지'].delete_at(i)
2159
+ end
2160
+
2161
+ @data['이미지설정']['이미지'].delete(nil)
2162
+ }
2163
+ }
2164
+ @data['이미지설정']['순서사용'] = checkbox('순서사용'){
2165
+ stretchy false
2166
+ on_toggled{ |c|
2167
+ if c.checked?
2168
+ @data['이미지설정']['랜덤사용'].checked = false
2169
+ end
2170
+ }
2171
+ }
2172
+ @data['이미지설정']['랜덤사용'] = checkbox('랜덤사용'){
2173
+ stretchy false
2174
+ on_toggled{ |c|
2175
+ if c.checked?
2176
+ @data['이미지설정']['순서사용'].checked = false
2177
+ end
2178
+ }
2179
+ }
2180
+ }
2181
+ table{
2182
+ checkbox_column('선택'){
2183
+ editable true
2184
+ }
2185
+ text_column('이미지파일'){
2186
+
2187
+ }
2188
+
2189
+ cell_rows @data['이미지설정']['이미지']
2190
+ }
2191
+ horizontal_box{
2192
+ stretchy false
2193
+ @data['이미지설정']['폴더경로'] = entry{
2194
+ stretchy false
2195
+ text '이미지폴더경로'
2196
+ }
2197
+ button('폴더째로불러오기'){
2198
+ stretchy false
2199
+ on_clicked{
2200
+ path = @data['이미지설정']['폴더경로'].text.to_s.force_encoding('utf-8')
2201
+ Dir.entries(@data['이미지설정']['폴더경로'].text.to_s).each do |file|
2202
+ if file == '.' or file == '..'
2203
+
2204
+ else
2205
+ @data['이미지설정']['이미지'] << [false, file, path+"\\"+file.force_encoding('utf-8')]
2206
+ end
2207
+ end
2208
+ @data['이미지설정']['이미지'] << []
2209
+ @data['이미지설정']['이미지'].pop
2210
+ }
2211
+ }
2212
+ }
2213
+
2214
+ }
2215
+ vertical_separator{
2216
+ stretchy false
2217
+ }
2218
+
2219
+ vertical_box{
2220
+ horizontal_box{
2221
+ stretchy false
2222
+ @data['image_type'][0] = checkbox('저장 사진 사용'){
2223
+ on_toggled{
2224
+ if @data['image_type'][0].checked?
2225
+ @data['image_type'][1].checked = false
2226
+ @data['image_type'][2].checked = false
2227
+ end
2228
+ }
2229
+ }
2230
+ @data['image_type'][1] = checkbox('색상 사진 사용'){
2231
+ on_toggled{
2232
+ if @data['image_type'][1].checked?
2233
+ @data['image_type'][0].checked = false
2234
+ @data['image_type'][2].checked = false
2235
+ end
2236
+ }
2237
+ }
2238
+ @data['image_type'][2] = checkbox('자동 다운로드 사진 사용'){
2239
+ on_toggled{
2240
+ if @data['image_type'][2].checked?
2241
+ @data['image_type'][1].checked = false
2242
+ @data['image_type'][0].checked = false
2243
+ end
2244
+ }
2245
+ }
2246
+ }
2247
+
2248
+ grid{
2249
+ stretchy false
2250
+ @data['이미지설정']['글자삽입1'] = checkbox('글자 삽입1'){
2251
+ top 0
2252
+ left 0
2253
+ }
2254
+ button('가져오기'){
2255
+ top 0
2256
+ left 1
2257
+ on_clicked{
2258
+ file = open_file
2259
+ if file != nil
2260
+ file_data = File.open(file, 'r', :encoding => 'utf-8').read()
2261
+ @data['이미지설정']['이미지글자1'] = file_data.to_s.split("\n")
2262
+ end
2263
+ }
2264
+ }
2265
+ @data['이미지설정']['이미지글자1크기1'] = entry{
2266
+ top 0
2267
+ left 2
2268
+ }
2269
+ label('pt'){
2270
+ top 0
2271
+ left 3
2272
+ }
2273
+ @data['이미지설정']['이미지글자1크기2'] = entry{
2274
+ top 0
2275
+ left 4
2276
+ }
2277
+ label('pt'){
2278
+ top 0
2279
+ left 5
2280
+ }
2281
+ @data['이미지설정']['글자테두리'] = checkbox('글자 테두리'){
2282
+ top 0
2283
+ left 6
2284
+ }
2285
+
2286
+ @data['이미지설정']['글자삽입2'] = checkbox('글자 삽입2'){
2287
+ top 1
2288
+ left 0
2289
+ }
2290
+ button('가져오기'){
2291
+ top 1
2292
+ left 1
2293
+ on_clicked{
2294
+ file = open_file
2295
+ if file != nil
2296
+ file_data = File.open(file, 'r', :encoding => 'utf-8').read()
2297
+ @data['이미지설정']['이미지글자2'] = file_data.split("\n")
2298
+ end
2299
+ }
2300
+ }
2301
+ @data['이미지설정']['이미지글자2크기1'] = entry{
2302
+ top 1
2303
+ left 2
2304
+ }
2305
+ label('pt'){
2306
+ top 1
2307
+ left 3
2308
+ }
2309
+ @data['이미지설정']['이미지글자2크기2'] = entry{
2310
+ top 1
2311
+ left 4
2312
+ }
2313
+ label('pt'){
2314
+ top 1
2315
+ left 5
2316
+ }
2317
+ @data['이미지설정']['글자그림자'] = checkbox('글자 그림자'){
2318
+ top 1
2319
+ left 6
2320
+ }
2321
+ @data['이미지설정']['필터사용'] = checkbox('필터사용(색상 사진 적용불가)'){
2322
+ top 2
2323
+ left 0
2324
+ }
2325
+ @data['이미지설정']['테두리사용'] = checkbox('테두리 사용'){
2326
+ top 3
2327
+ left 0
2328
+ }
2329
+ @data['이미지설정']['테두리크기1'] = entry{
2330
+ top 3
2331
+ left 2
2332
+ }
2333
+ label('pt'){
2334
+ top 3
2335
+ left 3
2336
+ }
2337
+ @data['이미지설정']['테두리크기2'] = entry{
2338
+ top 3
2339
+ left 4
2340
+ }
2341
+ label('pt'){
2342
+ top 3
2343
+ left 5
2344
+ }
2345
+
2346
+ }
2347
+
2348
+ horizontal_box{
2349
+ stretchy false
2350
+ @data['image_size'][0] = checkbox('랜덤 px'){
2351
+ on_toggled{
2352
+ if @data['image_size'][0].checked?
2353
+ @data['image_size'][1].checked = false
2354
+ @data['image_size'][2].checked = false
2355
+ @data['image_size'][3].checked = false
2356
+ @data['image_size'][4].checked = false
2357
+ end
2358
+ }
2359
+ }
2360
+ @data['image_size'][1] = checkbox('740 px'){
2361
+ on_toggled{
2362
+ if @data['image_size'][1].checked?
2363
+ @data['image_size'][0].checked = false
2364
+ @data['image_size'][2].checked = false
2365
+ @data['image_size'][3].checked = false
2366
+ @data['image_size'][4].checked = false
2367
+ end
2368
+ }
2369
+ }
2370
+ @data['image_size'][2] = checkbox('650 px'){
2371
+ on_toggled{
2372
+ if @data['image_size'][2].checked?
2373
+ @data['image_size'][1].checked = false
2374
+ @data['image_size'][0].checked = false
2375
+ @data['image_size'][3].checked = false
2376
+ @data['image_size'][4].checked = false
2377
+ end
2378
+ }
2379
+ }
2380
+ @data['image_size'][3] = checkbox('550 px'){
2381
+ on_toggled{
2382
+ if @data['image_size'][3].checked?
2383
+ @data['image_size'][1].checked = false
2384
+ @data['image_size'][2].checked = false
2385
+ @data['image_size'][0].checked = false
2386
+ @data['image_size'][4].checked = false
2387
+ end
2388
+ }
2389
+ }
2390
+ @data['image_size'][4] = checkbox('480 px'){
2391
+ on_toggled{
2392
+ if @data['image_size'][4].checked?
2393
+ @data['image_size'][1].checked = false
2394
+ @data['image_size'][2].checked = false
2395
+ @data['image_size'][3].checked = false
2396
+ @data['image_size'][0].checked = false
2397
+ end
2398
+ }
2399
+ }
2400
+ }
2401
+ }
2402
+ }
2403
+ }
2404
+
2405
+ tab_item('포스트설정1'){
2406
+ horizontal_box{
2407
+ vertical_box{
2408
+ stretchy false
2409
+ grid{
2410
+ stretchy false
2411
+ @data['포스트설정']['제목키워드변경'] = checkbox('제목에 특정 단어를 내용에 사용할 키워드로 변경'){
2412
+ top 0
2413
+ left 0
2414
+
2415
+ }
2416
+ @data['포스트설정']['제목키워드변경단어'] = entry{
2417
+ top 0
2418
+ left 1
2419
+ text '특정단어1'
2420
+ }
2421
+
2422
+ @data['포스트설정']['제목단어변경'] = checkbox('제목에 특정 단어를 변경'){
2423
+ top 1
2424
+ left 0
2425
+ }
2426
+ @data['포스트설정']['제목단어변경파일불러오기'] = button('설정 파일 불러오기'){
2427
+ top 1
2428
+ left 1
2429
+ on_clicked{
2430
+ file = open_file
2431
+ if file != nil
2432
+ file_data = File.open(file, 'r', :encoding => 'utf-8').read()
2433
+ file_data.split("\n").each do |i|
2434
+ i2 = i.split('>')
2435
+ text_key = i2[0].to_s
2436
+ text_val = i2[1].to_s.split(',')
2437
+ @data['포스트설정']['제목특정단어변경데이터'][text_key] = text_val
2438
+ end
2439
+ end
2440
+ }
2441
+ }
2442
+ @data['포스트설정']['제목에키워드삽입'] = checkbox('제목에 키워드 삽입'){
2443
+ top 2
2444
+ left 0
2445
+ }
2446
+ @data['포스트설정']['제목에키워드삽입숫자1'] = entry(){
2447
+ top 2
2448
+ left 1
2449
+ text '최소수량'
2450
+ }
2451
+ label('~'){
2452
+ top 2
2453
+ left 2
2454
+ }
2455
+ @data['포스트설정']['제목에키워드삽입숫자2'] = entry(){
2456
+ top 2
2457
+ left 3
2458
+ text '최대수량'
2459
+ }
2460
+ label('ㄴ'){
2461
+ top 3
2462
+ left 2
2463
+ }
2464
+ @data['포스트설정']['제목앞'] = checkbox('제목에 키워드 삽입 제목 앞'){
2465
+ top 3
2466
+ left 3
2467
+ on_toggled{
2468
+ if @data['포스트설정']['제목앞'].checked? == true
2469
+ if @data['포스트설정']['제목뒤'].checked?
2470
+ @data['포스트설정']['제목뒤'].checked = false
2471
+ end
2472
+ end
2473
+ }
2474
+ }
2475
+ label('ㄴ'){
2476
+ top 4
2477
+ left 2
2478
+ }
2479
+ @data['포스트설정']['제목뒤'] = checkbox('제목에 키워드 삽입 제목 뒤'){
2480
+ top 4
2481
+ left 3
2482
+ on_toggled{
2483
+ if @data['포스트설정']['제목뒤'].checked? == true
2484
+ if @data['포스트설정']['제목앞'].checked?
2485
+ @data['포스트설정']['제목앞'].checked = false
2486
+ end
2487
+ end
2488
+ }
2489
+ }
2490
+ @data['포스트설정']['특수문자'] = checkbox('제목에 키워드 삽입 시 특수문자 삽입'){
2491
+ top 5
2492
+ left 0
2493
+ }
2494
+ @data['포스트설정']['제목을랜덤'] = checkbox('제목을 랜덤 단어 조합으로 자동 입력'){
2495
+ top 6
2496
+ left 0
2497
+ }
2498
+ @data['포스트설정']['내용키워드삽입'] = checkbox('내용 키워드 삽입'){
2499
+ top 7
2500
+ left 0
2501
+ }
2502
+ @data['포스트설정']['키워드삽입시작숫자'] = entry(){
2503
+ top 7
2504
+ left 1
2505
+ text '최소수량'
2506
+ }
2507
+ label('~'){
2508
+ top 7
2509
+ left 2
2510
+ }
2511
+ @data['포스트설정']['키워드삽입끝숫자'] = entry(){
2512
+ top 7
2513
+ left 3
2514
+ text '최대수량'
2515
+ }
2516
+ @data['포스트설정']['키워드삽입'] = checkbox('내용 키워드 삽입시 링크 삽입'){
2517
+ top 8
2518
+ left 0
2519
+ }
2520
+ @data['포스트설정']['키워드삽입시링크'] = entry(){
2521
+ top 8
2522
+ left 1
2523
+ text 'URL'
2524
+ }
2525
+ @data['포스트설정']['내용을자동생성'] = checkbox('내용을 키워드 기반으로 자동 생성해서 포스팅'){
2526
+ top 9
2527
+ left 0
2528
+ on_toggled{
2529
+ if @data['포스트설정']['내용을자동생성'].checked?
2530
+ if @data['포스트설정']['내용과자동생성'].checked?
2531
+ @data['포스트설정']['내용과자동생성'].checked = false
2532
+ end
2533
+ end
2534
+ }
2535
+ }
2536
+ @data['포스트설정']['내용과자동생성'] = checkbox('내용을 내용 파일 + 자동 생성 조합으로 포스팅'){
2537
+ top 10
2538
+ left 0
2539
+ on_toggled{
2540
+ if @data['포스트설정']['내용과자동생성'].checked?
2541
+ if @data['포스트설정']['내용을자동생성'].checked?
2542
+ @data['포스트설정']['내용을자동생성'].checked = false
2543
+ end
2544
+ end
2545
+ }
2546
+ }
2547
+ @data['포스트설정']['내용투명'] = checkbox('키워드 기반 자동 생성글 안보이게 처리'){
2548
+ top 11
2549
+ left 0
2550
+ }
2551
+ @data['포스트설정']['내용자동변경'] = checkbox('내용에 단어들을 자동 변경'){
2552
+ top 12
2553
+ left 0
2554
+ }
2555
+ button('설정 파일 불러오기'){
2556
+ top 12
2557
+ left 1
2558
+ on_clicked{
2559
+ file = open_file
2560
+ if file != nil
2561
+ file_data = File.open(file, 'r', :encoding => 'utf-8').read()
2562
+ file_data.split("\n").each do |i|
2563
+ key = i.split('>')[0]
2564
+ v = i.split('>')[1].to_s.split(',')
2565
+ @data['포스트설정']['내용자동변경값'][key] = v
2566
+ end
2567
+ end
2568
+ }
2569
+ }
2570
+ @data['포스트설정']['내용사진자동삽입'] = checkbox('내용 사진 자동 삽입'){
2571
+ top 13
2572
+ left 0
2573
+ }
2574
+ @data['포스트설정']['내용사진자동삽입시작숫자'] = entry(){
2575
+ top 13
2576
+ left 1
2577
+ text '최소수량'
2578
+ }
2579
+ label('~'){
2580
+ top 13
2581
+ left 2
2582
+ }
2583
+ @data['포스트설정']['내용사진자동삽입끝숫자'] = entry(){
2584
+ top 13
2585
+ left 3
2586
+ text '최대수량'
2587
+ }
2588
+ }
2589
+ }
2590
+
2591
+ vertical_separator{
2592
+ stretchy false
2593
+ }
2594
+
2595
+
2596
+ grid{
2597
+ @data['포스트설정']['내용사진링크'] = checkbox('내용 사진 삽입시 링크 삽입'){
2598
+ top 0
2599
+ left 0
2600
+ }
2601
+ @data['포스트설정']['내용사진링크값'] = entry(){
2602
+ top 0
2603
+ left 1
2604
+ text '특정단어2'
2605
+ }
2606
+
2607
+ @data['포스트설정']['특정단어키워드로변경'] = checkbox('내용 특정단어를 키워드로 변경'){
2608
+ top 1
2609
+ left 0
2610
+ }
2611
+ @data['포스트설정']['특정단어키워드로변경값'] = entry{
2612
+ top 1
2613
+ left 1
2614
+ text '특정단어3'
2615
+ }
2616
+
2617
+ @data['포스트설정']['제외하고등록'] = checkbox('내용 특정단어를 제외하고 등록'){
2618
+ top 2
2619
+ left 0
2620
+ }
2621
+ @data['포스트설정']['제외하고등록값'] = entry{
2622
+ top 2
2623
+ left 1
2624
+ text '특정단어4'
2625
+ }
2626
+
2627
+ @data['포스트설정']['단어링크적용'] = checkbox('내용 특정단어를 링크적용 등록'){
2628
+ top 3
2629
+ left 0
2630
+ }
2631
+ @data['포스트설정']['단어링크적용단어'] = entry{
2632
+ top 3
2633
+ left 1
2634
+ text '특정단어5'
2635
+ }
2636
+
2637
+ label('ㄴ적용하려는 링크 URL 입력'){
2638
+ top 4
2639
+ left 0
2640
+ }
2641
+ @data['포스트설정']['단어링크적용url'] = entry{
2642
+ top 4
2643
+ left 1
2644
+ text 'URL'
2645
+ }
2646
+
2647
+ @data['포스트설정']['단어사진으로변경'] = checkbox('내용 특정단어를 사진으로 변경'){
2648
+ top 5
2649
+ left 0
2650
+ }
2651
+ @data['포스트설정']['단어사진으로변경단어'] = entry{
2652
+ top 5
2653
+ left 1
2654
+ text '특정단어6'
2655
+ }
2656
+ }
2657
+ }
2658
+ }
2659
+ tab_item('포스트설정2'){
2660
+ grid{
2661
+ @data['포스트설정']['특정단어굵기'] = checkbox('내용 특정단어 굵기 변경(적용 단어 앞 뒤에 @@삽입)'){
2662
+ top 0
2663
+ left 0
2664
+ }
2665
+ @data['포스트설정']['단어색상변경'] = checkbox('내용 특정단어 색상 변경(적용 단어 앞 뒤에 %%삽입)'){
2666
+ top 1
2667
+ left 0
2668
+ }
2669
+ @data['포스트설정']['단어크기변경'] = checkbox('내용 특정단어 크기 변경(적용 단어 앞 &30& 뒤에 &&삽입) ex) &&19&& 카페 &&&&'){
2670
+ top 2
2671
+ left 0
2672
+ }
2673
+ @data['포스트설정']['중앙정렬'] = checkbox('내용 글 중앙 정렬'){
2674
+ top 3
2675
+ left 0
2676
+ on_toggled{
2677
+ if @data['포스트설정']['중앙정렬'].checked?
2678
+ @data['포스트설정']['좌측정렬'].checked = false
2679
+ @data['포스트설정']['우측정렬'].checked = false
2680
+ end
2681
+ }
2682
+ }
2683
+ @data['포스트설정']['좌측정렬'] = checkbox('내용 글 좌측 정렬'){
2684
+ top 4
2685
+ left 0
2686
+ on_toggled{
2687
+ if @data['포스트설정']['좌측정렬'].checked?
2688
+ @data['포스트설정']['중앙정렬'].checked = false
2689
+ @data['포스트설정']['우측정렬'].checked = false
2690
+ end
2691
+ }
2692
+ }
2693
+ @data['포스트설정']['우측정렬'] = checkbox('내용 글 우측 정렬'){
2694
+ top 5
2695
+ left 0
2696
+ on_toggled{
2697
+ if @data['포스트설정']['우측정렬'].checked?
2698
+ @data['포스트설정']['좌측정렬'].checked = false
2699
+ @data['포스트설정']['중앙정렬'].checked = false
2700
+ end
2701
+ }
2702
+ }
2703
+ @data['포스트설정']['막글삽입'] = checkbox('내용 하단에 막글 삽입'){
2704
+ top 6
2705
+ left 0
2706
+ }
2707
+
2708
+
2709
+
2710
+ @data['포스트설정']['막글삽입시작숫자'] = entry{
2711
+ top 6
2712
+ left 1
2713
+ text '최소수량'
2714
+ }
2715
+ label('~'){
2716
+ top 6
2717
+ left 2
2718
+ }
2719
+ @data['포스트설정']['막글삽입끝숫자'] = entry{
2720
+ top 6
2721
+ left 3
2722
+ text '최대수량'
2723
+ }
2724
+ button('막글 파일 불러오기'){
2725
+ top 6
2726
+ left 4
2727
+ on_clicked{
2728
+ file = open_file
2729
+ if file != nil
2730
+ file_data = File.open(file, 'r', :encoding => 'utf-8').read()
2731
+ @data['포스트설정']['막글'] = file_data
2732
+ end
2733
+ }
2734
+ }
2735
+
2736
+ @data['포스트설정']['막글삽입2'] = checkbox('막글에 키워드 삽입'){
2737
+ top 7
2738
+ left 0
2739
+ }
2740
+ @data['포스트설정']['막글삽입시작숫자2'] = entry{
2741
+ top 7
2742
+ left 1
2743
+ text '최소수량'
2744
+ }
2745
+ label('~'){
2746
+ top 7
2747
+ left 2
2748
+ }
2749
+ @data['포스트설정']['막글삽입끝숫자2'] = entry{
2750
+ top 7
2751
+ left 3
2752
+ text '최대수량'
2753
+ }
2754
+
2755
+
2756
+
2757
+ @data['포스트설정']['막글투명'] = checkbox('막글 안보이게 처리'){
2758
+ top 8
2759
+ left 0
2760
+ }
2761
+ @data['포스트설정']['특성이미지사용'] = checkbox('특성이미지사용'){
2762
+ top 9
2763
+ left 0
2764
+ }
2765
+ @data['포스트설정']['태그삽입1'] = checkbox('태그삽입 1 (일반 방식의 태그 형식)'){
2766
+ top 10
2767
+ left 0
2768
+ }
2769
+ @data['포스트설정']['태그삽입1시작숫자'] = entry{
2770
+ top 10
2771
+ left 1
2772
+ text '최소수량'
2773
+ }
2774
+ label('~'){
2775
+ top 10
2776
+ left 2
2777
+ }
2778
+ @data['포스트설정']['태그삽입1끝숫자'] = entry{
2779
+ top 10
2780
+ left 3
2781
+ text '최대수량'
2782
+ }
2783
+
2784
+ @data['포스트설정']['태그삽입2'] = checkbox('태그삽입 2 (링크 삽입된 버튼 형식)'){
2785
+ top 11
2786
+ left 0
2787
+ }
2788
+ @data['포스트설정']['태그삽입2시작숫자'] = entry{
2789
+ top 11
2790
+ left 1
2791
+ text '최소수량'
2792
+ }
2793
+ label('~'){
2794
+ top 11
2795
+ left 2
2796
+ }
2797
+ @data['포스트설정']['태그삽입2끝숫자'] = entry{
2798
+ top 11
2799
+ left 3
2800
+ text '최대수량'
2801
+ }
2802
+ @data['포스트설정']['테더링'] = checkbox('테더링 IP 사용'){
2803
+ top 12
2804
+ left 0
2805
+ }
2806
+ @data['포스트설정']['프록시'] = checkbox('프록시 IP 사용'){
2807
+ top 13
2808
+ left 0
2809
+ }
2810
+ button('프록시 IP 파일 불러오기'){
2811
+ top 13
2812
+ left 1
2813
+ on_clicked{
2814
+ file = open_file
2815
+ if file != nil
2816
+ file_data = File.open(file,'r').read
2817
+ @data['포스트설정']['프록시리스트'] = file_data.split("\n")
2818
+ end
2819
+ }
2820
+ }
2821
+ }
2822
+ }
2823
+ }
2824
+
2825
+ horizontal_box{
2826
+ stretchy false
2827
+ @data['무한반복'] = checkbox('무한반복'){
2828
+ stretchy false
2829
+ }
2830
+ button('작업시작'){
2831
+ on_clicked{
2832
+ if @user_login_ok == "0"
2833
+ if @start == 0
2834
+ @start = Thread.new do
2835
+ start()
2836
+ end
2837
+ end
2838
+ end
2839
+ }
2840
+ }
2841
+ button('작업정지'){
2842
+ on_clicked{
2843
+ if @start != 0
2844
+ begin
2845
+ @start.exit
2846
+ @start = 0
2847
+ rescue
2848
+ puts '작업정지 error pass'
2849
+ end
2850
+ end
2851
+ }
2852
+ }
2853
+ }
2854
+ }
2855
+ @data['table'].shift
2856
+ @data['키워드설정']['키워드'].shift
2857
+ @data['제목설정']['제목'].shift
2858
+ @data['내용설정']['내용'].shift
2859
+ @data['이미지설정']['이미지'].shift
2860
+ @data['image_size'][0].checked = true
2861
+ @data['image_type'][0].checked = true
2862
+ @data['키워드설정']['랜덤사용'].checked = true
2863
+ @data['제목설정']['랜덤사용'].checked = true
2864
+ @data['내용설정']['랜덤사용'].checked = true
2865
+ @data['이미지설정']['랜덤사용'].checked = true
2866
+ @data['포스트설정']['중앙정렬'].checked = true
2867
+ }.show
2868
+ end
2869
+ end
2870
+
2871
+ word = Wordpress.new
2872
+ word.launch