Skip to content

Commit bdce1d5

Browse files
committed
Get genres user watched
1 parent 681fa28 commit bdce1d5

File tree

2 files changed

+59
-0
lines changed

2 files changed

+59
-0
lines changed

src/main/java/com/programming/videoService/controller/VideoController.java

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import java.io.InputStream;
2222
import java.nio.charset.StandardCharsets;
2323
import java.sql.Timestamp;
24+
import java.util.List;
2425
import java.util.Map;
2526

2627
import org.slf4j.Logger;
@@ -259,6 +260,24 @@ public ResponseEntity<?> getHistoryByUserId(@PathVariable String userId) {
259260
return new ResponseEntity<>(videoService.getHistoryByUserId(userId), HttpStatus.OK);
260261
}
261262

263+
//Handle Genre
264+
@GetMapping("/getGenresByVideoId/{videoId}")
265+
public ResponseEntity<?> getGenresByVideoId(@PathVariable String videoId) {
266+
return new ResponseEntity<>(videoService.getGenresByVideoId(videoId), HttpStatus.OK);
267+
}
268+
269+
@GetMapping("/getGenresByUserId/{userId}")
270+
public ResponseEntity<?> getGenresByUserId(@PathVariable String userId) {
271+
try {
272+
Map<String, Integer> combinedGenres = videoService.getGenresByUserId(userId);
273+
return new ResponseEntity<>(combinedGenres, HttpStatus.OK);
274+
} catch (Exception e) {
275+
return new ResponseEntity<>("Error fetching combined genres: " + e.getMessage(), HttpStatus.INTERNAL_SERVER_ERROR);
276+
}
277+
}
278+
279+
280+
262281
//handle Report
263282
@PostMapping("/uploadReport")
264283
public ResponseEntity<?> uploadReport(@RequestParam("videoId") String videoId,

src/main/java/com/programming/videoService/service/VideoService.java

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -339,6 +339,46 @@ public List<String> getHistoryByUserId(String userId) {
339339
return thumbIds;
340340
}
341341

342+
//Hanle genres
343+
public List<String> getGenresByVideoId(String videoId){
344+
Query query = new Query(Criteria.where("_id").is(videoId));
345+
DBObject dbObject = mongoTemplate.findOne(query, DBObject.class, "fs.files");
346+
if (dbObject != null) {
347+
return (List<String>) dbObject.get("genres");
348+
}
349+
return null;
350+
}
351+
352+
public Map<String, Integer> getGenresByUserId(String userId) {
353+
// 1. Lấy danh sách thumbnailId từ History
354+
List<String> thumbnailIds = getHistoryByUserId(userId);
355+
356+
Map<String, Integer> genreCounts = new LinkedHashMap<>();
357+
358+
// 2. Duyệt qua từng thumbnailId
359+
for (String thumbnailId : thumbnailIds) {
360+
try {
361+
// Lấy videoId từ thumbnailId
362+
String videoId = getVideoIdFromThumbnailId(thumbnailId);
363+
364+
// Lấy genres từ videoId
365+
List<String> genres = getGenresByVideoId(videoId);
366+
367+
// Đếm số lần xuất hiện của từng genre
368+
for (String genre : genres) {
369+
genreCounts.put(genre, genreCounts.getOrDefault(genre, 0) + 1);
370+
}
371+
} catch (Exception e) {
372+
// Nếu lỗi, ghi log và tiếp tục
373+
System.err.println("Error processing thumbnailId: " + thumbnailId + ", error: " + e.getMessage());
374+
}
375+
}
376+
377+
return genreCounts;
378+
}
379+
380+
381+
342382
//hanlde Report
343383
public void uploadReport(String videoId, String msg, String userId) {
344384
Report report = new Report(videoId, msg, userId);

0 commit comments

Comments
 (0)