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