1 điểm bởi GN⁺ 2025-10-04 | 1 bình luận | Chia sẻ qua WhatsApp
  • Playball là một dự án mã nguồn mở cho phép xem trực tiếp các trận MLB trong môi trường terminal
  • Không giống cách xem trên trang web chính thức của MLB hay MLB.tv, nó cho phép theo dõi diễn biến trận đấu trong một môi trường yên tĩnh, thân thiện với code
  • Người dùng có thể chạy dễ dàng bằng npx, npm, Docker và được cung cấp nhiều phím tắt cùng các tùy chọn màu sắc
  • Có thể làm nổi bật đội yêu thích, xem kết quả, lịch thi đấu, bảng xếp hạng, qua đó cải thiện khả năng tiếp cận thông tin MLB
  • Khả năng tùy biến rất tốt, cùng với cách cài đặt và chạy đơn giản, khiến nó hữu ích cho cả lập trình viên lẫn người hâm mộ bóng chày

Tầm quan trọng của Playball như một dự án mã nguồn mở

  • Playball là một giải pháp gọn nhẹ giúp theo dõi trực tiếp các trận MLB ngay trong terminal
  • Khác với MLB Gameday hay MLB.tv, nó cung cấp khả năng truy cập đơn giản và nhanh chóng mà không cần GUI riêng
  • Đặc biệt phù hợp với lập trình viên hoặc người dùng quen với môi trường terminal, đồng thời có mức độ tự do cấu hình cao

Giới thiệu về Playball

  • Playball là một dự án mã nguồn mở được thiết kế để xem trực tiếp các trận MLB hoặc kiểm tra nhiều loại thông tin khác nhau trong môi trường terminal
  • Dự án được phát hành theo giấy phép MIT, nên bất kỳ ai cũng có thể tự do chỉnh sửa và sử dụng

Tính năng chính và ưu điểm

  • Chỉ cần chạy chương trình là có thể xem trận đấu hiện tại, lịch thi đấu, bảng xếp hạng cùng nhiều thông tin MLB khác
  • Có thể thay thế dịch vụ web/app chính thức của MLB và mang lại môi trường theo dõi yên tĩnh, không bị làm phiền
  • Có thể bắt đầu ngay chỉ với các lệnh đơn giản (ví dụ: $ npx playball, $ playball, chạy container Docker)
  • Giao diện nhanh cùng nhiều phím tắt bàn phím (ví dụ: chuyển lịch thi đấu/bảng xếp hạng, vào chi tiết một trận cụ thể, di chuyển giữa các ngày) giúp tăng hiệu quả sử dụng
  • Hỗ trợ làm nổi bật đội yêu thích bằng cách chỉ định trực tiếp đội đó trong lịch thi đấu và bảng xếp hạng

Cấu hình chi tiết và tùy biến

  • Có thể dùng lệnh playball config để xem các giá trị cấu hình hiện tại và thay đổi các tùy chọn chi tiết
    • Ví dụ: mã màu (nhập trực tiếp Hex, màu mặc định, theme sáng/tối, v.v.), chỉ định đội yêu thích (ví dụ: playball config favorites "SEA,MIL")
  • Có thể gán màu khác nhau cho trận đấu, lịch, tình huống thi đấu, kết quả, v.v. để tạo giao diện trực quan hơn
  • Hỗ trợ nhiều kiểu tùy biến trực quan như thiết lập màu terminal, đội yêu thích, thay đổi điểm số, v.v.

Thông tin kỹ thuật và cộng đồng

  • Được xây dựng 99,8% bằng JavaScript, nên dễ sửa mã và dễ đóng góp
  • Có cộng đồng tích cực với 5 contributor chính và hơn 900 sao (star)
  • Đây là một dự án mở mà bất kỳ ai cũng có thể đóng góp, cho phép phát triển và cải tiến tự do

Tóm tắt

  • Playball là một giải pháp theo dõi MLB thân thiện với terminal mang lại trải nghiệm phù hợp với nhiều môi trường khác nhau
  • So với các dịch vụ xem MLB khác, nó nhẹ hơn và nhanh hơn, đồng thời nổi bật ở dữ liệu thời gian thực và khả năng tùy biến
  • Ưu điểm lớn là cả lập trình viên lẫn người hâm mộ bóng chày đều có thể cài đặt và sử dụng một cách dễ dàng

1 bình luận

 
GN⁺ 2025-10-04
Ý kiến trên Hacker News
  • Thực sự có những người xem từng trận đấu và ghi lại mọi diễn biến. Tôi từng làm việc đó. Các cập nhật trực tiếp của MLB, ESPN và nhiều dịch vụ xây dựng trên những dữ liệu đó vận hành theo cách này
    • Một số người hâm mộ ghi chép diễn biến trận bóng chày đơn giản vì thấy vui. Về scorekeeping trong bóng chày, có thể xem giải thích trên Wikipedia, cộng đồng Scorecards trên Reddit, cùng bài viết về niềm vui của việc ghi điểm 1bài 2
    • Tôi tò mò không biết kiếm tiền bằng cách xem bóng chày có vui không, hay việc phải cập nhật theo thời gian thực lại làm giảm bớt sự thú vị
    • Tôi rất thích tự ghi điểm trận đấu mỗi khi đến sân bóng chày. Nó tạo cảm giác như mình trực tiếp tham gia, và cũng vui khi so sánh xem mình sai ở đâu so với các scorer chuyên nghiệp. Tôi cũng tò mò không biết trước đây bạn có từng làm scoring cho MLB không, và giờ khi xem trận đấu bạn vẫn còn ghi chép lại hay đã chán rồi :D
    • Công việc này được làm bởi một công ty tên là Sports Info Solutions. Công ty này xem từng pha bóng của mọi trận đấu, rồi áp dụng công thức đánh giá độ khó tương đối để phát triển các mô hình thống kê nâng cao. Một phần đã được tự động hóa, nhưng vẫn còn nhiều thứ phụ thuộc vào “con mắt” của con người
    • Từ rất lâu trước đây, bố tôi cũng từng làm việc này. Ông phụ trách toàn bộ các trận bóng chày của minor league trong khu vực. Khi nhìn ứng dụng này, điều đầu tiên tôi nghĩ đến là nó giống như một phiên bản điện tử tự điền của những bảng điểm mà tôi từng tự ghi. Đây là một trong những thú vui đầu tiên của tôi với bóng chày. Ảnh ví dụ về bảng điểm
  • Dự án thực sự rất tuyệt. Tôi rất thích bóng chày, và cũng thích việc trong văn hóa hacker có nhiều người yêu bóng chày. Tôi từng đọc rằng một trong những lý do bóng chày đánh mất vị thế môn thể thao số một ở Mỹ là vì mô hình kiếm tiền lỗi thời của nó (chỉ dựa vào bán vé). NFL thì đã đẩy mạnh lên TV từ thập niên 80 và nhờ đó kéo thêm được rất nhiều người hâm mộ để có vị thế như hiện nay. Gần đây MLB cũng đang chủ động hơn với streaming như MLB.tv hay AWS StatCast. Hy vọng những dự án như thế này sẽ giúp bóng chày lấy lại độ phổ biến
    • MLB và các đài phát sóng đang thúc đẩy cá cược quá mạnh. Vì thế mà môi trường thể thao lại càng trở nên độc hại hơn
    • Tôi nghĩ chính streaming lại khiến người ta ít xem bóng chày hơn. Gói streaming DTC của đội địa phương chỗ tôi là 20 USD mỗi tháng. Bóng chày là môn rất hợp để bật lên sau giờ làm và xem thoải mái, nhưng không đáng 20 USD. Và tôi nghĩ mức giá đó còn gây ảnh hưởng rất xấu đến việc trẻ em bắt đầu quan tâm đến bóng chày. Lý do tôi mê bóng chày là vì bố tôi bật trận đấu trên OTA TV sau giờ làm. Nếu không trả khoản phí này thì tôi không biết trẻ con sẽ làm sao để hứng thú với môn thể thao này. Tác động lan tỏa là rất lớn. Các regional sports network (RSN) từ trước đến nay đảm nhận phát sóng phần lớn các trận bóng chày địa phương (mlb.tv thì bị blackout ở địa phương), nhưng họ đã đặt cược vào streaming rồi chịu thua lỗ tài chính khổng lồ[1]. Vì vậy họ quay sang đòi mức giá vô lý từ những fan trung thành còn sót lại. Tôi đã trả 82 USD/tháng cho YoutubeTv rồi, nên nếu ở đó không có thì tôi đơn giản là không xem nữa, cũng ít đi sân hơn và bớt quan tâm đến đội địa phương hơn. [1] Bally Sports (Diamond Sports Group) phá sản năm 2023
    • Tôi hiểu vì sao nhiều người bảo nó nhàm chán. Giờ tôi cũng gần như không xem nữa, thỉnh thoảng xem lại thì đôi lúc nó vẫn có cảm giác chán như trước. Nhưng kiểu gì cũng cần có một mức độ tiếp xúc nhất định. Câu chuyện tự nhiên dần hiện ra qua từng trận, từng series, cả mùa giải, thật sự rất đặc biệt
    • Với tư cách một người hâm mộ ở nước ngoài theo dõi nhiều môn thể thao Mỹ, tôi thấy streaming của MLB tiến bộ hơn hẳn. Ở nhà có thể dùng dịch vụ streaming chính thức để xem trực tiếp toàn bộ trận đấu hoặc xem lại hết. Nó hỗ trợ bỏ qua giữa các inning, chọn bình luận TV/radio, và chuyển đổi tự do giữa PC, TV, điện thoại, web. Thậm chí từng có một ứng dụng thử nghiệm cho Vision Pro. NBA dạo này cũng đang tiến gần đến mức đó. NFL trước đây cũng ổn, nhưng rồi họ bắt đầu bán quyền streaming riêng trên toàn cầu cho các đài khác, thành ra người dùng phải chuyển từ dịch vụ trực tiếp khá ổn trước kia sang các dịch vụ bên thứ ba rất tệ
    • Điều tôi muốn là một dịch vụ còn tiến bộ hơn thế. Tôi sống ở Austin nhưng vẫn rất khó xem các trận của Astros. Chẳng có lý do gì để phải lái xe khứ hồi sáu tiếng chỉ để xem trực tiếp, nhưng tôi lại còn phải dùng dịch vụ của một công ty mình không thích chỉ để xem một kênh cáp cụ thể. Nếu khoảng 300 USD một năm thì tôi sẵn sàng trả cho một dịch vụ streaming để xem mọi trận đấu
  • Tôi đã dùng plaintextsports rất tốt cho bóng chày rồi. So với nhiều môn thể thao khác, bóng chày là môn được truyền tải cực kỳ tốt qua văn bản (hoặc radio). Việc đưa nó vào terminal cũng rất hay
    • Giờ tôi mới nhận ra quy ước scoring của bóng chày đúng là giống một DSL (ngôn ngữ đặc thù miền) dành riêng cho các trận bóng chày. Đã có sẵn một cách chuẩn hóa để biểu diễn diễn biến trận đấu. Tôi tò mò không biết nó được dùng trong chương trình như thế nào. Ví dụ một inning: K | 6-3 | BB | 2B (RBI, R1-H) | F8
  • Dự án khá hay đấy. Chỉ là sẽ còn hay hơn nữa nếu có bản cho football hoặc hiển thị kiểu hoạt hình bằng ascii art, giống game bóng chày Intellivision ngày xưa. Tôi cũng thắc mắc liệu việc tự polling nguồn dữ liệu như thế này có ổn không, và lo không biết họ có tìm cách chặn lại không
  • Hay đấy. MLB có một API khá tốt để truy cập loại dữ liệu này. (Tôi cũng muốn nói là ban đầu tôi đã hiểu từ “watch” theo một nghĩa hoàn toàn khác)
    • Thực ra có thể thấy endpoint statsapi.mlb.com trong các file ở thư mục features
    • (Trong phần giới thiệu hồ sơ) ghi là “Tôi là Josh đến từ Minnesota”, nên chắc cũng không cần giải thích gì thêm
    • Đó là cách nói khá tiết chế đấy
  • Nó khiến tôi nghĩ đến cảnh fan của một đội nào đó tái dựng cả trận đấu trong đầu chỉ từ những mô tả dạng văn bản như thế này. Kiểu như người chơi cờ mù vậy. Giải thích về cờ mù
    • Sẽ cực kỳ buồn cười nếu có thể lấy ngược dữ liệu bóng chày thực tế để tái tạo việc chọn thẻ Stratomatic và kết quả tung xúc xắc
  • Tôi cực kỳ thích những dự án như thế này. Có cảm giác đây là thứ lẽ ra phải tồn tại từ lâu rồi, giờ mới xuất hiện. Tác phẩm được làm rất tốt
  • Với những ai quan tâm lĩnh vực này, tôi muốn giới thiệu thêm vài chương trình MLB TUI khác.
    mlbt: https://github.com/mlb-rs/mlbt
    gomlb (do chính tôi làm): https://github.com/AxBolduc/gomlb
    Tôi cũng biết NBA CLI cho NBA (https://github.com/dylantientcheu/nbacli), nhưng gần đây nó không còn hoạt động ổn do thay đổi trong NBA API
    • MLBT thực sự rất tốt. Tôi nghĩ nó hay hơn playball. Rất hợp để luôn bật như một màn hình thứ hai
  • Tham khảo thêm, còn có các bài liên quan sau: