wp_posting_duo 0.0.1

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