Skip to content

Repository files navigation

CHZZK

npm versioninstall sizenpm downloadslicense

네이버 라이브 스트리밍 서비스 CHZZK의 비공식 API 라이브러리입니다.

현재 구현된 기능은 다음과 같습니다.

  • 로그인 (쿠키 사용)
  • 검색 (채널, 영상, 생방송, 라운지, 자동완성)
  • 채널 정보 조회
  • 방송 상태 및 상세 정보 조회
  • 채팅
  • 관리 (채팅 제한, 활동 제한, 방송 설정, 금칙어 설정 등)

설치

Node 18 이상에서만 동작합니다.

npm install chzzk
pnpm add chzzk
yarn add chzzk

예시

chzzk.naver.com 에 로그인 하신 후, 개발자 도구를 열어 Application > Cookies > https://chzzk.naver.com 에서 NID_AUTNID_SES 쿠키를 확인하실 수 있습니다.

// 로그인 옵션 (선택사항)constoptions={nidAuth: "NID_AUT 쿠키",nidSession: "NID_SES 쿠키"}constclient=newChzzkClient(options)// 채널 검색constresult=awaitclient.search.channels("녹두로")constchannel=result.channels[0]// 설정된 방송 정보, 방송 중이 아닐 경우에도 정보가 존재할 수 있음constliveDetail=awaitclient.live.detail(channel.channelId)if(liveDetail){constmedia=liveDetail.livePlayback.media// 방송 중이 아닐 경우 비어있음consthls=media.find(media=>media.mediaId==="HLS")// HLS, LLHLSif(hls){constm3u8=awaitclient.fetch(hls.path).then(r=>r.text())console.log(m3u8)}}// 채팅 인스턴스 생성constchzzkChat=client.chat({channelId: channel.channelId,// chatChannelId 의 변경을 감지하기 위한 polling 요청의 주기 (선택사항, ms 단위)// channelId를 지정할 경우 자동으로 30초로 설정됨, 0초로 설정 시 polling 요청을 하지 않음pollInterval: 30*1000})chzzkChat.on('connect',()=>{console.log('Connected')// 최근 50개의 채팅 및 고정 메시지를 요청 (선택사항, 도네 및 시스템 메시지 포함이므로 주의)chzzkChat.requestRecentChat(50)})// 재연결 (방송 시작 시)chzzkChat.on('reconnect',newChatChannelId=>{console.log(`Reconnected to ${newChatChannelId}`)})// 일반 채팅chzzkChat.on('chat',chat=>{constmessage=chat.hidden ? "[블라인드 처리 됨]" : chat.messageconsole.log(`${chat.profile.nickname}: ${message}`)// 유저의 팔로우 일시 불러오기// client.chat.profileCard(chzzkChat.chatChannelId, chat.profile.userIdHash).then(profile => {// const following = profile.streamingProperty.following// console.log(following ? `${following.followDate} 에 팔로우 함` : "팔로우 안함")// })})// 후원 채팅chzzkChat.on('donation',donation=>{console.log(`\n>> ${donation.profile?.nickname??"익명의 후원자"} 님의 ${donation.extras.payAmount}${donationTypeName(donation.extras.donationType)}`)if(donation.message){console.log(`>> ${donation.message}`)}console.log()})// 구독chzzkChat.on('subscription',subscription=>{console.log(`${subscription.profile.nickname} 님이 ${subscription.extras.month} 개월 동안 ${subscription.extras.tierName} 구독중`)})// 시스템 메시지 (채팅 제한, 활동 제한, 운영자 임명 등)chzzkChat.on('systemMessage',systemMessage=>{console.log(systemMessage.extras.description)})// 고정 메시지chzzkChat.on('notice',notice=>{// 고정 해제 시 nullconsole.log(notice)})// RAW 이벤트// chzzkChat.on('raw', raw => {// console.log(raw)// })// 채팅 연결awaitchzzkChat.connect()

브라우저 사용

ChzzkChat 은 브라우저 환경에서도 사용이 가능합니다.

// Webpack 등의 모듈 번들러를 통해 사용할 경우import{ChzzkChat}from"chzzk"// script 태그에서 사용할 경우import{ChzzkChat}from"https://cdn.skypack.dev/chzzk"
// chatChannelId, accessToken 값을 제공해야 합니다. (해당 값들은 서버 환경에서만 불러올 수 있음)constclient=newChzzkChat({
chatChannelId,
accessToken
})

CORS 우회 방법

baseUrls 옵션을 설정하여 ChzzkClient가 요청을 보내는 API 주소를 변경할 수 있습니다.

해당 옵션을 설정할 경우 브라우저 (클라이언트) 에서도 ChzzkClient의 사용이 가능합니다.

constclient=newChzzkClient({baseUrls: {chzzkBaseUrl: "https://api.chzzk.naver.com",gameBaseUrl: "https://comm-api.game.naver.com/nng_main"}})

About

네이버 라이브 스트리밍 서비스 치지직의 비공식 API 라이브러리

Topics

Resources

Stars

209 stars

Watchers

7 watching

Forks

Used by

Contributors

Languages