Ceviz Forum

Geri Dön   Ceviz Forum > Programlama > Python / Zope

Cevapla
 
LinkBack Seçenekler
Eski 06/03/2008, 03:57   #1 (permalink)
Yönetim Kurulu
 
Muallim-i Âli Adlı Üyenin Profil Grafiği
 
Üyelik Tarihi: 01/2008
Yer: İstanbul
Mesaj: 250
Varsayılan Youtube Video İndirici v. 1



Programa verilen youtube linkini dosyanın indirilebi linkine çevirip varsayılan web tarayıcısında o linki çalıştırıp dosyanın inmesini sağlamaktadır.

Programın basit ve geliştirilmeye hazır hâliyle paylaşmaya karar verdim.

Pardus 2007.3 ve Windows Xp üzerinde sorunsuz bir şekilde çalıştı.

Lakin 1280*1024 çözünürlüğünde düzenlenmiş olan arayüz diğer çözünürlüklerde eksik görünebilir(dedim ya geliştirilmeye hazır diye )


Programın çalışma mantığı :

Diyelim ki youtube linkimiz şu olsun:
http://www.youtube.com/watch?v=jN3vokYOMec

Sayfanın kaynak kodunu incelediğimizde karşımızda şöyle bir kod parçacığı görülebilir
(bazı değerler sabit değildir, her yenilemede değişebilir):

var swfArgs = {"video_id": "jN3vokYOMec", "l": 474, "sk": "a1Xon51cfVcUoWy8TEOkLgU", "t": "OEgsToPDskJbUXtnXzMtK-qvlvnapxEH",...

Bu kodu biraz daha açarsak:

video_id=jN3vokYOMec
l=474
t=OEgsToPDskJbUXtnXzMtK-qvlvnapxEH

Yani video indirme linkimiz şöyle oluyor:
http://youtube.com/get_video?&video_...MtK-qvlvnapxEH

Biz de bu linki web tarayıcı ile açınca videoyu indirme penceresi açılıyor.
Program bu mantığa göre kodlanmıştır.

Program bu tarzdaki linklerle sorunsuz çalıştı.
(Diğer tarzdakileri denemedim.)

http://www.youtube.com/watch?v=jN3vokYOMec

http://www.youtube.com/watch?v=jN3vo...eature=related
---------------------------------------
Programın ana kısmı :

Kod:
url = str(ui.lineEdit.text())
site = urllib.urlopen(url)
veri = site.read()
time.sleep(3)
link_duzenle = re.search('&video_id=.*&hl', veri).group()
link_duzenle_2 = re.sub('sk=.*&t', 't', link_duzenle)
link_duzenle_3 = re.sub('&hl', '', link_duzenle_2)
webbrowser.open_new("http://youtube.com/get_video?" + link_duzenle_3)
Programın geliştirilmesi açısından eleştirilerinizi eksik etmeyin ve tavsiyelerinizi esirgemeyin

Programın dosyaları (py dosyaları vs.):
http://uploaded.to/?id=dvn12u

Windows için pythonsuz çalıştırılabilir(exe) hâli :
http://uploaded.to/?id=bfuchv

Alternatif:
http://rapidshare.com/files/97376610...o_indirici.rar

Not : İndirdiğiniz dosyanın uzantısını .flv olarak düzeltmelisiniz.
Not2: Kodların açıklamasını müsait olunca yapacağım.
Muallim-i Âli şu an hatta   Alıntı Yaparak Yanıtla
Eski 06/03/2008, 21:49   #2 (permalink)
Eski Cevizci
 
myavuzselim Adlı Üyenin Profil Grafiği
 
Üyelik Tarihi: 05/2004
Mesaj: 789
Varsayılan

pyqt olmadigi icin deneyemedim, fakat dosyayi browser araciligiyla indirmek yerine dogrudan python ile indirùmen daha guzel olmaz mi? Hem "dosyanin uzantisini flv yapin" gibi bir sey soylemekten de kurtulursun.
myavuzselim hatta değil   Alıntı Yaparak Yanıtla
Eski 06/03/2008, 23:27   #3 (permalink)
Yönetim Kurulu
 
Muallim-i Âli Adlı Üyenin Profil Grafiği
 
Üyelik Tarihi: 01/2008
Yer: İstanbul
Mesaj: 250
Varsayılan

o konu hakkında örnek varmıydı elinizde yada hangi modülle ilgiliydi o işlem acemi işi bu kadar oluyor
Muallim-i Âli şu an hatta   Alıntı Yaparak Yanıtla
Eski 07/03/2008, 01:10   #4 (permalink)
Eski Cevizci
 
myavuzselim Adlı Üyenin Profil Grafiği
 
Üyelik Tarihi: 05/2004
Mesaj: 789
Varsayılan

Ben de bilmiyordum acikcasi, biraz arastirdim. Dosyayi sayfayi nasil okuduysan oyle okuyorsun. Daha sonra okdugun icerigi bir dosyaya yaziyorsun:
Kod:
import urllib, re

def video_url(sayfa_url):
    sayfa = urllib.urlopen(sayfa_url).read()
    regex = re.search("&video_id=(.*?)&sk=.*?&t=(.*?)&hl", sayfa)
    return "http://youtube.com/get_video?video_id=" + regex.group(1) + "&t=" + regex.group(2)

def kaydet(video_url, dosya):
    data = urllib.urlopen(video_url).read()
    open(dosya, "wb").write(data)

def indir(sayfa_url):
    kaydet(video_url(sayfa_url), 'video.flv')
Hangi dosyaya yazilacagini kullaniciya sormak icin pyqt'de birseyler vardir sanirim (varmis). Indirilirken de kullaniciyi oyalamak icin progressbar gibi birseyler gosterirsen iyi olur (o da varmis).
myavuzselim hatta değil   Alıntı Yaparak Yanıtla
Eski 07/03/2008, 02:16   #5 (permalink)
Yönetim Kurulu
 
Muallim-i Âli Adlı Üyenin Profil Grafiği
 
Üyelik Tarihi: 01/2008
Yer: İstanbul
Mesaj: 250
Varsayılan

çok teşekkürler.
Muallim-i Âli şu an hatta   Alıntı Yaparak Yanıtla
Eski 10/03/2008, 14:17   #6 (permalink)
Kendini arayan adam..
 
opera Adlı Üyenin Profil Grafiği
 
Üyelik Tarihi: 11/2007
Mesaj: 163
Varsayılan

kardeş peki mp3 olarak indirmek için neler gerekli...
bu tür bir program var.dvd free videosoft..
opera hatta değil   Alıntı Yaparak Yanıtla
Eski 11/03/2008, 01:21   #7 (permalink)
Yönetim Kurulu
 
Muallim-i Âli Adlı Üyenin Profil Grafiği
 
Üyelik Tarihi: 01/2008
Yer: İstanbul
Mesaj: 250
Varsayılan

http://pymedia.org/ da bir şeyler bulabilirsiniz sanırım...
Muallim-i Âli şu an hatta   Alıntı Yaparak Yanıtla
Eski 11/03/2008, 22:16   #8 (permalink)
Kendini arayan adam..
 
opera Adlı Üyenin Profil Grafiği
 
Üyelik Tarihi: 11/2007
Mesaj: 163
Varsayılan

Muallim-i Ali kardeş belki bilmezsin ama web sitesi üzerinden youtube linkindenkki videoyu mp3 olarak kaydedebilirmiyiz?
PHP - ASP gibi web programlama dillerini kullanarak.
opera hatta değil   Alıntı Yaparak Yanıtla
Eski 12/03/2008, 12:31   #9 (permalink)
CEng n Avar
 
samil Adlı Üyenin Profil Grafiği
 
Üyelik Tarihi: 03/2007
Yer: Sath-ı Arz
Mesaj: 56
Varsayılan

Bilmemek değil öğrenmemek ayıpmış opera, niye arkadaşa böyle bir önyargıyla yaklaşmışsın anlayamadım. Aslında yeri değildir asp-php'nin burası ama, senin dediğini, daha hayal edebileceğin sınırlarıyla beraber yapabilen proje bulunuyor...

http://ffmpeg-php.sourceforge.net/

Şöyle de bir örnek vermiş arkadaşlar sitede, proof of concept olarak anlayalım:

<?php
$extension
= "ffmpeg";
$extension_soname = $extension . "." . PHP_SHLIB_SUFFIX;
$extension_fullname = PHP_EXTENSION_DIR . "/" . $extension_soname;

// load extension
if(!extension_loaded($extension)) {
dl($extension_soname) or die("Can't load extension $extension_fullname\n");
}
?>


Ben ffmpeg'i php'de değil ama çok başka yerlerde kullandım.

C:\Downloads\movie>ffmpeg -i plazma.flv <-- videoyu incelemek için
FFmpeg version SVN-r9767, Copyright (c) 2000-2007 Fabrice Bellard, et al.
libavutil version: 49.4.1
libavcodec version: 51.40.4
libavformat version: 51.12.1
built on Jul 20 2007 18:03:34, gcc: 4.2.0

Seems stream 0 codec frame rate differs from container frame rate: 1000.00 (1000
/1) -> 29.97 (30000/1001)
Input #0, flv, from 'plazma.flv':
Duration: 00:03:18.2, start: 0.000000, bitrate: 112 kb/s
Stream #0.0: Video: flv, yuv420p, 320x240, 29.97 fps(r)
Stream #0.1: Audio: mp3, 22050 Hz, mono, 112 kb/s <-- audio stream'ı bulduk
Must supply at least one output file

C:\Downloads\movie>ffmpeg -i plazma.flv -map 0.1 -acodec mp3 plazma.mp3
-map 0.1->audio'yu aldık
acodec->mp3 ile sıkıştırdık
bitrate filan da bize kalmış...
FFmpeg version SVN-r9767, Copyright (c) 2000-2007 Fabrice Bellard, et al.
libavutil version: 49.4.1
libavcodec version: 51.40.4
libavformat version: 51.12.1
built on Jul 20 2007 18:03:34, gcc: 4.2.0

Seems stream 0 codec frame rate differs from container frame rate: 1000.00 (1000
/1) -> 29.97 (30000/1001)
Input #0, flv, from 'plazma.flv':
Duration: 00:03:18.2, start: 0.000000, bitrate: 112 kb/s
Stream #0.0: Video: flv, yuv420p, 320x240, 29.97 fps(r)
Stream #0.1: Audio: mp3, 22050 Hz, mono, 112 kb/s
Output #0, mp3, to 'plazma.mp3':
Stream #0.0: Audio: libmp3lame, 22050 Hz, mono, 64 kb/s
Stream mapping:
Stream #0.1 -> #0.0
Press [q] to stop encoding
size= 1546kB time=197.9 bitrate= 64.0kbits/s <-- Amacımıza ulaşmışız
video:0kB audio:1546kB global headers:0kB muxing overhead 0.002021%

C:\Downloads\movie>

Aynı programı C'de de, pythonda da vs. de de kullanabilirsiniz, desteği bulunmaktadır.

Bilmem anlatabildim mi...

Kolay gelsin.
samil hatta değil   Alıntı Yaparak Yanıtla
Eski 18/03/2008, 18:02   #10 (permalink)
Gezgin
 
hmustak Adlı Üyenin Profil Grafiği
 
Üyelik Tarihi: 05/2002
Yer: /root/
Mesaj: 3,659
Varsayılan

kodu aramaya üşendim.
yıllaaaarrr önceydi, forumumuzda PERLCI diye ultra zeki bir coder arkadaşımız vardı. Onun Perl ile yaptığını hatırlıyorum...
__________________

HassasValf | Hakan Müştak | Motor

hmustak hatta değil   Alıntı Yaparak Yanıtla
Cevapla

Bookmarks

Seçenekler

Mesaj Yazma Hakları
Yeni mesajgöndermezsiniz
Cevap yazamazsınız
Dosya ekleyemezsiniz
Mesajınızı düzenleyemezsiniz

BB code is Açık
[IMG] kodu Açık
HTML kodu Kapalı
Trackbacks are Açık
Pingbacks are Açık
Refbacks are Açık

Benzer Konular
Konu Konuyu açana göre Forum Cevap En Son Mesaj
Youtube da Video İzleyemiyorum SanaLSorunlarım Internet 8 17/07/2008 02:29
Youtube video indirme SiberDevlet PHP 0 16/12/2007 15:06
Youtube -> Video Convertor Scope Internet 1 13/02/2007 22:55
youtube.com video limonabi Internet 10 27/06/2006 17:14


Forum saati Türkiye saatine göredir. GMT +3. Şu anda saat 20:45.

Reklamlar & Desteklenenler
Hassas Valf | Hassas Kaplama | Antalyamız | Gazete | Ticari Bilişim | Hakan Müştak | Rüya Tabirleri | Kadın | Hastalıklar | Cepte msn ve e-posta | Webmaster | Antalya Aupair | Turkish Property Antalya | Forum | Chat | Perde | Adsl | Araba | bolindir.com | guncelle.com | livescore | Web Tasarım | evden eve nakliyat | forum | evden eve | sohbet | Resimcim| Kalifiye İnsan Kaynakları | Web Tasarım | Oyun | Yusuf KOÇ | Akın Yorulmaz | şiir | UFO | Web Tasarım | Oyunlar | Canlı Tv |


Forum Yazılımı: vBulletin Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.2.0
Copyright ©2001 - 2008, Ceviz.net