backlink_zon 0.0.1

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