nblog_duo 0.0.95 → 0.0.99
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/nblog_duo.rb +68 -30
- 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: ec06f20ed3980c7c49c5c178e0c21082ab6e7df7bde986b58a8dc177480c4664
|
4
|
+
data.tar.gz: 0caa65264dbac225a9962e39e3002751d0b3bca3fed3e49f36de8fcd0dfe10d8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d46e2a31e7e64eba35b5033a622ba88a35d3395e31e6945afde4555968bf7b46593be6a07e93f360bfb04a9a610ca01b2abd23775e0d2a7ef7a4dc0f41dde0de
|
7
|
+
data.tar.gz: 5ae5f82f920ffd50b9596c346cbc553ae8b0242da9382f3c5610e93832db5e858947fb05ffdbb8652f4be2ffac3fa2e752406fd5247688bafcef7683f571bad7
|
data/lib/nblog_duo.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
require 'glimmer-dsl-libui'
|
2
2
|
require 'selenium-webdriver'
|
3
|
-
|
3
|
+
require 'webdrivers'
|
4
4
|
require 'iconv'
|
5
5
|
require 'nokogiri'
|
6
6
|
require 'http'
|
@@ -241,7 +241,26 @@ end
|
|
241
241
|
class Naver
|
242
242
|
def initialize
|
243
243
|
@seed = 1
|
244
|
+
|
245
|
+
begin
|
246
|
+
# webdrivers가 사용자의 Chrome 버전에 맞는 chromedriver 다운로드 시도
|
247
|
+
|
248
|
+
|
249
|
+
# 크롬드라이버 자동 업데이트 시도
|
250
|
+
Webdrivers::Chromedriver.update
|
251
|
+
puts "chromedriver 자동 다운로드 성공"
|
252
|
+
rescue => e
|
253
|
+
puts "chromedriver 자동 다운로드 실패: #{e.message}"
|
254
|
+
puts "폴더내 크롬드라이버를 사용합니다."
|
255
|
+
puts "크롬드라이버가 오래된 경우 오류 발생될 수 있으며, 만일 오류 발생시 아래 지침을 따라주세요."
|
256
|
+
puts "1.크롬 업데이트 2.프로그램 폴더 내부에 ★tip★-시작시-크롬창이....파일을 열어 드라이버를 교체하세요."
|
257
|
+
chromedriver_path = './chromedriver.exe' # 수동 경로를 인스턴스 변수로 설정
|
258
|
+
Selenium::WebDriver::Chrome::Service.driver_path = chromedriver_path
|
259
|
+
end
|
260
|
+
|
244
261
|
end
|
262
|
+
|
263
|
+
|
245
264
|
def chrome_setup(user_id, proxy)
|
246
265
|
naver_cookie_dir = "C:/naver_cookie"
|
247
266
|
FileUtils.mkdir_p(naver_cookie_dir) unless File.exist?(naver_cookie_dir)
|
@@ -260,10 +279,9 @@ class Naver
|
|
260
279
|
FileUtils.mkdir_p(naver_cookie_dir) unless File.exist?(naver_cookie_dir)
|
261
280
|
if proxy == ''
|
262
281
|
begin
|
263
|
-
Selenium::WebDriver::Chrome::Service.driver_path = './chromedriver.exe'
|
264
282
|
options = Selenium::WebDriver::Chrome::Options.new
|
265
283
|
options.add_argument('--no-first-run') # 자동 실행 시 나타나는 "첫 실행" 화면 방지
|
266
|
-
options.add_argument('--disable-extensions') # 확장 프로그램 초기화 화면 방지
|
284
|
+
#options.add_argument('--disable-extensions') # 확장 프로그램 초기화 화면 방지
|
267
285
|
options.add_argument('--disable-sync') # Chrome 동기화 비활성화
|
268
286
|
options.add_argument('--disable-popup-blocking') # 팝업 방지 (로그인 창이 뜨는 경우 대비)
|
269
287
|
options.add_argument('--no-default-browser-check')
|
@@ -288,7 +306,7 @@ class Naver
|
|
288
306
|
end
|
289
307
|
else
|
290
308
|
begin
|
291
|
-
Selenium::WebDriver::Chrome::Service.driver_path = './chromedriver.exe'
|
309
|
+
#Selenium::WebDriver::Chrome::Service.driver_path = './chromedriver.exe'
|
292
310
|
options = Selenium::WebDriver::Chrome::Options.new
|
293
311
|
options.add_argument('--no-first-run') # 자동 실행 시 나타나는 "첫 실행" 화면 방지
|
294
312
|
options.add_argument('--disable-extensions') # 확장 프로그램 초기화 화면 방지
|
@@ -315,7 +333,7 @@ class Naver
|
|
315
333
|
puts e
|
316
334
|
puts 'proxy error...'
|
317
335
|
begin
|
318
|
-
Selenium::WebDriver::Chrome::Service.driver_path = './chromedriver.exe'
|
336
|
+
#Selenium::WebDriver::Chrome::Service.driver_path = './chromedriver.exe'
|
319
337
|
options = Selenium::WebDriver::Chrome::Options.new
|
320
338
|
options.add_argument('--no-first-run') # 자동 실행 시 나타나는 "첫 실행" 화면 방지
|
321
339
|
options.add_argument('--disable-extensions') # 확장 프로그램 초기화 화면 방지
|
@@ -347,7 +365,6 @@ class Naver
|
|
347
365
|
|
348
366
|
|
349
367
|
|
350
|
-
|
351
368
|
def login(user_id, user_pw, proxy)
|
352
369
|
@user_id = user_id
|
353
370
|
@user_id11 = user_id
|
@@ -2458,7 +2475,7 @@ class Wordpress
|
|
2458
2475
|
puts 'Tethering IP change...'
|
2459
2476
|
|
2460
2477
|
stdout, stderr, status = Open3.capture3('./adb devices')
|
2461
|
-
|
2478
|
+
|
2462
2479
|
if status.success?
|
2463
2480
|
device_id = stdout.split("\n")[1].split("\t")[0]
|
2464
2481
|
puts device_id
|
@@ -2466,42 +2483,53 @@ class Wordpress
|
|
2466
2483
|
# ADB 서버 초기화
|
2467
2484
|
puts 'adb kill-server'
|
2468
2485
|
Open3.capture3('./adb kill-server')
|
2469
|
-
sleep(
|
2486
|
+
sleep(5) # ADB 서버가 안정될 시간을 충분히 주기
|
2470
2487
|
|
2471
2488
|
# 다시 ADB 서버 실행
|
2472
2489
|
puts 'adb start-server'
|
2473
2490
|
Open3.capture3('./adb start-server')
|
2474
|
-
sleep(
|
2491
|
+
sleep(5) # ADB 서버가 안정될 시간을 충분히 주기
|
2475
2492
|
|
2476
2493
|
# 데이터를 끄고 켜기
|
2477
2494
|
puts 'adb -s ' + device_id + ' shell svc data disable'
|
2478
|
-
stdout2, stderr2, status2 = Open3.capture3('./adb -s '+device_id+' shell svc data disable')
|
2479
|
-
|
2495
|
+
stdout2, stderr2, status2 = Open3.capture3('./adb -s ' + device_id + ' shell svc data disable')
|
2496
|
+
puts "stderr: #{stderr2}" unless status2.success? # 오류 출력
|
2497
|
+
sleep(5) # 네트워크가 안정될 시간을 더 줍니다.
|
2480
2498
|
puts 'adb -s ' + device_id + ' shell svc data enable'
|
2481
|
-
Open3.capture3('./adb -s '+device_id+' shell svc data enable')
|
2482
|
-
|
2499
|
+
stdout3, stderr3, status3 = Open3.capture3('./adb -s ' + device_id + ' shell svc data enable')
|
2500
|
+
puts "stderr: #{stderr3}" unless status3.success? # 오류 출력
|
2501
|
+
sleep(5) # 네트워크가 안정될 시간을 더 줍니다.
|
2483
2502
|
puts 'adb ok'
|
2484
2503
|
sleep(8)
|
2485
|
-
|
2504
|
+
|
2505
|
+
# IP 변경 확인을 위한 람다 함수
|
2486
2506
|
robot_ip = lambda do
|
2487
|
-
|
2488
|
-
|
2489
|
-
|
2490
|
-
|
2507
|
+
begin
|
2508
|
+
# IP 변경 확인
|
2509
|
+
http = HTTP.get('https://www.findip.kr/')
|
2510
|
+
noko = Nokogiri::HTML(http.to_s)
|
2511
|
+
|
2512
|
+
current_ip = noko.xpath('/html/body/header/h2').text.strip
|
2513
|
+
if current_ip != @my_ip
|
2514
|
+
@my_ip = current_ip
|
2491
2515
|
puts "IP 변경됨[ #{@my_ip} ]"
|
2492
|
-
|
2493
|
-
puts @my_ip
|
2494
|
-
puts '
|
2495
|
-
sleep(
|
2496
|
-
robot_ip[]
|
2516
|
+
else
|
2517
|
+
puts "현재 IP: #{@my_ip}"
|
2518
|
+
puts 'IP 변경이 감지되지 않았습니다. 다시 시도합니다...'
|
2519
|
+
sleep(5) # 여유롭게 대기 시간 증가
|
2520
|
+
robot_ip[] # 재시도
|
2521
|
+
end
|
2522
|
+
rescue HTTP::ConnectionError => e
|
2523
|
+
puts "네트워크 오류 발생: #{e.message}. 재시도 중..."
|
2524
|
+
sleep(5) # 재시도 간 여유 시간 추가
|
2525
|
+
retry # 재시도
|
2497
2526
|
end
|
2498
|
-
|
2499
|
-
|
2500
|
-
|
2527
|
+
end
|
2528
|
+
robot_ip[] # IP 확인 시작
|
2501
2529
|
else
|
2502
|
-
|
2530
|
+
puts "adb devices 명령어 실행 실패. stderr: #{stderr}"
|
2503
2531
|
end
|
2504
|
-
|
2532
|
+
end
|
2505
2533
|
|
2506
2534
|
|
2507
2535
|
check_success = 1
|
@@ -3451,9 +3479,19 @@ class Wordpress
|
|
3451
3479
|
option['검색허용'] = 'false'
|
3452
3480
|
end
|
3453
3481
|
|
3482
|
+
#if @data['포스트설정']['내용첫줄제목에입력'].checked?
|
3483
|
+
# title = content.split("\n")[0]
|
3484
|
+
#end
|
3454
3485
|
if @data['포스트설정']['내용첫줄제목에입력'].checked?
|
3455
|
-
|
3456
|
-
|
3486
|
+
# 콘텐츠를 줄 단위로 분리
|
3487
|
+
content_lines = content.split("\n")
|
3488
|
+
|
3489
|
+
# 첫 번째 줄이 <img src=로 시작하는지 확인하고, 시작하는 경우 두 번째 줄부터 확인
|
3490
|
+
title = content_lines.find { |line| !line.start_with?('<img src=') }
|
3491
|
+
|
3492
|
+
# 만약 첫 번째 줄부터 <img src=로 시작하는 경우, 두 번째 줄을 제목으로 설정
|
3493
|
+
title ||= content_lines[1] # 첫 번째 줄이 <img src=일 경우 두 번째 줄을 사용
|
3494
|
+
|
3457
3495
|
end
|
3458
3496
|
|
3459
3497
|
if @data['포스트설정']['제목을내용첫줄입력'].checked?
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: nblog_duo
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.99
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- zon
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2025-
|
11
|
+
date: 2025-03-07 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: File to Clipboard gem
|
14
14
|
email: mymin26@naver.com
|