Skip to content

Commit

Permalink
version 1.5.0
Browse files Browse the repository at this point in the history
delete necessary doc folder of ffmpeg and add ClipboardListenOption
  • Loading branch information
awidesky committed Apr 28, 2021
1 parent ef6bfe1 commit 8d12d14
Show file tree
Hide file tree
Showing 5 changed files with 90 additions and 47 deletions.
3 changes: 3 additions & 0 deletions binarySetup.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,9 @@ foreach($d in $dirs) {
}
Remove-Item -Path ".\YoutubeAudioAutoDownloader-resources\ffmpeg.zip"

Remove-Item -Path '.\YoutubeAudioAutoDownloader-resources\ffmpeg\doc' -Recurse


Write-output " Downloading youtube-dl..."
Invoke-WebRequest -Uri "https://youtube-dl.org/downloads/latest/youtube-dl.exe" -OutFile '.\YoutubeAudioAutoDownloader-resources\ffmpeg\bin\youtube-dl.exe'

Expand Down
11 changes: 10 additions & 1 deletion src/com/awidesky/YoutubeClipboardAutoDownloader/ConfigDTO.java
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ public class ConfigDTO {
private static String quality;
private static PlayListOption playlistOption;
private static String fileNameFormat;
private static String clipboardListenOption;


public static String getSaveto() {
Expand Down Expand Up @@ -68,8 +69,16 @@ public static synchronized void setFileNameFormat(String fileNameFormat) {
ConfigDTO.fileNameFormat = fileNameFormat;
}

public static String getClipboardListenOption() {
return clipboardListenOption;
}

public static void setClipboardListenOption(String clipboardListenOption) {
ConfigDTO.clipboardListenOption = clipboardListenOption;
}

public static String status() {
return String.format(" properties :\n downloadpath-%s\n format-%s\n quality-%s\n playlistoption-%s\n filenameformat-%s", ConfigDTO.saveto, ConfigDTO.format, ConfigDTO.quality, ConfigDTO.playlistOption, ConfigDTO.fileNameFormat);
return String.format(" properties :\n downloadpath-%s\n format-%s\n quality-%s\n playlistoption-%s\n filenameformat-%s\n clipboardListenOption-%s", ConfigDTO.saveto, ConfigDTO.format, ConfigDTO.quality, ConfigDTO.playlistOption, ConfigDTO.fileNameFormat, ConfigDTO.clipboardListenOption);
}

}
101 changes: 57 additions & 44 deletions src/com/awidesky/YoutubeClipboardAutoDownloader/Main.java
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ public class Main {

private static volatile int taskNum = 0;

public static final String version = "v1.5.0";
public static final String version = "v1.5.5";

public static void main(String[] args) {

Expand Down Expand Up @@ -107,97 +107,106 @@ private static void setup(String[] args) throws Exception {
}

private static void checkClipBoard() {

clipChecker.submit(() -> { //To avoid overhead in EDT, put task in clipCheckerThread.

if (ConfigDTO.getClipboardListenOption().equals("Stop listening clipboard")) {
log("[debug] clipboard ignored due to ClipboardListenOption == \"Stop listening clipboard\"");
return;
}

clipChecker.submit(() -> { // To avoid overhead in EDT, put task in clipCheckerThread.

try {

Thread.sleep(50);
final String data = (String) Toolkit.getDefaultToolkit().getSystemClipboard().getData(DataFlavor.stringFlavor);
System.out.println("[debug] clipboard : " + data);

if(isRedundant(data)) return;

final String data = (String) Toolkit.getDefaultToolkit().getSystemClipboard()
.getData(DataFlavor.stringFlavor);

log("[debug] clipboard : " + data);

if (isRedundant(data)) return;
clipboardBefore = data;

if (!data.startsWith("https://www.youtu"))
return;

if (ConfigDTO.getClipboardListenOption().equals("Ask when a link is found")) {
if (!GUI.acceptLink(clipboardBefore))
return;
}


Arrays.stream(data.split("\n")).forEach(Main::submitDownload);

} catch (InterruptedException | HeadlessException | UnsupportedFlavorException | IOException e1) {

GUI.error("Error when checking clipboard!", "%e%", e1);

}
}

});

}

private static boolean isRedundant(String data) throws InterruptedException {

if (clipboardBefore.equals(data)) {

if (isSecondtime) { //second time finding same data

Thread.sleep(50);
clipboardBefore = ""; System.out.println("1" + data);

clipboardBefore = "";
} else {

isSecondtime = true; System.out.println("2" + data);

isSecondtime = true;
}

return true;

} else {
System.out.println("3" + data);
return false;

}

}

private static void submitDownload(String data) {

executorService.submit(() -> { //download worker thread

if (data.startsWith("https://www.youtu")) {
executorService.submit(() -> { // download worker thread

int num = taskNum++;
log("\n");
log("[Task" + num + "] " + "Received a link from your clipboard : " + data);
int num = taskNum++;
log("\n");
log("[Task" + num + "] " + "Received a link from your clipboard : " + data);

TaskData t = new TaskData(num);
t.setVideoName(data); // temporarily set video name as url
t.setDest(ConfigDTO.getSaveto());
t.setStatus("Validating...");
TaskStatusModel.getinstance().addTask(t);

String url = "\"" + data + "\"";

if (YoutubeAudioDownloader.validateAndSetName(url, t)) {
TaskData t = new TaskData(num);
t.setVideoName(data); // temporarily set video name as url
t.setDest(ConfigDTO.getSaveto());
t.setStatus("Validating...");
TaskStatusModel.getinstance().addTask(t);

t.setStatus("Preparing...");
String url = "\"" + data + "\"";

try {
if (YoutubeAudioDownloader.validateAndSetName(url, t)) {

YoutubeAudioDownloader.download(url, t);
t.setStatus("Preparing...");

} catch (Exception e1) {
try {

GUI.error("[Task" + num + "|downloading] " +"Error when downloading!", "%e%", e1);
return;
YoutubeAudioDownloader.download(url, t);

} catch (Exception e1) {

}

} else { GUI.error("[Task" + num + "|validating] " +"Not a valid url!", data + "\nis not valid or unsupported url!", null); return; }
GUI.error("[Task" + num + "|downloading] " + "Error when downloading!", "%e%", e1);
return;

}

} else {
GUI.error("[Task" + num + "|validating] " + "Not a valid url!",
data + "\nis not valid or unsupported url!", null);
return;
}

});
}


private static void prepareLogFile() {

try {
Expand Down Expand Up @@ -225,6 +234,7 @@ private static void readProperties() {
String q = "0";
String l = "--no-playlist";
String n = "%(title)s.%(ext)s";
String c = "Download link automatically";

try (BufferedReader br = new BufferedReader(new FileReader(new File(
YoutubeAudioDownloader.getProjectpath() + "\\YoutubeAudioAutoDownloader-resources\\config.txt")))) {
Expand All @@ -234,7 +244,8 @@ private static void readProperties() {
q = br.readLine().split("=")[1];
l = br.readLine().split("=")[1];
n = br.readLine().split("=")[1];

c = br.readLine().split("=")[1];

} catch (FileNotFoundException e1) {

GUI.warning("config.txt not exists!","%e%\nDon't worry! I'll make one later...", e1);
Expand All @@ -254,6 +265,7 @@ private static void readProperties() {
ConfigDTO.setQuality(q);
ConfigDTO.setPlaylistOption(l);
ConfigDTO.setFileNameFormat(n);
ConfigDTO.setClipboardListenOption(c);

Main.logProperties("Initial");

Expand Down Expand Up @@ -282,6 +294,7 @@ public static void writeProperties() {
bw.write("Quality=" + ConfigDTO.getQuality() + "\n");
bw.write("Playlist=" + ConfigDTO.getPlaylistOption().toComboBox() + "\n");
bw.write("FileNameFormat=" + ConfigDTO.getFileNameFormat() + "\n");
bw.write("ClipboardListenOption=" + ConfigDTO.getClipboardListenOption() + "\n");

Main.logProperties("Final");

Expand Down Expand Up @@ -328,7 +341,7 @@ public static ExecutorService getExecutorservice() {
* */
public static void kill(int exitcode) {

Main.log("YoutubeAudioAutoDownloader closed with exit code : " + exitcode);
Main.log("YoutubeAudioAutoDownloader exit code : " + exitcode);
Main.writeProperties();
System.exit(exitcode);

Expand Down
20 changes: 18 additions & 2 deletions src/com/awidesky/YoutubeClipboardAutoDownloader/gui/GUI.java
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ public class GUI {
private JButton browse, cleanCompleted, cleanAll, nameFormatHelp;
private JLabel format, quality, path, nameFormat, playList;
private JTextField pathField, nameFormatField;
private JComboBox<String> cb_format, cb_quality, cb_playList;
private JComboBox<String> cb_format, cb_quality, cb_playList, cb_clipboardOption;
private JFileChooser jfc = new JFileChooser();
private JTable table;
private JScrollPane scrollPane;
Expand Down Expand Up @@ -221,22 +221,29 @@ private void addComboBoxes() {
cb_format = new JComboBox<>(new String[] { "mp3", "best", "aac", "flac", "m4a", "opus", "vorbis", "wav" });
cb_quality = new JComboBox<>(new String[] { "0(best)", "1", "2", "3", "4", "5", "6", "7", "8", "9(worst)" });
cb_playList = new JComboBox<>(new String[] { "yes", "no" });

cb_clipboardOption = new JComboBox<>(new String[] { "Download link automatically",
"Ask when a link is found",
"Stop listening clipboard" });

cb_format.setSelectedItem(ConfigDTO.getFormat());
cb_quality.setSelectedIndex(Integer.parseInt(ConfigDTO.getQuality()));
cb_playList.setSelectedItem(ConfigDTO.getPlaylistOption().toComboBox());
cb_clipboardOption.setSelectedItem(ConfigDTO.getClipboardListenOption());

cb_format.addActionListener((e) -> { ConfigDTO.setFormat(cb_format.getSelectedItem().toString()); });
cb_quality.addActionListener((e) -> { ConfigDTO.setQuality(String.valueOf(cb_quality.getSelectedIndex())); });
cb_playList.addActionListener((e) -> { ConfigDTO.setPlaylistOption(cb_playList.getSelectedItem().toString()); });
cb_clipboardOption.addActionListener((e) -> {ConfigDTO.setClipboardListenOption(cb_clipboardOption.getSelectedItem().toString());});

cb_format.setBounds(83, 19, 96, 22);
cb_quality.setBounds(365, 19, 150, 22);
cb_playList.setBounds(518, 122, 90, 22);
cb_clipboardOption.setBounds(270, 418, 200, 22);

mainFrame.add(cb_format);
mainFrame.add(cb_quality);
mainFrame.add(cb_playList);
mainFrame.add(cb_clipboardOption);

}

Expand Down Expand Up @@ -339,5 +346,14 @@ public static void warning(String title, String content, Exception e) {

}

public static boolean acceptLink(String link) {

Main.log("\n"); ;
boolean result = (JOptionPane.showConfirmDialog(null, "Download link : " + link, "Download link in clipboard?", JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION) ? true : false;
Main.log("[GUI.linkAcceptChoose] Download link " + link + "? : " + result + "\n");

return result;

}

}
2 changes: 2 additions & 0 deletions windowLayout.fxml
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

<?import javafx.scene.control.Button?>
<?import javafx.scene.control.ChoiceBox?>
<?import javafx.scene.control.ComboBox?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.control.ScrollPane?>
<?import javafx.scene.control.TableColumn?>
Expand Down Expand Up @@ -41,5 +42,6 @@
<Label layoutX="389.0" layoutY="126.0" text="Download Playlist?" />
<ChoiceBox layoutX="499.0" layoutY="122.0" prefHeight="22.0" prefWidth="109.0" />
<Button layoutX="298.0" layoutY="122.0" mnemonicParsing="false" text="&lt;- help?" />
<ComboBox layoutX="241.0" layoutY="464.0" prefHeight="22.0" prefWidth="200.0" promptText="Download link automatically" />
</children>
</AnchorPane>

0 comments on commit 8d12d14

Please sign in to comment.