soonje_3 0.0.1

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