zon_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/zon_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: 1d7340486eaff486cd290d63cc012e9397cb885cff0725c3c76d0f98e222891b
|
4
|
+
data.tar.gz: ea0feef7efdbacbe4a3e899bcea885c52356f30415acf3b40f929c99a929b909
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7570e12b5d1291eb8f3a7c7b760d8980d67ecbd5aae311d6df07d514224a44a85b35106b0ed76d782ae4a29391b9f1b380f3598960c4c85a6259040312ee55b5
|
7
|
+
data.tar.gz: 7a7f2caf4dadc72d01016a8ac8d5910ecb52af8c8859590013e282a01cebcac5d6a7c038f0c2fd8271c29ccdcf6a306d3e5e1c352571144845437ce955d0aa2d
|
data/lib/zon_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
|
|
@@ -660,7 +663,12 @@ class Naver
|
|
660
663
|
wait.until { @driver.find_element(:xpath, '//*[@id="mainFrame"]') } # 아이프레임 선택
|
661
664
|
sleep(1)
|
662
665
|
@driver.switch_to.frame(@driver.find_element(:xpath, '//*[@id="mainFrame"]')) # 아이프레임 선택
|
663
|
-
sleep(1)
|
666
|
+
sleep(1)
|
667
|
+
puts "게시글 읽는 모션 진행".yellow
|
668
|
+
@driver.action.send_keys(:page_down).perform #스크롤 내리기
|
669
|
+
sleep(1)
|
670
|
+
@driver.action.send_keys(:page_down).perform #스크롤 내리기
|
671
|
+
sleep(1)
|
664
672
|
|
665
673
|
if option['이웃추가'] == 'true'
|
666
674
|
begin
|
@@ -1049,6 +1057,36 @@ class Naver
|
|
1049
1057
|
else
|
1050
1058
|
end
|
1051
1059
|
|
1060
|
+
content_soon = 0
|
1061
|
+
# 💬 content 설정 (여기 추가!)
|
1062
|
+
if @data['내용설정']['내용'].nil? || @data['내용설정']['내용'].empty?
|
1063
|
+
content = ''
|
1064
|
+
else
|
1065
|
+
if @data.dig('내용설정', '랜덤사용')&.respond_to?(:checked?) && @data['내용설정']['랜덤사용'].checked?
|
1066
|
+
content = @data['내용설정']['내용'].sample[2] # 랜덤 사용 시
|
1067
|
+
else
|
1068
|
+
content = @data['내용설정']['내용'][content_soon][2] # 순차적으로 사용
|
1069
|
+
content_soon += 1
|
1070
|
+
if content_soon >= @data['내용설정']['내용'].length
|
1071
|
+
content_soon = 0
|
1072
|
+
end
|
1073
|
+
end
|
1074
|
+
end
|
1075
|
+
|
1076
|
+
# 디엠 자동 변경이 체크된 경우 content를 변환
|
1077
|
+
if @data['포스트설정']['내용자동변경'].checked?
|
1078
|
+
change_memory = {}
|
1079
|
+
@data['포스트설정']['내용자동변경값'].each do |key, v|
|
1080
|
+
change_memory[key] = v.sample
|
1081
|
+
end
|
1082
|
+
@data['포스트설정']['내용자동변경값'].each do |key, _|
|
1083
|
+
if content.include?(key)
|
1084
|
+
content = content.gsub(key, change_memory[key]) # gsub을 사용하여 내용 치환
|
1085
|
+
else
|
1086
|
+
end
|
1087
|
+
end
|
1088
|
+
end
|
1089
|
+
|
1052
1090
|
begin #댓글 작업 >> 시작
|
1053
1091
|
# 댓글 쓰기 버튼 클릭
|
1054
1092
|
begin
|
@@ -1352,6 +1390,18 @@ class Naver
|
|
1352
1390
|
puts '-[√] 로그 파일 생성 완료.......'.yellow
|
1353
1391
|
end
|
1354
1392
|
end
|
1393
|
+
|
1394
|
+
def sleep_with_progress(sleep_delay)
|
1395
|
+
print "[설정 딜레이 진행 중] "
|
1396
|
+
steps = (sleep_delay.to_f / 0.5).to_i
|
1397
|
+
steps.times do
|
1398
|
+
print "."
|
1399
|
+
STDOUT.flush
|
1400
|
+
sleep(1)
|
1401
|
+
end
|
1402
|
+
puts "\n"
|
1403
|
+
end
|
1404
|
+
sleep_with_progress(sleep_delay)
|
1355
1405
|
|
1356
1406
|
rescue
|
1357
1407
|
|
@@ -1635,7 +1685,7 @@ end
|
|
1635
1685
|
proxy = table[3].to_s
|
1636
1686
|
user_id = table[1].to_s
|
1637
1687
|
user_pw = table[2].to_s
|
1638
|
-
naver = Naver.new
|
1688
|
+
naver = Naver.new(@data)
|
1639
1689
|
@data['table'][index][-1] = 30
|
1640
1690
|
@data['table'] << []
|
1641
1691
|
@data['table'].pop
|
@@ -1821,9 +1871,9 @@ end
|
|
1821
1871
|
|
1822
1872
|
# 댓글 설정 수 카운트
|
1823
1873
|
counts_number = @data['table'][index][6].to_i
|
1824
|
-
|
1874
|
+
sleep_delay = @data['table'][index][5].to_i
|
1825
1875
|
api_key = @data['포스트설정']['api_key'].text.to_s.force_encoding('utf-8')
|
1826
|
-
naver.update(content,image,option,counts_number,keyword,blog_url,api_key,
|
1876
|
+
naver.update(content,image,option,counts_number,keyword,blog_url,api_key,sleep_delay)
|
1827
1877
|
|
1828
1878
|
|
1829
1879
|
|
@@ -1832,7 +1882,7 @@ end
|
|
1832
1882
|
@data['table'][index][-1] = 100
|
1833
1883
|
@data['table'] << []
|
1834
1884
|
@data['table'].pop
|
1835
|
-
sleep(@data['table'][index][5].to_i)
|
1885
|
+
#sleep(@data['table'][index][5].to_i)
|
1836
1886
|
end
|
1837
1887
|
rescue => exception
|
1838
1888
|
puts exception
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: zon_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
|