Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > поиск movie trailers/photos


Автор: veronikaar 9.4.2006, 16:07
Привет всем!
Я уже писала ранее с вопросом о Yahoo! API. Если кто помнит, забудьте то сообщение. Вместо API моя группа решила остановиться на поиске фильмов на трех сайтах через URLs. Ниже-код, который работает, за исключением клипов к фильмам и фотографий(я выделила тут часть).
О чем и для чего программа? Программа должна искать информацию о фильмах на трех сайтах(один из них Yahoo) по ключевым словам, которые вы вводите в текстовом поле(например, harry potter) и выбираете также то, что хотите, чтобы программа искала для вас:название фильма, актер, рейтинг, фотографии, клипы(выбираете из drop-down menu).
Мой вопрос-не подскажет ли кто-нибудь, как настроить поиск клипов и фотографий?
Скажем, мне нужно найти клип на Yahoo - после http://movies.yahoo.com/movies/ идет 10-значный номер, потом /trailer.... (Я скопировала link c Yahoo, см. след. строку)
http://movies.yahoo.com/movie/1808751386/trailer
Cоответственно, если нужно найти фотографию к фильму, то это будет тот же самый номер, но после него будет /photo.

Я была бы благодарна, если кто-нибудь подскажет, как ''поймать'' тот самый номер. Какой должна быть строка поиска, чтобы программа находила то, что мне надо (в коде ниже -это часть switch=>case 5-6).

Cпасибо заранее!!


Код
import java.applet.Applet;
import java.net.*;
import java.awt.*;
import java.awt.event.*;

public class project_movie_test extends Applet {
     TextField searchParameter;
     Choice    searchEngine;
     Button    searchButton;

     private String movieframe;
     private String movieframe2;
     private String movieframe3;

    // initialize the display
    public void init() {
             setBackground(Color.white);
             searchParameter = new TextField(20);
             add(searchParameter);
             searchEngine = new Choice();
             searchEngine.addItem("Keyword");
             searchEngine.addItem("Title");
             searchEngine.addItem("Actor/Crew");
             searchEngine.addItem("Plot");
             searchEngine.addItem("Rating/Review");
             searchEngine.addItem("Trailer/Clip");
             searchEngine.addItem("Photos");
             searchEngine.select(0);
             add(searchEngine);
             searchButton = new Button("Search");
             add(searchButton);

             //        searchButton.addActionListener(new searchButtonListener());
    }

    public boolean action(Event e, Object o) {
           if (e.target.equals(searchButton)) {
               try {
                      sendSearch();
               }
                catch (Exception e1) {
                         showStatus("Exception caught:" + e1.toString());
                }
            }
            return true;

    }

    public void sendSearch() throws Exception {
              String searchString = searchParameter.getText();
                         if (searchString.equals("")) {
                            showStatus("Must enter a search string");
                            return;
                         }
               String url;
               String url2;
               String url3;

              switch (searchEngine.getSelectedIndex()) {
                         case 0: url = "http://movies.yahoo.com/mv/search?type=all&p=";
                                   url2 = "http://www.imdb.com/find?s=all&q=";
                             url3 = "http://www.rottentomatoes.com/search/full_search.php?search=";
                              break;
                         case 1: url = "http://movies.yahoo.com/mv/search?type=feature&p=";
                             url2 = "http://www.imdb.com/find?s=tt&q=";
                             url3 = "http://www.rottentomatoes.com/search/full_search.php?search=";
                             break;
                         case 2: url = "http://movies.yahoo.com/mv/search?type=contrib&p=";
                             url2 = "http://www.imdb.com/find?s=nm&q=";
                             url3 = "http://www.rottentomatoes.com/search/full_search.php?search=";
                            break;
                         case 3: url = "http://movies.yahoo.com/mv/search?type=all&p=";
                              url2 = "http://www.imdb.com/Find?select=Plots&for=";
                              url3 = "http://www.rottentomatoes.com/search/full_search.php?search=";
                    break;
                         case 4: url = "http://movies.yahoo.com/mv/search?type=mom&p=";
                             url2 = "http://www.imdb.com/find?s=all&q=";
                             url3 = "http://www.rottentomatoes.com/search/full_search.php?search=";
                          break;
[B]/*эта часть не работает:(     
case 5: url = "http://movies.yahoo.com/mv/search?type=all&p=";
                 url2 = "http://www.imdb.com/find?s=all&q=";
         url3 = "http://www.rottentomatoes.com/search/full_search.php?search=";
                 break;    
     case 6: url = "http://movies.yahoo.com/mv/search?type=all&p=";
                 url2 = "http://www.imdb.com/find?s=all&q=";
         url3 = "http://www.rottentomatoes.com/search/full_search.php?search=";
                 break;
*/         [/B]
                             default: showStatus("Invalid search engine selected.");
                             return;
              }

            // encode the search data
            url += URLEncoder.encode(searchString, "UTF-8");

           //still more testing to see if I can use more than one url

          url2 += URLEncoder.encode(searchString, "UTF-8");

          url3 += URLEncoder.encode(searchString, "UTF-8");

          movieframe = "window";

          //yet more tests for three urls
          movieframe2 = "window2";
          movieframe3 = "window3";

          // launch the search engine
          showStatus("Connecting to search location " + url);
          getAppletContext().showDocument(new URL(url), movieframe);

         //a last test of more than one url

        // launch the search engine
        showStatus("Connecting to search location " + url2);
        getAppletContext().showDocument(new URL(url2), movieframe2);

       // launch the search engine
       showStatus("Connecting to search location " + url3);
       getAppletContext().showDocument(new URL(url3), movieframe3);



      }
}

Автор: LSD 9.4.2006, 21:13
Скорее всего это идентификатор фильма в базе данных Yahoo. Попробуй поменять этот номер, скажем вместо 1808751386 записать 1808751387, ту просто получишь другой фильм.
Чтобы найти ID фильма, надо его поискать по ихней базе: http://movies.yahoo.com/mv/search?p=Spartacus.

Автор: veronikaar 13.4.2006, 07:13
Спасибо за ответsmile

Вы правы -номер может быть абсолютно любым. И search должен производиться абсолютно для любого фильма.
Ок, я не совсем поняла фразу про поискать в базе данных Yahoo...я именно это и пытаюсь сделать...
То есть строка для поиска trailers будет "http://movies.yahoo.com/mv/search?p="?

Спасибо

Автор: veronikaar 13.4.2006, 07:44
Oк, я сейчас попробовала поменять заданную строку поиска в программе, и к сожалению я получаю не тот результат который нужен.
Скажем, я хочу найти клипы к фильму "Shrek" - я ввожу название в текстовом поле, выбираю trailer/clip из drop-down menu. нажимаю "Искать" , и результат должен быть вот этот линк http://movies.yahoo.com/movie/1808405861/trailer -страница со всеми предложенными клипами, а не http://movies.yahoo.com/mv/search?p=shrek -последний результат как раз то, что дожно появиться в ответ на поиск по названиям. Эта часть у меня работает.

Автор: LSD 13.4.2006, 10:59
1. Вначале ищешь фильмы в ихней базе через:
Код
http://movies.yahoo.com/mv/search?p=Spartacus

2. Получаешь ссылки на фильмы из ихней базы, например по Spartacus мы получим 6 фильмов. Ссылка выглядит как:
Код
http://us.rd.yahoo.com/movies/search/movie/title/*http://movies.yahoo.com/shop?d=hv&cf=info&id=1800120009

очевидно что id=1800120009 - это и есть id фильма в ихней базе.
3. Чтобы скажем получить трейлер на фильм идем по ссылке вида:
Код
http://movies.yahoo.com/movie/1800120009/trailer

и выясняем, что для Спартака нет трейлера smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)