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에서 직접 가져온 것입니다.
관련
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트