## 현재 https://twitchtracker.com/의 사이트 구조도 바뀌고 다시보기 ID도 안긁어와져서 프로그램이 작동하지 않습니다. 2022-10-03일 현재 이슈를 인지했고 지금 다른 프로젝트로 바쁜 상황이라서 다른 프로젝트가 마무리 되면 고치러 오겠습니다. 죄송합니당ㅠ
이미 github에 올려놔서 이렇게 블로그에 글을 쓰는 게 의미가 있을까 싶지만 개발과정을 간략하게 적어두고 싶어서 정리한다.
나는 잘때 트위치 라디오 방송을 많이 틀어두고 자는 편인데 내가 많이 듣는 스트리머중에 다시보기를 지우거나 다시보기가 구독자 전용인 스트리머들이 종종 있다. 이러면 나중에 이어서 들을 때 굉장히 꼴받는데 그저께 딱 그런 상황이 나와서 간단하게 파이썬으로 다시보기를 웹에서 볼 수 있을 것 같아서 2일? 정도 걸려서 만든 것 같다.
사용하려면 파이썬이 필요한데 설치는 구글이 잘 알려줄꺼다.
나는 일단 최신 버전을 사용했는데 아마 3.6 이상이면 잘 작동할 거다.
간단한 사용방법은 터미널이나 cmd에 "pip install -r requirements.txt" 입력 후에 python3 main.py 혹은 python main.py를 입력한다. 그리고 웹브라우저를 연 후 127.0.0.1/[스트리머 이름]을 입력하면 모든 다시보기의 m3u8 링크가 뜬다.
이제 이론적인 부분을 설명할 건데 나는 알고 싶지 않다 하는 사람들은 아래의 twitch.zip을 다운로드하여서 위의 내용대로 하면 된다.
간략한 이론ㅎ
일단 m3u8에 대하여 간단히 알아야 한다.
m3u8은 플레이리스트의 경로들과 재생시간을 가진 영상 스트리밍용 파일이다.
그니까 쪼게진 비디오 파일들(. ts) 각각의 재생시간 정보들을 나타내는 파일이다.
엄청 간단하게 그냥 m3u8 파일을 뽑을 수 있다면. ts파일을 다운로드하거나 볼 수 있는 것이다.
트위치 다시보기의 m3u8 링크는 보통 https://d1m7jfoe9zdc1j.cloudfront.net/4dc5281ab339fdaa36e6_lck_korea_42571828381_1624779006/chunked/index-dvr.m3u8 이렇게 생겼다
앞의 "https://d1m7jfoe9zdc1j.cloudfront.net/"부분은 웬만해선 거의 다 같고 중요한 건 /4dc..로 되는 뒷부분이다.
지금 내가 가져온 링크는 lck_korea의 다시보기 링크인데 [1]_[2]_[3]_[4]의 4개의 구간으로 나뉘어져 있다고 생각하면 된다.
2는 채널명, 3은 다시보기 id, 4번은 다시보기의 시작시간을 UTC로 변환한 것이다.
마지막 1번은 "2_3_4"를 sha1로 암호화해서 앞의 20글자만 뽑아서 붙이면 된다.
나는 모든 다시보기 정보를 twitchtracker라는 사이트에서 긁어왔는데 여기서는 트위치 채널에서 삭제된 다시보기도 기록이 되어있기 때문에 만약 다시보기를 볼 수 없다면 트위치 채널에서 다시 보기가 삭제됬을 가능성이 높다.
다시보기가 삭제되지 않았는데도 문제가 생긴다면 "https://d1m7jfoe9zdc1j.cloudfront.net"를 "https://d2nvs31859zcd8.cloudfront.net"로 바꿔서 해보는 것이 좋다.
flask로 웹에 띄웠기 때문에 크롬, 파이어폭스를 사용한다면 확장 프로그램에서 m3u8을 재생할 수 있게 할수 있다.
만약 다운로드하고 싶다면 ffmpeg을 이용하면 되는데 Mac이나 Linux에서는 ffmpeg설치가 간단하지만 Windows에서는 해야 될게 좀 있으니 그건 구글에다 찾아보는 게 좋다.
ffmpeg을 잘 설치했다면 터미널에
ffmpeg -headers "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.162 Safari/537.36" -i "m3u8 주소" -c copy -bsf:a aac_adtstoasc "파일명.mp4"
이렇게 입력하면 m3u8에서. ts파일을 다운해서 mp4로 합쳐준다!
github주소는 이쪽이다.
https://github.com/AliceLacie/flask_twitch