Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.io.BufferedReader;
- import java.io.FileReader;
- import java.io.IOException;
- import java.io.InputStreamReader;
- import java.net.URL;
- import java.util.StringTokenizer;
- import java.util.Vector;
- /**
- * A simple parser for the TheMovieDB Database
- * This class receives as input a file with a list of movie IDs from TheMovieDB and creates a graph in GML describing
- * the connections among actors in the casts.
- *
- * It works by creating a clique for each movie. When a actor participates in more than one movie he connects both cliques.
- *
- * @author Alexandre Duarte - http://alexandre.ci.ufpb.br - alexandre@ci.ufpb.br
- *
- */
- public class TheMovieDBParser {
- private String movieID;
- private String title;
- private Vector <String>genres;
- private Vector<String> cast;
- public TheMovieDBParser(String movieID) {
- this.movieID = movieID;
- genres = new Vector<String>();
- cast = new Vector <String>();
- }
- public void extractData() throws IOException, InterruptedException {
- URL url = new URL( "http://api.themoviedb.org/3/movie/" + movieID + "?api_key=YOUR API KEY");
- BufferedReader br = new BufferedReader( new InputStreamReader(url.openStream()));
- String line = br.readLine();
- int s = line.indexOf( "original_title") + 17;
- int e = line.indexOf("overview") - 3;
- this.setTitle(line.substring(s,e));
- s = line.indexOf("genres") + 8;
- e = line.indexOf("homepage") - 2;
- StringTokenizer st = new StringTokenizer(line.substring(s,e),",");
- int i = 0;
- while(st.hasMoreTokens()) {
- String t = st.nextToken();
- if( i % 2 == 1) {
- t = t.replaceAll("\"name\":\"", "").replaceAll("\"}", "").replaceAll("]", "");
- genres.add(t);
- }
- i++;
- }
- }
- public void extractCast() throws IOException, InterruptedException {
- URL url = new URL( "http://api.themoviedb.org/3/movie/" + movieID + "/casts?api_key=YOUR API KEY");
- BufferedReader br = new BufferedReader( new InputStreamReader(url.openStream()));
- String line = br.readLine();
- line = line.substring(0, line.indexOf("]"));
- StringTokenizer st = new StringTokenizer(line, "{");
- st.nextToken();
- while( st.hasMoreTokens()) {
- String a = st.nextToken();
- cast.add (a.substring(a.indexOf("name") + 7, a.indexOf("\",\"")));
- }
- }
- public String getTitle() {
- return title;
- }
- public void setTitle(String title) {
- this.title = title;
- }
- private Vector <String> getCast() {
- return cast;
- }
- public static void main( String args[] ) throws IOException, InterruptedException {
- BufferedReader r = new BufferedReader( new FileReader (args[0]));
- String movie;
- System.out.println( "graph");
- System.out.println( "[");
- System.out.println("\tdirected 0");
- while( (movie = r.readLine())!=null) {
- TheMovieDBParser m = new TheMovieDBParser(movie);
- m.extractData();
- m.extractCast();
- Thread.sleep(1000);
- Vector <String>v = m.getCast();
- int edgeID= 0;
- for( int i = 0; i < v.size(); i++ )
- for( int j = i + 1; j < v.size(); j++) {
- System.out.println( "\tedge");
- System.out.println( "\t[");
- System.out.println( "\t\t id " + edgeID++ );
- System.out.println( "\t\t label \"" + m.getTitle() + "\"");
- System.out.println( "\t\t source \"" + v.elementAt(i) + "\"");
- System.out.println( "\t\t target \"" + v.elementAt(j) + "\"");
- System.out.println( "\t\t value 1");
- System.out.println( "\t]");
- }
- }
- System.out.println ( "]");
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement