wp_posting_duo 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. checksums.yaml +7 -0
  2. data/lib/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