cafe_buy 0.0.59 → 0.0.72

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/cafe_buy.rb +71 -29
  3. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 16210ca19efe0143d45838d94b3bd87a3d36404c75c8bdd1085a707ea5dfd532
4
- data.tar.gz: 06e45d7f45e7b68e00522de52ca390cae54607852f0c428f9b984cc0c6a45be1
3
+ metadata.gz: 73f80a5444052e2403fccd3787d6d0765be26571c1ebbf821b9810b0e4c4a0ee
4
+ data.tar.gz: 15beda6c2256ba2d174b0c66af8392f982183556fb570a2c93f74dd8e6783295
5
5
  SHA512:
6
- metadata.gz: c258f79cbcf47dfadd81dbac6fe22eb8416996626b4e75ee1b167f0322792d0bdb9f8bd87150cb04a140668d517d4394a1954420c17dd9297e61c2672913e4df
7
- data.tar.gz: '02029fcd4e54fa67d1882e3a930f80f0b0df7cf9a64be86a99f9d17cb3e996b0286a32cb89bf3fe44bdcffa3cb9b61cdcc8a59467d8127e13e221a22d805692d'
6
+ metadata.gz: 30dad1bf3d68e182f973af712e1133392d3fb03c020a9d8dbad064f120851cf21ddd14257f43ea8a02e58315e98ebbd1213061a6094fbf1c5a436fa8fd11d1ac
7
+ data.tar.gz: 828ad4ddaf3e1adc5c96f1fa2b7e1012969baef54cb0ff6d1411a2ad06dd2589f96ecd4a300233aabf10a6f9396387f7348be703c24018d0cf4f3fdcc7ae3627
data/lib/cafe_buy.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,28 @@ end
241
241
  class Naver
242
242
  def initialize
243
243
  @seed = 1
244
+
245
+ begin
246
+ # webdrivers가 사용자의 Chrome 버전에 맞는 chromedriver 다운로드 시도
247
+
248
+ # Webdrivers가 드라이버를 다운로드할 경로를 설정
249
+ Webdrivers.cache_time = 86_400 # 하루로 설정 (기본값: 86_400초)
250
+ Webdrivers.install_dir = "./" # 크롬드라이버를 수동으로 설치할 경로를 설정
251
+ # 크롬드라이버 자동 업데이트 시도
252
+ Webdrivers::Chromedriver.update
253
+ puts "chromedriver 자동 다운로드 성공"
254
+ rescue => e
255
+ puts "chromedriver 자동 다운로드 실패: #{e.message}"
256
+ puts "폴더내 크롬드라이버를 사용합니다."
257
+ puts "크롬드라이버가 오래된 경우 오류 발생될 수 있으며, 만일 오류 발생시 아래 지침을 따라주세요."
258
+ puts "1.크롬 업데이트 2.프로그램 폴더 내부에 ★tip★-시작시-크롬창이....파일을 열어 드라이버를 교체하세요."
259
+ chromedriver_path = './chromedriver.exe' # 수동 경로를 인스턴스 변수로 설정
260
+ Selenium::WebDriver::Chrome::Service.driver_path = chromedriver_path
261
+ end
262
+
244
263
  end
264
+
265
+
245
266
  def chrome_setup(user_id, proxy)
246
267
  naver_cookie_dir = "C:/naver_cookie"
247
268
  FileUtils.mkdir_p(naver_cookie_dir) unless File.exist?(naver_cookie_dir)
@@ -260,10 +281,9 @@ class Naver
260
281
  FileUtils.mkdir_p(naver_cookie_dir) unless File.exist?(naver_cookie_dir)
261
282
  if proxy == ''
262
283
  begin
263
- Selenium::WebDriver::Chrome::Service.driver_path = './chromedriver.exe'
264
284
  options = Selenium::WebDriver::Chrome::Options.new
265
285
  options.add_argument('--no-first-run') # 자동 실행 시 나타나는 "첫 실행" 화면 방지
266
- options.add_argument('--disable-extensions') # 확장 프로그램 초기화 화면 방지
286
+ #options.add_argument('--disable-extensions') # 확장 프로그램 초기화 화면 방지
267
287
  options.add_argument('--disable-sync') # Chrome 동기화 비활성화
268
288
  options.add_argument('--disable-popup-blocking') # 팝업 방지 (로그인 창이 뜨는 경우 대비)
269
289
  options.add_argument('--no-default-browser-check')
@@ -288,7 +308,7 @@ class Naver
288
308
  end
289
309
  else
290
310
  begin
291
- Selenium::WebDriver::Chrome::Service.driver_path = './chromedriver.exe'
311
+ #Selenium::WebDriver::Chrome::Service.driver_path = './chromedriver.exe'
292
312
  options = Selenium::WebDriver::Chrome::Options.new
293
313
  options.add_argument('--no-first-run') # 자동 실행 시 나타나는 "첫 실행" 화면 방지
294
314
  options.add_argument('--disable-extensions') # 확장 프로그램 초기화 화면 방지
@@ -315,7 +335,7 @@ class Naver
315
335
  puts e
316
336
  puts 'proxy error...'
317
337
  begin
318
- Selenium::WebDriver::Chrome::Service.driver_path = './chromedriver.exe'
338
+ #Selenium::WebDriver::Chrome::Service.driver_path = './chromedriver.exe'
319
339
  options = Selenium::WebDriver::Chrome::Options.new
320
340
  options.add_argument('--no-first-run') # 자동 실행 시 나타나는 "첫 실행" 화면 방지
321
341
  options.add_argument('--disable-extensions') # 확장 프로그램 초기화 화면 방지
@@ -348,6 +368,7 @@ class Naver
348
368
 
349
369
 
350
370
 
371
+
351
372
  def login(user_id, user_pw, proxy)
352
373
  @user_id = user_id
353
374
  @user_id11 = user_id
@@ -2537,7 +2558,7 @@ class Wordpress
2537
2558
  puts 'Tethering IP change...'
2538
2559
 
2539
2560
  stdout, stderr, status = Open3.capture3('./adb devices')
2540
-
2561
+
2541
2562
  if status.success?
2542
2563
  device_id = stdout.split("\n")[1].split("\t")[0]
2543
2564
  puts device_id
@@ -2545,42 +2566,53 @@ class Wordpress
2545
2566
  # ADB 서버 초기화
2546
2567
  puts 'adb kill-server'
2547
2568
  Open3.capture3('./adb kill-server')
2548
- sleep(3)
2569
+ sleep(5) # ADB 서버가 안정될 시간을 충분히 주기
2549
2570
 
2550
2571
  # 다시 ADB 서버 실행
2551
2572
  puts 'adb start-server'
2552
2573
  Open3.capture3('./adb start-server')
2553
- sleep(3)
2574
+ sleep(5) # ADB 서버가 안정될 시간을 충분히 주기
2554
2575
 
2555
2576
  # 데이터를 끄고 켜기
2556
2577
  puts 'adb -s ' + device_id + ' shell svc data disable'
2557
- stdout2, stderr2, status2 = Open3.capture3('./adb -s '+device_id+' shell svc data disable')
2558
- sleep(3)
2578
+ stdout2, stderr2, status2 = Open3.capture3('./adb -s ' + device_id + ' shell svc data disable')
2579
+ puts "stderr: #{stderr2}" unless status2.success? # 오류 출력
2580
+ sleep(5) # 네트워크가 안정될 시간을 더 줍니다.
2559
2581
  puts 'adb -s ' + device_id + ' shell svc data enable'
2560
- Open3.capture3('./adb -s '+device_id+' shell svc data enable')
2561
- sleep(3)
2582
+ stdout3, stderr3, status3 = Open3.capture3('./adb -s ' + device_id + ' shell svc data enable')
2583
+ puts "stderr: #{stderr3}" unless status3.success? # 오류 출력
2584
+ sleep(5) # 네트워크가 안정될 시간을 더 줍니다.
2562
2585
  puts 'adb ok'
2563
2586
  sleep(8)
2564
-
2587
+
2588
+ # IP 변경 확인을 위한 람다 함수
2565
2589
  robot_ip = lambda do
2566
- http = HTTP.get('https://www.findip.kr/')
2567
- noko = Nokogiri::HTML(http.to_s)
2568
- if noko.xpath('/html/body/header/h2').text != @my_ip
2569
- @my_ip = noko.xpath('/html/body/header/h2').text
2590
+ begin
2591
+ # IP 변경 확인
2592
+ http = HTTP.get('https://www.findip.kr/')
2593
+ noko = Nokogiri::HTML(http.to_s)
2594
+
2595
+ current_ip = noko.xpath('/html/body/header/h2').text.strip
2596
+ if current_ip != @my_ip
2597
+ @my_ip = current_ip
2570
2598
  puts "IP 변경됨[ #{@my_ip} ]"
2571
- else
2572
- puts @my_ip
2573
- puts '제시도...'
2574
- sleep(3)
2575
- robot_ip[]
2599
+ else
2600
+ puts "현재 IP: #{@my_ip}"
2601
+ puts 'IP 변경이 감지되지 않았습니다. 다시 시도합니다...'
2602
+ sleep(5) # 여유롭게 대기 시간 증가
2603
+ robot_ip[] # 재시도
2604
+ end
2605
+ rescue HTTP::ConnectionError => e
2606
+ puts "네트워크 오류 발생: #{e.message}. 재시도 중..."
2607
+ sleep(5) # 재시도 간 여유 시간 추가
2608
+ retry # 재시도
2576
2609
  end
2577
- end
2578
- robot_ip[]
2579
-
2610
+ end
2611
+ robot_ip[] # IP 확인 시작
2580
2612
  else
2581
- puts 'adb error pass'
2613
+ puts "adb devices 명령어 실행 실패. stderr: #{stderr}"
2582
2614
  end
2583
- end
2615
+ end
2584
2616
 
2585
2617
  check_success = 1
2586
2618
  @data['table'][index][-1] = 0
@@ -3513,9 +3545,19 @@ class Wordpress
3513
3545
  end
3514
3546
 
3515
3547
 
3548
+ #if @data['포스트설정']['내용첫줄제목에입력'].checked?
3549
+ # title = content.split("\n")[0]
3550
+ #end
3516
3551
  if @data['포스트설정']['내용첫줄제목에입력'].checked?
3517
- title = content.split("\n")[0]
3518
-
3552
+ # 콘텐츠를 단위로 분리
3553
+ content_lines = content.split("\n")
3554
+
3555
+ # 첫 번째 줄이 <img src=로 시작하는지 확인하고, 시작하는 경우 두 번째 줄부터 확인
3556
+ title = content_lines.find { |line| !line.start_with?('<img src=') }
3557
+
3558
+ # 만약 첫 번째 줄부터 <img src=로 시작하는 경우, 두 번째 줄을 제목으로 설정
3559
+ title ||= content_lines[1] # 첫 번째 줄이 <img src=일 경우 두 번째 줄을 사용
3560
+
3519
3561
  end
3520
3562
 
3521
3563
  if @data['포스트설정']['제목을내용첫줄입력'].checked?
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cafe_buy
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.59
4
+ version: 0.0.72
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