v0.3.2 macOS 메뉴 막대 요약 · SwiftBar 플러그인 · Homebrew 설치 릴리스 노트 →
LoL esports · terminal CLI

lolterm

v0.3.2 Homebrew Go 1.21+ GPL-3.0 macOS · Linux · Windows

방송을 못 틀어도,
경기는 터미널에서 봅니다.

Worlds부터 LCK까지, 킬·골드·오브젝트·선수 스탯을 터미널 보드로 따라갑니다. 점수와 스탯은 livestats 피드 값 그대로이고 영상으로 추정한 값은 없습니다. 끝난 세트는 되감아 보고, macOS에서는 메뉴 막대에 스코어를 띄웁니다.

$ brew install m16khb-org/tap/lolterm

Windows나 Homebrew가 없는 환경에서는 Go 1.21 이상으로 설치합니다.

$ go install github.com/m16khb-org/lolterm@latest

라이브 경기가 없어도 lolterm lol demo로 보드를 확인할 수 있습니다.

lolterm lol demo
╔══════════════════════════════════════════════════════════════════════╗
║ ● LIVE  MSI · Knockouts                                      ◷ 31:42 ║
║ G2 Esports [2]                 BO5·G4                         [1] T1 ║
║ KILLS  18 ███████████████████████████████████████████████████████ 27 ║
║ GOLD  57.9k ██████████████████████████████████████████████████ 64.7k ║
║ DRG 2 ── 4 ★SOUL     BRN 0 ── 1     TWR 4 ── 7     INB 0 ── 1        ║
║ PLAYER         CHAMP        K/D/A   CS   GOLD       HP     #         ║
║ G2 BrokenBlade Yasuo        5/8/3  205  10.6k ░░░░░░░░     0         ║
║ G2 SkewMond    Skarner     4/6/10  175  11.5k ░░░░░░░░     0         ║
║ G2 Caps        Aurora       3/3/5  296  12.5k ░░░░░░░░     0         ║
║ G2 Hans Sama   Varus        6/5/8  265  15.5k ░░░░░░░░     0         ║
║ G2 Labrov      Renata      0/5/13   22   7.8k ░░░░░░░░     0         ║
║ T1 Doran       Gnar        4/4/12  228  12.6k ███░░░░░  1375         ║
║ T1 Oner        LeeSin      4/5/13  211  12.8k ██████░░  2356         ║
║ T1 Faker       Sylas       6/4/15  210  12.0k ██████░░  2085         ║
║ T1 Peyz        Xayah       13/4/7  305  19.0k ██████░░  2348         ║
║ T1 Keria       Rakan       0/1/20   21   8.3k ██░░░░░░   636         ║
║ ◷ live feed · 10:24:08 KST                     ↻ 10s  b s o · q quit ║
╚══════════════════════════════════════════════════════════════════════╝

경기 전체를 한 화면에

점수판과 선수 스탯은 피드 값 그대로 보여 주고, 오브젝트 타이머는 피드의 처치 시각으로 계산합니다.

◉

라이브 보드

킬·골드 비례 바, 오브젝트 수, 선수별 KDA·CS·골드·HP 바를 0.5초마다 갱신합니다.

▶

다시 보기

끝난 세트의 스탯을 livestats 피드로 되감습니다. 영상이 아니라 보드로 재생하고, 일시정지·±10초·1×/2×/4× 배속을 지원합니다.

◷

게임 시계

일시정지를 뺀 게임 시계입니다. 일시정지가 지난 뒤에 보드를 열어도 그 전의 일시정지를 피드 기록에서 찾아 반영합니다.

☠

부활 카운트다운

사망한 선수는 ☠ ~Ns로 표시합니다. 라이브는 추정(~), 다시 보기는 피드에서 읽은 정확한 시각입니다.

⏱

오브젝트 타이머

용·엘더·바론의 다음 등장과 소울 포인트를 게임 시계 기준으로 계산합니다.

⇄

보기 전환

stats → items → runes, 골드 차이 스파크라인, 오브젝트 맵을 키 하나로 전환합니다.

Terminal native

키보드, 마우스, 세 가지 언어

lazygit처럼 창을 누르고, 행을 고르고, 휠로 스크롤합니다. 더블클릭으로 경기를 열고, 같은 화면에서 한국어·영어·중국어를 전환합니다.

클릭 · 선택 더블클릭 · 열기 휠 · 스크롤 j k ↑ ↓ · 이동 Enter · 열기 Esc · 뒤로 , · 옵션 ? · 도움말 KO · EN · 中文

피드에 없는 값은 그리지 않습니다

킬·골드·오브젝트·KDA·CS·체력은 livestats 피드 그대로입니다. 챔피언 위치처럼 피드에 없는 값은 영상으로 추정하지 않고 표시하지도 않습니다.

정확: 킬 · 골드 · 오브젝트 · KDA · CS · 체력
부활: ☠ + 초. 라이브는 추정(~), 다시 보기는 정확
없음: 챔피언 위치 · 텔레포트·귀환 · 밴픽 (피드에 없음)
Under the hood

피드에서 보드까지

모든 값은 livestats 피드에서 옵니다. 영상은 쓰지 않습니다.

  1. 01

    피드

    공식 경기와 세트를 찾고, livestats에서 점수판·게임 시계·선수 스탯을 가져옵니다.

  2. 02

    재생

    피드를 10초 분량씩 받아 두고, 화면은 0.5초마다 쌓인 프레임을 재생합니다. 지연은 자동으로 조절됩니다.

  3. 03

    게임 시계

    일시정지 구간을 빼서 계산합니다. 보드를 늦게 열어도 그 전의 일시정지를 피드 기록에서 찾습니다.

  4. 04

    다시 보기

    끝난 세트의 프레임을 10초 창 단위로 받아 저장하고, 같은 창은 한 번만 받습니다.

설치

Homebrew가 있으면 Go 없이 설치됩니다. Windows나 Go 환경에서는 go install을 씁니다. 설치한 뒤에는 라이브 경기가 없어도 데모 보드로 바로 확인합니다.

# Homebrew로 설치
$ brew install m16khb-org/tap/lolterm

# Go 1.21 이상으로 설치
$ go install github.com/m16khb-org/lolterm@latest

# 라이브 경기 없이 보드 확인
$ lolterm lol demo

# 대화형 앱
$ lolterm

# 최근 Worlds 경기
$ lolterm lol schedule -l worlds -a -n 8
# 소스 빌드
$ git clone https://github.com/m16khb-org/lolterm.git
$ cd lolterm && go build -o ~/.local/bin/lolterm .

처음에는 위의 전체 이름으로 설치합니다. brew tap 뒤에 brew install lolterm을 실행하면 신뢰 목록에 없는 tap이라 거부됩니다. 업데이트는 brew upgrade lolterm, 제거는 brew uninstall lolterm입니다.

자세한 사전 점검과 PATH 설정은 INSTALL.md를 참고하세요.

Command line

앱 밖에서도 같은 피드

relay와 replay는 풀스크린 보드를, bar는 SwiftBar 플러그인 형식을, 나머지 명령은 텍스트를 출력합니다. 전체 플래그는 lolterm lol help에 있습니다.

# 풀스크린 보드
$ lolterm lol relay -l msi            # 실시간 중계 · -i 폴링 간격 · -1 한 프레임
$ lolterm lol replay                  # 최근 종료 경기와 -match 에 쓸 id 목록
$ lolterm lol replay -match ID -g 2   # 끝난 세트 다시 보기

# 텍스트 출력
$ lolterm lol live -l lck -w          # 라이브 경기와 점수판 · -w 30초마다 갱신
$ lolterm lol schedule -l worlds -a   # 예정 경기 · -a 최근 종료 경기
$ lolterm lol standings -l msi        # 대진표·순위
$ lolterm lol streams -l lck          # 중계 링크
$ lolterm lol leagues                 # -l 에 쓸 리그 slug 목록
$ lolterm lol demo                    # 네트워크 없이 보드 한 프레임

# macOS 메뉴 막대
$ lolterm lol bar -l lck             # 라이브 경기 요약 · SwiftBar 스트리밍 플러그인
Documentation

문서

설치부터 구현 상세, 기여 규칙까지 저장소 안에 정리해 두었습니다.

Open source

같이 만들어요

버그 제보, 경기별 검증 결과, 문서 수정, 새 아이디어 모두 환영합니다. 재현 정보를 함께 적어 주시면 큰 도움이 됩니다.