From b80a2cced1dbbb399761548360ec4d425c51144b Mon Sep 17 00:00:00 2001 From: Adamantcheese Date: Tue, 19 May 2015 23:33:44 -0700 Subject: [PATCH] Removed JUnit, as it isn't needed. Removed icon.ico, as it is never used. Minor updates and bugfixes as I tried to build this shit, which still doesn't work outside the IDE. --- .../Maven__commons_io_commons_io_2_4.xml | 8 +--- .idea/libraries/Maven__junit_junit_4_12.xml | 13 ------ .../Maven__org_hamcrest_hamcrest_core_1_3.xml | 13 ------ .../Maven__org_jsoup_jsoup_1_8_1.xml | 8 +--- BCPlayer.iml | 3 -- META-INF/MANIFEST.MF | 5 +++ icon.ico | Bin 370070 -> 0 bytes pom.xml | 6 --- src/main/java/Main.java | 19 +++++---- src/main/java/boot/Constants.java | 37 ++++++------------ src/main/java/boot/Controller.java | 4 +- src/main/java/constructs/PlayerContainer.java | 11 ++++-- src/main/java/constructs/TrackContainer.java | 7 +++- src/main/java/objects/Track.java | 4 +- 14 files changed, 51 insertions(+), 87 deletions(-) delete mode 100644 .idea/libraries/Maven__junit_junit_4_12.xml delete mode 100644 .idea/libraries/Maven__org_hamcrest_hamcrest_core_1_3.xml create mode 100644 META-INF/MANIFEST.MF delete mode 100644 icon.ico diff --git a/.idea/libraries/Maven__commons_io_commons_io_2_4.xml b/.idea/libraries/Maven__commons_io_commons_io_2_4.xml index bc2aad0..dfb25c4 100644 --- a/.idea/libraries/Maven__commons_io_commons_io_2_4.xml +++ b/.idea/libraries/Maven__commons_io_commons_io_2_4.xml @@ -3,11 +3,7 @@ - - - - - - + + \ No newline at end of file diff --git a/.idea/libraries/Maven__junit_junit_4_12.xml b/.idea/libraries/Maven__junit_junit_4_12.xml deleted file mode 100644 index d411041..0000000 --- a/.idea/libraries/Maven__junit_junit_4_12.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/libraries/Maven__org_hamcrest_hamcrest_core_1_3.xml b/.idea/libraries/Maven__org_hamcrest_hamcrest_core_1_3.xml deleted file mode 100644 index f58bbc1..0000000 --- a/.idea/libraries/Maven__org_hamcrest_hamcrest_core_1_3.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/libraries/Maven__org_jsoup_jsoup_1_8_1.xml b/.idea/libraries/Maven__org_jsoup_jsoup_1_8_1.xml index 90eb1bc..02c3e2f 100644 --- a/.idea/libraries/Maven__org_jsoup_jsoup_1_8_1.xml +++ b/.idea/libraries/Maven__org_jsoup_jsoup_1_8_1.xml @@ -3,11 +3,7 @@ - - - - - - + + \ No newline at end of file diff --git a/BCPlayer.iml b/BCPlayer.iml index f26dec9..bc4b38e 100644 --- a/BCPlayer.iml +++ b/BCPlayer.iml @@ -6,13 +6,10 @@ - - - diff --git a/META-INF/MANIFEST.MF b/META-INF/MANIFEST.MF new file mode 100644 index 0000000..3c7bfd7 --- /dev/null +++ b/META-INF/MANIFEST.MF @@ -0,0 +1,5 @@ +Manifest-Version: 1.0 +Class-Path: lib/jsoup-1.8.1.jar lib/jlayer-1.0.1-1.jar lib/commons-io- + 2.4.jar BCPlayer.jar +Main-Class: Main + diff --git a/icon.ico b/icon.ico deleted file mode 100644 index e964373e4fd2be92fd29ecf79ae6a6f7ac74186f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 370070 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 b$OH0#JRlFq1M+}8AP>j`@_;;0dJp^;VlSB1 diff --git a/pom.xml b/pom.xml index 20b5661..5ca6e14 100644 --- a/pom.xml +++ b/pom.xml @@ -9,12 +9,6 @@ 1.0.0 - - junit - junit - 4.12 - - commons-io commons-io diff --git a/src/main/java/Main.java b/src/main/java/Main.java index 649e969..2b20b52 100644 --- a/src/main/java/Main.java +++ b/src/main/java/Main.java @@ -10,6 +10,7 @@ import org.apache.commons.io.FilenameUtils; import tools.AlbumListUpdater; +import java.io.File; import java.io.PrintWriter; import java.util.Scanner; @@ -35,7 +36,7 @@ public void handle (WindowEvent event) { } public static void writeTrackFile () throws Exception { - Scanner tempScanner = new Scanner(Constants.getInternalTrackFile()); + Scanner tempScanner = new Scanner(new File(Main.class.getResource("tracks.nll").toURI())); PrintWriter tempWriter = new PrintWriter(Constants.TRACK_FILE); while (tempScanner.hasNextLine()) { tempWriter.println(tempScanner.nextLine()); @@ -45,8 +46,11 @@ public static void writeTrackFile () throws Exception { } public static void main (String[] args) throws Exception { + boolean forceUpdate = false; //If the user specified a file, make sure it has the right extension - if (args.length == 1 && FilenameUtils.getExtension(args[0]) != "nll") { + if(args.length == 1 && args[0].equals("--forcelist")) { + forceUpdate = true; + } else if (args.length == 1 && FilenameUtils.getExtension(args[0]) != "nll") { System.err.println("File should have extension nll, with one URL per line."); return; } @@ -59,21 +63,20 @@ public static void main (String[] args) throws Exception { //Copy the internal track file to the temp directory, or expand the one specified to the temp directory if (!Constants.TRACK_FILE.exists()) { if (args.length == 1) { - System.out.println("Warning: The operation may take upwards of 30 minutes to finish, do you want to continue? (Y/N)"); + System.out.println("Warning: The operation may take a while to finish, do you want to continue? (Y/N)"); Scanner keyboard = new Scanner(System.in); String ans = ""; while (!(ans.equals("y") || ans.equals("n"))) { ans = keyboard.nextLine().toLowerCase(); } - if (ans.equals("n")) { - writeTrackFile(); - } else { + if (ans.equals("y")) { AlbumListUpdater.update(args[0]); } - } else { - writeTrackFile(); } + } else if (forceUpdate) { + Constants.TRACK_FILE.delete(); } + writeTrackFile(); //Launch the application launch(args); diff --git a/src/main/java/boot/Constants.java b/src/main/java/boot/Constants.java index e131892..5814e20 100644 --- a/src/main/java/boot/Constants.java +++ b/src/main/java/boot/Constants.java @@ -8,7 +8,6 @@ import java.net.URL; import java.util.ArrayList; import java.util.List; -import java.util.Random; /** * Created by Jacob on 3/22/2015. @@ -20,16 +19,6 @@ public class Constants { public static final File BASE_DIR = new File(BASE_TEMP_DIR); public static final File TRACK_FILE = new File(TRACK_FILE_DIR); - private static File INTERNAL_TRACK_FILE = null; - - public static File getInternalTrackFile () throws Exception { - if (INTERNAL_TRACK_FILE == null) { - INTERNAL_TRACK_FILE = new File(Constants.class.getResource("../tracks.nll").toURI()); - } - return INTERNAL_TRACK_FILE; - } - - public static final Random RANDOMIZER = new Random(); private static TrackContainer TRACK_HELPER = null; @@ -40,6 +29,19 @@ public static TrackContainer getTrackHelper () throws Exception { return TRACK_HELPER; } + private static HostServicesDelegate HOST_SERVICES = null; + + public static HostServicesDelegate getHostServices() { + if(HOST_SERVICES == null) { + throw new IllegalAccessError(); + } + return HOST_SERVICES; + } + + public static void setHostServices(HostServicesDelegate hsd) { + HOST_SERVICES = hsd; + } + private static URL DEFAULT_COVER = null; public static URL getDefaultCover () { @@ -83,17 +85,4 @@ public static List getIcons() { } return ICONS; } - - private static HostServicesDelegate HOST_SERVICES = null; - - public static HostServicesDelegate getHostServices() { - if(HOST_SERVICES == null) { - throw new IllegalAccessError(); - } - return HOST_SERVICES; - } - - public static void setHostServices(HostServicesDelegate hsd) { - HOST_SERVICES = hsd; - } } diff --git a/src/main/java/boot/Controller.java b/src/main/java/boot/Controller.java index c6d36cf..b3d1207 100644 --- a/src/main/java/boot/Controller.java +++ b/src/main/java/boot/Controller.java @@ -1,7 +1,6 @@ package boot; import constructs.PlayerContainer; -import javafx.application.HostServices; import javafx.application.Platform; import javafx.fxml.FXML; import javafx.fxml.Initializable; @@ -22,6 +21,9 @@ public class Controller implements Initializable { private PlayerContainer playerContainer; private InfoWatcher infoWatcher; + private Track prevTrack; + private Track nextTrack; + @FXML private void playPause () { playerContainer.pauseToggle(); diff --git a/src/main/java/constructs/PlayerContainer.java b/src/main/java/constructs/PlayerContainer.java index 4476397..77fc7a7 100644 --- a/src/main/java/constructs/PlayerContainer.java +++ b/src/main/java/constructs/PlayerContainer.java @@ -9,9 +9,11 @@ public class PlayerContainer extends Thread { private Player player; + private boolean hoursLong; public PlayerContainer (Track track) throws Exception { player = new Player(track.getTrackURL().openStream()); + hoursLong = (track.getDuration().split(":").length == 3); } public void run () { @@ -45,10 +47,11 @@ public boolean isPaused () { public String getCurrentTime () { String dur = ""; int duration = player.getPosition(); - int hours = (int) (duration / 1000 / 60 / 60); - int minutes = (int) (duration / 1000 / 60) - hours * 60; - int seconds = (int) (duration / 1000) - minutes * 60; - if (hours > 0) { + int hours = duration / 1000 / 60 / 60; + int minutes = duration / 1000 / 60 - hours * 60; + int seconds = duration / 1000 - minutes * 60 - hours * 3600; + //If the track's duration contains hours, we add hours to the current time counter + if (hoursLong) { dur += String.format("%02d:", hours); } dur += String.format("%02d:%02d", minutes, seconds); diff --git a/src/main/java/constructs/TrackContainer.java b/src/main/java/constructs/TrackContainer.java index 2b5c4c9..624bb46 100644 --- a/src/main/java/constructs/TrackContainer.java +++ b/src/main/java/constructs/TrackContainer.java @@ -12,6 +12,7 @@ import java.net.SocketTimeoutException; import java.net.URL; import java.util.ArrayList; +import java.util.Random; import java.util.Scanner; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -22,6 +23,7 @@ public class TrackContainer { private ArrayList TRACK_LIST; + private Random RANDOMIZER; private final Pattern TRACK_NAME = Pattern.compile("\"title\":\".*?\""); private final Pattern ARTIST_NAME = Pattern.compile("artist: \".*?\","); @@ -33,6 +35,9 @@ public TrackContainer () throws Exception { //Init the album list TRACK_LIST = new ArrayList(15000); + //Init randomizer + RANDOMIZER = new Random(); + //Internalize the track file Scanner albumScanner = new Scanner(Constants.TRACK_FILE); while (albumScanner.hasNextLine()) { @@ -44,7 +49,7 @@ public TrackContainer () throws Exception { public Track getRandomSong () { //Grab a random track URL - String URL = TRACK_LIST.get(Constants.RANDOMIZER.nextInt(TRACK_LIST.size())); + String URL = TRACK_LIST.get(RANDOMIZER.nextInt(TRACK_LIST.size())); //Get the track HTML document Document doc = null; diff --git a/src/main/java/objects/Track.java b/src/main/java/objects/Track.java index f11f962..67b6036 100644 --- a/src/main/java/objects/Track.java +++ b/src/main/java/objects/Track.java @@ -47,11 +47,11 @@ public String getDuration () { return duration; } - public String setDuration (double d) { + private String setDuration (double d) { String dur = ""; int hours = (int) (d / 60 / 60); int minutes = (int) (d / 60) - hours * 60; - int seconds = (int) (d) - minutes * 60; + int seconds = (int) (d) - minutes * 60 - hours * 3600; if (hours > 0) { dur += String.format("%02d:", hours); }