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.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/duo_cafe_comment.rb +153 -51
  3. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c847f965e5162921b22f8b53ef9a125c398aff5d6c978d446ec896c9fdde5d8f
4
- data.tar.gz: 4f040daf91720ca463e565556761ec962bbc3b44c927c47ba4d4c4d8fa04d51b
3
+ metadata.gz: 67b74f8adb28747ea69dc9d12621e0bebf3d58289b08321c33da66d132306d98
4
+ data.tar.gz: d3c7a576cdd74eff93c5b0fce1248cf1829d4c20279f6712508dd6cb1c6e6fe4
5
5
  SHA512:
6
- metadata.gz: 5e18689edcd462361f16f7472ee0402b960964811ddcc6b3b422ff873395c3f67b9fca2adabe67184ea846e905365de3ac649099598a68fec8ea34e2d3d43185
7
- data.tar.gz: 054071a217cf349fa7d8d707fbbae9aeb541abf7c3a4b87f3c99da7416df31bf762a0aa859591fb08d7d7de1c7f8ffd8ce87f38c9be7da1c9728f52ca88d3852
6
+ metadata.gz: 61318dfbc068e9d62ecb41a1e4f42d53411af9f46fe973e94a87cb3f6704d40c5d9bc880d3a9d9899bca208266b5ebe68b392b6a3558dc4859b44de44a43f5d2
7
+ data.tar.gz: 11592ec23ca0baca7bef3dd8ff537848fd3d4824a458949941ed7e30e85539fbd35d3f904c7cf875ae0e5c232cb982968ef832af2d17b92a13086dee7b8d4cbd
@@ -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
- kill_selenium_chrome #기존 창 모두 닫는 명령
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(1)
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(1)
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(1)
1158
+ sleep(2)
1073
1159
  end
1074
1160
  else
1075
1161
  end
1076
1162
 
1163
+
1164
+
1077
1165
 
1078
- begin
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
- rescue => e
1250
- puts "Error: #{e.message}"
1251
- end
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
- naver.update(content,board_url,nickname,image,option,counts_number,keyword,api_key)
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.33
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-05-29 00:00:00.000000000 Z
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