migrated to fmnetwork for gui, changed console handling

This commit is contained in:
aj 2018-06-20 18:06:47 +01:00
parent 65e3766a62
commit 7dcd3b9994
22 changed files with 981 additions and 78 deletions

View File

@ -2,4 +2,8 @@ package sarsoo.fmframework.fm;
public class FmAuthNetwork extends FmUserNetwork {
public FmAuthNetwork(String key, String userName) {
super(key, userName);
}
}

View File

@ -1,5 +1,382 @@
package sarsoo.fmframework.fm;
import sarsoo.fmframework.music.Album;
import sarsoo.fmframework.music.Album.AlbumBuilder;
import sarsoo.fmframework.music.Artist;
import sarsoo.fmframework.music.Artist.ArtistBuilder;
import sarsoo.fmframework.music.FMObj;
import sarsoo.fmframework.music.Track;
import sarsoo.fmframework.music.Track.TrackBuilder;
import sarsoo.fmframework.music.Wiki;
import sarsoo.fmframework.util.ConsoleHandler;
import org.json.JSONException;
import org.json.JSONObject;
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.JsonNode;
import com.mashape.unirest.http.Unirest;
import com.mashape.unirest.http.exceptions.UnirestException;
import com.mashape.unirest.request.HttpRequest;
public class FmNetwork {
protected String key;
protected String userName;
public FmNetwork(String key) {
this.key = key;
}
public FmNetwork(String key, String userName) {
this.key = key;
this.userName = userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getUserName() {
return userName;
}
public void clearUser() {
this.userName = null;
}
public Album getAlbum(String name, String artist) {
if (ConsoleHandler.isVerbose())
ConsoleHandler.getConsole().write(">>getAlbum: " + name + " " + artist);
HttpRequest request;
try {
request = Unirest.get("http://ws.audioscrobbler.com/2.0/").header("Accept", "application/json")
.header("User-Agent", "fmframework").queryString("method", "album.getinfo")
.queryString("artist", artist).queryString("album", name).queryString("api_key", key)
.queryString("format", "json");
if (userName != null)
request.queryString("username", userName);
HttpResponse<JsonNode> response = request.asJson();
JSONObject obj = new JSONObject(response.getBody().toString());
String nameIn;
String artistIn;
try {
JSONObject albumJson = obj.getJSONObject("album");
nameIn = albumJson.getString("name");
artistIn = albumJson.getString("artist");
AlbumBuilder builder = new AlbumBuilder(nameIn, getArtist(artistIn));
try {
builder.setMbid(albumJson.getString("mbid"));
} catch (JSONException e) {
if (ConsoleHandler.isVerbose())
ConsoleHandler.getConsole().write("ERROR: No MBID for " + nameIn + " , " + e.getMessage());
else
System.err.println("ERROR: No MBID for " + nameIn + " , " + e.getMessage());
}
try {
builder.setUrl(albumJson.getString("url"));
} catch (JSONException e) {
if (ConsoleHandler.isVerbose())
ConsoleHandler.getConsole().write("ERROR: No Url for " + nameIn + " , " + e.getMessage());
else
System.err.println("ERROR: No Url for " + nameIn + " , " + e.getMessage());
}
try {
builder.setListeners(albumJson.getInt("listeners"));
} catch (JSONException e) {
if (ConsoleHandler.isVerbose())
ConsoleHandler.getConsole().write("ERROR: No listeners for " + nameIn + " , " + e.getMessage());
else
System.err.println("ERROR: No listeners for " + nameIn + " , " + e.getMessage());
}
try {
builder.setPlayCount(albumJson.getInt("playcount"));
} catch (JSONException e) {
if (ConsoleHandler.isVerbose())
ConsoleHandler.getConsole()
.write("ERROR: No play count for " + nameIn + " , " + e.getMessage());
else
System.err.println("ERROR: No play count for " + nameIn + " , " + e.getMessage());
}
try {
builder.setUserPlayCount(albumJson.getInt("userplaycount"));
} catch (JSONException e) {
}
try {
JSONObject wikiJson = albumJson.getJSONObject("wiki");
Wiki wiki = new Wiki(wikiJson.getString("published"), wikiJson.getString("summary"),
wikiJson.getString("content"));
builder.setWiki(wiki);
} catch (JSONException e) {
if (ConsoleHandler.isVerbose())
ConsoleHandler.getConsole().write("ERROR: No wiki for " + nameIn + " , " + e.getMessage());
else
System.err.println("ERROR: No wiki for " + nameIn + " , " + e.getMessage());
}
return builder.build();
} catch (JSONException e) {
if (ConsoleHandler.isVerbose())
ConsoleHandler.getConsole().write("ERROR: Album Name Not Found, " + e.getMessage());
else
System.err.println("ERROR: Album Name Not Found, " + e.getMessage());
}
} catch (UnirestException e) {
e.printStackTrace();
}
return null;
}
public Artist getArtist(String name) {
if (ConsoleHandler.isVerbose())
ConsoleHandler.getConsole().write(">>getArtist: " + name);
HttpRequest request;
try {
request = Unirest.get("http://ws.audioscrobbler.com/2.0/").header("Accept", "application/json")
.header("User-Agent", "fmframework").queryString("method", "artist.getinfo")
.queryString("artist", name).queryString("api_key", key).queryString("format", "json");
if (userName != null)
request.queryString("username", userName);
HttpResponse<JsonNode> response = request.asJson();
JSONObject obj = new JSONObject(response.getBody().toString());
String artistName;
try {
JSONObject artistJson = obj.getJSONObject("artist");
artistName = artistJson.getString("name");
ArtistBuilder builder = new ArtistBuilder(artistName);
try {
builder.setMbid(artistJson.getString("mbid"));
} catch (JSONException e) {
if (ConsoleHandler.isVerbose())
ConsoleHandler.getConsole().write("ERROR: No MBID for " + artistName + " , " + e.getMessage());
else
System.err.println("ERROR: No MBID for " + artistName + " , " + e.getMessage());
}
try {
builder.setUrl(artistJson.getString("url"));
} catch (JSONException e) {
if (ConsoleHandler.isVerbose())
ConsoleHandler.getConsole().write("ERROR: No Url for " + artistName + " , " + e.getMessage());
else
System.err.println("ERROR: No Url for " + artistName + " , " + e.getMessage());
}
try {
builder.setListeners(artistJson.getJSONObject("stats").getInt("listeners"));
} catch (JSONException e) {
if (ConsoleHandler.isVerbose())
ConsoleHandler.getConsole()
.write("ERROR: No listeners for " + artistName + " , " + e.getMessage());
else
System.err.println("ERROR: No listeners for " + artistName + " , " + e.getMessage());
}
try {
builder.setPlayCount(artistJson.getJSONObject("stats").getInt("playcount"));
} catch (JSONException e) {
if (ConsoleHandler.isVerbose())
ConsoleHandler.getConsole()
.write("ERROR: No play count for " + artistName + " , " + e.getMessage());
else
System.err.println("ERROR: No play count for " + artistName + " , " + e.getMessage());
}
try {
builder.setUserPlayCount(artistJson.getJSONObject("stats").getInt("userplaycount"));
} catch (JSONException e) {
}
try {
JSONObject wikiJson = artistJson.getJSONObject("bio");
Wiki wiki = new Wiki(wikiJson.getString("published"), wikiJson.getString("summary"),
wikiJson.getString("content"));
builder.setWiki(wiki);
} catch (JSONException e) {
if (ConsoleHandler.isVerbose())
ConsoleHandler.getConsole().write("ERROR: No wiki for " + artistName + " , " + e.getMessage());
else
System.err.println("ERROR: No wiki for " + artistName + " , " + e.getMessage());
}
return builder.build();
} catch (JSONException e) {
if (ConsoleHandler.isVerbose())
ConsoleHandler.getConsole().write("ERROR: Arist Name Not Found, " + e.getMessage());
else
System.err.println("ERROR: Arist Name Not Found, " + e.getMessage());
}
} catch (UnirestException e) {
e.printStackTrace();
}
return null;
}
public Track getTrack(String name, String artist) {
if (ConsoleHandler.isVerbose())
ConsoleHandler.getConsole().write(">>getTrack: " + name + " " + artist);
HttpRequest request;
try {
request = Unirest.get("http://ws.audioscrobbler.com/2.0/").header("Accept", "application/json")
.header("User-Agent", "fmframework").queryString("method", "track.getinfo")
.queryString("artist", artist).queryString("track", name).queryString("api_key", key)
.queryString("format", "json");
if (userName != null)
request.queryString("username", userName);
HttpResponse<JsonNode> response = request.asJson();
JSONObject obj = new JSONObject(response.getBody().toString());
String nameIn;
String artistIn;
try {
JSONObject trackJson = obj.getJSONObject("track");
nameIn = trackJson.getString("name");
artistIn = trackJson.getJSONObject("artist").getString("name");
TrackBuilder builder = new TrackBuilder(nameIn, getArtist(artistIn));
try {
builder.setMbid(trackJson.getString("mbid"));
} catch (JSONException e) {
if (ConsoleHandler.isVerbose())
ConsoleHandler.getConsole().write("ERROR: No MBID for " + nameIn + " , " + e.getMessage());
else
System.err.println("ERROR: No MBID for " + nameIn + " , " + e.getMessage());
}
try {
builder.setUrl(trackJson.getString("url"));
} catch (JSONException e) {
if (ConsoleHandler.isVerbose())
ConsoleHandler.getConsole().write("ERROR: No Url for " + nameIn + " , " + e.getMessage());
else
System.err.println("ERROR: No Url for " + nameIn + " , " + e.getMessage());
}
try {
builder.setListeners(trackJson.getInt("listeners"));
} catch (JSONException e) {
if (ConsoleHandler.isVerbose())
ConsoleHandler.getConsole().write("ERROR: No listeners for " + nameIn + " , " + e.getMessage());
else
System.err.println("ERROR: No listeners for " + nameIn + " , " + e.getMessage());
}
try {
builder.setPlayCount(trackJson.getInt("playcount"));
} catch (JSONException e) {
if (ConsoleHandler.isVerbose())
ConsoleHandler.getConsole()
.write("ERROR: No play count for " + nameIn + " , " + e.getMessage());
else
System.err.println("ERROR: No play count for " + nameIn + " , " + e.getMessage());
}
try {
builder.setUserPlayCount(trackJson.getInt("userplaycount"));
} catch (JSONException e) {
}
try {
JSONObject wikiJson = trackJson.getJSONObject("wiki");
Wiki wiki = new Wiki(wikiJson.getString("published"), wikiJson.getString("summary"),
wikiJson.getString("content"));
builder.setWiki(wiki);
} catch (JSONException e) {
if (ConsoleHandler.isVerbose())
ConsoleHandler.getConsole().write("ERROR: No wiki for " + nameIn + " , " + e.getMessage());
else
System.err.println("ERROR: No wiki for " + nameIn + " , " + e.getMessage());
}
return builder.build();
} catch (JSONException e) {
if (ConsoleHandler.isVerbose())
ConsoleHandler.getConsole().write("ERROR: Album Name Not Found, " + e.getMessage());
else
System.err.println("ERROR: Album Name Not Found, " + e.getMessage());
}
} catch (UnirestException e) {
e.printStackTrace();
}
return null;
}
public Album refresh(Album album) {
return getAlbum(album.getName(), album.getArtist().getName());
}
public Artist refresh(Artist artist) {
return getArtist(artist.getName());
}
public Track refresh(Track track) {
Track refreshedTrack = getTrack(track.getName(), track.getArtist().getName());
refreshedTrack.setAlbum(refresh(track.getAlbum()));
return refreshedTrack;
}
public FMObj refresh(FMObj obj) {
if(obj.getClass() == Track.class) return refresh((Track)obj);
if(obj.getClass() == Album.class) return refresh((Album)obj);
if(obj.getClass() == Artist.class) return refresh((Artist)obj);
return null;
}
}

View File

@ -1,5 +1,84 @@
package sarsoo.fmframework.fm;
public class FmUserNetwork extends FmNetwork {
import org.json.JSONArray;
import org.json.JSONObject;
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.JsonNode;
import com.mashape.unirest.http.Unirest;
import com.mashape.unirest.http.exceptions.UnirestException;
import sarsoo.fmframework.music.Track;
public class FmUserNetwork extends FmNetwork{
public FmUserNetwork(String key, String userName) {
super(key, userName);
}
public User getUser() {
try {
HttpResponse<JsonNode> response = Unirest.get("http://ws.audioscrobbler.com/2.0/").
header("Accept", "application/json").
header("User-Agent", "fmframework").
queryString("method","user.getinfo").
queryString("user", userName).
queryString("api_key", key).
queryString("format", "json").
asJson();
JSONObject obj = new JSONObject(response.getBody().toString()).getJSONObject("user");
return new User(obj.getString("name"),
obj.getString("realname"),
obj.getString("url"),
obj.getString("country"),
obj.getInt("age"),
obj.getString("gender").charAt(0),
obj.getInt("playcount"));
} catch (UnirestException e) {
e.printStackTrace();
}
return null;
}
public String getUserRealName() {
return getUser().getRealName();
}
public int getUserScrobbleCount() {
return getUser().getScrobbleCount();
}
public Track getLastTrack() {
try {
HttpResponse<JsonNode> response = Unirest.get("http://ws.audioscrobbler.com/2.0/").
header("Accept", "application/json").
header("User-Agent", "fmframework").
queryString("method","user.getrecenttracks").
queryString("user", userName).
queryString("api_key", key).
queryString("format", "json").
queryString("limit", "1").
asJson();
JSONArray obj = new JSONObject(response.getBody().toString()).getJSONObject("recenttracks").getJSONArray("track");
JSONObject track = (JSONObject) obj.get(0);
Track trackObj = getTrack(track.getString("name"), track.getJSONObject("artist").getString("#text"));
trackObj.setAlbum(getAlbum(track.getJSONObject("album").getString("#text"), track.getJSONObject("artist").getString("#text")));
return trackObj;
} catch (UnirestException e) {
e.printStackTrace();
}
return null;
}
}

View File

@ -1,5 +1,64 @@
package sarsoo.fmframework.fm;
public class User {
private String userName;
private String realName;
private String url;
private String country;
private int age;
private char gender;
private boolean isSubscriber;
private int playCount;
public User(String userName, String realName, String url, String country, int age, char gender, int playCount) {
this.userName = userName;
this.realName = realName;
this.url = url;
this.country = country;
this.age = age;
this.gender = gender;
// this.isSubscriber = isSubscriber;
this.playCount = playCount;
}
public String getUserName() {
return userName;
}
public String getRealName() {
return realName;
}
public String getUrl() {
return url;
}
public String getCountry() {
return country;
}
public int getAge() {
return age;
}
public char getGender() {
return gender;
}
public boolean isSubscriber() {
return isSubscriber;
}
public int getScrobbleCount() {
return playCount;
}
}

View File

@ -47,10 +47,10 @@ public class FmFramework extends Application {
launch(args);
}
public void changeScene() throws IOException {
Parent root = FXMLLoader.load(getClass().getResource("ui/changed.fxml"));
}
// public void changeScene() throws IOException {
// Parent root = FXMLLoader.load(getClass().getResource("ui/changed.fxml"));
//
// }
public static ControllerMain getController() {
return control;

View File

@ -6,10 +6,12 @@ import java.util.Locale;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import sarsoo.fmframework.fm.FmNetwork;
import sarsoo.fmframework.fx.ArtistTab;
import sarsoo.fmframework.fx.FmFramework;
import sarsoo.fmframework.music.Album;
import sarsoo.fmframework.music.Wiki;
import sarsoo.fmframework.net.Key;
import sarsoo.fmframework.net.Network;
import sarsoo.fmframework.util.Maths;
import sarsoo.fmframework.util.Reference;
@ -101,7 +103,7 @@ public class AlbumPaneController {
}
public void refresh() {
album.refresh();
album = new FmNetwork(Key.getKey(), Reference.getUserName()).refresh(album);
NumberFormat numberFormat = NumberFormat.getNumberInstance(Locale.US);

View File

@ -6,10 +6,12 @@ import java.util.Locale;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import sarsoo.fmframework.fm.FmNetwork;
import sarsoo.fmframework.fx.FMObjListTab;
import sarsoo.fmframework.fx.FmFramework;
import sarsoo.fmframework.music.Artist;
import sarsoo.fmframework.music.Wiki;
import sarsoo.fmframework.net.Key;
import sarsoo.fmframework.net.Network;
import sarsoo.fmframework.util.Getter;
import sarsoo.fmframework.util.Maths;
@ -104,7 +106,7 @@ public class ArtistPaneController {
}
public void refresh() {
artist.refresh();
artist = new FmNetwork(Key.getKey(), Reference.getUserName()).refresh(artist);
NumberFormat numberFormat = NumberFormat.getNumberInstance(Locale.US);

View File

@ -16,6 +16,7 @@ import javafx.event.EventHandler;
import javafx.fxml.FXML;
import javafx.stage.FileChooser;
import sarsoo.fmframework.file.ListPersister;
import sarsoo.fmframework.fm.FmUserNetwork;
import sarsoo.fmframework.fx.AlbumTab;
import sarsoo.fmframework.fx.ArtistTab;
import sarsoo.fmframework.fx.ConsoleTab;
@ -28,6 +29,8 @@ import sarsoo.fmframework.music.Album;
import sarsoo.fmframework.music.Artist;
import sarsoo.fmframework.music.Tag;
import sarsoo.fmframework.music.Track;
import sarsoo.fmframework.net.Key;
import sarsoo.fmframework.util.ConsoleHandler;
import sarsoo.fmframework.util.FMObjList;
import sarsoo.fmframework.util.Getter;
import sarsoo.fmframework.util.Reference;
@ -49,7 +52,7 @@ public class ControllerMain {
public void initialize() {
// Reference.setUserName("sarsoo");
Reference.setVerbose(TextAreaConsole.getInstance());
ConsoleHandler.setVerbose(TextAreaConsole.getInstance());
refresh();
}
@ -63,11 +66,13 @@ public class ControllerMain {
@Override
protected Void call() throws Exception {
NumberFormat numberFormat = NumberFormat.getNumberInstance(Locale.US);
FmUserNetwork net = new FmUserNetwork(Key.getKey(), Reference.getUserName());
String scrobblesToday = numberFormat.format(Getter.getScrobblesToday(Reference.getUserName()));
String scrobbles = numberFormat.format(Getter.getScrobbles(Reference.getUserName()));
String scrobblesToday = numberFormat.format(0);
String scrobbles = numberFormat.format(net.getUserScrobbleCount());
TrackTab tab = new TrackTab(Getter.getLastTrack());
TrackTab tab = new TrackTab(net.getLastTrack());
final CountDownLatch latch = new CountDownLatch(1);
Platform.runLater(new Runnable() {
@ -599,7 +604,7 @@ public class ControllerMain {
@Override
protected Void call() throws Exception {
Track track = Getter.getLastTrack();
Track track = new FmUserNetwork(Key.getKey(), Reference.getUserName()).getLastTrack();
if (track != null) {
TrackTab tab = new TrackTab(track);

View File

@ -14,10 +14,12 @@ import javafx.event.EventHandler;
import javafx.fxml.FXML;
import javafx.scene.control.*;
import javafx.scene.input.MouseEvent;
import sarsoo.fmframework.fm.FmUserNetwork;
import sarsoo.fmframework.fx.ArtistTab;
import sarsoo.fmframework.fx.FmFramework;
import sarsoo.fmframework.music.Artist;
import sarsoo.fmframework.music.FMObj;
import sarsoo.fmframework.net.Key;
import sarsoo.fmframework.util.FMObjList;
import sarsoo.fmframework.util.Getter;
import sarsoo.fmframework.util.Maths;
@ -94,7 +96,7 @@ public class FMObjListPaneController {
ObservableList<PieChart.Data> pieChartData = FXCollections.observableArrayList(
new PieChart.Data(list.getGroupName(), list.getTotalUserScrobbles()),
new PieChart.Data("other", Getter.getScrobbles(Reference.getUserName()) - list.getTotalUserScrobbles()));
new PieChart.Data("other", new FmUserNetwork(Key.getKey(), Reference.getUserName()).getUserScrobbleCount() - list.getTotalUserScrobbles()));
ObservableList<PieChart.Data> pieChartArtistsData = FXCollections.observableArrayList();
int counter2;
@ -128,7 +130,7 @@ public class FMObjListPaneController {
double percent = Maths.getPercentListening(list, Reference.getUserName());
NumberFormat numberFormat = NumberFormat.getNumberInstance(Locale.US);
labelTotalScrobbles.setText("Σ " + list.getTotalUserScrobbles());
labelTotalScrobbles.setText("Σ " + list.getTotalUserScrobbles());
labelPercent.setText(String.format("%.2f%%", percent));
Collections.sort(list);
@ -174,7 +176,7 @@ public class FMObjListPaneController {
ObservableList<PieChart.Data> pieChartData = FXCollections.observableArrayList(
new PieChart.Data(list.getGroupName(), list.getTotalUserScrobbles()),
new PieChart.Data("other", Getter.getScrobbles(Reference.getUserName()) - list.getTotalUserScrobbles()));
new PieChart.Data("other", new FmUserNetwork(Key.getKey(), Reference.getUserName()).getUserScrobbleCount() - list.getTotalUserScrobbles()));
pieChart.setData(pieChartData);
}

View File

@ -15,6 +15,8 @@ import javafx.fxml.FXML;
import javafx.scene.control.*;
import javafx.scene.input.MouseEvent;
import sarsoo.fmframework.file.ListPersister;
import sarsoo.fmframework.fm.FmNetwork;
import sarsoo.fmframework.fm.FmUserNetwork;
import sarsoo.fmframework.fx.AlbumTab;
import sarsoo.fmframework.fx.ArtistTab;
import sarsoo.fmframework.fx.FmFramework;
@ -23,6 +25,7 @@ import sarsoo.fmframework.music.Album;
import sarsoo.fmframework.music.Artist;
import sarsoo.fmframework.music.FMObj;
import sarsoo.fmframework.music.Track;
import sarsoo.fmframework.net.Key;
import sarsoo.fmframework.util.FMObjList;
import sarsoo.fmframework.util.Getter;
import sarsoo.fmframework.util.Maths;
@ -59,7 +62,7 @@ public class FMObjListPaneEditController {
// double percent = Maths.getPercentListening(list, Reference.getUserName());
// NumberFormat numberFormat = NumberFormat.getNumberInstance(Locale.US);
//
// labelTotalScrobbles.setText("Σ " + list.getTotalUserScrobbles());
// labelTotalScrobbles.setText("Σ " + list.getTotalUserScrobbles());
// labelPercent.setText(String.format("%.2f%%", percent));
//
// Collections.sort(list);
@ -138,9 +141,12 @@ public class FMObjListPaneEditController {
}
public void updateList() {
FmNetwork net = new FmNetwork(Key.getKey(), Reference.getUserName());
int counter;
for (counter = 0; counter < list.size(); counter++) {
list.get(counter).refresh();
net.refresh(list.get(counter));
}
}
@ -152,6 +158,7 @@ public class FMObjListPaneEditController {
labelPercent.setText(String.format("%.2f%%", percent));
Collections.sort(list);
Collections.reverse(list);
gridPaneFMObjs.getChildren().clear();
@ -211,7 +218,7 @@ public class FMObjListPaneEditController {
}
int other = Getter.getScrobbles(Reference.getUserName()) - list.getTotalUserScrobbles();
int other = new FmUserNetwork(Key.getKey(), Reference.getUserName()).getUserScrobbleCount() - list.getTotalUserScrobbles();
ObservableList<PieChart.Data> pieChartData = FXCollections.observableArrayList(
new PieChart.Data(String.format("%d%%", (int) list.getTotalUserScrobbles() * 100 / other),
list.getTotalUserScrobbles()),
@ -238,15 +245,17 @@ public class FMObjListPaneEditController {
@FXML
protected void handleAddTrack(ActionEvent event) {
FmNetwork net = new FmNetwork(Key.getKey(), Reference.getUserName());
String name = textTrack.getText();
String album = textAlbum.getText();
String artist = textArtist.getText();
if ((name != null) && (artist != null)) {
Track track = Track.getTrack(name, artist, Reference.getUserName());
Track track = net.getTrack(name, artist);
if (album != null) {
Album albumObj = Album.getAlbum(album, artist, Reference.getUserName());
Album albumObj = net.getAlbum(album, artist);
track.setAlbum(albumObj);
textAlbum.setText(null);
@ -264,12 +273,13 @@ public class FMObjListPaneEditController {
@FXML
protected void handleAddAlbum(ActionEvent event) {
FmNetwork net = new FmNetwork(Key.getKey(), Reference.getUserName());
String album = textAlbum.getText();
String artist = textArtist.getText();
if ((album != null) && (artist != null)) {
Album albumObj = Album.getAlbum(album, artist, Reference.getUserName());
Album albumObj = net.getAlbum(album, artist);
list.add(albumObj);
textAlbum.setText(null);
@ -282,12 +292,13 @@ public class FMObjListPaneEditController {
@FXML
protected void handleAddArtist(ActionEvent event) {
FmNetwork net = new FmNetwork(Key.getKey(), Reference.getUserName());
String artist = textArtist.getText();
if (artist != null) {
Artist artistObj = Artist.getArtist(artist, Reference.getUserName());
Artist artistObj = net.getArtist(artist);
list.add(artistObj);

View File

@ -6,11 +6,13 @@ import java.util.Locale;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import sarsoo.fmframework.fm.FmNetwork;
import sarsoo.fmframework.fx.AlbumTab;
import sarsoo.fmframework.fx.ArtistTab;
import sarsoo.fmframework.fx.FmFramework;
import sarsoo.fmframework.music.Track;
import sarsoo.fmframework.music.Wiki;
import sarsoo.fmframework.net.Key;
import sarsoo.fmframework.net.Network;
import sarsoo.fmframework.util.Maths;
import sarsoo.fmframework.util.Reference;
@ -115,7 +117,7 @@ public class TrackPaneController {
}
public void refresh() {
track.refresh();
track = new FmNetwork(Key.getKey(), Reference.getUserName()).refresh(track);
NumberFormat numberFormat = NumberFormat.getNumberInstance(Locale.US);

View File

@ -16,23 +16,46 @@ public class Album extends FMObj implements Serializable{
private static final long serialVersionUID = 1L;
protected Artist artist;
protected ArrayList<Tag> tagList;
// protected ArrayList<Track> trackList;
protected ArrayList<Track> trackList;
@Deprecated
public Album(String name, String artist) {
super(name, null, null, 0, 0, 0, null);
this.artist = Artist.getArtist(artist, Reference.getUserName());
}
@Deprecated
public Album(String name, String url, String mbid, Artist artist, int listeners, int playCount, int userPlayCount,
Wiki wiki) {
super(name, url, mbid, listeners, playCount, userPlayCount, wiki);
this.artist = artist;
}
private Album(AlbumBuilder builder) {
this.name = builder.name;
this.artist = builder.artist;
this.url = builder.url;
this.listeners = builder.listeners;
this.playCount = builder.playCount;
this.userPlayCount = builder.userPlayCount;
this.wiki = builder.wiki;
this.mbid = builder.mbid;
this.tagList = builder.tagList;
this.trackList = builder.trackList;
}
public Artist getArtist() {
return artist;
}
@Deprecated
public static Album getAlbum(String name, String artist, String username) {
String url = URLBuilder.getAlbumInfoUrl(name, artist, username);
Document response = Network.getResponse(url);
@ -70,6 +93,7 @@ public class Album extends FMObj implements Serializable{
}
@Deprecated
@Override
public void view() {
AlbumView view = new AlbumView(this);
@ -94,6 +118,7 @@ public class Album extends FMObj implements Serializable{
}
@Deprecated
@Override
public void refresh() {
Album album = Album.getAlbum(name, artist.getName(), Reference.getUserName());
@ -105,4 +130,74 @@ public class Album extends FMObj implements Serializable{
this.mbid = album.mbid;
}
public static class AlbumBuilder{
protected String name;
protected Artist artist;
protected String url;
protected int listeners;
protected int playCount;
protected int userPlayCount;
protected Wiki wiki;
protected String mbid;
protected ArrayList<Tag> tagList;
protected ArrayList<Track> trackList;
public AlbumBuilder(String name, Artist artist) {
this.name = name;
this.artist = artist;
}
public AlbumBuilder setUrl(String url) {
this.url = url;
return this;
}
public AlbumBuilder setListeners(int listeners) {
this.listeners = listeners;
return this;
}
public AlbumBuilder setPlayCount(int playCount) {
this.playCount = playCount;
return this;
}
public AlbumBuilder setUserPlayCount(int userPlayCount) {
this.userPlayCount = userPlayCount;
return this;
}
public AlbumBuilder setWiki(Wiki wiki) {
this.wiki = wiki;
return this;
}
public AlbumBuilder setMbid(String Mbid) {
this.mbid = Mbid;
return this;
}
public AlbumBuilder setTagList(ArrayList<Tag> tagList) {
this.tagList = tagList;
return this;
}
public AlbumBuilder setTrackList(ArrayList<Track> trackList) {
this.trackList = trackList;
return this;
}
public Album build() {
return new Album(this);
}
}
}

View File

@ -5,6 +5,7 @@ import java.util.ArrayList;
import org.w3c.dom.Document;
import sarsoo.fmframework.music.Album.AlbumBuilder;
import sarsoo.fmframework.net.Network;
import sarsoo.fmframework.net.URLBuilder;
//import sarsoo.fmframework.net.TestCall;
@ -23,14 +24,37 @@ public class Artist extends FMObj implements Serializable{
protected ArrayList<Artist> similarArtists;
protected ArrayList<Tag> tagList;
@Deprecated
public Artist(String name) {
super(name, null, null, 0, 0, 0, null);
}
@Deprecated
public Artist(String name, String url, String mbid, int listeners, int playCount, int userPlayCount, Wiki wiki) {
super(name, url, mbid, listeners, playCount, userPlayCount, wiki);
}
private Artist(ArtistBuilder builder) {
this.name = builder.name;
this.url = builder.url;
this.listeners = builder.listeners;
this.playCount = builder.playCount;
this.userPlayCount = builder.userPlayCount;
this.wiki = builder.wiki;
this.mbid = builder.mbid;
this.albums = builder.albums;
this.similarArtists = builder.similarArtists;
this.tagList = builder.tagList;
}
@Deprecated
public static Artist getArtist(String name, String username) {
String url = URLBuilder.getArtistInfoUrl(name, username);
// TestCall.test(url);
@ -86,6 +110,7 @@ public class Artist extends FMObj implements Serializable{
return "Artist: " + name;
}
@Deprecated
@Override
public void refresh() {
Artist artist = Artist.getArtist(name, Reference.getUserName());
@ -98,5 +123,80 @@ public class Artist extends FMObj implements Serializable{
}
public static class ArtistBuilder{
protected String name;
protected String url;
protected int listeners;
protected int playCount;
protected int userPlayCount;
protected Wiki wiki;
protected String mbid;
protected ArrayList<Album> albums;
protected ArrayList<Artist> similarArtists;
protected ArrayList<Tag> tagList;
public ArtistBuilder(String name) {
this.name = name;
}
public ArtistBuilder setUrl(String url) {
this.url = url;
return this;
}
public ArtistBuilder setListeners(int listeners) {
this.listeners = listeners;
return this;
}
public ArtistBuilder setPlayCount(int playCount) {
this.playCount = playCount;
return this;
}
public ArtistBuilder setUserPlayCount(int userPlayCount) {
this.userPlayCount = userPlayCount;
return this;
}
public ArtistBuilder setWiki(Wiki wiki) {
this.wiki = wiki;
return this;
}
public ArtistBuilder setMbid(String Mbid) {
this.mbid = Mbid;
return this;
}
public ArtistBuilder setAlbums(ArrayList<Album> albums) {
this.albums = albums;
return this;
}
public ArtistBuilder setSimilarArtists(ArrayList<Artist> similarArtists) {
this.similarArtists = similarArtists;
return this;
}
public ArtistBuilder setTagList(ArrayList<Tag> tagList) {
this.tagList = tagList;
return this;
}
public Artist build() {
return new Artist(this);
}
}
}

View File

@ -23,6 +23,11 @@ public abstract class FMObj implements Comparable<FMObj>, Serializable{
protected Wiki wiki;
public FMObj() {
}
@Deprecated
public FMObj(String name, String url, String mbid, int listeners, int playCount, int userPlayCount, Wiki wiki) {
this.name = name;
this.url = url;
@ -33,8 +38,10 @@ public abstract class FMObj implements Comparable<FMObj>, Serializable{
this.wiki = wiki;
}
@Deprecated
public abstract void refresh();
@Deprecated
public void view() {
FMObjView view = new FMObjView(this);
view.setVisible(true);

View File

@ -6,15 +6,15 @@ import java.util.ArrayList;
import org.w3c.dom.Document;
import sarsoo.fmframework.jframe.TrackView;
import sarsoo.fmframework.music.Artist.ArtistBuilder;
import sarsoo.fmframework.net.Network;
import sarsoo.fmframework.net.URLBuilder;
//import sarsoo.fmframework.net.TestCall;
import sarsoo.fmframework.parser.Parser;
import sarsoo.fmframework.util.Reference;
public class Track extends FMObj implements Serializable{
public class Track extends FMObj implements Serializable {
/**
*
*/
@ -23,26 +23,51 @@ public class Track extends FMObj implements Serializable{
protected Artist artist;
protected int trackNumber;
protected int duration;
protected boolean streamable;
protected boolean isLoved;
protected ArrayList<Tag> tagList;
private int utsFirstListen;
@Deprecated
public Track(String name, String artist) {
super(name, null, null, 0, 0, 0, null);
this.artist = new Artist(artist);
}
@Deprecated
public Track(String name, String url, String mbid, Artist artist, int listeners, int playCount, int userPlayCount,
Wiki wiki) {
super(name, url, mbid, listeners, playCount, userPlayCount, wiki);
this.artist = artist;
}
private Track(TrackBuilder builder) {
this.name = builder.name;
this.url = builder.url;
this.listeners = builder.listeners;
this.playCount = builder.playCount;
this.userPlayCount = builder.userPlayCount;
this.wiki = builder.wiki;
this.mbid = builder.mbid;
this.album = builder.album;
this.artist = builder.artist;
this.trackNumber = builder.trackNumber;
this.duration = builder.duration;
this.isLoved = builder.isLoved;
this.tagList = builder.tagList;
}
@Deprecated
public static Track getTrack(String name, String artist, String username) {
// System.out.println("Artist " + artist);
// System.out.println("track " + name);
// System.out.println("Artist " + artist);
// System.out.println("track " + name);
String url = URLBuilder.getTrackInfoUrl(name, artist, username);
// TestCall.test(url);
Document response = Network.getResponse(url);
@ -91,6 +116,7 @@ public class Track extends FMObj implements Serializable{
return false;
}
@Deprecated
@Override
public void view() {
TrackView view = new TrackView(this);
@ -98,23 +124,24 @@ public class Track extends FMObj implements Serializable{
}
public String toString() {
if(album != null)
return "Track: " + name + " - " + album.getName() + " - " + artist.getName();
if (album != null)
return "Track: " + name + " - " + album.getName() + " - " + artist.getName();
return "Track: " + name + " - " + artist.getName();
}
@Deprecated
@Override
public void refresh() {
Track track = Track.getTrack(name, artist.getName(), Reference.getUserName());
this.listeners = track.listeners;
this.userPlayCount = track.userPlayCount;
this.playCount = track.playCount;
this.wiki = track.wiki;
this.mbid = track.mbid;
this.isLoved = track.isLoved;
}
public int getUtsFirstListen() {
@ -124,4 +151,104 @@ public class Track extends FMObj implements Serializable{
public void setUtsFirstListen(int utsFirstListen) {
this.utsFirstListen = utsFirstListen;
}
public static class TrackBuilder {
protected String name;
protected String url;
protected int listeners;
protected int playCount;
protected int userPlayCount;
protected Wiki wiki;
protected String mbid;
protected Album album;
protected Artist artist;
protected int trackNumber;
protected int duration;
protected boolean isLoved;
protected ArrayList<Tag> tagList;
private int utsFirstListen;
public TrackBuilder(String name, Artist artist) {
this.name = name;
this.artist = artist;
}
public TrackBuilder setUrl(String url) {
this.url = url;
return this;
}
public TrackBuilder setListeners(int listeners) {
this.listeners = listeners;
return this;
}
public TrackBuilder setPlayCount(int playCount) {
this.playCount = playCount;
return this;
}
public TrackBuilder setUserPlayCount(int userPlayCount) {
this.userPlayCount = userPlayCount;
return this;
}
public TrackBuilder setWiki(Wiki wiki) {
this.wiki = wiki;
return this;
}
public TrackBuilder setMbid(String Mbid) {
this.mbid = Mbid;
return this;
}
public TrackBuilder setAlbum(Album album) {
this.album = album;
return this;
}
public TrackBuilder setArtist(Artist artist) {
this.artist = artist;
return this;
}
public TrackBuilder setTrackNumber(int trackNumber) {
this.trackNumber = trackNumber;
return this;
}
public TrackBuilder setDuration(int duration) {
this.duration = duration;
return this;
}
public TrackBuilder set(int userPlayCount) {
this.userPlayCount = userPlayCount;
return this;
}
public TrackBuilder setIsLoved(boolean isLoved) {
this.isLoved = isLoved;
return this;
}
public TrackBuilder setTagList(ArrayList<Tag> tagList) {
this.tagList = tagList;
return this;
}
public Track build() {
return new Track(this);
}
}
}

View File

@ -5,7 +5,7 @@ import sarsoo.fmframework.music.Artist;
import org.w3c.dom.Document;
@Deprecated
public class AlbumParser {
public static Album parseAlbum(Document doc){

View File

@ -26,6 +26,7 @@ import sarsoo.fmframework.music.Wiki;
import sarsoo.fmframework.util.FMObjList;
import sarsoo.fmframework.util.Reference;
@Deprecated
public class Parser {
public static Album parseAlbum(Document doc) {

View File

@ -0,0 +1,25 @@
package sarsoo.fmframework.util;
public class ConsoleHandler {
private static Console console;
private static boolean isVerbose = false;
public static Console getConsole() {
return console;
}
public static boolean isVerbose() {
return isVerbose;
}
public static void setVerbose(Console consoleIn) {
if(consoleIn == null)
isVerbose = false;
else
isVerbose = true;
console = consoleIn;
}
}

View File

@ -3,12 +3,15 @@ package sarsoo.fmframework.util;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import sarsoo.fmframework.fm.FmUserNetwork;
import sarsoo.fmframework.music.FMObj;
import sarsoo.fmframework.net.Key;
public class Maths {
public static double getPercentListening(FMObj obj, String username) {
int userScrobbles = Getter.getScrobbles(Reference.getUserName());
int userScrobbles = new FmUserNetwork(Key.getKey(), username).getUserScrobbleCount();
double plays = (double) obj.getUserPlayCount();
if (userScrobbles > 0 && plays > 0) {
@ -24,7 +27,7 @@ public class Maths {
public static double getPercentListening(FMObjList objList, String username) {
int userScrobbles = Getter.getScrobbles(Reference.getUserName());
int userScrobbles = new FmUserNetwork(Key.getKey(), username).getUserScrobbleCount();
double plays = (double) objList.getTotalUserScrobbles();
if (userScrobbles > 0 && plays > 0) {

View File

@ -1,36 +0,0 @@
package sarsoo.fmframework.util;
import java.io.File;
import sarsoo.fmframework.file.Persister;
import sarsoo.fmframework.music.Track;
public class Scrobbler {
private String token;
private String sessionKey;
public Scrobbler() {
}
public void auth() {
}
public int scrobble(Track track) {
return 0;
}
public void saveSessionKey(File file) {
Persister<String> persist = new Persister<String>();
}
}

View File

@ -0,0 +1,23 @@
package sarsoo.fmframework.fm;
import static org.junit.Assert.*;
import org.junit.Test;
import sarsoo.fmframework.music.Album;
import sarsoo.fmframework.music.Artist;
import sarsoo.fmframework.music.Track;
public class FmNetworkTest {
@Test
public void test() {
FmUserNetwork network = new FmUserNetwork("54a9f5c4c36f5d2cba0d4ffe3846e8b4", "sarsoo");
Track track = network.getLastTrack();
System.out.println(track);
System.out.println(track.getUserPlayCount());
}
}

View File

@ -0,0 +1,15 @@
package sarsoo.fmframework.fm;
import static org.junit.Assert.*;
import org.junit.Test;
public class FmUserNetworkTest {
@Test
public void test() {
FmUserNetwork network = new FmUserNetwork("54a9f5c4c36f5d2cba0d4ffe3846e8b4", "sarsoo");
System.out.println(network.getLastTrack());
}
}