Browse Source

move definition of Position to termux_log_location/__init__.py

Fabian Peter Hammerle 6 years ago
parent
commit
fdf226d421
2 changed files with 56 additions and 51 deletions
  1. 2 51
      log-location
  2. 54 0
      termux_log_location/__init__.py

+ 2 - 51
log-location

@@ -1,17 +1,8 @@
 #!/data/data/com.termux/files/usr/bin/python3
 
-import datetime as dt
-import json
 import os
-import pytz
-import subprocess
 import sys
-import yaml
-
-
-def to_iso6801_basic(dt):
-    return dt.isoformat().replace(':', '').replace('-', '') \
-        .replace('+0000', 'Z')
+import termux_log_location
 
 
 def symlink(src, dst, force=False):
@@ -20,48 +11,8 @@ def symlink(src, dst, force=False):
     os.symlink(src=src, dst=dst)
 
 
-class Position:
-
-    def __init__(self, timestamp, latitude, longitude, altitude):
-        self.timestamp = timestamp
-        self.latitude = latitude
-        self.longitude = longitude
-        self.altitude = altitude
-
-    @classmethod
-    def from_termux_location(cls, provider='network'):
-        loc_json = subprocess.check_output(['termux-location', '-p', provider]) \
-            .decode(sys.stdout.encoding)
-        req_ts = dt.datetime.now(pytz.utc)
-        loc_attr = yaml.load(loc_json)
-        if not loc_attr:
-            return None
-        else:
-            return cls(
-                timestamp=req_ts -
-                    dt.timedelta(milliseconds=loc_attr['elapsedMs']),
-                latitude=loc_attr['latitude'],
-                longitude=loc_attr['longitude'],
-                altitude=loc_attr['altitude'],
-            )
-
-    def save_yaml(self, target_dir_path):
-        path = os.path.join(
-            target_dir_path,
-            '{}.yml'.format(to_iso6801_basic(self.timestamp)),
-        )
-        attr = {
-            'lat': self.latitude,
-            'lon': self.longitude,
-            'alt': self.altitude,
-        }
-        with open(path, 'w') as f:
-            f.write(yaml.dump(attr, default_flow_style=False))
-        return path
-
-
 def compute(target_dir_path):
-    cur = Position.from_termux_location()
+    cur = termux_log_location.Position.from_termux_location()
     if cur:
         cur_path = cur.save_yaml(target_dir_path)
         symlink(

+ 54 - 0
termux_log_location/__init__.py

@@ -1,4 +1,16 @@
+import datetime as dt
+import json
 import math
+import os
+import pytz
+import subprocess
+import sys
+import yaml
+
+
+def to_iso6801_basic(ts):
+    return ts.isoformat().replace(':', '').replace('-', '') \
+        .replace('+0000', 'Z')
 
 
 class Location:
@@ -35,3 +47,45 @@ class Location:
             + math.cos(a.latitude_radian) * math.cos(b.latitude_radian) \
                 * Location.haversine(b.longitude_radian - a.longitude_radian)
         return Location.haversine_inv(hav) * Location.EARTH_RADIUS_METRES
+
+
+class Position(Location):
+
+    def __init__(self, timestamp, latitude, longitude, altitude):
+        self.timestamp = timestamp
+        super().__init__(
+            latitude=latitude,
+            longitude=longitude,
+            altitude=altitude,
+        )
+
+    @classmethod
+    def from_termux_location(cls, provider='network'):
+        loc_json = subprocess.check_output(['termux-location', '-p', provider]) \
+            .decode(sys.stdout.encoding)
+        req_ts = dt.datetime.now(pytz.utc)
+        loc_attr = yaml.load(loc_json)
+        if not loc_attr:
+            return None
+        else:
+            return cls(
+                timestamp=req_ts -
+                    dt.timedelta(milliseconds=loc_attr['elapsedMs']),
+                latitude=loc_attr['latitude'],
+                longitude=loc_attr['longitude'],
+                altitude=loc_attr['altitude'],
+            )
+
+    def save_yaml(self, target_dir_path):
+        path = os.path.join(
+            target_dir_path,
+            '{}.yml'.format(to_iso6801_basic(self.timestamp)),
+        )
+        attr = {
+            'lat': self.latitude,
+            'lon': self.longitude,
+            'alt': self.altitude,
+        }
+        with open(path, 'w') as f:
+            f.write(yaml.dump(attr, default_flow_style=False))
+        return path