{"id":34723742,"url":"https://github.com/goktugocal/livef1","last_synced_at":"2026-04-07T22:01:26.639Z","repository":{"id":261634621,"uuid":"884760976","full_name":"GoktugOcal/LiveF1","owner":"GoktugOcal","description":"A Python toolkit for seamless access to live and historical Formula 1 data","archived":false,"fork":false,"pushed_at":"2026-03-15T16:30:11.000Z","size":11111,"stargazers_count":57,"open_issues_count":2,"forks_count":11,"subscribers_count":5,"default_branch":"main","last_synced_at":"2026-03-19T14:26:00.663Z","etag":null,"topics":["f1","formula1","livetiming","motorsports"],"latest_commit_sha":null,"homepage":"http://livef1.goktugocal.com/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/GoktugOcal.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2024-11-07T10:44:18.000Z","updated_at":"2026-03-15T08:42:36.000Z","dependencies_parsed_at":"2024-11-07T16:30:56.846Z","dependency_job_id":"378f565a-a823-471a-b090-54dc74bed329","html_url":"https://github.com/GoktugOcal/LiveF1","commit_stats":null,"previous_names":["goktugocal/livef1"],"tags_count":55,"template":false,"template_full_name":null,"purl":"pkg:github/GoktugOcal/LiveF1","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GoktugOcal%2FLiveF1","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GoktugOcal%2FLiveF1/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GoktugOcal%2FLiveF1/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GoktugOcal%2FLiveF1/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/GoktugOcal","download_url":"https://codeload.github.com/GoktugOcal/LiveF1/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GoktugOcal%2FLiveF1/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31530647,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-07T16:28:08.000Z","status":"ssl_error","status_checked_at":"2026-04-07T16:28:06.951Z","response_time":105,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["f1","formula1","livetiming","motorsports"],"created_at":"2025-12-25T02:12:51.655Z","updated_at":"2026-04-07T22:01:26.608Z","avatar_url":"https://github.com/GoktugOcal.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# LiveF1 - An Open-Source Formula 1 Data Processing Toolkit\n\n![Written in Python](https://img.shields.io/static/v1?label=\u0026message=Python\u0026color=3C78A9\u0026logo=python\u0026logoColor=FFFFFF)\n[![PyPI version](https://badge.fury.io/py/livef1.svg)](https://badge.fury.io/py/livef1)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n[![View livef1 on GitHub](https://img.shields.io/github/stars/goktugocal/livef1?color=232323\u0026label=livef1\u0026logo=github\u0026labelColor=232323)](https://github.com/goktugocal/livef1)\n[![Author goktugocal](https://img.shields.io/badge/goktugocal-b820f9?labelColor=b820f9\u0026logo=githubsponsors\u0026logoColor=fff)](https://github.com/goktugocal)\n\n\nLiveF1 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.\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://raw.githubusercontent.com/GoktugOcal/LiveF1/main/docs/source/_static/LiveF1Overview1.png\" alt=\"LiveF1 Data Flow\"/\u003e\n\u003c/p\u003e\n\n### Features\n- **Real-Time Race Data**: Provides live telemetry, timing, and position updates, ideal for powering dashboards and live analytics.\n- **Historical Data Access**: Includes comprehensive race data from past seasons, perfect for performance analysis and comparisons.\n- **Data Processing Modules**: Built-in ETL tools make raw data immediately usable, supporting analysis and seamless data storage.\n- **Easy Integration**: Simple API for both real-time and historical data\n\nIn a nutshell:\n\n**Using LiveF1, you can access real-time and historical racing data, making it easy to feed analytics and visualizations.**\n\n## Installation\n\nInstall using pip:\n\n```bash\npip install livef1\n```\n\n## Quick Start\n\n### Historical Data\n\nAccess data from past races:\n\n```python\nimport livef1\n\n# Get a specific race session\nsession = livef1.get_session(\n    season=2024,\n    meeting_identifier=\"Spa\",\n    session_identifier=\"Race\"\n)\n\n# Load position data\nposition_data = session.get_data(\n    dataNames=\"Position.z\"\n)\n\nprint(position_data.head())\n```\n\n```text\n  |    |   SessionKey | timestamp    | Utc                          |   DriverNo | Status   |   X |   Y |   Z |\n  |---:|-------------:|:-------------|:-----------------------------|-----------:|:---------|----:|----:|----:|\n  |  0 |         9574 | 00:01:45.570 | 2024-07-28T12:10:22.7877313Z |          1 | OnTrack  |   0 |   0 |   0 |\n  |  1 |         9574 | 00:01:45.570 | 2024-07-28T12:10:22.7877313Z |          2 | OnTrack  |   0 |   0 |   0 |\n  |  2 |         9574 | 00:01:45.570 | 2024-07-28T12:10:22.7877313Z |          3 | OnTrack  |   0 |   0 |   0 |\n  |  3 |         9574 | 00:01:45.570 | 2024-07-28T12:10:22.7877313Z |          4 | OnTrack  |   0 |   0 |   0 |\n  |  4 |         9574 | 00:01:45.570 | 2024-07-28T12:10:22.7877313Z |         10 | OnTrack  |   0 |   0 |   0 |\n```\n\n#### Data Processing\n\nLiveF1 uses a medallion architecture to process F1 data into analysis-ready formats:\n\n```python\n# Generate processed data tables\nsession.generate(silver=True)\n\n# Access refined data\nlaps_data = session.get_laps()\ntelemetry_data = session.get_car_telemetry()\n\nprint(laps_data.head())\n```\n\n```text\n    |    |   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             |\n    |---:|-------------:|:-----------------------|:-----------------------|:----------|:-----------------------|:-----------------------|:-----------------------|:-------|-----------:|-----------:|-----------:|-----------:|----------:|:-----------------------|-----------:|:---------------------------|\n    |  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 |\n    |  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 |\n    |  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 |\n    |  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 |\n    |  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 |\n```\n\n### Real-Time Data\n\nStream live race data:\n\n```python\nfrom livef1.adapters import RealF1Client\n\n# Initialize client with topics to subscribe\nclient = RealF1Client(\n    topics=[\"CarData.z\", \"Position.z\"],\n    log_file_name=\"race_data.json\"  # Optional: log data to file\n)\n\n# Define callback for incoming data\n@client.callback(\"telemetry_handler\")\nasync def handle_data(records):\n    for record in records:\n        print(record)  # Process incoming data\n\n# Start receiving data\nclient.run()\n```\n\n## Documentation\n\nFor detailed documentation, examples, and API reference, visit our [documentation page](https://livef1.readthedocs.io/).\n\n## Testing\n\nThe project uses [pytest](https://pytest.org/) for unit tests. Install dev dependencies and run the test suite:\n\n```bash\npip install -r requirements-dev.txt\npytest tests/ -v\n```\n\nWith coverage:\n\n```bash\npytest tests/ -v --cov=livef1 --cov-report=term-missing\n```\n\nExample scripts that use the library (without assertions) live in the `examples/` directory.\n\n## Contributing\n\nContributions 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.\n\n## License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n\n## Support\n\n- Report bugs and request features in [GitHub Issues](https://github.com/GoktugOcal/LiveF1/issues)\n- For questions and discussions, use [GitHub Discussions](https://github.com/GoktugOcal/LiveF1/discussions)\n\n## FEEL FREE TO [CONTACT ME](https://www.goktugocal.com/contact.html)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgoktugocal%2Flivef1","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgoktugocal%2Flivef1","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgoktugocal%2Flivef1/lists"}