본문 바로가기
Python

[파이썬] 유투브 영상 및 자막 다운로드 해보기

by 퍼포먼스마케팅코더 2022. 8. 7.
반응형

이거는 유튜브 쪽에 영상을 다운로드 받지 않습니까 그런 거 받으면 괜찮다 싶은 것들을 영상을 다운로드 받고 싶은 그런 경우가 있을 거라 생각을 해요.  그럴 때 어떻게 해야 되느냐라는 게 있을 때 유용하게 쓸 수 있는 코딩입니다.  그래서 첫 번째 같은 경우 제가 두 가지를 가지고 왔는데 첫 번째는 유튜브 영상을 다운로드 받아보는 거 하고 두 번째는 첫 번째가 그거네요. 첫 번째가 자막을 다운로드 받아보는 거 하고 그다음에 두 번째가 유튜브 영상을 다운로드 받아보는 겁니다. 이 두 가지를 가지고 왔는데 보시면 단점은 느려요. 느립니다. 해서 만약에 고화질로 해서 영상을 다운로드 받는다거나 이런 거 할 때 답답하실 거예요. 느리긴 합니다. 그렇지만  유용하게 쓰이거나 이런 것도 있을 것 같아요. 이거 할 때 패키지 하나 다운로드 받기는 해야 됩니다. 

파이썬 유투브 자막 다운로드

하나가 있긴 한데 그거는 영상 다운로드 받는 거 이거를 참고를 해보시면 될 것 같고 어떤 플레이 유튜브 다운로드 하면 받는 거 자막이죠.자막이 한국어로 설정돼 있는 것으만 선별을 해서 다운로드 받아야 됩니다 만약에 한국어로 돼 있는 게 없다. 하는 게 있으면 에러가 날 거예요. 그거를 더 유튜브 자막 다운로드 받을 때는 유념만 해보시면 될 것 같습니다.

import youtube_dl
from youtube_transcript_api import YouTubeTranscriptApi

output_dir = os.path.join('./', '%(playlist_title)s', '%(playlist_index)s. %(title)s.%(ext)s')

# 플레이리스트 링크
download_list = ['https://www.youtube.com/watch?v=P5EzsnKRRY0']

ydl_opt = {
'outtmpl': output_dir,
    #'format': 'bestaudio/best',
}

with youtube_dl.YoutubeDL(ydl_opt) as ydl:
    ydl.download(download_list) #유투브 다운로드

srt = YouTubeTranscriptApi.get_transcript("P5EzsnKRRY0", languages=['ko'])

with open("C:/Users/user/NA/subtitle.txt", 'w', encoding='utf-8') as f :  #유투브 영상 자막 다운
    for i in srt :
        #f.write("{}\n".format(i))
        f.write(str(i) + '\n') #자막 다운
        
        
for i in srt : #텍스트 확인
    print(i['text']) #확인

파이썬 영상 자막 다운로드

그리고 이 밑에 있는 이 코딩은 영상을 오디오 파일로 추출을 해서 가지고 옵니다. 이전에 제가 포스팅 했던 거랑 유사한 내용이긴 한데 이거 내용만 바꿔주면 될 것 같아요. 쉬울 것 같은데 영상을 오디오 파일로 추출했을 거기 다 그거만 없애면 됩니다. 그것만 없애고 그냥 변수만 오디오에 관련된 변수가 있는데 그것만 지우고 넣으시면 돼요. 그러면 영상으로 바로 다운로드가 됩니다. 그걸로 받으시면 될 것 같습니다. url 쪽에 리스트 형식으로 되어 있는 파이썬 코딩 안에 그게 있는데 거기 안에다가 유튜브 url을 집어넣으시면 바로 영상 다운로드가 되거든요. 그것만 참고만 해주시면 될 것 같습니다.

import youtube_dl
from youtube_transcript_api import YouTubeTranscriptApi

import pdfkit
from PyPDF2 import PdfFileReader, PdfFileWriter
from tika import parser
import pdfkit

output_dir = os.path.join('./', '%(playlist_title)s', '%(playlist_index)s. %(title)s.%(ext)s')


urls = [''
]

try :
    ydl_opts = { #youtube_dl 라이브러리 설정
    'outtmpl': output_dir,
    'format': 'bestaudio/best',  #최고 품질로 추출
    'postprocessors': [{ 
        'key': 'FFmpegExtractAudio', #영상을 오디오 파일로 추출
        'preferredcodec': 'mp3', #오디오 파일 포멧을 mp3파일로 설정
        'preferredquality': '192', #오디오 품질 설정 192k
        }],
    }

    with youtube_dl.YoutubeDL(ydl_opts) as ydl :
        for url in urls :
            ydl.download([url])
except :
    pass

print("다운로드가 완료되었습니다.")

 

반응형

댓글