duo_blog_cafe_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.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/duo_blog_cafe_comment.rb +373 -85
  3. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a1c9255d1cae08bf3654e599a7ee03b1682a7f804be70f48d82e3cda37f645bf
4
- data.tar.gz: 3a3f033c02c874708211c3ec8e07d19fbc75a4d616170cdbbc28c2e6ef8963e8
3
+ metadata.gz: 3c80231e4de339a74a4dbfdbaace57d0e240bb70ee22df903e5f4a55978fd72c
4
+ data.tar.gz: 218e3410aca8237082bda4d51108b88f4c12ad246323b6b98502fea0cae0412f
5
5
  SHA512:
6
- metadata.gz: d9c88ac3e47d3b2b01e972d6d6b76535e5347f39caacf0f9478a8fdfc27b1cc3d98662f6c8744eb16d1d8af5be12691f58cea2651d910046e5eedd0538dfbe32
7
- data.tar.gz: 8a78c0221169165d2154763228f898a4a8bda74264c3c474c692e594d7ec1a701d0210940929602979a05ed11d46855a126d2144ce06cc324947bb8b3f22cd9c
6
+ metadata.gz: 7ca35144088e62fa08806bf17d2f7b60f7059c298f3013e305c4b8567da04975e73567938f7134e609eeb1dc71e90c0c8d3f6563f3571e04df3aaf0d246efc80
7
+ data.tar.gz: f6c927d45eea02fc96da21e1331fd439cfb71829a21e5ca754eb9fbfccb0a89d94ad8f31ccffc3d7352796d27350352e6bedb8766500a8ffa09f898f7b127647
@@ -232,11 +232,12 @@ class Naver
232
232
  return answer
233
233
  end
234
234
 
235
- def update(content,board_url,nickname,image,option,counts_number,keyword,api_key)
235
+ def update(content,board_url,blog_url,nickname,image,option,counts_number,keyword,api_key)
236
236
  @board_url = board_url
237
237
  @keyword = keyword
238
238
  @content = content
239
239
  @api_key = api_key
240
+ @blog_url = blog_url
240
241
  if option['카페사용모드'] == 'true'
241
242
 
242
243
 
@@ -1252,7 +1253,106 @@ class Naver
1252
1253
 
1253
1254
  page_no = rand(1..100)
1254
1255
  end
1255
- end
1256
+
1257
+ elsif option['타겟블로그'] == 'true'
1258
+ @driver.get(blog_url)
1259
+
1260
+ wait = Selenium::WebDriver::Wait.new(:timeout => 20) # 아이프레임 선택
1261
+ wait.until { @driver.find_element(:xpath, '//*[@id="mainFrame"]') } # 아이프레임 선택
1262
+ sleep(1)
1263
+ @driver.switch_to.frame(@driver.find_element(:xpath, '//*[@id="mainFrame"]')) # 아이프레임 선택
1264
+ sleep(1)
1265
+
1266
+ @driver.find_element(:xpath, '//*[@id="toplistSpanBlind"]').click
1267
+ sleep(1)
1268
+ element = @driver.find_element(:xpath, '//*[@class="aline"]')
1269
+ @driver.execute_script("arguments[0].scrollIntoView({block: 'center', inline: 'center'})", element)#크롤 이동
1270
+ sleep(2)
1271
+ element = @driver.find_element(:xpath, '//*[@class="aline"]').click
1272
+ sleep(1)
1273
+ @driver.find_element(:xpath, '//div[@id="changeListCount"]//a[@data-value="30"]').click
1274
+
1275
+ @driver.switch_to.default_content
1276
+
1277
+
1278
+ wait = Selenium::WebDriver::Wait.new(:timeout => 20) # 아이프레임 선택
1279
+ wait.until { @driver.find_element(:xpath, '//*[@id="mainFrame"]') } # 아이프레임 선택
1280
+ sleep(1)
1281
+ @driver.switch_to.frame(@driver.find_element(:xpath, '//*[@id="mainFrame"]')) # 아이프레임 선택
1282
+ sleep(1)
1283
+
1284
+ # 수집된 URL을 저장할 배열
1285
+ collected_urls = []
1286
+
1287
+ # 현재 페이지에서 수집할 링크 개수
1288
+ remaining_count = counts_number
1289
+
1290
+ # 페이지 번호
1291
+ page_number = 1
1292
+
1293
+ # 페이지가 끝날 때까지 반복
1294
+ while remaining_count > 0
1295
+ # 요소가 로드될 때까지 대기
1296
+ wait = Selenium::WebDriver::Wait.new(:timeout => 10)
1297
+ wait.until { @driver.find_element(:xpath, '//form[@name="listTopForm"]//tbody//tr//td[@class="title"]//div[@class="wrap_td"]//span[@class="ell2 pcol2"]//a[@href]') }
1298
+
1299
+ # 현재 페이지에서 링크 수집 (form 태그 내에서 a 태그를 찾음)
1300
+ 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 태그 찾기
1301
+
1302
+ links.each do |link|
1303
+ post_url = link.attribute('href')
1304
+ if post_url && collected_urls.length < counts_number
1305
+ # 기존 URL에서 blogId와 logNo를 추출하여 변형
1306
+ if post_url.include?("blog.naver.com/PostView.naver")
1307
+ # URL에서 blogId와 logNo 추출
1308
+ blog_id = post_url.split("blogId=")[1].split("&")[0]
1309
+ log_no = post_url.split("logNo=")[1].split("&")[0]
1310
+
1311
+ # 변형된 URL 생성
1312
+ new_url = "https://blog.naver.com/#{blog_id}/#{log_no}"
1313
+
1314
+ # 변형된 URL을 배열에 추가
1315
+ collected_urls << new_url
1316
+ remaining_count -= 1
1317
+ end
1318
+ end
1319
+ end
1320
+
1321
+ # 수집된 개수가 요구한 수에 도달하면 종료
1322
+ break if collected_urls.length >= counts_number
1323
+
1324
+ # 10페이지까지 수집되었고, 다음 페이지가 있으면 "다음" 버튼 클릭하여 계속 수집
1325
+ if page_number % 10 == 0
1326
+ begin
1327
+ # "다음" 링크 찾기 (다음 페이지 링크)
1328
+ next_page_link = @driver.find_element(:xpath, "//a[text()='다음']")
1329
+ next_page_link.click
1330
+ page_number += 1 # 페이지 번호 증가
1331
+ sleep(2) # 페이지가 로드되기 전에 잠시 대기
1332
+ # 페이지가 변경될 때까지 대기
1333
+ wait.until { @driver.find_element(:xpath, '//form[@name="listTopForm"]//tbody//tr//td[@class="title"]//div[@class="wrap_td"]//span[@class="ell2 pcol2"]//a[@href]') }
1334
+ rescue Selenium::WebDriver::Error::NoSuchElementError
1335
+ # 만약 "다음" 버튼이 없으면 종료
1336
+ break
1337
+ end
1338
+ else
1339
+ # 페이지 번호가 더 있으면 다음 페이지로 이동
1340
+ begin
1341
+ next_page_link = @driver.find_element(:xpath, "//a[text()='#{page_number + 1}']")
1342
+ next_page_link.click
1343
+ page_number += 1
1344
+ sleep(2)
1345
+ # 페이지가 변경될 때까지 대기
1346
+ wait.until { @driver.find_element(:xpath, '//form[@name="listTopForm"]//tbody//tr//td[@class="title"]//div[@class="wrap_td"]//span[@class="ell2 pcol2"]//a[@href]') }
1347
+ rescue Selenium::WebDriver::Error::NoSuchElementError
1348
+ # 만약 다음 페이지 링크가 없으면 종료
1349
+ break
1350
+ end
1351
+ end
1352
+ end
1353
+
1354
+ @driver.switch_to.default_content
1355
+ end
1256
1356
 
1257
1357
  collected_urls.each do |url|
1258
1358
  # 각 post-url로 이동
@@ -1751,66 +1851,93 @@ class Naver
1751
1851
  # '이모티콘' 버튼 클릭
1752
1852
  @driver.find_element(:xpath, '//*[@data-action="write#beforeToggleSticker"]').click
1753
1853
  sleep(1)
1754
-
1755
-
1756
-
1757
-
1758
- # 1. 'data-id' 속성에 따라 랜덤으로 요소 클릭
1759
- data_ids = ["motion2d_01", "motion3d_02", "cafe_004", "cafe_005", "cafe_001", "cafe_002"]
1760
-
1761
- # 랜덤으로 data-id 선택
1762
- selected_data_id = data_ids.sample
1763
-
1764
- # 선택된 data-id에 해당하는 요소를 찾기
1765
- selected_element = @driver.find_element(:xpath, "//li[@data-id='#{selected_data_id}']")
1766
-
1767
- # 해당 요소 클릭
1768
- selected_element.click
1769
- #puts "클릭된 이data-id: #{selected_data_id}"
1770
-
1771
- sleep(1.5)
1772
-
1773
- # 2. data-id에 해당하는 data-param을 찾고 랜덤으로 클릭
1774
- case selected_data_id
1775
- when "cafe_005"
1776
- 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"]
1777
- when "cafe_001"
1778
- 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"]
1779
- when "motion2d_01"
1780
- 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"]
1781
- when "motion3d_02"
1782
- 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"]
1783
- when "cafe_004"
1784
- 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"]
1785
- when "cafe_002"
1786
- 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"]
1787
- else
1788
- data_params = []
1854
+
1855
+ actions = [
1856
+ lambda {
1857
+ begin
1858
+ @driver.find_element(:xpath, '//*[@data-param="motion2d_01"]').click
1859
+ sleep(2)
1860
+
1861
+ random_number = (1..24).to_a.sample
1862
+ @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
1863
+ sleep(2)
1864
+
1865
+ rescue
1866
+ end
1867
+ },
1868
+ lambda {
1869
+
1870
+ begin
1871
+ @driver.find_element(:xpath, '//*[@data-param="motion3d_02"]').click
1872
+ sleep(2)
1873
+
1874
+ random_number = (1..24).to_a.sample
1875
+ @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
1876
+ sleep(1)
1877
+ @driver.action.key_down(:enter).key_up(:enter).perform
1878
+ sleep(2)
1879
+
1880
+
1881
+ rescue
1882
+ end
1883
+ },
1884
+ lambda {
1885
+
1886
+ begin
1887
+ @driver.find_element(:xpath, '//*[@data-param="cafe_004"]').click
1888
+ sleep(2)
1889
+
1890
+ random_number = (1..28).to_a.sample
1891
+ @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
1892
+ sleep(2)
1893
+
1894
+ rescue
1789
1895
  end
1896
+ },
1897
+ lambda {
1790
1898
 
1791
- # 3. 이제 선택된 data-id에 해당하는 'data-param'을 가진 버튼을 찾아 랜덤으로 클릭하기
1792
- if data_params.any?
1793
- # 모든 'u_cbox_sticker_area' 요소를 찾기
1794
- areas = @driver.find_elements(:xpath, '//*[@class="u_cbox_sticker_area"]')
1899
+ begin
1900
+ @driver.find_element(:xpath, '//*[@data-param="cafe_005"]').click
1901
+ sleep(2)
1902
+
1903
+ random_number = (1..26).to_a.sample
1904
+ @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
1905
+ sleep(2)
1906
+
1907
+ rescue
1908
+ end
1909
+ },
1910
+ lambda {
1911
+
1912
+ begin
1913
+ @driver.find_element(:xpath, '//*[@data-param="cafe_001"]').click
1914
+ sleep(2)
1915
+
1916
+ random_number = (1..24).to_a.sample
1917
+ @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
1918
+ sleep(1)
1919
+ @driver.action.key_down(:enter).key_up(:enter).perform
1920
+ sleep(2)
1795
1921
 
1796
- # 각 'u_cbox_sticker_area' 내에서 랜덤으로 data-param을 찾기
1797
- areas.each do |area|
1798
- # 각 area 내에서 해당 data-id를 가진 button 찾기
1799
- buttons = area.find_elements(:xpath, ".//button[contains(@data-param, '#{selected_data_id}')]")
1922
+ rescue
1923
+ end
1924
+ },
1925
+ lambda {
1926
+
1927
+ begin
1928
+ @driver.find_element(:xpath, '//*[@data-param="cafe_002"]').click
1929
+ sleep(2)
1800
1930
 
1801
- # 해당 버튼이 있다면
1802
- if buttons.any?
1803
- # data-param에 해당하는 버튼을 랜덤으로 클릭
1804
- button_to_click = buttons.sample
1805
- button_to_click.click
1931
+ random_number = (1..24).to_a.sample
1932
+ @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
1933
+ sleep(1)
1934
+ @driver.action.key_down(:enter).key_up(:enter).perform
1806
1935
  sleep(2)
1807
- #puts "클릭된 data-param: #{button_to_click.attribute('data-param')}"
1808
- break # 클릭 후 루프 종료
1809
- end
1810
- end
1811
- else
1812
- #puts "해당 data-id에 대한 data-param이 없습니다."
1936
+ rescue
1813
1937
  end
1938
+ }
1939
+ ]
1940
+ actions.sample.call
1814
1941
 
1815
1942
 
1816
1943
  elsif option['이미지자동삽입'] == 'true'
@@ -2018,6 +2145,7 @@ class Wordpress
2018
2145
  @my_ip = 'init'
2019
2146
  image_soon = 0
2020
2147
  board_url_soon = 0
2148
+ blog_url_soon = 0
2021
2149
  nickname_soon = 0
2022
2150
  keyword_soon = 0
2023
2151
  @inumber2 = 0
@@ -2066,7 +2194,7 @@ class Wordpress
2066
2194
  puts 'Tethering IP change...'
2067
2195
 
2068
2196
  stdout, stderr, status = Open3.capture3('./adb devices')
2069
-
2197
+
2070
2198
  if status.success?
2071
2199
  device_id = stdout.split("\n")[1].split("\t")[0]
2072
2200
  puts device_id
@@ -2074,43 +2202,53 @@ class Wordpress
2074
2202
  # ADB 서버 초기화
2075
2203
  puts 'adb kill-server'
2076
2204
  Open3.capture3('./adb kill-server')
2077
- sleep(3)
2205
+ sleep(5) # ADB 서버가 안정될 시간을 충분히 주기
2078
2206
 
2079
2207
  # 다시 ADB 서버 실행
2080
2208
  puts 'adb start-server'
2081
2209
  Open3.capture3('./adb start-server')
2082
- sleep(3)
2210
+ sleep(5) # ADB 서버가 안정될 시간을 충분히 주기
2083
2211
 
2084
2212
  # 데이터를 끄고 켜기
2085
2213
  puts 'adb -s ' + device_id + ' shell svc data disable'
2086
- stdout2, stderr2, status2 = Open3.capture3('./adb -s '+device_id+' shell svc data disable')
2087
- sleep(3)
2214
+ stdout2, stderr2, status2 = Open3.capture3('./adb -s ' + device_id + ' shell svc data disable')
2215
+ puts "stderr: #{stderr2}" unless status2.success? # 오류 출력
2216
+ sleep(5) # 네트워크가 안정될 시간을 더 줍니다.
2088
2217
  puts 'adb -s ' + device_id + ' shell svc data enable'
2089
- Open3.capture3('./adb -s '+device_id+' shell svc data enable')
2090
- sleep(3)
2218
+ stdout3, stderr3, status3 = Open3.capture3('./adb -s ' + device_id + ' shell svc data enable')
2219
+ puts "stderr: #{stderr3}" unless status3.success? # 오류 출력
2220
+ sleep(5) # 네트워크가 안정될 시간을 더 줍니다.
2091
2221
  puts 'adb ok'
2092
2222
  sleep(8)
2093
-
2223
+
2224
+ # IP 변경 확인을 위한 람다 함수
2094
2225
  robot_ip = lambda do
2095
- http = HTTP.get('https://www.findip.kr/')
2096
- noko = Nokogiri::HTML(http.to_s)
2097
- if noko.xpath('/html/body/header/h2').text != @my_ip
2098
- @my_ip = noko.xpath('/html/body/header/h2').text
2226
+ begin
2227
+ # IP 변경 확인
2228
+ http = HTTP.get('https://www.findip.kr/')
2229
+ noko = Nokogiri::HTML(http.to_s)
2230
+
2231
+ current_ip = noko.xpath('/html/body/header/h2').text.strip
2232
+ if current_ip != @my_ip
2233
+ @my_ip = current_ip
2099
2234
  puts "IP 변경됨[ #{@my_ip} ]"
2100
- else
2101
- puts @my_ip
2102
- puts '제시도...'
2103
- sleep(3)
2104
- robot_ip[]
2235
+ else
2236
+ puts "현재 IP: #{@my_ip}"
2237
+ puts 'IP 변경이 감지되지 않았습니다. 다시 시도합니다...'
2238
+ sleep(5) # 여유롭게 대기 시간 증가
2239
+ robot_ip[] # 재시도
2240
+ end
2241
+ rescue HTTP::ConnectionError => e
2242
+ puts "네트워크 오류 발생: #{e.message}. 재시도 중..."
2243
+ sleep(5) # 재시도 간 여유 시간 추가
2244
+ retry # 재시도
2105
2245
  end
2106
- end
2107
- robot_ip[]
2108
-
2246
+ end
2247
+ robot_ip[] # IP 확인 시작
2109
2248
  else
2110
- puts 'adb error pass'
2249
+ puts "adb devices 명령어 실행 실패. stderr: #{stderr}"
2111
2250
  end
2112
- end
2113
-
2251
+ end
2114
2252
 
2115
2253
 
2116
2254
 
@@ -2183,6 +2321,20 @@ class Wordpress
2183
2321
  end
2184
2322
  end
2185
2323
  end
2324
+
2325
+ if @data['블로그설정']['블로그'].length == 0
2326
+ blog_url = ''
2327
+ else
2328
+ if @data['블로그설정']['랜덤사용'].checked?
2329
+ blog_url = @data['블로그설정']['블로그'].sample[1]
2330
+ else
2331
+ blog_url = @data['블로그설정']['블로그'][blog_url_soon][1]
2332
+ blog_url_soon += 1
2333
+ if blog_url_soon > @data['블로그설정']['블로그'].length-1
2334
+ blog_url_soon = 0
2335
+ end
2336
+ end
2337
+ end
2186
2338
 
2187
2339
  @data['table'][index][-1] = 15
2188
2340
  @data['table'] << []
@@ -2222,7 +2374,7 @@ class Wordpress
2222
2374
  end
2223
2375
  end
2224
2376
 
2225
- @data['table'][index][-1] = 20
2377
+ @data['table'][index][-1] = 25
2226
2378
  @data['table'] << []
2227
2379
  @data['table'].pop
2228
2380
 
@@ -2357,6 +2509,12 @@ class Wordpress
2357
2509
  else
2358
2510
  option['블로그무작위'] = 'false'
2359
2511
  end
2512
+
2513
+ if @data['포스트설정']['타겟블로그'].checked?
2514
+ option['타겟블로그'] = 'true'
2515
+ else
2516
+ option['타겟블로그'] = 'false'
2517
+ end
2360
2518
  @data['table'][index][-1] = 70
2361
2519
  @data['table'] << []
2362
2520
  @data['table'].pop
@@ -2444,7 +2602,7 @@ class Wordpress
2444
2602
  # 댓글 설정 수 카운트
2445
2603
  counts_number = @data['table'][index][6].to_i
2446
2604
  api_key = @data['포스트설정']['api_key'].text.to_s.force_encoding('utf-8')
2447
- naver.update(content,board_url,nickname,image,option,counts_number,keyword,api_key)
2605
+ naver.update(content,board_url,blog_url,nickname,image,option,counts_number,keyword,api_key)
2448
2606
 
2449
2607
 
2450
2608
 
@@ -2494,7 +2652,8 @@ class Wordpress
2494
2652
  @data['내용설정']['내용'] = [[false, '']]
2495
2653
  @data['이미지설정'] = Hash.new
2496
2654
  @data['이미지설정']['이미지'] = [[false, '']]
2497
-
2655
+ @data['블로그설정'] = Hash.new
2656
+ @data['블로그설정']['블로그'] = [[false, '']]
2498
2657
  @data['포스트설정'] = Hash.new
2499
2658
  @data['table'] = [[false, '', '', '', '','','']]
2500
2659
 
@@ -2658,6 +2817,14 @@ class Wordpress
2658
2817
 
2659
2818
  @data['닉네임설정']['닉네임'].pop
2660
2819
  end
2820
+
2821
+ while true
2822
+ if @data['블로그설정']['블로그'].length == 0
2823
+ break
2824
+ end
2825
+
2826
+ @data['블로그설정']['블로그'].pop
2827
+ end
2661
2828
 
2662
2829
 
2663
2830
  }
@@ -3077,6 +3244,106 @@ class Wordpress
3077
3244
 
3078
3245
  cell_rows @data['게시판설정']['게시판']
3079
3246
  }
3247
+
3248
+ horizontal_box{
3249
+ stretchy false
3250
+ button('   블로그url 불러오기  '){
3251
+ on_clicked{
3252
+ file = open_file
3253
+ if file != nil
3254
+ file_data = File.open(file, 'r', :encoding => 'utf-8').read()
3255
+ file_data.split("\n").each do |blog_url|
3256
+ if blog_url.split(' ').join('').length < 2
3257
+
3258
+ else
3259
+ @data['블로그설정']['블로그'] << [false, blog_url]
3260
+ @data['블로그설정']['블로그'] << [false, blog_url]
3261
+ @data['블로그설정']['블로그'].pop
3262
+ end
3263
+ end
3264
+ end
3265
+ }
3266
+ }
3267
+ }
3268
+
3269
+ horizontal_box{
3270
+ stretchy false
3271
+ grid{
3272
+ button(' 전체선택 '){
3273
+ top 1
3274
+ left 0
3275
+ on_clicked{
3276
+ for n in 0..@data['블로그설정']['블로그'].length-1
3277
+ @data['블로그설정']['블로그'][n][0] = true
3278
+ @data['블로그설정']['블로그'] << []
3279
+ @data['블로그설정']['블로그'].pop
3280
+ end
3281
+ }
3282
+ }
3283
+ button(' 선택해제 '){
3284
+ top 1
3285
+ left 1
3286
+ on_clicked{
3287
+ for n in 0..@data['블로그설정']['블로그'].length-1
3288
+ @data['블로그설정']['블로그'][n][0] = false
3289
+ @data['블로그설정']['블로그'] << []
3290
+ @data['블로그설정']['블로그'].pop
3291
+ end
3292
+ }
3293
+ }
3294
+ button(' 삭제하기 '){
3295
+ top 1
3296
+ left 2
3297
+ on_clicked{
3298
+ m = Array.new
3299
+ for n in 0..@data['블로그설정']['블로그'].length-1
3300
+ if @data['블로그설정']['블로그'][n][0] == true
3301
+ m << n
3302
+ end
3303
+ end
3304
+
3305
+ m.reverse.each do |i|
3306
+ @data['블로그설정']['블로그'].delete_at(i)
3307
+ end
3308
+ @data['블로그설정']['블로그'].delete(nil)
3309
+ }
3310
+ }
3311
+ }
3312
+
3313
+ horizontal_box{
3314
+ stretchy false
3315
+ @data['블로그설정']['순서사용'] = checkbox('순서사용'){
3316
+ stretchy false
3317
+ on_toggled{ |c|
3318
+ if c.checked?
3319
+ @data['블로그설정']['랜덤사용'].checked = false
3320
+ end
3321
+ }
3322
+ }
3323
+ @data['블로그설정']['랜덤사용'] = checkbox('랜덤사용'){
3324
+ stretchy false
3325
+ on_toggled{ |c|
3326
+ if c.checked?
3327
+ @data['블로그설정']['순서사용'].checked = false
3328
+ end
3329
+ }
3330
+ }
3331
+ }
3332
+ }
3333
+
3334
+ table{
3335
+ checkbox_column('선택'){
3336
+ editable true
3337
+ }
3338
+
3339
+ text_column('블로그url'){
3340
+
3341
+ }
3342
+
3343
+ cell_rows @data['블로그설정']['블로그']
3344
+ }
3345
+
3346
+
3080
3347
 
3081
3348
  }
3082
3349
  vertical_separator{
@@ -3673,6 +3940,7 @@ class Wordpress
3673
3940
  @data['포스트설정']['블로그키워드검색최신순'].enabled = false # '내용투명' 활성화
3674
3941
  @data['포스트설정']['블로그키워드검색인기순'].enabled = false # '내용투명' 활성화
3675
3942
  @data['포스트설정']['블로그무작위'].enabled = false # '내용투명' 활성화
3943
+ @data['포스트설정']['타겟블로그'].enabled = false # '내용투명' 활성화
3676
3944
  @data['포스트설정']['이웃추가'].enabled = false # '내용투명' 활성화
3677
3945
  @data['포스트설정']['서로이웃추가'].enabled = false # '내용투명' 활성화
3678
3946
  @data['포스트설정']['공유하기'].enabled = false # '내용투명' 활성화
@@ -3681,6 +3949,7 @@ class Wordpress
3681
3949
  @data['포스트설정']['블로그키워드검색최신순'].checked = false
3682
3950
  @data['포스트설정']['블로그키워드검색인기순'].checked = false
3683
3951
  @data['포스트설정']['블로그무작위'].checked = false
3952
+ @data['포스트설정']['타겟블로그'].checked = false
3684
3953
  @data['포스트설정']['이웃추가'].checked = false
3685
3954
  @data['포스트설정']['서로이웃추가'].checked = false
3686
3955
  @data['포스트설정']['공유하기'].checked = false
@@ -3763,6 +4032,7 @@ class Wordpress
3763
4032
  @data['포스트설정']['블로그키워드검색최신순'].enabled = true # '내용투명' 활성화
3764
4033
  @data['포스트설정']['블로그키워드검색인기순'].enabled = true # '내용투명' 활성화
3765
4034
  @data['포스트설정']['블로그무작위'].enabled = true # '내용투명' 활성화
4035
+ @data['포스트설정']['타겟블로그'].enabled = true # '내용투명' 활성화
3766
4036
  @data['포스트설정']['이웃추가'].enabled = true # '내용투명' 활성화
3767
4037
  @data['포스트설정']['서로이웃추가'].enabled = true # '내용투명' 활성화
3768
4038
  @data['포스트설정']['공유하기'].enabled = true # '내용투명' 활성화
@@ -3783,6 +4053,7 @@ class Wordpress
3783
4053
  @data['포스트설정']['블로그키워드검색최신순'].enabled = false # '내용투명' 활성화
3784
4054
  @data['포스트설정']['블로그키워드검색인기순'].enabled = false # '내용투명' 활성화
3785
4055
  @data['포스트설정']['블로그무작위'].enabled = false # '내용투명' 활성화
4056
+ @data['포스트설정']['타겟블로그'].enabled = false # '내용투명' 활성화
3786
4057
  @data['포스트설정']['이웃추가'].enabled = false # '내용투명' 활성화
3787
4058
  @data['포스트설정']['서로이웃추가'].enabled = false # '내용투명' 활성화
3788
4059
  @data['포스트설정']['공유하기'].enabled = false # '내용투명' 활성화
@@ -3791,6 +4062,7 @@ class Wordpress
3791
4062
  @data['포스트설정']['블로그키워드검색최신순'].checked = false
3792
4063
  @data['포스트설정']['블로그키워드검색인기순'].checked = false
3793
4064
  @data['포스트설정']['블로그무작위'].checked = false
4065
+ @data['포스트설정']['타겟블로그'].checked = false
3794
4066
  @data['포스트설정']['이웃추가'].checked = false
3795
4067
  @data['포스트설정']['서로이웃추가'].checked = false
3796
4068
  @data['포스트설정']['공유하기'].checked = false
@@ -3809,6 +4081,7 @@ class Wordpress
3809
4081
  if @data['포스트설정']['블로그키워드검색최신순'].checked?
3810
4082
  @data['포스트설정']['블로그키워드검색인기순'].checked = false
3811
4083
  @data['포스트설정']['블로그무작위'].checked = false
4084
+ @data['포스트설정']['타겟블로그'].checked = false
3812
4085
  end
3813
4086
  }
3814
4087
  }
@@ -3820,12 +4093,13 @@ class Wordpress
3820
4093
  if @data['포스트설정']['블로그키워드검색인기순'].checked?
3821
4094
  @data['포스트설정']['블로그키워드검색최신순'].checked = false
3822
4095
  @data['포스트설정']['블로그무작위'].checked = false
4096
+ @data['포스트설정']['타겟블로그'].checked = false
3823
4097
  end
3824
4098
  }
3825
4099
  }
3826
4100
 
3827
4101
 
3828
- @data['포스트설정']['블로그무작위'] = checkbox('블로그 랜덤 무작위 설정'){
4102
+ @data['포스트설정']['블로그무작위'] = checkbox('블로그 랜덤 무작위 설정  '){
3829
4103
  top 1
3830
4104
  left 3
3831
4105
  enabled false
@@ -3833,11 +4107,23 @@ class Wordpress
3833
4107
  if @data['포스트설정']['블로그무작위'].checked?
3834
4108
  @data['포스트설정']['블로그키워드검색최신순'].checked = false
3835
4109
  @data['포스트설정']['블로그키워드검색인기순'].checked = false
4110
+ @data['포스트설정']['타겟블로그'].checked = false
3836
4111
  end
3837
4112
  }
3838
4113
  }
3839
-
3840
-
4114
+ @data['포스트설정']['타겟블로그'] = checkbox('타겟 블로그 작업 (블로그 게시글 URL이 아닌 블로그URL를 세팅해주세요.)'){
4115
+ top 1
4116
+ left 4
4117
+ enabled false
4118
+ on_toggled {
4119
+ if @data['포스트설정']['타겟블로그'].checked?
4120
+ @data['포스트설정']['블로그키워드검색최신순'].checked = false
4121
+ @data['포스트설정']['블로그키워드검색인기순'].checked = false
4122
+ @data['포스트설정']['블로그무작위'].checked = false
4123
+ end
4124
+ }
4125
+ }
4126
+
3841
4127
  @data['포스트설정']['이웃추가'] = checkbox('이웃추가'){
3842
4128
  top 2
3843
4129
  left 0
@@ -3979,11 +4265,13 @@ class Wordpress
3979
4265
  @data['닉네임설정']['닉네임'].shift
3980
4266
  @data['이미지설정']['이미지'].shift
3981
4267
  @data['내용설정']['내용'].shift
4268
+ @data['블로그설정']['블로그'].shift
3982
4269
  @data['게시판설정']['랜덤사용'].checked = true
3983
4270
  @data['키워드설정']['랜덤사용'].checked = true
3984
4271
  @data['닉네임설정']['랜덤사용'].checked = true
3985
4272
  @data['이미지설정']['랜덤사용'].checked = true
3986
4273
  @data['내용설정']['랜덤사용'].checked = true
4274
+ @data['블로그설정']['랜덤사용'].checked = true
3987
4275
 
3988
4276
 
3989
4277
  }.show
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: duo_blog_cafe_comment
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.15
4
+ version: 0.0.20
5
5
  platform: ruby
6
6
  authors:
7
7
  - zon
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2025-02-18 00:00:00.000000000 Z
11
+ date: 2025-02-25 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: File to Clipboard gem
14
14
  email: mymin26@naver.com