From e5210a8c889af4a2300faf9eae97fff4d2fbce4e Mon Sep 17 00:00:00 2001 From: Robert Vokac Date: Fri, 27 Dec 2024 17:01:38 +0100 Subject: [PATCH] Changes, improvements and fixes --- .../utils/youtubedlfrontend/Main.java | 11 ++-- .../youtubedlfrontend/YoutubeVideoHtml.java | 50 +++++++++++++------ 2 files changed, 41 insertions(+), 20 deletions(-) diff --git a/src/main/java/com/openeggbert/utils/youtubedlfrontend/Main.java b/src/main/java/com/openeggbert/utils/youtubedlfrontend/Main.java index e70af39..13f1dc2 100755 --- a/src/main/java/com/openeggbert/utils/youtubedlfrontend/Main.java +++ b/src/main/java/com/openeggbert/utils/youtubedlfrontend/Main.java @@ -47,8 +47,8 @@ public class Main { if (args.length < 1) { //System.err.println("At least one argument is expected, but the count of arguments is: " + args.length + "."); - String argsS = "/rv/blupi/archivebox --video_ 7qKUtn76q30 --always-generate-metadata 0" - + " --always-generate-html-files 1 --videos-per-row 4 --thumbnail-links-to-youtube 1" + String argsS = "/rv/blupi/archivebox --video_ 5rGd2VQz3mo --always-generate-metadata 0" + + " --always-generate-html-files 1 --videos-per-row 4 --thumbnail-links-to-youtube 0" + " --thumbnail-as-base64 1" + " --channel_ UCqBpgfXap7cZOYkAC34u8Lg "; args = argsS.split(" "); @@ -150,6 +150,7 @@ public class Main { iii = 0; internalStaticVariableVideoNumberPerRow = 0; oneChannelStringBuilder.append("\n"); + long countOfVideosInChannel = youtubeVideos.stream().filter(v -> channel.equals(v.getChannelName())).count(); youtubeVideos.stream().filter(v -> channel.equals(v.getChannelName())).forEach(youtubeVideo -> { iii++; if (internalStaticVariableVideoNumberPerRow == 0) { @@ -209,8 +210,10 @@ public class Main { if (!videoHtmlFile.exists() || argsInstance.getBoolean(ArgType.ALWAYS_GENERATE_HTML_FILES).get()) { { - String singleVideo = new YoutubeVideoHtml(youtubeVideo, archiveBoxRootDirectory, archiveBoxArchiveDirectory).toString(); + String singleVideo = new YoutubeVideoHtml(youtubeVideo, archiveBoxRootDirectory, archiveBoxArchiveDirectory, countOfVideosInChannel).toString(); Utils.writeTextToFile(singleVideo, videoHtmlFile); + processedVideos++; + System.out.println("Processed " + processedVideos + " from " + archiveBoxArchiveDirectory.list().length); } } }); @@ -229,6 +232,6 @@ public class Main { return oneChannelStringBuilder; } - + private static int processedVideos = 0; } diff --git a/src/main/java/com/openeggbert/utils/youtubedlfrontend/YoutubeVideoHtml.java b/src/main/java/com/openeggbert/utils/youtubedlfrontend/YoutubeVideoHtml.java index f8586f2..d643039 100644 --- a/src/main/java/com/openeggbert/utils/youtubedlfrontend/YoutubeVideoHtml.java +++ b/src/main/java/com/openeggbert/utils/youtubedlfrontend/YoutubeVideoHtml.java @@ -21,6 +21,8 @@ package com.openeggbert.utils.youtubedlfrontend; import java.io.File; import java.io.UnsupportedEncodingException; +import java.net.URI; +import java.net.URISyntaxException; import java.net.URLEncoder; import java.nio.charset.StandardCharsets; import java.util.Date; @@ -35,7 +37,7 @@ public class YoutubeVideoHtml { @Getter private String singleVideo; - public YoutubeVideoHtml(YoutubeVideo youtubeVideo, File archiveBoxRootDirectory, File archiveBoxArchiveDirectory) { + public YoutubeVideoHtml(YoutubeVideo youtubeVideo, File archiveBoxRootDirectory, File archiveBoxArchiveDirectory, long countOfVideosInChannel) { StringBuilder videoHtml = new StringBuilder(""" @@ -62,9 +64,11 @@ public class YoutubeVideoHtml { videoHtml.append("
\n
\n"); videoHtml.append(""); videoHtml.append(finalUrl).append("").append("
\n"); + String videoLocalFileEncoded = null; String videoLocalUrl = ""; try { - videoLocalUrl = "file:///" + archiveBoxRootDirectory.getAbsolutePath() + "/archive/" + youtubeVideo.getSnapshot() + "/media/" + URLEncoder.encode(youtubeVideo.getVideoFileName(), StandardCharsets.UTF_8.toString()).replace("+", "%20"); + videoLocalFileEncoded = URLEncoder.encode(youtubeVideo.getVideoFileName(), StandardCharsets.UTF_8.displayName()).replace("+", "%20").replace("#", "%23"); + videoLocalUrl = "file:///" + archiveBoxRootDirectory.getAbsolutePath() + "/archive/" + youtubeVideo.getSnapshot() + "/media/" + videoLocalFileEncoded; } catch (UnsupportedEncodingException ex) { throw new YoutubedlFrontendException(ex.getMessage()); } @@ -72,11 +76,22 @@ public class YoutubeVideoHtml { //try { videoHtml.append("
"""); @@ -92,26 +107,29 @@ public class YoutubeVideoHtml { .append(youtubeVideo.getThumbnailFormat()) .append("\">
\n"); } - videoHtml.append("").append(youtubeVideo.getTitle()).append(""); + videoHtml.append("").append(youtubeVideo.getTitle()).append(""); videoHtml.append("
\n
\n"); videoHtml.append("#").append(youtubeVideo.getNumber()).append("   "); - if (youtubeVideo.getPreviousVideoId() != null) { + boolean backEnabled = youtubeVideo.getNumber() > 1 && youtubeVideo.getPreviousVideoId() != null; + + { // videoHtml.append(""); -videoHtml.append(" - } + videoHtml.append("Back"); - if (youtubeVideo.getPreviousVideoId() != null) { //videoHtml.append(""); videoHtml.append(""); } videoHtml.append("   "); - if (youtubeVideo.getNextVideoId() != null) { + boolean nextEnabled = youtubeVideo.getNumber() < countOfVideosInChannel && youtubeVideo.getNextVideoId() != null; + + { //videoHtml.append(""); - videoHtml.append(""); @@ -121,7 +139,7 @@ videoHtml.append("