From 4b70387ed560675eb2e5d902d8bda04254ad4738 Mon Sep 17 00:00:00 2001 From: Reeverflow Date: Fri, 6 Mar 2026 14:13:53 +0100 Subject: [PATCH] Separate function for downloading and file validation. This is now a rudimentary working version. --- .gitignore | 1 + .../controllers/VideoController.java | 2 +- .../video_downloader/entity/Video.java | 3 - .../repositories/CreatorRepository.java | 10 ++++ .../services/YTDLPService.java | 57 ++++++++++++++----- 5 files changed, 55 insertions(+), 18 deletions(-) create mode 100644 src/main/java/com/example/video_downloader/repositories/CreatorRepository.java diff --git a/.gitignore b/.gitignore index f7add27..1a63562 100644 --- a/.gitignore +++ b/.gitignore @@ -2,6 +2,7 @@ HELP.md target/ .mvn/wrapper/maven-wrapper.jar !**/src/main/**/target/ +downloads/ !**/src/test/**/target/ ### STS ### diff --git a/src/main/java/com/example/video_downloader/controllers/VideoController.java b/src/main/java/com/example/video_downloader/controllers/VideoController.java index 6d2d133..7850e91 100644 --- a/src/main/java/com/example/video_downloader/controllers/VideoController.java +++ b/src/main/java/com/example/video_downloader/controllers/VideoController.java @@ -65,7 +65,7 @@ public class VideoController { if(trigger.input) { ytdlpService.processPlaylist(); ytdlpService.validateVideos(); - System.out.println("Hello!"); + ytdlpService.downloadVideos(); } return statusCode; diff --git a/src/main/java/com/example/video_downloader/entity/Video.java b/src/main/java/com/example/video_downloader/entity/Video.java index 4ddc5bf..29dd230 100644 --- a/src/main/java/com/example/video_downloader/entity/Video.java +++ b/src/main/java/com/example/video_downloader/entity/Video.java @@ -39,7 +39,4 @@ public class Video { @JoinColumn(name = "creator_id") private Creator creator; - - public void setCreator(String part) { - } } diff --git a/src/main/java/com/example/video_downloader/repositories/CreatorRepository.java b/src/main/java/com/example/video_downloader/repositories/CreatorRepository.java new file mode 100644 index 0000000..7d13101 --- /dev/null +++ b/src/main/java/com/example/video_downloader/repositories/CreatorRepository.java @@ -0,0 +1,10 @@ +package com.example.video_downloader.repositories; + +import org.springframework.data.jpa.repository.JpaRepository; +import com.example.video_downloader.entity.Creator; + +import java.util.Optional; + +public interface CreatorRepository extends JpaRepository { + Optional findByName(String name); +} diff --git a/src/main/java/com/example/video_downloader/services/YTDLPService.java b/src/main/java/com/example/video_downloader/services/YTDLPService.java index fcd587b..e04e284 100644 --- a/src/main/java/com/example/video_downloader/services/YTDLPService.java +++ b/src/main/java/com/example/video_downloader/services/YTDLPService.java @@ -1,8 +1,10 @@ package com.example.video_downloader.services; +import com.example.video_downloader.entity.Creator; import com.example.video_downloader.entity.Playlist; import com.example.video_downloader.entity.StatusEnum; import com.example.video_downloader.entity.Video; +import com.example.video_downloader.repositories.CreatorRepository; import com.example.video_downloader.repositories.PlaylistRepository; import com.example.video_downloader.repositories.VideoRepository; import org.springframework.beans.factory.annotation.Autowired; @@ -10,8 +12,10 @@ import org.springframework.stereotype.Service; import org.springframework.web.client.HttpClientErrorException; import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; import java.util.List; -import java.util.Date; @Service public class YTDLPService { @@ -28,6 +32,9 @@ public class YTDLPService { @Autowired private ProcessService processService; + @Autowired + private CreatorRepository creatorRepository; + public void processPlaylist() throws IOException, InterruptedException { List playlists = playlistRepository.findByStatus(StatusEnum.NEW); @@ -53,29 +60,51 @@ public class YTDLPService { String data = processVideo(video.getUrl()); String[] parts = data.trim().split(", "); video.setName(parts[0]); - video.setCreator(parts[1]); video.setUploadDate(parts[2]); video.setDuration(parts[3]); + + String creatorName = parts[1]; + String creatorUrl = parts[4]; + + Creator creator = creatorRepository + .findByName(creatorName) + .orElseGet(() -> { + Creator newCreator = new Creator(); + newCreator.setName(creatorName); + newCreator.setUrl(creatorUrl); + return creatorRepository.save(newCreator); + }); + video.setCreator(creator); videoRepository.save(video); } } -// Path filePath = Paths.get("downloads/" + video.getId() + ".webm"); -// if(Files.exists(filePath) && Files.isRegularFile(filePath)) { -// System.out.println("Apparently it exists mate."); -// video.setFullPath(String.valueOf(filePath)); -// video.setStatus(StatusEnum.SAVED); -// } else { -// System.out.println("Download failed."); -// video.setStatus(StatusEnum.FAILED); -// } + + public void downloadVideos() throws IOException, InterruptedException { + List