#파이썬 #유튜브 영상 이미지 추출
최근에 드라마를 보다가 스크랩을 하고 싶어졌다.
인스타나 블로그질이라는걸 해보고 싶었는데 뭔가 이미지를 따는게 귀찮았다. 찾아보니 유튜브 영상을 바로 다운로드 해줄 수 있는 파이썬 라이브러리가 있길래 영상을 다운로드 받아서 이미지 추출까지 해주는 라이브러리를 한큐에 만들고자 한다.
pytube 설치
$ pip install pytube
ffmpeg 설치
# 윈도우의 경우에는 다운로드 받아서 폴더에 압축을 풀고 환경설정만 잡으면 된다.
$ sudo apt install ffmpeg
코드작성
from pytube import YouTube
from urllib import parse
import datetime as dt
import sys
import os
DOWNLOAD_FOLDER = "./Downloads"
url = None
duration = 1
distdate = dt.datetime.now().strftime("%Y%m%d")
# 혹시 까먹을 까봐 args 실행코드만 출력하면 관련 args에 관한 정보를 출력
if len(sys.argv) <= 1:
print("args:2 => 유튜브 주소")
print("args:3 => 분당 장수 (최대 1800)")
sys.exit(0)
# 두번째 유튭 주소 입력시
if len(sys.argv) >= 2:
url = sys.argv[1]
# 분당 몇장 출력 할것인지 계산 처리 1입력시 1초 한장
if len(sys.argv) >= 3:
duration = int(sys.argv[2])
duration = 1800 if duration > 1800 else duration
duration = round( (duration / 60),2)
# ffmpeg 실행 코드
ffm = 'ffmpeg -ss 00:00:0 -i '+DOWNLOAD_FOLDER+'/Video/TEST.mp4 -r '+str(duration)+' -qscale:v 2 -f image2 '+DOWNLOAD_FOLDER+'/Images/'+distdate+'-%d.jpg'
print(ffm)
yt = YouTube(url)
print("제목 : ", yt.title)
print("길이 : ", yt.length)
print("게시자 : ", yt.author)
print("게시날짜 : ", yt.publish_date)
# print("조회수 : ", yt.views)
print("키워드 : ", yt.keywords)
# print("설명 : ", yt.description)
print("썸네일 : ", yt.thumbnail_url)
print(yt.streams.filter(progressive=True))
chk = False
for e in yt.streams.all():
if int(e.itag) == 137:
chk = True
if chk == False:
sys.exit(0)
if chk == True:
stream2 = yt.streams.get_by_itag(137)
stream2.download(DOWNLOAD_FOLDER+'/Video', 'TEST.mp4')
os.system( ffm )
실행
# python app.py #유튭주소 #분당_이미지_장수
$ python app.py https://www.youtube.com/watch?v=JNfuIFMBRZ4 6
마무리
별거 없지만 쉽게 사용할 수 있도록 구성 해봤다.
리눅스 위주로 작성되어져 있지만 잘 정리하면 윈도우에서도 바로 쓸 수 있을정도로 간단하다 윈도우에서 ffmpeg 설치하는건 찾아보면 많이 나온다.
개인적으로는 여기에 SSH를 통해서 작업용 컴터로 이미지를 바로 전달 해주는 코드 까지 있으면 어떨 까 해서 그부분도 개인적으로는 구현 해서 사용중이다.
댓글
댓글 쓰기