duo_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/duo_cafe_comment.rb +153 -51
- 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: 67b74f8adb28747ea69dc9d12621e0bebf3d58289b08321c33da66d132306d98
|
4
|
+
data.tar.gz: d3c7a576cdd74eff93c5b0fce1248cf1829d4c20279f6712508dd6cb1c6e6fe4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 61318dfbc068e9d62ecb41a1e4f42d53411af9f46fe973e94a87cb3f6704d40c5d9bc880d3a9d9899bca208266b5ebe68b392b6a3558dc4859b44de44a43f5d2
|
7
|
+
data.tar.gz: 11592ec23ca0baca7bef3dd8ff537848fd3d4824a458949941ed7e30e85539fbd35d3f904c7cf875ae0e5c232cb982968ef832af2d17b92a13086dee7b8d4cbd
|
data/lib/duo_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,14 +273,14 @@ class Naver
|
|
304
273
|
end
|
305
274
|
end
|
306
275
|
|
276
|
+
|
307
277
|
|
308
|
-
|
309
|
-
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)
|
310
279
|
@board_url = board_url
|
311
280
|
@keyword = keyword
|
312
281
|
@content = content
|
313
282
|
@api_key = api_key
|
314
|
-
|
283
|
+
@sleep_delay = sleep_delay
|
315
284
|
|
316
285
|
|
317
286
|
@driver.get(board_url)
|
@@ -523,7 +492,36 @@ class Naver
|
|
523
492
|
wait.until { @driver.find_element(:xpath, '//*[@id="cafe_main"]') } # 아이프레임 선택
|
524
493
|
sleep(1)
|
525
494
|
@driver.switch_to.frame(@driver.find_element(:xpath, '//*[@id="cafe_main"]')) # 아이프레임 선택
|
526
|
-
|
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
|
527
525
|
|
528
526
|
if option['좋아요'] == 'true'
|
529
527
|
puts "좋아요 클릭 옵션 진행!!".cyan
|
@@ -547,7 +545,7 @@ class Naver
|
|
547
545
|
else
|
548
546
|
# 좋아요를 아직 누르지 않은 상태일 경우 클릭
|
549
547
|
@driver.find_element(:xpath, '//*[@class="u_ico _icon"]').click
|
550
|
-
sleep(
|
548
|
+
sleep(2)
|
551
549
|
end
|
552
550
|
else
|
553
551
|
end
|
@@ -604,6 +602,7 @@ class Naver
|
|
604
602
|
sleep(1)
|
605
603
|
else
|
606
604
|
begin
|
605
|
+
puts (content)
|
607
606
|
@driver.find_element(:xpath, '//*[@placeholder="댓글을 남겨보세요"]').send_keys(content)
|
608
607
|
sleep(1)
|
609
608
|
rescue
|
@@ -722,6 +721,20 @@ class Naver
|
|
722
721
|
end
|
723
722
|
end
|
724
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
|
+
|
725
738
|
rescue => e
|
726
739
|
puts "Error: #{e.message}"
|
727
740
|
end
|
@@ -742,6 +755,37 @@ class Naver
|
|
742
755
|
sleep(1)
|
743
756
|
@driver.switch_to.frame(@driver.find_element(:xpath, '//*[@id="cafe_main"]')) # 아이프레임 선택
|
744
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
|
+
|
745
789
|
if option['좋아요'] == 'true'
|
746
790
|
puts "좋아요 클릭 옵션 진행!!".cyan
|
747
791
|
wait = Selenium::WebDriver::Wait.new(:timeout => 10)
|
@@ -764,7 +808,7 @@ class Naver
|
|
764
808
|
else
|
765
809
|
# 좋아요를 아직 누르지 않은 상태일 경우 클릭
|
766
810
|
@driver.find_element(:xpath, '//*[@class="u_ico _icon"]').click
|
767
|
-
sleep(
|
811
|
+
sleep(2)
|
768
812
|
end
|
769
813
|
else
|
770
814
|
end
|
@@ -821,6 +865,7 @@ class Naver
|
|
821
865
|
sleep(1)
|
822
866
|
else
|
823
867
|
begin
|
868
|
+
puts (content)
|
824
869
|
@driver.find_element(:xpath, '//*[@placeholder="댓글을 남겨보세요"]').send_keys(content)
|
825
870
|
sleep(1)
|
826
871
|
rescue
|
@@ -938,9 +983,21 @@ class Naver
|
|
938
983
|
puts '-[√] 로그 파일 생성 완료.......'.yellow
|
939
984
|
end
|
940
985
|
end
|
941
|
-
|
942
|
-
end
|
986
|
+
end
|
943
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
|
+
|
944
1001
|
rescue => e
|
945
1002
|
puts "Error: #{e.message}"
|
946
1003
|
end
|
@@ -1046,6 +1103,35 @@ class Naver
|
|
1046
1103
|
sleep(1)
|
1047
1104
|
@driver.switch_to.frame(@driver.find_element(:xpath, '//*[@id="cafe_main"]')) # 아이프레임 선택
|
1048
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
|
1049
1135
|
|
1050
1136
|
if option['좋아요'] == 'true'
|
1051
1137
|
puts "좋아요 클릭 옵션 진행!!".cyan
|
@@ -1069,13 +1155,15 @@ class Naver
|
|
1069
1155
|
else
|
1070
1156
|
# 좋아요를 아직 누르지 않은 상태일 경우 클릭
|
1071
1157
|
@driver.find_element(:xpath, '//*[@class="u_ico _icon"]').click
|
1072
|
-
sleep(
|
1158
|
+
sleep(2)
|
1073
1159
|
end
|
1074
1160
|
else
|
1075
1161
|
end
|
1076
1162
|
|
1163
|
+
|
1164
|
+
|
1077
1165
|
|
1078
|
-
|
1166
|
+
begin
|
1079
1167
|
wait = Selenium::WebDriver::Wait.new(:timeout => 10)
|
1080
1168
|
wait.until { @driver.find_element(:xpath, '//*[@placeholder="댓글을 남겨보세요"]') }
|
1081
1169
|
|
@@ -1126,6 +1214,7 @@ class Naver
|
|
1126
1214
|
sleep(1)
|
1127
1215
|
else
|
1128
1216
|
begin
|
1217
|
+
puts (content)
|
1129
1218
|
@driver.find_element(:xpath, '//*[@placeholder="댓글을 남겨보세요"]').send_keys(content)
|
1130
1219
|
sleep(1)
|
1131
1220
|
rescue
|
@@ -1243,13 +1332,25 @@ class Naver
|
|
1243
1332
|
puts '-[√] 로그 파일 생성 완료.......'.yellow
|
1244
1333
|
end
|
1245
1334
|
end
|
1246
|
-
|
1247
1335
|
end
|
1248
1336
|
@driver.switch_to.default_content() # 아이프레임 해제
|
1249
|
-
|
1250
|
-
|
1251
|
-
|
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"
|
1252
1346
|
end
|
1347
|
+
sleep_with_progress(sleep_delay)
|
1348
|
+
|
1349
|
+
|
1350
|
+
rescue => e
|
1351
|
+
puts "Error: #{e.message}"
|
1352
|
+
end
|
1353
|
+
end
|
1253
1354
|
else
|
1254
1355
|
end
|
1255
1356
|
|
@@ -1281,7 +1382,7 @@ class Naver
|
|
1281
1382
|
end
|
1282
1383
|
end
|
1283
1384
|
|
1284
|
-
class Wordpress
|
1385
|
+
class Wordpress
|
1285
1386
|
include Glimmer
|
1286
1387
|
|
1287
1388
|
def login_check2(user_id, user_pw)
|
@@ -1607,7 +1708,7 @@ class Wordpress
|
|
1607
1708
|
proxy = table[3].to_s
|
1608
1709
|
user_id = table[1].to_s
|
1609
1710
|
user_pw = table[2].to_s
|
1610
|
-
naver = Naver.new
|
1711
|
+
naver = Naver.new(@data)
|
1611
1712
|
@data['table'][index][-1] = 30
|
1612
1713
|
@data['table'] << []
|
1613
1714
|
@data['table'].pop
|
@@ -1751,7 +1852,8 @@ class Wordpress
|
|
1751
1852
|
# 댓글 설정 수 카운트
|
1752
1853
|
counts_number = @data['table'][index][5].to_i
|
1753
1854
|
api_key = @data['포스트설정']['api_key'].text.to_s.force_encoding('utf-8')
|
1754
|
-
|
1855
|
+
sleep_delay = @data['table'][index][4].to_i
|
1856
|
+
naver.update(content,board_url,nickname,image,option,counts_number,keyword,api_key,sleep_delay)
|
1755
1857
|
|
1756
1858
|
|
1757
1859
|
|
@@ -1760,7 +1862,7 @@ class Wordpress
|
|
1760
1862
|
@data['table'][index][-1] = 100
|
1761
1863
|
@data['table'] << []
|
1762
1864
|
@data['table'].pop
|
1763
|
-
sleep(@data['table'][index][4].to_i)
|
1865
|
+
#sleep(@data['table'][index][4].to_i)
|
1764
1866
|
end
|
1765
1867
|
rescue => exception
|
1766
1868
|
puts exception
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: duo_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
|