ㅁ 개요
- 이번 프로그램은 이전 프로그램(2022.10.22 - [파이썬 실습/유틸리티] - 파이썬 유튜브 동영상 다운로드 프로그램 만들기)과 유사하나 유튜브 동영상(재생목록)을 한꺼번에 다운로드하는 프로그램입니다.
(본 블로그의 내용은 유튜브 동영상(파이썬 유튜브 동영상 한꺼번에 다운로드하는 프로그램 만들기(making YouTube Download Program all at once by python))에서 더욱 자세히 보실 수 있습니다.)
(1) 프로그램 실행시 재생목록의 전체 영상 개수를 보여주고, 순차적으로 하나씩 다운로드 진행율을 표시하면서 지정된 폴더로 영상 다운로드가 진행됩니다.
(2) 지정된 폴더(imsi)에 재생목록의 모든 영상(예: 10개)이 저장(다운로드)된 것을 확인 할 수 있습니다.
from pytube import Playlist
url = 'https://www.youtube.com/watch?v=4ASVa2HPr6M&list=PL-c3IMzE1Ofo3QFnr2bUYsELEz4wcgTx3'
playlist = Playlist(url)
print('동영상 재생목록 수: %s' % len(playlist.video_urls))
print('재생목록 제목: %s' % playlist.title)
num = len(playlist.video_urls)
def on_progress(vid, chunk, bytes_remaining):
total_size = vid.filesize
bytes_downloaded = total_size - bytes_remaining
percentage_of_completion = bytes_downloaded / total_size * 100
totalsz = (total_size/1024)/1024
totalsz = round(totalsz,1)
remain = (bytes_remaining / 1024) / 1024
remain = round(remain, 1)
dwnd = (bytes_downloaded / 1024) / 1024
dwnd = round(dwnd, 1)
percentage_of_completion = round(percentage_of_completion,2)
#print(f'Total Size: {totalsz} MB')
print(f'Download Progress: {percentage_of_completion}%, Total Size:{totalsz} MB, Downloaded: {dwnd} MB, Remaining:{remain} MB')
path = './imsi'
i = 1
for video in playlist.videos: # playlist의 영상을 하나씩 돌면서
video.register_on_progress_callback(on_progress) # 다운로드 상태를 보여주기 위해 사용자 정의 함수(on_progress())를 호출하고,
video.streams.filter(res="360p").first().download(path) # 화질과 다운로드 패스를 지정 후
print(i," 번째 동영상이 다운로드 되었습니다.","(",video.title,")\n") # 영상이 다운로드 되면 안내 메시지를 보여줌
i = i + 1
print(num, "개의 동영상이 모두 다우로드 완료되었습니다.")
# pytube 모듈 설치
> python -m pip install pytube
# 소스(소스명:pytube_playlist1.py) 실행
> python pytube_playlist1.py
1. from pytube import Playlist <-- 'pytube 패키지에서 Playlist 모듈부분을 사용하겠다' 라는의미
2. len(playlist.video_urls) <-- 재생목록의 영상의 개수 (갯수 확인을 위해 len()함수 사용)
3. playlist.title <-- 재생목록의 제목(영상의 제목이 아님)
4. video.title <-- 재생목록 내 영상의 제목
5. num = len(playlist.video_urls) <-- 최종 다운로드 완료 시 받은 전체 개수를 표시하기 위해 num변수에 저장
6. def on_progress() <-- 영상의 다운로드 진행율을 표시하기 위해 사용자 정의 함수로 만들어 둠
7. path = './imsi' <-- 영상을 다운로드 받을 위치 지정
8. video.register_on_progress_callback(on_progress) <-- 재생목록 내 영상의 다운로드 상태를 표시하기 위해 'register_on_progress_callback(on_progress)'와 같은 표현을 사용
1. 다른 부분은 이전 영상과 유사하며, for문을 이용하여 재생목록의 내의 영상을 하나씩 확인 후 다운로드 상태를 표시하기 위해 on_progress()함수를 호출하고, 스트림에 화질설정과 다운로드 경로를 지정 후, 영상이 다운로드 될때마다 안내 메시지를 뿌려줍니다.
2. 실제 프로그램 실행 시 재생목록 수, 다운로드 상태(진행율, 영상의 전체 크기/다운로드된 사이즈/남은사이즈)를 보여주고, 다운로드가 진행됩니다.
3. 지정된 폴더에 가서 확인한 결과 동영상이 모두 다운로드된 것을 확인 할 수 있습니다.
>pip install --upgrade pytube
위의 내용이 유익하셨다면, 좋아요와 구독 부탁드립니다.
감사합니다.
'파이썬 실습 > 유튜브 동영상 다운로드 프로그램 만들기' 카테고리의 다른 글
파이썬 유튜브 동영상 다운로드 프로그램 만들기 (0) | 2022.10.22 |
---|