yt-dlp를 통해 유튜브 자막 추출하기

4riend·2024년 3월 16일
1

CodeMind 프로젝트

목록 보기
1/20
post-thumbnail

구름톤 쿠버네티스 과정 시작 후 드디어 프로젝트 기간이 시작되었다.
자유로운 분위기 속에 팀 빌딩이 진행되었고 팀장님과 커피챗을 통해 현재 팀에 합류하게 되었다.

늦더라고 하루하루 있었던 일을 velog에 기록하려 한다 😁


요구사항

자연어처리(NLP)와 쿠버네티스(SRE)로 이루어진 우리 팀은 다음과 같은 to-do list가 생겼다.

  • NLP: 훈련 방법, 논문 정보, 유튜브 해설 등등 우리가 훈련에 사용할 정보 수집하기
  • SRE: 코딩테스트 문제, 유튜브 영상 별로 대본 정보 추출하는 백엔드 구현

그리고 우리(SRE)는 추가적으로 팀장님께

  • 기술 스택은 그냥 제일 빨리 구현 할 수 있는 것 진행하기
  • 유튜브 캡션 추출 프로그램은 yt-dlp 사용하기

라는 요구 사항을 받았다.


유튜브 영상에서 자막 추출하기

yt-dlp를 사용하면 된다는 요구사항이 있었지만 첨에 다른 것도 시도했었다.

pytube

간단하게 결론만 말하면 실패한다.
분명 자막이 있는 영상임에도 불구하고 captions 기능은 작동하지 않았다 😂

from pytube import YouTube

yt = YouTube('https://youtu.be/aDpi9uDoJas?feature=shared')
print(yt.title)

captions = yt.captions
print(yt.captions)

for caption in captions:
    print(caption)  # 가져올 수 있는 언어 확인

yt-dlp

기본적으로 yt-dlp는 cmd 창에서 명령어로 수행되는 라이브러리다.
그러나 이 기능으로 동작하는 서버를 웹에 띄워야했기 때문에 python 코드로의 변환이 필수였다.

우선 필요한 자막을 가져오기 위해 공식 깃허브에 subtitle을 참고하여 아래와 같은 명령어를 만들었다.

yt-dlp --write-auto-subs https://youtu.be/KLlXCFG5TnA?feature=shared

다시 CLI to API 작업이 필요했기에 공식 문서에서 제공하는 변환 코드를 사용했다.

위 이미지에서 빨간 화살표 부분의 코드를 사용하면 된다.
그렇게 시도해볼 수 있는 가장 간단한 코드는 아래가 된다.

import yt_dlp

ydl_opts = {
    'writeautomaticsub': True
}
with yt_dlp.YoutubeDL(ydl_opts) as ydl:
    ydl.download('https://youtu.be/KLlXCFG5TnA?feature=shared')

그럼 자막 파일이 자동 생성된다 👍


참고 문헌

profile
날씨의 아이, 진격의 거인, 로스트 아크, Java Spring

0개의 댓글