Skip to main content

A Python toolkit for seamless access to live and historical Formula 1 data.

Project description

LiveF1 - An Open-Source Formula 1 Data Processing Toolkit

Written in Python PyPI version License: MIT View livef1 on GitHub Author goktugocal

LiveF1 is a powerful Python toolkit for accessing and analyzing Formula 1 data in real-time or from historical archives. It's designed for developers, analysts, and F1 fans building applications around Formula 1 insights.

LiveF1 Data Flow

Features

  • Real-Time Race Data: Provides live telemetry, timing, and position updates, ideal for powering dashboards and live analytics.
  • Historical Data Access: Includes comprehensive race data from past seasons, perfect for performance analysis and comparisons.
  • Data Processing Modules: Built-in ETL tools make raw data immediately usable, supporting analysis and seamless data storage.
  • Easy Integration: Simple API for both real-time and historical data

In a nutshell:

Using LiveF1, you can access real-time and historical racing data, making it easy to feed analytics and visualizations.

Installation

Install using pip:

pip install livef1

Quick Start

Historical Data

Access data from past races:

import livef1

# Get a specific race session
session = livef1.get_session(
    season=2024,
    meeting_identifier="Spa",
    session_identifier="Race"
)

# Load position data
position_data = session.get_data(
    dataNames="Position.z"
)

print(position_data.head())
  |    |   SessionKey | timestamp    | Utc                          |   DriverNo | Status   |   X |   Y |   Z |
  |---:|-------------:|:-------------|:-----------------------------|-----------:|:---------|----:|----:|----:|
  |  0 |         9574 | 00:01:45.570 | 2024-07-28T12:10:22.7877313Z |          1 | OnTrack  |   0 |   0 |   0 |
  |  1 |         9574 | 00:01:45.570 | 2024-07-28T12:10:22.7877313Z |          2 | OnTrack  |   0 |   0 |   0 |
  |  2 |         9574 | 00:01:45.570 | 2024-07-28T12:10:22.7877313Z |          3 | OnTrack  |   0 |   0 |   0 |
  |  3 |         9574 | 00:01:45.570 | 2024-07-28T12:10:22.7877313Z |          4 | OnTrack  |   0 |   0 |   0 |
  |  4 |         9574 | 00:01:45.570 | 2024-07-28T12:10:22.7877313Z |         10 | OnTrack  |   0 |   0 |   0 |

Data Processing

LiveF1 uses a medallion architecture to process F1 data into analysis-ready formats:

# Generate processed data tables
session.generate(silver=True)

# Access refined data
laps_data = session.get_laps()
telemetry_data = session.get_car_telemetry()

print(laps_data.head())
    |    |   lap_number | lap_time               | in_pit                 | pit_out   | sector1_time           | sector2_time           | sector3_time           | None   |   speed_I1 |   speed_I2 |   speed_FL |   speed_ST |   no_pits | lap_start_time         |   DriverNo | lap_start_date             |
    |---:|-------------:|:-----------------------|:-----------------------|:----------|:-----------------------|:-----------------------|:-----------------------|:-------|-----------:|-----------:|-----------:|-----------:|----------:|:-----------------------|-----------:|:---------------------------|
    |  0 |            1 | NaT                    | 0 days 00:17:07.661000 | NaT       | NaT                    | 0 days 00:00:48.663000 | 0 days 00:00:29.571000 |        |        314 |        204 |            |        303 |         0 | NaT                    |         16 | 2024-07-28 13:03:52.742000 |
    |  1 |            2 | 0 days 00:01:50.240000 | NaT                    | NaT       | 0 days 00:00:31.831000 | 0 days 00:00:48.675000 | 0 days 00:00:29.734000 |        |        303 |        203 |        219 |            |         0 | 0 days 00:57:07.067000 |         16 | 2024-07-28 13:05:45.045000 |
    |  2 |            3 | 0 days 00:01:50.519000 | NaT                    | NaT       | 0 days 00:00:31.833000 | 0 days 00:00:49.132000 | 0 days 00:00:29.554000 |        |        311 |        202 |        215 |        304 |         0 | 0 days 00:58:57.307000 |         16 | 2024-07-28 13:07:35.285000 |
    |  3 |            4 | 0 days 00:01:49.796000 | NaT                    | NaT       | 0 days 00:00:31.592000 | 0 days 00:00:48.778000 | 0 days 00:00:29.426000 |        |        312 |        201 |        217 |        309 |         0 | 0 days 01:00:47.870000 |         16 | 2024-07-28 13:09:25.848000 |
    |  4 |            5 | 0 days 00:01:49.494000 | NaT                    | NaT       | 0 days 00:00:31.394000 | 0 days 00:00:48.729000 | 0 days 00:00:29.371000 |        |        313 |        197 |        217 |        311 |         0 | 0 days 01:02:37.721000 |         16 | 2024-07-28 13:11:15.699000 |

Real-Time Data

Stream live race data:

from livef1.adapters import RealF1Client

# Initialize client with topics to subscribe
client = RealF1Client(
    topics=["CarData.z", "Position.z"],
    log_file_name="race_data.json"  # Optional: log data to file
)

# Define callback for incoming data
@client.callback("telemetry_handler")
async def handle_data(records):
    for record in records:
        print(record)  # Process incoming data

# Start receiving data
client.run()

Documentation

For detailed documentation, examples, and API reference, visit our documentation page.

Contributing

Contributions are welcome! Please feel free to submit a Pull Request. For major changes, please open an issue first to discuss what you would like to change.

License

This project is licensed under the MIT License - see the LICENSE file for details.

Support

FEEL FREE TO CONTACT ME

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

livef1-1.0.953.tar.gz (51.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

livef1-1.0.953-py3-none-any.whl (58.6 kB view details)

Uploaded Python 3

File details

Details for the file livef1-1.0.953.tar.gz.

File metadata

  • Download URL: livef1-1.0.953.tar.gz
  • Upload date:
  • Size: 51.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for livef1-1.0.953.tar.gz
Algorithm Hash digest
SHA256 dcc7b949a76875710423b40dcbb416852a65906fce2f6872bda679374533eacc
MD5 84aa746f56e88dc9bb14f634369cda3f
BLAKE2b-256 b079fc92d4aa627fc13eb5cdae04293d83f2893f76f08af9dbcdcd7ba73b16c0

See more details on using hashes here.

Provenance

The following attestation bundles were made for livef1-1.0.953.tar.gz:

Publisher: publish.yml on GoktugOcal/LiveF1

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file livef1-1.0.953-py3-none-any.whl.

File metadata

  • Download URL: livef1-1.0.953-py3-none-any.whl
  • Upload date:
  • Size: 58.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for livef1-1.0.953-py3-none-any.whl
Algorithm Hash digest
SHA256 2959cf5c07d46cf801751fba37480ed3d5b598601837f12004b7e7b4ccb12021
MD5 a8a941bc992eca557e71caf94206a533
BLAKE2b-256 6bb0b2ae13cb5b61e8f78727378a5517c32911adcc6b7b3ef6eb212f78569632

See more details on using hashes here.

Provenance

The following attestation bundles were made for livef1-1.0.953-py3-none-any.whl:

Publisher: publish.yml on GoktugOcal/LiveF1

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page