구글 제미니를 사용하여 유튜브 다운로드 프로그램을 5분만에 제작하기
최근에 AI를 활용하여 작은 프로그램을 개발해보는 실험을 하고 있습니다.
이번에는 유튜브 동영상을 다운로드할 수 있는 간단한 프로그램을 만들어보았습니다.
블로그 글: https://anpigon.tistory.com/464
아래는 구글 제미니가 작성한 프로그램 코드입니다.
import sys
from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import (
QApplication,
QWidget,
QLabel,
QLineEdit,
QPushButton,
QVBoxLayout,
QProgressBar,
QMessageBox,
QGridLayout
)
from PyQt5.QtGui import QImage, QPixmap
from pytube import YouTube, StreamQuery
from io import BytesIO
import requests
class YouTubeDownloader(QWidget):
def __init__(self):
super().__init__()
self.setWindowTitle("YouTube Downloader")
# 레이블, 입력 필드, 버튼, 진행률 표시줄, 다운로드 상태 레이블, 썸네일 레이블
self.url_label = QLabel("YouTube URL 입력:")
self.url_input = QLineEdit()
self.download_button = QPushButton("다운로드")
self.progress_bar = QProgressBar()
self.status_label = QLabel("")
self.thumbnail_label = QLabel()
# 레이아웃 설정
layout = QVBoxLayout()
layout.addWidget(self.url_label)
layout.addWidget(self.url_input)
layout.addWidget(self.download_button)
layout.addWidget(self.thumbnail_label)
layout.addWidget(self.progress_bar)
layout.addWidget(self.status_label)
self.setLayout(layout)
# 버튼 연결
self.download_button.clicked.connect(self.download_video)
self.url_input.textChanged.connect(self.update_thumbnail)
def update_thumbnail(self):
url = self.url_input.text()
if url:
try:
yt = YouTube(url)
response = requests.get(yt.thumbnail_url)
image_data = response.content # Get image data as bytes
image = QImage.fromData(image_data) # Create QImage from bytes
# 썸네일 크기 조절
scaled_image = image.scaled(200, 150, Qt.KeepAspectRatio) # 예시 크기: 200x150
pixmap = QPixmap.fromImage(scaled_image) # Create QPixmap from QImage
self.thumbnail_label.setPixmap(pixmap)
except Exception as e:
self.thumbnail_label.setText(f"썸네일 가져오기 오류: {e}")
else:
self.thumbnail_label.clear()
def download_video(self):
url = self.url_input.text()
try:
yt = YouTube(url)
stream = yt.streams.filter(progressive=True, file_extension="mp4").order_by("resolution").desc().first()
# 다운로드 진행률 표시 및 상태 업데이트
total_size = stream.filesize
bytes_downloaded = 0
while bytes_downloaded < total_size:
stream.download(filename="temp.mp4") # Download in chunks
bytes_downloaded = total_size - stream.bytes_remaining
percentage = int((bytes_downloaded / total_size) * 100)
self.progress_bar.setValue(percentage)
self.status_label.setText(f"다운로드 중... ({percentage}%)")
# 다운로드 완료 후 알림
QMessageBox.information(self, "다운로드 완료", "다운로드가 완료되었습니다.")
self.progress_bar.setValue(100)
self.status_label.setText("다운로드 완료")
except Exception as e:
QMessageBox.warning(self, "오류 발생", f"다운로드 오류: {e}")
if __name__ == "__main__":
app = QApplication(sys.argv)
downloader = YouTubeDownloader()
downloader.show()
sys.exit(app.exec_())
Posted through the ECblog app (https://blog.etain.club)
[광고] STEEM 개발자 커뮤니티에 참여 하시면, 다양한 혜택을 받을 수 있습니다.
Congratulations, your post has been upvoted by @upex with a 0.21% upvote. We invite you to continue producing quality content and join our Discord community here. Keep up the good work! #upex
취미로 하시는건가요..유튜브 무료다운로드하는사이트들은 많은데.,,어쨌든 개발자들은 대단함요^
네 취미로 하고 있어요. 요즘 AI 개발 자동화 시스템을 구축해보고 있어요.