diff --git a/server/.gradle/8.8/executionHistory/executionHistory.bin b/server/.gradle/8.8/executionHistory/executionHistory.bin index 6911b42..1e4f9ae 100644 Binary files a/server/.gradle/8.8/executionHistory/executionHistory.bin and b/server/.gradle/8.8/executionHistory/executionHistory.bin differ diff --git a/server/.gradle/8.8/executionHistory/executionHistory.lock b/server/.gradle/8.8/executionHistory/executionHistory.lock index f7e5ff2..d4bc363 100644 Binary files a/server/.gradle/8.8/executionHistory/executionHistory.lock and b/server/.gradle/8.8/executionHistory/executionHistory.lock differ diff --git a/server/.gradle/8.8/fileHashes/fileHashes.bin b/server/.gradle/8.8/fileHashes/fileHashes.bin index d255b56..96a0209 100644 Binary files a/server/.gradle/8.8/fileHashes/fileHashes.bin and b/server/.gradle/8.8/fileHashes/fileHashes.bin differ diff --git a/server/.gradle/8.8/fileHashes/fileHashes.lock b/server/.gradle/8.8/fileHashes/fileHashes.lock index f49c164..507984e 100644 Binary files a/server/.gradle/8.8/fileHashes/fileHashes.lock and b/server/.gradle/8.8/fileHashes/fileHashes.lock differ diff --git a/server/.gradle/8.8/fileHashes/resourceHashesCache.bin b/server/.gradle/8.8/fileHashes/resourceHashesCache.bin index 7a961a7..9136388 100644 Binary files a/server/.gradle/8.8/fileHashes/resourceHashesCache.bin and b/server/.gradle/8.8/fileHashes/resourceHashesCache.bin differ diff --git a/server/.gradle/buildOutputCleanup/buildOutputCleanup.lock b/server/.gradle/buildOutputCleanup/buildOutputCleanup.lock index d5232f0..df7fa91 100644 Binary files a/server/.gradle/buildOutputCleanup/buildOutputCleanup.lock and b/server/.gradle/buildOutputCleanup/buildOutputCleanup.lock differ diff --git a/server/build/classes/java/main/com/example/hackathon/dataset/domain/DataField.class b/server/build/classes/java/main/com/example/hackathon/dataset/domain/DataField.class index 92ce03d..ea25cf7 100644 Binary files a/server/build/classes/java/main/com/example/hackathon/dataset/domain/DataField.class and b/server/build/classes/java/main/com/example/hackathon/dataset/domain/DataField.class differ diff --git a/server/build/classes/java/main/com/example/hackathon/dataset/repository/DataFieldRepository.class b/server/build/classes/java/main/com/example/hackathon/dataset/repository/DataFieldRepository.class new file mode 100644 index 0000000..142adcc Binary files /dev/null and b/server/build/classes/java/main/com/example/hackathon/dataset/repository/DataFieldRepository.class differ diff --git a/server/build/classes/java/main/com/example/hackathon/tmdb/application/TmdbService.class b/server/build/classes/java/main/com/example/hackathon/tmdb/application/TmdbService.class new file mode 100644 index 0000000..dfc1eb6 Binary files /dev/null and b/server/build/classes/java/main/com/example/hackathon/tmdb/application/TmdbService.class differ diff --git a/server/build/classes/java/main/com/example/hackathon/tmdb/controller/TmdbController.class b/server/build/classes/java/main/com/example/hackathon/tmdb/controller/TmdbController.class new file mode 100644 index 0000000..92030fd Binary files /dev/null and b/server/build/classes/java/main/com/example/hackathon/tmdb/controller/TmdbController.class differ diff --git a/server/build/resources/main/application.properties b/server/build/resources/main/application.properties index fb15f41..4df923c 100644 --- a/server/build/resources/main/application.properties +++ b/server/build/resources/main/application.properties @@ -54,9 +54,10 @@ #app.auth.tokenExpirationMsec = 864000000 #app.cors.allowedOrigins=http://localhost:3000,http://localhost:8080,https://port-0-hackathon-be-lyqylohp8957ca6e.sel5.cloudtype.app/ #app.oauth2.authorizedRedirectUris=http://localhost:3000/oauth2/redirect,myandroidapp://oauth2/redirect,myiosapp://oauth2/redirect +# +#tmdb.api.key=${TMDB_API_KEY} + -#OAuth2 -#??? spring.security.oauth2.client.registration.google.client-id=240772131497-d17ho20q4gb42n5s42ncohdh5k9379rc.apps.googleusercontent.com spring.security.oauth2.client.registration.google.client-secret=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 spring.security.oauth2.client.registration.google.redirect-uri=http://glogglogglog-env.eba-fuksumx7.ap-northeast-2.elasticbeanstalk.com/oauth2/callback/google @@ -86,4 +87,6 @@ spring.datasource.password=0322! spring.datasource.driver-class-name=org.mariadb.jdbc.Driver spring.jpa.show-sql=true -spring.jpa.hibernate.ddl-auto=update \ No newline at end of file +spring.jpa.hibernate.ddl-auto=update + +tmdb.api.key=808f8aebcaf5dd72860ce88499d315e3 \ No newline at end of file diff --git a/server/build/tmp/compileJava/compileTransaction/stash-dir/TmdbController.class.uniqueId0 b/server/build/tmp/compileJava/compileTransaction/stash-dir/TmdbController.class.uniqueId0 new file mode 100644 index 0000000..dd4e79b Binary files /dev/null and b/server/build/tmp/compileJava/compileTransaction/stash-dir/TmdbController.class.uniqueId0 differ diff --git a/server/build/tmp/compileJava/compileTransaction/stash-dir/TmdbService.class.uniqueId1 b/server/build/tmp/compileJava/compileTransaction/stash-dir/TmdbService.class.uniqueId1 new file mode 100644 index 0000000..d99c83a Binary files /dev/null and b/server/build/tmp/compileJava/compileTransaction/stash-dir/TmdbService.class.uniqueId1 differ diff --git a/server/build/tmp/compileJava/previous-compilation-data.bin b/server/build/tmp/compileJava/previous-compilation-data.bin index 500852e..b0d72bb 100644 Binary files a/server/build/tmp/compileJava/previous-compilation-data.bin and b/server/build/tmp/compileJava/previous-compilation-data.bin differ diff --git a/server/src/main/java/com/example/hackathon/dataset/controller/DataController.java b/server/src/main/java/com/example/hackathon/dataset/controller/DataController.java index 6cb3f8d..6a6efc2 100644 --- a/server/src/main/java/com/example/hackathon/dataset/controller/DataController.java +++ b/server/src/main/java/com/example/hackathon/dataset/controller/DataController.java @@ -15,13 +15,13 @@ public class DataController { private final DataService dataService; - @PostMapping("/upload") - public String uploadCSV(@RequestParam("file") MultipartFile file) { - try { - dataService.saveCsv(file); - return "File uploaded and data saved successfully!"; - } catch (Exception e) { - return "Failed to upload and save data: " + e.getMessage(); - } - } +// @PostMapping("/upload") +// public String uploadCSV(@RequestParam("file") MultipartFile file) { +// try { +// dataService.saveCsv(file); +// return "File uploaded and data saved successfully!"; +// } catch (Exception e) { +// return "Failed to upload and save data: " + e.getMessage(); +// } +// } } \ No newline at end of file diff --git a/server/src/main/java/com/example/hackathon/dataset/domain/DataField.java b/server/src/main/java/com/example/hackathon/dataset/domain/DataField.java index 3baad48..d6998bf 100644 --- a/server/src/main/java/com/example/hackathon/dataset/domain/DataField.java +++ b/server/src/main/java/com/example/hackathon/dataset/domain/DataField.java @@ -13,6 +13,8 @@ public class DataField { private Long id; @Column(name = "titleName") private String titleName; + @Column(name = "mediaType") + private String mediaType; @Column(name = "image") private String image; } diff --git a/server/src/main/java/com/example/hackathon/tmdb/application/TmdbService.java b/server/src/main/java/com/example/hackathon/tmdb/application/TmdbService.java new file mode 100644 index 0000000..8d8a172 --- /dev/null +++ b/server/src/main/java/com/example/hackathon/tmdb/application/TmdbService.java @@ -0,0 +1,95 @@ +package com.example.hackathon.tmdb.application; + +import com.example.hackathon.dataset.domain.DataField; +import com.example.hackathon.dataset.repository.DataFieldRepository; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; +import org.springframework.web.client.RestTemplate; +import org.springframework.web.util.UriComponentsBuilder; + +import java.util.List; +import java.util.Map; + +@Service +public class TmdbService { + + @Value("${tmdb.api.key}") + private String apiKey; + + private final RestTemplate restTemplate = new RestTemplate(); + + @Autowired + private DataFieldRepository dataFieldRepository; + + public void saveImage(){ + List dataFields = dataFieldRepository.findAll(); + for(DataField dataField : dataFields){ + if(dataField.getMediaType().equals("movie")){ + dataField.setImage(getMovieImage(dataField.getTitleName())); + dataFieldRepository.save(dataField); + } + else{ + dataField.setImage(getTvImage(dataField.getTitleName())); + dataFieldRepository.save(dataField); + } + } + } + + public String getTvImage(String query) { + String searchUrl = UriComponentsBuilder.fromHttpUrl("https://api.themoviedb.org/3/search/tv") + .queryParam("api_key", apiKey) + .queryParam("query", query) + .queryParam("language", "ko-KR") + .toUriString(); + + Map searchResponse = restTemplate.getForObject(searchUrl, Map.class); + + if (searchResponse != null && !((List) searchResponse.get("results")).isEmpty()) { + Map firstResult = ((List>) searchResponse.get("results")).get(0); + String id = String.valueOf(firstResult.get("id")); + + String detailsUrl = UriComponentsBuilder.fromHttpUrl("https://api.themoviedb.org/3/tv/" + id) + .queryParam("api_key", apiKey) + .queryParam("language", "ko-KR") + .toUriString(); + + Map detailsResponse = restTemplate.getForObject(detailsUrl, Map.class); + + if (detailsResponse != null && detailsResponse.get("poster_path") != null) { + String posterPath = String.valueOf(detailsResponse.get("poster_path")); + return "https://image.tmdb.org/t/p/w500" + posterPath; + } + } + return null; + } + + // 영화 이미지 가져오기 + public String getMovieImage(String query) { + String searchUrl = UriComponentsBuilder.fromHttpUrl("https://api.themoviedb.org/3/search/movie") + .queryParam("api_key", apiKey) + .queryParam("query", query) + .queryParam("language", "ko-KR") + .toUriString(); + + Map searchResponse = restTemplate.getForObject(searchUrl, Map.class); + + if (searchResponse != null && !((List) searchResponse.get("results")).isEmpty()) { + Map firstResult = ((List>) searchResponse.get("results")).get(0); + String id = String.valueOf(firstResult.get("id")); + + String detailsUrl = UriComponentsBuilder.fromHttpUrl("https://api.themoviedb.org/3/movie/" + id) + .queryParam("api_key", apiKey) + .queryParam("language", "ko-KR") + .toUriString(); + + Map detailsResponse = restTemplate.getForObject(detailsUrl, Map.class); + + if (detailsResponse != null && detailsResponse.get("poster_path") != null) { + String posterPath = String.valueOf(detailsResponse.get("poster_path")); + return "https://image.tmdb.org/t/p/w500" + posterPath; + } + } + return null; + } +} diff --git a/server/src/main/java/com/example/hackathon/tmdb/controller/TmdbController.java b/server/src/main/java/com/example/hackathon/tmdb/controller/TmdbController.java new file mode 100644 index 0000000..f5ac84b --- /dev/null +++ b/server/src/main/java/com/example/hackathon/tmdb/controller/TmdbController.java @@ -0,0 +1,23 @@ +package com.example.hackathon.tmdb.controller; + +import com.example.hackathon.tmdb.application.TmdbService; +import lombok.AllArgsConstructor; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@AllArgsConstructor +@RequestMapping("/api") +public class TmdbController { + + private final TmdbService tmdbService; + +// @GetMapping("/movie-image") +// public String getMovieImage() { +// tmdbService.saveImage(); +// return "success save image"; +// } +} \ No newline at end of file diff --git a/server/src/main/resources/application.properties b/server/src/main/resources/application.properties index 4371d60..2608bad 100644 --- a/server/src/main/resources/application.properties +++ b/server/src/main/resources/application.properties @@ -53,4 +53,6 @@ cloud.aws.stack.auto=false app.auth.tokenSecret=04ca023b39512e46d0c2cf4b48d5aac61d34302994c87ed4eff225dcf3b0a218739f3897051a057f9b846a69ea2927a587044164b7bae5e1306219d50b588cb1 app.auth.tokenExpirationMsec = 864000000 app.cors.allowedOrigins=http://localhost:3000,http://localhost:8080,https://port-0-hackathon-be-lyqylohp8957ca6e.sel5.cloudtype.app/ -app.oauth2.authorizedRedirectUris=http://localhost:3000/oauth2/redirect,myandroidapp://oauth2/redirect,myiosapp://oauth2/redirect \ No newline at end of file +app.oauth2.authorizedRedirectUris=http://localhost:3000/oauth2/redirect,myandroidapp://oauth2/redirect,myiosapp://oauth2/redirect + +tmdb.api.key=${TMDB_API_KEY} \ No newline at end of file