Enable KML output for coordinate-bearing artifacts#1624
Merged
Conversation
The framework's kmlgen runs only when 'kml' is in an artifact's output_types
AND its report has columns named exactly 'Latitude'/'Longitude'. An audit of
every coordinate-reporting artifact found many that carry coordinates but were
not emitting KML (most were set to "standard", which excludes kml).
35 artifacts already had exact Latitude/Longitude columns but lacked kml ->
enabled it ("standard"->"all", or appended "kml" to the output_types list).
3 artifacts carried a single coordinate pair under a prefixed column name ->
renamed the report columns to Latitude/Longitude and enabled KML:
- appleWifiPlist : WiFi BSS List (Location Latitude/Longitude)
- foursquareSwarm : Activity Feed (Venue Latitude/Longitude)
- uberClient : Uber - Account (Latitude (startup)/Longitude (startup))
Incidental lint hygiene (CI lints whole changed files):
- iOSCacheLocations : silence intentional broad-except (disable comment)
- wifiNetworkStoreModel: reindent tabs->4 spaces (logic and SQL unchanged)
Deferred by design / separate work:
- BeReal "Posts": blocked by a latent missing-global bug in
process_bereal_preferences (behavioral fix, handled separately).
- Photos.sqlite Ph* reference tables: multiple coordinate pairs per row
(zAsset/zExtAttr/Moment) - no single point to plot.
- Multi-pair artifacts (Withings Tracked Activities; Apple Maps Trips):
ambiguous which of several pairs to plot.
Drop cacheRoutesGmap from the KML enablement per request; restore its output_types to the original 'standard'.
pull Bot
pushed a commit
to itsbrex/iLEAPP
that referenced
this pull request
Jun 26, 2026
The artifact walks the raw $objects array itself, but read files via get_plist_file_content, which runs nska_deserialize on NSKeyedArchiver plists. These CachedRoutes archives contain unhashable NSDictionary keys, so the deserializer floods the log with 'unhashable' warnings -- and it strips the $objects array this artifact actually needs. Read the raw plist with plistlib.load instead: no deserializer, no warnings, $objects available as intended. Also re-enables KML output (output_types 'all'), which was reverted out of the KML batch (abrignoni#1624) specifically because of these warnings.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Audited every artifact that reports latitude/longitude and made sure they emit KML. The framework's
kmlgenruns only when both are true:'kml'is in the artifact'soutput_types(note:"standard"excludes kml), andLatitude/Longitude.38 artifacts had the coordinates but weren't producing KML. This PR fixes them:
35 — output_types only (already had exact Latitude/Longitude columns)
Enabled kml (
"standard"→"all", or appended"kml"to the list). Examples: WhatsApp Messages, Health Workouts, all Apple Maps artifacts, 6× Uber, Threema/Zalo/Potato chats, Booking, Google Maps cache routes, Weather/WorldClock, Withings, life360 Chat, kleinanzeigen, swissmeteo, wire, photosDbexif, allTrails, cacheRoutesGmap, iOSCacheLocations, wifiNetworkStoreModel, foursquare Logs, uberLeveldb.3 — single coordinate pair under a prefixed name → renamed columns + enabled kml
Location Latitude/LongitudeLatitude/LongitudeVenue Latitude/LongitudeLatitude/LongitudeLatitude (startup)/Longitude (startup)Latitude/Longitude(All three verified single-pair — no duplicate
Latitudecolumn results, so LAVA table creation is unaffected.)Incidental lint hygiene
CI lints whole changed files, so two touched files needed pre-existing debt cleared:
except(disable comment).Deferred (not in this PR)
process_bereal_preferencesassigns the module globalsbereal_user_id/_bereal_processedwithout aglobaldeclaration (theglobalis misplaced at module level), so they never update. That's a behavioral fix deserving its own review.Ph*reference tables (21): multiple coordinate pairs per row (zAsset/zExtAttr/Moment) — no single point to plot.Verification