mirror of
https://github.com/Freika/dawarich.git
synced 2026-01-10 01:01:39 -05:00
60 lines
1.7 KiB
Ruby
60 lines
1.7 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
module TripsHelper
|
|
def immich_search_url(base_url, start_date, end_date)
|
|
query = {
|
|
takenAfter: "#{start_date.to_date}T00:00:00.000Z",
|
|
takenBefore: "#{end_date.to_date}T23:59:59.999Z"
|
|
}
|
|
|
|
encoded_query = URI.encode_www_form_component(query.to_json)
|
|
"#{base_url}/search?query=#{encoded_query}"
|
|
end
|
|
|
|
def photoprism_search_url(base_url, start_date, _end_date)
|
|
"#{base_url}/library/browse?view=cards&year=#{start_date.year}&month=#{start_date.month}&order=newest&public=true&quality=3"
|
|
end
|
|
|
|
def photo_search_url(source, settings, start_date, end_date)
|
|
case source
|
|
when 'immich'
|
|
immich_search_url(settings['immich_url'], start_date, end_date)
|
|
when 'photoprism'
|
|
photoprism_search_url(settings['photoprism_url'], start_date, end_date)
|
|
end
|
|
end
|
|
|
|
def trip_duration(trip)
|
|
start_time = trip.started_at.to_time
|
|
end_time = trip.ended_at.to_time
|
|
|
|
# Calculate the difference
|
|
years = end_time.year - start_time.year
|
|
months = end_time.month - start_time.month
|
|
days = end_time.day - start_time.day
|
|
hours = end_time.hour - start_time.hour
|
|
|
|
# Adjust for negative values
|
|
if hours < 0
|
|
hours += 24
|
|
days -= 1
|
|
end
|
|
if days < 0
|
|
prev_month = end_time.prev_month
|
|
days += (end_time - prev_month).to_i / 1.day
|
|
months -= 1
|
|
end
|
|
if months < 0
|
|
months += 12
|
|
years -= 1
|
|
end
|
|
|
|
parts = []
|
|
parts << "#{years} year#{'s' if years != 1}" if years > 0
|
|
parts << "#{months} month#{'s' if months != 1}" if months > 0
|
|
parts << "#{days} day#{'s' if days != 1}" if days > 0
|
|
parts << "#{hours} hour#{'s' if hours != 1}" if hours > 0
|
|
parts = ["0 hours"] if parts.empty?
|
|
parts.join(', ')
|
|
end
|
|
end
|