zon_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/zon_blog_cafe_comment.rb +426 -138
  3. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 39f6a571515670ebefbf6eb8dbe02bbe924698c17fc32cf6449a2b203a0681c4
4
- data.tar.gz: 9ee5717cc8a2a02bd2a6eea6dceeb61649445da35c8e1b178baa05f564d2bd97
3
+ metadata.gz: d7073aec9c9af6ebbf6834bc9ddde5a22c453764de9ef696326952b74577f815
4
+ data.tar.gz: d8073ae15c1c7874eb7caa5a6072fa1623b19ad9ad21a36fa77d479e4892e750
5
5
  SHA512:
6
- metadata.gz: cf5b598affd1d67653c91961e448bcfec5a8c8f2c3c870e648019026febed34d2ac3a6fed30de40a2ac5222549a5ff9d986b4161549c6c14b43961d8b5ca6d2b
7
- data.tar.gz: ccdcafc71a253285a693996dc467987206e083f09e32c52d6d1722e908c317b553067fba4c4dc3a8be2ad58ac1b67b34211fb7db24eac9f1c5b7faca9c7951a4
6
+ metadata.gz: 7968b1e8712d1613fe85a94ccbb2ee20a85b69c94fdc855118176a5c3f154e2c8d2d4d9e082b6e7a1f64e251069be90b10cc46509a06779118548779117ade1a
7
+ data.tar.gz: e67ff652aaadfa72f28c423c616e3ff9959f62b0c53d7a1dc7fb3395b07c8f836bcda437e65073dc6dde07e2662fa85673d5078f1c81b02d75fdb996d5a1cd9c
@@ -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
 
@@ -506,22 +507,22 @@ class Naver
506
507
 
507
508
  # 이미지 자동 삽입
508
509
  if option['이미지자동삽입'] == 'true'
509
- puts "이미지 자동 상입 옵션 진행!!".cyan
510
-
511
- # 아이프레임 요소가 나타날 때까지 기다립니다.
512
- @image = image
513
- image_path = image
514
-
515
- @driver.find_element(:xpath, '//*[@for="attach2"]').click
516
- sleep(1)
517
- key_stroke('escape')
518
- # 파일 경로 자동 입력
519
- file_input = @driver.find_element(:xpath, '//*[@id="attach2"]')
520
-
521
- # send_keys로 파일 경로를 입력하여 이미지 업로드
522
- file_input.send_keys(image_path)
523
- sleep(2)
524
-
510
+ puts "이미지 자동 상입 옵션 진행!!".cyan
511
+
512
+ # 아이프레임 요소가 나타날 때까지 기다립니다.
513
+ @image = image
514
+ image_path = image
515
+
516
+ @driver.find_element(:xpath, '//*[@for="attach2"]').click
517
+ sleep(1)
518
+ key_stroke('escape')
519
+ # 파일 경로 자동 입력
520
+ file_input = @driver.find_element(:xpath, '//*[@id="attach2"]')
521
+
522
+ # send_keys로 파일 경로를 입력하여 이미지 업로드
523
+ file_input.send_keys(image_path)
524
+ sleep(2)
525
+
525
526
  else
526
527
  end
527
528
 
@@ -724,21 +725,21 @@ class Naver
724
725
  # 이미지 자동 삽입
725
726
  if option['이미지자동삽입'] == 'true'
726
727
  puts "이미지 자동 상입 옵션 진행!!".cyan
727
-
728
+
728
729
  # 아이프레임 요소가 나타날 때까지 기다립니다.
729
730
  @image = image
730
731
  image_path = image
731
-
732
+
732
733
  @driver.find_element(:xpath, '//*[@for="attach2"]').click
733
734
  sleep(1)
734
735
  key_stroke('escape')
735
736
  # 파일 경로 자동 입력
736
737
  file_input = @driver.find_element(:xpath, '//*[@id="attach2"]')
737
-
738
+
738
739
  # send_keys로 파일 경로를 입력하여 이미지 업로드
739
740
  file_input.send_keys(image_path)
740
741
  sleep(2)
741
-
742
+
742
743
  else
743
744
  end
744
745
 
@@ -1000,22 +1001,22 @@ class Naver
1000
1001
 
1001
1002
  # 이미지 자동 삽입
1002
1003
  if option['이미지자동삽입'] == 'true'
1003
- puts "이미지 자동 상입 옵션 진행!!".cyan
1004
+ puts "이미지 자동 상입 옵션 진행!!".cyan
1004
1005
 
1005
- # 아이프레임 요소가 나타날 때까지 기다립니다.
1006
- @image = image
1007
- image_path = image
1008
-
1009
- @driver.find_element(:xpath, '//*[@for="attach2"]').click
1010
- sleep(1)
1011
- key_stroke('escape')
1012
- # 파일 경로 자동 입력
1013
- file_input = @driver.find_element(:xpath, '//*[@id="attach2"]')
1006
+ # 아이프레임 요소가 나타날 때까지 기다립니다.
1007
+ @image = image
1008
+ image_path = image
1009
+
1010
+ @driver.find_element(:xpath, '//*[@for="attach2"]').click
1011
+ sleep(1)
1012
+ key_stroke('escape')
1013
+ # 파일 경로 자동 입력
1014
+ file_input = @driver.find_element(:xpath, '//*[@id="attach2"]')
1014
1015
 
1015
- # send_keys로 파일 경로를 입력하여 이미지 업로드
1016
- file_input.send_keys(image_path)
1017
- sleep(2)
1018
-
1016
+ # send_keys로 파일 경로를 입력하여 이미지 업로드
1017
+ file_input.send_keys(image_path)
1018
+ sleep(2)
1019
+
1019
1020
  else
1020
1021
  end
1021
1022
 
@@ -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
1789
1882
  end
1883
+ },
1884
+ lambda {
1790
1885
 
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"]')
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
1895
+ end
1896
+ },
1897
+ lambda {
1898
+
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'
@@ -1948,6 +2075,7 @@ end
1948
2075
  @my_ip = 'init'
1949
2076
  image_soon = 0
1950
2077
  board_url_soon = 0
2078
+ blog_url_soon = 0
1951
2079
  nickname_soon = 0
1952
2080
  keyword_soon = 0
1953
2081
  @inumber2 = 0
@@ -1996,7 +2124,7 @@ end
1996
2124
  puts 'Tethering IP change...'
1997
2125
 
1998
2126
  stdout, stderr, status = Open3.capture3('./adb devices')
1999
-
2127
+
2000
2128
  if status.success?
2001
2129
  device_id = stdout.split("\n")[1].split("\t")[0]
2002
2130
  puts device_id
@@ -2004,43 +2132,53 @@ end
2004
2132
  # ADB 서버 초기화
2005
2133
  puts 'adb kill-server'
2006
2134
  Open3.capture3('./adb kill-server')
2007
- sleep(3)
2135
+ sleep(5) # ADB 서버가 안정될 시간을 충분히 주기
2008
2136
 
2009
2137
  # 다시 ADB 서버 실행
2010
2138
  puts 'adb start-server'
2011
2139
  Open3.capture3('./adb start-server')
2012
- sleep(3)
2140
+ sleep(5) # ADB 서버가 안정될 시간을 충분히 주기
2013
2141
 
2014
2142
  # 데이터를 끄고 켜기
2015
2143
  puts 'adb -s ' + device_id + ' shell svc data disable'
2016
- stdout2, stderr2, status2 = Open3.capture3('./adb -s '+device_id+' shell svc data disable')
2017
- sleep(3)
2144
+ stdout2, stderr2, status2 = Open3.capture3('./adb -s ' + device_id + ' shell svc data disable')
2145
+ puts "stderr: #{stderr2}" unless status2.success? # 오류 출력
2146
+ sleep(5) # 네트워크가 안정될 시간을 더 줍니다.
2018
2147
  puts 'adb -s ' + device_id + ' shell svc data enable'
2019
- Open3.capture3('./adb -s '+device_id+' shell svc data enable')
2020
- sleep(3)
2148
+ stdout3, stderr3, status3 = Open3.capture3('./adb -s ' + device_id + ' shell svc data enable')
2149
+ puts "stderr: #{stderr3}" unless status3.success? # 오류 출력
2150
+ sleep(5) # 네트워크가 안정될 시간을 더 줍니다.
2021
2151
  puts 'adb ok'
2022
2152
  sleep(8)
2023
-
2153
+
2154
+ # IP 변경 확인을 위한 람다 함수
2024
2155
  robot_ip = lambda do
2025
- http = HTTP.get('https://www.findip.kr/')
2026
- noko = Nokogiri::HTML(http.to_s)
2027
- if noko.xpath('/html/body/header/h2').text != @my_ip
2028
- @my_ip = noko.xpath('/html/body/header/h2').text
2156
+ begin
2157
+ # IP 변경 확인
2158
+ http = HTTP.get('https://www.findip.kr/')
2159
+ noko = Nokogiri::HTML(http.to_s)
2160
+
2161
+ current_ip = noko.xpath('/html/body/header/h2').text.strip
2162
+ if current_ip != @my_ip
2163
+ @my_ip = current_ip
2029
2164
  puts "IP 변경됨[ #{@my_ip} ]"
2030
- else
2031
- puts @my_ip
2032
- puts '제시도...'
2033
- sleep(3)
2034
- robot_ip[]
2165
+ else
2166
+ puts "현재 IP: #{@my_ip}"
2167
+ puts 'IP 변경이 감지되지 않았습니다. 다시 시도합니다...'
2168
+ sleep(5) # 여유롭게 대기 시간 증가
2169
+ robot_ip[] # 재시도
2170
+ end
2171
+ rescue HTTP::ConnectionError => e
2172
+ puts "네트워크 오류 발생: #{e.message}. 재시도 중..."
2173
+ sleep(5) # 재시도 간 여유 시간 추가
2174
+ retry # 재시도
2035
2175
  end
2036
- end
2037
- robot_ip[]
2038
-
2176
+ end
2177
+ robot_ip[] # IP 확인 시작
2039
2178
  else
2040
- puts 'adb error pass'
2179
+ puts "adb devices 명령어 실행 실패. stderr: #{stderr}"
2041
2180
  end
2042
- end
2043
-
2181
+ end
2044
2182
 
2045
2183
 
2046
2184
 
@@ -2113,6 +2251,20 @@ end
2113
2251
  end
2114
2252
  end
2115
2253
  end
2254
+
2255
+ if @data['블로그설정']['블로그'].length == 0
2256
+ blog_url = ''
2257
+ else
2258
+ if @data['블로그설정']['랜덤사용'].checked?
2259
+ blog_url = @data['블로그설정']['블로그'].sample[1]
2260
+ else
2261
+ blog_url = @data['블로그설정']['블로그'][blog_url_soon][1]
2262
+ blog_url_soon += 1
2263
+ if blog_url_soon > @data['블로그설정']['블로그'].length-1
2264
+ blog_url_soon = 0
2265
+ end
2266
+ end
2267
+ end
2116
2268
 
2117
2269
  @data['table'][index][-1] = 15
2118
2270
  @data['table'] << []
@@ -2152,7 +2304,7 @@ end
2152
2304
  end
2153
2305
  end
2154
2306
 
2155
- @data['table'][index][-1] = 20
2307
+ @data['table'][index][-1] = 25
2156
2308
  @data['table'] << []
2157
2309
  @data['table'].pop
2158
2310
 
@@ -2287,6 +2439,12 @@ end
2287
2439
  else
2288
2440
  option['블로그무작위'] = 'false'
2289
2441
  end
2442
+
2443
+ if @data['포스트설정']['타겟블로그'].checked?
2444
+ option['타겟블로그'] = 'true'
2445
+ else
2446
+ option['타겟블로그'] = 'false'
2447
+ end
2290
2448
  @data['table'][index][-1] = 70
2291
2449
  @data['table'] << []
2292
2450
  @data['table'].pop
@@ -2374,7 +2532,7 @@ end
2374
2532
  # 댓글 설정 수 카운트
2375
2533
  counts_number = @data['table'][index][6].to_i
2376
2534
  api_key = @data['포스트설정']['api_key'].text.to_s.force_encoding('utf-8')
2377
- naver.update(content,board_url,nickname,image,option,counts_number,keyword,api_key)
2535
+ naver.update(content,board_url,blog_url,nickname,image,option,counts_number,keyword,api_key)
2378
2536
 
2379
2537
 
2380
2538
 
@@ -2424,7 +2582,8 @@ end
2424
2582
  @data['내용설정']['내용'] = [[false, '']]
2425
2583
  @data['이미지설정'] = Hash.new
2426
2584
  @data['이미지설정']['이미지'] = [[false, '']]
2427
-
2585
+ @data['블로그설정'] = Hash.new
2586
+ @data['블로그설정']['블로그'] = [[false, '']]
2428
2587
  @data['포스트설정'] = Hash.new
2429
2588
  @data['table'] = [[false, '', '', '', '','','']]
2430
2589
 
@@ -2583,7 +2742,15 @@ end
2583
2742
 
2584
2743
  @data['닉네임설정']['닉네임'].pop
2585
2744
  end
2745
+
2746
+
2747
+ while true
2748
+ if @data['블로그설정']['블로그'].length == 0
2749
+ break
2750
+ end
2586
2751
 
2752
+ @data['블로그설정']['블로그'].pop
2753
+ end
2587
2754
 
2588
2755
  }
2589
2756
  }
@@ -3002,6 +3169,106 @@ end
3002
3169
 
3003
3170
  cell_rows @data['게시판설정']['게시판']
3004
3171
  }
3172
+
3173
+ horizontal_box{
3174
+ stretchy false
3175
+ button('   블로그url 불러오기  '){
3176
+ on_clicked{
3177
+ file = open_file
3178
+ if file != nil
3179
+ file_data = File.open(file, 'r', :encoding => 'utf-8').read()
3180
+ file_data.split("\n").each do |blog_url|
3181
+ if blog_url.split(' ').join('').length < 2
3182
+
3183
+ else
3184
+ @data['블로그설정']['블로그'] << [false, blog_url]
3185
+ @data['블로그설정']['블로그'] << [false, blog_url]
3186
+ @data['블로그설정']['블로그'].pop
3187
+ end
3188
+ end
3189
+ end
3190
+ }
3191
+ }
3192
+ }
3193
+
3194
+ horizontal_box{
3195
+ stretchy false
3196
+ grid{
3197
+ button(' 전체선택 '){
3198
+ top 1
3199
+ left 0
3200
+ on_clicked{
3201
+ for n in 0..@data['블로그설정']['블로그'].length-1
3202
+ @data['블로그설정']['블로그'][n][0] = true
3203
+ @data['블로그설정']['블로그'] << []
3204
+ @data['블로그설정']['블로그'].pop
3205
+ end
3206
+ }
3207
+ }
3208
+ button(' 선택해제 '){
3209
+ top 1
3210
+ left 1
3211
+ on_clicked{
3212
+ for n in 0..@data['블로그설정']['블로그'].length-1
3213
+ @data['블로그설정']['블로그'][n][0] = false
3214
+ @data['블로그설정']['블로그'] << []
3215
+ @data['블로그설정']['블로그'].pop
3216
+ end
3217
+ }
3218
+ }
3219
+ button(' 삭제하기 '){
3220
+ top 1
3221
+ left 2
3222
+ on_clicked{
3223
+ m = Array.new
3224
+ for n in 0..@data['블로그설정']['블로그'].length-1
3225
+ if @data['블로그설정']['블로그'][n][0] == true
3226
+ m << n
3227
+ end
3228
+ end
3229
+
3230
+ m.reverse.each do |i|
3231
+ @data['블로그설정']['블로그'].delete_at(i)
3232
+ end
3233
+ @data['블로그설정']['블로그'].delete(nil)
3234
+ }
3235
+ }
3236
+ }
3237
+
3238
+ horizontal_box{
3239
+ stretchy false
3240
+ @data['블로그설정']['순서사용'] = checkbox('순서사용'){
3241
+ stretchy false
3242
+ on_toggled{ |c|
3243
+ if c.checked?
3244
+ @data['블로그설정']['랜덤사용'].checked = false
3245
+ end
3246
+ }
3247
+ }
3248
+ @data['블로그설정']['랜덤사용'] = checkbox('랜덤사용'){
3249
+ stretchy false
3250
+ on_toggled{ |c|
3251
+ if c.checked?
3252
+ @data['블로그설정']['순서사용'].checked = false
3253
+ end
3254
+ }
3255
+ }
3256
+ }
3257
+ }
3258
+
3259
+ table{
3260
+ checkbox_column('선택'){
3261
+ editable true
3262
+ }
3263
+
3264
+ text_column('블로그url'){
3265
+
3266
+ }
3267
+
3268
+ cell_rows @data['블로그설정']['블로그']
3269
+ }
3270
+
3271
+
3005
3272
 
3006
3273
  }
3007
3274
  vertical_separator{
@@ -3598,6 +3865,7 @@ end
3598
3865
  @data['포스트설정']['블로그키워드검색최신순'].enabled = false # '내용투명' 활성화
3599
3866
  @data['포스트설정']['블로그키워드검색인기순'].enabled = false # '내용투명' 활성화
3600
3867
  @data['포스트설정']['블로그무작위'].enabled = false # '내용투명' 활성화
3868
+ @data['포스트설정']['타겟블로그'].enabled = false # '내용투명' 활성화
3601
3869
  @data['포스트설정']['이웃추가'].enabled = false # '내용투명' 활성화
3602
3870
  @data['포스트설정']['서로이웃추가'].enabled = false # '내용투명' 활성화
3603
3871
  @data['포스트설정']['공유하기'].enabled = false # '내용투명' 활성화
@@ -3606,6 +3874,7 @@ end
3606
3874
  @data['포스트설정']['블로그키워드검색최신순'].checked = false
3607
3875
  @data['포스트설정']['블로그키워드검색인기순'].checked = false
3608
3876
  @data['포스트설정']['블로그무작위'].checked = false
3877
+ @data['포스트설정']['타겟블로그'].checked = false
3609
3878
  @data['포스트설정']['이웃추가'].checked = false
3610
3879
  @data['포스트설정']['서로이웃추가'].checked = false
3611
3880
  @data['포스트설정']['공유하기'].checked = false
@@ -3688,6 +3957,7 @@ end
3688
3957
  @data['포스트설정']['블로그키워드검색최신순'].enabled = true # '내용투명' 활성화
3689
3958
  @data['포스트설정']['블로그키워드검색인기순'].enabled = true # '내용투명' 활성화
3690
3959
  @data['포스트설정']['블로그무작위'].enabled = true # '내용투명' 활성화
3960
+ @data['포스트설정']['타겟블로그'].enabled = true # '내용투명' 활성화
3691
3961
  @data['포스트설정']['이웃추가'].enabled = true # '내용투명' 활성화
3692
3962
  @data['포스트설정']['서로이웃추가'].enabled = true # '내용투명' 활성화
3693
3963
  @data['포스트설정']['공유하기'].enabled = true # '내용투명' 활성화
@@ -3708,6 +3978,7 @@ end
3708
3978
  @data['포스트설정']['블로그키워드검색최신순'].enabled = false # '내용투명' 활성화
3709
3979
  @data['포스트설정']['블로그키워드검색인기순'].enabled = false # '내용투명' 활성화
3710
3980
  @data['포스트설정']['블로그무작위'].enabled = false # '내용투명' 활성화
3981
+ @data['포스트설정']['타겟블로그'].enabled = false # '내용투명' 활성화
3711
3982
  @data['포스트설정']['이웃추가'].enabled = false # '내용투명' 활성화
3712
3983
  @data['포스트설정']['서로이웃추가'].enabled = false # '내용투명' 활성화
3713
3984
  @data['포스트설정']['공유하기'].enabled = false # '내용투명' 활성화
@@ -3716,6 +3987,7 @@ end
3716
3987
  @data['포스트설정']['블로그키워드검색최신순'].checked = false
3717
3988
  @data['포스트설정']['블로그키워드검색인기순'].checked = false
3718
3989
  @data['포스트설정']['블로그무작위'].checked = false
3990
+ @data['포스트설정']['타겟블로그'].checked = false
3719
3991
  @data['포스트설정']['이웃추가'].checked = false
3720
3992
  @data['포스트설정']['서로이웃추가'].checked = false
3721
3993
  @data['포스트설정']['공유하기'].checked = false
@@ -3734,6 +4006,7 @@ end
3734
4006
  if @data['포스트설정']['블로그키워드검색최신순'].checked?
3735
4007
  @data['포스트설정']['블로그키워드검색인기순'].checked = false
3736
4008
  @data['포스트설정']['블로그무작위'].checked = false
4009
+ @data['포스트설정']['타겟블로그'].checked = false
3737
4010
  end
3738
4011
  }
3739
4012
  }
@@ -3745,12 +4018,13 @@ end
3745
4018
  if @data['포스트설정']['블로그키워드검색인기순'].checked?
3746
4019
  @data['포스트설정']['블로그키워드검색최신순'].checked = false
3747
4020
  @data['포스트설정']['블로그무작위'].checked = false
4021
+ @data['포스트설정']['타겟블로그'].checked = false
3748
4022
  end
3749
4023
  }
3750
4024
  }
3751
4025
 
3752
4026
 
3753
- @data['포스트설정']['블로그무작위'] = checkbox('블로그 랜덤 무작위 설정'){
4027
+ @data['포스트설정']['블로그무작위'] = checkbox('블로그 랜덤 무작위 설정  '){
3754
4028
  top 1
3755
4029
  left 3
3756
4030
  enabled false
@@ -3758,11 +4032,23 @@ end
3758
4032
  if @data['포스트설정']['블로그무작위'].checked?
3759
4033
  @data['포스트설정']['블로그키워드검색최신순'].checked = false
3760
4034
  @data['포스트설정']['블로그키워드검색인기순'].checked = false
4035
+ @data['포스트설정']['타겟블로그'].checked = false
3761
4036
  end
3762
4037
  }
3763
4038
  }
3764
-
3765
-
4039
+ @data['포스트설정']['타겟블로그'] = checkbox('타겟 블로그 작업 (블로그 게시글 URL이 아닌 블로그URL를 세팅해주세요.)'){
4040
+ top 1
4041
+ left 4
4042
+ enabled false
4043
+ on_toggled {
4044
+ if @data['포스트설정']['타겟블로그'].checked?
4045
+ @data['포스트설정']['블로그키워드검색최신순'].checked = false
4046
+ @data['포스트설정']['블로그키워드검색인기순'].checked = false
4047
+ @data['포스트설정']['블로그무작위'].checked = false
4048
+ end
4049
+ }
4050
+ }
4051
+
3766
4052
  @data['포스트설정']['이웃추가'] = checkbox('이웃추가'){
3767
4053
  top 2
3768
4054
  left 0
@@ -3783,26 +4069,26 @@ end
3783
4069
  end
3784
4070
  }
3785
4071
  }
3786
- @data['포스트설정']['공유하기'] = checkbox('공유하기'){
3787
- top 2
3788
- left 2
3789
- enabled false
3790
- on_toggled {
3791
- if @data['포스트설정']['공유하기'].checked?
3792
- @data['포스트설정']['공유하기비공개'].checked = false
3793
- end
3794
- }
3795
- }
3796
- @data['포스트설정']['공유하기비공개'] = checkbox('비공개 공유하기'){
3797
- top 2
3798
- left 3
3799
- enabled false
3800
- on_toggled {
3801
- if @data['포스트설정']['공유하기비공개'].checked?
3802
- @data['포스트설정']['공유하기'].checked = false
3803
- end
4072
+ @data['포스트설정']['공유하기'] = checkbox('공유하기'){
4073
+ top 2
4074
+ left 2
4075
+ enabled false
4076
+ on_toggled {
4077
+ if @data['포스트설정']['공유하기'].checked?
4078
+ @data['포스트설정']['공유하기비공개'].checked = false
4079
+ end
4080
+ }
3804
4081
  }
3805
- }
4082
+ @data['포스트설정']['공유하기비공개'] = checkbox('비공개 공유하기'){
4083
+ top 2
4084
+ left 3
4085
+ enabled false
4086
+ on_toggled {
4087
+ if @data['포스트설정']['공유하기비공개'].checked?
4088
+ @data['포스트설정']['공유하기'].checked = false
4089
+ end
4090
+ }
4091
+ }
3806
4092
 
3807
4093
  }}
3808
4094
 
@@ -3904,11 +4190,13 @@ end
3904
4190
  @data['닉네임설정']['닉네임'].shift
3905
4191
  @data['이미지설정']['이미지'].shift
3906
4192
  @data['내용설정']['내용'].shift
4193
+ @data['블로그설정']['블로그'].shift
3907
4194
  @data['게시판설정']['랜덤사용'].checked = true
3908
4195
  @data['키워드설정']['랜덤사용'].checked = true
3909
4196
  @data['닉네임설정']['랜덤사용'].checked = true
3910
4197
  @data['이미지설정']['랜덤사용'].checked = true
3911
4198
  @data['내용설정']['랜덤사용'].checked = true
4199
+ @data['블로그설정']['랜덤사용'].checked = true
3912
4200
 
3913
4201
 
3914
4202
  }.show
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: zon_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