package org.lodder.subtools.sublibrary.data.IMDB;
import java.net.URLEncoder;
import java.util.StringTokenizer;
import org.lodder.subtools.sublibrary.Manager;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class IMDBSearchID {
private Manager manager;
private static String DEFAULTUSERAGENT = "Mozilla/5.25 Netscape/5.0 (Windows; I; Win95)";
private static final Logger LOGGER = LoggerFactory.getLogger(IMDBSearchID.class);
public IMDBSearchID(Manager manager) {
this.manager = manager;
}
public int getImdbId(String title, int year) throws IMDBSearchIDException {
int imdbid = this.getImdbIdOnGoogle(title, year);
if (imdbid == 0) {
return this.getImdbIdOnYahoo(title, year);
} else {
return imdbid;
}
}
public int getImdbIdOnYahoo(String title, int year) throws IMDBSearchIDException {
String xml = "";
try {
StringBuilder sb =
new StringBuilder("http://search.yahoo.com/search;_ylt=A1f4cfvx9C1I1qQAACVjAQx.?p=");
sb.append(URLEncoder.encode(title, "UTF-8"));
if (year > 0) {
sb.append("+%28").append(year).append("%29");
}
sb.append("+site%3Aimdb.com&fr=yfp-t-501&ei=UTF-8&rd=r1");
xml = manager.getContent(sb.toString(), DEFAULTUSERAGENT, true);
int beginIndex = xml.indexOf("/title/tt");
StringTokenizer st = new StringTokenizer(xml.substring(beginIndex + 7), "/\"");
String imdbId = st.nextToken();
if (imdbId.startsWith("tt")) {
LOGGER.trace("Found imdbid [{}] with yahoo", imdbId);
return Integer.parseInt(imdbId.substring(2));
}
} catch (Exception e) {
throw new IMDBSearchIDException("Error getImdbIdOnYahoo", xml, e);
}
return 0;
}
public int getImdbIdOnGoogle(String title, int year) throws IMDBSearchIDException {
String xml = "";
try {
StringBuilder sb = new StringBuilder("http://www.google.com/search?q=");
sb.append(URLEncoder.encode(title, "UTF-8"));
if (year > 0) {
sb.append("+%28").append(year).append("%29");
}
sb.append("+site%3Awww.imdb.com&meta=");
xml = manager.getContent(sb.toString(), DEFAULTUSERAGENT, true);
String imdbId = "";
int beginIndex = xml.indexOf("/title/tt");
if (beginIndex > -1) {
StringTokenizer st = new StringTokenizer(xml.substring(beginIndex + 7), "/\"");
imdbId = st.nextToken();
}
if (imdbId.startsWith("tt")) {
LOGGER.trace("Found imdbid [{}] with google", imdbId);
return Integer.parseInt(imdbId.substring(2));
}
} catch (Exception e) {
throw new IMDBSearchIDException("Error getImdbIdOnGoogle", xml, e);
}
return 0;
}
}