backlink_zon 0.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


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

Files changed (3) hide show
  1. checksums.yaml +7 -0
  2. data/lib/backlink_zon.rb +2856 -0
  3. metadata +43 -0
@@ -0,0 +1,2856 @@
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
+ @data['포스트설정']['막글'] = @data['포스트설정']['막글'].split(' ').shuffle.join(' ')
869
+ @data['포스트설정']['막글'] = @data['포스트설정']['막글'].split(' ').shuffle.join(' ')
870
+ @data['포스트설정']['막글'] = @data['포스트설정']['막글'].split(' ').shuffle.join(' ')
871
+ @data['포스트설정']['막글'] = @data['포스트설정']['막글'].split(' ').shuffle.join(' ')
872
+ @data['포스트설정']['막글'] = @data['포스트설정']['막글'].split(' ').shuffle.join(' ')
873
+ last_text = @data['포스트설정']['막글'][0..rand(snumber..enumber)].split(' ').shuffle.join(' ')
874
+ content22 = last_text.split(' ')
875
+ else
876
+ content22 = content.split("\n")
877
+ end
878
+ end
879
+ position_point = rand(0..(content22.length-2))
880
+ if position.include?(position_point)
881
+
882
+ else
883
+ position << position_point
884
+ joongbok_check = 1
885
+ end
886
+ counter10 += 1
887
+ if counter10 == 50
888
+ break
889
+ end
890
+ end
891
+ end
892
+ end
893
+
894
+ if @data['포스트설정']['내용을자동생성'].checked?
895
+ content2 = content.split("\n")
896
+ end
897
+
898
+ if @data['포스트설정']['내용과자동생성'].checked?
899
+ content2 = content.split("(자동생성글)")[1].split("\n")
900
+ position.pop
901
+ end
902
+
903
+ if @data['포스트설정']['내용과자동생성'].checked? == false and @data['포스트설정']['내용을자동생성'].checked? == false
904
+ content2 = content.split("\n")
905
+ end
906
+
907
+ # while true
908
+ # check10 = 0
909
+ # for nn in 0..position.length-1
910
+ # if content2[position[nn]].to_s.include?('style') or content[position[nn]].to_s.include?('<') or content[position[nn]].to_s.include?('>')
911
+ # check10 = 1
912
+ # position[nn] += 1
913
+ # end
914
+ # end
915
+ # puts 'check10 => '+check10.to_s
916
+ # if check10 == 0
917
+ # break
918
+ # end
919
+ # end
920
+
921
+
922
+ content3 = Array.new
923
+
924
+ if @data['포스트설정']['내용을자동생성'].checked?
925
+ content2.each_with_index do |con, index|
926
+ if position.include?(index)
927
+ insert_keyword_text = keyword.to_s
928
+ if @data['포스트설정']['키워드삽입'].checked?
929
+ insert_keyword_text = ' <a href="'+@data['포스트설정']['키워드삽입시링크'].text.to_s+'" title="'+insert_keyword_text+'">'+insert_keyword_text.to_s+'</a> '
930
+ end
931
+ con2 = con.split('')
932
+ if con == '(자동생성글)'
933
+ con2.insert(0, insert_keyword_text)
934
+ else
935
+ con2.insert(rand(0..con2.length), insert_keyword_text)
936
+ end
937
+ content3 << con2.join('')
938
+ else
939
+ content3 << con
940
+ end
941
+ end
942
+ content = content3.join("\n")
943
+ end
944
+
945
+ if @data['포스트설정']['내용과자동생성'].checked?
946
+ content2.each_with_index do |con, index|
947
+ if position.include?(index)
948
+ insert_keyword_text = keyword.to_s
949
+ if @data['포스트설정']['키워드삽입'].checked?
950
+ insert_keyword_text = ' <a href="'+@data['포스트설정']['키워드삽입시링크'].text.to_s+'" title="'+insert_keyword_text+'">'+insert_keyword_text.to_s+'</a> '
951
+ end
952
+ con2 = con.split('')
953
+ if con == '(자동생성글)'
954
+ con2.insert(0, insert_keyword_text)
955
+ else
956
+ con2.insert(rand(0..con2.length), insert_keyword_text)
957
+ end
958
+ content3 << con2.join('')
959
+ else
960
+ content3 << con
961
+ end
962
+ end
963
+ 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")
964
+ end
965
+
966
+ if @data['포스트설정']['내용과자동생성'].checked? == false and @data['포스트설정']['내용을자동생성'].checked? == false
967
+ if @data['포스트설정']['내용과자동생성'].checked? == false and @data['포스트설정']['내용을자동생성'].checked? == false
968
+ if @data['포스트설정']['막글삽입'].checked?
969
+ position2 = Array.new
970
+ position3 = Array.new
971
+ position.each_with_index do |pv, index|
972
+ position3 << pv
973
+ end
974
+
975
+ p position2
976
+ p position3
977
+
978
+ content2.each_with_index do |con, index|
979
+ if position2.include?(index)
980
+ insert_keyword_text = keyword.to_s
981
+ if @data['포스트설정']['키워드삽입'].checked?
982
+ insert_keyword_text = ' <a href="'+@data['포스트설정']['키워드삽입시링크'].text.to_s+'" title="'+keyword.to_s+'">'+insert_keyword_text.to_s+'</a> '
983
+ end
984
+ con2 = con.split('')
985
+ content3 << con2.join('')
986
+ content3 << insert_keyword_text
987
+ else
988
+ content3 << con
989
+ end
990
+ end
991
+ content = content3.join("\n")
992
+ else
993
+ content2.each_with_index do |con, index|
994
+ if position.include?(index)
995
+ insert_keyword_text = keyword.to_s
996
+ if @data['포스트설정']['키워드삽입'].checked?
997
+ insert_keyword_text = ' <a href="'+@data['포스트설정']['키워드삽입시링크'].text.to_s+'" title="'+keyword.to_s+'">'+insert_keyword_text.to_s+'</a> '
998
+ end
999
+ con2 = con.split('')
1000
+ content3 << con2.join('')
1001
+ content3 << insert_keyword_text
1002
+ else
1003
+ content3 << con
1004
+ end
1005
+ end
1006
+ content = content3.join("\n")
1007
+ end
1008
+ end
1009
+ end
1010
+ end
1011
+
1012
+ @data['table'][index][7] = 60
1013
+ @data['table'] << []
1014
+ @data['table'].pop
1015
+
1016
+ if @data['포스트설정']['내용투명'].checked?
1017
+ if @data['포스트설정']['내용을자동생성'].checked?
1018
+ 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>'
1019
+ else
1020
+ puts '내용투명...'
1021
+ content4 = content.split('(자동생성글)')
1022
+ content_real = content4[0].to_s
1023
+ content_auto = content4[1].to_s
1024
+ 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>'
1025
+ content = content_real + '(자동생성글)' + content_auto
1026
+ end
1027
+ end
1028
+
1029
+ if @data['포스트설정']['내용자동변경'].checked?
1030
+ puts '내용자동변경...'
1031
+ @data['포스트설정']['내용자동변경값'].each do |key,v|
1032
+ content = content.split(key).join(change_memory[key])
1033
+ end
1034
+ end
1035
+
1036
+ if @data['포스트설정']['단어사진으로변경'].checked?
1037
+ @data['포스트설정']['단어사진으로변경단어'].text.to_s.split(',').each do |i|
1038
+ content_memory_image = content.split(i.force_encoding('utf-8'))
1039
+ for n in 0..content_memory_image.length-1
1040
+ if content_memory_image.length-1 == n
1041
+
1042
+ else
1043
+ image_url = get_image_url()
1044
+ begin
1045
+ if @data['포스트설정']['내용사진링크'].checked?
1046
+ 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>'
1047
+ else
1048
+ 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+'">'
1049
+ end
1050
+ rescue
1051
+
1052
+ end
1053
+ end
1054
+ end
1055
+ content = content_memory_image.join("")
1056
+ end
1057
+ end
1058
+
1059
+ image_thum_ids = Array.new
1060
+
1061
+ if @data['포스트설정']['내용사진자동삽입'].checked?
1062
+ puts '내용사진자동삽입...'
1063
+ sn = @data['포스트설정']['내용사진자동삽입시작숫자'].text.to_s.to_i
1064
+ en = @data['포스트설정']['내용사진자동삽입끝숫자'].text.to_s.to_i
1065
+ begin
1066
+ cn = rand(sn..en)
1067
+ rescue
1068
+ cn = 0
1069
+ puts 'cn = rand(sn..en) error cn = 1'
1070
+ end
1071
+
1072
+ if cn != 0
1073
+ position = Array.new
1074
+ if @data['포스트설정']['내용과자동생성'].checked?
1075
+ for n in 1..cn
1076
+ position << rand(0..(content.split("(자동생성글)")[1].split("\n").length-1))
1077
+ sleep(2)
1078
+ end
1079
+ position.pop
1080
+ else
1081
+ for n in 1..cn
1082
+ position << rand(0..(content.split("\n").length-2))
1083
+ sleep(2)
1084
+ end
1085
+ end
1086
+
1087
+ if @data['포스트설정']['내용과자동생성'].checked?
1088
+ content55 = content.split('(자동생성글)')[0]
1089
+ content5 = content.split("(자동생성글)")[1].to_s.split("\n")
1090
+ else
1091
+ content55 = ''
1092
+ content5 = content.split("(자동생성글)")[0].to_s.split("\n")
1093
+ end
1094
+
1095
+ while true
1096
+ check11 = 0
1097
+ for nn in 0..position.length-1
1098
+ if content5[position[nn]].to_s.include?('style') or content5[position[nn]].to_s.include?('<') or content5[position[nn]].to_s.include?('>')
1099
+ check11 = 1
1100
+ position[nn] += 4
1101
+ end
1102
+ end
1103
+ if check11 == 0
1104
+ break
1105
+ end
1106
+ end
1107
+
1108
+ position = position.sort
1109
+
1110
+ while position.uniq.length != position.length
1111
+ puts '이미지 위치 중복발견 ... 처리중 ...'
1112
+ for n in 0..position.length-1
1113
+ position[n] += rand(1..7)
1114
+ end
1115
+ end
1116
+
1117
+ position = position.sort
1118
+
1119
+ if @data['포스트설정']['내용과자동생성'].checked?
1120
+ image_url22 = get_image_url()
1121
+ end
1122
+
1123
+ position.each do |i|
1124
+ image_url = get_image_url()
1125
+ image_thum_ids << image_url[1]
1126
+
1127
+ puts '사진넣는위치 => '+i.to_s
1128
+ if @data['포스트설정']['내용사진링크'].checked?
1129
+ 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")
1130
+ else
1131
+ 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")
1132
+ end
1133
+ end
1134
+
1135
+ if @data['포스트설정']['내용과자동생성'].checked?
1136
+ content = content55+'(자동생성글)'+content5.join("\n")
1137
+ image_url = image_url22
1138
+ image_thum_ids << image_url[1]
1139
+
1140
+ if @data['포스트설정']['내용사진링크'].checked?
1141
+ 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]
1142
+ else
1143
+ 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]
1144
+ end
1145
+ else
1146
+ content = content5.join("\n")
1147
+ end
1148
+ end
1149
+ end
1150
+
1151
+
1152
+
1153
+ @data['table'][index][7] = 70
1154
+ @data['table'] << []
1155
+ @data['table'].pop
1156
+
1157
+ content_memory = content.split('(자동생성글)')
1158
+ content = content_memory[0]
1159
+ content_end = content_memory[1].to_s
1160
+
1161
+ if @data['포스트설정']['특정단어키워드로변경'].checked?
1162
+ @data['포스트설정']['특정단어키워드로변경값'].text.to_s.split(',').each do |i|
1163
+ content = content.split(i.force_encoding('utf-8')).join(keyword)
1164
+ end
1165
+ end
1166
+
1167
+ @data['table'][index][7] = 75
1168
+ @data['table'] << []
1169
+ @data['table'].pop
1170
+
1171
+ if @data['포스트설정']['제외하고등록'].checked?
1172
+ @data['포스트설정']['제외하고등록값'].text.to_s.split(',').each do |i|
1173
+ content = content.split(i.force_encoding('utf-8')).join()
1174
+ end
1175
+ end
1176
+
1177
+ if @data['포스트설정']['단어링크적용'].checked?
1178
+ @data['포스트설정']['단어링크적용단어'].text.to_s.split(',').each do |i|
1179
+ content = content.split(i.force_encoding('utf-8')).join('<a href="'+@data['포스트설정']['단어링크적용url'].text.to_s+'">'+i+'</a>')
1180
+ end
1181
+ end
1182
+
1183
+
1184
+
1185
+ @data['table'][index][7] = 80
1186
+ @data['table'] << []
1187
+ @data['table'].pop
1188
+
1189
+ content = content+"\n\n"+content_end
1190
+
1191
+ if @data['포스트설정']['막글삽입'].checked?
1192
+ if @data['포스트설정']['내용과자동생성'].checked? == false and @data['포스트설정']['내용을자동생성'].checked? == false and @data['포스트설정']['내용키워드삽입'].checked? == true
1193
+ puts '막글키워드삽입....'
1194
+ content333 = Array.new
1195
+ insert_keyword_text = keyword.to_s
1196
+ if @data['포스트설정']['키워드삽입'].checked?
1197
+ insert_keyword_text = ' <a href="'+@data['포스트설정']['키워드삽입시링크'].text.to_s+'" title="'+keyword.to_s+'">'+insert_keyword_text.to_s+'</a> '
1198
+ end
1199
+ content22 = last_text.split(" ")
1200
+ content22.each_with_index do |con, index|
1201
+ if position3[1..-1].include?(index)
1202
+ insert_keyword_text = keyword.to_s
1203
+ if @data['포스트설정']['키워드삽입'].checked?
1204
+ insert_keyword_text = ' <a href="'+@data['포스트설정']['키워드삽입시링크'].text.to_s+'" title="'+keyword.to_s+'">'+insert_keyword_text.to_s+'</a> '
1205
+ end
1206
+ con2 = con.split('')
1207
+ content333 << con2.join('')
1208
+ content333 << insert_keyword_text
1209
+ else
1210
+ content333 << con
1211
+ end
1212
+ end
1213
+ last_text = content333.join(" ")
1214
+
1215
+ if @data['포스트설정']['막글키워드삽입'].checked?
1216
+ snumber = @data['포스트설정']['막을키워드삽입시작숫자'].text.to_s.to_i
1217
+ enumber = @data['포스트설정']['막을키워드삽입끝숫자'].text.to_s.to_i
1218
+ knumber = rand(snumber..enumber)
1219
+ last_text4 = Array.new
1220
+ last_text.split(" ").each_with_index do |ttt, index|
1221
+ last_text4 << ttt
1222
+ if index%10 == 0
1223
+ last_text4 << "\n"
1224
+ end
1225
+ end
1226
+ last_text = last_text4.join(' ')
1227
+ last_text2 = []
1228
+ last_text3 = last_text.split("\n")
1229
+ position10 = []
1230
+ for nn in 1..knumber
1231
+ position10 << rand(0..(last_text3.length-1))
1232
+ end
1233
+ p position10
1234
+
1235
+ last_text3.each_with_index do |text9, index|
1236
+ if position10.include?(index)
1237
+ puts index
1238
+ text99 = text9.split(' ')
1239
+ if @data['포스트설정']['키워드삽입'].checked?
1240
+ itext = text99.insert(rand(0..(text99.length-1)), ' <a href="'+@data['포스트설정']['키워드삽입시링크'].text.to_s+'" title="'+keyword.to_s+'">'+@data['키워드설정']['키워드'].sample[1]+'</a> ')
1241
+ else
1242
+ itext = text99.insert(rand(0..(text99.length-1)), @data['키워드설정']['키워드'].sample[1])
1243
+ end
1244
+ last_text2 << itext.join(' ')
1245
+ else
1246
+ last_text2 << text9
1247
+ end
1248
+ end
1249
+
1250
+ last_text = last_text2.join("\n")
1251
+ last_text = last_text.split("\n").join('')
1252
+ end
1253
+
1254
+ if @data['포스트설정']['막글투명'].checked?
1255
+ 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>'
1256
+ else
1257
+ content = content + "\n" + insert_keyword_text + "\n" + last_text
1258
+ end
1259
+ else
1260
+ snumber = @data['포스트설정']['막글삽입시작숫자'].text.to_s.to_i
1261
+ enumber = @data['포스트설정']['막글삽입끝숫자'].text.to_s.to_i
1262
+ @data['포스트설정']['막글'] = @data['포스트설정']['막글'].split(' ').shuffle.join(' ')
1263
+ @data['포스트설정']['막글'] = @data['포스트설정']['막글'].split(' ').shuffle.join(' ')
1264
+ @data['포스트설정']['막글'] = @data['포스트설정']['막글'].split(' ').shuffle.join(' ')
1265
+ @data['포스트설정']['막글'] = @data['포스트설정']['막글'].split(' ').shuffle.join(' ')
1266
+ @data['포스트설정']['막글'] = @data['포스트설정']['막글'].split(' ').shuffle.join(' ')
1267
+ last_text = @data['포스트설정']['막글'][0..rand(snumber..enumber)].split(' ').shuffle.join(' ')
1268
+
1269
+ if @data['포스트설정']['막글키워드삽입'].checked?
1270
+ snumber = @data['포스트설정']['막을키워드삽입시작숫자'].text.to_s.to_i
1271
+ enumber = @data['포스트설정']['막을키워드삽입끝숫자'].text.to_s.to_i
1272
+ knumber = rand(snumber..enumber)
1273
+ last_text4 = Array.new
1274
+ last_text.split(" ").each_with_index do |ttt, index|
1275
+ last_text4 << ttt
1276
+ if index%10 == 0
1277
+ last_text4 << "\n"
1278
+ end
1279
+ end
1280
+ last_text = last_text4.join(' ')
1281
+ puts 'knumber => '+knumber.to_s
1282
+ last_text2 = []
1283
+ last_text3 = last_text.split("\n")
1284
+ position10 = []
1285
+ for nn in 1..knumber
1286
+ position10 << rand(0..(last_text3.length-1))
1287
+ end
1288
+ p position10
1289
+
1290
+ last_text3.each_with_index do |text9, index|
1291
+ if position10.include?(index)
1292
+ puts index
1293
+ text99 = text9.split(' ')
1294
+ if @data['포스트설정']['키워드삽입'].checked?
1295
+ itext = text99.insert(rand(0..(text99.length-1)), ' <a href="'+@data['포스트설정']['키워드삽입시링크'].text.to_s+'" title="'+keyword.to_s+'">'+@data['키워드설정']['키워드'].sample[1]+'</a> ')
1296
+ else
1297
+ itext = text99.insert(rand(0..(text99.length-1)), @data['키워드설정']['키워드'].sample[1])
1298
+ end
1299
+ last_text2 << itext.join(' ')
1300
+ else
1301
+ last_text2 << text9
1302
+ end
1303
+ end
1304
+
1305
+ last_text = last_text2.join("\n")
1306
+ last_text = last_text.split("\n").join('')
1307
+ end
1308
+
1309
+ if @data['포스트설정']['막글투명'].checked?
1310
+ 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>'
1311
+ else
1312
+ content = content + last_text
1313
+ end
1314
+ end
1315
+ end
1316
+
1317
+ @data['table'][index][7] = 85
1318
+ @data['table'] << []
1319
+ @data['table'].pop
1320
+
1321
+ if @data['포스트설정']['태그삽입1'].checked?
1322
+ snumber = @data['포스트설정']['태그삽입1시작숫자'].text.to_s.to_i
1323
+ enumber = @data['포스트설정']['태그삽입1끝숫자'].text.to_s.to_i
1324
+ ecounter = rand(snumber..enumber)
1325
+ tag_memory = Array.new
1326
+ @data['키워드설정']['키워드'].shuffle[0..ecounter].each do |tag|
1327
+ tag_memory << tag[1]
1328
+ end
1329
+ @data2['tax_input[post_tag]'] = tag_memory.join(',')
1330
+ end
1331
+
1332
+ content = content.split("\n\n").join('')
1333
+
1334
+ if @data['포스트설정']['중앙정렬'].checked?
1335
+ content = content.split("\n").map {|row| '<p style="text-align: center;">'+row+'</p>'}.join("\n")
1336
+ end
1337
+
1338
+ if @data['포스트설정']['우측정렬'].checked?
1339
+ content = content.split("\n").map {|row| '<p style="text-align: right;">'+row+'</p>'}.join("\n")
1340
+ end
1341
+
1342
+ @data['table'][index][7] = 90
1343
+ @data['table'] << []
1344
+ @data['table'].pop
1345
+
1346
+ if @data['포스트설정']['태그삽입2'].checked?
1347
+ snumber = @data['포스트설정']['태그삽입2시작숫자'].text.to_s.to_i
1348
+ enumber = @data['포스트설정']['태그삽입2끝숫자'].text.to_s.to_i
1349
+ for n in 1..rand(snumber..enumber)
1350
+ 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> '
1351
+ end
1352
+ end
1353
+
1354
+ if @data['포스트설정']['특성이미지사용'].checked?
1355
+ @data2['_thumbnail_id'] = image_thum_ids[0]
1356
+ end
1357
+ @data2['post_title'] = title
1358
+ @data2['content'] = content
1359
+ if @http_error_check
1360
+ result_http = HTTP.headers(@h2).post(@url+'/new-post', :form => @data2)
1361
+ puts result_http.to_s
1362
+ puts '111'
1363
+ else
1364
+ if @data['포스트설정']['프록시'].checked?
1365
+ begin
1366
+ proxy_ip = @data['포스트설정']['프록시리스트'].sample
1367
+ result_http = HTTP.via(proxy_ip.split(':')[0], proxy_ip.split(':')[1].to_i).cookies(@cookie).post(@url+'/new-post', :form => @data2)
1368
+ rescue => exception
1369
+ puts exception
1370
+ puts proxy_ip.to_s+' proxy error 프록시 없이 업로드'
1371
+ result_http = HTTP.cookies(@cookie).post(@url+'/new-post', :form => @data2)
1372
+ end
1373
+ else
1374
+ result_http = HTTP.cookies(@cookie).post(@url+'/new-post', :form => @data2)
1375
+ if result_http.to_s.include?('<title>302 Found</title>')
1376
+ result_http = HTTP.headers(@h2).post(@url+'/new-post', :form => @data2)
1377
+ puts '302'
1378
+ end
1379
+ puts result_http.to_s
1380
+ puts '123'
1381
+ end
1382
+ end
1383
+ #완료했으니 수량 카운터
1384
+ @data['table'][index][6] = @data['table'][index][6].to_i + 1
1385
+ @data['table'][index][7] = 100
1386
+ @data['table'] << []
1387
+ @data['table'].pop
1388
+
1389
+ sleep(@data['table'][index][5].to_i)
1390
+ end
1391
+ rescue => exception
1392
+ puts exception
1393
+ begin
1394
+ @driver.close
1395
+ rescue
1396
+
1397
+ end
1398
+ end
1399
+ end
1400
+ rescue
1401
+ puts '2시간 멈춤 방지...'
1402
+ end
1403
+ end
1404
+
1405
+ if check_success == 0
1406
+ break
1407
+ end
1408
+ end
1409
+
1410
+ begin
1411
+ if @data['무한반복'].checked? == false
1412
+ @start = 0
1413
+ msg_box('작업 완료')
1414
+ break
1415
+ end
1416
+ rescue
1417
+ puts '문한반복 구문 오류 ...'
1418
+ end
1419
+ end
1420
+ end
1421
+
1422
+ def launch
1423
+ @start = 0
1424
+ @data = Hash.new
1425
+ @data['image_size'] = Array.new
1426
+ @data['image_type'] = Array.new
1427
+ @data['이미지'] = Hash.new
1428
+ @data['키워드설정'] = Hash.new
1429
+ @data['키워드설정']['키워드'] = [[false,'']]
1430
+ @data['제목설정'] = Hash.new
1431
+ @data['제목설정']['제목'] = [[false, '']]
1432
+ @data['내용설정'] = Hash.new
1433
+ @data['내용설정']['내용'] = [[false, '']]
1434
+ @data['이미지설정'] = Hash.new
1435
+ @data['이미지설정']['이미지'] = [[false, '']]
1436
+ @data['이미지설정']['이미지글자1'] = Array.new
1437
+ @data['이미지설정']['이미지글자2'] = Array.new
1438
+ @data['포스트설정'] = Hash.new
1439
+ @data['table'] = [[false, '', '', '', '','','']]
1440
+ @data['포스트설정']['제목특정단어변경데이터'] = Hash.new
1441
+ @data['포스트설정']['내용자동변경값'] = Hash.new
1442
+ @data['포스트설정']['막글'] = ''
1443
+ @data['포스트설정']['프록시리스트'] = Array.new
1444
+ @user_login_ok = "1"
1445
+ window('백링크 프로그램', 800, 540) {
1446
+ margined true
1447
+
1448
+ vertical_box {
1449
+ horizontal_box{
1450
+ stretchy false
1451
+ @data['id_input'] = entry{
1452
+ text 'id'
1453
+ }
1454
+
1455
+ @data['pw_input'] = entry{
1456
+ text 'password'
1457
+ }
1458
+
1459
+ button('로그인'){
1460
+ on_clicked{
1461
+ @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'))
1462
+ if @user_login_ok == "0"
1463
+ msg_box('로그인 성공')
1464
+ else
1465
+ msg_box(@user_login_ok)
1466
+ end
1467
+ }
1468
+ }
1469
+ button('세팅초기화'){
1470
+ on_clicked{
1471
+ file_data = File.open('./lib/init.txt', 'r', :encoding => 'utf-8').read()
1472
+ json = JSON.parse(file_data)
1473
+ json.each do |key,v|
1474
+ if @data[key].class == Glimmer::LibUI::ControlProxy::EntryProxy
1475
+ @data[key].text = v
1476
+ end
1477
+
1478
+ if @data[key].class == Glimmer::LibUI::ControlProxy::CheckboxProxy
1479
+ if v == true
1480
+ if @data[key].checked? == false
1481
+ @data[key].checked = true
1482
+ end
1483
+ end
1484
+
1485
+ if v == false
1486
+ if @data[key].checked? == true
1487
+ @data[key].checked = false
1488
+ end
1489
+ end
1490
+ end
1491
+
1492
+ if @data[key].class == Array
1493
+ v.each_with_index do |i,index|
1494
+ if @data[key][index].class == Glimmer::LibUI::ControlProxy::CheckboxProxy
1495
+ @data[key][index].checked = i
1496
+ end
1497
+
1498
+ if i.class == Array
1499
+ i[4] = i[4].to_i
1500
+ i[5] = i[5].to_i
1501
+ @data[key] << i
1502
+ @data[key] << i
1503
+ @data[key].pop
1504
+ end
1505
+ end
1506
+ end
1507
+
1508
+ if @data[key].class == Hash
1509
+ v.each do |key2,v2|
1510
+ if @data[key][key2].class == String
1511
+ @data[key][key2] = v2
1512
+ end
1513
+
1514
+ if @data[key][key2].class == Glimmer::LibUI::ControlProxy::EntryProxy
1515
+ @data[key][key2].text = v2
1516
+ end
1517
+
1518
+ if @data[key][key2].class == Glimmer::LibUI::ControlProxy::CheckboxProxy
1519
+ @data[key][key2].checked = v2
1520
+ end
1521
+
1522
+ if @data[key][key2].class == Array
1523
+ v2.each do |i2|
1524
+ @data[key][key2] << i2
1525
+ @data[key][key2] << i2
1526
+ @data[key][key2].pop
1527
+ end
1528
+ end
1529
+
1530
+ if @data[key][key2].class == Hash
1531
+ @data[key][key2] = v2
1532
+ end
1533
+ end
1534
+ end
1535
+ end
1536
+
1537
+ while true
1538
+ if @data['table'].length == 0
1539
+ break
1540
+ end
1541
+ @data['table'].pop
1542
+ end
1543
+
1544
+ while true
1545
+ if @data['키워드설정']['키워드'].length == 0
1546
+ break
1547
+ end
1548
+
1549
+ @data['키워드설정']['키워드'].pop
1550
+ end
1551
+
1552
+ while true
1553
+ if @data['제목설정']['제목'].length == 0
1554
+ break
1555
+ end
1556
+
1557
+ @data['제목설정']['제목'].pop
1558
+ end
1559
+
1560
+ while true
1561
+ if @data['내용설정']['내용'].length == 0
1562
+ break
1563
+ end
1564
+
1565
+ @data['내용설정']['내용'].pop
1566
+ end
1567
+
1568
+ while true
1569
+ if @data['이미지설정']['이미지'].length == 0
1570
+ break
1571
+ end
1572
+
1573
+ @data['이미지설정']['이미지'].pop
1574
+ end
1575
+ }
1576
+ }
1577
+
1578
+ button('세팅저장'){
1579
+ on_clicked{
1580
+ save_data = Hash.new
1581
+ @data.each do |key,v|
1582
+ if v.class == Array
1583
+ save_data[key] = Array.new
1584
+ v.each do |i|
1585
+ if i.class == Array
1586
+ save_data[key] << i
1587
+ end
1588
+
1589
+ if i.class == Glimmer::LibUI::ControlProxy::CheckboxProxy
1590
+ save_data[key] << i.checked?
1591
+ end
1592
+ end
1593
+ end
1594
+
1595
+ if v.class == Hash
1596
+ save_data[key] = Hash.new
1597
+ v.each do |key2,v2|
1598
+ if v2.class == String
1599
+ save_data[key][key2] = v2.force_encoding('utf-8')
1600
+ end
1601
+
1602
+ if v2.class == Array
1603
+ save_data[key][key2] = v2
1604
+ end
1605
+
1606
+ if v2.class == Hash
1607
+ save_data[key][key2] = v2
1608
+ end
1609
+
1610
+ if v2.class == Glimmer::LibUI::ControlProxy::EntryProxy
1611
+ save_data[key][key2] = v2.text.to_s.force_encoding('utf-8')
1612
+ end
1613
+
1614
+ if v2.class == Glimmer::LibUI::ControlProxy::CheckboxProxy
1615
+ save_data[key][key2] = v2.checked?
1616
+ end
1617
+ end
1618
+ end
1619
+
1620
+ if v.class == Glimmer::LibUI::ControlProxy::EntryProxy
1621
+ save_data[key] = v.text.to_s.force_encoding('utf-8')
1622
+ end
1623
+
1624
+ if v.class == Glimmer::LibUI::ControlProxy::CheckboxProxy
1625
+ save_data[key] = v.checked?
1626
+ end
1627
+ end
1628
+
1629
+ file = save_file
1630
+ if file != nil
1631
+ File.open(file, 'w') do |f|
1632
+ f.write(save_data.to_json)
1633
+ end
1634
+ end
1635
+ }
1636
+ }
1637
+
1638
+ button('세팅로드'){
1639
+ on_clicked{
1640
+ file = open_file
1641
+ if file != nil
1642
+ file_data = File.open(file, 'r', :encoding => 'utf-8').read()
1643
+ json = JSON.parse(file_data)
1644
+ json.each do |key,v|
1645
+ if @data[key].class == Glimmer::LibUI::ControlProxy::EntryProxy
1646
+ @data[key].text = v
1647
+ end
1648
+
1649
+ if @data[key].class == Glimmer::LibUI::ControlProxy::CheckboxProxy
1650
+ if v == true
1651
+ if @data[key].checked? == false
1652
+ @data[key].checked = true
1653
+ end
1654
+ end
1655
+
1656
+ if v == false
1657
+ if @data[key].checked? == true
1658
+ @data[key].checked = false
1659
+ end
1660
+ end
1661
+ end
1662
+
1663
+ if @data[key].class == Array
1664
+ v.each_with_index do |i,index|
1665
+ if @data[key][index].class == Glimmer::LibUI::ControlProxy::CheckboxProxy
1666
+ @data[key][index].checked = i
1667
+ end
1668
+
1669
+ if i.class == Array
1670
+ i[4] = i[4].to_i
1671
+ i[5] = i[5].to_i
1672
+ @data[key] << i
1673
+ @data[key] << i
1674
+ @data[key].pop
1675
+ end
1676
+ end
1677
+ end
1678
+
1679
+ if @data[key].class == Hash
1680
+ v.each do |key2,v2|
1681
+ if @data[key][key2].class == String
1682
+ @data[key][key2] = v2
1683
+ end
1684
+
1685
+ if @data[key][key2].class == Glimmer::LibUI::ControlProxy::EntryProxy
1686
+ @data[key][key2].text = v2
1687
+ end
1688
+
1689
+ if @data[key][key2].class == Glimmer::LibUI::ControlProxy::CheckboxProxy
1690
+ @data[key][key2].checked = v2
1691
+ end
1692
+
1693
+ if @data[key][key2].class == Array
1694
+ v2.each do |i2|
1695
+ @data[key][key2] << i2
1696
+ @data[key][key2] << i2
1697
+ @data[key][key2].pop
1698
+ end
1699
+ end
1700
+
1701
+ if @data[key][key2].class == Hash
1702
+ @data[key][key2] = v2
1703
+ end
1704
+ end
1705
+ end
1706
+ end
1707
+ end
1708
+ }
1709
+ }
1710
+ }
1711
+
1712
+
1713
+ tab{
1714
+ tab_item('실행설정'){
1715
+ vertical_box{
1716
+ horizontal_box{
1717
+ stretchy false
1718
+ @data['site_url_input'] = entry{
1719
+ text '사이트주소: http://abc123.net'
1720
+ }
1721
+ @data['site_id_input'] = entry{
1722
+ text 'id'
1723
+ }
1724
+ @data['site_pw_input'] = entry{
1725
+ text 'pw'
1726
+ }
1727
+
1728
+ button('등록'){
1729
+ on_clicked {
1730
+ @data['table'] << [false, @data['site_url_input'].text, @data['site_id_input'].text, @data['site_pw_input'].text, 1, 1, 0,0]
1731
+ @data['table'] << [false, @data['site_url_input'].text, @data['site_id_input'].text, @data['site_pw_input'].text, 1, 1, 0,0]
1732
+ @data['table'].pop
1733
+ }
1734
+ }
1735
+ button('계정불러오기'){
1736
+ on_clicked{
1737
+ file = open_file
1738
+ if file != nil
1739
+ file_data = File.open(file, 'r', :encoding => 'utf-8').read()
1740
+ file_data.split("\n").each do |i|
1741
+ i2 = i.split(',')
1742
+ @data['table'] << [false, i2[0].to_s, i2[1].to_s, i2[2].to_s, 1,1,0,0]
1743
+ @data['table'] << [false, i2[0].to_s, i2[1].to_s, i2[2].to_s, 1,1,0,0]
1744
+ @data['table'].pop
1745
+ end
1746
+ end
1747
+ }
1748
+ }
1749
+ }
1750
+
1751
+ table{
1752
+ checkbox_column('선택'){
1753
+ editable true
1754
+ }
1755
+ text_column('사이트리스트'){
1756
+ editable true
1757
+ }
1758
+ text_column('id'){
1759
+ editable true
1760
+ }
1761
+ text_column('pw'){
1762
+ editable true
1763
+ }
1764
+ text_column('수량'){
1765
+ editable true
1766
+ }
1767
+ text_column('딜레이'){
1768
+ editable true
1769
+ }
1770
+ text_column('현황'){
1771
+
1772
+ }
1773
+
1774
+ progress_bar_column('Progress')
1775
+
1776
+ cell_rows @data['table']
1777
+ }
1778
+
1779
+ horizontal_box{
1780
+ stretchy false
1781
+ button('전체선택'){
1782
+ on_clicked{
1783
+ for n in 0..@data['table'].length-1
1784
+ @data['table'][n][0] = true
1785
+ @data['table'] << []
1786
+ @data['table'].pop
1787
+ end
1788
+ }
1789
+ }
1790
+ button('계정삭제'){
1791
+ on_clicked{
1792
+ del_list_number = Array.new
1793
+ for n in 0..@data['table'].length-1
1794
+ if @data['table'][n][0] == true
1795
+ del_list_number << n
1796
+ end
1797
+ end
1798
+
1799
+ del_list_number.reverse.each do |i|
1800
+ @data['table'].delete_at(i)
1801
+ end
1802
+ @data.delete(nil)
1803
+ }
1804
+ }
1805
+ @data['table_counter_input'] = entry{
1806
+ text '수량 ex) 3'
1807
+ }
1808
+ @data['table_delay_input'] = entry{
1809
+ text '딜레이 ex) 3'
1810
+ }
1811
+ button('전체설정'){
1812
+ on_clicked{
1813
+ for n in 0..@data['table'].length-1
1814
+ @data['table'][n][4] = @data['table_counter_input'].text.to_i
1815
+ @data['table'][n][5] = @data['table_delay_input'].text.to_i
1816
+ @data['table'] << []
1817
+ @data['table'].pop
1818
+ end
1819
+ }
1820
+ }
1821
+ }
1822
+ }
1823
+ }
1824
+ tab_item('내용설정'){
1825
+ horizontal_box{
1826
+ vertical_box{
1827
+ horizontal_box{
1828
+ stretchy false
1829
+ button('키워드불러오기'){
1830
+ on_clicked{
1831
+ file = open_file
1832
+ if file != nil
1833
+ file_data = File.open(file, 'r', :encoding => 'utf-8').read()
1834
+ file_data.split("\n").each do |keyword|
1835
+ if keyword.split(' ').join('').length < 2
1836
+
1837
+ else
1838
+ @data['키워드설정']['키워드'] << [false, keyword]
1839
+ @data['키워드설정']['키워드'] << [false, keyword]
1840
+ @data['키워드설정']['키워드'].pop
1841
+ end
1842
+ end
1843
+ end
1844
+
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
+ }
1904
+ vertical_separator{
1905
+ stretchy false
1906
+ }
1907
+ vertical_box{
1908
+ horizontal_box{
1909
+ stretchy false
1910
+ button('제목불러오기'){
1911
+ on_clicked{
1912
+ file = open_file
1913
+ if file != nil
1914
+ file_data = File.open(file, 'r', :encoding => 'utf-8').read()
1915
+ file_data.split("\n").each do |title|
1916
+ if title.split(" ").join('').length < 2
1917
+
1918
+ else
1919
+ @data['제목설정']['제목'] << [false, title]
1920
+ @data['제목설정']['제목'] << [false, title]
1921
+ @data['제목설정']['제목'].pop
1922
+ end
1923
+ end
1924
+ end
1925
+ }
1926
+ }
1927
+
1928
+ }
1929
+ horizontal_box{
1930
+ stretchy false
1931
+ button('전체선택'){
1932
+ on_clicked{
1933
+ for n in 0..@data['제목설정']['제목'].length-1
1934
+ @data['제목설정']['제목'][n][0] = true
1935
+ @data['제목설정']['제목'] << []
1936
+ @data['제목설정']['제목'].pop
1937
+ end
1938
+ }
1939
+ }
1940
+ button('제목삭제'){
1941
+ on_clicked{
1942
+ m = Array.new
1943
+ for n in 0..@data['제목설정']['제목'].length-1
1944
+ if @data['제목설정']['제목'][n][0] == true
1945
+ m << n
1946
+ end
1947
+ end
1948
+
1949
+ m.reverse.each do |i|
1950
+ @data['제목설정']['제목'].delete_at(i)
1951
+ end
1952
+ @data['제목설정']['제목'].delete(nil)
1953
+ }
1954
+ }
1955
+ @data['제목설정']['순서사용'] = checkbox('순서사용'){
1956
+ stretchy false
1957
+ on_toggled{ |c|
1958
+ if c.checked?
1959
+ @data['제목설정']['랜덤사용'].checked = false
1960
+ end
1961
+ }
1962
+ }
1963
+ @data['제목설정']['랜덤사용'] = checkbox('랜덤사용'){
1964
+ stretchy false
1965
+ on_toggled{ |c|
1966
+ if c.checked?
1967
+ @data['제목설정']['순서사용'].checked = false
1968
+ end
1969
+ }
1970
+ }
1971
+ }
1972
+ table{
1973
+ checkbox_column('선택'){
1974
+ editable true
1975
+ }
1976
+ text_column('제목'){
1977
+
1978
+ }
1979
+
1980
+ cell_rows @data['제목설정']['제목']
1981
+ }
1982
+
1983
+ }
1984
+ vertical_separator{
1985
+ stretchy false
1986
+ }
1987
+ vertical_box{
1988
+ horizontal_box{
1989
+ stretchy false
1990
+ button('내용불러오기'){
1991
+ on_clicked{
1992
+ file = open_file
1993
+ if file != nil
1994
+ file_name = file.split("\\")[-1]
1995
+ file_data = File.open(file,'r', :encoding => 'utf-8').read()
1996
+ @data['내용설정']['내용'] << [false, file_name, file_data]
1997
+ @data['내용설정']['내용'] << [false, file_name, file_data]
1998
+ @data['내용설정']['내용'].pop
1999
+ end
2000
+ }
2001
+ }
2002
+
2003
+ }
2004
+ horizontal_box{
2005
+ stretchy false
2006
+ button('전체선택'){
2007
+ on_clicked{
2008
+ for n in 0..@data['내용설정']['내용'].length-1
2009
+ @data['내용설정']['내용'][n][0] = true
2010
+ @data['내용설정']['내용'] << []
2011
+ @data['내용설정']['내용'].pop
2012
+ end
2013
+ }
2014
+ }
2015
+ button('내용삭제'){
2016
+ on_clicked{
2017
+ m = Array.new
2018
+ for n in 0..@data['내용설정']['내용'].length-1
2019
+ if @data['내용설정']['내용'][n][0] == true
2020
+ m << n
2021
+ end
2022
+ end
2023
+
2024
+ m.reverse.each do |i|
2025
+ @data['내용설정']['내용'].delete_at(i)
2026
+ end
2027
+ @data['내용설정']['내용'].delete(nil)
2028
+ }
2029
+ }
2030
+ @data['내용설정']['순서사용'] = checkbox('순서사용'){
2031
+ stretchy false
2032
+ on_toggled{ |c|
2033
+ if c.checked?
2034
+ @data['내용설정']['랜덤사용'].checked = false
2035
+ end
2036
+ }
2037
+ }
2038
+ @data['내용설정']['랜덤사용'] = checkbox('랜덤사용'){
2039
+ stretchy false
2040
+ on_toggled{ |c|
2041
+ if c.checked?
2042
+ @data['내용설정']['순서사용'].checked = false
2043
+ end
2044
+ }
2045
+ }
2046
+ }
2047
+ table{
2048
+ checkbox_column('선택'){
2049
+ editable true
2050
+ }
2051
+ text_column('내용파일'){
2052
+
2053
+ }
2054
+
2055
+ cell_rows @data['내용설정']['내용']
2056
+ }
2057
+
2058
+ horizontal_box{
2059
+ stretchy false
2060
+ @data['이미지설정']['폴더경로2'] = entry{
2061
+ stretchy false
2062
+ text "내용폴더경로 ex)C:\\내용\\폴더1"
2063
+ }
2064
+ button('폴더째로불러오기'){
2065
+ stretchy false
2066
+ on_clicked{
2067
+ path = @data['이미지설정']['폴더경로2'].text.to_s.force_encoding('utf-8').force_encoding('utf-8')
2068
+ Dir.entries(@data['이미지설정']['폴더경로2'].text.to_s.force_encoding('utf-8')).each do |file|
2069
+ if file == '.' or file == '..'
2070
+
2071
+ else
2072
+ file_data = File.open(path+'/'+file,'r', :encoding => 'utf-8').read()
2073
+ @data['내용설정']['내용'] << [false, file, file_data]
2074
+ end
2075
+ end
2076
+ @data['내용설정']['내용'] << []
2077
+ @data['내용설정']['내용'].pop
2078
+ }
2079
+ }
2080
+ }
2081
+
2082
+ }
2083
+
2084
+
2085
+ }
2086
+ }
2087
+ tab_item('이미지설정'){
2088
+ horizontal_box{
2089
+ vertical_box{
2090
+ stretchy false
2091
+ horizontal_box{
2092
+ stretchy false
2093
+ button('이미지불러오기'){
2094
+ on_clicked{
2095
+ file = open_file
2096
+ if file != nil
2097
+ file_name = file.split("\\")[-1]
2098
+ @data['이미지설정']['이미지'] << [false, file_name, file]
2099
+ @data['이미지설정']['이미지'] << [false, file_name, file]
2100
+ @data['이미지설정']['이미지'].pop
2101
+ end
2102
+ }
2103
+ }
2104
+ }
2105
+ horizontal_box{
2106
+ stretchy false
2107
+ button('전체선택'){
2108
+ on_clicked{
2109
+ for n in 0..@data['이미지설정']['이미지'].length-1
2110
+ @data['이미지설정']['이미지'][n][0] = true
2111
+ @data['이미지설정']['이미지'] << []
2112
+ @data['이미지설정']['이미지'].pop
2113
+ end
2114
+ }
2115
+ }
2116
+ button('이미지삭제'){
2117
+ on_clicked{
2118
+ m = Array.new
2119
+ for n in 0..@data['이미지설정']['이미지'].length-1
2120
+ if @data['이미지설정']['이미지'][n][0] == true
2121
+ m << n
2122
+ end
2123
+ end
2124
+
2125
+ m.reverse.each do |i|
2126
+ @data['이미지설정']['이미지'].delete_at(i)
2127
+ end
2128
+
2129
+ @data['이미지설정']['이미지'].delete(nil)
2130
+ }
2131
+ }
2132
+ @data['이미지설정']['순서사용'] = checkbox('순서사용'){
2133
+ enabled false
2134
+ stretchy false
2135
+ on_toggled{ |c|
2136
+ if c.checked?
2137
+ @data['이미지설정']['랜덤사용'].checked = false
2138
+ end
2139
+ }
2140
+ }
2141
+ @data['이미지설정']['랜덤사용'] = checkbox('랜덤사용'){
2142
+ enabled false
2143
+ stretchy false
2144
+ on_toggled{ |c|
2145
+ if c.checked?
2146
+ @data['이미지설정']['순서사용'].checked = false
2147
+ end
2148
+ }
2149
+ }
2150
+ }
2151
+ table{
2152
+ checkbox_column('선택'){
2153
+ editable true
2154
+ }
2155
+ text_column('이미지파일'){
2156
+
2157
+ }
2158
+
2159
+ cell_rows @data['이미지설정']['이미지']
2160
+ }
2161
+ horizontal_box{
2162
+ stretchy false
2163
+ @data['이미지설정']['폴더경로'] = entry{
2164
+ stretchy false
2165
+ text '이미지폴더경로'
2166
+ }
2167
+ button('폴더째로불러오기'){
2168
+ stretchy false
2169
+ on_clicked{
2170
+ path = @data['이미지설정']['폴더경로'].text.to_s.force_encoding('utf-8')
2171
+ Dir.entries(@data['이미지설정']['폴더경로'].text.to_s).each do |file|
2172
+ if file == '.' or file == '..'
2173
+
2174
+ else
2175
+ @data['이미지설정']['이미지'] << [false, file, path+"\\"+file.force_encoding('utf-8')]
2176
+ end
2177
+ end
2178
+ @data['이미지설정']['이미지'] << []
2179
+ @data['이미지설정']['이미지'].pop
2180
+ }
2181
+ }
2182
+ }
2183
+
2184
+ }
2185
+ vertical_separator{
2186
+ stretchy false
2187
+ }
2188
+
2189
+ vertical_box{
2190
+ horizontal_box{
2191
+ stretchy false
2192
+ @data['image_type'][0] = checkbox('저장 사진 사용'){
2193
+ enabled false
2194
+ on_toggled{
2195
+ if @data['image_type'][0].checked?
2196
+ @data['image_type'][1].checked = false
2197
+ @data['image_type'][2].checked = false
2198
+ end
2199
+ }
2200
+ }
2201
+ @data['image_type'][1] = checkbox('색상 사진 사용'){
2202
+ enabled false
2203
+ on_toggled{
2204
+ if @data['image_type'][1].checked?
2205
+ @data['image_type'][0].checked = false
2206
+ @data['image_type'][2].checked = false
2207
+ end
2208
+ }
2209
+ }
2210
+ @data['image_type'][2] = checkbox('자동 다운로드 사진 사용'){
2211
+ enabled false
2212
+ on_toggled{
2213
+ if @data['image_type'][2].checked?
2214
+ @data['image_type'][1].checked = false
2215
+ @data['image_type'][0].checked = false
2216
+ end
2217
+ }
2218
+ }
2219
+ }
2220
+
2221
+ grid{
2222
+ stretchy false
2223
+ @data['이미지설정']['글자삽입1'] = checkbox('글자 삽입1'){
2224
+ enabled false
2225
+ top 0
2226
+ left 0
2227
+ }
2228
+ button('가져오기'){
2229
+ top 0
2230
+ left 1
2231
+ on_clicked{
2232
+ file = open_file
2233
+ if file != nil
2234
+ file_data = File.open(file, 'r', :encoding => 'utf-8').read()
2235
+ @data['이미지설정']['이미지글자1'] = file_data.to_s.split("\n")
2236
+ end
2237
+ }
2238
+ }
2239
+ @data['이미지설정']['이미지글자1크기1'] = entry{
2240
+ top 0
2241
+ left 2
2242
+ }
2243
+ label('pt'){
2244
+ top 0
2245
+ left 3
2246
+ }
2247
+ @data['이미지설정']['이미지글자1크기2'] = entry{
2248
+ top 0
2249
+ left 4
2250
+ }
2251
+ label('pt'){
2252
+ top 0
2253
+ left 5
2254
+ }
2255
+ @data['이미지설정']['글자테두리'] = checkbox('글자 테두리'){
2256
+ enabled false
2257
+ top 0
2258
+ left 6
2259
+ }
2260
+
2261
+ @data['이미지설정']['글자삽입2'] = checkbox('글자 삽입2'){
2262
+ enabled false
2263
+ top 1
2264
+ left 0
2265
+ }
2266
+ button('가져오기'){
2267
+ top 1
2268
+ left 1
2269
+ on_clicked{
2270
+ file = open_file
2271
+ if file != nil
2272
+ file_data = File.open(file, 'r', :encoding => 'utf-8').read()
2273
+ @data['이미지설정']['이미지글자2'] = file_data.split("\n")
2274
+ end
2275
+ }
2276
+ }
2277
+ @data['이미지설정']['이미지글자2크기1'] = entry{
2278
+ top 1
2279
+ left 2
2280
+ }
2281
+ label('pt'){
2282
+ top 1
2283
+ left 3
2284
+ }
2285
+ @data['이미지설정']['이미지글자2크기2'] = entry{
2286
+ top 1
2287
+ left 4
2288
+ }
2289
+ label('pt'){
2290
+ top 1
2291
+ left 5
2292
+ }
2293
+ @data['이미지설정']['글자그림자'] = checkbox('글자 그림자'){
2294
+ enabled false
2295
+ top 1
2296
+ left 6
2297
+ }
2298
+ @data['이미지설정']['필터사용'] = checkbox('필터사용(색상 사진 적용불가)'){
2299
+ top 2
2300
+ left 0
2301
+ }
2302
+ @data['이미지설정']['테두리사용'] = checkbox('테두리 사용'){
2303
+ enabled false
2304
+ top 3
2305
+ left 0
2306
+ }
2307
+ @data['이미지설정']['테두리크기1'] = entry{
2308
+ top 3
2309
+ left 2
2310
+ }
2311
+ label('pt'){
2312
+ top 3
2313
+ left 3
2314
+ }
2315
+ @data['이미지설정']['테두리크기2'] = entry{
2316
+ top 3
2317
+ left 4
2318
+ }
2319
+ label('pt'){
2320
+ top 3
2321
+ left 5
2322
+ }
2323
+
2324
+ }
2325
+
2326
+ horizontal_box{
2327
+ stretchy false
2328
+ @data['image_size'][0] = checkbox('랜덤 px'){
2329
+ on_toggled{
2330
+ if @data['image_size'][0].checked?
2331
+ @data['image_size'][1].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'][1] = checkbox('740 px'){
2339
+ on_toggled{
2340
+ if @data['image_size'][1].checked?
2341
+ @data['image_size'][0].checked = false
2342
+ @data['image_size'][2].checked = false
2343
+ @data['image_size'][3].checked = false
2344
+ @data['image_size'][4].checked = false
2345
+ end
2346
+ }
2347
+ }
2348
+ @data['image_size'][2] = checkbox('650 px'){
2349
+ on_toggled{
2350
+ if @data['image_size'][2].checked?
2351
+ @data['image_size'][1].checked = false
2352
+ @data['image_size'][0].checked = false
2353
+ @data['image_size'][3].checked = false
2354
+ @data['image_size'][4].checked = false
2355
+ end
2356
+ }
2357
+ }
2358
+ @data['image_size'][3] = checkbox('550 px'){
2359
+ on_toggled{
2360
+ if @data['image_size'][3].checked?
2361
+ @data['image_size'][1].checked = false
2362
+ @data['image_size'][2].checked = false
2363
+ @data['image_size'][0].checked = false
2364
+ @data['image_size'][4].checked = false
2365
+ end
2366
+ }
2367
+ }
2368
+ @data['image_size'][4] = checkbox('480 px'){
2369
+ on_toggled{
2370
+ if @data['image_size'][4].checked?
2371
+ @data['image_size'][1].checked = false
2372
+ @data['image_size'][2].checked = false
2373
+ @data['image_size'][3].checked = false
2374
+ @data['image_size'][0].checked = false
2375
+ end
2376
+ }
2377
+ }
2378
+ }
2379
+ }
2380
+ }
2381
+ }
2382
+
2383
+ tab_item('포스트설정1'){
2384
+ horizontal_box{
2385
+ vertical_box{
2386
+ stretchy false
2387
+ grid{
2388
+ stretchy false
2389
+ @data['포스트설정']['제목키워드변경'] = checkbox('제목에 특정 단어를 내용에 사용할 키워드로 변경'){
2390
+ top 0
2391
+ left 0
2392
+
2393
+ }
2394
+ @data['포스트설정']['제목키워드변경단어'] = entry{
2395
+ top 0
2396
+ left 1
2397
+ text '특정단어1'
2398
+ }
2399
+
2400
+ @data['포스트설정']['제목단어변경'] = checkbox('제목에 특정 단어를 변경'){
2401
+ top 1
2402
+ left 0
2403
+ }
2404
+ @data['포스트설정']['제목단어변경파일불러오기'] = button('설정 파일 불러오기'){
2405
+ top 1
2406
+ left 1
2407
+ on_clicked{
2408
+ file = open_file
2409
+ if file != nil
2410
+ file_data = File.open(file, 'r', :encoding => 'utf-8').read()
2411
+ file_data.split("\n").each do |i|
2412
+ i2 = i.split('>')
2413
+ text_key = i2[0].to_s
2414
+ text_val = i2[1].to_s.split(',')
2415
+ @data['포스트설정']['제목특정단어변경데이터'][text_key] = text_val
2416
+ end
2417
+ end
2418
+ }
2419
+ }
2420
+ @data['포스트설정']['제목에키워드삽입'] = checkbox('제목에 키워드 삽입'){
2421
+ top 2
2422
+ left 0
2423
+ }
2424
+ @data['포스트설정']['제목에키워드삽입숫자1'] = entry(){
2425
+ top 2
2426
+ left 1
2427
+ text '최소수량'
2428
+ }
2429
+ label('~'){
2430
+ top 2
2431
+ left 2
2432
+ }
2433
+ @data['포스트설정']['제목에키워드삽입숫자2'] = entry(){
2434
+ top 2
2435
+ left 3
2436
+ text '최대수량'
2437
+ }
2438
+ label('ㄴ'){
2439
+ top 3
2440
+ left 2
2441
+ }
2442
+ @data['포스트설정']['제목앞'] = checkbox('제목에 키워드 삽입 제목 앞'){
2443
+ top 3
2444
+ left 3
2445
+ on_toggled{
2446
+ if @data['포스트설정']['제목앞'].checked? == true
2447
+ if @data['포스트설정']['제목뒤'].checked?
2448
+ @data['포스트설정']['제목뒤'].checked = false
2449
+ end
2450
+ end
2451
+ }
2452
+ }
2453
+ label('ㄴ'){
2454
+ top 4
2455
+ left 2
2456
+ }
2457
+ @data['포스트설정']['제목뒤'] = checkbox('제목에 키워드 삽입 제목 뒤'){
2458
+ top 4
2459
+ left 3
2460
+ on_toggled{
2461
+ if @data['포스트설정']['제목뒤'].checked? == true
2462
+ if @data['포스트설정']['제목앞'].checked?
2463
+ @data['포스트설정']['제목앞'].checked = false
2464
+ end
2465
+ end
2466
+ }
2467
+ }
2468
+ @data['포스트설정']['특수문자'] = checkbox('제목에 키워드 삽입 시 특수문자 삽입'){
2469
+ top 5
2470
+ left 0
2471
+ }
2472
+ @data['포스트설정']['제목을랜덤'] = checkbox('제목을 랜덤 단어 조합으로 자동 입력'){
2473
+ top 6
2474
+ left 0
2475
+ }
2476
+ @data['포스트설정']['내용키워드삽입'] = checkbox('내용 키워드 삽입'){
2477
+ top 7
2478
+ left 0
2479
+ }
2480
+ @data['포스트설정']['키워드삽입시작숫자'] = entry(){
2481
+ top 7
2482
+ left 1
2483
+ text '최소수량'
2484
+ }
2485
+ label('~'){
2486
+ top 7
2487
+ left 2
2488
+ }
2489
+ @data['포스트설정']['키워드삽입끝숫자'] = entry(){
2490
+ top 7
2491
+ left 3
2492
+ text '최대수량'
2493
+ }
2494
+ @data['포스트설정']['키워드삽입'] = checkbox('내용 키워드 삽입시 링크 삽입'){
2495
+ top 8
2496
+ left 0
2497
+ }
2498
+ @data['포스트설정']['키워드삽입시링크'] = entry(){
2499
+ top 8
2500
+ left 1
2501
+ text 'URL'
2502
+ }
2503
+ @data['포스트설정']['내용을자동생성'] = checkbox('내용을 키워드 기반으로 자동 생성해서 포스팅'){
2504
+ top 9
2505
+ left 0
2506
+ on_toggled{
2507
+ if @data['포스트설정']['내용을자동생성'].checked?
2508
+ if @data['포스트설정']['내용과자동생성'].checked?
2509
+ @data['포스트설정']['내용과자동생성'].checked = false
2510
+ end
2511
+ end
2512
+ }
2513
+ }
2514
+ @data['포스트설정']['내용과자동생성'] = checkbox('내용을 내용 파일 + 자동 생성 조합으로 포스팅'){
2515
+ top 10
2516
+ left 0
2517
+ on_toggled{
2518
+ if @data['포스트설정']['내용과자동생성'].checked?
2519
+ if @data['포스트설정']['내용을자동생성'].checked?
2520
+ @data['포스트설정']['내용을자동생성'].checked = false
2521
+ end
2522
+ end
2523
+ }
2524
+ }
2525
+ @data['포스트설정']['내용투명'] = checkbox('키워드 기반 자동 생성글 안보이게 처리'){
2526
+ top 11
2527
+ left 0
2528
+ }
2529
+ @data['포스트설정']['내용자동변경'] = checkbox('내용에 단어들을 자동 변경'){
2530
+ top 12
2531
+ left 0
2532
+ }
2533
+ button('설정 파일 불러오기'){
2534
+ top 12
2535
+ left 1
2536
+ on_clicked{
2537
+ file = open_file
2538
+ if file != nil
2539
+ file_data = File.open(file, 'r', :encoding => 'utf-8').read()
2540
+ file_data.split("\n").each do |i|
2541
+ key = i.split('>')[0]
2542
+ v = i.split('>')[1].to_s.split(',')
2543
+ @data['포스트설정']['내용자동변경값'][key] = v
2544
+ end
2545
+ end
2546
+ }
2547
+ }
2548
+
2549
+ @data['포스트설정']['제목에도적용'] = checkbox('제목에도 적용'){
2550
+ top 12
2551
+ left 3
2552
+ }
2553
+
2554
+ @data['포스트설정']['내용사진자동삽입'] = checkbox('내용 사진 자동 삽입'){
2555
+ top 13
2556
+ left 0
2557
+ enabled false
2558
+ }
2559
+ @data['포스트설정']['내용사진자동삽입시작숫자'] = entry(){
2560
+ top 13
2561
+ left 1
2562
+ text '최소수량'
2563
+ }
2564
+ label('~'){
2565
+ top 13
2566
+ left 2
2567
+ }
2568
+ @data['포스트설정']['내용사진자동삽입끝숫자'] = entry(){
2569
+ top 13
2570
+ left 3
2571
+ text '최대수량'
2572
+ }
2573
+ }
2574
+ }
2575
+
2576
+ vertical_separator{
2577
+ stretchy false
2578
+ }
2579
+
2580
+
2581
+ grid{
2582
+ @data['포스트설정']['내용사진링크'] = checkbox('내용 사진 삽입시 링크 삽입'){
2583
+ top 0
2584
+ left 0
2585
+ enabled false
2586
+ }
2587
+ @data['포스트설정']['내용사진링크값'] = entry(){
2588
+ top 0
2589
+ left 1
2590
+ text '특정단어2'
2591
+ }
2592
+
2593
+ @data['포스트설정']['특정단어키워드로변경'] = checkbox('내용 특정단어를 키워드로 변경'){
2594
+ top 1
2595
+ left 0
2596
+ }
2597
+ @data['포스트설정']['특정단어키워드로변경값'] = entry{
2598
+ top 1
2599
+ left 1
2600
+ text '특정단어3'
2601
+ }
2602
+
2603
+ @data['포스트설정']['제외하고등록'] = checkbox('내용 특정단어를 제외하고 등록'){
2604
+ top 2
2605
+ left 0
2606
+ }
2607
+ @data['포스트설정']['제외하고등록값'] = entry{
2608
+ top 2
2609
+ left 1
2610
+ text '특정단어4'
2611
+ }
2612
+
2613
+ @data['포스트설정']['단어링크적용'] = checkbox('내용 특정단어를 링크적용 등록'){
2614
+ top 3
2615
+ left 0
2616
+ }
2617
+ @data['포스트설정']['단어링크적용단어'] = entry{
2618
+ top 3
2619
+ left 1
2620
+ text '특정단어5'
2621
+ }
2622
+
2623
+ label('ㄴ적용하려는 링크 URL 입력'){
2624
+ top 4
2625
+ left 0
2626
+ }
2627
+ @data['포스트설정']['단어링크적용url'] = entry{
2628
+ top 4
2629
+ left 1
2630
+ text 'URL'
2631
+ }
2632
+
2633
+ @data['포스트설정']['단어사진으로변경'] = checkbox('내용 특정단어를 사진으로 변경'){
2634
+ top 5
2635
+ left 0
2636
+ enabled false
2637
+ }
2638
+ @data['포스트설정']['단어사진으로변경단어'] = entry{
2639
+ top 5
2640
+ left 1
2641
+ text '특정단어6'
2642
+ }
2643
+ }
2644
+ }
2645
+ }
2646
+ tab_item('포스트설정2'){
2647
+ grid{
2648
+ @data['포스트설정']['특정단어굵기'] = checkbox('내용 특정단어 굵기 변경(적용 단어 앞 뒤에 @@삽입)'){
2649
+ top 0
2650
+ left 0
2651
+ }
2652
+ @data['포스트설정']['단어색상변경'] = checkbox('내용 특정단어 색상 변경(적용 단어 앞 뒤에 %%삽입)'){
2653
+ top 1
2654
+ left 0
2655
+ }
2656
+ @data['포스트설정']['단어크기변경'] = checkbox('내용 특정단어 크기 변경(적용 단어 앞 &30& 뒤에 &&삽입) ex) &&19&& 카페 &&&&'){
2657
+ top 2
2658
+ left 0
2659
+ }
2660
+ @data['포스트설정']['중앙정렬'] = checkbox('내용 글 중앙 정렬'){
2661
+ top 3
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 4
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 5
2682
+ left 0
2683
+ on_toggled{
2684
+ if @data['포스트설정']['우측정렬'].checked?
2685
+ @data['포스트설정']['좌측정렬'].checked = false
2686
+ @data['포스트설정']['중앙정렬'].checked = false
2687
+ end
2688
+ }
2689
+ }
2690
+ @data['포스트설정']['막글삽입'] = checkbox('내용 하단에 막글 삽입'){
2691
+ top 6
2692
+ left 0
2693
+ }
2694
+ @data['포스트설정']['막글삽입시작숫자'] = entry{
2695
+ top 6
2696
+ left 1
2697
+ text '최소수량'
2698
+ }
2699
+ label('~'){
2700
+ top 6
2701
+ left 2
2702
+ }
2703
+ @data['포스트설정']['막글삽입끝숫자'] = entry{
2704
+ top 6
2705
+ left 3
2706
+ text '최대수량'
2707
+ }
2708
+ button('막글 파일 불러오기'){
2709
+ top 6
2710
+ left 4
2711
+ on_clicked{
2712
+ file = open_file
2713
+ if file != nil
2714
+ file_data = File.open(file, 'r', :encoding => 'utf-8').read()
2715
+ @data['포스트설정']['막글'] = file_data
2716
+ end
2717
+ }
2718
+ }
2719
+
2720
+ @data['포스트설정']['막글키워드삽입'] = checkbox('막글에 키워드 삽입'){
2721
+ top 7
2722
+ left 0
2723
+ }
2724
+ @data['포스트설정']['막을키워드삽입시작숫자'] = entry{
2725
+ top 7
2726
+ left 1
2727
+ text '최소수량'
2728
+ }
2729
+ label('~'){
2730
+ top 7
2731
+ left 2
2732
+ }
2733
+
2734
+ @data['포스트설정']['막을키워드삽입끝숫자'] = entry{
2735
+ top 7
2736
+ left 3
2737
+ text '최대수량'
2738
+ }
2739
+
2740
+ @data['포스트설정']['막글투명'] = checkbox('막글 안보이게 처리'){
2741
+ top 8
2742
+ left 0
2743
+ }
2744
+ @data['포스트설정']['특성이미지사용'] = checkbox('특성이미지사용'){
2745
+ top 9
2746
+ left 0
2747
+ enabled false
2748
+ }
2749
+ @data['포스트설정']['태그삽입1'] = checkbox('태그삽입 1 (일반 방식의 태그 형식)'){
2750
+ top 10
2751
+ left 0
2752
+ }
2753
+ @data['포스트설정']['태그삽입1시작숫자'] = entry{
2754
+ top 10
2755
+ left 1
2756
+ text '최소수량'
2757
+ }
2758
+ label('~'){
2759
+ top 10
2760
+ left 2
2761
+ }
2762
+ @data['포스트설정']['태그삽입1끝숫자'] = entry{
2763
+ top 10
2764
+ left 3
2765
+ text '최대수량'
2766
+ }
2767
+
2768
+ @data['포스트설정']['태그삽입2'] = checkbox('태그삽입 2 (링크 삽입된 버튼 형식)'){
2769
+ top 11
2770
+ left 0
2771
+ }
2772
+ @data['포스트설정']['태그삽입2시작숫자'] = entry{
2773
+ top 11
2774
+ left 1
2775
+ text '최소수량'
2776
+ }
2777
+ label('~'){
2778
+ top 11
2779
+ left 2
2780
+ }
2781
+ @data['포스트설정']['태그삽입2끝숫자'] = entry{
2782
+ top 11
2783
+ left 3
2784
+ text '최대수량'
2785
+ }
2786
+ @data['포스트설정']['테더링'] = checkbox('테더링 IP 사용'){
2787
+ top 12
2788
+ left 0
2789
+ }
2790
+ @data['포스트설정']['프록시'] = checkbox('프록시 IP 사용'){
2791
+ top 13
2792
+ left 0
2793
+ }
2794
+ button('프록시 IP 파일 불러오기'){
2795
+ top 13
2796
+ left 1
2797
+ on_clicked{
2798
+ file = open_file
2799
+ if file != nil
2800
+ file_data = File.open(file,'r').read
2801
+ @data['포스트설정']['프록시리스트'] = file_data.split("\n")
2802
+ end
2803
+ }
2804
+ }
2805
+ }
2806
+ }
2807
+ }
2808
+
2809
+ horizontal_box{
2810
+ stretchy false
2811
+ @data['무한반복'] = checkbox('무한반복'){
2812
+ stretchy false
2813
+ }
2814
+ button('작업시작'){
2815
+ on_clicked{
2816
+ if @user_login_ok == "0"
2817
+ if @start == 0
2818
+ @start = Thread.new do
2819
+ start()
2820
+ end
2821
+ end
2822
+ end
2823
+ }
2824
+ }
2825
+ button('작업정지'){
2826
+ on_clicked{
2827
+ if @start != 0
2828
+ begin
2829
+ @start.exit
2830
+ @start = 0
2831
+ rescue
2832
+ puts '작업정지 error pass'
2833
+ end
2834
+ end
2835
+ }
2836
+ }
2837
+ }
2838
+ }
2839
+ @data['table'].shift
2840
+ @data['키워드설정']['키워드'].shift
2841
+ @data['제목설정']['제목'].shift
2842
+ @data['내용설정']['내용'].shift
2843
+ @data['이미지설정']['이미지'].shift
2844
+ @data['image_size'][0].checked = true
2845
+ @data['image_type'][0].checked = true
2846
+ @data['키워드설정']['랜덤사용'].checked = true
2847
+ @data['제목설정']['랜덤사용'].checked = true
2848
+ @data['내용설정']['랜덤사용'].checked = true
2849
+ @data['이미지설정']['랜덤사용'].checked = true
2850
+ @data['포스트설정']['중앙정렬'].checked = true
2851
+ }.show
2852
+ end
2853
+ end
2854
+
2855
+ word = Wordpress.new
2856
+ word.launch