tiupd 0.0.3 → 0.0.6

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/tiupd.rb +103 -12
  3. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a41726f93df2db3b90b5d4f502744dfc8f36581b00b094dd2225c86b16bd760b
4
- data.tar.gz: 8df09a7a38bac32622624e707d9934eaa87dea1391e73f564aa61b7f9cda5661
3
+ metadata.gz: 942074dd8b514252a7655879ad002c846169f2756f5790a36b8a45938d61e558
4
+ data.tar.gz: c4441dfe4cfd351a4405e9004ee5fa929b2154bb922760b8e2e40f0050a8b992
5
5
  SHA512:
6
- metadata.gz: 7cdacbf16ec6d55f8cf1ebf6fcad6e23bb5c28165fb6eefd318b19cdfd681417537e299b32123f4e1ae5fc3145307214bd191e6465c3e58c7ca2dd9a812a2fc1
7
- data.tar.gz: 6ae1ee97f0f4d27bef1bdb5261b115f2db3f7a0bb236128539a78f52eb310ff5f361ef16317ed56aba0a50135c4e5a0681c0f180b6675054b9f411a895c47ae4
6
+ metadata.gz: b89c1b6c789145e756e2e87bcf66d169012da8851bdf68c8030dbfb17f260903b6785b2fc7e74129cf941d0f23496d5891511aafec89680f89a8b8550c132b1d
7
+ data.tar.gz: 94f7b4147ac1bf0918904710670c47916c9a40539dd7926fdc8ac0c37499e2d49453ebc7967ec82ffe61cd35b2fb8a4f34229ca3c26afc2de24241d76205cf62
data/lib/tiupd.rb CHANGED
@@ -14,7 +14,8 @@ require 'crack'
14
14
  require 'uri'
15
15
  require 'auto_click'
16
16
  require 'rainbow/refinement'
17
- require 'win32ole'
17
+ require 'win32ole'
18
+ require 'httpclient'
18
19
  include AutoClickMethods
19
20
  using Rainbow
20
21
  include Glimmer
@@ -24,7 +25,37 @@ class Naver
24
25
  def initialize(data)
25
26
  @data = data # Wordpress에서 전달된 data 저장
26
27
  @seed = 1
28
+ kill_selenium_chrome #기존 창 모두 닫는 명령
29
+ sleep(1)
27
30
  end
31
+
32
+ def kill_selenium_chrome #기존 창 모두 닫는 코드
33
+ wmi = WIN32OLE.connect("winmgmts://")
34
+ chrome_procs = wmi.ExecQuery("SELECT * FROM Win32_Process WHERE Name = 'chrome.exe'")
35
+
36
+ chrome_procs.each do |proc|
37
+ cmd = proc.CommandLine
38
+ if cmd && cmd.include?("user-data-dir=C:/tiktok_cookie")
39
+ puts "→ 크롬 창 초기화: PID #{proc.ProcessId}"
40
+ begin
41
+ proc.Terminate
42
+ rescue
43
+ #puts "→ 이미 종료된 프로세스: #{proc.ProcessId}"
44
+ end
45
+ end
46
+ end
47
+
48
+ # chromedriver도 같이 종료
49
+ chromedrivers = wmi.ExecQuery("SELECT * FROM Win32_Process WHERE Name = 'chromedriver.exe'")
50
+ chromedrivers.each do |proc|
51
+ puts "→ 크롬 창 초기화: PID #{proc.ProcessId}"
52
+ begin
53
+ proc.Terminate
54
+ rescue
55
+ #puts "→ 이미 종료된 chromedriver: #{proc.ProcessId}"
56
+ end
57
+ end
58
+ end
28
59
 
29
60
 
30
61
  def chrome_setup(user_id, proxy)
@@ -948,21 +979,81 @@ class Wordpress
948
979
 
949
980
 
950
981
 
951
- def auto_image
982
+ def auto_image(keyword = nil)
983
+ keyword ||= @keyword
984
+ puts "키워드: #{keyword}"
985
+
986
+ client = HTTPClient.new
987
+ client.default_header = {
988
+ 'User-Agent' => 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 '\
989
+ '(KHTML, like Gecko) Chrome/90.0.4430.93 Safari/537.36',
990
+ 'Accept' => 'application/json, text/javascript, */*; q=0.01',
991
+ 'Accept-Language' => 'en-US,en;q=0.9',
992
+ 'Referer' => "https://unsplash.com/s/photos/#{URI.encode_www_form_component(keyword)}",
993
+ 'X-Requested-With' => 'XMLHttpRequest'
994
+ }
995
+
996
+ retry_count = 0
997
+ max_retries = 10
998
+ results = []
999
+
952
1000
  begin
953
1001
  page = rand(1..15)
954
- http = HTTP.get('https://unsplash.com/napi/photos?per_page=12&page='+page.to_s)
955
- json = JSON.parse(http.to_s)
956
- mm = Array.new
957
- json.each do |i|
958
- mm << i['urls']['full']
1002
+ url = "https://unsplash.com/napi/search/photos?query=#{URI.encode_www_form_component(keyword)}&page=#{page}&per_page=20"
1003
+ puts "Request URL: #{url}"
1004
+ res = client.get(url)
1005
+
1006
+ unless res.status == 200
1007
+ puts "HTTP Error: #{res.status}"
1008
+ raise "HTTP Error"
959
1009
  end
960
- url = mm.sample
961
- Down.download(url, destination: "./image/memory.png")
962
- rescue
963
- puts 'auto_image 일시적 error 5초후 제시도...'
964
- sleep(5)
1010
+
1011
+ json = JSON.parse(res.body)
1012
+ results = json['results']
1013
+ mm = []
1014
+
1015
+ results.each do |photo|
1016
+ full_url = photo.dig('urls', 'full').to_s
1017
+ regular_url = photo.dig('urls', 'regular').to_s
1018
+
1019
+ if full_url.start_with?("https://images.unsplash.com/photo-") &&
1020
+ regular_url.include?("1080")
1021
+ mm << full_url
1022
+ end
1023
+ end
1024
+
1025
+ if mm.empty?
1026
+ raise "No matching image"
1027
+ end
1028
+
1029
+ selected_url = mm.sample
1030
+ Down.download(selected_url, destination: "./image/memory.png")
1031
+ puts "이미지 다운로드 완료: #{selected_url}"
1032
+
1033
+ rescue => e
1034
+ retry_count += 1
1035
+ puts "auto_image 에러: #{e.message} (재시도 #{retry_count}/#{max_retries})"
1036
+ sleep(3)
1037
+ if retry_count < max_retries
965
1038
  retry
1039
+ else
1040
+ puts "최대 재시도 초과. 조건 무시하고 랜덤 이미지 다운로드 시도..."
1041
+
1042
+ if results && !results.empty?
1043
+ random_photo = results.sample
1044
+ fallback_url = random_photo.dig('urls', 'full')
1045
+ if fallback_url
1046
+ Down.download(fallback_url, destination: "./image/memory.png")
1047
+ puts "랜덤 이미지 다운로드 완료: #{fallback_url}"
1048
+ else
1049
+ puts "랜덤 이미지 URL을 찾을 수 없습니다. 단색 배경 이미지 생성합니다."
1050
+ color_image
1051
+ end
1052
+ else
1053
+ puts "이미지 결과가 없어 다운로드할 수 없습니다. 단색 배경 이미지 생성합니다."
1054
+ color_image
1055
+ end
1056
+ end
966
1057
  end
967
1058
  end
968
1059
 
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tiupd
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - zon
8
8
  bindir: bin
9
9
  cert_chain: []
10
- date: 2025-05-01 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