From f1402e94fc814a402b5c156e7197b2e11d9f325c Mon Sep 17 00:00:00 2001 From: Donald Shan Date: Mon, 22 Aug 2022 13:35:24 -0700 Subject: Manual Tagging Improved - Added the ability to manually change album art - Moved UI initialization code to bottom of file --- src/main/java/FileUtility.java | 14 ++++ src/main/java/Main.java | 142 ++++++++++++++++++------------------- src/main/java/TagEditorScreen.form | 2 +- src/main/java/TagEditorScreen.java | 38 ++++++++-- 4 files changed, 118 insertions(+), 78 deletions(-) diff --git a/src/main/java/FileUtility.java b/src/main/java/FileUtility.java index cc0dffb..73178ae 100644 --- a/src/main/java/FileUtility.java +++ b/src/main/java/FileUtility.java @@ -118,6 +118,20 @@ public class FileUtility { } } } + + public static String showImageFileChooser() { + javax.swing.JFileChooser chooser = new javax.swing.JFileChooser(); + FileNameExtensionFilter filter = new FileNameExtensionFilter("JPEG Image File", "jpg", "jpeg"); + chooser.setFileFilter(filter); + chooser.setDialogTitle("Select a image file"); + chooser.setFileSelectionMode(javax.swing.JFileChooser.FILES_ONLY); + chooser.setAcceptAllFileFilterUsed(false); + if (chooser.showOpenDialog(null) == javax.swing.JFileChooser.APPROVE_OPTION) { + return chooser.getSelectedFile().getAbsolutePath(); + } else { + return null; + } + } public static ArrayList txtToArrayList(String fileName) { ArrayList lines = new ArrayList(); try { diff --git a/src/main/java/Main.java b/src/main/java/Main.java index 05edb94..c324ccd 100644 --- a/src/main/java/Main.java +++ b/src/main/java/Main.java @@ -22,7 +22,7 @@ public class Main extends JFrame { JProgressBar progressBar = new JProgressBar(); JLabel title = new JLabel("YouTube to MP3 Auto Tagging"); JButton startButton = new JButton("Set .txt File"); - static JTextArea outputArea = new JTextArea("this is bery bery bery safe no worries no virus malwar ur monies back granteed"); + static JTextArea outputArea = new JTextArea(""); public Main(){ initializeComponents(); @@ -33,6 +33,75 @@ public class Main extends JFrame { new Main().setVisible(true); } + private void downloadAndTag(){ //Main loop ran for checking list of songs, downloading mp3 files, and applying tags + ArrayList songs = fileUtil.txtToArrayList(textPath); + progress = 0; + for(int i = 0;i songs = fileUtil.txtToArrayList(textPath); - progress = 0; - for(int i = 0;i - + diff --git a/src/main/java/TagEditorScreen.java b/src/main/java/TagEditorScreen.java index d964b28..764404c 100644 --- a/src/main/java/TagEditorScreen.java +++ b/src/main/java/TagEditorScreen.java @@ -9,8 +9,6 @@ import javax.swing.table.DefaultTableModel; import java.awt.*; import java.awt.event.*; import java.awt.image.BufferedImage; -import java.awt.image.CropImageFilter; -import java.awt.image.FilteredImageSource; import java.io.File; import java.io.IOException; import java.util.ArrayList; @@ -21,7 +19,7 @@ public class TagEditorScreen extends JFrame{ private JLabel titleLabel; private JTextField uploaderField; private JLabel uploaderLabel; - private JTextField textField1; + private JTextField imagePathField; private JButton imageChooseButton; private JTable songTable; private JButton chooseAudioDirectoryButton; @@ -30,8 +28,10 @@ public class TagEditorScreen extends JFrame{ private JTextField textField2; private FileUtility fileUtil = new FileUtility(); private String setDirPath = ""; + private String selectedAlbumArt = ""; private ArrayList songList = new ArrayList(); private String currPath = ""; + private Boolean imageSelected = false; public TagEditorScreen(){ this.setContentPane(mainPanel); @@ -58,8 +58,7 @@ public class TagEditorScreen extends JFrame{ super.mouseClicked(e); populateFields(new File(songTable.getModel().getValueAt(songTable.getSelectedRow(),2 ).toString())); currPath = songTable.getModel().getValueAt(songTable.getSelectedRow() , 2).toString(); - - + imageSelected = false; } }); songTable.addKeyListener(new KeyAdapter() { @@ -70,6 +69,7 @@ public class TagEditorScreen extends JFrame{ try { populateFields(new File(songTable.getModel().getValueAt(songTable.getSelectedRow() + 1, 2).toString())); currPath = songTable.getModel().getValueAt(songTable.getSelectedRow() + 1, 2).toString(); + imageSelected = false; } catch(Exception ex){ @@ -79,6 +79,7 @@ public class TagEditorScreen extends JFrame{ try { populateFields(new File(songTable.getModel().getValueAt(songTable.getSelectedRow() - 1, 2).toString())); currPath = songTable.getModel().getValueAt(songTable.getSelectedRow() - 1, 2).toString(); + imageSelected = false; } catch(Exception ex){ @@ -95,6 +96,12 @@ public class TagEditorScreen extends JFrame{ Tag tag = f.getTag(); tag.setField(FieldKey.TITLE, titleField.getText()); tag.setField(FieldKey.ARTIST, uploaderField.getText()); + if(imageSelected){ + tag.deleteArtworkField(); + Artwork cover = Artwork.createArtworkFromFile(new File(selectedAlbumArt)); + tag.addField(cover); + System.out.println("Changed the Artwork"); + } f.commit(); clearSongTable(); songList = fileUtil.getMp3Files(setDirPath); //get arraylist of all files in the directory @@ -108,6 +115,26 @@ public class TagEditorScreen extends JFrame{ } }); + imageChooseButton.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + try { + selectedAlbumArt = fileUtil.showImageFileChooser(); + File selectedFile = new File(selectedAlbumArt); + BufferedImage selectedImage = null; + selectedImage = ImageIO.read(selectedFile); + ImageIcon albumArtIcon = new ImageIcon(resizeImage(selectedImage, 260, 180)); + artIconLabel.setText(selectedFile.getName()); + artIconLabel.setIcon(albumArtIcon); + imageSelected = true; + + } + catch(Exception ex){ + + } + + } + }); } public void initializeTable(){ songTable.setDefaultEditor(Object.class, null); @@ -139,6 +166,7 @@ public class TagEditorScreen extends JFrame{ Artwork albumArt = tag.getFirstArtwork(); ImageIcon albumArtIcon = new ImageIcon(resizeImage(albumArt.getImage(),320,180)); artIconLabel.setIcon(albumArtIcon); + artIconLabel.setText(""); } -- cgit v1.2.3