duo_blog_comment 0.0.50 → 0.0.55

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_comment.rb +93 -43
  3. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f95178710b34e9ab6fbd2f8a0489e89701f13d285048a217df5277e24a9407a2
4
- data.tar.gz: 8f4db6310d26896514289dd10912fcad86c328bb58c34938b0c9b0e8a918e7a8
3
+ metadata.gz: 74797d9340de012e29c4ec005c642dc11b6bdedf395474b30de492194f75856f
4
+ data.tar.gz: cd9dcee0497d103eab0fc6c7eb691c22c934401c0282c44a1df7ee0f4b719976
5
5
  SHA512:
6
- metadata.gz: 7ca7d076591edec4349b7f71c817e77d5a2ed74a38e5f90ac9a405b2b02c4286a91b787ea946e22e3dd3f7fdd38d7e2590feb8e316072a8ced5fae00ebdbab64
7
- data.tar.gz: 51c8f6397d5af876026e37901a2c92f32a23052a8d9d03594759bb314809314792afa4dfc782afc35fea335a296625c8e5b0b1ec6c6d9a600f8c05c3b456637f
6
+ metadata.gz: d3a7be6c6c079e1ed1288d59c7858a29cb373da393386f0dbda360ce8200f4bb352808da170fcbb31381d70672ce31f2f331e99e4a9bb74e2510bca728861f65
7
+ data.tar.gz: 121e006dee89cb8346915dbaafc24bbbd5cf2a1c7f8ea19cbfc88c66ab4fcac205bd0245d84b6561bc6e3abf833a3c8f2205f9f382a77b2006fb95f36a05738e
@@ -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,image,option,counts_number,keyword,blog_url,api_key,counts_delay)
278
+ def update(content,image,option,counts_number,keyword,blog_url,api_key,sleep_delay)
278
279
 
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
  #sleep(counts_delay)
284
286
 
285
287
 
@@ -469,48 +471,60 @@ class Naver
469
471
  @driver.switch_to.frame(@driver.find_element(:xpath, '//*[@id="mainFrame"]')) # 아이프레임 선택
470
472
  sleep(1)
471
473
  begin
472
- @driver.find_element(:xpath, '//*[@id="toplistSpanBlind"]').click
473
- sleep(2)
474
- rescue
474
+ element = @driver.find_element(:xpath, '//*[@id="toplistSpanBlind"]') # 목록 열기 코드
475
+ text = element.text.strip
476
+
477
+ if text == "목록열기"
478
+ element.click
479
+ sleep(2)
480
+ else
481
+
482
+ end
483
+ rescue
475
484
  begin
476
- @driver.find_element(:xpath, '//*[@class="off itemfont _doNclick _param(false|blog|)"]').click
477
- sleep(2)
485
+ @driver.find_element(:xpath, '//*[@class="off itemfont _doNclick _param(false|blog|)"]').click #블로그 txt 클릭
486
+ sleep(2)
487
+ rescue
488
+ begin
489
+ @driver.find_element(:xpath, '//*[@class="on itemfont _doNclick _param(false|blog|)"]').click #블로그 txt 클릭
490
+ sleep(2)
491
+ rescue
492
+ end
493
+ end
494
+
495
+ begin
478
496
  begin
479
497
  wait = Selenium::WebDriver::Wait.new(:timeout => 5)
480
- wait.until { @driver.find_element(:xpath, '//*[@id="category0"]') }
498
+ wait.until { @driver.find_element(:xpath, '//*[@id="category0"]') } # 전체 보기 클릭
481
499
  element = @driver.find_element(:xpath, '//*[@id="category0"]')
482
500
  @driver.execute_script("arguments[0].scrollIntoView({block: 'center', inline: 'center'})", element)#크롤 이동
483
501
  sleep(2)
484
- @driver.find_element(:xpath, '//*[@id="category0"]').click
502
+ @driver.find_element(:xpath, '//*[@id="category0"]').click # 전체 보기 클릭
485
503
  sleep(2)
486
504
  rescue
487
505
  end
488
506
  wait = Selenium::WebDriver::Wait.new(:timeout => 5)
489
- wait.until { @driver.find_element(:xpath, '//*[@id="toplistSpanBlind"]') }
507
+ wait.until { @driver.find_element(:xpath, '//*[@id="toplistSpanBlind"]') } # 목록 열기 코드
490
508
  element = @driver.find_element(:xpath, '//*[@id="toplistSpanBlind"]')
491
509
  @driver.execute_script("arguments[0].scrollIntoView({block: 'center', inline: 'center'})", element)#크롤 이동
492
- sleep(2)
493
- @driver.find_element(:xpath, '//*[@id="toplistSpanBlind"]').click
494
- sleep(1)
495
- rescue => e
496
- @driver.window_handles.each do |handle|
497
- @driver.switch_to.window(handle)
498
- begin
499
- # 로딩 중이거나, 페이지가 완전히 로딩되지 않더라도 탭을 닫기
500
- puts 'id="toplistSpanBlind" 요소를 찾지 못했습니다.'
501
- @driver.close
502
- rescue Selenium::WebDriver::Error::WebDriverError => e
503
- puts "Failed to close tab: #{e.message}"
504
- end
510
+ sleep(2)
511
+ element = @driver.find_element(:xpath, '//*[@id="toplistSpanBlind"]')
512
+ text = element.text.strip
513
+
514
+ if text == "목록열기"
515
+ element.click
516
+ sleep(2)
517
+ else
505
518
  end
506
- @driver.quit
519
+ sleep(1)
520
+ rescue
507
521
  end
508
522
  end
509
523
 
510
524
 
511
525
  begin
512
526
  wait = Selenium::WebDriver::Wait.new(:timeout => 3)
513
- wait.until { @driver.find_element(:xpath, '//*[@class="aline"]') }
527
+ wait.until { @driver.find_element(:xpath, '//*[@class="aline"]') } # 목록 리스트 (5줄 보기) 클릭
514
528
  element = @driver.find_element(:xpath, '//*[@class="aline"]')
515
529
  @driver.execute_script("arguments[0].scrollIntoView({block: 'center', inline: 'center'})", element)#크롤 이동
516
530
  sleep(2)
@@ -519,24 +533,13 @@ class Naver
519
533
  rescue
520
534
  begin
521
535
  wait = Selenium::WebDriver::Wait.new(:timeout => 3)
522
- wait.until { @driver.find_element(:xpath, '//*[@id="listCountToggle"]') }
536
+ wait.until { @driver.find_element(:xpath, '//*[@id="listCountToggle"]') } # 목록 리스트 (5줄 보기) 클릭
523
537
  element = @driver.find_element(:xpath, '//*[@id="listCountToggle"]')
524
538
  @driver.execute_script("arguments[0].scrollIntoView({block: 'center', inline: 'center'})", element)#크롤 이동
525
539
  sleep(2)
526
540
  element.send_keys(:return)
527
541
  sleep(1)
528
- rescue => e
529
- @driver.window_handles.each do |handle|
530
- @driver.switch_to.window(handle)
531
- begin
532
- # 로딩 중이거나, 페이지가 완전히 로딩되지 않더라도 탭을 닫기
533
- puts 'class="aline" 요소를 찾지 못했습니다.'
534
- @driver.close
535
- rescue Selenium::WebDriver::Error::WebDriverError => e
536
- puts "Failed to close tab: #{e.message}"
537
- end
538
- end
539
- @driver.quit
542
+ rescue
540
543
  end
541
544
  end
542
545
 
@@ -661,7 +664,12 @@ class Naver
661
664
  wait.until { @driver.find_element(:xpath, '//*[@id="mainFrame"]') } # 아이프레임 선택
662
665
  sleep(1)
663
666
  @driver.switch_to.frame(@driver.find_element(:xpath, '//*[@id="mainFrame"]')) # 아이프레임 선택
664
- sleep(1)
667
+ sleep(1)
668
+ puts "게시글 읽는 모션 진행".yellow
669
+ @driver.action.send_keys(:page_down).perform #스크롤 내리기
670
+ sleep(1)
671
+ @driver.action.send_keys(:page_down).perform #스크롤 내리기
672
+ sleep(1)
665
673
 
666
674
  if option['이웃추가'] == 'true'
667
675
  begin
@@ -1050,6 +1058,36 @@ class Naver
1050
1058
  else
1051
1059
  end
1052
1060
 
1061
+ content_soon = 0
1062
+ # 💬 content 설정 (여기 추가!)
1063
+ if @data['내용설정']['내용'].nil? || @data['내용설정']['내용'].empty?
1064
+ content = ''
1065
+ else
1066
+ if @data.dig('내용설정', '랜덤사용')&.respond_to?(:checked?) && @data['내용설정']['랜덤사용'].checked?
1067
+ content = @data['내용설정']['내용'].sample[2] # 랜덤 사용 시
1068
+ else
1069
+ content = @data['내용설정']['내용'][content_soon][2] # 순차적으로 사용
1070
+ content_soon += 1
1071
+ if content_soon >= @data['내용설정']['내용'].length
1072
+ content_soon = 0
1073
+ end
1074
+ end
1075
+ end
1076
+
1077
+ # 디엠 자동 변경이 체크된 경우 content를 변환
1078
+ if @data['포스트설정']['내용자동변경'].checked?
1079
+ change_memory = {}
1080
+ @data['포스트설정']['내용자동변경값'].each do |key, v|
1081
+ change_memory[key] = v.sample
1082
+ end
1083
+ @data['포스트설정']['내용자동변경값'].each do |key, _|
1084
+ if content.include?(key)
1085
+ content = content.gsub(key, change_memory[key]) # gsub을 사용하여 내용 치환
1086
+ else
1087
+ end
1088
+ end
1089
+ end
1090
+
1053
1091
  begin #댓글 작업 >> 시작
1054
1092
  # 댓글 쓰기 버튼 클릭
1055
1093
  begin
@@ -1353,6 +1391,18 @@ class Naver
1353
1391
  puts '-[√] 로그 파일 생성 완료.......'.yellow
1354
1392
  end
1355
1393
  end
1394
+
1395
+ def sleep_with_progress(sleep_delay)
1396
+ print "[설정 딜레이 진행 중] "
1397
+ steps = (sleep_delay.to_f / 0.5).to_i
1398
+ steps.times do
1399
+ print "."
1400
+ STDOUT.flush
1401
+ sleep(1)
1402
+ end
1403
+ puts "\n"
1404
+ end
1405
+ sleep_with_progress(sleep_delay)
1356
1406
 
1357
1407
  rescue
1358
1408
 
@@ -1706,7 +1756,7 @@ class Wordpress
1706
1756
  proxy = table[3].to_s
1707
1757
  user_id = table[1].to_s
1708
1758
  user_pw = table[2].to_s
1709
- naver = Naver.new
1759
+ naver = Naver.new(@data)
1710
1760
  @data['table'][index][-1] = 30
1711
1761
  @data['table'] << []
1712
1762
  @data['table'].pop
@@ -1891,9 +1941,9 @@ class Wordpress
1891
1941
 
1892
1942
  # 댓글 설정 수 카운트
1893
1943
  counts_number = @data['table'][index][6].to_i
1894
- counts_delay = @data['table'][index][5].to_i
1944
+ sleep_delay = @data['table'][index][5].to_i
1895
1945
  api_key = @data['포스트설정']['api_key'].text.to_s.force_encoding('utf-8')
1896
- naver.update(content,image,option,counts_number,keyword,blog_url,api_key,counts_delay)
1946
+ naver.update(content,image,option,counts_number,keyword,blog_url,api_key,sleep_delay)
1897
1947
 
1898
1948
 
1899
1949
 
@@ -1902,7 +1952,7 @@ class Wordpress
1902
1952
  @data['table'][index][-1] = 100
1903
1953
  @data['table'] << []
1904
1954
  @data['table'].pop
1905
- sleep(@data['table'][index][5].to_i)
1955
+ #sleep(@data['table'][index][5].to_i)
1906
1956
  end
1907
1957
  rescue => exception
1908
1958
  puts exception
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: duo_blog_comment
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.50
4
+ version: 0.0.55
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-19 00:00:00.000000000 Z
11
11
  dependencies: []
12
12
  description: File to Clipboard gem
13
13
  email: mymin26@naver.com