diff --git a/pom.xml b/pom.xml index 4c5fcd6..6b587ef 100644 --- a/pom.xml +++ b/pom.xml @@ -67,6 +67,12 @@ spring-boot-starter-webmvc-test test + + org.jetbrains + annotations + 26.1.0 + compile + 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 c605c2c..6d2d133 100644 --- a/src/main/java/com/example/video_downloader/controllers/VideoController.java +++ b/src/main/java/com/example/video_downloader/controllers/VideoController.java @@ -8,6 +8,7 @@ import com.example.video_downloader.services.PlaylistService; import com.example.video_downloader.services.VideoService; import com.example.video_downloader.services.YTDLPService; import lombok.Data; +import org.jetbrains.annotations.NotNull; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; @@ -58,13 +59,13 @@ public class VideoController { } @PostMapping(path = "/fire") - public int getJobDone(@RequestBody Trigger trigger) throws IOException, InterruptedException { + public int getJobDone(@RequestBody @NotNull Trigger trigger) throws IOException, InterruptedException { int statusCode = 200; if(trigger.input) { ytdlpService.processPlaylist(); - System.out.println("Hello!"); ytdlpService.validateVideos(); + System.out.println("Hello!"); } return statusCode; diff --git a/src/main/java/com/example/video_downloader/entity/Playlist.java b/src/main/java/com/example/video_downloader/entity/Playlist.java index e9ddd3d..b3b7b32 100644 --- a/src/main/java/com/example/video_downloader/entity/Playlist.java +++ b/src/main/java/com/example/video_downloader/entity/Playlist.java @@ -4,7 +4,6 @@ import jakarta.persistence.*; import lombok.Data; import lombok.ToString; -import java.util.ArrayList; import java.util.List; @Data 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 d1e87dd..4ddc5bf 100644 --- a/src/main/java/com/example/video_downloader/entity/Video.java +++ b/src/main/java/com/example/video_downloader/entity/Video.java @@ -5,6 +5,7 @@ import lombok.Data; import lombok.ToString; import java.util.ArrayList; +import java.util.Date; import java.util.List; @Data @@ -18,8 +19,8 @@ public class Video { private String url; private String name; - private String ytdl; - private String ytMetaData; + private String uploadDate; + private String duration; @Enumerated(EnumType.STRING) private StatusEnum status; 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 e698018..fcd587b 100644 --- a/src/main/java/com/example/video_downloader/services/YTDLPService.java +++ b/src/main/java/com/example/video_downloader/services/YTDLPService.java @@ -10,8 +10,8 @@ import org.springframework.stereotype.Service; import org.springframework.web.client.HttpClientErrorException; import java.io.IOException; -import java.util.ArrayList; import java.util.List; +import java.util.Date; @Service public class YTDLPService { @@ -31,9 +31,9 @@ public class YTDLPService { public void processPlaylist() throws IOException, InterruptedException { List playlists = playlistRepository.findByStatus(StatusEnum.NEW); - + System.out.println("Am I slow?"); for(Playlist playlist : playlists) { - String urls = processService.execute("yt-dlp", "--flat-playlist", "--print", "webpage_url", playlist.getUrl()); + String urls = processService.execute("yt-dlp", "--force-ipv4", "--flat-playlist", "--print", "webpage_url", playlist.getUrl()); for(String url : urls.split("\\n")){ Video video = new Video(); video.setUrl(url); @@ -52,8 +52,10 @@ public class YTDLPService { for(Video video : response) { String data = processVideo(video.getUrl()); String[] parts = data.trim().split(", "); - video.setName(parts[0]); - video.setCreator(parts[1]); + video.setName(parts[0]); + video.setCreator(parts[1]); + video.setUploadDate(parts[2]); + video.setDuration(parts[3]); videoRepository.save(video); } } @@ -68,12 +70,12 @@ public class YTDLPService { // } public String processVideo(String url) throws HttpClientErrorException, InterruptedException, IOException { - String result = processService.execute("yt-dlp", "--skip-download", "--print", "%(title)s, %(uploader)s, %(upload_date)s, %(duration_string)s", url); + String result = processService.execute("yt-dlp", "--force-ipv4", "--skip-download", "--print", "%(title)s, %(uploader)s, %(upload_date)s, %(duration_string)s", url); return result; } public void downloadVideo(String url, Long id) throws HttpClientErrorException, InterruptedException, IOException { String outputPath = "downloads/" + id + ".%(ext)s"; - String result = processService.execute("yt-dlp", "--print", "%(title)s, %(uploader)s, %(upload_date)s, %(duration_string)s", outputPath, url); + String result = processService.execute("yt-dlp", "--force-ipv4", "--print", "%(title)s, %(uploader)s, %(upload_date)s, %(duration_string)s", outputPath, url); System.out.println(result); } diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 06e2e81..cc208ff 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -1,5 +1,5 @@ spring.application.name=video_downloader -spring.datasource.url = jdbc:postgresql://localhost:5432/videos +spring.datasource.url = jdbc:postgresql://127.0.0.1:5432/videos spring.datasource.username = postgres spring.datasource.password = 5995 spring.jpa.hibernate.ddl-auto = create-drop \ No newline at end of file