Add Imports::Broadcaster to some more parsers

This commit is contained in:
Eugene Burmakin 2024-11-04 13:14:06 +01:00
parent 4a3f7d5e65
commit 3ba70e906f
4 changed files with 21 additions and 7 deletions

View file

@ -1,6 +1,8 @@
# frozen_string_literal: true
class GoogleMaps::PhoneTakeoutParser
include Imports::Broadcaster
attr_reader :import, :user_id
def initialize(import, user_id)
@ -11,7 +13,7 @@ class GoogleMaps::PhoneTakeoutParser
def call
points_data = parse_json
points_data.compact.each do |point_data|
points_data.compact.each.with_index(1) do |point_data, index|
next if Point.exists?(
timestamp: point_data[:timestamp],
latitude: point_data[:latitude],
@ -32,6 +34,8 @@ class GoogleMaps::PhoneTakeoutParser
tracker_id: 'google-maps-phone-timeline-export',
user_id:
)
broadcast_import_progress(import, index)
end
end

View file

@ -1,6 +1,8 @@
# frozen_string_literal: true
class GoogleMaps::SemanticHistoryParser
include Imports::Broadcaster
attr_reader :import, :user_id
def initialize(import, user_id)
@ -11,7 +13,7 @@ class GoogleMaps::SemanticHistoryParser
def call
points_data = parse_json
points_data.each do |point_data|
points_data.each.with_index(1) do |point_data, index|
next if Point.exists?(
timestamp: point_data[:timestamp],
latitude: point_data[:latitude],
@ -29,6 +31,8 @@ class GoogleMaps::SemanticHistoryParser
import_id: import.id,
user_id:
)
broadcast_import_progress(import, index)
end
end
@ -44,7 +48,7 @@ class GoogleMaps::SemanticHistoryParser
{
latitude: waypoint['latE7'].to_f / 10**7,
longitude: waypoint['lngE7'].to_f / 10**7,
timestamp: Timestamps::parse_timestamp(timeline_object['activitySegment']['duration']['startTimestamp'] || timeline_object['activitySegment']['duration']['startTimestampMs']),
timestamp: Timestamps.parse_timestamp(timeline_object['activitySegment']['duration']['startTimestamp'] || timeline_object['activitySegment']['duration']['startTimestampMs']),
raw_data: timeline_object
}
end
@ -52,7 +56,7 @@ class GoogleMaps::SemanticHistoryParser
{
latitude: timeline_object['activitySegment']['startLocation']['latitudeE7'].to_f / 10**7,
longitude: timeline_object['activitySegment']['startLocation']['longitudeE7'].to_f / 10**7,
timestamp: Timestamps::parse_timestamp(timeline_object['activitySegment']['duration']['startTimestamp'] || timeline_object['activitySegment']['duration']['startTimestampMs']),
timestamp: Timestamps.parse_timestamp(timeline_object['activitySegment']['duration']['startTimestamp'] || timeline_object['activitySegment']['duration']['startTimestampMs']),
raw_data: timeline_object
}
end
@ -62,7 +66,7 @@ class GoogleMaps::SemanticHistoryParser
{
latitude: timeline_object['placeVisit']['location']['latitudeE7'].to_f / 10**7,
longitude: timeline_object['placeVisit']['location']['longitudeE7'].to_f / 10**7,
timestamp: Timestamps::parse_timestamp(timeline_object['placeVisit']['duration']['startTimestamp'] || timeline_object['placeVisit']['duration']['startTimestampMs']),
timestamp: Timestamps.parse_timestamp(timeline_object['placeVisit']['duration']['startTimestamp'] || timeline_object['placeVisit']['duration']['startTimestampMs']),
raw_data: timeline_object
}
elsif timeline_object.dig('placeVisit', 'otherCandidateLocations')&.any?
@ -73,7 +77,7 @@ class GoogleMaps::SemanticHistoryParser
{
latitude: point['latitudeE7'].to_f / 10**7,
longitude: point['longitudeE7'].to_f / 10**7,
timestamp: Timestamps::parse_timestamp(timeline_object['placeVisit']['duration']['startTimestamp'] || timeline_object['placeVisit']['duration']['startTimestampMs']),
timestamp: Timestamps.parse_timestamp(timeline_object['placeVisit']['duration']['startTimestamp'] || timeline_object['placeVisit']['duration']['startTimestampMs']),
raw_data: timeline_object
}
else

View file

@ -1,6 +1,8 @@
# frozen_string_literal: true
class Immich::ImportParser
include Imports::Broadcaster
attr_reader :import, :json, :user_id
def initialize(import, user_id)

View file

@ -1,6 +1,8 @@
# frozen_string_literal: true
class OwnTracks::ExportParser
include Imports::Broadcaster
attr_reader :import, :data, :user_id
def initialize(import, user_id)
@ -12,7 +14,7 @@ class OwnTracks::ExportParser
def call
points_data = data.map { |point| OwnTracks::Params.new(point).call }
points_data.each do |point_data|
points_data.each.with_index(1) do |point_data, index|
next if Point.exists?(
timestamp: point_data[:timestamp],
latitude: point_data[:latitude],
@ -26,6 +28,8 @@ class OwnTracks::ExportParser
end
point.save
broadcast_import_progress(import, index)
end
end
end