コード例 #1
0
ファイル: client.py プロジェクト: FahrplanDatenGarten/pyhafas
    def journey(self, journey: Union[Journey, str]) -> Journey:
        """
        Returns information about a specific journey by its ID

        Useful if you want to refresh the data of the trip, e.g. the real-time data.

        :param journey: FPTF `Journey` object or journey ID
        :return: FPTF `Journey` object with current/updated information
        """
        if not isinstance(journey, Journey):
            journey = Journey(journey)

        body = self.profile.format_journey_request(journey)
        res = self.profile.request(body)

        return self.profile.parse_journey_request(res)
コード例 #2
0
    def parse_journeys_request(self: ProfileInterface,
                               data: HafasResponse) -> List[Journey]:
        """
        Parses the HaFAS response for a journeys request

        :param data: Formatted HaFAS response
        :return: List of Journey objects
        """
        journeys = []

        for jny in data.res['outConL']:
            # TODO: Add more data
            date = self.parse_date(jny['date'])
            journeys.append(
                Journey(jny['ctxRecon'],
                        date=date,
                        duration=self.parse_timedelta(jny['dur']),
                        legs=self.parse_legs(jny, data.common, date)))
        return journeys
コード例 #3
0
ファイル: journey.py プロジェクト: p0l0/pyhafas
    def parse_journey_request(
            self: ProfileInterface,
            data: HafasResponse) -> Journey:
        """
        Parses the HaFAS response for a journey request

        :param data: Formatted HaFAS response
        :return: List of Journey objects
        """
        date = self.parse_date(data.res['outConL'][0]['date'])
        return Journey(
            data.res['outConL'][0]['ctxRecon'],
            date=date,
            duration=self.parse_timedelta(
                data.res['outConL'][0]['dur']),
            legs=self.parse_legs(
                data.res['outConL'][0],
                data.common,
                date))
コード例 #4
0
def test_db_journey_parsing():
    directory = os.path.dirname(os.path.realpath(__file__))
    raw_hafas_json_file = open(directory + "/journey_raw.json", "r")
    hafas_response = PyTestHafasResponse(raw_hafas_json_file.read())
    raw_hafas_json_file.close()
    correct_journey = Journey(
        id='¶HKI¶T$A=1@O=Siegburg/Bonn@L=8005556@a=128@$A=1@O=Troisdorf@L=8000135@a=128@$202008081507$202008081512$S     19$$1$$$',
        date=datetime.date(2020, 8, 8),
        duration=datetime.timedelta(seconds=300),
        legs=[Leg(
            id='1|227361|0|80|8082020',
            origin=Station(
                id='8005556',
                lid='A=1@O=Siegburg/Bonn@X=7203029@Y=50793916@U=80@L=8005556@',
                name='Siegburg/Bonn',
                latitude=50.793916,
                longitude=7.203029),
            destination=Station(
                id='8000135',
                lid='A=1@O=Troisdorf@X=7150892@Y=50813926@U=80@L=8000135@',
                name='Troisdorf',
                latitude=50.813926,
                longitude=7.150892),
            departure=DBProfile().timezone.localize(datetime.datetime(2020, 8, 8, 15, 7)),
            arrival=DBProfile().timezone.localize(datetime.datetime(2020, 8, 8, 15, 12)),
            mode=Mode.TRAIN,
            name='S 19',
            cancelled=False, distance=None,
            departure_delay=datetime.timedelta(seconds=240),
            departure_platform='1',
            arrival_delay=datetime.timedelta(seconds=240),
            arrival_platform='1',
            stopovers=[Stopover(
                stop=Station(
                    id='8005556',
                    lid='A=1@O=Siegburg/Bonn@X=7203029@Y=50793916@U=80@L=8005556@',
                    name='Siegburg/Bonn',
                    latitude=50.793916,
                    longitude=7.203029
                ),
                cancelled=False,
                arrival=None,
                arrival_delay=None,
                arrival_platform=None,
                departure=DBProfile().timezone.localize(datetime.datetime(2020, 8, 8, 15, 7)),
                departure_delay=datetime.timedelta(seconds=240),
                departure_platform='1'
            ), Stopover(
                stop=Station(
                    id='8000135',
                    lid='A=1@O=Troisdorf@X=7150892@Y=50813926@U=80@L=8000135@',
                    name='Troisdorf',
                    latitude=50.813926,
                    longitude=7.150892
                ),
                cancelled=False,
                arrival=DBProfile().timezone.localize(datetime.datetime(2020, 8, 8, 15, 12)),
                arrival_delay=datetime.timedelta(seconds=240),
                arrival_platform='1',
                departure=None,
                departure_delay=None,
                departure_platform=None
            )
            ],
        )]
    )
    assert DBProfile().parse_journey_request(hafas_response) == correct_journey
コード例 #5
0
ファイル: journeys_test.py プロジェクト: p0l0/pyhafas
def test_vsn_journeys_parsing():
    directory = os.path.dirname(os.path.realpath(__file__))
    raw_hafas_json_file = open(directory + "/journeys_raw.json", "r")
    hafas_response = PyTestHafasResponse(raw_hafas_json_file.read())
    raw_hafas_json_file.close()
    correct_journeys = [
        Journey(
            id=
            '¶HKI¶T$A=1@O=Göttingen@L=8000128@a=128@$A=1@O=Lenglern@L=8003644@a=128@$202008090710$202008090719$    RB85$$1$$$',
            date=datetime.date(2020, 8, 9),
            duration=datetime.timedelta(seconds=540),
            legs=[
                Leg(id='1|147532|0|80|9082020',
                    origin=Station(id='8000128',
                                   name='Göttingen',
                                   latitude=51.536812,
                                   longitude=9.926069),
                    destination=Station(id='8003644',
                                        name='Lenglern',
                                        latitude=51.588428,
                                        longitude=9.871199),
                    departure=VSNProfile().timezone.localize(
                        datetime.datetime(2020, 8, 9, 7, 10)),
                    arrival=VSNProfile().timezone.localize(
                        datetime.datetime(2020, 8, 9, 7, 19)),
                    mode=Mode.TRAIN,
                    name='RB85',
                    cancelled=False,
                    distance=None,
                    departure_delay=datetime.timedelta(seconds=0),
                    departure_platform='4',
                    arrival_delay=datetime.timedelta(seconds=60),
                    arrival_platform='1',
                    stopovers=[
                        Stopover(stop=Station(id='8000128',
                                              name='Göttingen',
                                              latitude=51.536812,
                                              longitude=9.926069),
                                 cancelled=False,
                                 arrival=None,
                                 arrival_delay=None,
                                 arrival_platform=None,
                                 departure=VSNProfile().timezone.localize(
                                     datetime.datetime(2020, 8, 9, 7, 10)),
                                 departure_delay=datetime.timedelta(seconds=0),
                                 departure_platform=None),
                        Stopover(stop=Station(id='8003644',
                                              name='Lenglern',
                                              latitude=51.588428,
                                              longitude=9.871199),
                                 cancelled=False,
                                 arrival=VSNProfile().timezone.localize(
                                     datetime.datetime(2020, 8, 9, 7, 19)),
                                 arrival_delay=datetime.timedelta(seconds=60),
                                 arrival_platform=None,
                                 departure=None,
                                 departure_delay=None,
                                 departure_platform=None)
                    ])
            ])
    ]
    assert VSNProfile().parse_journeys_request(
        hafas_response) == correct_journeys