see https://github.com/karlicoss/HPI/issues/262 * move home to fallback/via_home.py * move via_ip to fallback * add fallback model * add stub via_ip file * add fallback_locations for via_ip * use protocol for locations * estimate_from helper, via_home estimator, all.py * via_home: add accuracy, cache history * add datasources to gpslogger/google_takeout * tz/via_location.py: update import to fallback * denylist docs/installation instructions * tz.via_location: let user customize cachew refresh time * add via_ip.estimate_location using binary search * use estimate_location in via_home.get_location * tests: add gpslogger to location config stub * tests: install tz related libs in test env * tz: add regression test for broken windows dates * vendorize bisect_left from python src doesnt have a 'key' parameter till python3.10
38 lines
959 B
Python
38 lines
959 B
Python
"""
|
|
Extracts locations using google_takeout_parser -- no shared code with the deprecated my.location.google
|
|
"""
|
|
|
|
REQUIRES = ["git+https://github.com/seanbreckenridge/google_takeout_parser"]
|
|
|
|
from typing import Iterator
|
|
|
|
from my.google.takeout.parser import events, _cachew_depends_on
|
|
from google_takeout_parser.models import Location as GoogleLocation
|
|
|
|
from my.core.common import mcachew, LazyLogger, Stats
|
|
from .common import Location
|
|
|
|
logger = LazyLogger(__name__)
|
|
|
|
|
|
@mcachew(
|
|
depends_on=_cachew_depends_on,
|
|
logger=logger,
|
|
)
|
|
def locations() -> Iterator[Location]:
|
|
for g in events():
|
|
if isinstance(g, GoogleLocation):
|
|
yield Location(
|
|
lon=g.lng,
|
|
lat=g.lat,
|
|
dt=g.dt,
|
|
accuracy=g.accuracy,
|
|
elevation=None,
|
|
datasource="google_takeout",
|
|
)
|
|
|
|
|
|
def stats() -> Stats:
|
|
from my.core import stat
|
|
|
|
return {**stat(locations)}
|