Ejemplo n.º 1
0
    def plan_journey(self, from_location, to_station, time, departure):
        base_url = "journeys?lang=nl-NL&"
        time = "dateTime=" + time
        from_station = "&from=" + from_location
        to_station = "&to=" + to_station
        before = "&before=1"
        after = "&after=5"
        sequence = "&sequence=1"
        options = "&byFerry=true&bySubway=true&byBus=true&byTram=true&byTrain=true"
        search_type = "&searchType=" + departure

        url = self.url + base_url + time + from_station + to_station + before + after + sequence + options + search_type
        journeys = requests.get(url).json()
        print(url)
        steps = []
        first = True
        counter = 1
        destination_temp = ""
        end_time_temp = ""

        for part in journeys['journeys'][1]['legs']:
            last_stop = part['stops'][-1]['location']
            first_stop = part['stops'][0]['location']

            step = Step()
            if part['type'] == "continuous":
                if first:
                    step.kind = part['mode']['name'][0:5]
                    step.departure_location = first_stop['name']
                    if 'stopType' in last_stop:
                        step.arrival_location = last_stop[
                            'stopType'] + " " + last_stop['place'][
                                'name'] + last_stop['name']
                    else:
                        step.arrival_location = last_stop['place'][
                            'name'] + " " + last_stop['stationType']
                    step.departure_time = journeys['journeys'][1]['departure']
                    step.arrival_time = self.calculate_end_time(
                        journeys['journeys'][1]['departure'], part['duration'])
                    step.duration = part['duration']
                elif counter == len(journeys['journeys'][1]['legs']):
                    step.kind = part['mode']['name'][0:5]
                    step.departure_location = destination_temp
                    step.arrival_location = last_stop['place'][
                        'name'] + " " + last_stop['name']
                    step.departure_time = end_time_temp
                    step.arrival_time = journeys['journeys'][1]['arrival']
                    step.duration = part['duration']
                else:
                    step.kind = part['mode']['name'][0:5]
                    step.departure_location = destination_temp
                    if 'stopType' in last_stop:
                        step.arrival_location = last_stop['place'][
                            'name'] + " " + last_stop['stopType']
                    else:
                        step.arrival_location = last_stop['place'][
                            'name'] + " " + last_stop['stationType']
                    step.departure_time = end_time_temp
                    step.arrival_time = self.calculate_end_time(
                        end_time_temp, part['duration'])
                    step.duration = part['duration']
            else:
                end_time_temp = part['stops'][-1]['arrival']
                if part['mode']['type'] == 'train':
                    destination_temp = last_stop[
                        'stationType'] + " " + last_stop['name']
                    step.kind = part['mode']['name'] + " richting " + part[
                        'destination']
                    step.departure_location = first_stop[
                        'stationType'] + " " + first_stop['name']
                    step.arrival_location = last_stop[
                        'stationType'] + " " + last_stop['name']
                    step.departure_time = part['stops'][0]['departure']
                    step.arrival_time = part['stops'][-1]['arrival']
                    step.duration = self.calculate_duration(
                        part['stops'][-1]['arrival'],
                        part['stops'][0]['departure'])
                else:
                    destination_temp = last_stop['stopType'] + " " + last_stop[
                        'place']['name'] + " " + last_stop['name']
                    step.kind = part['mode']['name'] + " richting " + part[
                        'destination']
                    step.departure_location = first_stop[
                        'stopType'] + " " + first_stop['place'][
                            'name'] + " " + first_stop['name']
                    step.arrival_location = last_stop[
                        'stopType'] + " " + last_stop['place'][
                            'name'] + " " + last_stop['name']
                    step.departure_time = part['stops'][0]['departure']
                    step.arrival_time = part['stops'][-1]['arrival']
                    step.duration = self.calculate_duration(
                        part['stops'][-1]['arrival'],
                        part['stops'][0]['departure'])
            steps.append(step)
            counter += 1
            first = False
        return steps