Divide and Conquer
[Python] from pytube import Playlist로 유튜브 영상 정보 확인 본문
728x90
정보 받아서 출력

설명과 내용을 잘 담았군... 하필 링크를 애매한 걸 썼네 ㅋㅋㅋ


from pytube import Playlist
# 심층강화학습(Deep Reinforcement Learning)
url = 'https://youtube.com/playlist?list=PLalDxVXf3NHe8s6o7crR0F2yFKpGhNJZw'
playlist = Playlist(url)
print('동영상 재생목록 수: %s' % len(playlist.video_urls))
print('재생목록 제목: %s' % playlist.title)
print('-------------------------------------------------\n')
def detail(yt, output):
contents = {"조회수": yt.views,
"길이": yt.length,
"설명": yt.description
}.get(output, "알 수 없습니다.")
print(f'\n제목>>> {yt.title} \n{output}>>> {contents}')
for video in playlist.videos:
detail(video, "설명")
video라는 Playlist 객체에서 비디오가 어떻게 구성되어 있는지 확인 가능
구성 요소 출력

심층강화학습(Deep Reinforcement Learning) 제1강. 배경, 목적, Q-Learning, MDP, DQN
c:\Users\Automation\Downloads\pytube_playlist3.py:9: DeprecationWarning: Call to deprecated function all (This object can be treated as a list, all() is useless).
for e in video.streams.all(): # filter(file_extension='mp4')
<Stream: itag="18" mime_type="video/mp4" res="360p" fps="30fps" vcodec="avc1.42001E" acodec="mp4a.40.2" progressive="True" type="video">
<Stream: itag="22" mime_type="video/mp4" res="720p" fps="30fps" vcodec="avc1.64001F" acodec="mp4a.40.2" progressive="True" type="video">
<Stream: itag="136" mime_type="video/mp4" res="720p" fps="30fps" vcodec="avc1.64001f" progressive="False" type="video">
<Stream: itag="247" mime_type="video/webm" res="720p" fps="30fps" vcodec="vp9" progressive="False" type="video">
<Stream: itag="135" mime_type="video/mp4" res="480p" fps="30fps" vcodec="avc1.4d400a" progressive="False" type="video">
<Stream: itag="244" mime_type="video/webm" res="480p" fps="30fps" vcodec="vp9" progressive="False" type="video">
<Stream: itag="134" mime_type="video/mp4" res="360p" fps="30fps" vcodec="avc1.4d401e" progressive="False" type="video">
<Stream: itag="243" mime_type="video/webm" res="360p" fps="30fps" vcodec="vp9" progressive="False" type="video">
<Stream: itag="133" mime_type="video/mp4" res="240p" fps="30fps" vcodec="avc1.4d400c" progressive="False" type="video">
<Stream: itag="242" mime_type="video/webm" res="240p" fps="30fps" vcodec="vp9" progressive="False" type="video">
<Stream: itag="160" mime_type="video/mp4" res="144p" fps="30fps" vcodec="avc1.4d400b" progressive="False" type="video">
<Stream: itag="278" mime_type="video/webm" res="144p" fps="30fps" vcodec="vp9" progressive="False" type="video">
<Stream: itag="140" mime_type="audio/mp4" abr="128kbps" acodec="mp4a.40.2" progressive="False" type="audio">
<Stream: itag="251" mime_type="audio/webm" abr="160kbps" acodec="opus" progressive="False" type="audio">
""" 출처
https://012vision.tistory.com/798
https://seolin.tistory.com/93?category=762768
"""
from pytube import Playlist
url = 'https://youtube.com/playlist?list=PLalDxVXf3NHe8s6o7crR0F2yFKpGhNJZw'
playlist = Playlist(url)
for video in playlist.videos:
print('\n\n', video.title)
for e in video.streams.all():
print(str(e))
streams는 Query 객체로 처리, all()이나 first()를 같이 사용해야 함
mp4 확장자만 추출하기 위해 filter()를 사용할 수 있음
for e in video.streams.filter(file_extension='mp4').all():
print(str(e))
심층강화학습(Deep Reinforcement Learning) 제1강. 배경, 목적, Q-Learning, MDP, DQN
c:\Users\Automation\Downloads\pytube_playlist3.py:9: DeprecationWarning: Call to deprecated function all (This object can be treated as a list, all() is useless).
for e in video.streams.filter(file_extension='mp4').all(): #
<Stream: itag="18" mime_type="video/mp4" res="360p" fps="30fps" vcodec="avc1.42001E" acodec="mp4a.40.2" progressive="True" type="video">
<Stream: itag="22" mime_type="video/mp4" res="720p" fps="30fps" vcodec="avc1.64001F" acodec="mp4a.40.2" progressive="True" type="video">
<Stream: itag="136" mime_type="video/mp4" res="720p" fps="30fps" vcodec="avc1.64001f" progressive="False" type="video">
<Stream: itag="135" mime_type="video/mp4" res="480p" fps="30fps" vcodec="avc1.4d400a" progressive="False" type="video">
<Stream: itag="134" mime_type="video/mp4" res="360p" fps="30fps" vcodec="avc1.4d401e" progressive="False" type="video">
<Stream: itag="133" mime_type="video/mp4" res="240p" fps="30fps" vcodec="avc1.4d400c" progressive="False" type="video">
<Stream: itag="160" mime_type="video/mp4" res="144p" fps="30fps" vcodec="avc1.4d400b" progressive="False" type="video">
<Stream: itag="140" mime_type="audio/mp4" abr="128kbps" acodec="mp4a.40.2" progressive="False" type="audio">
가장 아래를 보면 mime_type="video/mp4"와 mime_type="audio/mp4"를 확인할 수 있음
"audio/mp4"는 음성만 있는 파일
<Stream: itag="22" mime_type="video/mp4" res="720p" fps="30fps" vcodec="avc1.64001F" acodec="mp4a.40.2" progressive="True" type="video">
<Stream: itag="136" mime_type="video/mp4" res="720p" fps="30fps" vcodec="avc1.64001f" progressive="False" type="video">
비디오도 뭐는 acodec이 있고 뭐는 없음
acodec이 없는 파일은 영상만 존재하는 파일(음성이 없음)
반응형
'성장캐 > 기타' 카테고리의 다른 글
| [Arduino] Avrdude로 Ubuntu에서 .hex 포맷의 Arduino 파일 업로드 후 실행 (0) | 2023.05.03 |
|---|---|
| ChatGPT로 Cats vs NonCats Classifier 만들기 (0) | 2023.05.02 |
| [에러해결] pytube에서 KeyError: 'streamingData' (0) | 2023.04.28 |
| [환경세팅] vscode tree todo setting (0) | 2023.04.20 |
| [환경세팅] Tensorflow Tutorial (0) | 2023.04.04 |
Comments