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.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/nblog_duo.rb +103 -11
  3. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c39351cbbe4c6f06860848aa34aa04936985acbb6ebefaa86a636cd93247fd96
4
- data.tar.gz: 7833e7504e0377533cbe7584ecb1946835a52288a8acf6fdedd1562051519ebd
3
+ metadata.gz: 8aacf440b1da5f2bf2010e1e6a77d25bd64bd842e5fe05fc5e1106713279956f
4
+ data.tar.gz: 465893a34609ca2146eeaea1ccb6d7d2b360775ad8ee29da454aa4b390ebde15
5
5
  SHA512:
6
- metadata.gz: 71aa2d85bd8ea93eb0c2ceeb070ac61fd608dd9f80fc656227b7795d47cee7abcfd06aac2294dae107c4f22b1d7c850a948cca6c7245fe8e8c9422b53443b1a9
7
- data.tar.gz: c767fb07485c09c9400fff40957452adf842b88b3a147a6287b0bd5d8f5f27139799770d3ea3b6a986f13aa6ffe8dc5b94d345a7566bd7bed2facec93372a555
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
- def auto_image
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
- http = HTTP.get('https://unsplash.com/napi/photos?per_page=12&page='+page.to_s)
2229
- json = JSON.parse(http.to_s)
2230
- mm = Array.new
2231
- json.each do |i|
2232
- mm << i['urls']['full']
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
- url = mm.sample
2235
- Down.download(url, destination: "./image/memory.png")
2236
- rescue
2237
- puts 'auto_image 일시적 error 5초후 제시도...'
2238
- sleep(5)
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.116.779
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-23 00:00:00.000000000 Z
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