nblog_duo 111.116.779 → 111.117.789
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 +103 -11
- 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: 8aacf440b1da5f2bf2010e1e6a77d25bd64bd842e5fe05fc5e1106713279956f
|
4
|
+
data.tar.gz: 465893a34609ca2146eeaea1ccb6d7d2b360775ad8ee29da454aa4b390ebde15
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 427d5445e0c14c2e83981478823477e186a0c333dac46b25ea4db0cc5bad7703042d37c4bb85cd86243fa6f32db59df1f1041dcb251bae1f7f97aba6a266dcb1
|
7
|
+
data.tar.gz: 88bea7627f4c17ca3a2526c5f85daa3668b2513e7f7674d4bbfba90738813ea63afb1fcb6695dcee1c4ee583eca11596dead6636683e5be9de405e20a9ad8fd4
|
data/lib/nblog_duo.rb
CHANGED
@@ -17,6 +17,8 @@ require 'cgi'
|
|
17
17
|
require 'digest'
|
18
18
|
require 'auto_click'
|
19
19
|
require 'rainbow/refinement'
|
20
|
+
require 'httpclient'
|
21
|
+
require 'win32ole'
|
20
22
|
include AutoClickMethods
|
21
23
|
using Rainbow
|
22
24
|
include Glimmer
|
@@ -241,8 +243,38 @@ end
|
|
241
243
|
class Naver
|
242
244
|
def initialize
|
243
245
|
@seed = 1
|
246
|
+
kill_selenium_chrome #기존 창 모두 닫는 명령
|
247
|
+
sleep(1)
|
244
248
|
end
|
245
249
|
|
250
|
+
def kill_selenium_chrome #기존 창 모두 닫는 코드
|
251
|
+
wmi = WIN32OLE.connect("winmgmts://")
|
252
|
+
chrome_procs = wmi.ExecQuery("SELECT * FROM Win32_Process WHERE Name = 'chrome.exe'")
|
253
|
+
|
254
|
+
chrome_procs.each do |proc|
|
255
|
+
cmd = proc.CommandLine
|
256
|
+
if cmd && cmd.include?("user-data-dir=C:/naver_cookie")
|
257
|
+
puts "→ 크롬 창 초기화: PID #{proc.ProcessId}"
|
258
|
+
begin
|
259
|
+
proc.Terminate
|
260
|
+
rescue
|
261
|
+
#puts "→ 이미 종료된 프로세스: #{proc.ProcessId}"
|
262
|
+
end
|
263
|
+
end
|
264
|
+
end
|
265
|
+
|
266
|
+
# chromedriver도 같이 종료
|
267
|
+
chromedrivers = wmi.ExecQuery("SELECT * FROM Win32_Process WHERE Name = 'chromedriver.exe'")
|
268
|
+
chromedrivers.each do |proc|
|
269
|
+
puts "→ 크롬 창 초기화: PID #{proc.ProcessId}"
|
270
|
+
begin
|
271
|
+
proc.Terminate
|
272
|
+
rescue
|
273
|
+
#puts "→ 이미 종료된 chromedriver: #{proc.ProcessId}"
|
274
|
+
end
|
275
|
+
end
|
276
|
+
end
|
277
|
+
|
246
278
|
|
247
279
|
def chrome_setup(user_id, proxy)
|
248
280
|
naver_cookie_dir = "C:/naver_cookie"
|
@@ -2222,21 +2254,81 @@ class Wordpress
|
|
2222
2254
|
return @data2
|
2223
2255
|
end
|
2224
2256
|
|
2225
|
-
|
2257
|
+
def auto_image(keyword = nil)
|
2258
|
+
keyword ||= @keyword
|
2259
|
+
puts "키워드: #{keyword}"
|
2260
|
+
|
2261
|
+
client = HTTPClient.new
|
2262
|
+
client.default_header = {
|
2263
|
+
'User-Agent' => 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 '\
|
2264
|
+
'(KHTML, like Gecko) Chrome/90.0.4430.93 Safari/537.36',
|
2265
|
+
'Accept' => 'application/json, text/javascript, */*; q=0.01',
|
2266
|
+
'Accept-Language' => 'en-US,en;q=0.9',
|
2267
|
+
'Referer' => "https://unsplash.com/s/photos/#{URI.encode_www_form_component(keyword)}",
|
2268
|
+
'X-Requested-With' => 'XMLHttpRequest'
|
2269
|
+
}
|
2270
|
+
|
2271
|
+
retry_count = 0
|
2272
|
+
max_retries = 10
|
2273
|
+
results = []
|
2274
|
+
|
2226
2275
|
begin
|
2227
2276
|
page = rand(1..15)
|
2228
|
-
|
2229
|
-
|
2230
|
-
|
2231
|
-
|
2232
|
-
|
2277
|
+
url = "https://unsplash.com/napi/search/photos?query=#{URI.encode_www_form_component(keyword)}&page=#{page}&per_page=20"
|
2278
|
+
puts "Request URL: #{url}"
|
2279
|
+
res = client.get(url)
|
2280
|
+
|
2281
|
+
unless res.status == 200
|
2282
|
+
puts "HTTP Error: #{res.status}"
|
2283
|
+
raise "HTTP Error"
|
2233
2284
|
end
|
2234
|
-
|
2235
|
-
|
2236
|
-
|
2237
|
-
|
2238
|
-
|
2285
|
+
|
2286
|
+
json = JSON.parse(res.body)
|
2287
|
+
results = json['results']
|
2288
|
+
mm = []
|
2289
|
+
|
2290
|
+
results.each do |photo|
|
2291
|
+
full_url = photo.dig('urls', 'full').to_s
|
2292
|
+
regular_url = photo.dig('urls', 'regular').to_s
|
2293
|
+
|
2294
|
+
if full_url.start_with?("https://images.unsplash.com/photo-") &&
|
2295
|
+
regular_url.include?("1080")
|
2296
|
+
mm << full_url
|
2297
|
+
end
|
2298
|
+
end
|
2299
|
+
|
2300
|
+
if mm.empty?
|
2301
|
+
raise "No matching image"
|
2302
|
+
end
|
2303
|
+
|
2304
|
+
selected_url = mm.sample
|
2305
|
+
Down.download(selected_url, destination: "./image/memory.png")
|
2306
|
+
puts "이미지 다운로드 완료: #{selected_url}"
|
2307
|
+
|
2308
|
+
rescue => e
|
2309
|
+
retry_count += 1
|
2310
|
+
puts "auto_image 에러: #{e.message} (재시도 #{retry_count}/#{max_retries})"
|
2311
|
+
sleep(3)
|
2312
|
+
if retry_count < max_retries
|
2239
2313
|
retry
|
2314
|
+
else
|
2315
|
+
puts "최대 재시도 초과. 조건 무시하고 랜덤 이미지 다운로드 시도..."
|
2316
|
+
|
2317
|
+
if results && !results.empty?
|
2318
|
+
random_photo = results.sample
|
2319
|
+
fallback_url = random_photo.dig('urls', 'full')
|
2320
|
+
if fallback_url
|
2321
|
+
Down.download(fallback_url, destination: "./image/memory.png")
|
2322
|
+
puts "랜덤 이미지 다운로드 완료: #{fallback_url}"
|
2323
|
+
else
|
2324
|
+
puts "랜덤 이미지 URL을 찾을 수 없습니다. 단색 배경 이미지 생성합니다."
|
2325
|
+
color_image
|
2326
|
+
end
|
2327
|
+
else
|
2328
|
+
puts "이미지 결과가 없어 다운로드할 수 없습니다. 단색 배경 이미지 생성합니다."
|
2329
|
+
color_image
|
2330
|
+
end
|
2331
|
+
end
|
2240
2332
|
end
|
2241
2333
|
end
|
2242
2334
|
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: nblog_duo
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 111.
|
4
|
+
version: 111.117.789
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- zon
|
8
8
|
bindir: bin
|
9
9
|
cert_chain: []
|
10
|
-
date: 2025-05-
|
10
|
+
date: 2025-05-29 00:00:00.000000000 Z
|
11
11
|
dependencies: []
|
12
12
|
description: File to Clipboard gem
|
13
13
|
email: mymin26@naver.com
|