🚂 VVS API Wrapper
Fully object-oriented library to integrate the VVS API into your project.
Installation
pip install vvspy
Examples
- Detect delay in upcoming departures:
from vvspy import get_departures
from vvspy.enums import Station
deps = get_departures(Station.HAUPTBAHNHOF__TIEF, limit=3)
for dep in deps:
if dep.delay > 0:
print("Alarm! Delay detected.")
print(dep) # [Delayed] [11:47] [RB17]: Stuttgart Hauptbahnhof (oben) - Pforzheim Hauptbahnhof
else:
print("Train on time")
print(dep) # [11:47] [RB17]: Stuttgart Hauptbahnhof (oben) - Pforzheim Hauptbahnhof
- Detect cancellations in upcoming departures/arrivals:
from vvspy import get_departures
from vvspy.enums import Station
arrivals = get_departures(Station.VAIHINGEN, limit=5)
for arrival in arrivals:
if arrival.cancelled:
print(f"Alarm! The train at {arrival.real_datetime} has been cancelled!")
# Check arrival.stop_infos and arrival.line_infos for more information
- Get complete trip info between two stations (including interchanges):
from vvspy import get_trip # also usable: get_trips
from vvspy.enums import Station
trip = get_trip(Station.HAUPTBAHNHOF__TIEF, Station.HARDTLINDE)
print(f"Duration: {trip.duration / 60} minutes")
for connection in trip.connections:
print(f"From: {connection.origin.name} - To: {connection.destination.name}")
# Output:
Duration: 58 minutes
From: Hauptbf (Arnulf-Klett-Platz) - To: Stuttgart Hauptbahnhof (tief)
From: Stuttgart Hauptbahnhof (tief) - To: Marbach (N)
From: Marbach (N) Bf - To: Murr Hardtlinde
- Filter for specific lines:
from vvspy import get_departures
from vvspy.enums import Station
deps = get_departures(Station.HAUPTBAHNHOF__TIEF)
for dep in deps:
if dep.serving_line.symbol == "S4":
print(f"Departure of S4 at {dep.real_datetime}")
- Filter for specific platforms:
from vvspy import get_departures
from vvspy.enums import Station
deps = get_departures(Station.HAUPTBAHNHOF__TIEF)
for dep in deps:
if dep.platform == "101":
print(f"Departure of {dep.serving_line.number} to {dep.serving_line.direction} on {dep.platform_name} at {dep.real_datetime}")
Get your station id
See: #64
Logging
vvspy uses the python logging module. If you want to change the log level of vvspy, use the following:
import logging
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger("vvspy")
logger.setLevel(logging.DEBUG)
⭐️ Project assistance
If you want to say thank you or/and support active development of vvspy:
- Add a GitHub Star to the project.
- Support me on Ko-fi.
👀 Projects using vvspy
- vvs_direct_connect is a dockerized REST service providing departure data by aschuma.
🔥 Other projects of the authors
- discord-masz - MASZ is a selfhostable highly sophisticated moderation bot for Discord. Includes a web dashboard and a discord bot.
⚠️ License
vvspy is free and open-source software licensed under the MIT.
Metadata
Release files for vvspy 2.3.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| vvspy-2.3.1.tar.gz | 256.3 kB | Without provenance | Details for vvspy-2.3.1.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| vvspy-2.3.1-py3-none-any.whl | Python 3 | none | any | Details for vvspy-2.3.1-py3-none-any.whl |
Total release size: 517.1 kB
Release files / vvspy-2.3.1.tar.gz
| Download URL | vvspy-2.3.1.tar.gz |
|---|---|
| Size | 256.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
4abead2aaa0ef57d81ff55859e366a328ba9a7f30c4d25d685d33b9c141645fd
|
|
BLAKE2b-256 checksum How to use checksums |
12284d61807b0708fee27e92ecf41c7480c69bdd21b67b00fa09e90fa7c9acc0
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.5
|
Release files / vvspy-2.3.1-py3-none-any.whl
| Download URL | vvspy-2.3.1-py3-none-any.whl |
|---|---|
| Size | 260.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
1e32cc0e49b7c2daad2887e7d5704523cbe7aaae483e57c274af74bc17067e23
|
|
BLAKE2b-256 checksum How to use checksums |
6c380aca6734aa226723091805cd0a8cc9c2839c477ddb701878fe51ad0e105a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.5
|
Security for vvspy 2.3.1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.