zon_cafe_comment 0.0.33 → 0.0.37
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_cafe_comment.rb +152 -49
- 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: 1579b47b69073b363b4a7bfbbf2c81a56424f7a19bc3027c772fef28494cbcfd
|
4
|
+
data.tar.gz: 76c4095112bef2784af0179395c7c13a7f541de41a26ba96bbe532687acc49e2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 382868b59a5af37da55cae0409d5d9f75131b8c8f6c762ea729c064af55a69cf91fe126872d77b7bca9c99d98a61e2ac8c528db222309f52ef4402105f4ddda8
|
7
|
+
data.tar.gz: 5523cc4f4d2760b0d01a10c439999b8f6a71bfc71d525a795368d69916982b9eeb2c71269516bfd729a270fcc53dd6a5cddf45dd88a0b87a657427581377430a
|
data/lib/zon_cafe_comment.rb
CHANGED
@@ -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)
|
@@ -304,13 +273,14 @@ class Naver
|
|
304
273
|
end
|
305
274
|
end
|
306
275
|
|
276
|
+
|
307
277
|
|
308
|
-
def update(content,board_url,nickname,image,option,counts_number,keyword,api_key)
|
278
|
+
def update(content,board_url,nickname,image,option,counts_number,keyword,api_key,sleep_delay)
|
309
279
|
@board_url = board_url
|
310
280
|
@keyword = keyword
|
311
281
|
@content = content
|
312
282
|
@api_key = api_key
|
313
|
-
|
283
|
+
@sleep_delay = sleep_delay
|
314
284
|
|
315
285
|
|
316
286
|
@driver.get(board_url)
|
@@ -522,7 +492,36 @@ class Naver
|
|
522
492
|
wait.until { @driver.find_element(:xpath, '//*[@id="cafe_main"]') } # 아이프레임 선택
|
523
493
|
sleep(1)
|
524
494
|
@driver.switch_to.frame(@driver.find_element(:xpath, '//*[@id="cafe_main"]')) # 아이프레임 선택
|
525
|
-
|
495
|
+
|
496
|
+
content_soon = 0
|
497
|
+
# 💬 content 설정 (여기 추가!)
|
498
|
+
if @data['내용설정']['내용'].nil? || @data['내용설정']['내용'].empty?
|
499
|
+
content = ''
|
500
|
+
else
|
501
|
+
if @data.dig('내용설정', '랜덤사용')&.respond_to?(:checked?) && @data['내용설정']['랜덤사용'].checked?
|
502
|
+
content = @data['내용설정']['내용'].sample[2] # 랜덤 사용 시
|
503
|
+
else
|
504
|
+
content = @data['내용설정']['내용'][content_soon][2] # 순차적으로 사용
|
505
|
+
content_soon += 1
|
506
|
+
if content_soon >= @data['내용설정']['내용'].length
|
507
|
+
content_soon = 0
|
508
|
+
end
|
509
|
+
end
|
510
|
+
end
|
511
|
+
|
512
|
+
# 디엠 자동 변경이 체크된 경우 content를 변환
|
513
|
+
if @data['포스트설정']['내용자동변경'].checked?
|
514
|
+
change_memory = {}
|
515
|
+
@data['포스트설정']['내용자동변경값'].each do |key, v|
|
516
|
+
change_memory[key] = v.sample
|
517
|
+
end
|
518
|
+
@data['포스트설정']['내용자동변경값'].each do |key, _|
|
519
|
+
if content.include?(key)
|
520
|
+
content = content.gsub(key, change_memory[key]) # gsub을 사용하여 내용 치환
|
521
|
+
else
|
522
|
+
end
|
523
|
+
end
|
524
|
+
end
|
526
525
|
|
527
526
|
if option['좋아요'] == 'true'
|
528
527
|
puts "좋아요 클릭 옵션 진행!!".cyan
|
@@ -546,7 +545,7 @@ class Naver
|
|
546
545
|
else
|
547
546
|
# 좋아요를 아직 누르지 않은 상태일 경우 클릭
|
548
547
|
@driver.find_element(:xpath, '//*[@class="u_ico _icon"]').click
|
549
|
-
sleep(
|
548
|
+
sleep(2)
|
550
549
|
end
|
551
550
|
else
|
552
551
|
end
|
@@ -603,6 +602,7 @@ class Naver
|
|
603
602
|
sleep(1)
|
604
603
|
else
|
605
604
|
begin
|
605
|
+
puts (content)
|
606
606
|
@driver.find_element(:xpath, '//*[@placeholder="댓글을 남겨보세요"]').send_keys(content)
|
607
607
|
sleep(1)
|
608
608
|
rescue
|
@@ -721,6 +721,20 @@ class Naver
|
|
721
721
|
end
|
722
722
|
end
|
723
723
|
@driver.switch_to.default_content() # 아이프레임 해제
|
724
|
+
def sleep_with_progress(sleep_delay)
|
725
|
+
print "[설정 딜레이 진행 중] "
|
726
|
+
steps = (sleep_delay.to_f / 0.5).to_i
|
727
|
+
steps.times do
|
728
|
+
print "."
|
729
|
+
STDOUT.flush
|
730
|
+
sleep(1)
|
731
|
+
end
|
732
|
+
puts "\n"
|
733
|
+
end
|
734
|
+
|
735
|
+
sleep_with_progress(sleep_delay)
|
736
|
+
|
737
|
+
|
724
738
|
rescue => e
|
725
739
|
puts "Error: #{e.message}"
|
726
740
|
end
|
@@ -741,6 +755,37 @@ class Naver
|
|
741
755
|
sleep(1)
|
742
756
|
@driver.switch_to.frame(@driver.find_element(:xpath, '//*[@id="cafe_main"]')) # 아이프레임 선택
|
743
757
|
|
758
|
+
content_soon = 0
|
759
|
+
# 💬 content 설정 (여기 추가!)
|
760
|
+
if @data['내용설정']['내용'].nil? || @data['내용설정']['내용'].empty?
|
761
|
+
content = ''
|
762
|
+
else
|
763
|
+
if @data.dig('내용설정', '랜덤사용')&.respond_to?(:checked?) && @data['내용설정']['랜덤사용'].checked?
|
764
|
+
content = @data['내용설정']['내용'].sample[2] # 랜덤 사용 시
|
765
|
+
else
|
766
|
+
content = @data['내용설정']['내용'][content_soon][2] # 순차적으로 사용
|
767
|
+
content_soon += 1
|
768
|
+
if content_soon >= @data['내용설정']['내용'].length
|
769
|
+
content_soon = 0
|
770
|
+
end
|
771
|
+
end
|
772
|
+
end
|
773
|
+
|
774
|
+
# 디엠 자동 변경이 체크된 경우 content를 변환
|
775
|
+
if @data['포스트설정']['내용자동변경'].checked?
|
776
|
+
change_memory = {}
|
777
|
+
@data['포스트설정']['내용자동변경값'].each do |key, v|
|
778
|
+
change_memory[key] = v.sample
|
779
|
+
end
|
780
|
+
@data['포스트설정']['내용자동변경값'].each do |key, _|
|
781
|
+
if content.include?(key)
|
782
|
+
content = content.gsub(key, change_memory[key]) # gsub을 사용하여 내용 치환
|
783
|
+
else
|
784
|
+
end
|
785
|
+
end
|
786
|
+
end
|
787
|
+
|
788
|
+
|
744
789
|
if option['좋아요'] == 'true'
|
745
790
|
puts "좋아요 클릭 옵션 진행!!".cyan
|
746
791
|
wait = Selenium::WebDriver::Wait.new(:timeout => 10)
|
@@ -763,7 +808,7 @@ class Naver
|
|
763
808
|
else
|
764
809
|
# 좋아요를 아직 누르지 않은 상태일 경우 클릭
|
765
810
|
@driver.find_element(:xpath, '//*[@class="u_ico _icon"]').click
|
766
|
-
sleep(
|
811
|
+
sleep(2)
|
767
812
|
end
|
768
813
|
else
|
769
814
|
end
|
@@ -820,6 +865,7 @@ class Naver
|
|
820
865
|
sleep(1)
|
821
866
|
else
|
822
867
|
begin
|
868
|
+
puts (content)
|
823
869
|
@driver.find_element(:xpath, '//*[@placeholder="댓글을 남겨보세요"]').send_keys(content)
|
824
870
|
sleep(1)
|
825
871
|
rescue
|
@@ -937,9 +983,21 @@ class Naver
|
|
937
983
|
puts '-[√] 로그 파일 생성 완료.......'.yellow
|
938
984
|
end
|
939
985
|
end
|
940
|
-
|
941
|
-
end
|
986
|
+
end
|
942
987
|
@driver.switch_to.default_content() # 아이프레임 해제
|
988
|
+
def sleep_with_progress(sleep_delay)
|
989
|
+
print "[설정 딜레이 진행 중] "
|
990
|
+
steps = (sleep_delay.to_f / 0.5).to_i
|
991
|
+
steps.times do
|
992
|
+
print "."
|
993
|
+
STDOUT.flush
|
994
|
+
sleep(1)
|
995
|
+
end
|
996
|
+
puts "\n"
|
997
|
+
end
|
998
|
+
sleep_with_progress(sleep_delay)
|
999
|
+
|
1000
|
+
|
943
1001
|
rescue => e
|
944
1002
|
puts "Error: #{e.message}"
|
945
1003
|
end
|
@@ -1045,6 +1103,35 @@ class Naver
|
|
1045
1103
|
sleep(1)
|
1046
1104
|
@driver.switch_to.frame(@driver.find_element(:xpath, '//*[@id="cafe_main"]')) # 아이프레임 선택
|
1047
1105
|
|
1106
|
+
content_soon = 0
|
1107
|
+
# 💬 content 설정 (여기 추가!)
|
1108
|
+
if @data['내용설정']['내용'].nil? || @data['내용설정']['내용'].empty?
|
1109
|
+
content = ''
|
1110
|
+
else
|
1111
|
+
if @data.dig('내용설정', '랜덤사용')&.respond_to?(:checked?) && @data['내용설정']['랜덤사용'].checked?
|
1112
|
+
content = @data['내용설정']['내용'].sample[2] # 랜덤 사용 시
|
1113
|
+
else
|
1114
|
+
content = @data['내용설정']['내용'][content_soon][2] # 순차적으로 사용
|
1115
|
+
content_soon += 1
|
1116
|
+
if content_soon >= @data['내용설정']['내용'].length
|
1117
|
+
content_soon = 0
|
1118
|
+
end
|
1119
|
+
end
|
1120
|
+
end
|
1121
|
+
|
1122
|
+
# 디엠 자동 변경이 체크된 경우 content를 변환
|
1123
|
+
if @data['포스트설정']['내용자동변경'].checked?
|
1124
|
+
change_memory = {}
|
1125
|
+
@data['포스트설정']['내용자동변경값'].each do |key, v|
|
1126
|
+
change_memory[key] = v.sample
|
1127
|
+
end
|
1128
|
+
@data['포스트설정']['내용자동변경값'].each do |key, _|
|
1129
|
+
if content.include?(key)
|
1130
|
+
content = content.gsub(key, change_memory[key]) # gsub을 사용하여 내용 치환
|
1131
|
+
else
|
1132
|
+
end
|
1133
|
+
end
|
1134
|
+
end
|
1048
1135
|
|
1049
1136
|
if option['좋아요'] == 'true'
|
1050
1137
|
puts "좋아요 클릭 옵션 진행!!".cyan
|
@@ -1068,13 +1155,15 @@ class Naver
|
|
1068
1155
|
else
|
1069
1156
|
# 좋아요를 아직 누르지 않은 상태일 경우 클릭
|
1070
1157
|
@driver.find_element(:xpath, '//*[@class="u_ico _icon"]').click
|
1071
|
-
sleep(
|
1158
|
+
sleep(2)
|
1072
1159
|
end
|
1073
1160
|
else
|
1074
1161
|
end
|
1075
1162
|
|
1163
|
+
|
1164
|
+
|
1076
1165
|
|
1077
|
-
|
1166
|
+
begin
|
1078
1167
|
wait = Selenium::WebDriver::Wait.new(:timeout => 10)
|
1079
1168
|
wait.until { @driver.find_element(:xpath, '//*[@placeholder="댓글을 남겨보세요"]') }
|
1080
1169
|
|
@@ -1125,6 +1214,7 @@ class Naver
|
|
1125
1214
|
sleep(1)
|
1126
1215
|
else
|
1127
1216
|
begin
|
1217
|
+
puts (content)
|
1128
1218
|
@driver.find_element(:xpath, '//*[@placeholder="댓글을 남겨보세요"]').send_keys(content)
|
1129
1219
|
sleep(1)
|
1130
1220
|
rescue
|
@@ -1242,13 +1332,25 @@ class Naver
|
|
1242
1332
|
puts '-[√] 로그 파일 생성 완료.......'.yellow
|
1243
1333
|
end
|
1244
1334
|
end
|
1245
|
-
|
1246
1335
|
end
|
1247
1336
|
@driver.switch_to.default_content() # 아이프레임 해제
|
1248
|
-
|
1249
|
-
|
1250
|
-
|
1337
|
+
def sleep_with_progress(sleep_delay)
|
1338
|
+
print "[설정 딜레이 진행 중] "
|
1339
|
+
steps = (sleep_delay.to_f / 0.5).to_i
|
1340
|
+
steps.times do
|
1341
|
+
print "."
|
1342
|
+
STDOUT.flush
|
1343
|
+
sleep(1)
|
1344
|
+
end
|
1345
|
+
puts "\n"
|
1251
1346
|
end
|
1347
|
+
sleep_with_progress(sleep_delay)
|
1348
|
+
|
1349
|
+
|
1350
|
+
rescue => e
|
1351
|
+
puts "Error: #{e.message}"
|
1352
|
+
end
|
1353
|
+
end
|
1252
1354
|
else
|
1253
1355
|
end
|
1254
1356
|
|
@@ -1536,7 +1638,7 @@ end
|
|
1536
1638
|
proxy = table[3].to_s
|
1537
1639
|
user_id = table[1].to_s
|
1538
1640
|
user_pw = table[2].to_s
|
1539
|
-
naver = Naver.new
|
1641
|
+
naver = Naver.new(@data)
|
1540
1642
|
@data['table'][index][-1] = 30
|
1541
1643
|
@data['table'] << []
|
1542
1644
|
@data['table'].pop
|
@@ -1680,7 +1782,8 @@ end
|
|
1680
1782
|
# 댓글 설정 수 카운트
|
1681
1783
|
counts_number = @data['table'][index][5].to_i
|
1682
1784
|
api_key = @data['포스트설정']['api_key'].text.to_s.force_encoding('utf-8')
|
1683
|
-
|
1785
|
+
sleep_delay = @data['table'][index][4].to_i
|
1786
|
+
naver.update(content,board_url,nickname,image,option,counts_number,keyword,api_key,sleep_delay)
|
1684
1787
|
|
1685
1788
|
|
1686
1789
|
|
@@ -1689,7 +1792,7 @@ end
|
|
1689
1792
|
@data['table'][index][-1] = 100
|
1690
1793
|
@data['table'] << []
|
1691
1794
|
@data['table'].pop
|
1692
|
-
sleep(@data['table'][index][4].to_i)
|
1795
|
+
#sleep(@data['table'][index][4].to_i)
|
1693
1796
|
end
|
1694
1797
|
rescue => exception
|
1695
1798
|
puts exception
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: zon_cafe_comment
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.37
|
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
|