Botun özellikleri...
* Bot video id aldıktan sonra video datasını çekip içindeki formatlara bakıyor, birkaç günlük araştırmadan sonra youtube'n 5 farklı format kullandığını gördüm, eğer daha farklı formatlar da varsa onlarıda ekleriz.
* Formatlara baktıktan sonra varolan formatların tümünün linklerini alıyor, örneğin HD, flv, MP4 varsa o formatların hepsini listeliyor.
* Videonun adresini aldıktan sonra video serveri kontrol ediliyor, örneğin v1.lscache7.c.youtube.com
Daha sonra bu serverin ip adresini bir fonksiyon yardımı ile bulup server adıyla yer değiştiriyoruz ve video linkinin adresini veriyoruz.
* Sayfayı iki türlü hazırladım, POST metoduyla kullanmak isterseniz olduğu gibi kalsın, yani bir forma adresi girip gönder diyerek linkleri alabilirsiniz.
* GET metodu ile kullanmak isterseniz de yorum satırlarını kaldırarak kullanabilirsiniz, ama bu seferde POST metodunun önünde bulunan kısma yorum satırlarını eklemeniz gerekir. Çünkü iki yöntem aynı anda çalışamaz.
* Botu ilk önce CURL ile yazmayı düşündüm, ama sonra hem herkesin hostinginde olmaması hemde PHP nin kendi kütüphanelerinin yeterli olması sebebi ile file_get_content kullandım.
* Bot biraz yavaş çalışabilir, bunun sebebi ve hızlandırma olayı için şöyle yapabilirsiniz...
- Bot headerstatus fonksiyonu ile videonun olup olmadığını kontrol ediyor, video yoksa false döndürüyor. İsterseniz bu durumu bilginiz dahilinde kaldırabilirsiniz.
- Video serverin ip adresini sorguluyor, bu işlem bilgisayarında dns kayıtlı olmayan kullanıcılar için gereklidir. IP adresi için başka bir siteye bağlanıyor, ama kendi serverinizde bulunduracağınız bir liste ile de bu sorgulama işlemini kaldırabilirsiniz..
- Ve en önemlisi de aynı anda 5 adet video tipi sorgulanıyor, kullanmayacağınız video tiplerini kaldırarak büyük bir hız artışı elde edebilirsiniz.
Dediğim gibi, Youtube video ile ilgili ilk kez bir kod yazıyorum, yöntemler yanlış olabilir, kendi kodunuza uymamış olabilir ama çok rahatlıkla istediğiniz yeri değiştirebileceğiniz bir kod, yani anlaşılmayacak bir kod değil...
Bu arada bu kod hiçkimseye kapak olmasın, herkes istediği gibi kodları değiştirebilir, kendisininmiş gibi yayınlayabilir, satabilir (100 TL den fazla olmasın
), kullabilir, lisans yada kullanım hakkı gibi şeyleri yoktur. Şimdilik tam 156 satır ve bedava (yorum satırları para etmez ama
).Siz de fikirlerinizi belirtiniz ki bu kodu şekillendirelim, ortaya güzel bişey çıksın, herkes yararlansın.
Son birşey daha, video resmi için;
$videoresmi = 'http://i.ytimg.com/vi/'.$videoid.'/hqdefault.jpg';Kullanabilirsiniz.
Video süresi, video başlığı, etiketler gibi kısımlar bir dahaki versiyonda olabilir..
<?
#######################################################################
##
## Advanced Youtube Bot V.1.0
## Author : Enigmatic
## Mail and MSN Address : enigmatic[x]live.com
##
## You're not needed DNS or Proxy server for bot, videos are
## getting directly under from Youtube IP Address..
##
## You can change are codes and use unauthorized, no license required.
##
#######################################################################
// Functions
function getvideourl($rawlink){
preg_match('#http%3A%2F%2F(.*?)%2Fvideoplayback#si',$rawlink,$server);
$getip = file_get_contents('http://tools.web-max.ca/findwebsitesip.php?domain='.$server[1]);
preg_match('#<img src="images/arrow-down.gif" align="absmiddle"> (.*?)</a><br>#si',$getip,$rawip);
$ip=trim(strip_tags($rawip[1]));
$rawlink=urldecode(str_replace($server[1],$ip,$rawlink));
return $rawlink;
}
function headerstatus($link){
$control = get_headers($link);
$link=$control[0];
return $link;
}
/*
/
/ Kullanmak istedğiniz metodun önündeki yorum işaretlerini
/ kaldırın, iki metoddan aynı anda birini kullanabilirsiniz.
/ Kullanmadığınız metodun önüne yorum işareti koymalısınız.
/
*/
##################################################################
## GET metodu Başlangıç
## Kullanım şekli: youtube.php?videourl=http://www.youtube.com/watch?v=fFDcaTI0cl8
##################################################################
// if(empty($_GET['videourl']))
// {
// echo "Lütfen bir video linki girin...";
// }
// else
// {
// $videourl = strip_tags($_GET['videourl']);
##################################################################
## GET metodu Bitiş
##################################################################
##################################################################
## POST metodu Başlangıç
##################################################################
if(empty($_REQUEST['do'])){ // Form start
echo '
<form method="POST" action="'.$_SERVER['PHP_SELF'].'?do=video">
Video Url : <input type="text" name="videourl">
<input type="submit" name="submit" value="Videoyu İndir"></form>
';
}
if($_REQUEST['do']=='video'){
$videourl = strip_tags($_POST['videourl']);
##################################################################
## POST metodu Bitiş
##################################################################
// Başlıyoruz..
if(empty($videourl)){
echo 'Lütfen bir video adresi giriniz...';
exit;
}
//print $videourl;
$videoid=explode('v=',$videourl);
$videoid=substr($videoid[1],0,11);
//print $videoid;
$videodata=file_get_contents('http://208.117.236.69/get_video_info?&video_id='.$videoid);
if(strstr($videodata,'status=fail&errorcode')){
echo 'Bu videoda embed kodu deaktiftir.';
exit;
}
//$videodata=urldecode($videodata);
//print $videodata;
preg_match('#fmt_map=(.*?)&#',$videodata,$formatmap);
//print $formatmap[1];
/// FLV NORMAL
if(strstr($formatmap[1],'5%2F0%2F7%2F0%2F0')){
preg_match('#%2C5%7C(.*?)&allow_ratings#',$videodata,$flvn);
if(headerstatus(getvideourl($flvn[1]))=='HTTP/1.1 200 OK'){
//print $flvn[1];
echo '<a href="'.getvideourl($flvn[1]).'">FLV NORMAL</a><br />';
}else{
preg_match('#%2C5%7C(.*?)&allow_ratings#',$videodata,$flvn);
echo '<a href="'.getvideourl($flvn[1]).'">FLV NORMAL DIGER</a><br />';
}
}
/// FLV QUALITY
if(strstr($formatmap[1],'34%2F0%2F9%2F0%2F115')){
preg_match('#34%7C(.*?)%2C#',$videodata,$flvq);
if(headerstatus(getvideourl($flvq[1]))=='HTTP/1.1 200 OK'){
//print $flvq[1];
echo '<a href="'.getvideourl($flvq[1]).'">FLV QUALITY</a><br />';
}else{
preg_match('#34%7C(.*?)%2C#',$videodata,$flvq);
echo '<a href="'.getvideourl($flvq[1]).'">FLV QUALITY DIGER</a><br />';
}
}
/// MP4 Normal
if(strstr($formatmap[1],'22%2F2000000%2F9%2F0%2F115%2C')){
preg_match('#22%7C(.*?)%2C#',$videodata,$mp4n);
if(headerstatus(getvideourl($mp4n[1]))=='HTTP/1.1 200 OK'){
//print $mp4n[1];
echo '<a href="'.getvideourl($mp4n[1]).'">MP4 Normal</a><br />';
}else{
//preg_match('#34%7C(.*?)%2C#',$videodata,$mp4n);
//echo '<a href="'.getvideourl($mp4n[1]).'">MP4 Normal DIGER</a><br />';
}
}
/// MP4 HQ
if(strstr($formatmap[1],'18%2F512000%2F9%2F0%2F115')){
preg_match('#18%7C(.*?)%2C#',$videodata,$mp4hq);
if(headerstatus(getvideourl($mp4hq[1]))=='HTTP/1.1 302 Found'){
//print $mp4hq[1];
echo '<a href="'.getvideourl($mp4hq[1]).'">MP4 HQ</a><br />';
}else{
//preg_match('#34%7C(.*?)%2C#',$videodata,$mp4hq);
//echo '<a href="'.getvideourl($mp4hq[1]).'">MP4 HQ DIGER</a><br />';
}
}
/// HD Stereo
if(strstr($formatmap[1],'35%2F640000%2F9%2F0%2F115')){
preg_match('#35%7C(.*?)%2C#',$videodata,$hds);
if(headerstatus(getvideourl($hds[1]))=='HTTP/1.1 302 Found'){
//print $hds[1];
echo '<a href="'.getvideourl($hds[1]).'">HD Stereo</a><br />';
}else{
//preg_match('#34%7C(.*?)%2C#',$videodata,$hds);
//echo '<a href="'.getvideourl($hds[1]).'">HD Stereo DIGER</a><br />';
}
}
}
?>JW player ile aşağıda eklediğim dosyadaki gibi bir kullanım yapabilirsiniz, kabaca birşey yaptım şimdilik, örnek olsun açısından daha detaylısını istek olursa yaparız..http://rapidshare.com/files/26587872..._jw_player.zip
