diff --git a/pom.xml b/pom.xml
index f3f5e33..aeed268 100644
--- a/pom.xml
+++ b/pom.xml
@@ -56,11 +56,6 @@
javalin
5.3.1
-
- me.tongfei
- progressbar
- 0.9.5
-
\ No newline at end of file
diff --git a/src/main/java/de/b00tload/tools/lastfmtospotifyplaylist/LastFMToSpotify.java b/src/main/java/de/b00tload/tools/lastfmtospotifyplaylist/LastFMToSpotify.java
index 459ea3a..47b087d 100644
--- a/src/main/java/de/b00tload/tools/lastfmtospotifyplaylist/LastFMToSpotify.java
+++ b/src/main/java/de/b00tload/tools/lastfmtospotifyplaylist/LastFMToSpotify.java
@@ -3,15 +3,12 @@ package de.b00tload.tools.lastfmtospotifyplaylist;
import de.b00tload.tools.lastfmtospotifyplaylist.arguments.ArgumentHandler;
import de.b00tload.tools.lastfmtospotifyplaylist.arguments.Arguments;
+import de.b00tload.tools.lastfmtospotifyplaylist.util.PeriodHelper;
import de.umass.lastfm.Caller;
-import de.umass.lastfm.Period;
+import de.umass.lastfm.Track;
import de.umass.lastfm.User;
-import org.apache.hc.core5.http.ParseException;
-import se.michaelthelin.spotify.SpotifyApi;
-import se.michaelthelin.spotify.exceptions.SpotifyWebApiException;
-import java.io.IOException;
-import java.net.URI;
+import java.util.Collection;
import java.util.HashMap;
import static de.b00tload.tools.lastfmtospotifyplaylist.util.Logger.logLn;
@@ -24,27 +21,27 @@ public class LastFMToSpotify {
public static void main(String[] args) {
// create hash map with user agent
configuration = new HashMap<>();
- configuration.put("requests.useragent", "LastFMToSpotify/1.0-Snapshot (" + System.getProperty("os.name") + "; " + System.getProperty("os.arch") + ") Java/"+System.getProperty("java.version"));
+ configuration.put("requests.useragent", "LastFMToSpotify/1.0-Snapshot (" + System.getProperty("os.name") + "; " + System.getProperty("os.arch") + ") Java/" + System.getProperty("java.version"));
// parse arguments
- for(int a = 0; a tracks = User.getTopTracks(configuration.get("lastfm.user"), PeriodHelper.getPeriodByString(configuration.get("lastfm.period")), configuration.get("lastfm.apikey"));
+ for (Track track : tracks) {
+ logLn(track.getName() + " by " + track.getArtist(), 3);
+ }
logLn("Creating Playlist...", 1);
- SpotifyApi.Builder build = SpotifyApi.builder();
- build.setClientId(configuration.get("spotify.clientid"));
- build.setClientSecret(configuration.get("spotify.secret"));
- build.setRedirectUri(URI.create("http://localhost:9876/callback/spotify/"));
- SpotifyApi api = build.build();
- api.setAccessToken(configuration.get("spotify.access"));
- api.createPlaylist(api.getCurrentUsersProfile().build().execute().getId(), configuration.get("playlist.name")).setHeader("User-Agent", configuration.get("requests.useragent"));
+ //SpotifyApi.Builder build = SpotifyApi.builder();
+ //build.setClientId(configuration.get("spotify.clientid"));
+ //build.setClientSecret(configuration.get("spotify.secret"));
+ //build.setRedirectUri(URI.create("http://localhost:9876/callback/spotify/"));
+ //SpotifyApi api = build.build();
+ //api.setAccessToken(configuration.get("spotify.access"));
+ //api.createPlaylist(api.getCurrentUsersProfile().build().execute().getId(), configuration.get("playlist.name")).setHeader("User-Agent", configuration.get("requests.useragent"));
logLn("Done.", 1);
- } catch (IOException | ParseException | SpotifyWebApiException e) {
+// } catch (IOException | ParseException | SpotifyWebApiException e) {
+ } catch (Exception e) {
throw new RuntimeException(e);
}
//TODO: Implement
diff --git a/src/main/java/de/b00tload/tools/lastfmtospotifyplaylist/arguments/ArgumentHandler.java b/src/main/java/de/b00tload/tools/lastfmtospotifyplaylist/arguments/ArgumentHandler.java
index 400a643..aa8ef72 100644
--- a/src/main/java/de/b00tload/tools/lastfmtospotifyplaylist/arguments/ArgumentHandler.java
+++ b/src/main/java/de/b00tload/tools/lastfmtospotifyplaylist/arguments/ArgumentHandler.java
@@ -1,5 +1,6 @@
package de.b00tload.tools.lastfmtospotifyplaylist.arguments;
+import de.umass.lastfm.Period;
import org.jetbrains.annotations.Nullable;
import static de.b00tload.tools.lastfmtospotifyplaylist.LastFMToSpotify.LINE_SEPERATOR;
@@ -7,14 +8,19 @@ import static de.b00tload.tools.lastfmtospotifyplaylist.LastFMToSpotify.configur
public class ArgumentHandler {
- public static void handle(Arguments argument, @Nullable String value){
- switch (argument){
+ public static void handle(Arguments argument, @Nullable String value) {
+ switch (argument) {
case HELP -> help(value);
case VERBOSE -> verbose(value);
case SECRET -> secret(value);
case CLIENT -> client(value);
case TOKEN -> token(value);
case USER -> user(value);
+ case WEEKLY -> period(Period.WEEK);
+ case MONTHLY -> period(Period.ONE_MONTH);
+ case QUARTERLY -> period(Period.THREE_MONTHS);
+ case BIANNUALLY -> period(Period.SIX_MONTHS);
+ case YEARLY -> period(Period.TWELVE_MONTHS);
}
}
@@ -22,10 +28,10 @@ public class ArgumentHandler {
handle(argument, null);
}
- private static void help(String value){
- if(value == null){
+ private static void help(String value) {
+ if (value == null) {
System.out.println("This is a list of all available commands. For more specific help on the argument run --help .");
- for(Arguments arg : Arguments.values()) {
+ for (Arguments arg : Arguments.values()) {
String name = arg.getName();
String description = arg.getDescription();
System.out.println("____________________");
@@ -35,7 +41,7 @@ public class ArgumentHandler {
System.exit(200);
}
Arguments arg = Arguments.resolveByNameOrAlias(value);
- if(arg == null) {
+ if (arg == null) {
System.out.println("This argument is unknown. Use --help to get a list of all arguments");
System.exit(200);
}
@@ -47,7 +53,7 @@ public class ArgumentHandler {
System.out.println(" DESCRIPTION" + LINE_SEPERATOR + description);
System.out.println(" USAGE: " + usage);
StringBuilder aliasString = new StringBuilder();
- for(String alias : aliases){
+ for (String alias : aliases) {
aliasString.append(", -").append(alias);
}
System.out.println(" ALIASES:" + aliasString.substring(1));
@@ -55,8 +61,8 @@ public class ArgumentHandler {
System.exit(200);
}
- private static void verbose(String value){
- if(value == null){
+ private static void verbose(String value) {
+ if (value == null) {
System.out.println("--loglevel must be provided with a numeric log level. Check usage: " + Arguments.VERBOSE.getUsage());
System.exit(500);
}
@@ -71,7 +77,7 @@ public class ArgumentHandler {
}
private static void token(String value) {
- if(value == null || value.equalsIgnoreCase("")){
+ if (value == null || value.equalsIgnoreCase("")) {
System.out.println("--lastfmtoken must be provided with an api token from LastFM. Check usage: " + Arguments.TOKEN.getUsage());
System.exit(500);
}
@@ -79,7 +85,7 @@ public class ArgumentHandler {
}
private static void user(String value) {
- if(value == null || value.equalsIgnoreCase("")){
+ if (value == null || value.equalsIgnoreCase("")) {
System.out.println("--lastfmuser must be provided with a LastFM username. Check usage: " + Arguments.USER.getUsage());
System.exit(500);
}
@@ -87,7 +93,7 @@ public class ArgumentHandler {
}
private static void client(String value) {
- if(value == null || value.equalsIgnoreCase("")){
+ if (value == null || value.equalsIgnoreCase("")) {
System.out.println("--spotifyclient must be provided with a client id from Spotify. Check usage: " + Arguments.CLIENT.getUsage());
System.exit(500);
}
@@ -95,10 +101,14 @@ public class ArgumentHandler {
}
private static void secret(String value) {
- if(value == null || value.equalsIgnoreCase("")){
+ if (value == null || value.equalsIgnoreCase("")) {
System.out.println("--spotifysecret must be provided with a client secret from Spotify. Check usage: " + Arguments.SECRET.getUsage());
System.exit(500);
}
configuration.put("spotify.secret", value);
}
+
+ private static void period(Period value) {
+ configuration.put("lastfm.period", value.getString());
+ }
}
diff --git a/src/main/java/de/b00tload/tools/lastfmtospotifyplaylist/arguments/Arguments.java b/src/main/java/de/b00tload/tools/lastfmtospotifyplaylist/arguments/Arguments.java
index e509f79..c8fcd00 100644
--- a/src/main/java/de/b00tload/tools/lastfmtospotifyplaylist/arguments/Arguments.java
+++ b/src/main/java/de/b00tload/tools/lastfmtospotifyplaylist/arguments/Arguments.java
@@ -23,7 +23,17 @@ public enum Arguments {
TOKEN("lastfmtoken", "[Required]" + LINE_SEPERATOR
+ "Sets the LastFM API token.", "--lastfmtoken ", "lT", "lToken"),
USER("lastfmuser", "[Required]" + LINE_SEPERATOR
- + "Sets the LastFM API token.", "--lastfmuser ", "lU", "lUser");
+ + "Sets the LastFM API token.", "--lastfmuser ", "lU", "lUser"),
+ WEEKLY("weekly", "[Optional]" + LINE_SEPERATOR
+ + "Creates a playlist from your top tracks from last week.", "--weekly", "W"),
+ MONTHLY("monthly", "[Optional, Default]" + LINE_SEPERATOR
+ + "Creates a playlist from your top tracks from last month.", "--monthly", "M"),
+ QUARTERLY("quarterly", "[Optional]" + LINE_SEPERATOR
+ + "Creates a playlist from your top tracks from last quarter.", "--quarterly", "Q"),
+ BIANNUALLY("biannually", "[Optional]" + LINE_SEPERATOR
+ + "Creates a playlist from your top tracks from last half-year.", "--biannualy", "B"),
+ YEARLY("yearly", "[Optional]" + LINE_SEPERATOR
+ + "Creates a playlist from your top tracks from last year.", "--anually", "A");;
private final String name;
private final String description;
diff --git a/src/main/java/de/b00tload/tools/lastfmtospotifyplaylist/util/PeriodHelper.java b/src/main/java/de/b00tload/tools/lastfmtospotifyplaylist/util/PeriodHelper.java
new file mode 100644
index 0000000..2c68faf
--- /dev/null
+++ b/src/main/java/de/b00tload/tools/lastfmtospotifyplaylist/util/PeriodHelper.java
@@ -0,0 +1,14 @@
+package de.b00tload.tools.lastfmtospotifyplaylist.util;
+
+import de.umass.lastfm.Period;
+
+public class PeriodHelper {
+
+ public static Period getPeriodByString(String string){
+ for(Period p : Period.values()){
+ if(p.getString().equalsIgnoreCase(string)) return p;
+ }
+ return Period.ONE_MONTH;
+ }
+
+}