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.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/nblog_duo.rb +68 -30
  3. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f88597202922bff68a8c8fd9f4e0691af3c1f62284f2b780a2923a12d6d75eaa
4
- data.tar.gz: 37748fb4d77fb92f93038d3dfcb885d89e0503017fddba7b400182140ebd1e8c
3
+ metadata.gz: ec06f20ed3980c7c49c5c178e0c21082ab6e7df7bde986b58a8dc177480c4664
4
+ data.tar.gz: 0caa65264dbac225a9962e39e3002751d0b3bca3fed3e49f36de8fcd0dfe10d8
5
5
  SHA512:
6
- metadata.gz: 05c6f3cf39bda7d39b293b78a001288214db0819072866148060cbe243afd50cb0f062edbdc109da974f6cc172b8153bde416bdb2c542eb74acc2b975d955282
7
- data.tar.gz: 3871676d62236637acdddc1000e10710a05c51b85f86a7a6a71bb9677e5f2095b6349fa9b9cccb4e50302c4776d060b1e1ce5f93bf25316d25f37a8cfece9aa0
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
- # require 'webdrivers'
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(3)
2486
+ sleep(5) # ADB 서버가 안정될 시간을 충분히 주기
2470
2487
 
2471
2488
  # 다시 ADB 서버 실행
2472
2489
  puts 'adb start-server'
2473
2490
  Open3.capture3('./adb start-server')
2474
- sleep(3)
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
- sleep(3)
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
- sleep(3)
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
- http = HTTP.get('https://www.findip.kr/')
2488
- noko = Nokogiri::HTML(http.to_s)
2489
- if noko.xpath('/html/body/header/h2').text != @my_ip
2490
- @my_ip = noko.xpath('/html/body/header/h2').text
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
- else
2493
- puts @my_ip
2494
- puts '제시도...'
2495
- sleep(3)
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
- end
2499
- robot_ip[]
2500
-
2527
+ end
2528
+ robot_ip[] # IP 확인 시작
2501
2529
  else
2502
- puts 'adb error pass'
2530
+ puts "adb devices 명령어 실행 실패. stderr: #{stderr}"
2503
2531
  end
2504
- end
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
- title = content.split("\n")[0]
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.95
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-02-17 00:00:00.000000000 Z
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