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.
- checksums.yaml +4 -4
- data/lib/duo_blog_comment.rb +93 -43
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 74797d9340de012e29c4ec005c642dc11b6bdedf395474b30de492194f75856f
|
4
|
+
data.tar.gz: cd9dcee0497d103eab0fc6c7eb691c22c934401c0282c44a1df7ee0f4b719976
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d3a7be6c6c079e1ed1288d59c7858a29cb373da393386f0dbda360ce8200f4bb352808da170fcbb31381d70672ce31f2f331e99e4a9bb74e2510bca728861f65
|
7
|
+
data.tar.gz: 121e006dee89cb8346915dbaafc24bbbd5cf2a1c7f8ea19cbfc88c66ab4fcac205bd0245d84b6561bc6e3abf833a3c8f2205f9f382a77b2006fb95f36a05738e
|
data/lib/duo_blog_comment.rb
CHANGED
@@ -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,
|
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
|
-
|
473
|
-
|
474
|
-
|
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"]')
|
494
|
-
|
495
|
-
|
496
|
-
|
497
|
-
|
498
|
-
|
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
|
-
|
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
|
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
|
-
|
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,
|
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.
|
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-
|
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
|