Compare commits
15 Commits
9c9489aee1
...
v0.4.0-rc.
Author | SHA1 | Date | |
---|---|---|---|
eb9a043c34
|
|||
819bd5ff40 | |||
c2e1fc54c1 | |||
29ebb4627d | |||
6b6299cd0a | |||
|
e91846edee | ||
|
9b6b2d6416 | ||
|
f8b13ccedf | ||
|
b47bc51365 | ||
|
f39da9b803 | ||
|
1b863c55f1 | ||
|
80a788933d | ||
|
3599a034dc | ||
|
e09e8f29fb | ||
|
d23d9a005d |
17
.renovaterc
Normal file
17
.renovaterc
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
{
|
||||||
|
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
|
||||||
|
"extends": [
|
||||||
|
"config:base"
|
||||||
|
],
|
||||||
|
"packageRules": [
|
||||||
|
{
|
||||||
|
"matchUpdateTypes": [
|
||||||
|
"minor",
|
||||||
|
"patch",
|
||||||
|
"pin",
|
||||||
|
"digest"
|
||||||
|
],
|
||||||
|
"automerge": true
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
48
README.md
48
README.md
@@ -2,25 +2,27 @@
|
|||||||
|
|
||||||
Small module that makes your journey with RMV REST API somehow easier. Based fully on official RMV API reference and HAFAS documentation.
|
Small module that makes your journey with RMV REST API somehow easier. Based fully on official RMV API reference and HAFAS documentation.
|
||||||
|
|
||||||
# Requirements
|
## Requirements
|
||||||
|
|
||||||
* RMV API key (Get it [here](https://opendata.rmv.de/site/start.html))
|
* RMV API key (Get it [here](https://opendata.rmv.de/site/start.html))
|
||||||
* Python3 (Tested versions are 3.7.9 and 3.9.13)
|
* Python3 (Tested versions are 3.7.9 and 3.9.13)
|
||||||
* git (Only for installation from source)
|
* git (Only for installation from source)
|
||||||
|
|
||||||
# Installation
|
## Installation
|
||||||
|
|
||||||
If you have everything listed in [requirements](#requirements), then let's begin.
|
If you have everything listed in [requirements](#requirements), then let's begin.
|
||||||
|
|
||||||
### Variant 1:
|
### Variant 1
|
||||||
|
|
||||||
1. `python -m pip install pyrmv`
|
1. `python -m pip install pyrmv`
|
||||||
|
|
||||||
### Variant 2:
|
### Variant 2
|
||||||
|
|
||||||
1. `git clone https://git.end-play.xyz/profitroll/PythonRMV.git`
|
1. `git clone https://git.end-play.xyz/profitroll/PythonRMV.git`
|
||||||
2. `cd PythonRMV`
|
2. `cd PythonRMV`
|
||||||
3. `python setup.py install`
|
3. `python setup.py install`
|
||||||
|
|
||||||
# Usage
|
## Usage
|
||||||
|
|
||||||
```py
|
```py
|
||||||
import pyrmv
|
import pyrmv
|
||||||
@@ -36,44 +38,26 @@ destination = client.stop_by_coords(50.099613, 8.685449, max_number=3)[0]
|
|||||||
trip = client.trip_find(origin_id=origin.id, dest_id=destination.id)
|
trip = client.trip_find(origin_id=origin.id, dest_id=destination.id)
|
||||||
```
|
```
|
||||||
|
|
||||||
# Frequently Asked Questions
|
## Frequently Asked Questions
|
||||||
|
|
||||||
- [Why are there raw versions and formatted ones?](#why-are-there-raw-versions-and-formatted-ones)
|
* [Why are there raw versions and formatted ones?](#why-are-there-raw-versions-and-formatted-ones)
|
||||||
- [Some methods work slightly different](#some-methods-work-slightly-different)
|
* [Some methods work slightly different](#some-methods-work-slightly-different)
|
||||||
|
|
||||||
## Why are there raw versions and formatted ones?
|
### Why are there raw versions and formatted ones?
|
||||||
|
|
||||||
For the purposes of my projects I don't really need all the stuff RMV gives (even though it's not much).
|
For the purposes of my projects I don't really need all the stuff RMV gives (even though it's not much).
|
||||||
I only need some specific things. However I do understand that in some cases other users may find
|
I only need some specific things. However I do understand that in some cases other users may find
|
||||||
those methods quite useful so I implemented them as well.
|
those methods quite useful so I implemented them as well.
|
||||||
|
|
||||||
|
### Some methods work slightly different
|
||||||
## Some methods work slightly different
|
|
||||||
|
|
||||||
Can be. Not all function arguments written may work perfectly because I simply did not test each and
|
Can be. Not all function arguments written may work perfectly because I simply did not test each and
|
||||||
every request. Some of arguments may be irrelevant in my use-case and the others are used quite rare at all.
|
every request. Some of arguments may be irrelevant in my use-case and the others are used quite rare at all.
|
||||||
Just [make an issue](https://git.end-play.xyz/profitroll/PythonRMV/issues/new) and I'll implement it correct when I'll have some free time.
|
Just [make an issue](https://git.end-play.xyz/profitroll/PythonRMV/issues/new) and I'll implement it correct when I'll have some free time.
|
||||||
|
|
||||||
# To-Do
|
## To-Do
|
||||||
## General
|
|
||||||
- [ ] Docs in Wiki
|
|
||||||
|
|
||||||
## Raw methods
|
### General
|
||||||
- [x] arrivalBoard (board_arrival)
|
|
||||||
- [x] departureBoard (board_departure)
|
|
||||||
- [x] himsearch (him_search)
|
|
||||||
- [x] journeyDetail (journey_detail)
|
|
||||||
- [x] location.nearbystops (stop_by_coords)
|
|
||||||
- [x] location.name (stop_by_name)
|
|
||||||
- [x] trip (trip_find)
|
|
||||||
- [x] recon (trip_recon)
|
|
||||||
|
|
||||||
## Normal methods
|
* [ ] Docs in Wiki
|
||||||
- [x] arrivalBoard (board_arrival)
|
* [ ] Tickets
|
||||||
- [x] departureBoard (board_departure)
|
|
||||||
- [x] himsearch (him_search)
|
|
||||||
- [x] journeyDetail (journey_detail)
|
|
||||||
- [x] location.nearbystops (stop_by_coords)
|
|
||||||
- [x] location.name (stop_by_name)
|
|
||||||
- [x] trip (trip_find)
|
|
||||||
- [x] recon (trip_recon)
|
|
||||||
|
@@ -21,14 +21,10 @@ trip = client.trip_find(origin_id=origin.id, dest_id=destination.id)
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
__name__ = "pyrmv"
|
__name__ = "pyrmv"
|
||||||
__version__ = "0.3.1"
|
__version__ = "0.3.5"
|
||||||
__license__ = "MIT License"
|
__license__ = "MIT License"
|
||||||
__author__ = "Profitroll"
|
__author__ = "Profitroll"
|
||||||
|
|
||||||
from . import raw
|
from . import const, enums, errors, raw, utility
|
||||||
from . import const
|
|
||||||
from . import enums
|
|
||||||
from . import errors
|
|
||||||
from . import utility
|
|
||||||
from .classes import *
|
from .classes import *
|
||||||
from .classes.Client import Client
|
from .classes.Client import Client
|
||||||
|
@@ -3,17 +3,23 @@ from pyrmv.classes.Message import Message
|
|||||||
|
|
||||||
class LineArrival():
|
class LineArrival():
|
||||||
|
|
||||||
def __init__(self, data, client):
|
def __init__(self, data, client, retrieve_stops: bool = True):
|
||||||
self.journey = client.journey_detail(data["JourneyDetailRef"]["ref"])
|
self.journey = client.journey_detail(data["JourneyDetailRef"]["ref"])
|
||||||
self.status = data["JourneyStatus"]
|
self.status = data["JourneyStatus"]
|
||||||
self.messages = []
|
self.messages = []
|
||||||
for message in data["Messages"]["Message"]:
|
if "Messages" in data:
|
||||||
self.messages.append(Message(message))
|
self.messages.extend(
|
||||||
|
Message(message) for message in data["Messages"]["Message"]
|
||||||
|
)
|
||||||
self.name = data["name"]
|
self.name = data["name"]
|
||||||
self.type = data["type"]
|
self.type = data["type"]
|
||||||
self.stop_name = data["stop"]
|
self.stop_name = data["stop"]
|
||||||
self.stop_id = data["stopid"]
|
self.stop_id = data["stopid"]
|
||||||
self.stop_id_ext = data["stopExtId"]
|
self.stop_id_ext = data["stopExtId"]
|
||||||
|
if retrieve_stops:
|
||||||
|
self.stop = client.stop_by_id(self.stop_id)
|
||||||
|
else:
|
||||||
|
self.stop = None
|
||||||
self.stop = client.stop_by_id(self.stop_id)
|
self.stop = client.stop_by_id(self.stop_id)
|
||||||
self.time = datetime.strptime(data["time"], "%H:%M:%S")
|
self.time = datetime.strptime(data["time"], "%H:%M:%S")
|
||||||
self.date = datetime.strptime(data["date"], "%Y-%m-%d")
|
self.date = datetime.strptime(data["date"], "%Y-%m-%d")
|
||||||
@@ -28,18 +34,23 @@ class LineArrival():
|
|||||||
|
|
||||||
class LineDeparture():
|
class LineDeparture():
|
||||||
|
|
||||||
def __init__(self, data, client):
|
def __init__(self, data, client, retrieve_stops: bool = True):
|
||||||
self.journey = client.journey_detail(data["JourneyDetailRef"]["ref"])
|
self.journey = client.journey_detail(data["JourneyDetailRef"]["ref"])
|
||||||
self.status = data["JourneyStatus"]
|
self.status = data["JourneyStatus"]
|
||||||
self.messages = []
|
self.messages = []
|
||||||
for message in data["Messages"]["Message"]:
|
if "Messages" in data:
|
||||||
self.messages.append(Message(message))
|
self.messages.extend(
|
||||||
|
Message(message) for message in data["Messages"]["Message"]
|
||||||
|
)
|
||||||
self.name = data["name"]
|
self.name = data["name"]
|
||||||
self.type = data["type"]
|
self.type = data["type"]
|
||||||
self.stop_name = data["stop"]
|
self.stop_name = data["stop"]
|
||||||
self.stop_id = data["stopid"]
|
self.stop_id = data["stopid"]
|
||||||
self.stop_id_ext = data["stopExtId"]
|
self.stop_id_ext = data["stopExtId"]
|
||||||
self.stop = client.stop_by_id(self.stop_id)
|
if retrieve_stops:
|
||||||
|
self.stop = client.stop_by_id(self.stop_id)
|
||||||
|
else:
|
||||||
|
self.stop = None
|
||||||
self.time = datetime.strptime(data["time"], "%H:%M:%S")
|
self.time = datetime.strptime(data["time"], "%H:%M:%S")
|
||||||
self.date = datetime.strptime(data["date"], "%Y-%m-%d")
|
self.date = datetime.strptime(data["date"], "%Y-%m-%d")
|
||||||
if ("rtTime" in data) and ("rtDate" in data):
|
if ("rtTime" in data) and ("rtDate" in data):
|
||||||
@@ -54,10 +65,12 @@ class LineDeparture():
|
|||||||
|
|
||||||
class BoardArrival(list):
|
class BoardArrival(list):
|
||||||
|
|
||||||
def __init__(self, data: dict, client):
|
def __init__(self, data: dict, client, retrieve_stops: bool = True):
|
||||||
super().__init__([])
|
super().__init__([])
|
||||||
|
if "Arrival" not in data:
|
||||||
|
return
|
||||||
for line in data["Arrival"]:
|
for line in data["Arrival"]:
|
||||||
self.append(LineArrival(line, client))
|
self.append(LineArrival(line, client, retrieve_stops=retrieve_stops))
|
||||||
|
|
||||||
def __str__(self) -> str:
|
def __str__(self) -> str:
|
||||||
lines = []
|
lines = []
|
||||||
@@ -67,10 +80,12 @@ class BoardArrival(list):
|
|||||||
|
|
||||||
class BoardDeparture(list):
|
class BoardDeparture(list):
|
||||||
|
|
||||||
def __init__(self, data: dict, client):
|
def __init__(self, data: dict, client, retrieve_stops: bool = True):
|
||||||
super().__init__([])
|
super().__init__([])
|
||||||
|
if "Departure" not in data:
|
||||||
|
return
|
||||||
for line in data["Departure"]:
|
for line in data["Departure"]:
|
||||||
self.append(LineDeparture(line, client))
|
self.append(LineDeparture(line, client, retrieve_stops=retrieve_stops))
|
||||||
|
|
||||||
def __str__(self) -> str:
|
def __str__(self) -> str:
|
||||||
lines = []
|
lines = []
|
||||||
|
@@ -57,7 +57,7 @@ class Client():
|
|||||||
|
|
||||||
# Look for stops using all possible methods
|
# Look for stops using all possible methods
|
||||||
stop_by_coords client.stop_by_coords(50.131140, 8.733362, radius=300, max_number=3)
|
stop_by_coords client.stop_by_coords(50.131140, 8.733362, radius=300, max_number=3)
|
||||||
stop_by_id = client.stop_by_id("A=1@O=Offenbach (Main)-Zentrum Marktplatz\/Frankf. Straße@X=8764456@Y=50105181@U=80@L=3002510@")
|
stop_by_id = client.stop_by_id("A=1@O=Offenbach (Main)-Zentrum Marktplatz/Frankf. Straße@X=8764456@Y=50105181@U=80@L=3002510@")
|
||||||
stop_by_name = client.stop_by_name("Groß Karben", max_number=3)
|
stop_by_name = client.stop_by_name("Groß Karben", max_number=3)
|
||||||
|
|
||||||
# Find a trip and reconstruct it
|
# Find a trip and reconstruct it
|
||||||
@@ -70,17 +70,18 @@ class Client():
|
|||||||
self.access_id = access_id
|
self.access_id = access_id
|
||||||
|
|
||||||
def board_arrival(self,
|
def board_arrival(self,
|
||||||
id: str = None, # type: ignore
|
id: Union[str, None] = None,
|
||||||
id_ext: str = None, # type: ignore
|
id_ext: Union[str, None] = None,
|
||||||
direction: Union[str, Stop, StopTrip] = None, # type: ignore
|
direction: Union[str, Stop, StopTrip, None] = None,
|
||||||
date: Union[str, datetime] = None, # type: ignore
|
date: Union[str, datetime, None] = None,
|
||||||
time: Union[str, datetime] = None, # type: ignore
|
time: Union[str, datetime, None] = None,
|
||||||
duration: Union[int, timedelta] = 60,
|
duration: Union[int, timedelta] = 60,
|
||||||
journeys_max: int = -1,
|
journeys_max: int = -1,
|
||||||
operators: Union[str, list] = None, # type: ignore
|
operators: Union[str, list, None] = None,
|
||||||
lines: Union[str, list] = None, # type: ignore
|
lines: Union[str, list, None] = None,
|
||||||
passlist: bool = False,
|
passlist: bool = False,
|
||||||
board_type: Literal[BoardArrivalType.ARR, BoardArrivalType.ARR_EQUIVS, BoardArrivalType.ARR_MAST, BoardArrivalType.ARR_STATION] = BoardArrivalType.ARR,
|
board_type: Literal[BoardArrivalType.ARR, BoardArrivalType.ARR_EQUIVS, BoardArrivalType.ARR_MAST, BoardArrivalType.ARR_STATION] = BoardArrivalType.ARR,
|
||||||
|
retrieve_stops: bool = True
|
||||||
) -> BoardArrival:
|
) -> BoardArrival:
|
||||||
"""Method returns a board with arriving transport.
|
"""Method returns a board with arriving transport.
|
||||||
|
|
||||||
@@ -98,6 +99,7 @@ class Client():
|
|||||||
* lines (`Union[str, list]`, **optional**): Only journeys running the given line are part of the result. To filter multiple lines, provide a list or separate the codes by comma or provide a list. If the line should not be part of the be trip, negate it by putting ! in front of it. Defaults to `None`.
|
* lines (`Union[str, list]`, **optional**): Only journeys running the given line are part of the result. To filter multiple lines, provide a list or separate the codes by comma or provide a list. If the line should not be part of the be trip, negate it by putting ! in front of it. Defaults to `None`.
|
||||||
* passlist (`bool`, **optional**): Include a list of all passed waystops. Defaults to `False`.
|
* passlist (`bool`, **optional**): Include a list of all passed waystops. Defaults to `False`.
|
||||||
* board_type (`Union[BoardArrivalType.ARR, BoardArrivalType.ARR_EQUIVS, BoardArrivalType.ARR_MAST, BoardArrivalType.ARR_STATION]`, optional): Set the station arrival board type to be used. Defaults to `BoardArrivalType.ARR`.
|
* board_type (`Union[BoardArrivalType.ARR, BoardArrivalType.ARR_EQUIVS, BoardArrivalType.ARR_MAST, BoardArrivalType.ARR_STATION]`, optional): Set the station arrival board type to be used. Defaults to `BoardArrivalType.ARR`.
|
||||||
|
* retrieve_stops (`bool`, **optional**): Whether the stops should be retrieved as a `Stop` objects. Using `False` will drastically increase processing speed and decrease number of requests made (good for low access_key rate limit). Defaults to `True`.
|
||||||
|
|
||||||
### Returns:
|
### Returns:
|
||||||
* BoardArrival: Instance of `BoardArrival` object.
|
* BoardArrival: Instance of `BoardArrival` object.
|
||||||
@@ -110,7 +112,7 @@ class Client():
|
|||||||
accessId=self.access_id,
|
accessId=self.access_id,
|
||||||
id=id,
|
id=id,
|
||||||
extId=id_ext,
|
extId=id_ext,
|
||||||
direction=direction,
|
direction=direction, # type: ignore
|
||||||
date=date,
|
date=date,
|
||||||
time=time,
|
time=time,
|
||||||
duration=duration,
|
duration=duration,
|
||||||
@@ -123,20 +125,21 @@ class Client():
|
|||||||
|
|
||||||
find_exception(board_raw)
|
find_exception(board_raw)
|
||||||
|
|
||||||
return BoardArrival(board_raw, self)
|
return BoardArrival(board_raw, self, retrieve_stops=retrieve_stops)
|
||||||
|
|
||||||
def board_departure(self,
|
def board_departure(self,
|
||||||
id: str = None, # type: ignore
|
id: Union[str, None] = None,
|
||||||
id_ext: str = None, # type: ignore
|
id_ext: Union[str, None] = None,
|
||||||
direction: Union[str, Stop, StopTrip] = None, # type: ignore
|
direction: Union[str, Stop, StopTrip, None] = None,
|
||||||
date: Union[str, datetime] = None, # type: ignore
|
date: Union[str, datetime, None] = None,
|
||||||
time: Union[str, datetime] = None, # type: ignore
|
time: Union[str, datetime, None] = None,
|
||||||
duration: Union[int, timedelta] = 60,
|
duration: Union[int, timedelta] = 60,
|
||||||
journeys_max: int = -1,
|
journeys_max: int = -1,
|
||||||
operators: Union[str, list] = None, # type: ignore
|
operators: Union[str, list, None] = None,
|
||||||
lines: Union[str, list] = None, # type: ignore
|
lines: Union[str, list, None] = None,
|
||||||
passlist: bool = False,
|
passlist: bool = False,
|
||||||
board_type: Literal[BoardDepartureType.DEP, BoardDepartureType.DEP_EQUIVS, BoardDepartureType.DEP_MAST, BoardDepartureType.DEP_STATION] = BoardDepartureType.DEP,
|
board_type: Literal[BoardDepartureType.DEP, BoardDepartureType.DEP_EQUIVS, BoardDepartureType.DEP_MAST, BoardDepartureType.DEP_STATION] = BoardDepartureType.DEP,
|
||||||
|
retrieve_stops: bool = True
|
||||||
) -> BoardDeparture:
|
) -> BoardDeparture:
|
||||||
"""Method returns a board with departing transport.
|
"""Method returns a board with departing transport.
|
||||||
|
|
||||||
@@ -154,6 +157,7 @@ class Client():
|
|||||||
* lines (`Union[str, list]`, **optional**): Only journeys running the given line are part of the result. To filter multiple lines, provide a list or separate the codes by comma or provide a list. If the line should not be part of the be trip, negate it by putting ! in front of it. Defaults to `None`.
|
* lines (`Union[str, list]`, **optional**): Only journeys running the given line are part of the result. To filter multiple lines, provide a list or separate the codes by comma or provide a list. If the line should not be part of the be trip, negate it by putting ! in front of it. Defaults to `None`.
|
||||||
* passlist (`bool`, **optional**): Include a list of all passed waystops. Defaults to `False`.
|
* passlist (`bool`, **optional**): Include a list of all passed waystops. Defaults to `False`.
|
||||||
* board_type (`Union[BoardDepartureType.DEP, BoardDepartureType.DEP_EQUIVS, BoardDepartureType.DEP_MAST, BoardDepartureType.DEP_STATION]`, optional): Set the station departure board type to be used. Defaults to `BoardDepartureType.DEP`.
|
* board_type (`Union[BoardDepartureType.DEP, BoardDepartureType.DEP_EQUIVS, BoardDepartureType.DEP_MAST, BoardDepartureType.DEP_STATION]`, optional): Set the station departure board type to be used. Defaults to `BoardDepartureType.DEP`.
|
||||||
|
* retrieve_stops (`bool`, **optional**): Whether the stops should be retrieved as a `Stop` objects. Using `False` will drastically increase processing speed and decrease number of requests made (good for low access_key rate limit). Defaults to `True`.
|
||||||
|
|
||||||
### Returns:
|
### Returns:
|
||||||
* BoardDeparture: Instance of `BoardDeparture` object.
|
* BoardDeparture: Instance of `BoardDeparture` object.
|
||||||
@@ -166,7 +170,7 @@ class Client():
|
|||||||
accessId=self.access_id,
|
accessId=self.access_id,
|
||||||
id=id,
|
id=id,
|
||||||
extId=id_ext,
|
extId=id_ext,
|
||||||
direction=direction,
|
direction=direction, # type: ignore
|
||||||
date=date,
|
date=date,
|
||||||
time=time,
|
time=time,
|
||||||
duration=duration,
|
duration=duration,
|
||||||
@@ -179,31 +183,31 @@ class Client():
|
|||||||
|
|
||||||
find_exception(board_raw)
|
find_exception(board_raw)
|
||||||
|
|
||||||
return BoardDeparture(board_raw, self)
|
return BoardDeparture(board_raw, self, retrieve_stops=retrieve_stops)
|
||||||
|
|
||||||
def him_search(self,
|
def him_search(self,
|
||||||
date_begin: Union[str, datetime] = None,
|
date_begin: Union[str, datetime, None] = None,
|
||||||
date_end: Union[str, datetime] = None,
|
date_end: Union[str, datetime, None] = None,
|
||||||
time_begin: Union[str, datetime] = None,
|
time_begin: Union[str, datetime, None] = None,
|
||||||
time_end: Union[str, datetime] = None,
|
time_end: Union[str, datetime, None] = None,
|
||||||
weekdays: Union[str, OrderedDict[str, bool]] = None,
|
weekdays: Union[str, OrderedDict[str, bool], None] = None,
|
||||||
ids: list = None,
|
ids: Union[list, None] = None,
|
||||||
operators: list = None,
|
operators: Union[list, None] = None,
|
||||||
categories: list = None,
|
categories: Union[list, None] = None,
|
||||||
channels: list = None,
|
channels: Union[list, None] = None,
|
||||||
companies: list = None,
|
companies: Union[list, None] = None,
|
||||||
lines: list = None,
|
lines: Union[list, None] = None,
|
||||||
line_ids: list = None,
|
line_ids: Union[list, None] = None,
|
||||||
stations: Union[list, List[Stop]] = None,
|
stations: Union[list, List[Stop], None] = None,
|
||||||
station_from: Union[str, Stop] = None,
|
station_from: Union[str, Stop, None] = None,
|
||||||
station_to: Union[str, Stop] = None,
|
station_to: Union[str, Stop, None] = None,
|
||||||
both_ways: bool = None,
|
both_ways: Union[bool, None] = None,
|
||||||
train_names: list = None,
|
train_names: Union[list, None] = None,
|
||||||
search_mode: Literal[SearchMode.MATCH, SearchMode.NOMATCH, SearchMode.TFMATCH] = None,
|
search_mode: Union[Literal[SearchMode.MATCH, SearchMode.NOMATCH, SearchMode.TFMATCH], None] = None,
|
||||||
affected_journey_mode: Literal[AffectedJourneyMode.ALL, AffectedJourneyMode.OFF] = None,
|
affected_journey_mode: Union[Literal[AffectedJourneyMode.ALL, AffectedJourneyMode.OFF], None] = None,
|
||||||
affected_journey_stop_mode: Literal[AffectedJourneyStopMode.ALL, AffectedJourneyStopMode.IMP, AffectedJourneyStopMode.OFF] = None,
|
affected_journey_stop_mode: Union[Literal[AffectedJourneyStopMode.ALL, AffectedJourneyStopMode.IMP, AffectedJourneyStopMode.OFF], None] = None,
|
||||||
priority_min: int = None,
|
priority_min: Union[int, None] = None,
|
||||||
priority_max: int = None
|
priority_max: Union[int, None] = None
|
||||||
) -> List[Message]:
|
) -> List[Message]:
|
||||||
"""The him_search method will deliver a list of HIM messages if matched by the given criteria as
|
"""The him_search method will deliver a list of HIM messages if matched by the given criteria as
|
||||||
well as affected products if any.
|
well as affected products if any.
|
||||||
@@ -284,32 +288,33 @@ class Client():
|
|||||||
lines=lines,
|
lines=lines,
|
||||||
lineids=line_ids,
|
lineids=line_ids,
|
||||||
stations=stations,
|
stations=stations,
|
||||||
fromstation=station_from,
|
fromstation=station_from, # type: ignore
|
||||||
tostation=station_to,
|
tostation=station_to, # type: ignore
|
||||||
bothways=both_ways,
|
bothways=both_ways,
|
||||||
trainnames=train_names,
|
trainnames=train_names,
|
||||||
searchmode=search_mode,
|
searchmode=search_mode, # type: ignore
|
||||||
affectedJourneyMode=affected_journey_mode,
|
affectedJourneyMode=affected_journey_mode, # type: ignore
|
||||||
affectedJourneyStopMode=affected_journey_stop_mode,
|
affectedJourneyStopMode=affected_journey_stop_mode, # type: ignore
|
||||||
maxprio=priority_max,
|
maxprio=priority_max,
|
||||||
minprio=priority_min
|
minprio=priority_min
|
||||||
)
|
)
|
||||||
|
|
||||||
find_exception(messages_raw)
|
find_exception(messages_raw)
|
||||||
|
|
||||||
for message in messages_raw["Message"]:
|
if "Message" in messages_raw:
|
||||||
messages.append(Message(message))
|
for message in messages_raw["Message"]:
|
||||||
|
messages.append(Message(message))
|
||||||
|
|
||||||
return messages
|
return messages
|
||||||
|
|
||||||
def journey_detail(self,
|
def journey_detail(self,
|
||||||
id: str,
|
id: str,
|
||||||
date: Union[str, datetime] = None, # type: ignore
|
date: Union[str, datetime, None] = None,
|
||||||
real_time_mode: Literal[RealTimeMode.FULL, RealTimeMode.INFOS, RealTimeMode.OFF, RealTimeMode.REALTIME, RealTimeMode.SERVER_DEFAULT] = None, # type: ignore
|
real_time_mode: Union[Literal[RealTimeMode.FULL, RealTimeMode.INFOS, RealTimeMode.OFF, RealTimeMode.REALTIME, RealTimeMode.SERVER_DEFAULT], None] = None,
|
||||||
from_id: str = None, # type: ignore
|
from_id: Union[str, None] = None,
|
||||||
from_index: int = None, # type: ignore
|
from_index: Union[int, None] = None,
|
||||||
to_id: str = None, # type: ignore
|
to_id: Union[str, None] = None,
|
||||||
to_index: int = None # type: ignore
|
to_index: Union[int, None] = None
|
||||||
) -> Journey:
|
) -> Journey:
|
||||||
"""The journey_detail method will deliver information about the complete route of a vehicle. The journey
|
"""The journey_detail method will deliver information about the complete route of a vehicle. The journey
|
||||||
identifier is part of a trip or `board_departure()` response. It contains a list of all stops/stations of this journey
|
identifier is part of a trip or `board_departure()` response. It contains a list of all stops/stations of this journey
|
||||||
@@ -340,7 +345,7 @@ class Client():
|
|||||||
accessId=self.access_id,
|
accessId=self.access_id,
|
||||||
id=id,
|
id=id,
|
||||||
date=date,
|
date=date,
|
||||||
rtMode=real_time_mode,
|
rtMode=real_time_mode, # type: ignore
|
||||||
fromId=from_id,
|
fromId=from_id,
|
||||||
fromIdx=from_index,
|
fromIdx=from_index,
|
||||||
toId=to_id,
|
toId=to_id,
|
||||||
@@ -359,7 +364,7 @@ class Client():
|
|||||||
radius: Union[int, float] = 1000,
|
radius: Union[int, float] = 1000,
|
||||||
max_number: int = 10,
|
max_number: int = 10,
|
||||||
stop_type: Literal[LocationType.S, LocationType.P, LocationType.SP, LocationType.SE, LocationType.SPE] = LocationType.S,
|
stop_type: Literal[LocationType.S, LocationType.P, LocationType.SP, LocationType.SE, LocationType.SPE] = LocationType.S,
|
||||||
selection_mode: Literal[SelectionMode.SLCT_A, SelectionMode.SLCT_N] = None, # type: ignore
|
selection_mode: Union[Literal[SelectionMode.SLCT_A, SelectionMode.SLCT_N], None] = None,
|
||||||
) -> List[Stop]:
|
) -> List[Stop]:
|
||||||
"""Method returns a list of stops around a given center coordinate.
|
"""Method returns a list of stops around a given center coordinate.
|
||||||
The returned results are ordered by their distance to the center coordinate.
|
The returned results are ordered by their distance to the center coordinate.
|
||||||
@@ -393,16 +398,17 @@ class Client():
|
|||||||
radius=radius,
|
radius=radius,
|
||||||
maxNo=max_number,
|
maxNo=max_number,
|
||||||
stopType=stop_type.code,
|
stopType=stop_type.code,
|
||||||
locationSelectionMode=selection_mode
|
locationSelectionMode=selection_mode # type: ignore
|
||||||
)
|
)
|
||||||
|
|
||||||
find_exception(stops_raw)
|
find_exception(stops_raw)
|
||||||
|
|
||||||
for stop in stops_raw["stopLocationOrCoordLocation"]:
|
if "stopLocationOrCoordLocation" in stops_raw:
|
||||||
if "StopLocation" in stop:
|
for stop in stops_raw["stopLocationOrCoordLocation"]:
|
||||||
stops.append(Stop(stop["StopLocation"]))
|
if "StopLocation" in stop:
|
||||||
elif "CoordLocation" in stop:
|
stops.append(Stop(stop["StopLocation"]))
|
||||||
stops.append(Stop(stop["CoordLocation"]))
|
elif "CoordLocation" in stop:
|
||||||
|
stops.append(Stop(stop["CoordLocation"]))
|
||||||
|
|
||||||
return stops
|
return stops
|
||||||
|
|
||||||
@@ -446,12 +452,12 @@ class Client():
|
|||||||
lang: Literal[Language.DE, Language.DA, Language.EN, Language.ES, Language.FR, Language.HU, Language.IT, Language.NL, Language.NO, Language.PL, Language.SV, Language.TR] = Language.EN,
|
lang: Literal[Language.DE, Language.DA, Language.EN, Language.ES, Language.FR, Language.HU, Language.IT, Language.NL, Language.NO, Language.PL, Language.SV, Language.TR] = Language.EN,
|
||||||
max_number: int = 10,
|
max_number: int = 10,
|
||||||
stop_type: Literal[LocationType.A, LocationType.ALL, LocationType.AP, LocationType.P, LocationType.S, LocationType.SA, LocationType.SP] = LocationType.ALL,
|
stop_type: Literal[LocationType.A, LocationType.ALL, LocationType.AP, LocationType.P, LocationType.S, LocationType.SA, LocationType.SP] = LocationType.ALL,
|
||||||
selection_mode: Literal[SelectionMode.SLCT_A, SelectionMode.SLCT_N] = None, # type: ignore
|
selection_mode: Union[Literal[SelectionMode.SLCT_A, SelectionMode.SLCT_N], None] = None,
|
||||||
coord_lat: Union[str, float] = None, # type: ignore
|
coord_lat: Union[str, float, None] = None,
|
||||||
coord_lon: Union[str, float] = None, # type: ignore
|
coord_lon: Union[str, float, None] = None,
|
||||||
radius: Union[int, float] = 1000,
|
radius: Union[int, float] = 1000,
|
||||||
refine_id: str = None, # type: ignore
|
refine_id: Union[str, None] = None,
|
||||||
stations: Union[str, list] = None, # type: ignore
|
stations: Union[str, list, None] = None,
|
||||||
filter_mode: Literal[FilterMode.DIST_PERI, FilterMode.EXCL_PERI, FilterMode.SLCT_PERI] = FilterMode.DIST_PERI
|
filter_mode: Literal[FilterMode.DIST_PERI, FilterMode.EXCL_PERI, FilterMode.SLCT_PERI] = FilterMode.DIST_PERI
|
||||||
) -> List[Stop]:
|
) -> List[Stop]:
|
||||||
"""Method can be used to perform a pattern matching of a user input and to retrieve a list
|
"""Method can be used to perform a pattern matching of a user input and to retrieve a list
|
||||||
@@ -489,7 +495,7 @@ class Client():
|
|||||||
lang=lang.code,
|
lang=lang.code,
|
||||||
maxNo=max_number,
|
maxNo=max_number,
|
||||||
stopType=stop_type.code,
|
stopType=stop_type.code,
|
||||||
locationSelectionMode=selection_mode,
|
locationSelectionMode=selection_mode, # type: ignore
|
||||||
coordLat=coord_lat,
|
coordLat=coord_lat,
|
||||||
coordLong=coord_lon,
|
coordLong=coord_lon,
|
||||||
radius=radius,
|
radius=radius,
|
||||||
@@ -500,58 +506,59 @@ class Client():
|
|||||||
|
|
||||||
find_exception(stops_raw)
|
find_exception(stops_raw)
|
||||||
|
|
||||||
for stop in stops_raw["stopLocationOrCoordLocation"]:
|
if "stopLocationOrCoordLocation" in stops_raw:
|
||||||
if "StopLocation" in stop:
|
for stop in stops_raw["stopLocationOrCoordLocation"]:
|
||||||
stops.append(Stop(stop["StopLocation"]))
|
if "StopLocation" in stop:
|
||||||
elif "CoordLocation" in stop:
|
stops.append(Stop(stop["StopLocation"]))
|
||||||
stops.append(Stop(stop["CoordLocation"]))
|
elif "CoordLocation" in stop:
|
||||||
|
stops.append(Stop(stop["CoordLocation"]))
|
||||||
|
|
||||||
return stops
|
return stops
|
||||||
|
|
||||||
def trip_find(self,
|
def trip_find(self,
|
||||||
lang: Literal[Language.DE, Language.DA, Language.EN, Language.ES, Language.FR, Language.HU, Language.IT, Language.NL, Language.NO, Language.PL, Language.SV, Language.TR] = Language.EN,
|
lang: Literal[Language.DE, Language.DA, Language.EN, Language.ES, Language.FR, Language.HU, Language.IT, Language.NL, Language.NO, Language.PL, Language.SV, Language.TR] = Language.EN,
|
||||||
|
|
||||||
origin_id: str = None, # type: ignore
|
origin_id: Union[str, None] = None,
|
||||||
origin_id_ext: str = None, # type: ignore
|
origin_id_ext: Union[str, None] = None,
|
||||||
origin_coord_lat: Union[str, float] = None, # type: ignore
|
origin_coord_lat: Union[str, float, None] = None,
|
||||||
origin_coord_lon: Union[str, float] = None, # type: ignore
|
origin_coord_lon: Union[str, float, None] = None,
|
||||||
origin_coord_name: str = None, # type: ignore
|
origin_coord_name: Union[str, None] = None,
|
||||||
|
|
||||||
destination_id: str = None, # type: ignore
|
destination_id: Union[str, None] = None,
|
||||||
destination_id_ext: str = None, # type: ignore
|
destination_id_ext: Union[str, None] = None,
|
||||||
destination_coord_lat: Union[str, float] = None, # type: ignore
|
destination_coord_lat: Union[str, float, None] = None,
|
||||||
destination_coord_lon: Union[str, float] = None, # type: ignore
|
destination_coord_lon: Union[str, float, None] = None,
|
||||||
destination_coord_name: str = None, # type: ignore
|
destination_coord_name: Union[str, None] = None,
|
||||||
|
|
||||||
via: str = None, # type: ignore
|
via: Union[str, None] = None,
|
||||||
via_id: str = None, # type: ignore
|
via_id: Union[str, None] = None,
|
||||||
via_gis: str = None, # type: ignore
|
via_gis: Union[str, None] = None,
|
||||||
via_wait_time: int = 0,
|
via_wait_time: int = 0,
|
||||||
|
|
||||||
avoid: str = None, # type: ignore
|
avoid: Union[str, None] = None,
|
||||||
avoid_id: str = None, # type: ignore
|
avoid_id: Union[str, None] = None,
|
||||||
|
|
||||||
change_time_percent: int = 100,
|
change_time_percent: int = 100,
|
||||||
change_time_min: int = None, # type: ignore
|
change_time_min: Union[int, None] = None,
|
||||||
change_time_max: int = None, # type: ignore
|
change_time_max: Union[int, None] = None,
|
||||||
change_time_add: int = None, # type: ignore
|
change_time_add: Union[int, None] = None,
|
||||||
change_max: int = None, # type: ignore
|
change_max: Union[int, None] = None,
|
||||||
|
|
||||||
date: Union[str, datetime] = None, # type: ignore
|
date: Union[str, datetime, None] = None,
|
||||||
time: Union[str, datetime] = None, # type: ignore
|
time: Union[str, datetime, None] = None,
|
||||||
|
|
||||||
search_arrival: bool = False,
|
search_arrival: bool = False,
|
||||||
|
|
||||||
trips_after_time: int = None, # type: ignore
|
trips_after_time: Union[int, None] = None,
|
||||||
trips_before_time: int = None, # type: ignore
|
trips_before_time: Union[int, None] = None,
|
||||||
|
|
||||||
context: str = None, # type: ignore
|
context: Union[str, None] = None,
|
||||||
|
|
||||||
passlist: bool = False,
|
passlist: bool = False,
|
||||||
operators: Union[str, list] = None, # type: ignore
|
operators: Union[str, list, None] = None,
|
||||||
|
|
||||||
lines: Union[str, list] = None, # type: ignore
|
lines: Union[str, list, None] = None,
|
||||||
lineids: Union[str, list] = None, # type: ignore
|
lineids: Union[str, list, None] = None,
|
||||||
|
|
||||||
iv_include: bool = False,
|
iv_include: bool = False,
|
||||||
iv_only: bool = False,
|
iv_only: bool = False,
|
||||||
@@ -560,11 +567,11 @@ class Client():
|
|||||||
|
|
||||||
passing_points: bool = False,
|
passing_points: bool = False,
|
||||||
|
|
||||||
real_time_mode: Literal[RealTimeMode.FULL, RealTimeMode.INFOS, RealTimeMode.OFF, RealTimeMode.REALTIME, RealTimeMode.SERVER_DEFAULT] = None, # type: ignore
|
real_time_mode: Union[Literal[RealTimeMode.FULL, RealTimeMode.INFOS, RealTimeMode.OFF, RealTimeMode.REALTIME, RealTimeMode.SERVER_DEFAULT], None] = None,
|
||||||
|
|
||||||
include_earlier: bool = False,
|
include_earlier: bool = False,
|
||||||
ict_alternatives: bool = False,
|
ict_alternatives: bool = False,
|
||||||
tariff: bool = None, # type: ignore
|
tariff: Union[bool, None] = None,
|
||||||
messages: bool = False,
|
messages: bool = False,
|
||||||
frequency: bool = True
|
frequency: bool = True
|
||||||
) -> List[Trip]:
|
) -> List[Trip]:
|
||||||
@@ -682,7 +689,7 @@ class Client():
|
|||||||
|
|
||||||
showPassingPoints=passing_points,
|
showPassingPoints=passing_points,
|
||||||
|
|
||||||
rtMode=real_time_mode,
|
rtMode=real_time_mode, # type: ignore
|
||||||
|
|
||||||
includeEarlier=include_earlier,
|
includeEarlier=include_earlier,
|
||||||
withICTAlternatives=ict_alternatives,
|
withICTAlternatives=ict_alternatives,
|
||||||
@@ -693,24 +700,25 @@ class Client():
|
|||||||
|
|
||||||
find_exception(trips_raw)
|
find_exception(trips_raw)
|
||||||
|
|
||||||
for trip in trips_raw["Trip"]:
|
if "Trip" in trips_raw:
|
||||||
trips.append(Trip(trip))
|
for trip in trips_raw["Trip"]:
|
||||||
|
trips.append(Trip(trip))
|
||||||
|
|
||||||
return trips
|
return trips
|
||||||
|
|
||||||
def trip_recon(self,
|
def trip_recon(self,
|
||||||
context: Union[str, Journey],
|
context: Union[str, Trip],
|
||||||
date: Union[str, datetime] = None,
|
date: Union[str, datetime, None] = None,
|
||||||
match_real_time: bool = None,
|
match_real_time: Union[bool, None] = None,
|
||||||
enable_replacements: bool = None,
|
enable_replacements: Union[bool, None] = None,
|
||||||
arrival_dev_lower: int = None,
|
arrival_dev_lower: Union[int, None] = None,
|
||||||
arrival_dev_upper: int = None,
|
arrival_dev_upper: Union[int, None] = None,
|
||||||
departure_dev_lower: int = None,
|
departure_dev_lower: Union[int, None] = None,
|
||||||
departure_dev_upper: int = None,
|
departure_dev_upper: Union[int, None] = None,
|
||||||
passlist: bool = None,
|
passlist: bool = False,
|
||||||
passing_points: bool = False,
|
passing_points: bool = False,
|
||||||
real_time_mode: Literal[RealTimeMode.FULL, RealTimeMode.INFOS, RealTimeMode.OFF, RealTimeMode.REALTIME, RealTimeMode.SERVER_DEFAULT] = None,
|
real_time_mode: Union[Literal[RealTimeMode.FULL, RealTimeMode.INFOS, RealTimeMode.OFF, RealTimeMode.REALTIME, RealTimeMode.SERVER_DEFAULT], None] = None,
|
||||||
tariff: bool = None,
|
tariff: Union[bool, None] = None,
|
||||||
messages: bool = False
|
messages: bool = False
|
||||||
) -> List[Trip]:
|
) -> List[Trip]:
|
||||||
"""Reconstructing a trip can be achieved using the reconstruction context provided by any trip result in the
|
"""Reconstructing a trip can be achieved using the reconstruction context provided by any trip result in the
|
||||||
@@ -749,7 +757,7 @@ class Client():
|
|||||||
trips = []
|
trips = []
|
||||||
trips_raw = raw_trip_recon(
|
trips_raw = raw_trip_recon(
|
||||||
accessId=self.access_id,
|
accessId=self.access_id,
|
||||||
ctx=context,
|
ctx=context, # type: ignore
|
||||||
date=date,
|
date=date,
|
||||||
matchRtType=match_real_time,
|
matchRtType=match_real_time,
|
||||||
enableReplacements=enable_replacements,
|
enableReplacements=enable_replacements,
|
||||||
@@ -759,14 +767,15 @@ class Client():
|
|||||||
depU=departure_dev_upper,
|
depU=departure_dev_upper,
|
||||||
passlist=passlist,
|
passlist=passlist,
|
||||||
showPassingPoints=passing_points,
|
showPassingPoints=passing_points,
|
||||||
rtMode=real_time_mode,
|
rtMode=real_time_mode, # type: ignore
|
||||||
tariff=tariff,
|
tariff=tariff,
|
||||||
trafficMessages=messages,
|
trafficMessages=messages,
|
||||||
)
|
)
|
||||||
|
|
||||||
find_exception(trips_raw)
|
find_exception(trips_raw)
|
||||||
|
|
||||||
for trip in trips_raw["Trip"]:
|
if "Trip" in trips_raw:
|
||||||
trips.append(Trip(trip))
|
for trip in trips_raw["Trip"]:
|
||||||
|
trips.append(Trip(trip))
|
||||||
|
|
||||||
return trips
|
return trips
|
@@ -11,11 +11,12 @@ class Journey():
|
|||||||
self.direction_flag = data["Directions"]["Direction"][0]["flag"]
|
self.direction_flag = data["Directions"]["Direction"][0]["flag"]
|
||||||
self.messages = []
|
self.messages = []
|
||||||
|
|
||||||
for stop in data["Stops"]["Stop"]:
|
self.stops.extend(Stop(stop) for stop in data["Stops"]["Stop"])
|
||||||
self.stops.append(Stop(stop))
|
|
||||||
|
|
||||||
for message in data["Messages"]["Message"]:
|
if "Messages" in data:
|
||||||
self.messages.append(Message(message))
|
self.messages.extend(
|
||||||
|
Message(message) for message in data["Messages"]["Message"]
|
||||||
|
)
|
||||||
|
|
||||||
def __str__(self) -> str:
|
def __str__(self) -> str:
|
||||||
return f"Journey with total of {len(self.stops)} stops and {len(self.messages)} messages heading {self.direction} ({self.direction_flag})"
|
return f"Journey with total of {len(self.stops)} stops and {len(self.messages)} messages heading {self.direction} ({self.direction_flag})"
|
@@ -61,7 +61,7 @@ class Message():
|
|||||||
self.text = data["text"]
|
self.text = data["text"]
|
||||||
self.company = data["company"]
|
self.company = data["company"]
|
||||||
self.category = data["category"]
|
self.category = data["category"]
|
||||||
self.priority = data["priority"]
|
self.priority = None if "priority" not in data else data["priority"]
|
||||||
self.products = data["products"]
|
self.products = data["products"]
|
||||||
self.icon = data["icon"]
|
self.icon = data["icon"]
|
||||||
self.time_start = datetime.strptime(data["sTime"], "%H:%M:%S")
|
self.time_start = datetime.strptime(data["sTime"], "%H:%M:%S")
|
||||||
|
@@ -11,19 +11,19 @@ except ImportError:
|
|||||||
# 2.25. Arrival Board (arrivalBoard)
|
# 2.25. Arrival Board (arrivalBoard)
|
||||||
def board_arrival(accessId: str,
|
def board_arrival(accessId: str,
|
||||||
json: bool = True,
|
json: bool = True,
|
||||||
id: str = None, # type: ignore
|
id: Union[str, None] = None,
|
||||||
extId: str = None, # type: ignore
|
extId: Union[str, None] = None,
|
||||||
direction: str = None, # type: ignore
|
direction: Union[str, None] = None,
|
||||||
date: Union[str, datetime] = None, # type: ignore
|
date: Union[str, datetime, None] = None,
|
||||||
time: Union[str, datetime] = None, # type: ignore
|
time: Union[str, datetime, None] = None,
|
||||||
duration: int = 60,
|
duration: Union[int, timedelta] = 60,
|
||||||
maxJourneys: int = -1,
|
maxJourneys: int = -1,
|
||||||
products: int = None, # type: ignore
|
products: Union[int, None] = None,
|
||||||
operators: Union[str, list] = None, # type: ignore
|
operators: Union[str, list, None] = None,
|
||||||
lines: Union[str, list] = None, # type: ignore
|
lines: Union[str, list, None] = None,
|
||||||
filterEquiv: bool = True,
|
filterEquiv: bool = True,
|
||||||
attributes: Union[str, list] = None, # type: ignore
|
attributes: Union[str, list, None] = None,
|
||||||
platforms: Union[str, list] = None, # type: ignore
|
platforms: Union[str, list, None] = None,
|
||||||
passlist: bool = False,
|
passlist: bool = False,
|
||||||
boardType: Literal["ARR", "ARR_EQUIVS", "ARR_MAST", "ARR_STATION"] = "ARR"
|
boardType: Literal["ARR", "ARR_EQUIVS", "ARR_MAST", "ARR_STATION"] = "ARR"
|
||||||
) -> dict:
|
) -> dict:
|
||||||
@@ -81,7 +81,7 @@ def board_arrival(accessId: str,
|
|||||||
elif str(var) == "duration":
|
elif str(var) == "duration":
|
||||||
if val != None:
|
if val != None:
|
||||||
if isinstance(val, timedelta):
|
if isinstance(val, timedelta):
|
||||||
payload[str(var)] = val.minutes
|
payload[str(var)] = val.minutes # type: ignore
|
||||||
else:
|
else:
|
||||||
payload[str(var)] = val
|
payload[str(var)] = val
|
||||||
elif str(var) == "boardType":
|
elif str(var) == "boardType":
|
||||||
|
@@ -11,19 +11,19 @@ except ImportError:
|
|||||||
# 2.24. Departure Board (departureBoard)
|
# 2.24. Departure Board (departureBoard)
|
||||||
def board_departure(accessId: str,
|
def board_departure(accessId: str,
|
||||||
json: bool = True,
|
json: bool = True,
|
||||||
id: str = None, # type: ignore
|
id: Union[str, None] = None,
|
||||||
extId: str = None, # type: ignore
|
extId: Union[str, None] = None,
|
||||||
direction: str = None, # type: ignore
|
direction: Union[str, None] = None,
|
||||||
date: Union[str, datetime] = None, # type: ignore
|
date: Union[str, datetime, None] = None,
|
||||||
time: Union[str, datetime] = None, # type: ignore
|
time: Union[str, datetime, None] = None,
|
||||||
duration: int = 60,
|
duration: Union[int, timedelta] = 60,
|
||||||
maxJourneys: int = -1,
|
maxJourneys: int = -1,
|
||||||
products: int = None, # type: ignore
|
products: Union[int, None] = None,
|
||||||
operators: Union[str, list] = None, # type: ignore
|
operators: Union[str, list, None] = None,
|
||||||
lines: Union[str, list] = None, # type: ignore
|
lines: Union[str, list, None] = None,
|
||||||
filterEquiv: bool = True,
|
filterEquiv: bool = True,
|
||||||
attributes: Union[str, list] = None, # type: ignore
|
attributes: Union[str, list, None] = None,
|
||||||
platforms: Union[str, list] = None, # type: ignore
|
platforms: Union[str, list, None] = None,
|
||||||
passlist: bool = False,
|
passlist: bool = False,
|
||||||
boardType: Literal["DEP", "DEP_EQUIVS", "DEP_MAST", "DEP_STATION"] = "DEP"
|
boardType: Literal["DEP", "DEP_EQUIVS", "DEP_MAST", "DEP_STATION"] = "DEP"
|
||||||
) -> dict:
|
) -> dict:
|
||||||
@@ -82,7 +82,7 @@ def board_departure(accessId: str,
|
|||||||
elif str(var) == "duration":
|
elif str(var) == "duration":
|
||||||
if val != None:
|
if val != None:
|
||||||
if isinstance(val, timedelta):
|
if isinstance(val, timedelta):
|
||||||
payload[str(var)] = val.minutes
|
payload[str(var)] = val.minutes # type: ignore
|
||||||
else:
|
else:
|
||||||
payload[str(var)] = val
|
payload[str(var)] = val
|
||||||
elif str(var) == "boardType":
|
elif str(var) == "boardType":
|
||||||
|
@@ -13,38 +13,38 @@ except ImportError:
|
|||||||
# 2.37. HIM Search (himsearch)
|
# 2.37. HIM Search (himsearch)
|
||||||
def him_search(accessId: str,
|
def him_search(accessId: str,
|
||||||
json: bool = True,
|
json: bool = True,
|
||||||
dateB: Union[str, datetime] = None, # type: ignore
|
dateB: Union[str, datetime, None] = None,
|
||||||
dateE: Union[str, datetime] = None, # type: ignore
|
dateE: Union[str, datetime, None] = None,
|
||||||
timeB: Union[str, datetime] = None, # type: ignore
|
timeB: Union[str, datetime, None] = None,
|
||||||
timeE: Union[str, datetime] = None, # type: ignore
|
timeE: Union[str, datetime, None] = None,
|
||||||
weekdays: Union[str, OrderedDict[str, bool]] = None, # type: ignore
|
weekdays: Union[str, OrderedDict[str, bool], None] = None,
|
||||||
himIds: Union[str, list] = None, # type: ignore
|
himIds: Union[str, list, None] = None,
|
||||||
hierarchicalView: bool = False,
|
hierarchicalView: bool = False,
|
||||||
operators: Union[str, list] = None, # type: ignore
|
operators: Union[str, list, None] = None,
|
||||||
categories: Union[str, list] = None, # type: ignore
|
categories: Union[str, list, None] = None,
|
||||||
channels: Union[str, list] = None, # type: ignore
|
channels: Union[str, list, None] = None,
|
||||||
companies: Union[str, list] = None, # type: ignore
|
companies: Union[str, list, None] = None,
|
||||||
lines: Union[str, list] = None, # type: ignore
|
lines: Union[str, list, None] = None,
|
||||||
lineids: Union[str, list] = None, # type: ignore
|
lineids: Union[str, list, None] = None,
|
||||||
stations: Union[str, list] = None, # type: ignore
|
stations: Union[str, list, None] = None,
|
||||||
fromstation: str = None, # type: ignore
|
fromstation: Union[str, None] = None,
|
||||||
tostation: str = None, # type: ignore
|
tostation: Union[str, None] = None,
|
||||||
bothways: bool = None, # type: ignore
|
bothways: Union[bool, None] = None,
|
||||||
trainnames: Union[str, list] = None, # type: ignore
|
trainnames: Union[str, list, None] = None,
|
||||||
metas: Union[str, list] = None, # type: ignore
|
metas: Union[str, list, None] = None,
|
||||||
himcategory: str = None, # type: ignore
|
himcategory: Union[str, None] = None,
|
||||||
himtags: Union[str, list] = None, # type: ignore
|
himtags: Union[str, list, None] = None,
|
||||||
regions: Union[str, list] = None, # type: ignore
|
regions: Union[str, list, None] = None,
|
||||||
himtext: Union[str, list] = None, # type: ignore
|
himtext: Union[str, list, None] = None,
|
||||||
himtexttags: Union[str, list] = None, # type: ignore
|
himtexttags: Union[str, list, None] = None,
|
||||||
additionalfields: Union[str, list, dict] = None, # type: ignore
|
additionalfields: Union[str, list, dict, None] = None,
|
||||||
poly: bool = False,
|
poly: bool = False,
|
||||||
searchmode: Literal["MATCH", "NOMATCH", "TFMATCH"] = None, # type: ignore
|
searchmode: Union[Literal["MATCH", "NOMATCH", "TFMATCH"], None] = None,
|
||||||
affectedJourneyMode: Literal["ALL", "OFF"] = None, # type: ignore
|
affectedJourneyMode: Union[Literal["ALL", "OFF"], None] = None,
|
||||||
affectedJourneyStopMode: Literal["ALL", "IMP", "OFF"] = None, # type: ignore
|
affectedJourneyStopMode: Union[Literal["ALL", "IMP", "OFF"], None] = None,
|
||||||
orderBy: Union[str, list] = None, # type: ignore
|
orderBy: Union[str, list, None] = None,
|
||||||
minprio: Union[str, int] = None, # type: ignore
|
minprio: Union[str, int, None] = None,
|
||||||
maxprio: Union[str, int] = None # type: ignore
|
maxprio: Union[str, int, None] = None
|
||||||
) -> dict:
|
) -> dict:
|
||||||
"""The himSearch will return a list of HIM messages if matched by the given criteria as well as affected
|
"""The himSearch will return a list of HIM messages if matched by the given criteria as well as affected
|
||||||
products if any.
|
products if any.
|
||||||
|
@@ -12,15 +12,15 @@ except ImportError:
|
|||||||
def journey_detail(accessId: str,
|
def journey_detail(accessId: str,
|
||||||
id: str,
|
id: str,
|
||||||
json: bool = True,
|
json: bool = True,
|
||||||
date: Union[str, datetime] = None, # type: ignore
|
date: Union[str, datetime, None] = None,
|
||||||
poly: bool = False,
|
poly: bool = False,
|
||||||
polyEnc: Literal["DLT", "GPA", "N"] = "N",
|
polyEnc: Literal["DLT", "GPA", "N"] = "N",
|
||||||
showPassingPoints: bool = False,
|
showPassingPoints: bool = False,
|
||||||
rtMode: Literal["FULL", "INFOS", "OFF", "REALTIME", "SERVER_DEFAULT"] = None, # type: ignore
|
rtMode: Union[Literal["FULL", "INFOS", "OFF", "REALTIME", "SERVER_DEFAULT"], None] = None,
|
||||||
fromId: str = None, # type: ignore
|
fromId: Union[str, None] = None,
|
||||||
fromIdx: str = None, # type: ignore
|
fromIdx: Union[int, None] = None,
|
||||||
toId: str = None, # type: ignore
|
toId: Union[str, None] = None,
|
||||||
toIdx: str = None, # type: ignore
|
toIdx: Union[int, None] = None,
|
||||||
baim: bool = False
|
baim: bool = False
|
||||||
) -> dict:
|
) -> dict:
|
||||||
"""The journey_detail method will deliver information about the complete route of a vehicle. The journey
|
"""The journey_detail method will deliver information about the complete route of a vehicle. The journey
|
||||||
|
@@ -16,11 +16,11 @@ def stop_by_coords(accessId: str,
|
|||||||
radius: Union[int, float] = 1000,
|
radius: Union[int, float] = 1000,
|
||||||
maxNo: int = 10,
|
maxNo: int = 10,
|
||||||
stopType: Literal["S", "P", "SP", "SE", "SPE"] = "S",
|
stopType: Literal["S", "P", "SP", "SE", "SPE"] = "S",
|
||||||
locationSelectionMode: Literal["SLCT_N", "SLCT_A"] = None, # type: ignore
|
locationSelectionMode: Union[Literal["SLCT_N", "SLCT_A"], None] = None,
|
||||||
products: int = None, # type: ignore
|
products: Union[int, None] = None,
|
||||||
meta: str = None, # type: ignore
|
meta: Union[str, None] = None,
|
||||||
sattributes: Union[str, list] = None, # type: ignore
|
sattributes: Union[str, list, None] = None,
|
||||||
sinfotexts: Union[str, list] = None # type: ignore
|
sinfotexts: Union[str, list, None] = None
|
||||||
) -> dict:
|
) -> dict:
|
||||||
"""The location.nearbystops service returns a list of stops around a given center coordinate (within a
|
"""The location.nearbystops service returns a list of stops around a given center coordinate (within a
|
||||||
radius of 1000m). The returned results are ordered by their distance to the center coordinate.
|
radius of 1000m). The returned results are ordered by their distance to the center coordinate.
|
||||||
|
@@ -14,15 +14,15 @@ def stop_by_name(accessId: str,
|
|||||||
json: bool = True,
|
json: bool = True,
|
||||||
maxNo: int = 10,
|
maxNo: int = 10,
|
||||||
stopType: Literal["A", "ALL", "AP", "P", "S", "SA", "SP"] = "ALL",
|
stopType: Literal["A", "ALL", "AP", "P", "S", "SA", "SP"] = "ALL",
|
||||||
locationSelectionMode: Literal["SLCT_N", "SLCT_A"] = None, # type: ignore
|
locationSelectionMode: Union[Literal["SLCT_N", "SLCT_A"], None] = None,
|
||||||
products: int = None, # type: ignore
|
products: Union[int, None] = None,
|
||||||
coordLat: Union[str, float] = None, # type: ignore
|
coordLat: Union[str, float, None] = None,
|
||||||
coordLong: Union[str, float] = None, # type: ignore
|
coordLong: Union[str, float, None] = None,
|
||||||
radius: Union[int, float] = 1000,
|
radius: Union[int, float] = 1000,
|
||||||
refineId: str = None, # type: ignore
|
refineId: Union[str, None] = None,
|
||||||
meta: str = None, # type: ignore
|
meta: Union[str, None] = None,
|
||||||
stations: Union[str, list] = None, # type: ignore
|
stations: Union[str, list, None] = None,
|
||||||
sattributes: Union[str, list] = None, # type: ignore
|
sattributes: Union[str, list, None] = None,
|
||||||
filterMode: Literal["DIST_PERI", "EXCL_PERI", "SLCT_PERI"] = "DIST_PERI"
|
filterMode: Literal["DIST_PERI", "EXCL_PERI", "SLCT_PERI"] = "DIST_PERI"
|
||||||
) -> dict:
|
) -> dict:
|
||||||
"""The location.name service can be used to perform a pattern matching of a user input and to retrieve a list
|
"""The location.name service can be used to perform a pattern matching of a user input and to retrieve a list
|
||||||
|
@@ -13,87 +13,87 @@ def trip_find(accessId: str,
|
|||||||
lang: Literal["de", "da", "en", "es", "fr", "hu", "it", "nl", "no", "pl", "sv", "tr"] = "en",
|
lang: Literal["de", "da", "en", "es", "fr", "hu", "it", "nl", "no", "pl", "sv", "tr"] = "en",
|
||||||
json: bool = True,
|
json: bool = True,
|
||||||
|
|
||||||
originId: str = None, # type: ignore
|
originId: Union[str, None] = None,
|
||||||
originExtId: str = None, # type: ignore
|
originExtId: Union[str, None] = None,
|
||||||
originCoordLat: Union[str, float] = None, # type: ignore
|
originCoordLat: Union[str, float, None] = None,
|
||||||
originCoordLong: Union[str, float] = None, # type: ignore
|
originCoordLong: Union[str, float, None] = None,
|
||||||
originCoordName: str = None, # type: ignore
|
originCoordName: Union[str, None] = None,
|
||||||
|
|
||||||
destId: str = None, # type: ignore
|
destId: Union[str, None] = None,
|
||||||
destExtId: str = None, # type: ignore
|
destExtId: Union[str, None] = None,
|
||||||
destCoordLat: Union[str, float] = None, # type: ignore
|
destCoordLat: Union[str, float, None] = None,
|
||||||
destCoordLong: Union[str, float] = None, # type: ignore
|
destCoordLong: Union[str, float, None] = None,
|
||||||
destCoordName: str = None, # type: ignore
|
destCoordName: Union[str, None] = None,
|
||||||
|
|
||||||
via: str = None, # type: ignore
|
via: Union[str, None] = None,
|
||||||
viaId: str = None, # type: ignore
|
viaId: Union[str, None] = None,
|
||||||
viaWaitTime: int = 0,
|
viaWaitTime: int = 0,
|
||||||
|
|
||||||
avoid: str = None, # type: ignore
|
avoid: Union[str, None] = None,
|
||||||
avoidId: str = None, # type: ignore
|
avoidId: Union[str, None] = None,
|
||||||
|
|
||||||
viaGis: str = None, # type: ignore
|
viaGis: Union[str, None] = None,
|
||||||
|
|
||||||
changeTimePercent: int = 100,
|
changeTimePercent: int = 100,
|
||||||
minChangeTime: int = None, # type: ignore
|
minChangeTime: Union[int, None] = None,
|
||||||
maxChangeTime: int = None, # type: ignore
|
maxChangeTime: Union[int, None] = None,
|
||||||
addChangeTime: int = None, # type: ignore
|
addChangeTime: Union[int, None] = None,
|
||||||
maxChange: int = None, # type: ignore
|
maxChange: Union[int, None] = None,
|
||||||
|
|
||||||
date: Union[str, datetime] = None, # type: ignore
|
date: Union[str, datetime, None] = None,
|
||||||
time: Union[str, datetime] = None, # type: ignore
|
time: Union[str, datetime, None] = None,
|
||||||
|
|
||||||
searchForArrival: bool = False,
|
searchForArrival: bool = False,
|
||||||
|
|
||||||
numF: int = None, # type: ignore
|
numF: Union[int, None] = None,
|
||||||
numB: int = None, # type: ignore
|
numB: Union[int, None] = None,
|
||||||
|
|
||||||
context: str = None, # type: ignore
|
context: Union[str, None] = None,
|
||||||
|
|
||||||
poly: bool = False,
|
poly: bool = False,
|
||||||
polyEnc: Literal["DLT", "GPA", "N"] = "N",
|
polyEnc: Literal["DLT", "GPA", "N"] = "N",
|
||||||
|
|
||||||
passlist: bool = False,
|
passlist: bool = False,
|
||||||
products: int = None, # type: ignore
|
products: Union[int, None] = None,
|
||||||
operators: Union[str, list] = None, # type: ignore
|
operators: Union[str, list, None] = None,
|
||||||
|
|
||||||
attributes: Union[str, list] = None, # type: ignore
|
attributes: Union[str, list, None] = None,
|
||||||
sattributes: Union[str, list] = None, # type: ignore
|
sattributes: Union[str, list, None] = None,
|
||||||
fattributes: Union[str, list] = None, # type: ignore
|
fattributes: Union[str, list, None] = None,
|
||||||
lines: Union[str, list] = None, # type: ignore
|
lines: Union[str, list, None] = None,
|
||||||
lineids: Union[str, list] = None, # type: ignore
|
lineids: Union[str, list, None] = None,
|
||||||
|
|
||||||
avoidPaths: List[Literal["SW", "EA", "ES", "RA", "CB"]] = None, # type: ignore
|
avoidPaths: Union[List[Literal["SW", "EA", "ES", "RA", "CB"]], None] = None,
|
||||||
|
|
||||||
originWalk: Union[str, list] = None, # type: ignore
|
originWalk: Union[str, list, None] = None,
|
||||||
originBike: Union[str, list] = None, # type: ignore
|
originBike: Union[str, list, None] = None,
|
||||||
originCar: Union[str, list] = None, # type: ignore
|
originCar: Union[str, list, None] = None,
|
||||||
originTaxi: Union[str, list] = None, # type: ignore
|
originTaxi: Union[str, list, None] = None,
|
||||||
originPark: Union[str, list] = None, # type: ignore
|
originPark: Union[str, list, None] = None,
|
||||||
originMeta: Union[str, list] = None, # type: ignore
|
originMeta: Union[str, list, None] = None,
|
||||||
|
|
||||||
destWalk: Union[str, list] = None, # type: ignore
|
destWalk: Union[str, list, None] = None,
|
||||||
destBike: Union[str, list] = None, # type: ignore
|
destBike: Union[str, list, None] = None,
|
||||||
destCar: Union[str, list] = None, # type: ignore
|
destCar: Union[str, list, None] = None,
|
||||||
destTaxi: Union[str, list] = None, # type: ignore
|
destTaxi: Union[str, list, None] = None,
|
||||||
destPark: Union[str, list] = None, # type: ignore
|
destPark: Union[str, list, None] = None,
|
||||||
destMeta: Union[str, list] = None, # type: ignore
|
destMeta: Union[str, list, None] = None,
|
||||||
|
|
||||||
totalWalk: Union[str, list] = None, # type: ignore
|
totalWalk: Union[str, list, None] = None,
|
||||||
totalBike: Union[str, list] = None, # type: ignore
|
totalBike: Union[str, list, None] = None,
|
||||||
totalCar: Union[str, list] = None, # type: ignore
|
totalCar: Union[str, list, None] = None,
|
||||||
totalTaxi: Union[str, list] = None, # type: ignore
|
totalTaxi: Union[str, list, None] = None,
|
||||||
totalMeta: Union[str, list] = None, # type: ignore
|
totalMeta: Union[str, list, None] = None,
|
||||||
|
|
||||||
gisProducts: str = None, # type: ignore
|
gisProducts: Union[str, None] = None,
|
||||||
|
|
||||||
includeIv: bool = False,
|
includeIv: bool = False,
|
||||||
ivOnly: bool = False,
|
ivOnly: bool = False,
|
||||||
|
|
||||||
mobilityProfile: str = None, # type: ignore
|
mobilityProfile: Union[str, None] = None,
|
||||||
|
|
||||||
bikeCarriage: bool = False,
|
bikeCarriage: bool = False,
|
||||||
bikeCarriageType: Literal["SINGLEBIKES", "SMALLGROUPS", "LARGEGROUPS"] = None, # type: ignore
|
bikeCarriageType: Union[Literal["SINGLEBIKES", "SMALLGROUPS", "LARGEGROUPS"], None] = None,
|
||||||
|
|
||||||
sleepingCar: bool = False,
|
sleepingCar: bool = False,
|
||||||
couchetteCoach: bool = False,
|
couchetteCoach: bool = False,
|
||||||
@@ -102,24 +102,24 @@ def trip_find(accessId: str,
|
|||||||
|
|
||||||
eco: bool = False,
|
eco: bool = False,
|
||||||
ecoCmp: bool = False,
|
ecoCmp: bool = False,
|
||||||
ecoParams: str = None, # type: ignore
|
ecoParams: Union[str, None] = None,
|
||||||
|
|
||||||
rtMode: Literal["FULL", "INFOS", "OFF", "REALTIME", "SERVER_DEFAULT"] = None, # type: ignore
|
rtMode: Union[Literal["FULL", "INFOS", "OFF", "REALTIME", "SERVER_DEFAULT"], None] = None,
|
||||||
|
|
||||||
unsharp: bool = False,
|
unsharp: bool = False,
|
||||||
trainFilter: str = None, # type: ignore
|
trainFilter: Union[str, None] = None,
|
||||||
economic: bool = False,
|
economic: bool = False,
|
||||||
groupFilter: str = None, # type: ignore
|
groupFilter: Union[str, None] = None,
|
||||||
|
|
||||||
blockingList: str = None, # type: ignore
|
blockingList: Union[str, None] = None,
|
||||||
blockedEdges: str = None, # type: ignore
|
blockedEdges: Union[str, None] = None,
|
||||||
|
|
||||||
trainComposition: bool = False,
|
trainComposition: bool = False,
|
||||||
includeEarlier: bool = False,
|
includeEarlier: bool = False,
|
||||||
withICTAlternatives: bool = False,
|
withICTAlternatives: bool = False,
|
||||||
tariff: bool = None, # type: ignore
|
tariff: Union[bool, None] = None,
|
||||||
trafficMessages: bool = False,
|
trafficMessages: bool = False,
|
||||||
travellerProfileData: str = None, # type: ignore
|
travellerProfileData: Union[str, None] = None,
|
||||||
withFreq: bool = True
|
withFreq: bool = True
|
||||||
) -> dict:
|
) -> dict:
|
||||||
"""The trip service calculates a trip from a specified origin to a specified destination. These might be
|
"""The trip service calculates a trip from a specified origin to a specified destination. These might be
|
||||||
|
@@ -14,31 +14,31 @@ def trip_recon(accessId: str,
|
|||||||
json: bool = True,
|
json: bool = True,
|
||||||
poly: bool = False,
|
poly: bool = False,
|
||||||
polyEnc: Literal["DLT", "GPA", "N"] = "N",
|
polyEnc: Literal["DLT", "GPA", "N"] = "N",
|
||||||
date: Union[str, datetime] = None, # type: ignore
|
date: Union[str, datetime, None] = None,
|
||||||
useCombinedComparison: bool = None, # type: ignore
|
useCombinedComparison: Union[bool, None] = None,
|
||||||
acceptGaps: bool = None, # type: ignore
|
acceptGaps: Union[bool, None] = None,
|
||||||
allowDummySections: bool = None, # type: ignore
|
allowDummySections: Union[bool, None] = None,
|
||||||
flagAllNonReachable: bool = None, # type: ignore
|
flagAllNonReachable: Union[bool, None] = None,
|
||||||
matchCatStrict: bool = None, # type: ignore
|
matchCatStrict: Union[bool, None] = None,
|
||||||
matchIdNonBlank: bool = None, # type: ignore
|
matchIdNonBlank: Union[bool, None] = None,
|
||||||
matchIdStrict: bool = None, # type: ignore
|
matchIdStrict: Union[bool, None] = None,
|
||||||
matchNumStrict: bool = None, # type: ignore
|
matchNumStrict: Union[bool, None] = None,
|
||||||
matchRtType: bool = None, # type: ignore
|
matchRtType: Union[bool, None] = None,
|
||||||
enableRtFullSearch: bool = None, # type: ignore
|
enableRtFullSearch: Union[bool, None] = None,
|
||||||
enableReplacements: bool = None, # type: ignore
|
enableReplacements: Union[bool, None] = None,
|
||||||
arrL: int = None, # type: ignore
|
arrL: Union[int, None] = None,
|
||||||
arrU: int = None, # type: ignore
|
arrU: Union[int, None] = None,
|
||||||
depL: int = None, # type: ignore
|
depL: Union[int, None] = None,
|
||||||
depU: int = None, # type: ignore
|
depU: Union[int, None] = None,
|
||||||
passlist: bool = False,
|
passlist: bool = False,
|
||||||
showPassingPoints: bool = False,
|
showPassingPoints: bool = False,
|
||||||
rtMode: Literal["FULL", "INFOS", "OFF", "REALTIME", "SERVER_DEFAULT"] = None, # type: ignore
|
rtMode: Union[Literal["FULL", "INFOS", "OFF", "REALTIME", "SERVER_DEFAULT"], None] = None,
|
||||||
eco: bool = False,
|
eco: bool = False,
|
||||||
ecoCmp: bool = False,
|
ecoCmp: bool = False,
|
||||||
ecoParams: str = None, # type: ignore
|
ecoParams: Union[str, None] = None,
|
||||||
tariff: bool = None, # type: ignore
|
tariff: Union[bool, None] = None,
|
||||||
trafficMessages: bool = None, # type: ignore
|
trafficMessages: Union[bool, None] = None,
|
||||||
travellerProfileData: str = None # type: ignore
|
travellerProfileData: Union[str, None] = None
|
||||||
) -> dict:
|
) -> dict:
|
||||||
"""Reconstructing a trip can be achieved using the reconstruction context provided by any trip result in the
|
"""Reconstructing a trip can be achieved using the reconstruction context provided by any trip result in the
|
||||||
ctxRecon attribute of Trip element. The result will be a true copy of the original trip search result given
|
ctxRecon attribute of Trip element. The result will be a true copy of the original trip search result given
|
||||||
|
@@ -1,3 +1,3 @@
|
|||||||
requests
|
requests~=2.31.0
|
||||||
xmltodict
|
xmltodict~=0.13.0
|
||||||
isodate
|
isodate~=0.6.1
|
18
setup.py
18
setup.py
@@ -2,10 +2,10 @@ from setuptools import setup
|
|||||||
|
|
||||||
setup(
|
setup(
|
||||||
name="pyrmv",
|
name="pyrmv",
|
||||||
version="0.3.1",
|
version="0.3.5",
|
||||||
author="Profitroll",
|
author="Profitroll",
|
||||||
description="Small module that makes your journey with RMV REST API somehow easier.",
|
description="Small module that makes your journey with RMV REST API somehow easier.",
|
||||||
long_description="Small module that makes your journey with RMV REST API somehow easier. Based fully on official RMV API reference and HAFAS documentation.\n\n# Usage\n\n```py\nimport pyrmv\n\n# Define a Client with API key\nclient = pyrmv.Client(\"AcessId\")\n\n# Get origin's and destination's location\norigin = client.stop_by_name(\"Frankfurt Hauptbahnhof\", max_number=3)[0]\ndestination = client.stop_by_coords(50.099613, 8.685449, max_number=3)[0]\n\n# Find a trip by locations got\ntrip = client.trip_find(origin_id=origin.id, dest_id=destination.id)\n```\n\n# Frequently Asked Questions\n\n- Why are there raw versions and formatted ones?\n- Some methods work slightly different\n\n## Why are there raw versions and formatted ones?\n\nFor the purposes of my projects I don't really need all the stuff RMV gives (even though it's not much).\nI only need some specific things. However I do understand that in some cases other users may find\nthose methods quite useful so I implemented them as well.\n\n\n## Some methods work slightly different\n\nCan be. Not all function arguments written may work perfectly because I simply did not test each and\nevery request. Some of arguments may be irrelevant in my use-case and the others are used quite rare at all.\nJust [make an issue](https://git.end-play.xyz/profitroll/PythonRMV/issues/new) and I'll implement it correct when I'll have some free time.\n\n# To-Do\n## General\n- [ ] Docs in Wiki\n\n## Raw methods\n- [x] arrivalBoard (board_arrival) \n- [x] departureBoard (board_departure) \n- [x] himsearch (him_search) \n- [x] journeyDetail (journey_detail)\n- [x] location.nearbystops (stop_by_coords) \n- [x] location.name (stop_by_name) \n- [x] trip (trip_find) \n- [x] recon (trip_recon)\n\n## Normal methods\n- [x] arrivalBoard (board_arrival) \n- [x] departureBoard (board_departure) \n- [x] himsearch (him_search) \n- [x] journeyDetail (journey_detail)\n- [x] location.nearbystops (stop_by_coords) \n- [x] location.name (stop_by_name) \n- [x] trip (trip_find) \n- [x] recon (trip_recon)",
|
long_description="Small module that makes your journey with RMV REST API somehow easier. Based fully on official RMV API reference and HAFAS documentation.\n\n## Requirements\n\n* RMV API key (Get it [here](https://opendata.rmv.de/site/start.html))\n* Python3 (Tested versions are 3.7.9 and 3.9.13)\n* git (Only for installation from source)\n\n## Installation\n\nIf you have everything listed in [requirements](#requirements), then let's begin.\n\n### Variant 1\n\n1. `python -m pip install pyrmv`\n\n### Variant 2\n\n1. `git clone https://git.end-play.xyz/profitroll/PythonRMV.git`\n2. `cd PythonRMV`\n3. `python setup.py install`\n\n## Usage\n\n```py\nimport pyrmv\n\n# Define a Client with API key\nclient = pyrmv.Client(\"AcessId\")\n\n# Get origin's and destination's location\norigin = client.stop_by_name(\"Frankfurt Hauptbahnhof\", max_number=3)[0]\ndestination = client.stop_by_coords(50.099613, 8.685449, max_number=3)[0]\n\n# Find a trip by locations got\ntrip = client.trip_find(origin_id=origin.id, dest_id=destination.id)\n```\n\n## Frequently Asked Questions\n\n* [Why are there raw versions and formatted ones?](#why-are-there-raw-versions-and-formatted-ones)\n* [Some methods work slightly different](#some-methods-work-slightly-different)\n\n### Why are there raw versions and formatted ones?\n\nFor the purposes of my projects I don't really need all the stuff RMV gives (even though it's not much).\nI only need some specific things. However I do understand that in some cases other users may find\nthose methods quite useful so I implemented them as well.\n\n### Some methods work slightly different\n\nCan be. Not all function arguments written may work perfectly because I simply did not test each and\nevery request. Some of arguments may be irrelevant in my use-case and the others are used quite rare at all.\nJust [make an issue](https://git.end-play.xyz/profitroll/PythonRMV/issues/new) and I'll implement it correct when I'll have some free time.\n\n## To-Do\n\n### General\n\n* [ ] Docs in Wiki\n* [ ] Tickets",
|
||||||
long_description_content_type="text/markdown",
|
long_description_content_type="text/markdown",
|
||||||
author_email="profitroll@end-play.xyz",
|
author_email="profitroll@end-play.xyz",
|
||||||
url="https://git.end-play.xyz/profitroll/PythonRMV",
|
url="https://git.end-play.xyz/profitroll/PythonRMV",
|
||||||
@@ -21,13 +21,9 @@ setup(
|
|||||||
"pyrmv.enums",
|
"pyrmv.enums",
|
||||||
"pyrmv.errors",
|
"pyrmv.errors",
|
||||||
"pyrmv.utility",
|
"pyrmv.utility",
|
||||||
"pyrmv.classes"
|
"pyrmv.classes",
|
||||||
],
|
|
||||||
install_requires=[
|
|
||||||
"requests",
|
|
||||||
"xmltodict",
|
|
||||||
"isodate"
|
|
||||||
],
|
],
|
||||||
|
install_requires=["requests", "xmltodict", "isodate"],
|
||||||
classifiers=[
|
classifiers=[
|
||||||
"Development Status :: 3 - Alpha",
|
"Development Status :: 3 - Alpha",
|
||||||
"Intended Audience :: Developers",
|
"Intended Audience :: Developers",
|
||||||
@@ -35,6 +31,6 @@ setup(
|
|||||||
"Operating System :: OS Independent",
|
"Operating System :: OS Independent",
|
||||||
"Programming Language :: Python :: 3",
|
"Programming Language :: Python :: 3",
|
||||||
"Topic :: Software Development :: Libraries :: Python Modules",
|
"Topic :: Software Development :: Libraries :: Python Modules",
|
||||||
"Topic :: Utilities"
|
"Topic :: Utilities",
|
||||||
]
|
],
|
||||||
)
|
)
|
||||||
|
12
test.py
12
test.py
@@ -1,6 +1,6 @@
|
|||||||
from datetime import datetime, timedelta
|
from datetime import datetime, timedelta
|
||||||
from os import makedirs
|
from os import makedirs
|
||||||
from typing import Union
|
from typing import Any
|
||||||
from ujson import loads, dumps, JSONDecodeError
|
from ujson import loads, dumps, JSONDecodeError
|
||||||
from test_colors import *
|
from test_colors import *
|
||||||
|
|
||||||
@@ -24,7 +24,7 @@ except FileNotFoundError:
|
|||||||
print("To skip entering your key every time create file 'test_key.json' with your apikey as a value for 'key' dict key.", flush=True)
|
print("To skip entering your key every time create file 'test_key.json' with your apikey as a value for 'key' dict key.", flush=True)
|
||||||
|
|
||||||
|
|
||||||
def test(name: str, data: Union[str, dict], raw: bool = False) -> None:
|
def test(name: str, data: Any, raw: bool = False) -> None:
|
||||||
|
|
||||||
makedirs("tests", exist_ok=True)
|
makedirs("tests", exist_ok=True)
|
||||||
|
|
||||||
@@ -56,7 +56,7 @@ def test(name: str, data: Union[str, dict], raw: bool = False) -> None:
|
|||||||
file.close()
|
file.close()
|
||||||
|
|
||||||
if data in ["", "\n"]:
|
if data in ["", "\n"]:
|
||||||
print(f"{BBLACK}[{BRED}ER{BBLACK}] {RESET}Test of {YELLOW}{name} {RESET}did not go well. ErrorCode is {BRED}{data['errorCode']}{RESET}. Check {CYAN}tests/{name}.txt {RESET}for more information.", flush=True)
|
print(f"{BBLACK}[{BRED}ER{BBLACK}] {RESET}Test of {YELLOW}{name} {RESET}did not go well. ErrorCode is {BRED}{data['errorCode']}{RESET}. Check {CYAN}tests/{name}.txt {RESET}for more information.", flush=True) # type: ignore
|
||||||
else:
|
else:
|
||||||
print(f"{BBLACK}[{BGREEN}OK{BBLACK}] {RESET}Test of {YELLOW}{name} {RESET}is not empty, so might be fine. Check {CYAN}tests/{name}.txt {RESET}for more information.", flush=True)
|
print(f"{BBLACK}[{BGREEN}OK{BBLACK}] {RESET}Test of {YELLOW}{name} {RESET}is not empty, so might be fine. Check {CYAN}tests/{name}.txt {RESET}for more information.", flush=True)
|
||||||
|
|
||||||
@@ -69,14 +69,14 @@ test("raw_journey_detail", pyrmv.raw.journey_detail(key, id="2|#VN#1#ST#16649065
|
|||||||
test("raw_stop_by_name", pyrmv.raw.stop_by_name(key, "Groß Karben", maxNo=3), raw=True)
|
test("raw_stop_by_name", pyrmv.raw.stop_by_name(key, "Groß Karben", maxNo=3), raw=True)
|
||||||
test("raw_stop_by_coords", pyrmv.raw.stop_by_coords(key, 50.131140, 8.733362, radius=300, maxNo=3), raw=True)
|
test("raw_stop_by_coords", pyrmv.raw.stop_by_coords(key, 50.131140, 8.733362, radius=300, maxNo=3), raw=True)
|
||||||
test("raw_trip_find", pyrmv.raw.trip_find(key, originCoordLat="50.084659", originCoordLong="8.785948", destCoordLat=50.1233048, destCoordLong=8.6129742, trafficMessages=True, numF=3), raw=True)
|
test("raw_trip_find", pyrmv.raw.trip_find(key, originCoordLat="50.084659", originCoordLong="8.785948", destCoordLat=50.1233048, destCoordLong=8.6129742, trafficMessages=True, numF=3), raw=True)
|
||||||
test("raw_trip_recon", pyrmv.raw.trip_recon(key, ctx="¶HKI¶G@F$A=2@O=50.084659, 8.785948@X=8785948@Y=50084659@u=0@a=128@$A=1@O=Offenbach (Main)-Tempelsee Wilhelm-Schramm-Straße@L=3008012@a=128@$202210061243$202210061247$$$1$$$$$$§T$A=1@O=Offenbach (Main)-Tempelsee Wilhelm-Schramm-Straße@L=3008012@a=128@$A=1@O=Offenbach (Main)-Zentrum Marktplatz\/Frankf. Straße@L=3002510@a=128@$202210061247$202210061300$Bus 101 $$1$$$$$$§W$A=1@O=Offenbach (Main)-Zentrum Marktplatz\/Frankf. Straße@L=3002510@a=128@$A=1@O=Offenbach (Main)-Zentrum Marktplatz@L=3011265@a=128@$202210061300$202210061304$$$1$$$$$$§T$A=1@O=Offenbach (Main)-Zentrum Marktplatz@L=3011265@a=128@$A=1@O=Frankfurt (Main) Taunusanlage@L=3000011@a=128@$202210061306$202210061319$ S2$$1$$$$$$§T$A=1@O=Frankfurt (Main) Taunusanlage@L=3000011@a=128@$A=1@O=Frankfurt (Main) Rödelheim Bahnhof@L=3001217@a=128@$202210061322$202210061333$ S5$$1$$$$$$§G@F$A=1@O=Frankfurt (Main) Rödelheim Bahnhof@L=3001217@a=128@$A=2@O=50.123304, 8.612974@X=8612974@Y=50123304@u=0@a=128@$202210061333$202210061344$$$1$$$$$$¶GP¶ft@0@2000@120@1@100@1@@0@@@@@false@0@-1@0@-1@-1@$f@$f@$f@$f@$f@$§bt@0@2000@120@1@100@1@@0@@@@@false@0@-1@0@-1@-1@$f@$f@$f@$f@$f@$§tt@0@2000@120@1@100@1@@0@@@@@false@0@-1@0@-1@-1@$f@$f@$f@$f@$f@$§¶KRCC¶#VE#1#"), raw=True)
|
test("raw_trip_recon", pyrmv.raw.trip_recon(key, ctx="¶HKI¶G@F$A=2@O=50.084659, 8.785948@X=8785948@Y=50084659@u=0@a=128@$A=1@O=Offenbach (Main)-Tempelsee Wilhelm-Schramm-Straße@L=3008012@a=128@$202210061243$202210061247$$$1$$$$$$§T$A=1@O=Offenbach (Main)-Tempelsee Wilhelm-Schramm-Straße@L=3008012@a=128@$A=1@O=Offenbach (Main)-Zentrum Marktplatz/Frankf. Straße@L=3002510@a=128@$202210061247$202210061300$Bus 101 $$1$$$$$$§W$A=1@O=Offenbach (Main)-Zentrum Marktplatz/Frankf. Straße@L=3002510@a=128@$A=1@O=Offenbach (Main)-Zentrum Marktplatz@L=3011265@a=128@$202210061300$202210061304$$$1$$$$$$§T$A=1@O=Offenbach (Main)-Zentrum Marktplatz@L=3011265@a=128@$A=1@O=Frankfurt (Main) Taunusanlage@L=3000011@a=128@$202210061306$202210061319$ S2$$1$$$$$$§T$A=1@O=Frankfurt (Main) Taunusanlage@L=3000011@a=128@$A=1@O=Frankfurt (Main) Rödelheim Bahnhof@L=3001217@a=128@$202210061322$202210061333$ S5$$1$$$$$$§G@F$A=1@O=Frankfurt (Main) Rödelheim Bahnhof@L=3001217@a=128@$A=2@O=50.123304, 8.612974@X=8612974@Y=50123304@u=0@a=128@$202210061333$202210061344$$$1$$$$$$¶GP¶ft@0@2000@120@1@100@1@@0@@@@@false@0@-1@0@-1@-1@$f@$f@$f@$f@$f@$§bt@0@2000@120@1@100@1@@0@@@@@false@0@-1@0@-1@-1@$f@$f@$f@$f@$f@$§tt@0@2000@120@1@100@1@@0@@@@@false@0@-1@0@-1@-1@$f@$f@$f@$f@$f@$§¶KRCC¶#VE#1#"), raw=True)
|
||||||
|
|
||||||
test("board_arrival", client.board_arrival("A=1@O=Frankfurt (Main) Taunusanlage@X=8668765@Y=50113478@U=80@L=3000011@", journeys_max=5))
|
test("board_arrival", client.board_arrival("A=1@O=Frankfurt (Main) Taunusanlage@X=8668765@Y=50113478@U=80@L=3000011@", journeys_max=5))
|
||||||
test("board_departure", client.board_departure("A=1@O=Frankfurt (Main) Taunusanlage@X=8668765@Y=50113478@U=80@L=3000011@", journeys_max=5))
|
test("board_departure", client.board_departure("A=1@O=Frankfurt (Main) Taunusanlage@X=8668765@Y=50113478@U=80@L=3000011@", journeys_max=5, retrieve_stops=False))
|
||||||
test("him_search", client.him_search(date_end=datetime.now()+timedelta(days=10), priority_min=2, train_names=["S9"]))
|
test("him_search", client.him_search(date_end=datetime.now()+timedelta(days=10), priority_min=2, train_names=["S9"]))
|
||||||
test("journey_detail", client.journey_detail("2|#VN#1#ST#1664906549#PI#0#ZI#12709#TA#0#DA#61022#1S#3008007#1T#1248#LS#3008043#LT#1323#PU#80#RT#1#CA#1aE#ZE#101#ZB#Bus 101 #PC#6#FR#3008007#FT#1248#TO#3008043#TT#1323#", real_time_mode=pyrmv.enums.RealTimeMode.FULL))
|
test("journey_detail", client.journey_detail("2|#VN#1#ST#1664906549#PI#0#ZI#12709#TA#0#DA#61022#1S#3008007#1T#1248#LS#3008043#LT#1323#PU#80#RT#1#CA#1aE#ZE#101#ZB#Bus 101 #PC#6#FR#3008007#FT#1248#TO#3008043#TT#1323#", real_time_mode=pyrmv.enums.RealTimeMode.FULL))
|
||||||
test("stop_by_coords", client.stop_by_coords(50.131140, 8.733362, radius=300, max_number=3))
|
test("stop_by_coords", client.stop_by_coords(50.131140, 8.733362, radius=300, max_number=3))
|
||||||
test("stop_by_id", client.stop_by_id("A=1@O=Offenbach (Main)-Zentrum Marktplatz\/Frankf. Straße@X=8764456@Y=50105181@U=80@L=3002510@"))
|
test("stop_by_id", client.stop_by_id("A=1@O=Offenbach (Main)-Zentrum Marktplatz/Frankf. Straße@X=8764456@Y=50105181@U=80@L=3002510@"))
|
||||||
test("stop_by_name", client.stop_by_name("Groß Karben", max_number=3))
|
test("stop_by_name", client.stop_by_name("Groß Karben", max_number=3))
|
||||||
test("trip_find", client.trip_find(origin_coord_lat="50.084659", origin_coord_lon="8.785948", destination_coord_lat=50.1233048, destination_coord_lon=8.6129742, messages=True))
|
test("trip_find", client.trip_find(origin_coord_lat="50.084659", origin_coord_lon="8.785948", destination_coord_lat=50.1233048, destination_coord_lon=8.6129742, messages=True))
|
||||||
test("trip_recon", client.trip_recon( client.trip_find(origin_coord_lat="50.084659", origin_coord_lon="8.785948", destination_coord_lat=50.1233048, destination_coord_lon=8.6129742, messages=True, trips_after_time=1)[0] ))
|
test("trip_recon", client.trip_recon( client.trip_find(origin_coord_lat="50.084659", origin_coord_lon="8.785948", destination_coord_lat=50.1233048, destination_coord_lon=8.6129742, messages=True, trips_after_time=1)[0] ))
|
Reference in New Issue
Block a user