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.
- checksums.yaml +4 -4
- data/lib/cafe_buy.rb +71 -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: 73f80a5444052e2403fccd3787d6d0765be26571c1ebbf821b9810b0e4c4a0ee
|
4
|
+
data.tar.gz: 15beda6c2256ba2d174b0c66af8392f982183556fb570a2c93f74dd8e6783295
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
-
|
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(
|
2569
|
+
sleep(5) # ADB 서버가 안정될 시간을 충분히 주기
|
2549
2570
|
|
2550
2571
|
# 다시 ADB 서버 실행
|
2551
2572
|
puts 'adb start-server'
|
2552
2573
|
Open3.capture3('./adb start-server')
|
2553
|
-
sleep(
|
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
|
-
|
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
|
-
|
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
|
-
|
2567
|
-
|
2568
|
-
|
2569
|
-
|
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
|
-
|
2572
|
-
puts @my_ip
|
2573
|
-
puts '
|
2574
|
-
sleep(
|
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
|
-
|
2578
|
-
|
2579
|
-
|
2610
|
+
end
|
2611
|
+
robot_ip[] # IP 확인 시작
|
2580
2612
|
else
|
2581
|
-
|
2613
|
+
puts "adb devices 명령어 실행 실패. stderr: #{stderr}"
|
2582
2614
|
end
|
2583
|
-
|
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
|
-
|
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.
|
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-
|
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
|