aboutsummaryrefslogtreecommitdiffstats
path: root/src/main
diff options
context:
space:
mode:
Diffstat (limited to 'src/main')
-rw-r--r--src/main/java/Downloader.java62
-rw-r--r--src/main/java/FileUtility.java52
-rw-r--r--src/main/java/Main.java6
3 files changed, 71 insertions, 49 deletions
diff --git a/src/main/java/Downloader.java b/src/main/java/Downloader.java
index b3087fc..3e5a87b 100644
--- a/src/main/java/Downloader.java
+++ b/src/main/java/Downloader.java
@@ -14,6 +14,7 @@ import java.io.File;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
+import java.util.Scanner;
public class Downloader {
private String outputDirectory;
@@ -48,12 +49,12 @@ public class Downloader {
System.out.println("Title: " + title);
tag.setField(FieldKey.ARTIST, uploader);
tag.setField(FieldKey.TITLE, title);
- fileUtil.downloadImage(imageUrl, "img.jpg", formats);
- Artwork cover = Artwork.createArtworkFromFile(new File("img.jpg"));
+ String pathToThumnail = fileUtil.downloadImage(imageUrl, "img.jpg", formats);
+ Artwork cover = Artwork.createArtworkFromFile(new File(pathToThumnail));
tag.addField(cover);
f.commit();
- fileUtil.deleteFile("img.jpg");
- }
+ fileUtil.deleteFile(pathToThumnail);
+ }
catch(Exception e){
JOptionPane.showMessageDialog(
null,
@@ -108,7 +109,7 @@ public class Downloader {
"--write-info-json",
url
);
- builder.directory(new File(outputDirectory));
+ builder.directory(new File(System.getProperty("user.dir")));
builder.redirectErrorStream(true);
Process p = builder.start();
relayConsole(p);
@@ -116,7 +117,7 @@ public class Downloader {
JOptionPane.showMessageDialog(null, "An error occurred while downloading using yt-dlp: " + e.getMessage(), "Error", JOptionPane.ERROR_MESSAGE);
e.printStackTrace();
}
- File downloadedWebm = fileUtil.findFileWithType(outputDirectory, "webm");
+ File downloadedWebm = fileUtil.findFileWithType(System.getProperty("user.dir"), "webm");
try{
ProcessBuilder builder = new ProcessBuilder(
@@ -128,7 +129,7 @@ public class Downloader {
"-y",
downloadedWebm.getAbsolutePath().replace(".webm", ".mp3")
);
- builder.directory(new File(outputDirectory));
+ builder.directory(new File(System.getProperty("user.dir")));
builder.redirectErrorStream(true);
Process p = builder.start();
relayConsole(p);
@@ -137,25 +138,20 @@ public class Downloader {
JOptionPane.showMessageDialog(null, "An error occurred while converting the webm file to mp3: " + e.getMessage(), "Error", JOptionPane.ERROR_MESSAGE);
}
- String info[] = fileUtil.parseInfoJSON(fileUtil.jsonToString(fileUtil.findJsonFile(outputDirectory)));
+ String info[] = fileUtil.parseInfoJSON(fileUtil.jsonToString(fileUtil.findJsonFile(System.getProperty("user.dir"))));
String uploader = info[1];
String title = info[0];
String urlID = info[2];
String imageUrl = "https://img.youtube.com/vi/" + urlID+"/";
-
- if (removeNonAlphaNumeric) {
- String newTitle = fileUtil.removeNonAlphaNumeric(title);
- String newUploader = fileUtil.removeNonAlphaNumeric(uploader);
- String newFileName = newTitle + "_" + newUploader + "_"+stamp+".mp3";
- File oldFile = new File(outputDirectory + "/" + title + "[" + urlID + "].mp3");
- File newFile = new File(outputDirectory + "/" + newFileName);
- oldFile.renameTo(newFile);
- }
- tagMp3InDir(uploader, title, imageUrl, outputDirectory);
+ File downloadedMp3 = fileUtil.findFileWithType(System.getProperty("user.dir"), "mp3");
+ String savedNonAlphaNumName = downloadedMp3.getName();
+ String tempRemoveAlphaNumeric = savedNonAlphaNumName.replaceAll("[^a-zA-Z0-9]", "") + ".mp3";
+ downloadedMp3.renameTo(new File(tempRemoveAlphaNumeric));
+ tagMp3InDir(uploader, title, imageUrl, System.getProperty("user.dir"));
fileUtil.deleteFile(downloadedWebm.getAbsolutePath());
- fileUtil.deleteFile(fileUtil.findJsonFile(outputDirectory));
- File downloadedMp3 = fileUtil.findFileWithType(outputDirectory, "mp3");
- downloadedMp3.renameTo(new File(outputDirectory+"/"+downloadedMp3.getName()));
+ fileUtil.deleteFile(fileUtil.findJsonFile(System.getProperty("user.dir")));
+ downloadedMp3 = fileUtil.findFileWithType(System.getProperty("user.dir"), "mp3");
+ downloadedMp3.renameTo(new File(outputDirectory+"/"+savedNonAlphaNumName));
return true;
}
@@ -164,7 +160,7 @@ public class Downloader {
try {
String[] command = {ytDlpExecutable, "-f", "bestaudio[ext=webm]", "-x", "--audio-format", "mp3", "--write-info-json", url, "-o", "%(title)s[%(id)s].%(ext)s"};
ProcessBuilder processBuilder = new ProcessBuilder(command);
- processBuilder.directory(new File(outputDirectory));
+ processBuilder.directory(new File(System.getProperty("user.dir")));
Process process = processBuilder.start();
relayConsole(process);
process.waitFor();
@@ -175,22 +171,20 @@ public class Downloader {
"ERROR", JOptionPane.ERROR_MESSAGE);
return false;
}
- String info[] = fileUtil.parseInfoJSON(fileUtil.jsonToString(fileUtil.findJsonFile(outputDirectory)));
+ String info[] = fileUtil.parseInfoJSON(fileUtil.jsonToString(fileUtil.findJsonFile(System.getProperty("user.dir"))));
String uploader = info[1];
String title = info[0];
String urlID = info[2];
String imageUrl = "https://img.youtube.com/vi/" + urlID + "/";
-
- if (removeNonAlphaNumeric) {
- String newTitle = fileUtil.removeNonAlphaNumeric(title);
- String newUploader = fileUtil.removeNonAlphaNumeric(uploader);
- String newFileName = newTitle + "_" + newUploader + ".mp3";
- File oldFile = new File(outputDirectory + "/" + title + "[" + urlID + "].mp3");
- File newFile = new File(outputDirectory + "/" + newFileName);
- oldFile.renameTo(newFile);
- }
- fileUtil.deleteFile(fileUtil.findJsonFile(outputDirectory));
- tagMp3InDir(uploader, title, imageUrl, outputDirectory);
+ File downloadedMp3 = fileUtil.findFileWithType(System.getProperty("user.dir"), "mp3");
+ String savedNonAlphaNumName = downloadedMp3.getName();
+ String tempRemoveAlphaNumeric = savedNonAlphaNumName.replaceAll("[^a-zA-Z0-9]", "") + ".mp3";
+ downloadedMp3.renameTo(new File(tempRemoveAlphaNumeric));
+ System.out.println("File renamed to: " + tempRemoveAlphaNumeric);
+ fileUtil.deleteFile(fileUtil.findJsonFile(System.getProperty("user.dir")));
+ tagMp3InDir(uploader, title, imageUrl, System.getProperty("user.dir"));
+ downloadedMp3 = fileUtil.findFileWithType(System.getProperty("user.dir"), "mp3");
+ downloadedMp3.renameTo(new File(outputDirectory+"/"+savedNonAlphaNumName));
return true;
}
diff --git a/src/main/java/FileUtility.java b/src/main/java/FileUtility.java
index ba0a4f2..526cf00 100644
--- a/src/main/java/FileUtility.java
+++ b/src/main/java/FileUtility.java
@@ -5,6 +5,9 @@ import javax.swing.*;
import javax.swing.filechooser.FileNameExtensionFilter;
import java.io.*;
import java.net.URL;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
@@ -22,29 +25,48 @@ public class FileUtility {
}
}
- public void downloadImage(String url, String fileName,String[] formats) {
+ public void deleteALlFileOfType(String path, String fileExt){
+ File folder = new File(path);
+ File[] listOfFiles = folder.listFiles();
+ for(int i=0;i<listOfFiles.length;i++){
+ if(listOfFiles[i].isFile()){
+ if(listOfFiles[i].getName().endsWith(fileExt)){
+ listOfFiles[i].delete();
+ }
+ }
+ }
+ }
+
+ public String downloadImage(String url, String fileName,String[] formats) {
boolean successfulDownload = false;
int formatIndex = 0;
+ String pathToImage = "";
while(!successfulDownload) {
System.out.println("Attempting to download image at: " + url+formats[formatIndex]);
- try {
- FileOutputStream fos = new FileOutputStream(fileName);
- URL urlObj = new URL(url+formats[formatIndex]);
- InputStream is = urlObj.openStream();
- byte[] b = new byte[2048];
- int length;
- while ((length = is.read(b)) != -1) {
- fos.write(b, 0, length);
+ // attempt to download image
+ for (int i = 0; i < 3; i++) {
+ try {
+ URL imageUrl = new URL(url + formats[formatIndex]);
+ InputStream in = imageUrl.openStream();
+ Path path = Paths.get(fileName);
+ OutputStream out = new BufferedOutputStream(Files.newOutputStream(path));
+ for (int b; (b = in.read()) != -1; ) {
+ out.write(b);
+ }
+ out.close();
+ in.close();
+ successfulDownload = true;
+ pathToImage = path.toAbsolutePath().toString();
+ break;
+ } catch (Exception e) {
+ System.out.println("Failed to download image at: " + url+formats[formatIndex]);
+ System.out.println("Retrying...");
}
- fos.close();
- is.close();
- successfulDownload = true;
- } catch (Exception e) {
- formatIndex++;
}
+
}
System.out.println("Image downloaded");
-
+ return pathToImage;
}
public String removeBlacklist(String s, String filename){
diff --git a/src/main/java/Main.java b/src/main/java/Main.java
index bc85b9f..7474de4 100644
--- a/src/main/java/Main.java
+++ b/src/main/java/Main.java
@@ -226,6 +226,10 @@ public class Main extends JFrame {
startButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
+ FileUtility fileUtility = new FileUtility();
+ fileUtility.deleteALlFileOfType(System.getProperty("user.dir"), "webm");
+ fileUtility.deleteALlFileOfType(System.getProperty("user.dir"), "json");
+ fileUtility.deleteALlFileOfType(System.getProperty("user.dir"), "mp3");
if (readyState == false) {
outputArea.setText(outputArea.getText() + "\n" + "txt path has not been set. Launching chooserPane");
System.out.println(".txt path has not been set. Launching chooserPane");
@@ -246,6 +250,8 @@ public class Main extends JFrame {
FileWriter fw = new FileWriter(file);
fw.write(textPath);
fw.close();
+
+
System.out.println("Ready to begin downloading. Press the button");
}
} catch (Exception ex) {
send patches to the email below
yukais@pinapelz.com
include the subject [PATCH repo_name]
pinapelz.com
homepage