duo_blog_cafe_comment 0.0.55 → 0.0.59

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_blog_cafe_comment.rb +215 -26
  3. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 618038504021a5d84181eea72b947b79524934648d6563c39eb48c2fa9b7c393
4
- data.tar.gz: 8fef6de772cc2f06f905ee43d0df48f62d200b5b6e593d40cff0bb9170b79cfd
3
+ metadata.gz: 12962ca1346261f79ad044b09282fb581b1a871b5a0c1033bfd095e115e0d0a6
4
+ data.tar.gz: 4580ae4cf77f05edc00bc9381bcd883fb5e060ba03f4e4305a190545bc95cbc4
5
5
  SHA512:
6
- metadata.gz: 22988708b5a24c176048bedd24751e1067b19dfcb11adb1aa5b15ea10dd8fe2c9ec29f0ee27853697f630102d62c430572d56d2d89322975e6ff81cb4e96f1cc
7
- data.tar.gz: 12df0ba7a907cdb2e59294450fae6985a7d1121130243f7bfef1afedb7c70d07813e594ea3216678a2b91c0ef86b9c641d6ba6c2b061ee33df41dccc9af2f794
6
+ metadata.gz: f9302814ae28dd1d302474f4b2f234d61a1a8422081984e95173dac788a2f8046d96407dc71547454cacfce8c5b29a8ec63c81e744cdfae36f8dec991e445d7c
7
+ data.tar.gz: 6dbd9578c1aaecec8a753f48e43d60b88eaa042188192e66bec1665fbd2310ebb067538a8b26a33f870c3de1aa3e86ffcfcb2b2ec4682467035a06cba4ad2910
@@ -22,7 +22,8 @@ include Glimmer
22
22
 
23
23
 
24
24
  class Naver
25
- def initialize
25
+ def initialize(data)
26
+ @data = data
26
27
  @seed = 1
27
28
  end
28
29
 
@@ -274,12 +275,13 @@ class Naver
274
275
 
275
276
 
276
277
 
277
- 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)
278
279
  @board_url = board_url
279
280
  @keyword = keyword
280
281
  @content = content
281
282
  @api_key = api_key
282
283
  @blog_url = blog_url
284
+ @sleep_delay = sleep_delay
283
285
  if option['카페사용모드'] == 'true'
284
286
 
285
287
 
@@ -490,6 +492,42 @@ class Naver
490
492
  sleep(1)
491
493
  @driver.switch_to.frame(@driver.find_element(:xpath, '//*[@id="cafe_main"]')) # 아이프레임 선택
492
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
493
531
 
494
532
  if option['좋아요'] == 'true'
495
533
  puts "좋아요 클릭 옵션 진행!!".cyan
@@ -570,6 +608,7 @@ class Naver
570
608
  sleep(1)
571
609
  else
572
610
  begin
611
+ puts (content)
573
612
  @driver.find_element(:xpath, '//*[@placeholder="댓글을 남겨보세요"]').send_keys(content)
574
613
  sleep(1)
575
614
  rescue
@@ -688,6 +727,18 @@ class Naver
688
727
  end
689
728
  end
690
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)
691
742
  rescue => e
692
743
  puts "Error: #{e.message}"
693
744
  end
@@ -707,6 +758,43 @@ class Naver
707
758
  wait.until { @driver.find_element(:xpath, '//*[@id="cafe_main"]') } # 아이프레임 선택
708
759
  sleep(1)
709
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
710
798
 
711
799
  if option['좋아요'] == 'true'
712
800
  puts "좋아요 클릭 옵션 진행!!".cyan
@@ -787,6 +875,7 @@ class Naver
787
875
  sleep(1)
788
876
  else
789
877
  begin
878
+ puts (content)
790
879
  @driver.find_element(:xpath, '//*[@placeholder="댓글을 남겨보세요"]').send_keys(content)
791
880
  sleep(1)
792
881
  rescue
@@ -907,6 +996,17 @@ class Naver
907
996
 
908
997
  end
909
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)
910
1010
  rescue => e
911
1011
  puts "Error: #{e.message}"
912
1012
  end
@@ -1008,6 +1108,42 @@ class Naver
1008
1108
  sleep(1)
1009
1109
  @driver.switch_to.frame(@driver.find_element(:xpath, '//*[@id="cafe_main"]')) # 아이프레임 선택
1010
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
1011
1147
 
1012
1148
  if option['좋아요'] == 'true'
1013
1149
  puts "좋아요 클릭 옵션 진행!!".cyan
@@ -1088,6 +1224,7 @@ class Naver
1088
1224
  sleep(1)
1089
1225
  else
1090
1226
  begin
1227
+ puts (content)
1091
1228
  @driver.find_element(:xpath, '//*[@placeholder="댓글을 남겨보세요"]').send_keys(content)
1092
1229
  sleep(1)
1093
1230
  rescue
@@ -1208,6 +1345,19 @@ class Naver
1208
1345
 
1209
1346
  end
1210
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
+
1211
1361
  rescue => e
1212
1362
  puts "Error: #{e.message}"
1213
1363
  end
@@ -1456,18 +1606,7 @@ class Naver
1456
1606
  sleep(2)
1457
1607
  element.send_keys(:return)
1458
1608
  sleep(1)
1459
- rescue => e
1460
- @driver.window_handles.each do |handle|
1461
- @driver.switch_to.window(handle)
1462
- begin
1463
- # 로딩 중이거나, 페이지가 완전히 로딩되지 않더라도 탭을 닫기
1464
- puts 'class="aline" 요소를 찾지 못했습니다.'
1465
- @driver.close
1466
- rescue Selenium::WebDriver::Error::WebDriverError => e
1467
- puts "Failed to close tab: #{e.message}"
1468
- end
1469
- end
1470
- @driver.quit
1609
+ rescue
1471
1610
  end
1472
1611
  end
1473
1612
 
@@ -1579,7 +1718,7 @@ class Naver
1579
1718
  end
1580
1719
 
1581
1720
  @driver.switch_to.default_content
1582
- end
1721
+ end
1583
1722
 
1584
1723
  collected_urls.each do |url|
1585
1724
  # 각 post-url로 이동
@@ -1591,8 +1730,16 @@ class Naver
1591
1730
  @driver.switch_to.frame(@driver.find_element(:xpath, '//*[@id="mainFrame"]')) # 아이프레임 선택
1592
1731
  sleep(1)
1593
1732
 
1733
+ sleep(1)
1734
+ puts "게시글 읽는 모션 진행".yellow
1735
+ @driver.action.send_keys(:page_down).perform #스크롤 내리기
1736
+ sleep(1)
1737
+ @driver.action.send_keys(:page_down).perform #스크롤 내리기
1738
+ sleep(1)
1739
+
1594
1740
  if option['이웃추가'] == 'true'
1595
1741
  begin
1742
+ sleep(1)
1596
1743
  begin
1597
1744
  wait = Selenium::WebDriver::Wait.new(:timeout => 3)
1598
1745
  #요소가 나타날 때까지 10초 동안 기다립니다.
@@ -1667,7 +1814,7 @@ class Naver
1667
1814
 
1668
1815
  elsif option['서로이웃추가'] == 'true'
1669
1816
  begin
1670
-
1817
+ sleep(1)
1671
1818
  begin
1672
1819
  wait = Selenium::WebDriver::Wait.new(:timeout => 3)
1673
1820
  #요소가 나타날 때까지 10초 동안 기다립니다.
@@ -1748,7 +1895,7 @@ class Naver
1748
1895
 
1749
1896
  if option['공유하기'] == 'true'
1750
1897
  begin
1751
-
1898
+ sleep(1)
1752
1899
  wait = Selenium::WebDriver::Wait.new(:timeout => 10)
1753
1900
  #요소가 나타날 때까지 10초 동안 기다립니다.
1754
1901
  wait.until { @driver.find_element(:xpath, '//*[@class="_spi_blog spi_btn_blog"]') }
@@ -1840,7 +1987,7 @@ class Naver
1840
1987
 
1841
1988
  elsif option['공유하기비공개'] == 'true'
1842
1989
  begin
1843
-
1990
+ sleep(1)
1844
1991
  wait = Selenium::WebDriver::Wait.new(:timeout => 10)
1845
1992
  #요소가 나타날 때까지 10초 동안 기다립니다.
1846
1993
  wait.until { @driver.find_element(:xpath, '//*[@class="_spi_blog spi_btn_blog"]') }
@@ -1937,7 +2084,7 @@ class Naver
1937
2084
 
1938
2085
  if option['좋아요'] == 'true'
1939
2086
  begin
1940
-
2087
+ sleep(1)
1941
2088
  wait = Selenium::WebDriver::Wait.new(:timeout => 3)
1942
2089
  wait.until { @driver.find_element(:xpath, '//*[@class="u_ico _icon pcol3"]') }
1943
2090
 
@@ -1978,6 +2125,36 @@ class Naver
1978
2125
  else
1979
2126
  end
1980
2127
 
2128
+ content_soon = 0
2129
+ # 💬 content 설정 (여기 추가!)
2130
+ if @data['내용설정']['내용'].nil? || @data['내용설정']['내용'].empty?
2131
+ content = ''
2132
+ else
2133
+ if @data.dig('내용설정', '랜덤사용')&.respond_to?(:checked?) && @data['내용설정']['랜덤사용'].checked?
2134
+ content = @data['내용설정']['내용'].sample[2] # 랜덤 사용 시
2135
+ else
2136
+ content = @data['내용설정']['내용'][content_soon][2] # 순차적으로 사용
2137
+ content_soon += 1
2138
+ if content_soon >= @data['내용설정']['내용'].length
2139
+ content_soon = 0
2140
+ end
2141
+ end
2142
+ end
2143
+
2144
+ # 디엠 자동 변경이 체크된 경우 content를 변환
2145
+ if @data['포스트설정']['내용자동변경'].checked?
2146
+ change_memory = {}
2147
+ @data['포스트설정']['내용자동변경값'].each do |key, v|
2148
+ change_memory[key] = v.sample
2149
+ end
2150
+ @data['포스트설정']['내용자동변경값'].each do |key, _|
2151
+ if content.include?(key)
2152
+ content = content.gsub(key, change_memory[key]) # gsub을 사용하여 내용 치환
2153
+ else
2154
+ end
2155
+ end
2156
+ end
2157
+
1981
2158
  begin #댓글 작업 >> 시작
1982
2159
  # 댓글 쓰기 버튼 클릭
1983
2160
  begin
@@ -2201,7 +2378,6 @@ class Naver
2201
2378
  else
2202
2379
  # 여기에 다른 코드 추가 가능
2203
2380
  end
2204
-
2205
2381
  begin
2206
2382
  element = @driver.find_element(:xpath, '//*[@data-uiselector="writeButton"]')
2207
2383
  @driver.execute_script("arguments[0].scrollIntoView({block: 'center', inline: 'center'})", element) # 크롤 이동
@@ -2273,8 +2449,20 @@ class Naver
2273
2449
  ff.close()
2274
2450
  puts '-[√] 로그 파일 생성 완료.......'.yellow
2275
2451
  end
2276
- end
2277
-
2452
+ end
2453
+
2454
+ def sleep_with_progress(sleep_delay)
2455
+ print "[설정 딜레이 진행 중] "
2456
+ steps = (sleep_delay.to_f / 0.5).to_i
2457
+ steps.times do
2458
+ print "."
2459
+ STDOUT.flush
2460
+ sleep(1)
2461
+ end
2462
+ puts "\n"
2463
+ end
2464
+ sleep_with_progress(sleep_delay)
2465
+
2278
2466
  rescue
2279
2467
 
2280
2468
  end #댓글 작업 >> 끝
@@ -2312,7 +2500,7 @@ class Naver
2312
2500
  end
2313
2501
  end
2314
2502
 
2315
- class Wordpress
2503
+ class Wordpress
2316
2504
  include Glimmer
2317
2505
 
2318
2506
  def login_check2(user_id, user_pw)
@@ -2659,7 +2847,7 @@ class Wordpress
2659
2847
  proxy = table[3].to_s
2660
2848
  user_id = table[1].to_s
2661
2849
  user_pw = table[2].to_s
2662
- naver = Naver.new
2850
+ naver = Naver.new(@data)
2663
2851
  @data['table'][index][-1] = 30
2664
2852
  @data['table'] << []
2665
2853
  @data['table'].pop
@@ -2882,7 +3070,8 @@ class Wordpress
2882
3070
  # 댓글 설정 수 카운트
2883
3071
  counts_number = @data['table'][index][6].to_i
2884
3072
  api_key = @data['포스트설정']['api_key'].text.to_s.force_encoding('utf-8')
2885
- naver.update(content,board_url,blog_url,nickname,image,option,counts_number,keyword,api_key)
3073
+ sleep_delay = @data['table'][index][5].to_i
3074
+ naver.update(content,board_url,blog_url,nickname,image,option,counts_number,keyword,api_key,sleep_delay)
2886
3075
 
2887
3076
 
2888
3077
 
@@ -2891,7 +3080,7 @@ class Wordpress
2891
3080
  @data['table'][index][-1] = 100
2892
3081
  @data['table'] << []
2893
3082
  @data['table'].pop
2894
- sleep(@data['table'][index][5].to_i)
3083
+ #sleep(@data['table'][index][5].to_i)
2895
3084
  end
2896
3085
  rescue => exception
2897
3086
  puts exception
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: duo_blog_cafe_comment
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.55
4
+ version: 0.0.59
5
5
  platform: ruby
6
6
  authors:
7
7
  - zon
8
8
  bindir: bin
9
9
  cert_chain: []
10
- date: 2025-05-30 00:00:00.000000000 Z
10
+ date: 2025-06-18 00:00:00.000000000 Z
11
11
  dependencies: []
12
12
  description: File to Clipboard gem
13
13
  email: mymin26@naver.com