Php ile IMDB ve Sinemalar.com Botu Yapımı

Php ile IMDB ve Sinemalar.com Botu Yapımı

sola ok  Kaldırılan İçerikler

27.01.2016

6,983 Gösterim

Bu içeriği 6 dakikada okuyabilirsiniz.

Önerilen Video ▼



Php ile Başka Siteden Veri Çekme


Php'de, belirli fonksiyonlar sayesinde başka siteden veri çekme işlemi yapılabilir. Bu konuya en uygun örnek, imdb veya sinemalar.com'dan film bilgilerinin çekilmesi gösterilebilir. Bu konuda, film blogumda kullandığım php scriptini ayrıntılı bir şekilde açıkladım. Konuyu, Yıldızlararası film bilgilerini çekmeyi, referans alarak anlatacağım.

IMDB.com film sayfalarının karışık yapısı arasından bilgileri bulup ayıklamak zor olacaktır. Bu yüzden, film bilgilerini çekmek için, imdbdeki tüm filmleri sürekli olarak kendi veritabanına kaydeden, www.omdbapi.com sitesini kullanacağım. Bu site, imdb linkinde bulunan film ID'lerini kullanarak, film bilgilerini, json veya xml olarak, sıralı ve düzenli bir şekilde yazılımcıya sunmaktadır. Bu bilgilerde, scriptim için gereken tüm bilgilerin bulunduğu kusursuz bir kaynak demektir. www.omdbapi.com adresine girin ve aşağıdaki resimdeki kısmı bulup "IMDb ID" yazan kutucuğa bilgilerini çekmek istediğiniz filmin, IMDb ID'sini yazıp, "Search" tuşuna basın. IMDb ID'si "http://www.imdb.com/title/tt0816692/" linkinde bulunan "tt0816692" kısmıdır. Bu tüm IMDb film linklerinde mevcuttur, kolaylıkla farkedilebilir.

omdbapi resim

Bu işlemi yaptığınızda aşağıdaki gibi "Request:" yazsının hemen altında bir link üretecektir ve linkin hemen altında yeşil bir kutunun içerisinde film bilgilerini çıkaracaktır. Yanlızca film bilgilerinin gösterildiği sayfaya ulaşmak için linke tıklayın.

omdbapi resim

Bu sayfa yalnızca film bilgilerinden oluşan bir sayfadır. Normalde, sayfanın kaynak kodlarını görüntülenerek sayfanın html kodları arasında istenilen kısımlar seçilir ve php fonksiyonuna eklenir. Fakat bu sayfa (aşağıdaki resim)json (Javascript Object Notication) yani Javascript Kodlama Sayfası sayfası olduğu için zaten kaynak haldedir ve ekstra bir uğraşa gerek yoktur. Not: Aşağıdaki resim örneğini büyütmek için üzerine tıklayın.

omdbapi resim

Film IMDb bilgilerine ulaştıktan sonra php fonksiyonunu yazıyorum.
<?php function getir($baslangic, $son, $cekilmek_istenen)
{
  @preg_match_all('/' . preg_quote($baslangic, '/') .
  '(.*?)'. preg_quote($son, '/').'/i', $cekilmek_istenen, $m);
  return @$m[1];
}

Çekmek istediğim filmin, IMDb film ID'sini ve www.omdbapi.com linkini tanımlıyorum ve linkin bulunduğu sayfayı tamamen çekmek için phpde hazır bulunan file_get_contents fonksiyonunu kullanıyorum.

$id = "tt0816692"; $url = "http://www.omdbapi.com/?i=".$id."&plot=short&r=json";
$icerik = file_get_contents($url);

Bundan sonra film bilgilerini çekme işlemine başlıyorum. Aşağıdaki resimde görüldüğü üzere film adı Interstellar, {"Title":" ve ", kodları arasında. Yani php kodlarının, film adını bulması için belirlediğim iki nokta arasındaki kalan kısmı alması gerekiyor.

omdbapi resim

Bunun gibi, film adı, yönetmen, oyuncular, senarist bilgilerini nasıl ayırt edeceğini bilmesi için php kodlarına aşağıdaki şekilde tanımlıyorum.

$film_adi = getir('"Title":"','"',$icerik);
$imdb_puani = getir('"imdbRating":"','"',$icerik);
$yapim_yili = getir('"Year":"','"',$icerik);
$yapim_ulke = getir('"Country":"','"',$icerik);
$yonetmen = getir('"Director":"','"',$icerik);
$senaryo = getir('"Writer":"','"',$icerik);
$oyuncular = getir('"Actors":"','"',$icerik);
$sure = getir('"Runtime":"','"',$icerik);

Daha sonra bu bilgileri "echo" komutu ile sayfaya bastırıyorum.

<?php
echo "Film Adı: ".$film_adi[0]
echo "IMDb Puanı: ".$imdb_puani[0]
echo "Yapım Yılı: ".$yapim_yili[0]
echo "Ülke: ".$yapim_ulke[0]
echo "Yönetmen: ".$yonetmen[0]
echo "Senarist: ".$senaryo[0]
echo "Oyuncular: ".$oyuncular[0]
echo "Süre: ".$sure[0]
?>

Film bilgileri yazdırıldı. Fakat, ülkesi ingilizce yazıyor ve film süresini "dakia" yerine "min" olarak çekiyor. Bu sorunu da php "preg_replace" komutu ile düzeltiyorum. Php'de, preg_replace komutu, belirtilen şablonda aranılan kelimeyi, belirlenen başka bir kelimeyle değiştirmeye yarar. Aşağıdaki gibi "min" yerine "dakika", ülkelerin ingilizce yazılışlarını, ardından yerine geçecek Türkçe yazılışlarını tanımlıyorum ve bu tanımlamaları yukarıdaki, film adı, imdb puanı, süre gibi bilgileri çağırdığım php tanımlamalarının altına ekliyorum. Siz ülke isimlerini artırabilirsiniz.

<?php
$sablonlar[0] = '/Turkey/'; $yeniler[0] = 'Türkiye';
$sablonlar[1] = '/USA/'; $yeniler[1] = 'ABD';
$sablonlar[2] = '/China/'; $yeniler[2] = 'Çin';
$sablonlar[3] = '/Germany/'; $yeniler[3] = 'Almanya';
$sablonlar[4] = '/Russia/'; $yeniler[4] = 'Rusya';
$sablonlar[5] = '/Sweden/'; $yeniler[5] = 'İsveç';
$sablonlar[6] = '/Australia/'; $yeniler[6] = 'Avustralya';
$sablonlar[7] = '/France/'; $yeniler[7] = 'Fransa';
$sablonlar[8] = '/Ireland/'; $yeniler[8] = 'İrlanda';
$sablonlar[9] = '/Mexico/'; $yeniler[9] = 'Meksika';
$sablonlar[10] = '/Poland/'; $yeniler[10] = 'Polonya';
$sablonlar[11] = '/Switzerland/'; $yeniler[11] = 'İsviçre';
$sablonlar[12] = '/Austria/'; $yeniler[12] = 'Avusturya';
$sablonlar[13] = '/Canada/'; $yeniler[13] = 'Kanada';
$sablonlar[14] = '/Czech Republic/'; $yeniler[14] = 'Çek Cumhuriyeti';
$sablonlar[15] = '/Iceland/'; $yeniler[15] = 'İzlanda';
$sablonlar[16] = '/Italy/'; $yeniler[16] = 'İtalya';
$sablonlar[17] = '/Netherlands/'; $yeniler[17] = 'Hollanda';
$sablonlar[18] = '/Portugal/'; $yeniler[18] = 'Portekiz';
$sablonlar[19] = '/South Africa/'; $yeniler[19] = 'Güney Afrika';
$sablonlar[20] = '/Thailand/'; $yeniler[20] = 'Tayland';
$sablonlar[21] = '/Belgium/'; $yeniler[21] = 'Belçika';
$sablonlar[22] = '/Denmark/'; $yeniler[22] = 'Danimarka';
$sablonlar[23] = '/Greece/'; $yeniler[23] = 'Yunanistan';
$sablonlar[24] = '/India/'; $yeniler[24] = 'Hindistan';
$sablonlar[24] = '/Argentina/'; $yeniler[24] = 'Arjantin';
$sablonlar[25] = '/Japan/'; $yeniler[25] = 'Japonya';
$sablonlar[26] = '/New Zealand/'; $yeniler[26] = 'Yeni Zelanda';
$sablonlar[27] = '/Romania/'; $yeniler[27] = 'Romanya';
$sablonlar[28] = '/Spain/'; $yeniler[28] = 'İspanya';
$sablonlar[29] = '/UK/'; $yeniler[29] = 'İngiltere';
$sablonlar[30] = '/Finland/'; $yeniler[30] = 'Finlandiya';
$sablonlar[31] = '/Iran/'; $yeniler[31] = 'İran';
$sablonlar[32] = '/Malaysia/'; $yeniler[32] = 'Malezya';
$sablonlar[33] = '/Pakistan/'; $yeniler[33] = 'Arjantin';
$sablonlar[34] = '/Brazil/'; $yeniler[34] = 'Brezilya';
$sablonlar[35] = '/Bulgaria/'; $yeniler[35] = 'Bulgaristan';
$sablonlar[36] = '/Philippines/'; $yeniler[36] = 'Filipinler';
$min[0] = '/min/'; $dk[0] = 'dakika';
?>

Film bilgilerini çekme işlemi tamamlandı. Şimdi sinemalar.com'dan film afişlerini ve film fragmanını çekmem gerekiyor. Bunu da, aynı şekilde, yukarıda anlattığım yöntemle yapıyorum. ilk olarak sinemalar.com'da herhangi bir filmi aratıp film sayfasına ulaşıyorum (Yıldızlararası filminden devam edeceğim). Yine filmin sinemalar.com URL'sini tanımlıyorum ve "file_get_contents" hazır fonksiyonuyla, filmin bulunduğu sayfayı çekiyorum. Bu kodları yukarıdaki kodların arasına ekliyorum.

$url_sinemalar = "http://www.sinemalar.com/film/9845/interstellar";
$icerik_sinemalar = file_get_contents($url_sinemalar);

Film afişinin ve film fragmanının kaynak URL'sini, sayfanın kaynak kodundan buluyorum. Hiç uğraştırmadan buraya yazayım, film afişinin URL adresi <link rel="image_src" href=" ile "/> kodları arasında bulunuyor. Film fragmanı da, data-embedUrl=" ile " kodları arasında bulunuyor. Bunları da php koduna ekliyorum.

$afis = getir('<link rel="image_src" href="','"/>',$icerik_sinemalar);
$fragman = getir('data-embedUrl="','"',$icerik_sinemalar);

Son olarak film fragmanı iframe yardımıyla boyutlandırıyorum ve film afişiyle birlikte, echo komutu ile ekrana bastırıyorum.

<?php
echo $afis[0]."<br/>".<iframe width="100%" height="100%" src="<?php echo $fragman[0]; ?>" frameborder="0" allowfullscreen></iframe>
?>

PHP ile IMDb ve Sinemalar.com Botu tamamlanmıştır. Bu yöntemi geliştirmek, özelleştirmek tamamen sizin hayal gücünüze kalmıştır. Ek olarak, aşağıda linkten scripti indirebilirsiniz. Sadece, IMDb film ID'sini ve filmin sinemalar.com linkini değiştirmeniz yeterlidir. Scriptteki çekilen bilgileri, sitenizde belirlediğiniz yerlere yerleştirerek kullanabilirsiniz.

Php ile IMDb ve Sinemalar Botu Scripti - İNDİR



Bu içeriği MasivaTurk.com sitesini kaynak göstererek kullanabilirsiniz. İçeriklerin; MasivaTurk.com sitesi kaynak gösterilmeden herhangi bir web sayfasında, sosyal medyada ve görsel basında yayınlanması yasaktır. Ayrıntılı bilgi için Kullanım Koşulları sayfasını okuyabilirsiniz.

27.01.2016

İçerik hakkında soru sorabilir veya yorumda bulunabilirsiniz.

İsim
Web Site
E-Posta
Mesaj

Yorumlar (1)

  1. Ali Osman

    İçerik konusu sinema ile ilgili siteler için çok kullanışlı gerçekten. Film bilgilerinin düzenli durmasını seviyorum.


Bu İçerikler de İlginizi Çekebilir...

Kopyalanan Yazıya Otomatik Kaynak Adresi Ekleme
24.04.2016
4,197 Gösterim

Kopyalanan Yazıya Otomatik Kaynak Adresi Ekleme

Kaynak belirtilmeden kopyalanan yazılara otomatik kaynak adresi eklemek için küçük bir javascript kod blogunun siteye eklenmesi yeterli olacaktır.

Web Sitesine Kısayol Tuşları Ekleme
27.12.2015
8,326 Gösterim

Web Sitesine Kısayol Tuşları Ekleme

Sahibi olduğunuz web sitesine gelen ziyaretçilerin daha hızlı gezinebilmesi için kısayol tuşları ekleyebilirsiniz.

Görsellere Büyüteç ile Bakma
27.12.2015
7,307 Gösterim

Görsellere Büyüteç ile Bakma

Web sitenizde bulunan görsellerin üzerine gelindiğinde büyüteç efekti ile görseli görüntülemek için gereken HTML/CSS kodları.

jQuery - Değişen Arka Plan Kodu
21.11.2015
6,576 Gösterim

jQuery - Değişen Arka Plan Kodu

Web sitenizin arka plan görselinin belirli aralıklarla sizin belirlediğiniz görseller arasında değişmesi için gerekli olan javascript kodu.

Tarihte Bugün Scripti Yapımı
06.06.2016
5,708 Gösterim

Tarihte Bugün Scripti Yapımı

Tarihte bugün scripti, asp, php gibi programlama dilleriyle, farklı şekillerde kodlanabilir. En basit haliyle php ile tarihte bugün kodları, scripti