Open-F1 é um cliente de tempo ao vivo de código aberto F1.
openf1-console é um aplicativo TUI que usa OpenF1.Data para mostrar uma tela de tempo ao vivo durante as sessões e registra os dados para replays de sessão futura.
A biblioteca OpenF1.Data é fornecida para facilitar a conectividade com o fluxo de dados de tempo de tempo ao vivo da F1 e lidar com todo o processamento dos dados recebidos. Ele também permite fluxos "simulados", onde fluxos de dados gravados anteriormente podem ser reproduzidos para permitir um fácil desenvolvimento/teste.
Destaques de recursos:

openf1-consoleEste projeto é fortemente inspirado no projeto Fastf1 por Theoehrly. Eles fizeram muito do trabalho entendendo o fluxo Signalr proveniente do serviço de tempo ao vivo da F1. Visite o projeto deles se quiser fazer algum tipo de análise de dados em eventos F1 anteriores ou coletar dados de tempo ao vivo usando seu módulo.
openf1-console openf1-console está disponível como uma ferramenta dotnet da NUGET, o que significa que pode ser instalado em todo o sistema simplesmente executando:
# Install globally using the -g flag
dotnet tool install -g openf1-console
# Assuming the dotnet tools directory is on your path, simply execute openf1-console
openf1-console Este método é recomendado, pois é fácil manter o aplicativo atualizado usando dotnet tool update -g openf1-console .
Os executáveis independentes são anexados a cada liberação do GitHub. Faça o download do executável para o seu sistema/arquitetura do sistema e simplesmente o execute diretamente. A lista de artefatos está disponível na página de lançamento para obter a versão mais recente.
# Download the latest executable (in this case for osx-arm64)
curl https://github.com/JustAman62/open-f1/releases/latest/download/openf1-console-osx-arm64 -o ./openf1-console -L
# Execute openf1-console to start the TUI
./openf1-console # Checkout the git repository
git clone [email protected]:JustAman62/open-f1.git
# Run the console project with `dotnet run`
dotnet run --project OpenF1.Console/OpenF1.Console.csprojopenf1-console , como descrito acimaSession SStart Live Session .Timing Tower T Durante a sessão, os dados de tempo transmitidos serão gravados para ~/open-f1/data/<session-name> . Isso permitirá repetições futuras desses dados gravados.
Os dados para sessões pré-gravados devem ser armazenados no diretório ~/open-f1/data/<session-name> . Os dados da amostra podem ser encontrados nesta pasta de dados de amostra de repositórios. Para usar esses dados de amostra, copie uma das pastas para ~/open-f1/data e, em seguida, ele será visível na etapa 4 abaixo.
openf1-console , como descrito acimaSession SStart Simulation F.Timing Tower T F1 fornece arquivos de dados de tempo estático para sessões já concluídas. Esses dados podem ser baixados e convertidos no mesmo formato openf1-console Usa para salvar dados gravados ao vivo.
openf1-console import <year> listopenf1-console import <year> list --meeting-key <meeting-key>openf1-console import <year> --meeting-key <meeting-key> --session-key <session-key> Todos os dados da sessão, vivos ou pré-gravados, são enviados para um Channel que atua como um atraso. Após um pequeno atraso, os pontos de dados são puxados da fila e processados, levando a atualizações nas telas de tempo. A quantidade desse atraso pode ser alterada com as ações Delay M / N enquanto nas telas de tempo. Mantenha ⇧ Mudança para alterar o atraso em 30 segundos em vez de 5. Ao usar openf1-console durante uma sessão ao vivo, você pode aumentar esse atraso para cerca de ~ 50 segundos (o número real pode variar) para corresponder ao atraso da transmissão e evitar Sendo mimado com a próxima ação.
A sessão simulada inicia com um atraso calculado igual à quantidade de tempo entre o início da sessão real e agora. Isso significa que você pode diminuir o atraso com a ação N Delay para avançar rapidamente durante a sessão.
Existe um cursor global que é controlado com as ações Cursor ▲ / ▲ . O que esse cursor faz depende da tela, por exemplo, pode ser usado na tela da torre de tempo para percorrer as mensagens de controle de corrida ou selecionar um driver na torre para ver intervalos comparativos.
O OpenF1 pode ser configurado usando um arquivo simples config.json , através da linha de comando na inicialização ou usando variáveis de ambiente. A configuração JSON será carregada de ~/open-f1/config.json .
| JSON PATH | Linha de comando | Variável de ambiente | Descrição |
|---|---|---|---|
dataDirectory | --data-directory | OPENF1_DATADIRECTORY | O diretório no qual os dados de tempo JSON são lidos ou gravados. |
verbose | -v|--verbose | OPENF1_VERBOSE | Se o log verboso deve ser ativado. Padrão: false . Valores: true ou false . |
apiEnabled | --with-api | OPENF1_APIENABLED | Se o aplicativo deve expor uma API em http: // localhost: 61937. Padrão: false . Valores: true ou false . |
OpenF1.Data grava logs usando a implementação padrão ILogger . Os logs do cliente SignalR também são passados para o ILoggerProvider padrão.
Ao executar logs openf1-console estão disponíveis em dois lugares:
Logs . Os logs podem ser rolados nessa tela, e o nível mínimo de logs mostrado pode ser alterado com a ação Minimum Log Level .~/open-f1/logs . O nível de log padrão é definido como Information . Mais logs de log verboso pode ser ativado com a opção de configuração verbose .
O tempo ao vivo da F1 é transmitido usando SignalR 2 . O OpenF1.Data simplesmente se conecta a esse terminal, assina o feed de dados e ouve mensagens. Ele assina os seguintes "tópicos":
HeartbeatExtrapolatedClockTopThreeTimingStatsTimingAppDataWeatherDataTrackStatusDriverListRaceControlMessagesSessionInfoSessionDataLapCountTimingDataCarData.zPosition.zChampionshipPredictionTeamRadio Todos os eventos recebidos pelo Live Timing Client serão gravados no Data Directory configurado, consulte a configuração para obter detalhes. Os arquivos serão gravados em um subdiretório nomeado usando o nome de sessões atuais, por exemplo, ~/open-f1/data/Jeddah_Race/ . Neste diretório, dois arquivos serão escritos:
subscribe.txt contém os dados recebidos no horário de assinatura (ou seja, quando o cliente de tempo ao vivo conectado ao fluxo)live.txt contém um log de apêndice de cada mensagem recebida no fluxo Ambos os arquivos são necessários para futuras simulações/replays. O IJsonTimingClient suporta carregar esses arquivos e processá -los da mesma maneira que os dados ao vivo seriam. Os pontos de dados serão reproduzidos em tempo real, usando um atraso calculado.
Monitore os tempos e lacunas do setor, consulte mensagens recentes de controle de corrida, capturar mudanças de posição, observar estratégias de poço e muito mais com a vista padrão da torre de tempo.

Use o cursor controlado pelas ações Cursor ▲ / ▲ na tela Timing Tower O para selecionar um driver específico (neste caso Norris) para ver o intervalo relativo entre esse driver e todos os outros. Isso é útil para determinar para onde um motorista cairá após uma parada de pit ou olhando para as janelas do poço durante os cortes.
Além disso, a lacuna entre os drivers selecionados e os que os rodeiam nas últimas quatro voltas será exibida na parte inferior da tela. Isso permite que você veja facilmente lacunas em evolução ao longo do tempo e avalie quanto tempo um motorista pode recuperar ou se afastar.

Monitore os melhores tempos, lacunas, pneus e deleções ao vivo/melhores setoras com a torre de temporização especializada para sessões que não sejam de corrida.

A página Race Control mostra todas as mensagens de controle de corrida para a sessão, juntamente com outros dados da sessão, como o clima.

Na página Timing by Lap , você pode usar o cursor controlado pelas ações Cursor ▲ / ▲ para visualizar instantâneos históricos da torre de temporização no final de cada volta. Essa visão mostrará as alterações de posição durante essa volta e mudanças relativas na lacuna e no intervalo. A rolagem pelas voltas permite que você construa uma imagem de como a corrida está se desenrolando.

Ouça os clipes de rádio da equipe a qualquer momento da sessão e use um modelo ML local (Whisper) para transcrever o áudio sob demanda.

O Open-F1 não é oficial e não está associado de forma alguma às empresas da Fórmula 1. F1, Fórmula 1, Fórmula 1, Campeonato Mundial de Fórmula 1, Grande Prêmio e Marcas Relacionadas são marcas comerciais de licenciamento de Fórmula 1 BV