Skip to content

치지직 방송여부 변경시 알려주는 봇입니다

Notifications You must be signed in to change notification settings

choi-hyeseong/ChzzkNotifier

Repository files navigation

ChzzkNotifier

치지직 방송여부 알리미 화면 캡처 2024-09-01 175904

Requirements

  • JDK 17버전으로 빌드되어 해당 버전보다 같거나 높은 버전에서 수행되어야 합니다.
  • Discord Bot Token
  • '치지직-알림' 채팅 채널

실행 방법

shadowJar로 빌드된 jar파일을 -jar 명령어로 실행하되, 첫번째 arg값은 디스코드의 봇 토큰, 두번째 arg값은 치지직 api 파싱 주기(초단위)로 입력하면 되겠습니다 [ 선택사항 ]

/java -jar build.jar(빌드된 파일) token값 interval값-선택

interval값이 설정되어 있지 않으면 기본 60초로 지정됩니다.

명령어

화면 캡처 2024-09-01 175847

과정

공식 API를 제공하지 않아 크롬 개발자도구를 이용, api 주소를 확인하고 요청하는 방식으로 제작되었습니다.

"공식적인" API가 아니기 때문에, 위 프로그램을 사용하면서 발생하는 IP차단 등의 문제를 책임질 수 없습니다. 명심 부탁드립니다.

API는 2개로 구성되어 있습니다.

  1. 치지직 고유 id를 이용해 라이브 및 방송인 정보를 반환하는 api
  2. 스트리머 이름을 통해 검색할 수 있는 api

우선 라이브 여부를 확인하기 위해선 치지직 고유 id를 알아야 할 필요가 있는데, 검색 api(2번)를 이용, 스트리머 이름과 고유 id를 얻어와 저장합니다. 스크린샷 2024-09-01 001934 해당 url로 요청시에 keyword부분을 스트리머 이름으로 변경하고 GET요청을 하면 다음과 같이 반환됩니다. 스크린샷 2024-09-01 002019 뭔가 깔끔하지는 않습니다. URL에 쓸데없는 쿼리문이 많은데 키워드를 제거하고 요청하면 확실히 깔끔해집니다. 화면 캡처 2024-09-01 002310

이제 이를 파싱하고, 해당 채널id를 이용해 라이브 여부를 확인할 수 있습니다. 화면 캡처 2024-09-01 181823 해당 api의 openLive를 통해 현재 라이브 여부를 측정합니다.

따라서 추가된 스트리머의 정보를 주기적으로 확인하고, 라이브가 꺼져있었는데 켜져있거나, 그 반대의 경우에 디스코드로 notify를 수행합니다.

트러블슈팅

해당 치지직 api에 아무런 헤더 없이 raw하게 요청할경우 timeout이 발생합니다. 이때 user-agent를 지정한다면 문제없이 호출됩니다.

아쉬운점

초반에 봇 부분 구현할때까지만 해도 테스트코드를 작성하면서 짜고 있었는데, 후반부로 가니 런타임 테스트가 편한 버릇이 나와버려서.. 테스트를 작성하지 못한 부분이 넘 아쉬웠습니다 추후에 개선한다면 테스트코드를 좀더 작성하는 방안으로 생각하고 있습니다..ㅜ

미구현

  1. 디스코드 봇 리로드 명령어
  2. 추가한 스트리머 목록 봇 종료시에도 저장해두어 다시 켜도 불러올 수 있게.
  3. 서버별로 추가된 스트리머 분리후 알림 발송 (현재는 전역적으로 관리됨 - multple server(guild) 미지원

About

치지직 방송여부 변경시 알려주는 봇입니다

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages