duo_blog_cafe_comment 0.0.55 → 0.0.59
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/duo_blog_cafe_comment.rb +215 -26
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 12962ca1346261f79ad044b09282fb581b1a871b5a0c1033bfd095e115e0d0a6
|
4
|
+
data.tar.gz: 4580ae4cf77f05edc00bc9381bcd883fb5e060ba03f4e4305a190545bc95cbc4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f9302814ae28dd1d302474f4b2f234d61a1a8422081984e95173dac788a2f8046d96407dc71547454cacfce8c5b29a8ec63c81e744cdfae36f8dec991e445d7c
|
7
|
+
data.tar.gz: 6dbd9578c1aaecec8a753f48e43d60b88eaa042188192e66bec1665fbd2310ebb067538a8b26a33f870c3de1aa3e86ffcfcb2b2ec4682467035a06cba4ad2910
|
@@ -22,7 +22,8 @@ include Glimmer
|
|
22
22
|
|
23
23
|
|
24
24
|
class Naver
|
25
|
-
def initialize
|
25
|
+
def initialize(data)
|
26
|
+
@data = data
|
26
27
|
@seed = 1
|
27
28
|
end
|
28
29
|
|
@@ -274,12 +275,13 @@ class Naver
|
|
274
275
|
|
275
276
|
|
276
277
|
|
277
|
-
def update(content,board_url,blog_url,nickname,image,option,counts_number,keyword,api_key)
|
278
|
+
def update(content,board_url,blog_url,nickname,image,option,counts_number,keyword,api_key,sleep_delay)
|
278
279
|
@board_url = board_url
|
279
280
|
@keyword = keyword
|
280
281
|
@content = content
|
281
282
|
@api_key = api_key
|
282
283
|
@blog_url = blog_url
|
284
|
+
@sleep_delay = sleep_delay
|
283
285
|
if option['카페사용모드'] == 'true'
|
284
286
|
|
285
287
|
|
@@ -490,6 +492,42 @@ class Naver
|
|
490
492
|
sleep(1)
|
491
493
|
@driver.switch_to.frame(@driver.find_element(:xpath, '//*[@id="cafe_main"]')) # 아이프레임 선택
|
492
494
|
|
495
|
+
sleep(1)
|
496
|
+
puts "게시글 읽는 모션 진행".yellow
|
497
|
+
@driver.action.send_keys(:page_down).perform #스크롤 내리기
|
498
|
+
sleep(1)
|
499
|
+
@driver.action.send_keys(:page_down).perform #스크롤 내리기
|
500
|
+
sleep(1)
|
501
|
+
|
502
|
+
content_soon = 0
|
503
|
+
# 💬 content 설정 (여기 추가!)
|
504
|
+
if @data['내용설정']['내용'].nil? || @data['내용설정']['내용'].empty?
|
505
|
+
content = ''
|
506
|
+
else
|
507
|
+
if @data.dig('내용설정', '랜덤사용')&.respond_to?(:checked?) && @data['내용설정']['랜덤사용'].checked?
|
508
|
+
content = @data['내용설정']['내용'].sample[2] # 랜덤 사용 시
|
509
|
+
else
|
510
|
+
content = @data['내용설정']['내용'][content_soon][2] # 순차적으로 사용
|
511
|
+
content_soon += 1
|
512
|
+
if content_soon >= @data['내용설정']['내용'].length
|
513
|
+
content_soon = 0
|
514
|
+
end
|
515
|
+
end
|
516
|
+
end
|
517
|
+
|
518
|
+
# 디엠 자동 변경이 체크된 경우 content를 변환
|
519
|
+
if @data['포스트설정']['내용자동변경'].checked?
|
520
|
+
change_memory = {}
|
521
|
+
@data['포스트설정']['내용자동변경값'].each do |key, v|
|
522
|
+
change_memory[key] = v.sample
|
523
|
+
end
|
524
|
+
@data['포스트설정']['내용자동변경값'].each do |key, _|
|
525
|
+
if content.include?(key)
|
526
|
+
content = content.gsub(key, change_memory[key]) # gsub을 사용하여 내용 치환
|
527
|
+
else
|
528
|
+
end
|
529
|
+
end
|
530
|
+
end
|
493
531
|
|
494
532
|
if option['좋아요'] == 'true'
|
495
533
|
puts "좋아요 클릭 옵션 진행!!".cyan
|
@@ -570,6 +608,7 @@ class Naver
|
|
570
608
|
sleep(1)
|
571
609
|
else
|
572
610
|
begin
|
611
|
+
puts (content)
|
573
612
|
@driver.find_element(:xpath, '//*[@placeholder="댓글을 남겨보세요"]').send_keys(content)
|
574
613
|
sleep(1)
|
575
614
|
rescue
|
@@ -688,6 +727,18 @@ class Naver
|
|
688
727
|
end
|
689
728
|
end
|
690
729
|
@driver.switch_to.default_content() # 아이프레임 해제
|
730
|
+
def sleep_with_progress(sleep_delay)
|
731
|
+
print "[설정 딜레이 진행 중] "
|
732
|
+
steps = (sleep_delay.to_f / 0.5).to_i
|
733
|
+
steps.times do
|
734
|
+
print "."
|
735
|
+
STDOUT.flush
|
736
|
+
sleep(1)
|
737
|
+
end
|
738
|
+
puts "\n"
|
739
|
+
end
|
740
|
+
|
741
|
+
sleep_with_progress(sleep_delay)
|
691
742
|
rescue => e
|
692
743
|
puts "Error: #{e.message}"
|
693
744
|
end
|
@@ -707,6 +758,43 @@ class Naver
|
|
707
758
|
wait.until { @driver.find_element(:xpath, '//*[@id="cafe_main"]') } # 아이프레임 선택
|
708
759
|
sleep(1)
|
709
760
|
@driver.switch_to.frame(@driver.find_element(:xpath, '//*[@id="cafe_main"]')) # 아이프레임 선택
|
761
|
+
|
762
|
+
sleep(1)
|
763
|
+
puts "게시글 읽는 모션 진행".yellow
|
764
|
+
@driver.action.send_keys(:page_down).perform #스크롤 내리기
|
765
|
+
sleep(1)
|
766
|
+
@driver.action.send_keys(:page_down).perform #스크롤 내리기
|
767
|
+
sleep(1)
|
768
|
+
|
769
|
+
content_soon = 0
|
770
|
+
# 💬 content 설정 (여기 추가!)
|
771
|
+
if @data['내용설정']['내용'].nil? || @data['내용설정']['내용'].empty?
|
772
|
+
content = ''
|
773
|
+
else
|
774
|
+
if @data.dig('내용설정', '랜덤사용')&.respond_to?(:checked?) && @data['내용설정']['랜덤사용'].checked?
|
775
|
+
content = @data['내용설정']['내용'].sample[2] # 랜덤 사용 시
|
776
|
+
else
|
777
|
+
content = @data['내용설정']['내용'][content_soon][2] # 순차적으로 사용
|
778
|
+
content_soon += 1
|
779
|
+
if content_soon >= @data['내용설정']['내용'].length
|
780
|
+
content_soon = 0
|
781
|
+
end
|
782
|
+
end
|
783
|
+
end
|
784
|
+
|
785
|
+
# 디엠 자동 변경이 체크된 경우 content를 변환
|
786
|
+
if @data['포스트설정']['내용자동변경'].checked?
|
787
|
+
change_memory = {}
|
788
|
+
@data['포스트설정']['내용자동변경값'].each do |key, v|
|
789
|
+
change_memory[key] = v.sample
|
790
|
+
end
|
791
|
+
@data['포스트설정']['내용자동변경값'].each do |key, _|
|
792
|
+
if content.include?(key)
|
793
|
+
content = content.gsub(key, change_memory[key]) # gsub을 사용하여 내용 치환
|
794
|
+
else
|
795
|
+
end
|
796
|
+
end
|
797
|
+
end
|
710
798
|
|
711
799
|
if option['좋아요'] == 'true'
|
712
800
|
puts "좋아요 클릭 옵션 진행!!".cyan
|
@@ -787,6 +875,7 @@ class Naver
|
|
787
875
|
sleep(1)
|
788
876
|
else
|
789
877
|
begin
|
878
|
+
puts (content)
|
790
879
|
@driver.find_element(:xpath, '//*[@placeholder="댓글을 남겨보세요"]').send_keys(content)
|
791
880
|
sleep(1)
|
792
881
|
rescue
|
@@ -907,6 +996,17 @@ class Naver
|
|
907
996
|
|
908
997
|
end
|
909
998
|
@driver.switch_to.default_content() # 아이프레임 해제
|
999
|
+
def sleep_with_progress(sleep_delay)
|
1000
|
+
print "[설정 딜레이 진행 중] "
|
1001
|
+
steps = (sleep_delay.to_f / 0.5).to_i
|
1002
|
+
steps.times do
|
1003
|
+
print "."
|
1004
|
+
STDOUT.flush
|
1005
|
+
sleep(1)
|
1006
|
+
end
|
1007
|
+
puts "\n"
|
1008
|
+
end
|
1009
|
+
sleep_with_progress(sleep_delay)
|
910
1010
|
rescue => e
|
911
1011
|
puts "Error: #{e.message}"
|
912
1012
|
end
|
@@ -1008,6 +1108,42 @@ class Naver
|
|
1008
1108
|
sleep(1)
|
1009
1109
|
@driver.switch_to.frame(@driver.find_element(:xpath, '//*[@id="cafe_main"]')) # 아이프레임 선택
|
1010
1110
|
|
1111
|
+
sleep(1)
|
1112
|
+
puts "게시글 읽는 모션 진행".yellow
|
1113
|
+
@driver.action.send_keys(:page_down).perform #스크롤 내리기
|
1114
|
+
sleep(1)
|
1115
|
+
@driver.action.send_keys(:page_down).perform #스크롤 내리기
|
1116
|
+
sleep(1)
|
1117
|
+
|
1118
|
+
content_soon = 0
|
1119
|
+
# 💬 content 설정 (여기 추가!)
|
1120
|
+
if @data['내용설정']['내용'].nil? || @data['내용설정']['내용'].empty?
|
1121
|
+
content = ''
|
1122
|
+
else
|
1123
|
+
if @data.dig('내용설정', '랜덤사용')&.respond_to?(:checked?) && @data['내용설정']['랜덤사용'].checked?
|
1124
|
+
content = @data['내용설정']['내용'].sample[2] # 랜덤 사용 시
|
1125
|
+
else
|
1126
|
+
content = @data['내용설정']['내용'][content_soon][2] # 순차적으로 사용
|
1127
|
+
content_soon += 1
|
1128
|
+
if content_soon >= @data['내용설정']['내용'].length
|
1129
|
+
content_soon = 0
|
1130
|
+
end
|
1131
|
+
end
|
1132
|
+
end
|
1133
|
+
|
1134
|
+
# 디엠 자동 변경이 체크된 경우 content를 변환
|
1135
|
+
if @data['포스트설정']['내용자동변경'].checked?
|
1136
|
+
change_memory = {}
|
1137
|
+
@data['포스트설정']['내용자동변경값'].each do |key, v|
|
1138
|
+
change_memory[key] = v.sample
|
1139
|
+
end
|
1140
|
+
@data['포스트설정']['내용자동변경값'].each do |key, _|
|
1141
|
+
if content.include?(key)
|
1142
|
+
content = content.gsub(key, change_memory[key]) # gsub을 사용하여 내용 치환
|
1143
|
+
else
|
1144
|
+
end
|
1145
|
+
end
|
1146
|
+
end
|
1011
1147
|
|
1012
1148
|
if option['좋아요'] == 'true'
|
1013
1149
|
puts "좋아요 클릭 옵션 진행!!".cyan
|
@@ -1088,6 +1224,7 @@ class Naver
|
|
1088
1224
|
sleep(1)
|
1089
1225
|
else
|
1090
1226
|
begin
|
1227
|
+
puts (content)
|
1091
1228
|
@driver.find_element(:xpath, '//*[@placeholder="댓글을 남겨보세요"]').send_keys(content)
|
1092
1229
|
sleep(1)
|
1093
1230
|
rescue
|
@@ -1208,6 +1345,19 @@ class Naver
|
|
1208
1345
|
|
1209
1346
|
end
|
1210
1347
|
@driver.switch_to.default_content() # 아이프레임 해제
|
1348
|
+
def sleep_with_progress(sleep_delay)
|
1349
|
+
print "[설정 딜레이 진행 중] "
|
1350
|
+
steps = (sleep_delay.to_f / 0.5).to_i
|
1351
|
+
steps.times do
|
1352
|
+
print "."
|
1353
|
+
STDOUT.flush
|
1354
|
+
sleep(1)
|
1355
|
+
end
|
1356
|
+
puts "\n"
|
1357
|
+
end
|
1358
|
+
sleep_with_progress(sleep_delay)
|
1359
|
+
|
1360
|
+
|
1211
1361
|
rescue => e
|
1212
1362
|
puts "Error: #{e.message}"
|
1213
1363
|
end
|
@@ -1456,18 +1606,7 @@ class Naver
|
|
1456
1606
|
sleep(2)
|
1457
1607
|
element.send_keys(:return)
|
1458
1608
|
sleep(1)
|
1459
|
-
rescue
|
1460
|
-
@driver.window_handles.each do |handle|
|
1461
|
-
@driver.switch_to.window(handle)
|
1462
|
-
begin
|
1463
|
-
# 로딩 중이거나, 페이지가 완전히 로딩되지 않더라도 탭을 닫기
|
1464
|
-
puts 'class="aline" 요소를 찾지 못했습니다.'
|
1465
|
-
@driver.close
|
1466
|
-
rescue Selenium::WebDriver::Error::WebDriverError => e
|
1467
|
-
puts "Failed to close tab: #{e.message}"
|
1468
|
-
end
|
1469
|
-
end
|
1470
|
-
@driver.quit
|
1609
|
+
rescue
|
1471
1610
|
end
|
1472
1611
|
end
|
1473
1612
|
|
@@ -1579,7 +1718,7 @@ class Naver
|
|
1579
1718
|
end
|
1580
1719
|
|
1581
1720
|
@driver.switch_to.default_content
|
1582
|
-
|
1721
|
+
end
|
1583
1722
|
|
1584
1723
|
collected_urls.each do |url|
|
1585
1724
|
# 각 post-url로 이동
|
@@ -1591,8 +1730,16 @@ class Naver
|
|
1591
1730
|
@driver.switch_to.frame(@driver.find_element(:xpath, '//*[@id="mainFrame"]')) # 아이프레임 선택
|
1592
1731
|
sleep(1)
|
1593
1732
|
|
1733
|
+
sleep(1)
|
1734
|
+
puts "게시글 읽는 모션 진행".yellow
|
1735
|
+
@driver.action.send_keys(:page_down).perform #스크롤 내리기
|
1736
|
+
sleep(1)
|
1737
|
+
@driver.action.send_keys(:page_down).perform #스크롤 내리기
|
1738
|
+
sleep(1)
|
1739
|
+
|
1594
1740
|
if option['이웃추가'] == 'true'
|
1595
1741
|
begin
|
1742
|
+
sleep(1)
|
1596
1743
|
begin
|
1597
1744
|
wait = Selenium::WebDriver::Wait.new(:timeout => 3)
|
1598
1745
|
#요소가 나타날 때까지 10초 동안 기다립니다.
|
@@ -1667,7 +1814,7 @@ class Naver
|
|
1667
1814
|
|
1668
1815
|
elsif option['서로이웃추가'] == 'true'
|
1669
1816
|
begin
|
1670
|
-
|
1817
|
+
sleep(1)
|
1671
1818
|
begin
|
1672
1819
|
wait = Selenium::WebDriver::Wait.new(:timeout => 3)
|
1673
1820
|
#요소가 나타날 때까지 10초 동안 기다립니다.
|
@@ -1748,7 +1895,7 @@ class Naver
|
|
1748
1895
|
|
1749
1896
|
if option['공유하기'] == 'true'
|
1750
1897
|
begin
|
1751
|
-
|
1898
|
+
sleep(1)
|
1752
1899
|
wait = Selenium::WebDriver::Wait.new(:timeout => 10)
|
1753
1900
|
#요소가 나타날 때까지 10초 동안 기다립니다.
|
1754
1901
|
wait.until { @driver.find_element(:xpath, '//*[@class="_spi_blog spi_btn_blog"]') }
|
@@ -1840,7 +1987,7 @@ class Naver
|
|
1840
1987
|
|
1841
1988
|
elsif option['공유하기비공개'] == 'true'
|
1842
1989
|
begin
|
1843
|
-
|
1990
|
+
sleep(1)
|
1844
1991
|
wait = Selenium::WebDriver::Wait.new(:timeout => 10)
|
1845
1992
|
#요소가 나타날 때까지 10초 동안 기다립니다.
|
1846
1993
|
wait.until { @driver.find_element(:xpath, '//*[@class="_spi_blog spi_btn_blog"]') }
|
@@ -1937,7 +2084,7 @@ class Naver
|
|
1937
2084
|
|
1938
2085
|
if option['좋아요'] == 'true'
|
1939
2086
|
begin
|
1940
|
-
|
2087
|
+
sleep(1)
|
1941
2088
|
wait = Selenium::WebDriver::Wait.new(:timeout => 3)
|
1942
2089
|
wait.until { @driver.find_element(:xpath, '//*[@class="u_ico _icon pcol3"]') }
|
1943
2090
|
|
@@ -1978,6 +2125,36 @@ class Naver
|
|
1978
2125
|
else
|
1979
2126
|
end
|
1980
2127
|
|
2128
|
+
content_soon = 0
|
2129
|
+
# 💬 content 설정 (여기 추가!)
|
2130
|
+
if @data['내용설정']['내용'].nil? || @data['내용설정']['내용'].empty?
|
2131
|
+
content = ''
|
2132
|
+
else
|
2133
|
+
if @data.dig('내용설정', '랜덤사용')&.respond_to?(:checked?) && @data['내용설정']['랜덤사용'].checked?
|
2134
|
+
content = @data['내용설정']['내용'].sample[2] # 랜덤 사용 시
|
2135
|
+
else
|
2136
|
+
content = @data['내용설정']['내용'][content_soon][2] # 순차적으로 사용
|
2137
|
+
content_soon += 1
|
2138
|
+
if content_soon >= @data['내용설정']['내용'].length
|
2139
|
+
content_soon = 0
|
2140
|
+
end
|
2141
|
+
end
|
2142
|
+
end
|
2143
|
+
|
2144
|
+
# 디엠 자동 변경이 체크된 경우 content를 변환
|
2145
|
+
if @data['포스트설정']['내용자동변경'].checked?
|
2146
|
+
change_memory = {}
|
2147
|
+
@data['포스트설정']['내용자동변경값'].each do |key, v|
|
2148
|
+
change_memory[key] = v.sample
|
2149
|
+
end
|
2150
|
+
@data['포스트설정']['내용자동변경값'].each do |key, _|
|
2151
|
+
if content.include?(key)
|
2152
|
+
content = content.gsub(key, change_memory[key]) # gsub을 사용하여 내용 치환
|
2153
|
+
else
|
2154
|
+
end
|
2155
|
+
end
|
2156
|
+
end
|
2157
|
+
|
1981
2158
|
begin #댓글 작업 >> 시작
|
1982
2159
|
# 댓글 쓰기 버튼 클릭
|
1983
2160
|
begin
|
@@ -2201,7 +2378,6 @@ class Naver
|
|
2201
2378
|
else
|
2202
2379
|
# 여기에 다른 코드 추가 가능
|
2203
2380
|
end
|
2204
|
-
|
2205
2381
|
begin
|
2206
2382
|
element = @driver.find_element(:xpath, '//*[@data-uiselector="writeButton"]')
|
2207
2383
|
@driver.execute_script("arguments[0].scrollIntoView({block: 'center', inline: 'center'})", element) # 크롤 이동
|
@@ -2273,8 +2449,20 @@ class Naver
|
|
2273
2449
|
ff.close()
|
2274
2450
|
puts '-[√] 로그 파일 생성 완료.......'.yellow
|
2275
2451
|
end
|
2276
|
-
end
|
2277
|
-
|
2452
|
+
end
|
2453
|
+
|
2454
|
+
def sleep_with_progress(sleep_delay)
|
2455
|
+
print "[설정 딜레이 진행 중] "
|
2456
|
+
steps = (sleep_delay.to_f / 0.5).to_i
|
2457
|
+
steps.times do
|
2458
|
+
print "."
|
2459
|
+
STDOUT.flush
|
2460
|
+
sleep(1)
|
2461
|
+
end
|
2462
|
+
puts "\n"
|
2463
|
+
end
|
2464
|
+
sleep_with_progress(sleep_delay)
|
2465
|
+
|
2278
2466
|
rescue
|
2279
2467
|
|
2280
2468
|
end #댓글 작업 >> 끝
|
@@ -2312,7 +2500,7 @@ class Naver
|
|
2312
2500
|
end
|
2313
2501
|
end
|
2314
2502
|
|
2315
|
-
class Wordpress
|
2503
|
+
class Wordpress
|
2316
2504
|
include Glimmer
|
2317
2505
|
|
2318
2506
|
def login_check2(user_id, user_pw)
|
@@ -2659,7 +2847,7 @@ class Wordpress
|
|
2659
2847
|
proxy = table[3].to_s
|
2660
2848
|
user_id = table[1].to_s
|
2661
2849
|
user_pw = table[2].to_s
|
2662
|
-
naver = Naver.new
|
2850
|
+
naver = Naver.new(@data)
|
2663
2851
|
@data['table'][index][-1] = 30
|
2664
2852
|
@data['table'] << []
|
2665
2853
|
@data['table'].pop
|
@@ -2882,7 +3070,8 @@ class Wordpress
|
|
2882
3070
|
# 댓글 설정 수 카운트
|
2883
3071
|
counts_number = @data['table'][index][6].to_i
|
2884
3072
|
api_key = @data['포스트설정']['api_key'].text.to_s.force_encoding('utf-8')
|
2885
|
-
|
3073
|
+
sleep_delay = @data['table'][index][5].to_i
|
3074
|
+
naver.update(content,board_url,blog_url,nickname,image,option,counts_number,keyword,api_key,sleep_delay)
|
2886
3075
|
|
2887
3076
|
|
2888
3077
|
|
@@ -2891,7 +3080,7 @@ class Wordpress
|
|
2891
3080
|
@data['table'][index][-1] = 100
|
2892
3081
|
@data['table'] << []
|
2893
3082
|
@data['table'].pop
|
2894
|
-
sleep(@data['table'][index][5].to_i)
|
3083
|
+
#sleep(@data['table'][index][5].to_i)
|
2895
3084
|
end
|
2896
3085
|
rescue => exception
|
2897
3086
|
puts exception
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: duo_blog_cafe_comment
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.59
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- zon
|
8
8
|
bindir: bin
|
9
9
|
cert_chain: []
|
10
|
-
date: 2025-
|
10
|
+
date: 2025-06-18 00:00:00.000000000 Z
|
11
11
|
dependencies: []
|
12
12
|
description: File to Clipboard gem
|
13
13
|
email: mymin26@naver.com
|