diff --git a/src/boat.py b/src/boat.py index 3604ff7..d112145 100644 --- a/src/boat.py +++ b/src/boat.py @@ -1,7 +1,7 @@ -#! encode: utf8 +#coding:utf-8 class Boat: - def __init__(self, boat_id, name, sismer_id, url, avatar, temperatures, positions): + def __init__(self, boat_id: str, name: str, sismer_id: str, url: str, avatar:str , temperatures: list, positions: list): self.boat_id = boat_id self.name = name self.sismer_id = sismer_id @@ -10,16 +10,18 @@ class Boat: self.temperatures = temperatures self.positions = positions def __str__(self): - return f"[{self.name}({self.boat_id})]\nSISMER ID: {self.sismer_id}\nURL: {self.url}\nAvatar: {self.avatar}" + return f"{self.name}" def get_max_temp(self): return max(self.temperatures) - def get_nothiet_coords(self): - if len(self.positions == 0): + def get_northiest_coords(self): + if len(self.positions) == 0: raise Exception(f"{self.name} must have coords to compare") - best = slef.positions[0] + best = self.positions[0] for position in self.positions: if position.is_northiest_than(best): best = position return best + def print_details(self): + print(f"[{self.name}({self.boat_id})]\nSISMER ID: {self.sismer_id}\nURL: {self.url}\nAvatar: {self.avatar}") diff --git a/src/main.py b/src/main.py index 5694fd2..c055831 100644 --- a/src/main.py +++ b/src/main.py @@ -1,14 +1,16 @@ #! encoding: utf-8 -from rest_api_boats_loader import RestApiBoatsLoader from sys import argv +import fleet +from rest_api_boats_loader import RestApiBoatsLoader if len(argv) <= 1: raise Exception("You must give the year you want to get") year = int(argv[1]) -boats_loader = RestApiBoatsLoader() - -for boat in boats_loader.load_boats(year): - print(boat) +my_fleet = fleet.Fleet(year, RestApiBoatsLoader()) +for boat in my_fleet.boats: + boat.print_details() print() +northiest_boat, northiest_coords = my_fleet.get_northiest() +print(f"The boat which has gone northiest is the {northiest_boat}. It went in {northiest_coords}") diff --git a/src/position.py b/src/position.py index 4e91e2d..112bdcf 100644 --- a/src/position.py +++ b/src/position.py @@ -1,11 +1,13 @@ -#! encoding: utf8 +#coding:utf-8 class Position: - def __init__(self, latitude, longitude): + def __init__(self, latitude: float, longitude: float): self.latitude = latitude self.longitude = longitude def __str__(self): return f"[{self.latitude}; {self.latitude}]" def is_northiest_than(self, position): + if position == None: + return True return self.latitude >= position.latitude diff --git a/src/rest_api_boats_loader.py b/src/rest_api_boats_loader.py index 139517e..fec0e6a 100644 --- a/src/rest_api_boats_loader.py +++ b/src/rest_api_boats_loader.py @@ -1,17 +1,18 @@ -#! encode: utf8 +#coding:utf-8 from boat import Boat from position import Position -from data_loader import DataLoader +from boats_loader import BoatsLoader +import requests -class RestApiBoatsLoader(DataLoader): +class RestApiBoatsLoader(BoatsLoader): 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): + def load_boats(self, year: int): raw_data = self.load_from_url(self.url) boats = [] for boat in raw_data.json(): @@ -19,7 +20,7 @@ class RestApiBoatsLoader(DataLoader): 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): + def _load_boat_data(self, boat_id: str, year: int): 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'] = [] @@ -32,4 +33,9 @@ class RestApiBoatsLoader(DataLoader): if 'airtemp' in single_data['data']: data['temp'].append(single_data['data']['airtemp']) return data - + + def load_from_url(self, url: str): + data = requests.get(url) + if(data.status_code != 200): + raise Exception(f"Error {data.status_code}") + return data