nblog_zon 0.0.95 → 0.0.98
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_zon.rb +68 -29
- 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: 852a32fe84feca2e8fc59e3c5544e133098bbf383fc6af2e2a0612fe1507bb18
|
4
|
+
data.tar.gz: 2d7a15d682b54ff8d96fad853c4a7325bdde2cb6652b5748bc02b0314ea1b1a5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e45a844c001f279763ede02815cd2b12ed14ae42794226bb6f6244458ba363784cc39b459cba8858a2a30ab4862cd74df1e57bde9fc43d74cdc41807abb93d93
|
7
|
+
data.tar.gz: f68cb2b5965f434efa5938010382ca7d98ede78dbaf9196e8335dc3351e1bc10423c2be7d1908732d30bc9f8f6055ff5ca7c245f2e1f55f0f2bb66944caf6ac9
|
data/lib/nblog_zon.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') # 확장 프로그램 초기화 화면 방지
|
@@ -2389,7 +2407,7 @@ class Wordpress
|
|
2389
2407
|
puts 'Tethering IP change...'
|
2390
2408
|
|
2391
2409
|
stdout, stderr, status = Open3.capture3('./adb devices')
|
2392
|
-
|
2410
|
+
|
2393
2411
|
if status.success?
|
2394
2412
|
device_id = stdout.split("\n")[1].split("\t")[0]
|
2395
2413
|
puts device_id
|
@@ -2397,42 +2415,53 @@ class Wordpress
|
|
2397
2415
|
# ADB 서버 초기화
|
2398
2416
|
puts 'adb kill-server'
|
2399
2417
|
Open3.capture3('./adb kill-server')
|
2400
|
-
sleep(
|
2418
|
+
sleep(5) # ADB 서버가 안정될 시간을 충분히 주기
|
2401
2419
|
|
2402
2420
|
# 다시 ADB 서버 실행
|
2403
2421
|
puts 'adb start-server'
|
2404
2422
|
Open3.capture3('./adb start-server')
|
2405
|
-
sleep(
|
2423
|
+
sleep(5) # ADB 서버가 안정될 시간을 충분히 주기
|
2406
2424
|
|
2407
2425
|
# 데이터를 끄고 켜기
|
2408
2426
|
puts 'adb -s ' + device_id + ' shell svc data disable'
|
2409
|
-
stdout2, stderr2, status2 = Open3.capture3('./adb -s '+device_id+' shell svc data disable')
|
2410
|
-
|
2427
|
+
stdout2, stderr2, status2 = Open3.capture3('./adb -s ' + device_id + ' shell svc data disable')
|
2428
|
+
puts "stderr: #{stderr2}" unless status2.success? # 오류 출력
|
2429
|
+
sleep(5) # 네트워크가 안정될 시간을 더 줍니다.
|
2411
2430
|
puts 'adb -s ' + device_id + ' shell svc data enable'
|
2412
|
-
Open3.capture3('./adb -s '+device_id+' shell svc data enable')
|
2413
|
-
|
2431
|
+
stdout3, stderr3, status3 = Open3.capture3('./adb -s ' + device_id + ' shell svc data enable')
|
2432
|
+
puts "stderr: #{stderr3}" unless status3.success? # 오류 출력
|
2433
|
+
sleep(5) # 네트워크가 안정될 시간을 더 줍니다.
|
2414
2434
|
puts 'adb ok'
|
2415
2435
|
sleep(8)
|
2416
|
-
|
2436
|
+
|
2437
|
+
# IP 변경 확인을 위한 람다 함수
|
2417
2438
|
robot_ip = lambda do
|
2418
|
-
|
2419
|
-
|
2420
|
-
|
2421
|
-
|
2439
|
+
begin
|
2440
|
+
# IP 변경 확인
|
2441
|
+
http = HTTP.get('https://www.findip.kr/')
|
2442
|
+
noko = Nokogiri::HTML(http.to_s)
|
2443
|
+
|
2444
|
+
current_ip = noko.xpath('/html/body/header/h2').text.strip
|
2445
|
+
if current_ip != @my_ip
|
2446
|
+
@my_ip = current_ip
|
2422
2447
|
puts "IP 변경됨[ #{@my_ip} ]"
|
2423
|
-
|
2424
|
-
puts @my_ip
|
2425
|
-
puts '
|
2426
|
-
sleep(
|
2427
|
-
robot_ip[]
|
2448
|
+
else
|
2449
|
+
puts "현재 IP: #{@my_ip}"
|
2450
|
+
puts 'IP 변경이 감지되지 않았습니다. 다시 시도합니다...'
|
2451
|
+
sleep(5) # 여유롭게 대기 시간 증가
|
2452
|
+
robot_ip[] # 재시도
|
2453
|
+
end
|
2454
|
+
rescue HTTP::ConnectionError => e
|
2455
|
+
puts "네트워크 오류 발생: #{e.message}. 재시도 중..."
|
2456
|
+
sleep(5) # 재시도 간 여유 시간 추가
|
2457
|
+
retry # 재시도
|
2428
2458
|
end
|
2429
|
-
|
2430
|
-
|
2431
|
-
|
2459
|
+
end
|
2460
|
+
robot_ip[] # IP 확인 시작
|
2432
2461
|
else
|
2433
|
-
|
2462
|
+
puts "adb devices 명령어 실행 실패. stderr: #{stderr}"
|
2434
2463
|
end
|
2435
|
-
|
2464
|
+
end
|
2436
2465
|
|
2437
2466
|
|
2438
2467
|
check_success = 1
|
@@ -3382,9 +3411,19 @@ class Wordpress
|
|
3382
3411
|
option['검색허용'] = 'false'
|
3383
3412
|
end
|
3384
3413
|
|
3414
|
+
#if @data['포스트설정']['내용첫줄제목에입력'].checked?
|
3415
|
+
# title = content.split("\n")[0]
|
3416
|
+
#end
|
3385
3417
|
if @data['포스트설정']['내용첫줄제목에입력'].checked?
|
3386
|
-
|
3387
|
-
|
3418
|
+
# 콘텐츠를 줄 단위로 분리
|
3419
|
+
content_lines = content.split("\n")
|
3420
|
+
|
3421
|
+
# 첫 번째 줄이 <img src=로 시작하는지 확인하고, 시작하는 경우 두 번째 줄부터 확인
|
3422
|
+
title = content_lines.find { |line| !line.start_with?('<img src=') }
|
3423
|
+
|
3424
|
+
# 만약 첫 번째 줄부터 <img src=로 시작하는 경우, 두 번째 줄을 제목으로 설정
|
3425
|
+
title ||= content_lines[1] # 첫 번째 줄이 <img src=일 경우 두 번째 줄을 사용
|
3426
|
+
|
3388
3427
|
end
|
3389
3428
|
|
3390
3429
|
if @data['포스트설정']['제목을내용첫줄입력'].checked?
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: nblog_zon
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.98
|
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: rnjstnswp123@naver.com
|