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.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/zon_blog_cafe_comment.rb +213 -44
  3. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6813c160373d3d4da26274a5ae592f52dbedf09fa88cb30f0e91bf07ec68d01e
4
- data.tar.gz: 3fee7f19888bcfd4ccb9cbe7d1f662ea1915b027cc2095ea29d0033bd4458083
3
+ metadata.gz: 5b0d86fbc3537505d52a52f1774a864685e4a641ba624daa5bb4c626ceaedf0d
4
+ data.tar.gz: d25746c2540e2c901bf0e0b04e0a74b4337a02fe9c5379def94f51d1be0bfa47
5
5
  SHA512:
6
- metadata.gz: af4b9b785c939916b2c8b3451b3a44ac7af98272d01ce52f2d7fc49c1de23c38aabd6a598dc0f6d0737d48cfc54d172cd47499841bab22ce72584a5234c33d26
7
- data.tar.gz: 477a7787f302fecaa78b01b3466890fc65bf3a4832b0b65c61f441a2df64f937769ae2590b524d6a51312aee7a8c889dcfa7bbc738f4d704eee5cd4b9b822362
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
- 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)
@@ -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
- end
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
- naver.update(content,board_url,blog_url,nickname,image,option,counts_number,keyword,api_key)
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.53
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-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