나만의 무기 : HIGHLIGHTING/개발 일지

Day 35 : 트위치로 서비스 확장(실패)

정글러 2022. 3. 19. 20:44

내가 코딩을 할 부분은 전날의 컷 내보내기 구현으로 다 끝났고, 프로젝트도 거의 끝난 마무리 단계

 

프론트의 마무리 작업이 끝나면 결과물을 데스크탑 앱에 merge하는 일만 남은 상태에서,

이를 기다리며 발표 시연 준비를 하고 있었다.

 

그런데 생각할수록 뭔가 좀 걸림

 

인터넷 방송을 타겟팅으로 하는데 트위치는 안되고 유튜브만 된다는게 대체...

 

초기단계에서 트위치의 영상 전송이 느려도 너무 느려서 유튜브 기준으로 가자고 진행했는데,

(우리 문제가 아니라 트위치가 원래 서비스 품질이 나쁘다...) 

그래도 이제 할거 다 했으니 트위치도 구실은 갖춰야 하는게 아닐까 하는 미련

 

그래서 남는 시간에 슬쩍 코드를 뜯어고쳤다.

 

클라이언트의 홈페이지에서 유튜브 다시보기 링크의 유효성을 검증하고 id 포함 링크를 가져가는 함수

유튜브면 11자리 id, 트위치면 10자리 id 포함 링크를 가져가도록 확장

 

백그라운드에서는 플랫폼을 체크하여 동영상 url id와 플랫폼 코드(유튜브면 1, 트위치면 2)를 return하는 함수 제작

 

 

분석 프로세스는 이를 이용하여 code에 따라 다른 프로세스를 진행하도록 분기

트위치쪽의 분석 프로세스는 데이터가 제공되는 포맷이 다르다보니 약간의 디테일을 바꾼 것 외에는 거의 비슷하다.

영상을 가져오는 속도는 정말 끔찍하게 느리다...

 

채팅프로세스는 유튜브처럼 라이브러리를 쓰는것보다 그냥 직접 빨대를 꽂는게 빨라서 이쪽으로 구현

유튜브 채팅데이터 수신은 유튜브측이 정해둔 제한이 있어서 딜레이가 끔찍했는데,

트위치는 그런게 없는지 JSON덩어리를 딜레이없이 계속 받아와서

몇만명이 보는 너댓시간 방송도 1분 안에 분석이 끝난다.

 

일단 데이터 분석까지만 하고나면 에디터페이지 내에서는 트위치든 유튜브든 똑같으니 여기까지 구현 후 확인

 

역시 잘된다.

 

그래서 git push 후 앱을 빌드

 

하니까 안됨

 

???

 

구글링을 해보니 트위치의 영상 제공 정책 문제라고 한다

iframe 안에 parent로 플레이어가 영상을 송출하는 주소를 명시해야 플레이어가 동작하는데,

이것이 개발환경의 node localhost 3000에선 허용되지만, 빌드 후의 정적 html파일은 차단을 당한 것

 

이걸 해결하려면 백그라운드를 크게 손봐야 한다

데스크탑 앱인데 임베드의 parent가 허가받은 주소이려면 결국 개발환경처럼 3000을 써야하는데, 이건 결국 백그라운드가 로컬호스트로 서버를 켜야한다는걸 의미한다.

 

각각의 파이썬 스크립트를 실행해주는 백그라운드가 아니라,

flask 같은 서버를 localhost로 실행시키는 백그라운드가 되도록 뒤집어 엎고,

모든 스크립트가 서버 안에서 라우팅되도록...

기껏 전날 구현해둔걸 다시 다 엎고 새로 짜야...한다...

 

심지어 flask 서버 자체가 pythonShell 자식 프로세스일테니, 이 모든걸 print로 부모랑 소통해야함

 

안해요 그럴시간 없어요

어떻게 구현할지 상상도 안된다ㅋㅋ

 

우리 앱은 트위치 지원 안합니다

분석은 해주는데 영상은 마음의 눈으로 봐야됩니다(???)

팀프로젝트 종료 후 개발할 버전 2.0을 기대해주세요

구현 끝!

 

프론트의 마무리 작업 결과물을 merge하는 것으로 코드는 fix

남은건 발표 준비와 홍보물 제작이다.