diff --git a/src/boat.py b/src/boat.py index 70e8c5d..3604ff7 100644 --- a/src/boat.py +++ b/src/boat.py @@ -1,25 +1,25 @@ #! encode: utf8 class Boat: - def __init__(self, boatId, name, sismerId, url, avatar, temperatures, positions): - self.boatId = boatId + def __init__(self, boat_id, name, sismer_id, url, avatar, temperatures, positions): + self.boat_id = boat_id self.name = name - self.sismerId = sismerId + self.sismer_id = sismer_id self.url = url self.avatar = avatar self.temperatures = temperatures self.positions = positions 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) - def getNothietCoords(self): + def get_nothiet_coords(self): if len(self.positions == 0): raise Exception(f"{self.name} must have coords to compare") best = slef.positions[0] for position in self.positions: - if position.isNorthiestThan(best): + if position.is_northiest_than(best): best = position return best diff --git a/src/boatsLoader.py b/src/boatsLoader.py deleted file mode 100644 index 297b9e0..0000000 --- a/src/boatsLoader.py +++ /dev/null @@ -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 - diff --git a/src/dataLoader.py b/src/data_loader.py similarity index 85% rename from src/dataLoader.py rename to src/data_loader.py index b71925e..77cbf8f 100644 --- a/src/dataLoader.py +++ b/src/data_loader.py @@ -3,7 +3,7 @@ import requests class DataLoader: - def loadFromURL(self, url): + def load_from_url(self, url): data = requests.get(url) if(data.status_code != 200): raise Exception(f"Error {data.status_code}") diff --git a/src/main.py b/src/main.py index 54faccd..5694fd2 100644 --- a/src/main.py +++ b/src/main.py @@ -1,14 +1,14 @@ #! encoding: utf-8 -from boatsLoader import BoatsLoader +from rest_api_boats_loader import RestApiBoatsLoader from sys import argv if len(argv) <= 1: raise Exception("You must give the year you want to get") 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() diff --git a/src/position.py b/src/position.py index 52c61e5..4e91e2d 100644 --- a/src/position.py +++ b/src/position.py @@ -6,6 +6,6 @@ class Position: self.longitude = longitude def __str__(self): - return f"[{self.latitude}; {self.latitude}] ({self.date})" - def isNorthiestThan(self, position): + return f"[{self.latitude}; {self.latitude}]" + def is_northiest_than(self, position): return self.latitude >= position.latitude diff --git a/src/rest_api_boats_loader.py b/src/rest_api_boats_loader.py new file mode 100644 index 0000000..139517e --- /dev/null +++ b/src/rest_api_boats_loader.py @@ -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 +