6 điểm bởi GN⁺ 2025-04-20 | 1 bình luận | Chia sẻ qua WhatsApp
  • undercut-f1 là một client TUI mã nguồn mở có thể ghi lại thông tin thời gian trực tiếp của các phiên F1 để phát lại sau này
  • Có thể nhận và trực quan hóa dữ liệu luồng dựa trên SignalR hoặc phát lại các phiên đã được ghi
  • Cung cấp tháp thời gian chi tiết theo từng tay đua, chiến lược pit stop, thông báo race control, phân tích chiến thuật, theo dõi vị trí tay đua, team radio và lịch sử theo từng vòng
  • Dữ liệu được lưu cục bộ để phục vụ phát triển và kiểm thử, đồng thời hỗ trợ cả chế độ mô phỏng
  • Triển khai hiển thị trực quan bằng giao thức hình ảnh của terminal như iTerm2 và Kitty

Giới thiệu dự án undercut-f1

undercut-f1 là một công cụ mã nguồn mở trực quan hóa thông tin F1 Live Timing dưới dạng TUI (giao diện người dùng terminal) dựa trên CLI
Các đặc điểm chính gồm:

  • Biểu diễn dữ liệu phiên F1 theo thời gian thực bằng hình ảnh và âm thanh
  • Người dùng có thể tự ghi dữ liệu phiên và phát lại về sau
  • Cung cấp tính năng điều chỉnh độ trễ có tính đến độ trễ trung bình của phát sóng F1 (30~60 giây)
  • Là ứng dụng CLI dựa trên .NET, có thể sử dụng dưới dạng gói NuGet hoặc file thực thi độc lập

Tính năng chính

  • Tháp thời gian

    • Hiển thị thành tích theo từng sector (tô màu cho thành tích tốt nhất cá nhân/tốt nhất toàn cục)
    • Thời gian vòng gần nhất và tốt nhất
    • Loại lốp và thời gian sử dụng
    • Chênh lệch thời gian với người dẫn đầu và xe phía trước
    • So sánh chênh lệch thời gian giữa tay đua được chọn và các tay đua khác
  • Thông tin chiến lược/stint

    • Có thể xem nhanh chiến lược lốp của từng tay đua
    • Trực quan hóa thời điểm sử dụng và thời lượng của từng bộ lốp
    • Dễ nhận biết khác biệt về chiến thuật
  • Màn hình race control

    • Xem các thông điệp race control như điều tra chính thức, án phạt, thông tin thời tiết
  • Trình theo dõi tay đua

    • Trực quan hóa vị trí trên đường đua của tay đua được chọn theo thời gian thực
    • Hoạt động trên các terminal hỗ trợ giao thức hình ảnh iTerm2 và Kitty
    • Có thể chọn và so sánh tay đua bằng con trỏ
  • Lịch sử thời gian

    • Theo dõi thay đổi gap/interval theo từng vòng
    • Cung cấp biểu đồ xu hướng thời gian vòng và khoảng cách với người dẫn đầu trong 15 vòng gần nhất
  • Nghe và chép lời team radio

    • Sử dụng mô hình Whisper để tự động chép lời team radio cục bộ bằng nhận dạng giọng nói
    • Chất lượng phụ thuộc vào chất lượng âm thanh trong ngày và vẫn đang tiếp nhận đề xuất cải thiện

Chạy phiên và phát lại

  • Chạy phiên trực tiếp

    • Chạy undercutf1
    • Nhấn phím <kbd>S</kbd> để vào màn hình phiên
    • Nhấn phím <kbd>L</kbd> để bắt đầu phiên trực tiếp
    • Nhấn phím <kbd>T</kbd> để xem tháp thời gian
    • Dữ liệu phiên được lưu tại ~/undercut-f1/data/<session-name>, có thể dùng làm dữ liệu phát lại về sau
  • Phát lại phiên đã ghi

    • Có thể sao chép dữ liệu trong thư mục Sample Data hoặc tải dữ liệu phiên chính thức để phát lại
    • Nhấn phím <kbd>F</kbd> để bắt đầu mô phỏng → chọn phiên → vào tháp thời gian
    • Nhấn phím <kbd>N</kbd> để điều chỉnh độ trễ và duyệt nhanh
  • Tải dữ liệu phiên

    • Có thể xem danh sách các phiên của năm tương ứng bằng lệnh undercutf1 import <year>
    • Chọn phiên để tải xuống và chuyển đổi về máy cục bộ → có thể phát lại

Tính năng con trỏ và quản lý độ trễ

  • Trên mọi màn hình, có thể điều khiển con trỏ bằng phím <kbd>▲</kbd>/<kbd>▼</kbd>
    • Ví dụ: khi chọn một tay đua cụ thể, có thể trực quan hóa chênh lệch thời gian theo tay đua đó
  • Nhấn phím <kbd>M</kbd>/<kbd>N</kbd> để điều chỉnh độ trễ nhằm đồng bộ với phát sóng trực tiếp
    • Nhấn cùng <kbd>Shift</kbd> để điều chỉnh theo bước 30 giây

Nguồn dữ liệu và cách lưu trữ

  • Luồng F1 Live Timing dựa trên SignalR
  • Nhận dữ liệu thời gian thực bằng cách đăng ký các topic như sau:
    • TimingStats, TimingData, WeatherData, DriverList, RaceControlMessages, TeamRadio v.v.
  • Dữ liệu phiên được lưu thành hai file sau:
    • subscribe.txt: dữ liệu ban đầu nhận được khi đăng ký
    • live.txt: toàn bộ dữ liệu nhận theo thời gian thực trong phiên

Giấy phép

  • Dự án này là dự án mã nguồn mở không chính thức, không liên quan tới tổ chức F1 chính thức
  • Các nhãn hiệu liên quan như F1, FORMULA ONE thuộc sở hữu của Formula One Licensing B.V.

1 bình luận

 
GN⁺ 2025-04-20
Ý kiến trên Hacker News
  • Ở Phần Lan, teletext vẫn rất phổ biến để theo dõi thể thao. TUI cung cấp ngay thông tin cốt lõi, không có quảng cáo. Định dạng teletext giờ còn sống lâu hơn cả TV, đến mức mọi người đọc các trang teletext qua ứng dụng di động
  • Là một người yêu F1, tôi thực sự rất háo hức được thử cái này vào cuối tuần này. Tôi tò mò về nguồn gốc của dữ liệu trực tiếp/tĩnh và mức độ sẵn có để sử dụng tự do của chúng. Nhiều môn thể thao bảo vệ rất chặt quyền dữ liệu. Tôi muốn biết F1 nhìn nhận chuyện này như thế nào. Dù sao thì cái này thực sự rất tuyệt, và có vẻ sẽ dùng rất tốt như màn hình thứ hai/thứ ba khi ngồi trên sofa thưởng thức cuộc đua. Nếu tìm ra cách để đóng góp, tôi sẽ làm vậy
  • Xin chúc mừng. README được viết rất tốt, cho thấy sự chăm chút dành cho dự án này
  • Làm rất xuất sắc. Qua trang chiến lược lốp, có thể thấy Ferrari đã làm hỏng chiến lược cho tay đua như thế nào
  • Trông rất hấp dẫn. Đáng tiếc là cách cài nhanh bằng công cụ dotnet (Win10) cài đặt xong không lỗi, nhưng khi chạy ứng dụng thì hiện ra một cửa sổ không phản hồi. Trong log không có lỗi. Các lệnh bàn phím không hoạt động, kể cả Q. Việc lấy dữ liệu vẫn chạy, nhưng cửa sổ treo đó không thay đổi. Tôi không tìm hỗ trợ kỹ thuật, chỉ muốn báo rằng README có thể cần thêm vài bước
  • Thật sự rất ngầu. Vài tuần nữa tôi sẽ đi Miami Grand Prix cùng vợ. Tôi rất mong được thử cái này cho phiên/chặng đua ở Jeddah
  • Tôi đã cài trên Windows bằng cách dùng phương pháp dotnet, nhưng có vẻ nó không chạy. Dòng trên cùng như Quit / Cursor / Session vẫn hiện ra, nhưng bấm phím nào cũng không có tác dụng. Tôi muốn thử nó trong phiên đang diễn ra hiện tại
  • Cảm ơn vì đã làm ra cái này. Với một người yêu cả F1 lẫn TUI như tôi, nó sẽ hoàn hảo cho nhu cầu muốn biết nhiều hơn về những đội ở nhóm giữa khi đài truyền hình đang tập trung vào nhóm dẫn đầu
  • Trông rất tuyệt. Tuy nhiên, sẽ tốt hơn nếu có cách chạy dễ hơn. Bản nhị phân cho Linux không phải dạng độc lập và cần cài thêm phụ thuộc bên thứ ba. Sẽ rất hay nếu có bản nhị phân tĩnh (hoặc image container?)
  • Trông khá hay, nhưng tôi không thể làm cho tính năng độ trễ hoạt động đúng. Tôi đang cố xem phiên phân hạng với độ trễ khoảng 25 phút; đồng hồ hiển thị đúng thời gian nhưng thời gian của tay đua thì không xuất hiện. Radio và các thông báo race control lại là trạng thái hiện tại. Tôi có thể xem toàn bộ thông báo race control và radio của Q1