A small utility written in Kotlin to convert Google Maps Activity Timeline to iCal (.ics) files for calendar import.
This is a Kotlin Multiplatform App but with only the Desktop implementation. It can be built and executed using IntelliJ IDEA on the desktop environment.
This is my first non-Android Kotlin project. It is within expectation that everything inside this project can be messy. I treat this as my playground that allows me to make all kinds of experiments and mistakes. While I thank you for your visit, I would appreciate if you could take things easy when you see me doing something crazy here. Thank you.
[!IMPORTANT]
I have in mind to rewrite the UI for this app. I want the new version to mmanage the API key and other settings on the UI, so we do not need a compile-time config file. Also, I want the app to allow us select/confirm the events being exported to the ICal file, so we do not have to delete unwanted items on the Calendar app afterwards. I have no idea how to design the new UI, that is why it is not moving forward right now. Will kickstart once the UI design is done.
This App is fully functional.
I travelled quite a lot before the pandemic. Very often my daily itinerary changes at the last minute. This made me a headache recalling where I have been to previously.
I use Google Maps for navigation heavily, and I have it tracked my movement for quite many years.
I had an idea to extract my activity timeline from the Google Maps, but unfortunately there is no public API available. It might be possible to achieve that using some web scrapping techniques, but this approach is not likely to be an elegant one.
That is why I am trying another way round: By setting Google Maps to regularly export my activity timeline as JSON files, I can then process them using this Kotlin utility, and generate iCal (.ICS) files which I can then import to my calendars.
By doing so, I can keep a full record for the places I have actually been, and also the rough mileages I have spent on the road.
Trying to reuse all my Android development knowledge as possible, otherwise native replacements have been applied.