반응형

저번에 히토미 다운로더(이름이 뭔가 수상해 보이는데 그냥 평범한 yt-dlp 같은 프로그램이다. gui라 사용하기 쉽고, 특히 로그인 기능이 잘되어 있어서 로그인이 필요한 사이트는 yt-dlp 대신 이걸 사용하고 있다. 참고로 제작자분이 한국분이다.)라는 프로그램으로 숲 라이브 방송을 녹화했는데 녹화를 끝내고 나니 화질이 540p였다. 로그를 봐도 1080p로 인식 잘했는데 결과물이 540p여서 ‘버근가?’ 했는데 나중에 알고 보니 작년쯤부터 한국 ip에서 m3u8을 따면 1080p라고 구라를 치고 실제로는 540p를 보내주도록 바뀌었다고 한다. 아마 그리드 우회를 막으려는 조치인 듯싶다. (나는 그리드도 얌전히 설치했고 단지 녹화하려는 것뿐인데..ㅠㅠ)

해외 vpn을 사용하면 우회가 된다고는 하는데 매번 vpn을 켰다 껐다 하기도 번거롭고 영상 다운로드를 vpn 타고 하는 것도 좀 그래서 좀 테스트를 해보니 처음 다운로드 시작 때만(m3u8을 딸 때) vpn으로 우회하면 이후 다운로드는 vpn을 꺼도 정상적으로 1080p로 받아지는 걸 확인했다.

이참에 아예 자동 녹화 프로그램을 만들어보면 어떨까 해서 이번에도 codex를 사용해 보았다.(최대한 뽕 뽑겠다는 의지!)

이번엔 기술 스택도 정하지 않은 상태라, 만들고 싶은 프로그램을 챗gpt한테 얘기해서 스택부터 정했다. 일단 숲 라이브 시작 여부를 주기적으로 체크+라이브 시작 시 녹화+nas에서 돌릴 예정이니 웹앱으로+도커 이미지. 이런 게 필요하고 기술 스택을 추천받았다. 아, 추가로 이름도 추천받아서 지금의 이름으로 정했다.

Python + FastAPI + PostgreSQL + APScheduler + Streamlink + FFmpeg + Docker Compose 기술 스택을 추천받았다. 여기서 내가 방송 시작 체크는 단순 폴링으로 진행할 거고 db는 가볍게 sqlite로 하자고 해서 최종적으로 Python + FastAPI + SQLite + Streamlink + FFmpeg + Docker Compose로 정했다. 이후 방송 시작 체크에 사용할 api url과 방식을 알려주고, 폴링 주기/최종 녹화 파일의 처리 방식 등을 상의한 뒤 지금까지의 내용을 토대로 PLAN.md 파일을 생성해 달라고 했다. gpt 버그인지 파일을 생성했다면서 링크 다운로드가 안 돼서 그냥 내용을 출력해 달라고 하고 직접 만들었다.ㅡㅡ

아무튼 PLAN.md를 코덱스에 넘겨서 뚝딱뚝딱 만들라고 시켰더니 어느 정도 그럴듯한 프로젝트가 나왔다.

이후엔 직접 테스트해 보면서 보완할 부분을 지시해 가며 수정했다.

https://github.com/joyfuI/soop-autorec

 

GitHub - joyfuI/soop-autorec: SOOP 방송 자동 녹화 프로젝트

SOOP 방송 자동 녹화 프로젝트. Contribute to joyfuI/soop-autorec development by creating an account on GitHub.

github.com

nas에서 사용하기 위해 도커 이미지로 만들었다. 쉬운 업데이트를 위해 컨테이너를 시작할 때마다 git pull을 받아 최신 코드로 업데이트하도록 만들었다.

docker run -d \
  --name soop-autorec \
  -p 8000:8000 \
  -e APP_SECRET_KEY=change-me \
  -v ./data:/workspace/data \
  ghcr.io/joyfui/soop-autorec:latest

이렇게 사용하면 된다. APP_SECRET_KEY 환경변수는 숲 인증할 때 숲 비밀번호 암호화에 사용하는 키이다.

api는 나는 시킨 적이 없지만 코덱스가 알아서 만들어놨다. api는 README.md에 정리되어 있다.

반응형

+ Recent posts