zon_blog_comment 0.0.15 → 0.0.20
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 +4 -4
- data/lib/zon_blog_comment.rb +959 -643
- metadata +2 -2
data/lib/zon_blog_comment.rb
CHANGED
@@ -232,12 +232,13 @@ class Naver
|
|
232
232
|
return answer
|
233
233
|
end
|
234
234
|
|
235
|
-
def update(content,image,option,counts_number,keyword,api_key)
|
235
|
+
def update(content,image,option,counts_number,keyword,blog_url,api_key)
|
236
236
|
|
237
237
|
@keyword = keyword
|
238
238
|
@content = content
|
239
239
|
@api_key = api_key
|
240
|
-
|
240
|
+
@blog_url = blog_url
|
241
|
+
|
241
242
|
|
242
243
|
|
243
244
|
|
@@ -415,12 +416,114 @@ class Naver
|
|
415
416
|
|
416
417
|
page_no = rand(1..100)
|
417
418
|
end
|
419
|
+
|
420
|
+
|
421
|
+
elsif option['타겟블로그'] == 'true'
|
422
|
+
@driver.get(blog_url)
|
423
|
+
|
424
|
+
wait = Selenium::WebDriver::Wait.new(:timeout => 20) # 아이프레임 선택
|
425
|
+
wait.until { @driver.find_element(:xpath, '//*[@id="mainFrame"]') } # 아이프레임 선택
|
426
|
+
sleep(1)
|
427
|
+
@driver.switch_to.frame(@driver.find_element(:xpath, '//*[@id="mainFrame"]')) # 아이프레임 선택
|
428
|
+
sleep(1)
|
429
|
+
|
430
|
+
@driver.find_element(:xpath, '//*[@id="toplistSpanBlind"]').click
|
431
|
+
sleep(1)
|
432
|
+
element = @driver.find_element(:xpath, '//*[@class="aline"]')
|
433
|
+
@driver.execute_script("arguments[0].scrollIntoView({block: 'center', inline: 'center'})", element)#크롤 이동
|
434
|
+
sleep(2)
|
435
|
+
element = @driver.find_element(:xpath, '//*[@class="aline"]').click
|
436
|
+
sleep(1)
|
437
|
+
@driver.find_element(:xpath, '//div[@id="changeListCount"]//a[@data-value="30"]').click
|
438
|
+
|
439
|
+
@driver.switch_to.default_content
|
440
|
+
|
441
|
+
|
442
|
+
wait = Selenium::WebDriver::Wait.new(:timeout => 20) # 아이프레임 선택
|
443
|
+
wait.until { @driver.find_element(:xpath, '//*[@id="mainFrame"]') } # 아이프레임 선택
|
444
|
+
sleep(1)
|
445
|
+
@driver.switch_to.frame(@driver.find_element(:xpath, '//*[@id="mainFrame"]')) # 아이프레임 선택
|
446
|
+
sleep(1)
|
447
|
+
|
448
|
+
# 수집된 URL을 저장할 배열
|
449
|
+
collected_urls = []
|
450
|
+
|
451
|
+
# 현재 페이지에서 수집할 링크 개수
|
452
|
+
remaining_count = counts_number
|
453
|
+
|
454
|
+
# 페이지 번호
|
455
|
+
page_number = 1
|
456
|
+
|
457
|
+
# 페이지가 끝날 때까지 반복
|
458
|
+
while remaining_count > 0
|
459
|
+
# 요소가 로드될 때까지 대기
|
460
|
+
wait = Selenium::WebDriver::Wait.new(:timeout => 10)
|
461
|
+
wait.until { @driver.find_element(:xpath, '//form[@name="listTopForm"]//tbody//tr//td[@class="title"]//div[@class="wrap_td"]//span[@class="ell2 pcol2"]//a[@href]') }
|
462
|
+
|
463
|
+
# 현재 페이지에서 링크 수집 (form 태그 내에서 a 태그를 찾음)
|
464
|
+
links = @driver.find_elements(:xpath, '//form[@name="listTopForm"]//tbody//tr//td[@class="title"]//div[@class="wrap_td"]//span[@class="ell2 pcol2"]//a[@href]') # 정확한 XPath 경로로 a 태그 찾기
|
465
|
+
|
466
|
+
links.each do |link|
|
467
|
+
post_url = link.attribute('href')
|
468
|
+
if post_url && collected_urls.length < counts_number
|
469
|
+
# 기존 URL에서 blogId와 logNo를 추출하여 변형
|
470
|
+
if post_url.include?("blog.naver.com/PostView.naver")
|
471
|
+
# URL에서 blogId와 logNo 추출
|
472
|
+
blog_id = post_url.split("blogId=")[1].split("&")[0]
|
473
|
+
log_no = post_url.split("logNo=")[1].split("&")[0]
|
474
|
+
|
475
|
+
# 변형된 URL 생성
|
476
|
+
new_url = "https://blog.naver.com/#{blog_id}/#{log_no}"
|
477
|
+
|
478
|
+
# 변형된 URL을 배열에 추가
|
479
|
+
collected_urls << new_url
|
480
|
+
remaining_count -= 1
|
481
|
+
end
|
482
|
+
end
|
483
|
+
end
|
484
|
+
|
485
|
+
# 수집된 개수가 요구한 수에 도달하면 종료
|
486
|
+
break if collected_urls.length >= counts_number
|
487
|
+
|
488
|
+
# 10페이지까지 수집되었고, 다음 페이지가 있으면 "다음" 버튼 클릭하여 계속 수집
|
489
|
+
if page_number % 10 == 0
|
490
|
+
begin
|
491
|
+
# "다음" 링크 찾기 (다음 페이지 링크)
|
492
|
+
next_page_link = @driver.find_element(:xpath, "//a[text()='다음']")
|
493
|
+
next_page_link.click
|
494
|
+
page_number += 1 # 페이지 번호 증가
|
495
|
+
sleep(2) # 페이지가 로드되기 전에 잠시 대기
|
496
|
+
# 페이지가 변경될 때까지 대기
|
497
|
+
wait.until { @driver.find_element(:xpath, '//form[@name="listTopForm"]//tbody//tr//td[@class="title"]//div[@class="wrap_td"]//span[@class="ell2 pcol2"]//a[@href]') }
|
498
|
+
rescue Selenium::WebDriver::Error::NoSuchElementError
|
499
|
+
# 만약 "다음" 버튼이 없으면 종료
|
500
|
+
break
|
501
|
+
end
|
502
|
+
else
|
503
|
+
# 페이지 번호가 더 있으면 다음 페이지로 이동
|
504
|
+
begin
|
505
|
+
next_page_link = @driver.find_element(:xpath, "//a[text()='#{page_number + 1}']")
|
506
|
+
next_page_link.click
|
507
|
+
page_number += 1
|
508
|
+
sleep(2)
|
509
|
+
# 페이지가 변경될 때까지 대기
|
510
|
+
wait.until { @driver.find_element(:xpath, '//form[@name="listTopForm"]//tbody//tr//td[@class="title"]//div[@class="wrap_td"]//span[@class="ell2 pcol2"]//a[@href]') }
|
511
|
+
rescue Selenium::WebDriver::Error::NoSuchElementError
|
512
|
+
# 만약 다음 페이지 링크가 없으면 종료
|
513
|
+
break
|
514
|
+
end
|
515
|
+
end
|
516
|
+
end
|
517
|
+
|
518
|
+
@driver.switch_to.default_content
|
418
519
|
end
|
520
|
+
|
521
|
+
|
419
522
|
|
420
523
|
collected_urls.each do |url|
|
421
524
|
# 각 post-url로 이동
|
422
525
|
@driver.get(url)
|
423
|
-
|
526
|
+
|
424
527
|
wait = Selenium::WebDriver::Wait.new(:timeout => 20) # 아이프레임 선택
|
425
528
|
wait.until { @driver.find_element(:xpath, '//*[@id="mainFrame"]') } # 아이프레임 선택
|
426
529
|
sleep(1)
|
@@ -780,7 +883,7 @@ class Naver
|
|
780
883
|
# 댓글 입력
|
781
884
|
element = @driver.find_element(:xpath, '//*[@class="u_ico _icon pcol3"]')
|
782
885
|
@driver.execute_script("arguments[0].scrollIntoView({block: 'center', inline: 'center'})", element)#크롤 이동
|
783
|
-
sleep(
|
886
|
+
sleep(2)
|
784
887
|
|
785
888
|
# 좋아요 버튼을 찾기
|
786
889
|
like_button = @driver.find_element(:xpath, '//div[@class="u_likeit_list_module _reactionModule"]//a[@role="button"]')
|
@@ -893,7 +996,7 @@ class Naver
|
|
893
996
|
@driver.find_element(:xpath, '//*[@class="u_cbox_guide"]').click
|
894
997
|
sleep(1)
|
895
998
|
Clipboard.copy(answer)
|
896
|
-
sleep(
|
999
|
+
sleep(1)
|
897
1000
|
@driver.action.key_down(:control).send_keys('v').key_up(:control).perform
|
898
1001
|
sleep(1)
|
899
1002
|
else
|
@@ -901,7 +1004,7 @@ class Naver
|
|
901
1004
|
@driver.find_element(:xpath, '//*[@class="u_cbox_guide"]').click
|
902
1005
|
sleep(1)
|
903
1006
|
Clipboard.copy(content)
|
904
|
-
sleep(
|
1007
|
+
sleep(1)
|
905
1008
|
@driver.action.key_down(:control).send_keys('v').key_up(:control).perform
|
906
1009
|
rescue
|
907
1010
|
end
|
@@ -914,67 +1017,94 @@ class Naver
|
|
914
1017
|
# '이모티콘' 버튼 클릭
|
915
1018
|
@driver.find_element(:xpath, '//*[@data-action="write#beforeToggleSticker"]').click
|
916
1019
|
sleep(1)
|
917
|
-
|
918
|
-
|
919
|
-
|
920
|
-
|
921
|
-
|
922
|
-
|
923
|
-
|
924
|
-
|
925
|
-
|
926
|
-
|
927
|
-
|
928
|
-
|
929
|
-
|
930
|
-
# 해당 요소 클릭
|
931
|
-
selected_element.click
|
932
|
-
#puts "클릭된 이data-id: #{selected_data_id}"
|
933
|
-
|
934
|
-
sleep(1.5)
|
935
|
-
|
936
|
-
# 2. data-id에 해당하는 data-param을 찾고 랜덤으로 클릭
|
937
|
-
case selected_data_id
|
938
|
-
when "cafe_005"
|
939
|
-
data_params = ["cafe_005-1", "cafe_005-2", "cafe_005-3", "cafe_005-4", "cafe_005-5", "cafe_005-6", "cafe_005-7", "cafe_005-8", "cafe_005-9"]
|
940
|
-
when "cafe_001"
|
941
|
-
data_params = ["cafe_001-1", "cafe_001-2", "cafe_001-3", "cafe_001-5", "cafe_001-6", "cafe_001-7", "cafe_001-8", "cafe_001-9"]
|
942
|
-
when "motion2d_01"
|
943
|
-
data_params = ["motion2d_01-1", "motion2d_01-2", "motion2d_01-3", "motion2d_01-4", "motion2d_01-5", "motion2d_01-6", "motion2d_01-7", "motion2d_01-8", "motion2d_01-9"]
|
944
|
-
when "motion3d_02"
|
945
|
-
data_params = ["motion3d_02-1", "motion3d_02-2", "motion3d_02-3", "motion3d_02-4", "motion3d_02-5", "motion3d_02-6", "motion3d_02-7", "motion3d_02-8", "motion3d_02-9"]
|
946
|
-
when "cafe_004"
|
947
|
-
data_params = ["cafe_004-1", "cafe_004-2", "cafe_004-3", "cafe_004-4", "cafe_004-5", "cafe_004-6", "cafe_004-7", "cafe_004-8", "cafe_004-9"]
|
948
|
-
when "cafe_002"
|
949
|
-
data_params = ["cafe_002-1", "cafe_002-2", "cafe_002-3", "cafe_002-4", "cafe_002-5", "cafe_002-6", "cafe_002-7", "cafe_002-8", "cafe_002-9"]
|
950
|
-
else
|
951
|
-
data_params = []
|
1020
|
+
|
1021
|
+
actions = [
|
1022
|
+
lambda {
|
1023
|
+
begin
|
1024
|
+
@driver.find_element(:xpath, '//*[@data-param="motion2d_01"]').click
|
1025
|
+
sleep(2)
|
1026
|
+
|
1027
|
+
random_number = (1..24).to_a.sample
|
1028
|
+
@driver.find_element(:xpath, '//div[@class="u_cbox_sticker_area"]//ul[@data-id="motion2d_01"]//li[@class="u_cbox_sticker_item"]//button[@data-param="motion2d_01-'+random_number.to_s+'"]').click
|
1029
|
+
sleep(2)
|
1030
|
+
|
1031
|
+
rescue
|
952
1032
|
end
|
1033
|
+
},
|
1034
|
+
lambda {
|
953
1035
|
|
954
|
-
|
955
|
-
|
956
|
-
# 모든 'u_cbox_sticker_area' 요소를 찾기
|
957
|
-
areas = @driver.find_elements(:xpath, '//*[@class="u_cbox_sticker_area"]')
|
958
|
-
|
959
|
-
# 각 'u_cbox_sticker_area' 내에서 랜덤으로 data-param을 찾기
|
960
|
-
areas.each do |area|
|
961
|
-
# 각 area 내에서 해당 data-id를 가진 button 찾기
|
962
|
-
buttons = area.find_elements(:xpath, ".//button[contains(@data-param, '#{selected_data_id}')]")
|
963
|
-
|
964
|
-
# 해당 버튼이 있다면
|
965
|
-
if buttons.any?
|
966
|
-
# data-param에 해당하는 버튼을 랜덤으로 클릭
|
967
|
-
button_to_click = buttons.sample
|
968
|
-
button_to_click.click
|
1036
|
+
begin
|
1037
|
+
@driver.find_element(:xpath, '//*[@data-param="motion3d_02"]').click
|
969
1038
|
sleep(2)
|
970
|
-
|
971
|
-
|
972
|
-
|
1039
|
+
|
1040
|
+
random_number = (1..24).to_a.sample
|
1041
|
+
@driver.find_element(:xpath, '//div[@class="u_cbox_sticker_area"]//ul[@data-id="motion3d_02"]//li[@class="u_cbox_sticker_item"]//button[@data-param="motion3d_02-'+random_number.to_s+'"]').click
|
1042
|
+
sleep(1)
|
1043
|
+
@driver.action.key_down(:enter).key_up(:enter).perform
|
1044
|
+
sleep(2)
|
1045
|
+
|
1046
|
+
|
1047
|
+
rescue
|
1048
|
+
end
|
1049
|
+
},
|
1050
|
+
lambda {
|
1051
|
+
|
1052
|
+
begin
|
1053
|
+
@driver.find_element(:xpath, '//*[@data-param="cafe_004"]').click
|
1054
|
+
sleep(2)
|
1055
|
+
|
1056
|
+
random_number = (1..28).to_a.sample
|
1057
|
+
@driver.find_element(:xpath, '//div[@class="u_cbox_sticker_area"]//ul[@data-id="cafe_004"]//li[@class="u_cbox_sticker_item"]//button[@data-param="cafe_004-'+random_number.to_s+'"]').click
|
1058
|
+
sleep(2)
|
1059
|
+
|
1060
|
+
rescue
|
973
1061
|
end
|
974
|
-
|
975
|
-
|
1062
|
+
},
|
1063
|
+
lambda {
|
1064
|
+
|
1065
|
+
begin
|
1066
|
+
@driver.find_element(:xpath, '//*[@data-param="cafe_005"]').click
|
1067
|
+
sleep(2)
|
1068
|
+
|
1069
|
+
random_number = (1..26).to_a.sample
|
1070
|
+
@driver.find_element(:xpath, '//div[@class="u_cbox_sticker_area"]//ul[@data-id="cafe_005"]//li[@class="u_cbox_sticker_item"]//button[@data-param="cafe_005-'+random_number.to_s+'"]').click
|
1071
|
+
sleep(2)
|
1072
|
+
|
1073
|
+
rescue
|
976
1074
|
end
|
1075
|
+
},
|
1076
|
+
lambda {
|
977
1077
|
|
1078
|
+
begin
|
1079
|
+
@driver.find_element(:xpath, '//*[@data-param="cafe_001"]').click
|
1080
|
+
sleep(2)
|
1081
|
+
|
1082
|
+
random_number = (1..24).to_a.sample
|
1083
|
+
@driver.find_element(:xpath, '//div[@class="u_cbox_sticker_area"]//ul[@data-id="cafe_001"]//li[@class="u_cbox_sticker_item"]//button[@data-param="cafe_001-'+random_number.to_s+'"]').click
|
1084
|
+
sleep(1)
|
1085
|
+
@driver.action.key_down(:enter).key_up(:enter).perform
|
1086
|
+
sleep(2)
|
1087
|
+
|
1088
|
+
rescue
|
1089
|
+
end
|
1090
|
+
},
|
1091
|
+
lambda {
|
1092
|
+
|
1093
|
+
begin
|
1094
|
+
@driver.find_element(:xpath, '//*[@data-param="cafe_002"]').click
|
1095
|
+
sleep(2)
|
1096
|
+
|
1097
|
+
random_number = (1..24).to_a.sample
|
1098
|
+
@driver.find_element(:xpath, '//div[@class="u_cbox_sticker_area"]//ul[@data-id="cafe_002"]//li[@class="u_cbox_sticker_item"]//button[@data-param="cafe_002-'+random_number.to_s+'"]').click
|
1099
|
+
sleep(1)
|
1100
|
+
@driver.action.key_down(:enter).key_up(:enter).perform
|
1101
|
+
sleep(2)
|
1102
|
+
rescue
|
1103
|
+
end
|
1104
|
+
}
|
1105
|
+
]
|
1106
|
+
actions.sample.call
|
1107
|
+
|
978
1108
|
|
979
1109
|
elsif option['이미지자동삽입'] == 'true'
|
980
1110
|
begin
|
@@ -992,6 +1122,7 @@ class Naver
|
|
992
1122
|
sleep(1)
|
993
1123
|
element = @driver.find_element(:xpath, '//*[@data-uiselector="writeButton"]')
|
994
1124
|
@driver.execute_script("arguments[0].scrollIntoView({block: 'center', inline: 'center'})", element) # 크롤 이동
|
1125
|
+
sleep(2)
|
995
1126
|
@driver.find_element(:xpath, '//*[@data-uiselector="writeButton"]').click #등록버튼
|
996
1127
|
posting_url = @driver.current_url
|
997
1128
|
puts "#{posting_url} [댓글 작성 완료 !!]".cyan
|
@@ -1110,7 +1241,7 @@ end
|
|
1110
1241
|
content_soon = 0
|
1111
1242
|
@my_ip = 'init'
|
1112
1243
|
image_soon = 0
|
1113
|
-
|
1244
|
+
blog_url_soon = 0
|
1114
1245
|
keyword_soon = 0
|
1115
1246
|
@inumber2 = 0
|
1116
1247
|
@video = Array.new
|
@@ -1158,7 +1289,7 @@ end
|
|
1158
1289
|
puts 'Tethering IP change...'
|
1159
1290
|
|
1160
1291
|
stdout, stderr, status = Open3.capture3('./adb devices')
|
1161
|
-
|
1292
|
+
|
1162
1293
|
if status.success?
|
1163
1294
|
device_id = stdout.split("\n")[1].split("\t")[0]
|
1164
1295
|
puts device_id
|
@@ -1166,42 +1297,53 @@ end
|
|
1166
1297
|
# ADB 서버 초기화
|
1167
1298
|
puts 'adb kill-server'
|
1168
1299
|
Open3.capture3('./adb kill-server')
|
1169
|
-
sleep(
|
1300
|
+
sleep(5) # ADB 서버가 안정될 시간을 충분히 주기
|
1170
1301
|
|
1171
1302
|
# 다시 ADB 서버 실행
|
1172
1303
|
puts 'adb start-server'
|
1173
1304
|
Open3.capture3('./adb start-server')
|
1174
|
-
sleep(
|
1305
|
+
sleep(5) # ADB 서버가 안정될 시간을 충분히 주기
|
1175
1306
|
|
1176
1307
|
# 데이터를 끄고 켜기
|
1177
1308
|
puts 'adb -s ' + device_id + ' shell svc data disable'
|
1178
|
-
stdout2, stderr2, status2 = Open3.capture3('./adb -s '+device_id+' shell svc data disable')
|
1179
|
-
|
1309
|
+
stdout2, stderr2, status2 = Open3.capture3('./adb -s ' + device_id + ' shell svc data disable')
|
1310
|
+
puts "stderr: #{stderr2}" unless status2.success? # 오류 출력
|
1311
|
+
sleep(5) # 네트워크가 안정될 시간을 더 줍니다.
|
1180
1312
|
puts 'adb -s ' + device_id + ' shell svc data enable'
|
1181
|
-
Open3.capture3('./adb -s '+device_id+' shell svc data enable')
|
1182
|
-
|
1313
|
+
stdout3, stderr3, status3 = Open3.capture3('./adb -s ' + device_id + ' shell svc data enable')
|
1314
|
+
puts "stderr: #{stderr3}" unless status3.success? # 오류 출력
|
1315
|
+
sleep(5) # 네트워크가 안정될 시간을 더 줍니다.
|
1183
1316
|
puts 'adb ok'
|
1184
1317
|
sleep(8)
|
1185
|
-
|
1318
|
+
|
1319
|
+
# IP 변경 확인을 위한 람다 함수
|
1186
1320
|
robot_ip = lambda do
|
1187
|
-
|
1188
|
-
|
1189
|
-
|
1190
|
-
|
1321
|
+
begin
|
1322
|
+
# IP 변경 확인
|
1323
|
+
http = HTTP.get('https://www.findip.kr/')
|
1324
|
+
noko = Nokogiri::HTML(http.to_s)
|
1325
|
+
|
1326
|
+
current_ip = noko.xpath('/html/body/header/h2').text.strip
|
1327
|
+
if current_ip != @my_ip
|
1328
|
+
@my_ip = current_ip
|
1191
1329
|
puts "IP 변경됨[ #{@my_ip} ]"
|
1192
|
-
|
1193
|
-
puts @my_ip
|
1194
|
-
puts '
|
1195
|
-
sleep(
|
1196
|
-
robot_ip[]
|
1330
|
+
else
|
1331
|
+
puts "현재 IP: #{@my_ip}"
|
1332
|
+
puts 'IP 변경이 감지되지 않았습니다. 다시 시도합니다...'
|
1333
|
+
sleep(5) # 여유롭게 대기 시간 증가
|
1334
|
+
robot_ip[] # 재시도
|
1335
|
+
end
|
1336
|
+
rescue HTTP::ConnectionError => e
|
1337
|
+
puts "네트워크 오류 발생: #{e.message}. 재시도 중..."
|
1338
|
+
sleep(5) # 재시도 간 여유 시간 추가
|
1339
|
+
retry # 재시도
|
1197
1340
|
end
|
1198
|
-
|
1199
|
-
|
1200
|
-
|
1341
|
+
end
|
1342
|
+
robot_ip[] # IP 확인 시작
|
1201
1343
|
else
|
1202
|
-
|
1344
|
+
puts "adb devices 명령어 실행 실패. stderr: #{stderr}"
|
1203
1345
|
end
|
1204
|
-
|
1346
|
+
end
|
1205
1347
|
|
1206
1348
|
|
1207
1349
|
|
@@ -1283,6 +1425,25 @@ end
|
|
1283
1425
|
@data['table'] << []
|
1284
1426
|
@data['table'].pop
|
1285
1427
|
|
1428
|
+
|
1429
|
+
|
1430
|
+
if @data['블로그설정']['블로그'].length == 0
|
1431
|
+
blog_url = ''
|
1432
|
+
else
|
1433
|
+
if @data['블로그설정']['랜덤사용'].checked?
|
1434
|
+
blog_url = @data['블로그설정']['블로그'].sample[1]
|
1435
|
+
else
|
1436
|
+
blog_url = @data['블로그설정']['블로그'][blog_url_soon][1]
|
1437
|
+
blog_url_soon += 1
|
1438
|
+
if blog_url_soon > @data['블로그설정']['블로그'].length-1
|
1439
|
+
blog_url_soon = 0
|
1440
|
+
end
|
1441
|
+
end
|
1442
|
+
end
|
1443
|
+
|
1444
|
+
@data['table'][index][-1] = 25
|
1445
|
+
@data['table'] << []
|
1446
|
+
@data['table'].pop
|
1286
1447
|
|
1287
1448
|
#포스팅 get 데이터 가저오기#############################
|
1288
1449
|
|
@@ -1375,6 +1536,13 @@ end
|
|
1375
1536
|
else
|
1376
1537
|
option['블로그무작위'] = 'false'
|
1377
1538
|
end
|
1539
|
+
|
1540
|
+
if @data['포스트설정']['타겟블로그'].checked?
|
1541
|
+
option['타겟블로그'] = 'true'
|
1542
|
+
else
|
1543
|
+
option['타겟블로그'] = 'false'
|
1544
|
+
end
|
1545
|
+
|
1378
1546
|
@data['table'][index][-1] = 70
|
1379
1547
|
@data['table'] << []
|
1380
1548
|
@data['table'].pop
|
@@ -1462,7 +1630,7 @@ end
|
|
1462
1630
|
# 댓글 설정 수 카운트
|
1463
1631
|
counts_number = @data['table'][index][6].to_i
|
1464
1632
|
api_key = @data['포스트설정']['api_key'].text.to_s.force_encoding('utf-8')
|
1465
|
-
naver.update(content,image,option,counts_number,keyword,api_key)
|
1633
|
+
naver.update(content,image,option,counts_number,keyword,blog_url,api_key)
|
1466
1634
|
|
1467
1635
|
|
1468
1636
|
|
@@ -1506,8 +1674,8 @@ end
|
|
1506
1674
|
@data['게시판설정']['게시판'] = [[false, '']]
|
1507
1675
|
@data['키워드설정'] = Hash.new
|
1508
1676
|
@data['키워드설정']['키워드'] = [[false, '']]
|
1509
|
-
@data['
|
1510
|
-
@data['
|
1677
|
+
@data['블로그설정'] = Hash.new
|
1678
|
+
@data['블로그설정']['블로그'] = [[false, '']]
|
1511
1679
|
@data['내용설정'] = Hash.new
|
1512
1680
|
@data['내용설정']['내용'] = [[false, '']]
|
1513
1681
|
@data['이미지설정'] = Hash.new
|
@@ -1649,11 +1817,11 @@ end
|
|
1649
1817
|
end
|
1650
1818
|
|
1651
1819
|
while true
|
1652
|
-
if @data['
|
1820
|
+
if @data['블로그설정']['블로그'].length == 0
|
1653
1821
|
break
|
1654
1822
|
end
|
1655
1823
|
|
1656
|
-
@data['
|
1824
|
+
@data['블로그설정']['블로그'].pop
|
1657
1825
|
end
|
1658
1826
|
|
1659
1827
|
while true
|
@@ -1994,658 +2162,804 @@ end
|
|
1994
2162
|
|
1995
2163
|
|
1996
2164
|
|
1997
|
-
|
1998
|
-
|
1999
|
-
|
2000
|
-
|
2001
|
-
stretchy false
|
2002
|
-
|
2003
|
-
button(' 이미지불러오기 '){
|
2004
|
-
|
2005
|
-
on_clicked{
|
2006
|
-
file = open_file
|
2007
|
-
if file != nil
|
2008
|
-
file_path = file.gsub('/', '\\')
|
2009
|
-
@data['이미지설정']['이미지'] << [false, file, file]
|
2010
|
-
@data['이미지설정']['이미지'] << [false, file, file]
|
2011
|
-
@data['이미지설정']['이미지'].pop
|
2012
|
-
end
|
2013
|
-
}
|
2014
|
-
}
|
2015
|
-
|
2016
|
-
|
2017
|
-
}
|
2018
|
-
horizontal_box{
|
2165
|
+
tab_item('Step.2 내용세팅'){
|
2166
|
+
horizontal_box{
|
2167
|
+
vertical_box{
|
2168
|
+
horizontal_box{
|
2019
2169
|
stretchy false
|
2020
|
-
|
2021
|
-
|
2022
|
-
|
2023
|
-
|
2024
|
-
|
2025
|
-
|
2026
|
-
|
2027
|
-
|
2028
|
-
|
2029
|
-
|
2030
|
-
|
2031
|
-
}
|
2032
|
-
button(' 선택해제 '){
|
2033
|
-
top 1
|
2034
|
-
left 1
|
2035
|
-
on_clicked{
|
2036
|
-
for n in 0..@data['이미지설정']['이미지'].length-1
|
2037
|
-
@data['이미지설정']['이미지'][n][0] = false
|
2038
|
-
@data['이미지설정']['이미지'] << []
|
2039
|
-
@data['이미지설정']['이미지'].pop
|
2040
|
-
end
|
2041
|
-
}
|
2042
|
-
}
|
2043
|
-
button(' 삭제하기 '){
|
2044
|
-
top 1
|
2045
|
-
left 2
|
2046
|
-
on_clicked{
|
2047
|
-
m = Array.new
|
2048
|
-
for n in 0..@data['이미지설정']['이미지'].length-1
|
2049
|
-
if @data['이미지설정']['이미지'][n][0] == true
|
2050
|
-
m << n
|
2051
|
-
end
|
2052
|
-
end
|
2053
|
-
|
2054
|
-
m.reverse.each do |i|
|
2055
|
-
@data['이미지설정']['이미지'].delete_at(i)
|
2056
|
-
end
|
2057
|
-
|
2058
|
-
@data['이미지설정']['이미지'].delete(nil)
|
2059
|
-
}
|
2170
|
+
|
2171
|
+
button(' 이미지불러오기 '){
|
2172
|
+
|
2173
|
+
on_clicked{
|
2174
|
+
file = open_file
|
2175
|
+
if file != nil
|
2176
|
+
file_path = file.gsub('/', '\\')
|
2177
|
+
@data['이미지설정']['이미지'] << [false, file, file]
|
2178
|
+
@data['이미지설정']['이미지'] << [false, file, file]
|
2179
|
+
@data['이미지설정']['이미지'].pop
|
2180
|
+
end
|
2060
2181
|
}
|
2061
2182
|
}
|
2062
|
-
|
2063
|
-
|
2064
|
-
@data['이미지설정']['순서사용'] = checkbox('순서사용'){
|
2065
|
-
stretchy false
|
2066
|
-
on_toggled{ |c|
|
2067
|
-
if c.checked?
|
2068
|
-
@data['이미지설정']['랜덤사용'].checked = false
|
2069
|
-
end
|
2070
|
-
}
|
2071
|
-
}
|
2072
|
-
@data['이미지설정']['랜덤사용'] = checkbox('랜덤사용'){
|
2073
|
-
stretchy false
|
2074
|
-
on_toggled{ |c|
|
2075
|
-
if c.checked?
|
2076
|
-
@data['이미지설정']['순서사용'].checked = false
|
2077
|
-
end
|
2078
|
-
}
|
2079
|
-
}
|
2080
|
-
}
|
2183
|
+
|
2184
|
+
|
2081
2185
|
}
|
2082
|
-
|
2083
|
-
|
2084
|
-
|
2085
|
-
|
2186
|
+
horizontal_box{
|
2187
|
+
stretchy false
|
2188
|
+
grid{
|
2189
|
+
button(' 전체선택 '){
|
2190
|
+
top 1
|
2191
|
+
left 0
|
2192
|
+
on_clicked{
|
2193
|
+
for n in 0..@data['이미지설정']['이미지'].length-1
|
2194
|
+
@data['이미지설정']['이미지'][n][0] = true
|
2195
|
+
@data['이미지설정']['이미지'] << []
|
2196
|
+
@data['이미지설정']['이미지'].pop
|
2197
|
+
end
|
2086
2198
|
}
|
2087
|
-
|
2088
|
-
|
2199
|
+
}
|
2200
|
+
button(' 선택해제 '){
|
2201
|
+
top 1
|
2202
|
+
left 1
|
2203
|
+
on_clicked{
|
2204
|
+
for n in 0..@data['이미지설정']['이미지'].length-1
|
2205
|
+
@data['이미지설정']['이미지'][n][0] = false
|
2206
|
+
@data['이미지설정']['이미지'] << []
|
2207
|
+
@data['이미지설정']['이미지'].pop
|
2208
|
+
end
|
2089
2209
|
}
|
2090
|
-
|
2091
|
-
cell_rows @data['이미지설정']['이미지']
|
2092
2210
|
}
|
2093
|
-
|
2094
|
-
|
2095
|
-
|
2096
|
-
|
2097
|
-
|
2098
|
-
|
2099
|
-
|
2100
|
-
|
2101
|
-
|
2102
|
-
on_clicked{
|
2103
|
-
begin
|
2104
|
-
path = @data['이미지설정']['폴더경로'].text.to_s.force_encoding('utf-8').force_encoding('utf-8')
|
2105
|
-
|
2106
|
-
if Dir.exists?(path) # 경로가 존재하는지 확인
|
2107
|
-
Dir.entries(path).each do |file|
|
2108
|
-
if file != '.' and file != '..' # '.'과 '..'을 제외한 파일들만 처리
|
2109
|
-
begin
|
2110
|
-
full_file_path = File.join(path, file).force_encoding('utf-8')
|
2111
|
-
full_file_path = full_file_path.gsub('/', '\\')
|
2112
|
-
@data['이미지설정']['이미지'] << [false, full_file_path]
|
2113
|
-
rescue => e
|
2114
|
-
# 파일 처리 오류가 발생하면 오류 메시지 출력
|
2115
|
-
puts "파일 '#{file}'을 처리할 수 없습니다: #{e.message}"
|
2116
|
-
end
|
2117
|
-
end
|
2118
|
-
end
|
2119
|
-
@data['이미지설정']['이미지'] << []
|
2120
|
-
@data['이미지설정']['이미지'].pop
|
2121
|
-
else
|
2122
|
-
# 경로가 없으면 경고 메시지 출력
|
2123
|
-
puts "경로 '#{path}'이 존재하지 않습니다."
|
2124
|
-
end
|
2125
|
-
rescue => e
|
2126
|
-
# 경로 처리 중 발생한 오류 처리
|
2127
|
-
puts "오류 발생: #{e.message}"
|
2211
|
+
button(' 삭제하기 '){
|
2212
|
+
top 1
|
2213
|
+
left 2
|
2214
|
+
on_clicked{
|
2215
|
+
m = Array.new
|
2216
|
+
for n in 0..@data['이미지설정']['이미지'].length-1
|
2217
|
+
if @data['이미지설정']['이미지'][n][0] == true
|
2218
|
+
m << n
|
2128
2219
|
end
|
2129
|
-
|
2220
|
+
end
|
2221
|
+
|
2222
|
+
m.reverse.each do |i|
|
2223
|
+
@data['이미지설정']['이미지'].delete_at(i)
|
2224
|
+
end
|
2225
|
+
|
2226
|
+
@data['이미지설정']['이미지'].delete(nil)
|
2130
2227
|
}
|
2131
|
-
}
|
2132
|
-
|
2133
|
-
}
|
2134
|
-
|
2135
|
-
vertical_separator{
|
2136
|
-
stretchy false
|
2137
|
-
}
|
2138
|
-
vertical_box{
|
2139
|
-
horizontal_box{
|
2140
|
-
stretchy false
|
2141
|
-
button(' 키워드불러오기 '){
|
2142
|
-
on_clicked{
|
2143
|
-
file = open_file
|
2144
|
-
if file != nil
|
2145
|
-
file_data = File.open(file, 'r', :encoding => 'utf-8').read()
|
2146
|
-
file_data.split("\n").each do |keyword|
|
2147
|
-
if keyword.split(' ').join('').length < 2
|
2148
|
-
|
2149
|
-
else
|
2150
|
-
@data['키워드설정']['키워드'] << [false, keyword]
|
2151
|
-
@data['키워드설정']['키워드'] << [false, keyword]
|
2152
|
-
@data['키워드설정']['키워드'].pop
|
2153
|
-
end
|
2154
|
-
end
|
2155
|
-
end
|
2156
|
-
}
|
2157
|
-
}
|
2158
2228
|
}
|
2159
|
-
|
2229
|
+
}
|
2160
2230
|
horizontal_box{
|
2161
2231
|
stretchy false
|
2162
|
-
|
2163
|
-
button(' 전체선택 '){
|
2164
|
-
top 1
|
2165
|
-
left 0
|
2166
|
-
on_clicked{
|
2167
|
-
for n in 0..@data['키워드설정']['키워드'].length-1
|
2168
|
-
@data['키워드설정']['키워드'][n][0] = true
|
2169
|
-
@data['키워드설정']['키워드'] << []
|
2170
|
-
@data['키워드설정']['키워드'].pop
|
2171
|
-
end
|
2172
|
-
}
|
2173
|
-
}
|
2174
|
-
button(' 선택해제 '){
|
2175
|
-
top 1
|
2176
|
-
left 1
|
2177
|
-
on_clicked{
|
2178
|
-
for n in 0..@data['키워드설정']['키워드'].length-1
|
2179
|
-
@data['키워드설정']['키워드'][n][0] = false
|
2180
|
-
@data['키워드설정']['키워드'] << []
|
2181
|
-
@data['키워드설정']['키워드'].pop
|
2182
|
-
end
|
2183
|
-
}
|
2184
|
-
}
|
2185
|
-
button(' 삭제하기 '){
|
2186
|
-
top 1
|
2187
|
-
left 2
|
2188
|
-
on_clicked{
|
2189
|
-
m = Array.new
|
2190
|
-
for n in 0..@data['키워드설정']['키워드'].length-1
|
2191
|
-
if @data['키워드설정']['키워드'][n][0] == true
|
2192
|
-
m << n
|
2193
|
-
end
|
2194
|
-
end
|
2195
|
-
|
2196
|
-
m.reverse.each do |i|
|
2197
|
-
@data['키워드설정']['키워드'].delete_at(i)
|
2198
|
-
end
|
2199
|
-
@data['키워드설정']['키워드'].delete(nil)
|
2200
|
-
}
|
2201
|
-
}
|
2202
|
-
}
|
2203
|
-
|
2204
|
-
horizontal_box{
|
2205
|
-
stretchy false
|
2206
|
-
@data['키워드설정']['순서사용'] = checkbox('순서사용'){
|
2232
|
+
@data['이미지설정']['순서사용'] = checkbox('순서사용'){
|
2207
2233
|
stretchy false
|
2208
2234
|
on_toggled{ |c|
|
2209
2235
|
if c.checked?
|
2210
|
-
@data['
|
2236
|
+
@data['이미지설정']['랜덤사용'].checked = false
|
2211
2237
|
end
|
2212
2238
|
}
|
2213
2239
|
}
|
2214
|
-
@data['
|
2240
|
+
@data['이미지설정']['랜덤사용'] = checkbox('랜덤사용'){
|
2215
2241
|
stretchy false
|
2216
2242
|
on_toggled{ |c|
|
2217
2243
|
if c.checked?
|
2218
|
-
@data['
|
2244
|
+
@data['이미지설정']['순서사용'].checked = false
|
2219
2245
|
end
|
2220
2246
|
}
|
2221
2247
|
}
|
2222
2248
|
}
|
2249
|
+
}
|
2250
|
+
|
2251
|
+
table{
|
2252
|
+
checkbox_column('선택'){
|
2253
|
+
editable true
|
2254
|
+
}
|
2255
|
+
text_column('이미지파일'){
|
2256
|
+
editable true
|
2257
|
+
}
|
2258
|
+
|
2259
|
+
cell_rows @data['이미지설정']['이미지']
|
2223
2260
|
}
|
2224
|
-
|
2225
|
-
|
2226
|
-
|
2227
|
-
|
2261
|
+
horizontal_box{
|
2262
|
+
stretchy false
|
2263
|
+
@data['이미지설정']['폴더경로'] = entry{
|
2264
|
+
|
2265
|
+
text "사진폴더경로 ex)C:\\사진\\폴더2"
|
2228
2266
|
}
|
2229
|
-
|
2230
|
-
|
2231
|
-
|
2267
|
+
|
2268
|
+
button(' 폴더째로불러오기 '){
|
2269
|
+
|
2270
|
+
on_clicked{
|
2271
|
+
begin
|
2272
|
+
path = @data['이미지설정']['폴더경로'].text.to_s.force_encoding('utf-8').force_encoding('utf-8')
|
2273
|
+
|
2274
|
+
if Dir.exists?(path) # 경로가 존재하는지 확인
|
2275
|
+
Dir.entries(path).each do |file|
|
2276
|
+
if file != '.' and file != '..' # '.'과 '..'을 제외한 파일들만 처리
|
2277
|
+
begin
|
2278
|
+
full_file_path = File.join(path, file).force_encoding('utf-8')
|
2279
|
+
full_file_path = full_file_path.gsub('/', '\\')
|
2280
|
+
@data['이미지설정']['이미지'] << [false, full_file_path]
|
2281
|
+
rescue => e
|
2282
|
+
# 파일 처리 오류가 발생하면 오류 메시지 출력
|
2283
|
+
puts "파일 '#{file}'을 처리할 수 없습니다: #{e.message}"
|
2284
|
+
end
|
2285
|
+
end
|
2286
|
+
end
|
2287
|
+
@data['이미지설정']['이미지'] << []
|
2288
|
+
@data['이미지설정']['이미지'].pop
|
2289
|
+
else
|
2290
|
+
# 경로가 없으면 경고 메시지 출력
|
2291
|
+
puts "경로 '#{path}'이 존재하지 않습니다."
|
2292
|
+
end
|
2293
|
+
rescue => e
|
2294
|
+
# 경로 처리 중 발생한 오류 처리
|
2295
|
+
puts "오류 발생: #{e.message}"
|
2296
|
+
end
|
2232
2297
|
}
|
2233
|
-
|
2234
|
-
cell_rows @data['키워드설정']['키워드']
|
2235
2298
|
}
|
2236
|
-
|
2237
|
-
|
2238
|
-
|
2239
|
-
|
2240
|
-
|
2241
|
-
|
2242
|
-
|
2243
|
-
|
2244
|
-
|
2245
|
-
|
2246
|
-
|
2247
|
-
|
2248
|
-
|
2249
|
-
|
2250
|
-
|
2251
|
-
|
2252
|
-
|
2253
|
-
|
2254
|
-
|
2255
|
-
|
2256
|
-
|
2257
|
-
|
2258
|
-
|
2259
|
-
|
2299
|
+
}
|
2300
|
+
|
2301
|
+
|
2302
|
+
horizontal_box{
|
2303
|
+
stretchy false
|
2304
|
+
button(' 블로그불러오기 '){
|
2305
|
+
on_clicked{
|
2306
|
+
file = open_file
|
2307
|
+
if file != nil
|
2308
|
+
file_data = File.open(file, 'r', :encoding => 'utf-8').read()
|
2309
|
+
file_data.split("\n").each do |blog_url|
|
2310
|
+
if blog_url.split(' ').join('').length < 2
|
2311
|
+
|
2312
|
+
else
|
2313
|
+
@data['블로그설정']['블로그'] << [false, blog_url]
|
2314
|
+
@data['블로그설정']['블로그'] << [false, blog_url]
|
2315
|
+
@data['블로그설정']['블로그'].pop
|
2316
|
+
end
|
2317
|
+
end
|
2318
|
+
end
|
2319
|
+
}
|
2320
|
+
}
|
2321
|
+
}
|
2322
|
+
|
2323
|
+
horizontal_box{
|
2324
|
+
stretchy false
|
2325
|
+
grid{
|
2326
|
+
button(' 전체선택 '){
|
2327
|
+
top 1
|
2328
|
+
left 0
|
2329
|
+
on_clicked{
|
2330
|
+
for n in 0..@data['블로그설정']['블로그'].length-1
|
2331
|
+
@data['블로그설정']['블로그'][n][0] = true
|
2332
|
+
@data['블로그설정']['블로그'] << []
|
2333
|
+
@data['블로그설정']['블로그'].pop
|
2334
|
+
end
|
2335
|
+
}
|
2336
|
+
}
|
2337
|
+
button(' 선택해제 '){
|
2338
|
+
top 1
|
2339
|
+
left 1
|
2340
|
+
on_clicked{
|
2341
|
+
for n in 0..@data['블로그설정']['블로그'].length-1
|
2342
|
+
@data['블로그설정']['블로그'][n][0] = false
|
2343
|
+
@data['블로그설정']['블로그'] << []
|
2344
|
+
@data['블로그설정']['블로그'].pop
|
2345
|
+
end
|
2346
|
+
}
|
2347
|
+
}
|
2348
|
+
button(' 삭제하기 '){
|
2349
|
+
top 1
|
2350
|
+
left 2
|
2351
|
+
on_clicked{
|
2352
|
+
m = Array.new
|
2353
|
+
for n in 0..@data['블로그설정']['블로그'].length-1
|
2354
|
+
if @data['블로그설정']['블로그'][n][0] == true
|
2355
|
+
m << n
|
2356
|
+
end
|
2357
|
+
end
|
2358
|
+
|
2359
|
+
m.reverse.each do |i|
|
2360
|
+
@data['블로그설정']['블로그'].delete_at(i)
|
2361
|
+
end
|
2362
|
+
@data['블로그설정']['블로그'].delete(nil)
|
2363
|
+
}
|
2364
|
+
}
|
2365
|
+
}
|
2366
|
+
|
2367
|
+
horizontal_box{
|
2368
|
+
stretchy false
|
2369
|
+
@data['블로그설정']['순서사용'] = checkbox('순서사용'){
|
2370
|
+
stretchy false
|
2371
|
+
on_toggled{ |c|
|
2372
|
+
if c.checked?
|
2373
|
+
@data['블로그설정']['랜덤사용'].checked = false
|
2374
|
+
end
|
2375
|
+
}
|
2376
|
+
}
|
2377
|
+
@data['블로그설정']['랜덤사용'] = checkbox('랜덤사용'){
|
2378
|
+
stretchy false
|
2379
|
+
on_toggled{ |c|
|
2380
|
+
if c.checked?
|
2381
|
+
@data['블로그설정']['순서사용'].checked = false
|
2382
|
+
end
|
2383
|
+
}
|
2384
|
+
}
|
2385
|
+
}
|
2386
|
+
}
|
2387
|
+
|
2388
|
+
table{
|
2389
|
+
checkbox_column('선택'){
|
2390
|
+
editable true
|
2391
|
+
}
|
2392
|
+
|
2393
|
+
text_column('블로그url'){
|
2394
|
+
|
2395
|
+
}
|
2396
|
+
|
2397
|
+
cell_rows @data['블로그설정']['블로그']
|
2398
|
+
}
|
2399
|
+
horizontal_box{
|
2400
|
+
stretchy false
|
2401
|
+
@data['내용설정']['폴더경로'] = entry{
|
2402
|
+
enabled false
|
2403
|
+
text "폴더경로 ex)C:\\내용\\폴더1"
|
2404
|
+
}
|
2405
|
+
button(' 폴더째로 불러오기 '){
|
2406
|
+
enabled false
|
2407
|
+
on_clicked{
|
2408
|
+
begin
|
2409
|
+
path = @data['내용설정']['폴더경로'].text.to_s.force_encoding('utf-8').force_encoding('utf-8')
|
2410
|
+
|
2411
|
+
if Dir.exists?(path) # 경로가 존재하는지 확인
|
2412
|
+
Dir.entries(path).each do |file|
|
2413
|
+
# '.'과 '..'을 제외한 파일들만 처리
|
2414
|
+
if file != '.' and file != '..'
|
2415
|
+
begin
|
2416
|
+
file_data = File.open(path+'/'+file, 'r', encoding: 'utf-8').read()
|
2417
|
+
@data['내용설정']['내용'] << [false, file, file_data]
|
2418
|
+
rescue => e
|
2419
|
+
# 파일 열기 오류 처리
|
2420
|
+
puts "파일 '#{file}'을 열 수 없습니다: #{e.message}"
|
2421
|
+
end
|
2260
2422
|
end
|
2261
|
-
@data['내용설정']['내용'] << []
|
2262
|
-
@data['내용설정']['내용'].pop
|
2263
|
-
else
|
2264
|
-
# 경로가 없으면 경고 메시지 출력
|
2265
|
-
puts "경로 '#{path}'이 존재하지 않습니다."
|
2266
2423
|
end
|
2267
|
-
|
2268
|
-
|
2269
|
-
|
2424
|
+
@data['내용설정']['내용'] << []
|
2425
|
+
@data['내용설정']['내용'].pop
|
2426
|
+
else
|
2427
|
+
# 경로가 없으면 경고 메시지 출력
|
2428
|
+
puts "경로 '#{path}'이 존재하지 않습니다."
|
2270
2429
|
end
|
2271
|
-
|
2430
|
+
rescue => e
|
2431
|
+
# 경로 처리 중 발생한 오류 처리
|
2432
|
+
puts "오류 발생: #{e.message}"
|
2433
|
+
end
|
2272
2434
|
}
|
2273
|
-
}
|
2274
|
-
|
2275
|
-
|
2435
|
+
}
|
2436
|
+
}
|
2437
|
+
|
2438
|
+
}
|
2276
2439
|
|
2277
|
-
|
2278
|
-
|
2440
|
+
vertical_separator{
|
2441
|
+
stretchy false
|
2442
|
+
}
|
2443
|
+
vertical_box{
|
2444
|
+
horizontal_box{
|
2279
2445
|
stretchy false
|
2280
|
-
|
2281
|
-
|
2282
|
-
|
2283
|
-
|
2284
|
-
|
2285
|
-
|
2286
|
-
|
2287
|
-
|
2288
|
-
|
2289
|
-
|
2290
|
-
|
2291
|
-
|
2292
|
-
if file_data.split("\n").length < 2
|
2293
|
-
file_data = file_data + "\n"
|
2446
|
+
button(' 키워드불러오기 '){
|
2447
|
+
on_clicked{
|
2448
|
+
file = open_file
|
2449
|
+
if file != nil
|
2450
|
+
file_data = File.open(file, 'r', :encoding => 'utf-8').read()
|
2451
|
+
file_data.split("\n").each do |keyword|
|
2452
|
+
if keyword.split(' ').join('').length < 2
|
2453
|
+
|
2454
|
+
else
|
2455
|
+
@data['키워드설정']['키워드'] << [false, keyword]
|
2456
|
+
@data['키워드설정']['키워드'] << [false, keyword]
|
2457
|
+
@data['키워드설정']['키워드'].pop
|
2294
2458
|
end
|
2295
|
-
@data['내용설정']['내용'] << [false, file_name, file_data]
|
2296
|
-
@data['내용설정']['내용'] << [false, file_name, file_data]
|
2297
|
-
@data['내용설정']['내용'].pop
|
2298
2459
|
end
|
2299
|
-
|
2460
|
+
end
|
2300
2461
|
}
|
2301
|
-
|
2462
|
+
}
|
2302
2463
|
}
|
2303
|
-
|
2304
|
-
|
2305
|
-
|
2306
|
-
|
2307
|
-
|
2308
|
-
|
2309
|
-
|
2310
|
-
|
2311
|
-
|
2312
|
-
|
2313
|
-
|
2314
|
-
|
2315
|
-
|
2464
|
+
|
2465
|
+
horizontal_box{
|
2466
|
+
stretchy false
|
2467
|
+
grid{
|
2468
|
+
button(' 전체선택 '){
|
2469
|
+
top 1
|
2470
|
+
left 0
|
2471
|
+
on_clicked{
|
2472
|
+
for n in 0..@data['키워드설정']['키워드'].length-1
|
2473
|
+
@data['키워드설정']['키워드'][n][0] = true
|
2474
|
+
@data['키워드설정']['키워드'] << []
|
2475
|
+
@data['키워드설정']['키워드'].pop
|
2476
|
+
end
|
2316
2477
|
}
|
2317
|
-
|
2318
|
-
|
2319
|
-
|
2320
|
-
|
2321
|
-
|
2322
|
-
|
2323
|
-
|
2324
|
-
|
2325
|
-
|
2326
|
-
|
2478
|
+
}
|
2479
|
+
button(' 선택해제 '){
|
2480
|
+
top 1
|
2481
|
+
left 1
|
2482
|
+
on_clicked{
|
2483
|
+
for n in 0..@data['키워드설정']['키워드'].length-1
|
2484
|
+
@data['키워드설정']['키워드'][n][0] = false
|
2485
|
+
@data['키워드설정']['키워드'] << []
|
2486
|
+
@data['키워드설정']['키워드'].pop
|
2487
|
+
end
|
2327
2488
|
}
|
2328
|
-
|
2329
|
-
|
2330
|
-
|
2331
|
-
|
2332
|
-
|
2333
|
-
|
2334
|
-
|
2335
|
-
|
2336
|
-
|
2337
|
-
end
|
2338
|
-
|
2339
|
-
m.reverse.each do |i|
|
2340
|
-
@data['내용설정']['내용'].delete_at(i)
|
2489
|
+
}
|
2490
|
+
button(' 삭제하기 '){
|
2491
|
+
top 1
|
2492
|
+
left 2
|
2493
|
+
on_clicked{
|
2494
|
+
m = Array.new
|
2495
|
+
for n in 0..@data['키워드설정']['키워드'].length-1
|
2496
|
+
if @data['키워드설정']['키워드'][n][0] == true
|
2497
|
+
m << n
|
2341
2498
|
end
|
2342
|
-
|
2343
|
-
|
2499
|
+
end
|
2500
|
+
|
2501
|
+
m.reverse.each do |i|
|
2502
|
+
@data['키워드설정']['키워드'].delete_at(i)
|
2503
|
+
end
|
2504
|
+
@data['키워드설정']['키워드'].delete(nil)
|
2344
2505
|
}
|
2345
2506
|
}
|
2346
|
-
|
2347
|
-
|
2507
|
+
}
|
2508
|
+
|
2509
|
+
horizontal_box{
|
2510
|
+
stretchy false
|
2511
|
+
@data['키워드설정']['순서사용'] = checkbox('순서사용'){
|
2348
2512
|
stretchy false
|
2349
|
-
|
2350
|
-
|
2351
|
-
|
2352
|
-
|
2353
|
-
|
2513
|
+
on_toggled{ |c|
|
2514
|
+
if c.checked?
|
2515
|
+
@data['키워드설정']['랜덤사용'].checked = false
|
2516
|
+
end
|
2517
|
+
}
|
2518
|
+
}
|
2519
|
+
@data['키워드설정']['랜덤사용'] = checkbox('랜덤사용'){
|
2520
|
+
stretchy false
|
2521
|
+
on_toggled{ |c|
|
2522
|
+
if c.checked?
|
2523
|
+
@data['키워드설정']['순서사용'].checked = false
|
2524
|
+
end
|
2525
|
+
}
|
2526
|
+
}
|
2527
|
+
}
|
2528
|
+
}
|
2529
|
+
|
2530
|
+
table{
|
2531
|
+
checkbox_column('선택'){
|
2532
|
+
editable true
|
2533
|
+
}
|
2534
|
+
|
2535
|
+
text_column('키워드'){
|
2536
|
+
|
2537
|
+
}
|
2538
|
+
|
2539
|
+
cell_rows @data['키워드설정']['키워드']
|
2540
|
+
}
|
2541
|
+
horizontal_box{
|
2542
|
+
stretchy false
|
2543
|
+
@data['내용설정']['폴더경로'] = entry{
|
2544
|
+
enabled false
|
2545
|
+
text "폴더경로 ex)C:\\내용\\폴더1"
|
2546
|
+
}
|
2547
|
+
button(' 폴더째로 불러오기 '){
|
2548
|
+
enabled false
|
2549
|
+
on_clicked{
|
2550
|
+
begin
|
2551
|
+
path = @data['내용설정']['폴더경로'].text.to_s.force_encoding('utf-8').force_encoding('utf-8')
|
2552
|
+
|
2553
|
+
if Dir.exists?(path) # 경로가 존재하는지 확인
|
2554
|
+
Dir.entries(path).each do |file|
|
2555
|
+
# '.'과 '..'을 제외한 파일들만 처리
|
2556
|
+
if file != '.' and file != '..'
|
2557
|
+
begin
|
2558
|
+
file_data = File.open(path+'/'+file, 'r', encoding: 'utf-8').read()
|
2559
|
+
@data['내용설정']['내용'] << [false, file, file_data]
|
2560
|
+
rescue => e
|
2561
|
+
# 파일 열기 오류 처리
|
2562
|
+
puts "파일 '#{file}'을 열 수 없습니다: #{e.message}"
|
2563
|
+
end
|
2564
|
+
end
|
2565
|
+
end
|
2566
|
+
@data['내용설정']['내용'] << []
|
2567
|
+
@data['내용설정']['내용'].pop
|
2568
|
+
else
|
2569
|
+
# 경로가 없으면 경고 메시지 출력
|
2570
|
+
puts "경로 '#{path}'이 존재하지 않습니다."
|
2571
|
+
end
|
2572
|
+
rescue => e
|
2573
|
+
# 경로 처리 중 발생한 오류 처리
|
2574
|
+
puts "오류 발생: #{e.message}"
|
2575
|
+
end
|
2576
|
+
}
|
2577
|
+
}
|
2578
|
+
}
|
2579
|
+
|
2580
|
+
|
2581
|
+
horizontal_box{
|
2582
|
+
stretchy false
|
2583
|
+
|
2584
|
+
button(' 내용불러오기 '){
|
2585
|
+
|
2586
|
+
on_clicked{
|
2587
|
+
file = open_file
|
2588
|
+
if file != nil
|
2589
|
+
file_name = file.split("\\")[-1]
|
2590
|
+
file_data = File.open(file,'r', :encoding => 'utf-8').read()
|
2591
|
+
if file_data.split("\n").length < 2
|
2592
|
+
file_data = file_data + "\n"
|
2354
2593
|
end
|
2355
|
-
|
2594
|
+
@data['내용설정']['내용'] << [false, file_name, file_data]
|
2595
|
+
@data['내용설정']['내용'] << [false, file_name, file_data]
|
2596
|
+
@data['내용설정']['내용'].pop
|
2597
|
+
end
|
2356
2598
|
}
|
2357
|
-
|
2358
|
-
|
2359
|
-
|
2360
|
-
|
2361
|
-
|
2599
|
+
}
|
2600
|
+
|
2601
|
+
}
|
2602
|
+
horizontal_box{
|
2603
|
+
stretchy false
|
2604
|
+
grid{
|
2605
|
+
button(' 전체선택 '){
|
2606
|
+
top 1
|
2607
|
+
left 0
|
2608
|
+
on_clicked{
|
2609
|
+
for n in 0..@data['내용설정']['내용'].length-1
|
2610
|
+
@data['내용설정']['내용'][n][0] = true
|
2611
|
+
@data['내용설정']['내용'] << []
|
2612
|
+
@data['내용설정']['내용'].pop
|
2613
|
+
end
|
2614
|
+
}
|
2615
|
+
}
|
2616
|
+
button(' 선택해제 '){
|
2617
|
+
top 1
|
2618
|
+
left 1
|
2619
|
+
on_clicked{
|
2620
|
+
for n in 0..@data['내용설정']['내용'].length-1
|
2621
|
+
@data['내용설정']['내용'][n][0] = false
|
2622
|
+
@data['내용설정']['내용'] << []
|
2623
|
+
@data['내용설정']['내용'].pop
|
2624
|
+
end
|
2625
|
+
}
|
2626
|
+
}
|
2627
|
+
button(' 삭제하기 '){
|
2628
|
+
top 1
|
2629
|
+
left 2
|
2630
|
+
on_clicked{
|
2631
|
+
m = Array.new
|
2632
|
+
for n in 0..@data['내용설정']['내용'].length-1
|
2633
|
+
if @data['내용설정']['내용'][n][0] == true
|
2634
|
+
m << n
|
2362
2635
|
end
|
2363
|
-
|
2636
|
+
end
|
2637
|
+
|
2638
|
+
m.reverse.each do |i|
|
2639
|
+
@data['내용설정']['내용'].delete_at(i)
|
2640
|
+
end
|
2641
|
+
@data['내용설정']['내용'].delete(nil)
|
2364
2642
|
}
|
2365
2643
|
}
|
2366
2644
|
}
|
2367
|
-
|
2368
|
-
|
2369
|
-
|
2370
|
-
|
2371
|
-
|
2372
|
-
|
2373
|
-
|
2645
|
+
|
2646
|
+
horizontal_box{
|
2647
|
+
stretchy false
|
2648
|
+
@data['내용설정']['순서사용'] = checkbox('순서사용'){
|
2649
|
+
stretchy false
|
2650
|
+
on_toggled{ |c|
|
2651
|
+
if c.checked?
|
2652
|
+
@data['내용설정']['랜덤사용'].checked = false
|
2653
|
+
end
|
2374
2654
|
}
|
2375
|
-
|
2376
|
-
cell_rows @data['내용설정']['내용']
|
2377
2655
|
}
|
2378
|
-
|
2379
|
-
|
2380
|
-
|
2381
|
-
|
2382
|
-
|
2656
|
+
@data['내용설정']['랜덤사용'] = checkbox('랜덤사용'){
|
2657
|
+
stretchy false
|
2658
|
+
on_toggled{ |c|
|
2659
|
+
if c.checked?
|
2660
|
+
@data['내용설정']['순서사용'].checked = false
|
2661
|
+
end
|
2383
2662
|
}
|
2384
|
-
|
2385
|
-
|
2386
|
-
|
2387
|
-
|
2388
|
-
|
2389
|
-
|
2390
|
-
|
2391
|
-
|
2392
|
-
|
2393
|
-
|
2394
|
-
|
2395
|
-
|
2396
|
-
|
2397
|
-
|
2398
|
-
|
2399
|
-
|
2400
|
-
|
2663
|
+
}
|
2664
|
+
}
|
2665
|
+
}
|
2666
|
+
table{
|
2667
|
+
checkbox_column('선택'){
|
2668
|
+
editable true
|
2669
|
+
}
|
2670
|
+
|
2671
|
+
text_column('내용파일'){
|
2672
|
+
|
2673
|
+
}
|
2674
|
+
|
2675
|
+
cell_rows @data['내용설정']['내용']
|
2676
|
+
}
|
2677
|
+
horizontal_box{
|
2678
|
+
stretchy false
|
2679
|
+
@data['내용설정']['폴더경로'] = entry{
|
2680
|
+
|
2681
|
+
text "내용폴더경로 ex)C:\\내용\\폴더1"
|
2682
|
+
}
|
2683
|
+
button(' 폴더째로 불러오기 '){
|
2684
|
+
|
2685
|
+
on_clicked{
|
2686
|
+
begin
|
2687
|
+
path = @data['내용설정']['폴더경로'].text.to_s.force_encoding('utf-8').force_encoding('utf-8')
|
2688
|
+
|
2689
|
+
if Dir.exists?(path) # 경로가 존재하는지 확인
|
2690
|
+
Dir.entries(path).each do |file|
|
2691
|
+
# '.'과 '..'을 제외한 파일들만 처리
|
2692
|
+
if file != '.' and file != '..'
|
2693
|
+
begin
|
2694
|
+
file_data = File.open(path+'/'+file, 'r', encoding: 'utf-8').read()
|
2695
|
+
@data['내용설정']['내용'] << [false, file, file_data]
|
2696
|
+
rescue => e
|
2697
|
+
# 파일 열기 오류 처리
|
2698
|
+
puts "파일 '#{file}'을 열 수 없습니다: #{e.message}"
|
2401
2699
|
end
|
2402
2700
|
end
|
2403
|
-
@data['내용설정']['내용'] << []
|
2404
|
-
@data['내용설정']['내용'].pop
|
2405
|
-
else
|
2406
|
-
# 경로가 없으면 경고 메시지 출력
|
2407
|
-
puts "경로 '#{path}'이 존재하지 않습니다."
|
2408
2701
|
end
|
2409
|
-
|
2410
|
-
|
2411
|
-
|
2702
|
+
@data['내용설정']['내용'] << []
|
2703
|
+
@data['내용설정']['내용'].pop
|
2704
|
+
else
|
2705
|
+
# 경로가 없으면 경고 메시지 출력
|
2706
|
+
puts "경로 '#{path}'이 존재하지 않습니다."
|
2412
2707
|
end
|
2413
|
-
|
2708
|
+
rescue => e
|
2709
|
+
# 경로 처리 중 발생한 오류 처리
|
2710
|
+
puts "오류 발생: #{e.message}"
|
2711
|
+
end
|
2414
2712
|
}
|
2415
|
-
}
|
2416
|
-
|
2417
|
-
|
2713
|
+
}
|
2714
|
+
}
|
2715
|
+
|
2418
2716
|
}
|
2419
2717
|
}
|
2420
2718
|
}
|
2421
|
-
|
2422
|
-
|
2423
|
-
|
2424
|
-
|
2425
|
-
|
2426
|
-
|
2427
|
-
|
2428
|
-
|
2719
|
+
}
|
2720
|
+
|
2721
|
+
|
2722
|
+
|
2723
|
+
|
2724
|
+
|
2429
2725
|
|
2430
|
-
|
2431
|
-
horizontal_box{
|
2432
|
-
stretchy false
|
2433
|
-
grid{
|
2434
|
-
|
2435
|
-
@data['포스트설정']['ChatGPT사용'] = checkbox('GPT 댓글 사용'){
|
2436
|
-
top 0
|
2437
|
-
left 0
|
2438
|
-
}
|
2439
2726
|
|
2440
|
-
|
2441
|
-
|
2442
|
-
|
2443
|
-
|
2444
|
-
|
2727
|
+
|
2728
|
+
|
2729
|
+
|
2730
|
+
horizontal_box{
|
2731
|
+
stretchy false
|
2732
|
+
grid{
|
2733
|
+
|
2734
|
+
@data['포스트설정']['ChatGPT사용'] = checkbox('GPT 댓글 사용'){
|
2735
|
+
top 0
|
2736
|
+
left 0
|
2737
|
+
}
|
2445
2738
|
|
2446
|
-
|
2447
|
-
|
2448
|
-
|
2449
|
-
|
2450
|
-
}
|
2451
|
-
button('파일 불러오기'){
|
2452
|
-
top 0
|
2453
|
-
left 3
|
2454
|
-
on_clicked{
|
2455
|
-
file = open_file
|
2456
|
-
if file != nil
|
2457
|
-
file_data = File.open(file, 'r', :encoding => 'utf-8').read()
|
2458
|
-
file_data.split("\n").each do |i|
|
2459
|
-
key = i.split('>')[0]
|
2460
|
-
v = i.split('>')[1].to_s.split(',')
|
2461
|
-
@data['포스트설정']['내용자동변경값'][key] = v
|
2462
|
-
end
|
2463
|
-
end
|
2464
|
-
}
|
2465
|
-
}
|
2739
|
+
@data['포스트설정']['api_key'] = entry(){
|
2740
|
+
top 0
|
2741
|
+
left 1
|
2742
|
+
text 'GPT API KEY 입력'
|
2466
2743
|
}
|
2467
|
-
|
2468
|
-
|
2744
|
+
|
2745
|
+
|
2746
|
+
@data['포스트설정']['내용자동변경'] = checkbox('댓글 치환 설정'){
|
2747
|
+
top 0
|
2748
|
+
left 2
|
2469
2749
|
}
|
2470
|
-
|
2471
|
-
|
2472
|
-
|
2473
|
-
|
2474
|
-
|
2475
|
-
|
2476
|
-
|
2477
|
-
|
2478
|
-
|
2479
|
-
|
2480
|
-
|
2481
|
-
@data['포스트설정']['프록시'] = checkbox('프록시 IP 사용 '){
|
2482
|
-
top 0
|
2483
|
-
left 1
|
2484
|
-
on_toggled{
|
2485
|
-
if @data['포스트설정']['프록시'].checked?
|
2486
|
-
@data['포스트설정']['테더링'].checked = false
|
2487
|
-
|
2488
|
-
end
|
2489
|
-
}
|
2490
|
-
}
|
2491
|
-
button('프록시 파일 불러오기'){
|
2492
|
-
top 0
|
2493
|
-
left 2
|
2494
|
-
on_clicked{
|
2495
|
-
file = open_file
|
2496
|
-
if file != nil
|
2497
|
-
file_data = File.open(file,'r').read
|
2498
|
-
@data['포스트설정']['프록시리스트'] = file_data.split("\n")
|
2750
|
+
button('파일 불러오기'){
|
2751
|
+
top 0
|
2752
|
+
left 3
|
2753
|
+
on_clicked{
|
2754
|
+
file = open_file
|
2755
|
+
if file != nil
|
2756
|
+
file_data = File.open(file, 'r', :encoding => 'utf-8').read()
|
2757
|
+
file_data.split("\n").each do |i|
|
2758
|
+
key = i.split('>')[0]
|
2759
|
+
v = i.split('>')[1].to_s.split(',')
|
2760
|
+
@data['포스트설정']['내용자동변경값'][key] = v
|
2499
2761
|
end
|
2500
|
-
|
2762
|
+
end
|
2501
2763
|
}
|
2502
2764
|
}
|
2503
2765
|
}
|
2504
|
-
|
2505
|
-
|
2506
2766
|
vertical_separator{
|
2507
2767
|
stretchy false
|
2508
2768
|
}
|
2509
|
-
|
2510
|
-
|
2511
|
-
|
2512
|
-
|
2513
|
-
|
2514
|
-
|
2515
|
-
|
2516
|
-
|
2517
|
-
@data['포스트설정']['블로그키워드검색최신순'] = checkbox('키워드 검색 최신순 작업'){
|
2518
|
-
top 1
|
2519
|
-
left 0
|
2520
|
-
|
2521
|
-
on_toggled {
|
2522
|
-
if @data['포스트설정']['블로그키워드검색최신순'].checked?
|
2523
|
-
@data['포스트설정']['블로그키워드검색인기순'].checked = false
|
2524
|
-
@data['포스트설정']['블로그무작위'].checked = false
|
2769
|
+
grid{
|
2770
|
+
@data['포스트설정']['테더링'] = checkbox('테더링 IP 사용 '){
|
2771
|
+
top 0
|
2772
|
+
left 0
|
2773
|
+
on_toggled{
|
2774
|
+
if @data['포스트설정']['테더링'].checked?
|
2775
|
+
@data['포스트설정']['프록시'].checked = false
|
2776
|
+
|
2525
2777
|
end
|
2526
2778
|
}
|
2527
2779
|
}
|
2528
|
-
|
2529
|
-
|
2530
|
-
|
2531
|
-
|
2532
|
-
|
2533
|
-
|
2534
|
-
|
2535
|
-
@data['포스트설정']['블로그무작위'].checked = false
|
2780
|
+
@data['포스트설정']['프록시'] = checkbox('프록시 IP 사용 '){
|
2781
|
+
top 0
|
2782
|
+
left 1
|
2783
|
+
on_toggled{
|
2784
|
+
if @data['포스트설정']['프록시'].checked?
|
2785
|
+
@data['포스트설정']['테더링'].checked = false
|
2786
|
+
|
2536
2787
|
end
|
2537
2788
|
}
|
2538
2789
|
}
|
2539
|
-
|
2540
|
-
|
2541
|
-
|
2542
|
-
|
2543
|
-
|
2544
|
-
|
2545
|
-
|
2546
|
-
|
2547
|
-
@data['포스트설정']['블로그키워드검색최신순'].checked = false
|
2548
|
-
@data['포스트설정']['블로그키워드검색인기순'].checked = false
|
2790
|
+
button('프록시 파일 불러오기'){
|
2791
|
+
top 0
|
2792
|
+
left 2
|
2793
|
+
on_clicked{
|
2794
|
+
file = open_file
|
2795
|
+
if file != nil
|
2796
|
+
file_data = File.open(file,'r').read
|
2797
|
+
@data['포스트설정']['프록시리스트'] = file_data.split("\n")
|
2549
2798
|
end
|
2550
2799
|
}
|
2551
2800
|
}
|
2552
|
-
|
2553
|
-
|
2554
|
-
|
2801
|
+
}
|
2802
|
+
}
|
2803
|
+
|
2804
|
+
|
2805
|
+
vertical_separator{
|
2806
|
+
stretchy false
|
2807
|
+
}
|
2808
|
+
|
2809
|
+
|
2810
|
+
|
2811
|
+
|
2812
|
+
horizontal_box{
|
2813
|
+
stretchy false
|
2814
|
+
grid{
|
2815
|
+
|
2816
|
+
@data['포스트설정']['블로그키워드검색최신순'] = checkbox('키워드 검색 최신순 작업'){
|
2817
|
+
top 1
|
2818
|
+
left 0
|
2819
|
+
|
2820
|
+
on_toggled {
|
2821
|
+
if @data['포스트설정']['블로그키워드검색최신순'].checked?
|
2822
|
+
@data['포스트설정']['블로그키워드검색인기순'].checked = false
|
2823
|
+
@data['포스트설정']['블로그무작위'].checked = false
|
2824
|
+
@data['포스트설정']['타겟블로그'].checked = false
|
2825
|
+
end
|
2826
|
+
}
|
2827
|
+
}
|
2828
|
+
@data['포스트설정']['블로그키워드검색인기순'] = checkbox('키워드 검색 인기순 작업'){
|
2829
|
+
top 1
|
2830
|
+
left 1
|
2831
|
+
|
2832
|
+
on_toggled {
|
2833
|
+
if @data['포스트설정']['블로그키워드검색인기순'].checked?
|
2834
|
+
@data['포스트설정']['블로그키워드검색최신순'].checked = false
|
2835
|
+
@data['포스트설정']['블로그무작위'].checked = false
|
2836
|
+
@data['포스트설정']['타겟블로그'].checked = false
|
2837
|
+
end
|
2838
|
+
}
|
2839
|
+
}
|
2840
|
+
|
2841
|
+
|
2842
|
+
@data['포스트설정']['블로그무작위'] = checkbox('블로그 랜덤 무작위 설정'){
|
2843
|
+
top 1
|
2844
|
+
left 2
|
2845
|
+
|
2846
|
+
on_toggled {
|
2847
|
+
if @data['포스트설정']['블로그무작위'].checked?
|
2848
|
+
@data['포스트설정']['블로그키워드검색최신순'].checked = false
|
2849
|
+
@data['포스트설정']['블로그키워드검색인기순'].checked = false
|
2850
|
+
@data['포스트설정']['타겟블로그'].checked = false
|
2851
|
+
end
|
2852
|
+
}
|
2853
|
+
}
|
2854
|
+
|
2855
|
+
@data['포스트설정']['타겟블로그'] = checkbox('타겟 블로그 작업 (블로그 게시글 URL이 아닌 블로그URL를 세팅해주세요.)'){
|
2856
|
+
top 1
|
2857
|
+
left 3
|
2858
|
+
|
2859
|
+
on_toggled {
|
2860
|
+
if @data['포스트설정']['타겟블로그'].checked?
|
2861
|
+
@data['포스트설정']['블로그키워드검색최신순'].checked = false
|
2862
|
+
@data['포스트설정']['블로그키워드검색인기순'].checked = false
|
2863
|
+
@data['포스트설정']['블로그무작위'].checked = false
|
2864
|
+
end
|
2865
|
+
}
|
2866
|
+
}
|
2867
|
+
|
2868
|
+
@data['포스트설정']['이웃추가'] = checkbox('이웃추가'){
|
2869
|
+
top 2
|
2870
|
+
left 0
|
2871
|
+
|
2872
|
+
on_toggled {
|
2873
|
+
if @data['포스트설정']['이웃추가'].checked?
|
2874
|
+
@data['포스트설정']['서로이웃추가'].checked = false
|
2875
|
+
end
|
2876
|
+
}
|
2877
|
+
}
|
2878
|
+
@data['포스트설정']['서로이웃추가'] = checkbox('서로이웃추가'){
|
2879
|
+
top 2
|
2880
|
+
left 1
|
2881
|
+
|
2882
|
+
on_toggled {
|
2883
|
+
if @data['포스트설정']['서로이웃추가'].checked?
|
2884
|
+
@data['포스트설정']['이웃추가'].checked = false
|
2885
|
+
end
|
2886
|
+
}
|
2887
|
+
}
|
2888
|
+
@data['포스트설정']['공유하기'] = checkbox('공유하기'){
|
2555
2889
|
top 2
|
2556
|
-
left
|
2557
|
-
|
2890
|
+
left 2
|
2891
|
+
|
2558
2892
|
on_toggled {
|
2559
|
-
if @data['포스트설정']['
|
2560
|
-
@data['포스트설정']['
|
2893
|
+
if @data['포스트설정']['공유하기'].checked?
|
2894
|
+
@data['포스트설정']['공유하기비공개'].checked = false
|
2561
2895
|
end
|
2562
2896
|
}
|
2563
|
-
}
|
2564
|
-
@data['포스트설정']['
|
2897
|
+
}
|
2898
|
+
@data['포스트설정']['공유하기비공개'] = checkbox('비공개 공유하기'){
|
2565
2899
|
top 2
|
2566
|
-
left
|
2567
|
-
|
2900
|
+
left 3
|
2901
|
+
|
2568
2902
|
on_toggled {
|
2569
|
-
if @data['포스트설정']['
|
2570
|
-
@data['포스트설정']['
|
2903
|
+
if @data['포스트설정']['공유하기비공개'].checked?
|
2904
|
+
@data['포스트설정']['공유하기'].checked = false
|
2571
2905
|
end
|
2572
|
-
}
|
2573
|
-
}
|
2574
|
-
@data['포스트설정']['공유하기'] = checkbox('공유하기'){
|
2575
|
-
top 2
|
2576
|
-
left 2
|
2577
|
-
|
2578
|
-
on_toggled {
|
2579
|
-
if @data['포스트설정']['공유하기'].checked?
|
2580
|
-
@data['포스트설정']['공유하기비공개'].checked = false
|
2581
|
-
end
|
2582
|
-
}
|
2583
2906
|
}
|
2584
|
-
|
2585
|
-
|
2586
|
-
|
2587
|
-
|
2588
|
-
on_toggled {
|
2589
|
-
if @data['포스트설정']['공유하기비공개'].checked?
|
2590
|
-
@data['포스트설정']['공유하기'].checked = false
|
2591
|
-
end
|
2592
|
-
}
|
2593
|
-
}
|
2594
|
-
|
2595
|
-
}}
|
2907
|
+
}
|
2908
|
+
|
2909
|
+
}}
|
2596
2910
|
|
2597
2911
|
|
2598
2912
|
|
2599
|
-
|
2600
|
-
|
2601
|
-
|
2602
|
-
|
2603
|
-
horizontal_box{
|
2604
|
-
stretchy false
|
2605
|
-
|
2606
|
-
grid{
|
2607
|
-
@data['포스트설정']['좋아요'] = checkbox('❤️좋아요 클릭 '){
|
2608
|
-
top 1
|
2609
|
-
left 0
|
2610
|
-
|
2611
|
-
}
|
2913
|
+
vertical_separator{
|
2914
|
+
stretchy false
|
2915
|
+
}
|
2612
2916
|
|
2613
|
-
|
2614
|
-
|
2615
|
-
|
2616
|
-
|
2617
|
-
|
2618
|
-
|
2619
|
-
|
2620
|
-
|
2621
|
-
|
2622
|
-
|
2623
|
-
|
2624
|
-
|
2625
|
-
|
2626
|
-
|
2627
|
-
|
2628
|
-
|
2629
|
-
|
2630
|
-
|
2631
|
-
|
2632
|
-
end
|
2633
|
-
}
|
2634
|
-
}
|
2635
|
-
@data['포스트설정']['댓글패스'] = checkbox('🔙이미 작성한 댓글이 있는 경우 패스'){
|
2636
|
-
top 1
|
2637
|
-
left 3
|
2638
|
-
on_toggled{
|
2639
|
-
|
2640
|
-
}
|
2917
|
+
horizontal_box{
|
2918
|
+
stretchy false
|
2919
|
+
|
2920
|
+
grid{
|
2921
|
+
@data['포스트설정']['좋아요'] = checkbox('❤️좋아요 클릭 '){
|
2922
|
+
top 1
|
2923
|
+
left 0
|
2924
|
+
|
2925
|
+
}
|
2926
|
+
|
2927
|
+
@data['포스트설정']['이모티콘자동삽입'] = checkbox('😍스티커 자동 삽입 '){
|
2928
|
+
top 1
|
2929
|
+
left 1
|
2930
|
+
on_toggled{
|
2931
|
+
if @data['포스트설정']['이모티콘자동삽입'].checked?
|
2932
|
+
#@data['포스트설정']['저장내용발송1'].checked = false
|
2933
|
+
#@data['포스트설정']['저장내용발송2'].checked = false
|
2934
|
+
@data['포스트설정']['이미지자동삽입'].checked = false
|
2935
|
+
end
|
2641
2936
|
}
|
2937
|
+
}
|
2938
|
+
@data['포스트설정']['이미지자동삽입'] = checkbox('📂이미지 자동 삽입 '){
|
2939
|
+
top 1
|
2940
|
+
left 2
|
2941
|
+
on_toggled{
|
2942
|
+
if @data['포스트설정']['이미지자동삽입'].checked?
|
2943
|
+
# @data['포스트설정']['저장내용발송1'].checked = false
|
2944
|
+
# @data['포스트설정']['저장내용발송2'].checked = false
|
2945
|
+
@data['포스트설정']['이모티콘자동삽입'].checked = false
|
2946
|
+
end
|
2642
2947
|
}
|
2643
|
-
|
2644
|
-
|
2645
|
-
|
2646
|
-
|
2647
|
-
|
2948
|
+
}
|
2949
|
+
@data['포스트설정']['댓글패스'] = checkbox('🔙이미 작성한 댓글이 있는 경우 패스'){
|
2950
|
+
top 1
|
2951
|
+
left 3
|
2952
|
+
on_toggled{
|
2953
|
+
|
2648
2954
|
}
|
2955
|
+
}
|
2956
|
+
}
|
2957
|
+
}
|
2958
|
+
|
2959
|
+
|
2960
|
+
vertical_separator{
|
2961
|
+
stretchy false
|
2962
|
+
}
|
2649
2963
|
|
2650
2964
|
|
2651
2965
|
|
@@ -2690,9 +3004,11 @@ end
|
|
2690
3004
|
@data['키워드설정']['키워드'].shift
|
2691
3005
|
@data['이미지설정']['이미지'].shift
|
2692
3006
|
@data['내용설정']['내용'].shift
|
3007
|
+
@data['블로그설정']['블로그'].shift
|
2693
3008
|
@data['키워드설정']['랜덤사용'].checked = true
|
2694
3009
|
@data['이미지설정']['랜덤사용'].checked = true
|
2695
3010
|
@data['내용설정']['랜덤사용'].checked = true
|
3011
|
+
@data['블로그설정']['랜덤사용'].checked = true
|
2696
3012
|
|
2697
3013
|
|
2698
3014
|
}.show
|