Pytube ile Youtube Videosu İndirme – Python Kütüphanesi

En popüler sosyal medya platformlarından biri olan Youtube, yaklaşık olarak 1.9 milyar kullanıcıya sahip. YouTube üzerinden bir video izlemek oldukça kolay bir iştir, ancak izlediğimiz o videoyu indirmek bu kadar kolay değildir. Bu indirme işlemini yapmak için hali hazırda birçok araç kullanılmaktadır. Bu yazımızda ise çok kullanılan bir Python kütüphanesi olan Pytube ile YouTube üzerinden video nasıl indirilir, öğrenmiş olacağız.

Pytube kütüphanesi artık sadece Python 3 sürümlerinde çalışıyor. Bu yüzden yüklerken pytube3 olarak yükleyeceğiz.

Kütüphanenin İndirilmesi ve Yüklenmesi

Pytube kütüphanesini bilgisayarına yüklemek için, terminali açıp aşağıdaki kodu yazıp çalıştırmanız gerekmektedir.

pip install pytube3

Yukarıda belirttiğimiz kod herhangi bir hata vermeden çalıştıysa, kütüphanenin yüklenip yüklenmediğini daha net anlamak için kullandığımız editöre import ediyoruz.

import pytube

Kullanıcıdan Girdi Kabul Etme

Bir sonraki adımımız, kullanıcıdan indirilmesi gereken YouTube videosunun bağlantısını istemek olacaktır. Tanımlanan string değişken içerisine YouTube linki girilmelidir. Daha sonra .YouTube methoduna parametre olarak linkimizi yolluyoruz.

video_url = 'https://www.youtube.com/watch?v=cixYZJ7yH7s'

yt = pytube.YouTube(video_url)

Video Hakkında Kısa Bilgilere Ulaşma

Şimdi bir bağlantımız var, onu yt değişkenine aktardık. Artık bağlantıyla oynayabilir ve video hakkında başlığı, görüntüleme sayısı, derecelendirmeleri, açıklaması, video uzunluğu ve diğer birçok bilgiyi ortaya koyabiliriz.

print("Başlığı:",yt.title)

print("İzlenme Sayısı:",yt.views)

print("Video Uzunuluğu:",yt.length, "saniye")

print("Açıklama: ",yt.description)

print("Puan: ",yt.rating)

Bu kodu çalıştırdığımızda, bağlantısını tanımladığımız video hakkında çeşitli ayrıntılar göreceğiz. Ayrıca, pytube kütüphanesinin resmi sitesinde bulabileceğiniz daha birçok işlem var. Bu bağlantı da Teknoloji.org sitesinin Netflix Nasıl İptal Edilir? içeriğinin Youtube videosunu ele aldık.

python-kütüphanesi-pytube-çıktı

Yukarıda gördüğünüz gibi, video hakkında çeşitli ayrıntılar yazdırdık. Şimdi bu videoyu indirebiliriz.

Mevcut Akışlara Bakma

Pytube, kullanıcının sağladığı bağlantı için mevcut tüm akışları görmenin çok kolay bir yolunu sunar. Şimdi, söz konusu video için kullanılabilir tüm akışları görüntülemek üzere kodu çalıştıralım.

for stream in yt.streams:

      print(stream) 

Yukarıdaki kodu çalıştırdığınızda, bu video için mevcut tüm akışları alırız. Çıktı aşağıdaki gibidir:

stream-cıktısı

Hem video hem de ses akışlarını görebiliyor olabilirsiniz. Yalnızca ses veya video akışlarını filtreleyebilirsiniz. Ayrıca akışları dosya biçimine göre de filtreleyebilirsiniz. Şimdi, yalnızca ses akışlarına filtre uygulayalım. Bunu yapmak için kodu şöyle yazmamız gerekir:

print(yt.streams.filter(only_audio=True))

#Çıktı:

[<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">]

Şimdi, yalnızca video akışlarına filtre uygulayalım. Bize yalnızca video içeren ancak ses içermeyen akışları gösterecektir. Bunun için şöyle yazacağız:

print(yt.streams.filter(only_video=True))

Çıktı şöyle olacaktır:

<Stream: itag="137" mime_type="video/mp4" res= "1080p" fps= "30fps" vcodec="avc1.640028" progressive="False" type="video"> 

<Stream: itag="248" mime_type="video/webm" res="1080p" fps="30fps" vcodec="vp9" progressive="False" type="video"> 

<Stream: itag="136" mime_type="video/mp4" res="720p" fps="30fps" vcodec="avc1.4d400a" 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.4d4014" 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">

Videoyu İndirme

Şimdi akış üzerinden herhangi bir biçim seçerek bu dosyayı indirebiliriz. Burada ilk formatı seçtik.

 video = yt.streams.first()

Son olarak, videoyu indirmek istediğiniz konumu belirtin:

video.download('/home/jay/Downloads')

Youtube üzerinden bir videoyu indirmek işte bu kadar! Python kullanarak Youtube video indirme scriptini oluşturdunuz.

Teknoloji'den geri kalmamak için e-posta listemize abone olun!

Muğla Sıtkı Koçman Üniversitesi Bilgisayar Mühendisliği 3.sınıf öğrencisi.