-
Notifications
You must be signed in to change notification settings - Fork 0
Description
네, TMDb API를 사용하면 영화 정보를 쉽게 가져올 수 있습니다. TMDb API는 영화, TV 프로그램, 배우, 영화 트레일러, 포스터 등 다양한 데이터를 JSON 형태로 제공합니다. 아래는 TMDb API를 통해 Java에서 영화 정보를 가져오는 방법입니다.
- TMDb API 사용 준비
TMDb 계정 생성 및 API 키 발급:
TMDb API 키 발급 페이지에서 API 키를 발급받습니다.
API 문서 확인:
TMDb API 문서: TMDb API Documentation
필수 엔드포인트:
인기 영화 가져오기: GET /movie/popular
특정 영화 검색: GET /search/movie
영화 상세 정보 가져오기: GET /movie/{movie_id}
2. TMDb API 호출 기본 구조
Java에서 API를 호출하려면 HttpURLConnection 또는 HTTP 클라이언트 라이브러리(예: OkHttp, Apache HttpClient)를 사용할 수 있습니다.
예제: 인기 영화 가져오기
java
코드 복사
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import org.json.JSONArray;
import org.json.JSONObject;
public class TMDbApiExample {
private static final String API_KEY = "YOUR_API_KEY"; // TMDb에서 발급받은 API 키
private static final String BASE_URL = "https://api.themoviedb.org/3";
public static void main(String[] args) {
try {
String response = getPopularMovies();
parseMovieData(response);
} catch (Exception e) {
e.printStackTrace();
}
}
private static String getPopularMovies() throws Exception {
String endpoint = BASE_URL + "/movie/popular?api_key=" + API_KEY + "&language=ko-KR&page=1";
URL url = new URL(endpoint);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
StringBuilder response = new StringBuilder();
String line;
while ((line = reader.readLine()) != null) {
response.append(line);
}
reader.close();
return response.toString();
}
private static void parseMovieData(String jsonResponse) {
JSONObject jsonObject = new JSONObject(jsonResponse);
JSONArray results = jsonObject.getJSONArray("results");
System.out.println("===== 인기 영화 =====");
for (int i = 0; i < results.length(); i++) {
JSONObject movie = results.getJSONObject(i);
String title = movie.getString("title");
String overview = movie.getString("overview");
double rating = movie.getDouble("vote_average");
System.out.println("제목: " + title);
System.out.println("줄거리: " + overview);
System.out.println("평점: " + rating);
System.out.println("---------------------");
}
}
}
코드 설명
getPopularMovies 메서드:
TMDb의 인기 영화 API에 요청을 보냅니다.
요청 결과를 JSON 문자열로 반환합니다.
parseMovieData 메서드:
JSON 응답에서 영화 제목, 줄거리, 평점을 추출하여 출력합니다.
사용된 TMDb API:
GET /movie/popular: 인기 있는 영화 목록을 가져옵니다.
URL 예:
bash
코드 복사
https://api.themoviedb.org/3/movie/popular?api_key=YOUR_API_KEY&language=ko-KR&page=1
3. TMDb API 확장
특정 영화 검색:
java
코드 복사
private static String searchMovie(String query) throws Exception {
String endpoint = BASE_URL + "/search/movie?api_key=" + API_KEY + "&language=ko-KR&query=" + query;
URL url = new URL(endpoint);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
StringBuilder response = new StringBuilder();
String line;
while ((line = reader.readLine()) != null) {
response.append(line);
}
reader.close();
return response.toString();
}
영화 상세 정보 가져오기:
java
코드 복사
private static String getMovieDetails(int movieId) throws Exception {
String endpoint = BASE_URL + "/movie/" + movieId + "?api_key=" + API_KEY + "&language=ko-KR";
URL url = new URL(endpoint);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
StringBuilder response = new StringBuilder();
String line;
while ((line = reader.readLine()) != null) {
response.append(line);
}
reader.close();
return response.toString();
}
4. 사용 시나리오
영화 추천 기능과 결합:
TMDb API에서 데이터를 가져와 영화 추천 데이터베이스를 자동으로 업데이트.
특정 영화 검색 결과를 사용자에게 제공.
사용자 인터페이스와 연결:
GUI 또는 콘솔에서 입력을 받아 API 호출.
JSON 응답을 파싱하여 영화 정보를 출력하거나 저장.
5. 의존성 관리 (선택 사항)
OkHttp나 Retrofit 같은 라이브러리를 사용하면 HTTP 요청 처리를 더 간단하게 구현할 수 있습니다. 필요하면 해당 라이브러리 기반 예제도 제공할 수 있습니다.
추가적으로 API 통합과 관련된 질문이 있으면 말씀해주세요!