Konuyu Oyla:
  • Toplam: 0 Oy - Ortalama: 0
  • 1
  • 2
  • 3
  • 4
  • 5
[YENİ] [Python Kod Örnekleri] Youtube Video Arama ve İNdirme
#1
Bir önceki konuda 'Havalı Print' örneği vermiştim. Bu kodda bu print yöntemini kullandım.

önceki konuda belirttiğim gibi kodu Pydroid uygulaması ile çalıştırın.

Bu kod ile youtube'da video aramasi yapabilir ve istediğiniz videoyu isteğiniz çözunürlükte indirebilirsiniz.. Kod bana aittir başka bir yerden alıntı değildir ama yine kodu yazmak için başta stackoverflow ve gecemorun daha önce yazmış olduğu kodları inceleyerek yaptım.. örneğin kodun başındaki gereken kütüphaneleri yükleme kodu gecemor'un face video yukleme kodundan alıntıdır..


PHP Kod:
#-*-coding:utf8;-*-
#qpy:2
#qpy:console

import urllib
import urllib2
import re
timesysos
import platform
import subprocess


if platform.platform().startswith("Linux"):
    try:
        
import pytube
    except
:
        
arg="pip install pytube"
        
os.system(sys.executable+" "+sys.prefix+"/bin/"+arg)
        
os.execv(sys.executable, ['python'] + sys.argv)
    try:
        
from bs4 import BeautifulSoup
    except
:
        
arg="pip install bs4"
        
os.system(sys.executable+" "+sys.prefix+"/bin/"+arg)
        
os.execv(sys.executable, ['python'] + sys.argv)
else:
    
pass
    
def indir
(son,isim):
    
oku urllib2.urlopen(son)
    
toplam int(oku.info().getheaders('Content-Length')[0])
    if 
toplam 1048576 :
        
mbstr(toplam/1025) + ' kb'
    
else:
        
mbstr(toplam/1048576) + ' mb'
    
print '- Video boyutu : %s \n' mb

    uzanti 
oku.info().getheaders('Content-Type')[0].split('/')[1]
    if 
uzanti == '3gpp':
        
uzanti=uzanti.replace('3gpp','3gp')
    else:
        
pass
    yaz
=open("/sdcard/"+isim+'.'+uzanti,"ab")
    
sayi=0
    sayi2
=0
    
    
while True:
        
toplam/50
        b 
oku.read(a)
        
sayi += a
    
        
if not b:
            break
        
yaz.write(b)
        if(
sayi toplam):
            
sayi+=0
            sayi2
+=2
            kb
str(sayi/1048576) + ' mb'
            
sys.stdout.write"- Video idiriliyor : %%%s " str(sayi2) + "  %s \r" str(kb))
            
sys.stdout.flush()
    
pr '\n\n- Video indirildi.   \n\n'
    
for i in pr:
            
time.sleep(0.02)
            
sys.stdout.write(str(i))
            
sys.stdout.flush()
            
    
    
y='Youtube Video Arama ve iNdirme'
a='http://www.qpython.club'
c='by Ethnic'
def youtube():
    
ara raw_input('Youtube\'da  Ara : ')
    
query urllib.quote(ara)
    
pr'\n- Aranan "'+ara'\" için sonuçlar getiriliyor...   \n\n'
    
for i in pr:
            
time.sleep(0.02)
            
sys.stdout.write(str(i))
            
sys.stdout.flush()
    try:
        
url "https://www.youtube.com/results?search_query="+query
        git
=urllib2.urlopen(url)
        
html=git.read()
    
except:
        print 
'\n- Bağlantı hatası! Lütfen data bağlantısını kontrol edin.\n\n'
        
youtube()
    
soup BeautifulSoup(html'html.parser')
    
say 0
    link
= []
    
title=[]
    if 
len(a) != 23 or len(c) != 9:
        
quit()
    else:
        
pass
    
for vid in soup.findAll(attrs={'class':'yt-uix-tile-link'}):
        
adres'https://www.youtube.com' vid['href']
        
say+=1
        liste 
str(say) + " - " vid['title'] + '\n\n'
        
link.append(adres)
        
title.append(vid['title'])
        for 
i in liste:
            
soz i.encode('utf-8')
            
time.sleep(0.003)
            
sys.stdout.write(str(soz).decode('utf-8'))
            
sys.stdout.flush()
            
    if 
not link:
        print 
'\n- Sonuç bulunamadı! Yeniden deneyin.\n\n'
        
youtube()
    else:
        
pass
    yanlis 
False
    
while not yanlis:
        try:
            
al=raw_input('Video Sec : ')
            
cevap=link[int(al)-1]
            
isim=title[int(al)-1]
            break
        
except:
            print 
'\n- Lütfen video numarasını doğru giriniz.\n'
            
pass
    prn
'\n- Secilen video : \n\n- 'isim.encode('utf-8') +'   \n\n- Video için indirme secenekleri olusturuluyor...   \n\n'

    
for i in prn:
        
time.sleep(0.01)
        
sys.stdout.write(i)
        
sys.stdout.flush()
    
    
yt pytube.YouTube(cevap)
    
videos yt.get_videos()
    
say2 0
    
for v in videos:
        
say2 += 1
        prt
str(say2)+'. ' str(v) +'\n\n'
        
        
for i in prt:
            
soz i.encode('utf-8')
            
time.sleep(0.01)
            
sys.stdout.write(str(soz).decode('utf-8'))
            
sys.stdout.flush()
    
    
yanlis False
    
while not yanlis:
        try:
            
sec raw_input('Kalite seç : ')
            
sonuc videos[int(sec)-1]
            break
        
except:
            print 
'\n- Lütfen kalite seçimini doğru giriniz.\n'
            
pass
    pri
'\n- Secilen Kalite :\n\n-  ' str(sonuc) + '   \n\n- Video indiriliyor...   \n\n'
    
for i in pri:
            
time.sleep(0.01)
            
sys.stdout.write(str(i))
            
sys.stdout.flush()
            
    
son sonuc.url
    indir
(son,isim)
    
des'#'*60
tit
=des+'\n\n- '+y+'\n\n- '+a+'\n\n- '+c+'\n\n'+des+'\n\n'
for i in tit:
    
time.sleep(0.006)
    
sys.stdout.write(str(i))
    
sys.stdout.flush()

youtube() 
Ara
Cevapla
#2
Pytube değil de daha önce youtbe-dl kullanıyoduk, ama youtube'da arama yapabilmesi güzel bir özellikmiş, bilmiyordum. Kod için tebrikler, fakat bir iki eleştirim olacak Big Grin

1- Şimdi her şeyden önce havalı yazı konusunda da dediğim gibi havalı print mevzusunu modül olarak yaparak koddaki kalabalığı giderebilirsin.
2- İndirme esnasında da indirme durumunu ekrana yazdırsaymışsın daha güzel olurmuş Smile
3- Bunu pc'de çalıştırdım ama "platform" seçeneğinde sadece "linux" kullanmışsın, yani bunun yanında masaüstü platform için de düzenleme yaparsan kodun kullanım alanı daha da genişleyecektir.
4- Arama aşaması için pytube güzel bir seçenek, fakat indirme seçenekleri youtube-dl kadar geniş değil sanki. Aslında yeteri kadar var ama mesela bir 480p seçeneği ve sadece ses seçenekleri yok. Bunlar da olsa güzel olurdu, tabi bunun için de youtube-dl kullanmak gerekir.

bir iki eleştiri dedim ama 4 etmiş Smile gerçi eleştri değil de öneri de diyebiliriz, o da kodun daha iyi olması açısından yapıcı bir eştiri çok olsa Smile
Yanlış anlamanı istemem tabiki, kod gayet güzel, eline sağlık. Sonuç itibariyle her yiğidin yoğurt yemesi farklıdır ve sen de pythonla haşır neşir oldukça foruma renk katıyosun, bunun için de forum adına teşekkürler Wink
Turbobit Premium Link Çeviri | Turbobit Link Generator | http://turbobit.qpython.club
Cevapla
#3
Teşekkürler kod güzel çalışıyor
Ara
Cevapla
#4
öncelikle ben teşekkür ederim. Hayır canım ne alınacam aksine semde bilirsin yazdîğın bir kodun başka biri tarafından kullanılıp değerlendirilmesi insanı en çok sevindiren ve teşvik eden şeydir.

şimdi önerikeri teker teker cevaplandırmak gerekirse;

1 evet haklısın ama benim yazdığım modülü başka bir kullanıcı nasıl import edecek veya ne şekilde sunmam gerekir bir fikrim yok Smile

2 evet onu yapacaktım, çokta güzel olurdu fakat pytube kutuphanesi sadece cözünürlük seçenekleri veriyor , linkleri alamıyorsun, yada ben nasıl alacağımı bulamadım, o yüzden putube kutuphanesindeki download metodunu kullandım eger linki alabilseydim urllib2 ile indirip ekrana yazdıracaktım. tekrar bakıp inceliyecem.

3 o konuda haklısın aslında ekleyeceğim bir kaç satır vardı ama genel olarak forumda telefon üzerine bir kullanım olduğu için gerek duymadim.

4 Aslında arama aşamasının putube ile alakası yok, aramayı pytube'dan bağimsız olarak search query kullanarak urllib2 uzerinden yapip gelen sonuçları beautifulsoup kullanarak ayıkladım yani kodun devamında youtube_dl de kullanılabir başka bir şeyde , hatta ilk once youtube_dl kullandım fakat ekrana sürekli yazı printlediği için huylandım ve pytube kullanmaya karar verdim.
belkide o yazıları ekrana printlemesi kapatılabilir fazla bilgim yok ama tekrar deniycem Smile
Ara
Cevapla
#5
(01-10-2017, Saat: 19:19)denizci35 Nickli Kullanıcıdan Alıntı:  Teşekkürler kod güzel çalışıyor

eyvallah Temel usta bem teşekkür ederim Smile
Ara
Cevapla
#6
Yunus ben iki tane video denedim 240p ve 360p veriyor kalitede benim seçtiklerim şansımamı öyle geldi yoksa 720 veya 1080p de var mı

Neyse sectiğim videonun kalitesi öyleymiş anladım vebtekno sitesi istedim 720p geldi
Ara
Cevapla
#7
aynen, o youtuba yuklenen videonun hangi kalitede yüklendiğine bağlı. eğer 1080p olarak yüklenmişse seçeneklerde mutlaka çıkar..
Ara
Cevapla
#8
GTA veriyot

Hata veriyor


Ek Dosyalar Ekran Görüntüleri
   
Ara
Cevapla
#9
(02-10-2017, Saat: 01:18)teaqara Nickli Kullanıcıdan Alıntı:  GTA veriyot

Hata veriyor

yukarıda yazmıştım scripti Pydroid uygulaması ile çalıştırın. qpython sertifika hatası veriyor..

pydroid http://dl2.uapkpro.com/6/Pydroid_2.0.apk
Ara
Cevapla
#10
kodu indirme anında indirme yüzdesi ve boyutunu gösterecek şekilde güncelledim..
Ara
Cevapla

{lang: 'en'}


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
Question Python Dili Soru & Cevap gecemor 1,455 795,412 26-06-2020, Saat: 13:02
Son Yorum: gecemor
  python float sayılarla (para) çalışmak ahgonlum 2 309 04-06-2020, Saat: 19:32
Son Yorum: ahgonlum
  Python socket resim gönderirken EOFError hatası alıyorum SD-16 29 1,291 18-05-2020, Saat: 20:02
Son Yorum: SD-16
  Youtube-dl oktay811 6 1,767 11-10-2019, Saat: 17:17
Son Yorum: gecemor
  Python ile yüz degistirme SD-16 1 760 01-10-2019, Saat: 11:41
Son Yorum: ahgonlum

Hızlı Menü:


Konuyu Okuyanlar: 1 Ziyaretçi
Change Theme