parent
0881089a3e
commit
d16a8fed0d
@ -1,25 +1,25 @@
|
|||||||
#! encode: utf8
|
#! encode: utf8
|
||||||
|
|
||||||
class Boat:
|
class Boat:
|
||||||
def __init__(self, boatId, name, sismerId, url, avatar, temperatures, positions):
|
def __init__(self, boat_id, name, sismer_id, url, avatar, temperatures, positions):
|
||||||
self.boatId = boatId
|
self.boat_id = boat_id
|
||||||
self.name = name
|
self.name = name
|
||||||
self.sismerId = sismerId
|
self.sismer_id = sismer_id
|
||||||
self.url = url
|
self.url = url
|
||||||
self.avatar = avatar
|
self.avatar = avatar
|
||||||
self.temperatures = temperatures
|
self.temperatures = temperatures
|
||||||
self.positions = positions
|
self.positions = positions
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return f"[{self.name}]\nSISMER ID: {self.sismerId}\nURL: {self.url}\nAvatar: {self.avatar}"
|
return f"[{self.name}({self.boat_id})]\nSISMER ID: {self.sismer_id}\nURL: {self.url}\nAvatar: {self.avatar}"
|
||||||
|
|
||||||
def getMaxTemp(self):
|
def get_max_temp(self):
|
||||||
return max(self.temperatures)
|
return max(self.temperatures)
|
||||||
def getNothietCoords(self):
|
def get_nothiet_coords(self):
|
||||||
if len(self.positions == 0):
|
if len(self.positions == 0):
|
||||||
raise Exception(f"{self.name} must have coords to compare")
|
raise Exception(f"{self.name} must have coords to compare")
|
||||||
best = slef.positions[0]
|
best = slef.positions[0]
|
||||||
for position in self.positions:
|
for position in self.positions:
|
||||||
if position.isNorthiestThan(best):
|
if position.is_northiest_than(best):
|
||||||
best = position
|
best = position
|
||||||
return best
|
return best
|
||||||
|
|
||||||
|
@ -1,35 +0,0 @@
|
|||||||
#! encode: utf8
|
|
||||||
|
|
||||||
from boat import Boat
|
|
||||||
from position import Position
|
|
||||||
from dataLoader import DataLoader
|
|
||||||
|
|
||||||
class BoatsLoader(DataLoader):
|
|
||||||
def __init__(self):
|
|
||||||
self._url = 'https://localisation.flotteoceanographique.fr/api/v2/vessels'
|
|
||||||
self.searchBegin = '-01-01T00:00:00.000Z'
|
|
||||||
self.searchEnd = '-12-31T23:59:59.000Z'
|
|
||||||
|
|
||||||
|
|
||||||
def loadBoats(self, year):
|
|
||||||
rawData = self.loadFromURL(self._url)
|
|
||||||
boats = []
|
|
||||||
for boat in rawData.json():
|
|
||||||
boatData = self._loadBoatData(boat['id'], year)
|
|
||||||
tmpBoat = Boat(boat['id'], boat['name'], boat['sismerId'], boat['url'], boat['avatar'], boatData['temp'], boatData['pos'])
|
|
||||||
boats.append(tmpBoat)
|
|
||||||
return boats
|
|
||||||
def _loadBoatData(self, boatId, year):
|
|
||||||
jsonData = self.loadFromURL(self._url + f"/{boatId}/positions?startDate={year}{self.searchBegin}&endDate={year}{self.searchEnd}").json()
|
|
||||||
data = {}
|
|
||||||
data['pos'] = []
|
|
||||||
data['temp'] = []
|
|
||||||
for singleData in jsonData:
|
|
||||||
if len(singleData['data']) == 0:
|
|
||||||
continue
|
|
||||||
data['pos'].append(Position(singleData['lat'], singleData['lon']))
|
|
||||||
|
|
||||||
if 'airtemp' in singleData['data']:
|
|
||||||
data['temp'].append(singleData['data']['airtemp'])
|
|
||||||
return data
|
|
||||||
|
|
@ -1,14 +1,14 @@
|
|||||||
#! encoding: utf-8
|
#! encoding: utf-8
|
||||||
|
|
||||||
from boatsLoader import BoatsLoader
|
from rest_api_boats_loader import RestApiBoatsLoader
|
||||||
from sys import argv
|
from sys import argv
|
||||||
|
|
||||||
if len(argv) <= 1:
|
if len(argv) <= 1:
|
||||||
raise Exception("You must give the year you want to get")
|
raise Exception("You must give the year you want to get")
|
||||||
year = int(argv[1])
|
year = int(argv[1])
|
||||||
|
|
||||||
boatsLoader = BoatsLoader()
|
boats_loader = RestApiBoatsLoader()
|
||||||
|
|
||||||
for boat in boatsLoader.loadBoats(year):
|
for boat in boats_loader.load_boats(year):
|
||||||
print(boat)
|
print(boat)
|
||||||
print()
|
print()
|
||||||
|
@ -0,0 +1,35 @@
|
|||||||
|
#! encode: utf8
|
||||||
|
|
||||||
|
from boat import Boat
|
||||||
|
from position import Position
|
||||||
|
from data_loader import DataLoader
|
||||||
|
|
||||||
|
class RestApiBoatsLoader(DataLoader):
|
||||||
|
def __init__(self):
|
||||||
|
self.url = 'https://localisation.flotteoceanographique.fr/api/v2/vessels'
|
||||||
|
self.search_begin = '-01-01T00:00:00.000Z'
|
||||||
|
self.search_end = '-12-31T23:59:59.000Z'
|
||||||
|
|
||||||
|
|
||||||
|
def load_boats(self, year):
|
||||||
|
raw_data = self.load_from_url(self.url)
|
||||||
|
boats = []
|
||||||
|
for boat in raw_data.json():
|
||||||
|
boat_data = self._load_boat_data(boat['id'], year)
|
||||||
|
tmp_boat = Boat(boat['id'], boat['name'], boat['sismerId'], boat['url'], boat['avatar'], boat_data['temp'], boat_data['pos'])
|
||||||
|
boats.append(tmp_boat)
|
||||||
|
return boats
|
||||||
|
def _load_boat_data(self, boat_id, year):
|
||||||
|
json_data = self.load_from_url(self.url + f"/{boat_id}/positions?startDate={year}{self.search_begin}&endDate={year}{self.search_end}").json()
|
||||||
|
data = {}
|
||||||
|
data['pos'] = []
|
||||||
|
data['temp'] = []
|
||||||
|
for single_data in json_data:
|
||||||
|
if len(single_data['data']) == 0:
|
||||||
|
continue
|
||||||
|
data['pos'].append(Position(single_data['lat'], single_data['lon']))
|
||||||
|
|
||||||
|
if 'airtemp' in single_data['data']:
|
||||||
|
data['temp'].append(single_data['data']['airtemp'])
|
||||||
|
return data
|
||||||
|
|
Loading…
Reference in new issue