- Standardized quotation marks in Gemfile and Ruby files - Improved consistency for Sidekiq and Sidekiq Scheduler - Removed unnecessary blank line in GenerateWeatherArtWorker class These changes ensure a consistent coding style across the project, making it easier to read and maintain. Adjustments to the Gemfile update the formatting without altering the functionality.
44 lines
1.1 KiB
Ruby
44 lines
1.1 KiB
Ruby
class GenerateWeatherArtWorker
|
|
def perform(*args)
|
|
city = args[0]
|
|
return if city.last_weather_fetch&.today?
|
|
|
|
weather_service = WeatherService.new
|
|
ai_service = AiService.new
|
|
|
|
# 获取天气数据
|
|
weather_data = weather_service.get_weather(city.latitude, city.longitude)
|
|
return unless weather_data
|
|
|
|
# 生成提示词
|
|
prompt = ai_service.generate_prompt(city, weather_data)
|
|
return unless prompt
|
|
|
|
# 生成图像
|
|
image_url = ai_service.generate_image(prompt)
|
|
return unless image_url
|
|
|
|
# 创建天气艺术记录
|
|
weather_art = city.weather_arts.create!(
|
|
weather_date: Date.today,
|
|
**weather_data,
|
|
prompt: prompt
|
|
)
|
|
|
|
# 下载并附加图像
|
|
tempfile = Down.download(image_url)
|
|
weather_art.image.attach(
|
|
io: tempfile,
|
|
filename: "#{city.country.name}-#{city.name.parameterize}-#{Time.current.strftime('%Y%m%d-%H%M%S')}.png"
|
|
)
|
|
|
|
# 更新城市状态
|
|
city.update!(
|
|
last_weather_fetch: Time.current,
|
|
last_image_generation: Time.current
|
|
)
|
|
rescue => e
|
|
Rails.logger.error "Error generating weather art for #{city.name}: #{e.message}"
|
|
end
|
|
end
|