zon_blog_cafe_comment 0.0.53 → 0.0.57
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_cafe_comment.rb +213 -44
- 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: 5b0d86fbc3537505d52a52f1774a864685e4a641ba624daa5bb4c626ceaedf0d
|
4
|
+
data.tar.gz: d25746c2540e2c901bf0e0b04e0a74b4337a02fe9c5379def94f51d1be0bfa47
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4a0fa0713c6f3b98d2179cbd8bcb3575f32a2913788a33005c9ae45b6fab7254ec583b7d9ac473749efedd21248ed5282c1aaf54ce317dd5c1dd79ac6566c21e
|
7
|
+
data.tar.gz: ecdb82adab2da4f4853159ca4818b30979e20e044476a0c7eada9735607fbdeefd0527338a7da2dc86c4fdbd4cd76404923cfc14eac7891310eefaba5e42bdd6
|
@@ -16,48 +16,17 @@ require 'uri'
|
|
16
16
|
require 'cgi'
|
17
17
|
require 'auto_click'
|
18
18
|
require 'rainbow/refinement'
|
19
|
-
require 'win32ole'
|
20
19
|
include AutoClickMethods
|
21
20
|
using Rainbow
|
22
21
|
include Glimmer
|
23
22
|
|
24
23
|
|
25
24
|
class Naver
|
26
|
-
def initialize
|
27
|
-
|
28
|
-
sleep(1)
|
25
|
+
def initialize(data)
|
26
|
+
@data = data
|
29
27
|
@seed = 1
|
30
28
|
end
|
31
29
|
|
32
|
-
def kill_selenium_chrome #기존 창 모두 닫는 코드
|
33
|
-
wmi = WIN32OLE.connect("winmgmts://")
|
34
|
-
chrome_procs = wmi.ExecQuery("SELECT * FROM Win32_Process WHERE Name = 'chrome.exe'")
|
35
|
-
|
36
|
-
chrome_procs.each do |proc|
|
37
|
-
cmd = proc.CommandLine
|
38
|
-
if cmd && cmd.include?("user-data-dir=C:/naver_cookie")
|
39
|
-
puts "→ 크롬 창 초기화: PID #{proc.ProcessId}"
|
40
|
-
begin
|
41
|
-
proc.Terminate
|
42
|
-
rescue
|
43
|
-
#puts "→ 이미 종료된 프로세스: #{proc.ProcessId}"
|
44
|
-
end
|
45
|
-
end
|
46
|
-
end
|
47
|
-
|
48
|
-
# chromedriver도 같이 종료
|
49
|
-
chromedrivers = wmi.ExecQuery("SELECT * FROM Win32_Process WHERE Name = 'chromedriver.exe'")
|
50
|
-
chromedrivers.each do |proc|
|
51
|
-
puts "→ 크롬 창 초기화: PID #{proc.ProcessId}"
|
52
|
-
begin
|
53
|
-
proc.Terminate
|
54
|
-
rescue
|
55
|
-
#puts "→ 이미 종료된 chromedriver: #{proc.ProcessId}"
|
56
|
-
end
|
57
|
-
end
|
58
|
-
end
|
59
|
-
|
60
|
-
|
61
30
|
def chrome_setup(user_id, proxy)
|
62
31
|
naver_cookie_dir = "C:/naver_cookie"
|
63
32
|
FileUtils.mkdir_p(naver_cookie_dir) unless File.exist?(naver_cookie_dir)
|
@@ -306,12 +275,13 @@ class Naver
|
|
306
275
|
|
307
276
|
|
308
277
|
|
309
|
-
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)
|
310
279
|
@board_url = board_url
|
311
280
|
@keyword = keyword
|
312
281
|
@content = content
|
313
282
|
@api_key = api_key
|
314
283
|
@blog_url = blog_url
|
284
|
+
@sleep_delay = sleep_delay
|
315
285
|
if option['카페사용모드'] == 'true'
|
316
286
|
|
317
287
|
|
@@ -522,6 +492,42 @@ class Naver
|
|
522
492
|
sleep(1)
|
523
493
|
@driver.switch_to.frame(@driver.find_element(:xpath, '//*[@id="cafe_main"]')) # 아이프레임 선택
|
524
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
|
525
531
|
|
526
532
|
if option['좋아요'] == 'true'
|
527
533
|
puts "좋아요 클릭 옵션 진행!!".cyan
|
@@ -602,6 +608,7 @@ class Naver
|
|
602
608
|
sleep(1)
|
603
609
|
else
|
604
610
|
begin
|
611
|
+
puts (content)
|
605
612
|
@driver.find_element(:xpath, '//*[@placeholder="댓글을 남겨보세요"]').send_keys(content)
|
606
613
|
sleep(1)
|
607
614
|
rescue
|
@@ -720,6 +727,18 @@ class Naver
|
|
720
727
|
end
|
721
728
|
end
|
722
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)
|
723
742
|
rescue => e
|
724
743
|
puts "Error: #{e.message}"
|
725
744
|
end
|
@@ -739,6 +758,43 @@ class Naver
|
|
739
758
|
wait.until { @driver.find_element(:xpath, '//*[@id="cafe_main"]') } # 아이프레임 선택
|
740
759
|
sleep(1)
|
741
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
|
742
798
|
|
743
799
|
if option['좋아요'] == 'true'
|
744
800
|
puts "좋아요 클릭 옵션 진행!!".cyan
|
@@ -819,6 +875,7 @@ class Naver
|
|
819
875
|
sleep(1)
|
820
876
|
else
|
821
877
|
begin
|
878
|
+
puts (content)
|
822
879
|
@driver.find_element(:xpath, '//*[@placeholder="댓글을 남겨보세요"]').send_keys(content)
|
823
880
|
sleep(1)
|
824
881
|
rescue
|
@@ -939,6 +996,17 @@ class Naver
|
|
939
996
|
|
940
997
|
end
|
941
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)
|
942
1010
|
rescue => e
|
943
1011
|
puts "Error: #{e.message}"
|
944
1012
|
end
|
@@ -1040,6 +1108,42 @@ class Naver
|
|
1040
1108
|
sleep(1)
|
1041
1109
|
@driver.switch_to.frame(@driver.find_element(:xpath, '//*[@id="cafe_main"]')) # 아이프레임 선택
|
1042
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
|
1043
1147
|
|
1044
1148
|
if option['좋아요'] == 'true'
|
1045
1149
|
puts "좋아요 클릭 옵션 진행!!".cyan
|
@@ -1120,6 +1224,7 @@ class Naver
|
|
1120
1224
|
sleep(1)
|
1121
1225
|
else
|
1122
1226
|
begin
|
1227
|
+
puts (content)
|
1123
1228
|
@driver.find_element(:xpath, '//*[@placeholder="댓글을 남겨보세요"]').send_keys(content)
|
1124
1229
|
sleep(1)
|
1125
1230
|
rescue
|
@@ -1240,6 +1345,19 @@ class Naver
|
|
1240
1345
|
|
1241
1346
|
end
|
1242
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
|
+
|
1243
1361
|
rescue => e
|
1244
1362
|
puts "Error: #{e.message}"
|
1245
1363
|
end
|
@@ -1611,7 +1729,7 @@ class Naver
|
|
1611
1729
|
end
|
1612
1730
|
|
1613
1731
|
@driver.switch_to.default_content
|
1614
|
-
|
1732
|
+
end
|
1615
1733
|
|
1616
1734
|
collected_urls.each do |url|
|
1617
1735
|
# 각 post-url로 이동
|
@@ -1623,8 +1741,16 @@ class Naver
|
|
1623
1741
|
@driver.switch_to.frame(@driver.find_element(:xpath, '//*[@id="mainFrame"]')) # 아이프레임 선택
|
1624
1742
|
sleep(1)
|
1625
1743
|
|
1744
|
+
sleep(1)
|
1745
|
+
puts "게시글 읽는 모션 진행".yellow
|
1746
|
+
@driver.action.send_keys(:page_down).perform #스크롤 내리기
|
1747
|
+
sleep(1)
|
1748
|
+
@driver.action.send_keys(:page_down).perform #스크롤 내리기
|
1749
|
+
sleep(1)
|
1750
|
+
|
1626
1751
|
if option['이웃추가'] == 'true'
|
1627
1752
|
begin
|
1753
|
+
sleep(1)
|
1628
1754
|
begin
|
1629
1755
|
wait = Selenium::WebDriver::Wait.new(:timeout => 3)
|
1630
1756
|
#요소가 나타날 때까지 10초 동안 기다립니다.
|
@@ -1699,7 +1825,7 @@ class Naver
|
|
1699
1825
|
|
1700
1826
|
elsif option['서로이웃추가'] == 'true'
|
1701
1827
|
begin
|
1702
|
-
|
1828
|
+
sleep(1)
|
1703
1829
|
begin
|
1704
1830
|
wait = Selenium::WebDriver::Wait.new(:timeout => 3)
|
1705
1831
|
#요소가 나타날 때까지 10초 동안 기다립니다.
|
@@ -1780,7 +1906,7 @@ class Naver
|
|
1780
1906
|
|
1781
1907
|
if option['공유하기'] == 'true'
|
1782
1908
|
begin
|
1783
|
-
|
1909
|
+
sleep(1)
|
1784
1910
|
wait = Selenium::WebDriver::Wait.new(:timeout => 10)
|
1785
1911
|
#요소가 나타날 때까지 10초 동안 기다립니다.
|
1786
1912
|
wait.until { @driver.find_element(:xpath, '//*[@class="_spi_blog spi_btn_blog"]') }
|
@@ -1872,7 +1998,7 @@ class Naver
|
|
1872
1998
|
|
1873
1999
|
elsif option['공유하기비공개'] == 'true'
|
1874
2000
|
begin
|
1875
|
-
|
2001
|
+
sleep(1)
|
1876
2002
|
wait = Selenium::WebDriver::Wait.new(:timeout => 10)
|
1877
2003
|
#요소가 나타날 때까지 10초 동안 기다립니다.
|
1878
2004
|
wait.until { @driver.find_element(:xpath, '//*[@class="_spi_blog spi_btn_blog"]') }
|
@@ -1969,7 +2095,7 @@ class Naver
|
|
1969
2095
|
|
1970
2096
|
if option['좋아요'] == 'true'
|
1971
2097
|
begin
|
1972
|
-
|
2098
|
+
sleep(1)
|
1973
2099
|
wait = Selenium::WebDriver::Wait.new(:timeout => 3)
|
1974
2100
|
wait.until { @driver.find_element(:xpath, '//*[@class="u_ico _icon pcol3"]') }
|
1975
2101
|
|
@@ -2010,6 +2136,36 @@ class Naver
|
|
2010
2136
|
else
|
2011
2137
|
end
|
2012
2138
|
|
2139
|
+
content_soon = 0
|
2140
|
+
# 💬 content 설정 (여기 추가!)
|
2141
|
+
if @data['내용설정']['내용'].nil? || @data['내용설정']['내용'].empty?
|
2142
|
+
content = ''
|
2143
|
+
else
|
2144
|
+
if @data.dig('내용설정', '랜덤사용')&.respond_to?(:checked?) && @data['내용설정']['랜덤사용'].checked?
|
2145
|
+
content = @data['내용설정']['내용'].sample[2] # 랜덤 사용 시
|
2146
|
+
else
|
2147
|
+
content = @data['내용설정']['내용'][content_soon][2] # 순차적으로 사용
|
2148
|
+
content_soon += 1
|
2149
|
+
if content_soon >= @data['내용설정']['내용'].length
|
2150
|
+
content_soon = 0
|
2151
|
+
end
|
2152
|
+
end
|
2153
|
+
end
|
2154
|
+
|
2155
|
+
# 디엠 자동 변경이 체크된 경우 content를 변환
|
2156
|
+
if @data['포스트설정']['내용자동변경'].checked?
|
2157
|
+
change_memory = {}
|
2158
|
+
@data['포스트설정']['내용자동변경값'].each do |key, v|
|
2159
|
+
change_memory[key] = v.sample
|
2160
|
+
end
|
2161
|
+
@data['포스트설정']['내용자동변경값'].each do |key, _|
|
2162
|
+
if content.include?(key)
|
2163
|
+
content = content.gsub(key, change_memory[key]) # gsub을 사용하여 내용 치환
|
2164
|
+
else
|
2165
|
+
end
|
2166
|
+
end
|
2167
|
+
end
|
2168
|
+
|
2013
2169
|
begin #댓글 작업 >> 시작
|
2014
2170
|
# 댓글 쓰기 버튼 클릭
|
2015
2171
|
begin
|
@@ -2304,8 +2460,20 @@ class Naver
|
|
2304
2460
|
ff.close()
|
2305
2461
|
puts '-[√] 로그 파일 생성 완료.......'.yellow
|
2306
2462
|
end
|
2307
|
-
end
|
2308
|
-
|
2463
|
+
end
|
2464
|
+
|
2465
|
+
def sleep_with_progress(sleep_delay)
|
2466
|
+
print "[설정 딜레이 진행 중] "
|
2467
|
+
steps = (sleep_delay.to_f / 0.5).to_i
|
2468
|
+
steps.times do
|
2469
|
+
print "."
|
2470
|
+
STDOUT.flush
|
2471
|
+
sleep(1)
|
2472
|
+
end
|
2473
|
+
puts "\n"
|
2474
|
+
end
|
2475
|
+
sleep_with_progress(sleep_delay)
|
2476
|
+
|
2309
2477
|
rescue
|
2310
2478
|
|
2311
2479
|
end #댓글 작업 >> 끝
|
@@ -2620,7 +2788,7 @@ end
|
|
2620
2788
|
proxy = table[3].to_s
|
2621
2789
|
user_id = table[1].to_s
|
2622
2790
|
user_pw = table[2].to_s
|
2623
|
-
naver = Naver.new
|
2791
|
+
naver = Naver.new(@data)
|
2624
2792
|
@data['table'][index][-1] = 30
|
2625
2793
|
@data['table'] << []
|
2626
2794
|
@data['table'].pop
|
@@ -2843,7 +3011,8 @@ end
|
|
2843
3011
|
# 댓글 설정 수 카운트
|
2844
3012
|
counts_number = @data['table'][index][6].to_i
|
2845
3013
|
api_key = @data['포스트설정']['api_key'].text.to_s.force_encoding('utf-8')
|
2846
|
-
|
3014
|
+
sleep_delay = @data['table'][index][5].to_i
|
3015
|
+
naver.update(content,board_url,blog_url,nickname,image,option,counts_number,keyword,api_key,sleep_delay)
|
2847
3016
|
|
2848
3017
|
|
2849
3018
|
|
@@ -2852,7 +3021,7 @@ end
|
|
2852
3021
|
@data['table'][index][-1] = 100
|
2853
3022
|
@data['table'] << []
|
2854
3023
|
@data['table'].pop
|
2855
|
-
sleep(@data['table'][index][5].to_i)
|
3024
|
+
#sleep(@data['table'][index][5].to_i)
|
2856
3025
|
end
|
2857
3026
|
rescue => exception
|
2858
3027
|
puts exception
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: zon_blog_cafe_comment
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.57
|
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-12 00:00:00.000000000 Z
|
11
11
|
dependencies: []
|
12
12
|
description: File to Clipboard gem
|
13
13
|
email: mymin26@naver.com
|