jdepoix/youtube-transcript-api

This is a python API which allows you to get the transcript/subtitles for a given YouTube video. It also works for automatically generated subtitles and it does not require an API key nor a headless browser, like other selenium based solutions do!

이것은 무엇인가요?

youtube-transcript-api는 YouTube 비디오의 트랜스크립트(자막)를 가져올 수 있는 Python 라이브러리입니다. 수동으로 만든 자막과 YouTube의 자동 생성 자막 모두를 지원하며, 자막을 번역할 수도 있고, 브라우저가 필요 없습니다(다른 도구와 달리).

설치 방법

pip를 사용하세요:

pip install youtube-transcript-api

기본 사용법

비디오의 비디오 ID(전체 URL이 아닌)를 전달하여 트랜스크립트를 가져옵니다. 예를 들어, https://www.youtube.com/watch?v=12345의 경우 ID는 12345입니다.

from youtube_transcript_api import YouTubeTranscriptApi

ytt_api = YouTubeTranscriptApi()
transcript = ytt_api.fetch(video_id)

기본적으로 영어 트랜스크립트를 가져오려고 시도합니다. 반환되는 객체는 리스트처럼 동작합니다: 반복, 인덱싱, 길이 확인이 가능합니다. 각 스니펫에는 text, start(초), duration(초)가 포함됩니다.

transcript.to_raw_data()를 사용하여 사전 목록으로 원시 데이터를 가져올 수도 있습니다.

언어 선택

선호 순서대로 언어 코드 목록을 전달하세요:

ytt_api.fetch(video_id, languages=['de', 'en'])  # 독일어 먼저, 그다음 영어를 시도합니다

사용 가능한 트랜스크립트 나열

비디오의 모든 트랜스크립트를 보려면:

transcript_list = ytt_api.list(video_id)

언어와 유형(수동 생성 vs 자동 생성)으로 필터링할 수 있습니다:

transcript = transcript_list.find_transcript(['de', 'en'])
transcript = transcript_list.find_manually_created_transcript(['de', 'en'])
transcript = transcript_list.find_generated_transcript(['de', 'en'])

각 Transcript 객체에는 메타데이터(비디오 ID, 언어, 생성 여부, 번역 가능 여부 등)와 실제 트랜스크립트를 가져오는 .fetch() 메서드가 있습니다.

자막 번역

트랜스크립트를 다른 언어로 번역할 수 있습니다:

translated = transcript.translate('de')
translated.fetch()

IP 차단 처리

YouTube는 때때로 클라우드 IP를 차단합니다. 라이브러리는 프록시 사용을 지원합니다. Webshare 회전 리지덴셜 프록시에 대한 내장 지원이 있으며, GenericProxyConfig를 사용하여 일반 HTTP/HTTPS/SOCKS 프록시를 사용할 수도 있습니다.

사용자 지정 HTTP 설정

자체 requests.Session을 전달하여 헤더, SSL 인증서를 설정하거나 인스턴스 간에 쿠키를 공유할 수 있습니다.

포맷터

라이브러리에는 트랜스크립트를 JSON, 텍스트, SRT, WebVTT 등 일반적인 형식으로 변환하는 포맷터가 포함되어 있습니다. Formatter를 서브클래싱하여 사용자 지정 포맷터를 만들 수도 있습니다.

CLI

명령줄 도구도 있습니다:

youtube_transcript_api <video_id_1> <video_id_2> ...

터미널에 트랜스크립트를 출력합니다.

연령 제한 비디오에 대한 참고 사항

쿠키 기반 인증이 현재 손상되어 있어 연령 제한 비디오에 액세스하지 못할 수 있습니다.


위의 모든 정보는 프로젝트의 README에서 직접 가져온 것입니다.

관련

  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트