이틀 전부터 개발 중인 Twitch Chat Alnalyzer (개발중)입니다.
데이터 시각화를 좀 해보고 싶은데, 아직까지 우리나라엔 좋은 데이터뭉치들이 없어서 직접 구해야합니다..ㅠ
그래서 어디서 얻을 수 있을까 하다가 인터넷 방송 채팅을 모아보면 재밌는 것을 만들 수 있지 않을까 싶어서 만들어보았습니다.
아직 미완이므로 자세한 상세 정보는 적지 않겠습니다!
이 글에서는 인터넷 개인 스트리밍 플랫폼인 트위치tv의 채팅을 파싱하는 방법을 알아보겠습니다.
트위치의 다시보기 실행시 크롬의 개발자 도구 Network 탭입니다. 여기서 주고받는 여러 정보를 알 수 있습니다만
저기 중간쯤 comments?content_offset_seconds=1 이 딱보니 느낌상 채팅일 것 같습니다.(사실 찾는데 좀 걸렸슴니다ㅎ)
Json 형식으로 N개의 Comment / _next / _ prev 노드들로 되어있네요
처음에는 content_offset_seconds 파라미터를 이용하지만, 이 후부터는 cursor 파라미터로 다음 받아올 값들을 추적합니다.
_next 노드에는 이전 cursor 파라미터값이, _prev 노드에는 이후 cursor 값이 저장되어 있습니다.
이제 python의 request 모듈로 처리해봅시다.
추가적으로 트위치 api 서버에서 client_id 라는 파라미터가 있어야 정상 처리가 가능하더군요.
트위치 개발자 사이트에 가서 제 아이디의 client id를 생성해서 넣었습니다.
돌려보니 짠, 하고 나타났습니다.
크롬 개발자 도구에서 맞는지 확인해보니 유저의 채팅인 message:body:"므야" 도 잘 나왔습니다.
(id값이나 이름같은건 왠지 가려야할 거같아서 가렸습니다.. 보고 싶으면 누구나 볼 수 있는거긴 하지만..!)
받아온 마지막 comment의 content_offset_seconds 는 시작으로부터 몇 초에 이 메시지가 쓰였는지입니다.
이 시간이 되면 다음 comments?cursor=(_next 값) 을 이용해 다시 채팅을 받아옵니다.
이제 영상 끝까지의 _next 를 이용해 다음 cursor로 이동해서, 영상 전체의 채팅을 가져올 수 있겠군요.
개발 전 과정을 올릴까 말까 생각중이라 다음 2도 쓸지 말지 모르겠네요
이상 트위치 다시보기 채팅 파싱하기였습니다
우와 정말 대단하시네요. 제가 프로그래밍을 몰라서 이렇게 올려주셨는데도 이해 못하는게 죄송스럽네요.
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
감사합니다~ 근데 따로 배우신게 없으시면 아마 이해하기는 힘드실거에요 ㅠㅠ
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Congratulations @steemonen1! You received a personal award!
Click here to view your Board
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Congratulations @steemonen1! You received a personal award!
You can view your badges on your Steem Board and compare to others on the Steem Ranking
Vote for @Steemitboard as a witness to get one more award and increased upvotes!
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit