Java ile IMDB’den film bilgisi almak
Her ÅŸey harici diskte yer açmaya çalışmakla baÅŸladı : ) Önceleri adından gözüme kestirdiÄŸim, şöyle basmakalıp Hollywood aksiyon veya romantik komedi türü filmleri imdb’de bir göz attıktan sonra siliyordum. Sonraları bu iÅŸ can sıkıcı olmaya baÅŸladı. Yok mudur bunun bir API’si, topluca bulayım bu filmleri de külliyen uçurayım kellerini falan diye bakmaya baÅŸladım. Nihayetinde eli yüzü düzgün, inciÄŸi boncuÄŸu olmayan bir servis buldum. Åžurada sunulan servis ile ilgili linke film adı ve/veya yılını parametre olarak geçtiÄŸinizde film bilgileri json formatında bir nesne olarak dönüyor. Geriye json formatındaki bu nesneyi ayrıştırmak kalıyor. Bunun için de halihazırda API’ler mevcut.
Şöyle ki;
package com.imdbInfo.base; import java.io.BufferedReader; import java.io.InputStreamReader; import java.net.URL; import java.net.URLConnection; import java.net.URLEncoder; import net.sf.json.JSONObject; import net.sf.json.JSONSerializer; public class BasicTest { private static final String BASIC_API_URL = "http://www.imdbapi.com/?"; private static final String TITLE_PARAM = "t="; @SuppressWarnings("unused") private static final String YEAR_PARAM = "&y="; public static void main(String[] args) { try { String titleToSearch = URLEncoder.encode("Forrest Gump","UTF-8"); String text = getJSONStringOf(BASIC_API_URL + TITLE_PARAM + titleToSearch); JSONObject jSonObject = (JSONObject) JSONSerializer.toJSON(text); String title = jSonObject.getString("Title"); int year = jSonObject.getInt("Year"); int votes = jSonObject.getInt("Votes"); double rating = jSonObject.getDouble("Rating"); String genre = jSonObject.getString("Genre"); //Runtime, Director vs. System.out.println("Title:" + title + "\nYear:" + year + "\nVotes:" + votes + "\nRating:" + rating + "\nGenre:" + genre); } catch (Exception e) { //Movie not found ! e.printStackTrace(); } } public static String getJSONStringOf(String urlSpec) throws Exception { URL url = new URL(urlSpec); URLConnection connection = url.openConnection(); BufferedReader reader = new BufferedReader(new InputStreamReader( connection.getInputStream())); String line = ""; StringBuilder builder = new StringBuilder(); while ((line = reader.readLine()) != null) { builder.append(line); } return builder.toString(); } }
Title:Forrest Gump
Year:1994
Votes:325985
Rating:8.6
Genre:Drama, Romance
diyerek filmin bilgilerini almış oluyoruz. Bunların içinde film adı, yapım yılı, türü, kullanılan oy sayısı, puan, yönetmen, oyuncular, süre ve sair filmle ilgili bir sürü bilgi bulunuyor.
Bundan sonra eldeki filmleri bu servisten alınan bilgiye göre sınıflandırmak kalıyor. Ki iÅŸin keyifli kısmı da orası : ) Yalnız ÅŸunu belirtmemde fayda var. Bu servisin elindeki veri imdb’nin yayınlamış olduÄŸu film veritabanından alınıyor. Sanırım biraz eski. AraÅŸtırmadım ama tahminimce bir kaç ay kadar. Ziyanı yok : )
Kodu bu haliyle kullanabilmek için projenin ‘classpath’ inde commons-beanutils,commons-collections-3.2.1, commons-lang, commons-logging, ezmorph-1.0.5 ve json-lib-2.4-jdk15 jar’larının bulunması gerekliyor.
Daha bir eli yüzü düzgün ve gerekli jar’ları barındıran kod örneÄŸi ÅŸuradan indirilip incelenebilir, Eclipse’e import edilebilir.
Son Yorumlar