mirror of
https://github.com/BOSWatch/BW3-Core.git
synced 2026-04-05 22:35:43 +00:00
add geocoding module, resolve threads
This commit is contained in:
parent
575e44ae54
commit
4aea7b5d78
6 changed files with 291 additions and 100 deletions
72
module/geocoding.py
Normal file
72
module/geocoding.py
Normal file
|
|
@ -0,0 +1,72 @@
|
|||
#!/usr/bin/python
|
||||
# -*- coding: utf-8 -*-
|
||||
"""!
|
||||
____ ____ ______ __ __ __ _____
|
||||
/ __ )/ __ \/ ___/ | / /___ _/ /______/ /_ |__ /
|
||||
/ __ / / / /\__ \| | /| / / __ `/ __/ ___/ __ \ /_ <
|
||||
/ /_/ / /_/ /___/ /| |/ |/ / /_/ / /_/ /__/ / / / ___/ /
|
||||
/_____/\____//____/ |__/|__/\__,_/\__/\___/_/ /_/ /____/
|
||||
German BOS Information Script
|
||||
by Bastian Schroll
|
||||
|
||||
@file: geocoding.py
|
||||
@date: 01.03.2019
|
||||
@author: Jan Speller
|
||||
@description: Geocoding Module
|
||||
"""
|
||||
import logging
|
||||
from module.moduleBase import ModuleBase
|
||||
|
||||
# ###################### #
|
||||
# Custom plugin includes #
|
||||
import geocoder
|
||||
import re
|
||||
# ###################### #
|
||||
|
||||
logging.debug("- %s loaded", __name__)
|
||||
|
||||
|
||||
class BoswatchModule(ModuleBase):
|
||||
"""!Description of the Module"""
|
||||
def __init__(self, config):
|
||||
"""!Do not change anything here!"""
|
||||
super().__init__(__name__, config) # you can access the config class on 'self.config'
|
||||
|
||||
def doWork(self, bwPacket):
|
||||
"""!start an run of the module.
|
||||
|
||||
@param bwPacket: A BOSWatch packet instance"""
|
||||
if bwPacket.get("mode") == "pocsag":
|
||||
self.geocode(bwPacket)
|
||||
pass
|
||||
|
||||
return bwPacket
|
||||
|
||||
def geocode(self, bwPacket):
|
||||
"""!find address in message and get latitude and longitude
|
||||
|
||||
@param bwPacket: A BOSWatch packet instance"""
|
||||
try:
|
||||
address = re.search(self.config.get("regex"), bwPacket.get("message"))[1]
|
||||
provider = self.config.get("apiProvider")
|
||||
if "mapbox" == provider:
|
||||
g = geocoder.mapbox(address, key=self.config.get("apiToken"))
|
||||
print(address)
|
||||
elif "google" == provider:
|
||||
g = geocoder.google(address, key=self.config.get("apiToken"))
|
||||
else:
|
||||
return bwPacket
|
||||
|
||||
(lat, lng) = g.latlng
|
||||
bwPacket.set("lat", lat)
|
||||
bwPacket.set("lng", lng)
|
||||
return bwPacket
|
||||
except (IndexError, TypeError, ValueError):
|
||||
logging.warning("Address was not found in current Message, skipping geocoding")
|
||||
except Exception as e:
|
||||
logging.error("Unknown Error while executing geocoding module: " + str(type(e).__name__) + ": " + str(e))
|
||||
return bwPacket
|
||||
|
||||
def onUnload(self):
|
||||
"""!Called by destruction of the plugin"""
|
||||
pass
|
||||
Loading…
Add table
Add a link
Reference in a new issue