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.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/zon_cafe_comment.rb +152 -49
  3. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b149266b9ce59ac80a7a91b035f3480fae14e44bff3429f7155e71dac66305dd
4
- data.tar.gz: 3fcc5fbb2b6e0c435a7c4ee65947e626e2d1a0e2ec24de71bf2f635a43e8f6a1
3
+ metadata.gz: 1579b47b69073b363b4a7bfbbf2c81a56424f7a19bc3027c772fef28494cbcfd
4
+ data.tar.gz: 76c4095112bef2784af0179395c7c13a7f541de41a26ba96bbe532687acc49e2
5
5
  SHA512:
6
- metadata.gz: 8bda695336c2e5a586dec81fae6cc181f3f27087d66990c33e269e7bc8eb6a8b131a0da0e64ca552efb0bd37f9f11d5c039007c5c98efaa21c50cf738906b049
7
- data.tar.gz: f401ffe7dfbafcc5b55ca95775e6425f4419d8db3cd7300a4e6d9ce2fcccb97b4df8e7614a221f8312ff0d73cdfbb411ef0062c946a6d54289defb3b5ea5e745
6
+ metadata.gz: 382868b59a5af37da55cae0409d5d9f75131b8c8f6c762ea729c064af55a69cf91fe126872d77b7bca9c99d98a61e2ac8c528db222309f52ef4402105f4ddda8
7
+ data.tar.gz: 5523cc4f4d2760b0d01a10c439999b8f6a71bfc71d525a795368d69916982b9eeb2c71269516bfd729a270fcc53dd6a5cddf45dd88a0b87a657427581377430a
@@ -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,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(1)
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(1)
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(1)
1158
+ sleep(2)
1072
1159
  end
1073
1160
  else
1074
1161
  end
1075
1162
 
1163
+
1164
+
1076
1165
 
1077
- begin
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
- rescue => e
1249
- puts "Error: #{e.message}"
1250
- 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"
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
- naver.update(content,board_url,nickname,image,option,counts_number,keyword,api_key)
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.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