From 65e3766a62988388203cb4904d6f0fc3070a43ce Mon Sep 17 00:00:00 2001 From: aj Date: Wed, 20 Jun 2018 13:38:57 +0100 Subject: [PATCH] begin network remodel --- build.gradle | 3 + .../sarsoo/fmframework/fm/FmAuthNetwork.java | 5 + .../java/sarsoo/fmframework/fm/FmNetwork.java | 5 + .../sarsoo/fmframework/fm/FmUserNetwork.java | 5 + src/main/java/sarsoo/fmframework/fm/User.java | 5 + .../java/sarsoo/fmframework/fx/TagCaller.java | 14 -- .../java/sarsoo/fmframework/net/User.java | 177 ++++++++++++++++++ .../fmframework/util/ScrobbleSumming.java | 32 ---- .../fmframework/util/FMObjListTest.java | 18 ++ 9 files changed, 218 insertions(+), 46 deletions(-) create mode 100644 src/main/java/sarsoo/fmframework/fm/FmAuthNetwork.java create mode 100644 src/main/java/sarsoo/fmframework/fm/FmNetwork.java create mode 100644 src/main/java/sarsoo/fmframework/fm/FmUserNetwork.java create mode 100644 src/main/java/sarsoo/fmframework/fm/User.java delete mode 100644 src/main/java/sarsoo/fmframework/fx/TagCaller.java create mode 100644 src/main/java/sarsoo/fmframework/net/User.java delete mode 100644 src/main/java/sarsoo/fmframework/util/ScrobbleSumming.java create mode 100644 src/test/java/sarsoo/fmframework/util/FMObjListTest.java diff --git a/build.gradle b/build.gradle index aead3cb..6626d88 100644 --- a/build.gradle +++ b/build.gradle @@ -25,6 +25,9 @@ repositories { dependencies { // The production code uses the SLF4J logging API at compile time compile 'org.slf4j:slf4j-api:1.7.25' + + compile 'com.mashape.unirest:unirest-java:1.4.9' + compile group: 'org.json', name: 'json', version: '20180130' // Declare the dependency for your favourite test framework you want to use in your tests. // TestNG is also supported by the Gradle Test task. Just change the diff --git a/src/main/java/sarsoo/fmframework/fm/FmAuthNetwork.java b/src/main/java/sarsoo/fmframework/fm/FmAuthNetwork.java new file mode 100644 index 0000000..ded7963 --- /dev/null +++ b/src/main/java/sarsoo/fmframework/fm/FmAuthNetwork.java @@ -0,0 +1,5 @@ +package sarsoo.fmframework.fm; + +public class FmAuthNetwork extends FmUserNetwork { + +} diff --git a/src/main/java/sarsoo/fmframework/fm/FmNetwork.java b/src/main/java/sarsoo/fmframework/fm/FmNetwork.java new file mode 100644 index 0000000..ce06989 --- /dev/null +++ b/src/main/java/sarsoo/fmframework/fm/FmNetwork.java @@ -0,0 +1,5 @@ +package sarsoo.fmframework.fm; + +public class FmNetwork { + +} diff --git a/src/main/java/sarsoo/fmframework/fm/FmUserNetwork.java b/src/main/java/sarsoo/fmframework/fm/FmUserNetwork.java new file mode 100644 index 0000000..ab42a99 --- /dev/null +++ b/src/main/java/sarsoo/fmframework/fm/FmUserNetwork.java @@ -0,0 +1,5 @@ +package sarsoo.fmframework.fm; + +public class FmUserNetwork extends FmNetwork { + +} diff --git a/src/main/java/sarsoo/fmframework/fm/User.java b/src/main/java/sarsoo/fmframework/fm/User.java new file mode 100644 index 0000000..fa0f059 --- /dev/null +++ b/src/main/java/sarsoo/fmframework/fm/User.java @@ -0,0 +1,5 @@ +package sarsoo.fmframework.fm; + +public class User { + +} diff --git a/src/main/java/sarsoo/fmframework/fx/TagCaller.java b/src/main/java/sarsoo/fmframework/fx/TagCaller.java deleted file mode 100644 index d0bf0aa..0000000 --- a/src/main/java/sarsoo/fmframework/fx/TagCaller.java +++ /dev/null @@ -1,14 +0,0 @@ -package sarsoo.fmframework.fx; - -import javafx.concurrent.*; -import sarsoo.fmframework.util.Getter; -import sarsoo.fmframework.util.Reference; - -public class TagCaller extends Task{ - - @Override - protected Object call() throws Exception { - - return Getter.getUserTags(Reference.getUserName()); - } -} diff --git a/src/main/java/sarsoo/fmframework/net/User.java b/src/main/java/sarsoo/fmframework/net/User.java new file mode 100644 index 0000000..b30ea01 --- /dev/null +++ b/src/main/java/sarsoo/fmframework/net/User.java @@ -0,0 +1,177 @@ +package sarsoo.fmframework.net; + +import java.util.ArrayList; + +import org.w3c.dom.Document; +import org.w3c.dom.NamedNodeMap; +import org.w3c.dom.Node; + +import sarsoo.fmframework.music.Tag; +import sarsoo.fmframework.music.Track; +import sarsoo.fmframework.parser.Parser; +import sarsoo.fmframework.util.FMObjList; +import sarsoo.fmframework.util.Reference; + +public class User { + + protected String userName; + + public User(String userName) { + this.userName = userName; + } + + public String getUserName() { + return userName; + } + + public Track getLastTrack() { + if(Reference.isVerbose()) + Reference.getConsole().write(">>getLastTrack"); + + String url = URLBuilder.getLastTrackUrl(userName); + // TestCall.test(url); + Document doc = Network.getResponse(url); + + // System.out.println(doc.getDocumentElement().getAttribute("status")); + if (doc != null) { + // System.out.println(doc.getDocumentElement().getAttribute("status")); + Parser.stripSpace(doc.getDocumentElement()); + Track track = Parser.parseLastTrack(doc); +// if(Reference.isVerbose()) +// System.out.println(track); + // return null; + return track; + } + return null; + + } + + public int getScrobbles() { + if(Reference.isVerbose()) + Reference.getConsole().write(">>getScrobbles"); + + String url = URLBuilder.getUserInfoUrl(userName); + Document doc = Network.getResponse(url); + if (doc.getDocumentElement().getAttribute("status").equals("ok")) { + String scrobbles = doc.getElementsByTagName("playcount").item(0).getTextContent(); + if (scrobbles != null) + if(Reference.isVerbose()) + Reference.getConsole().write("total scrobbles: " + scrobbles); + return Integer.parseInt(scrobbles); + } + return 0; + } + + public int getScrobblesToday() { + if(Reference.isVerbose()) + Reference.getConsole().write(">>getScrobblesToday"); + + String url = URLBuilder.getTodayScrobbles(userName); + Document doc = Network.getResponse(url); + if (doc.getDocumentElement().getAttribute("status").equals("ok")) { + Node node = doc.getChildNodes().item(0).getFirstChild(); + NamedNodeMap var = node.getAttributes(); + // System.out.println(var.getNamedItem("total").getNodeValue()); + // if (scrobbles != null) + if(Reference.isVerbose()) + Reference.getConsole().write("scrobbles today: " + var.getNamedItem("total").getNodeValue()); + return Integer.parseInt(var.getNamedItem("total").getNodeValue()); + } + return 0; + } + + public FMObjList getUserTag(String tag) { + if(Reference.isVerbose()) + Reference.getConsole().write(">>getUserTag"); + + String url = URLBuilder.getUserPersonalTags(userName, tag); + Document doc = Network.getResponse(url); + + if (doc != null) { + int pages = Integer.valueOf( + doc.getFirstChild().getFirstChild().getAttributes().getNamedItem("totalPages").getNodeValue()); + if(Reference.isVerbose()) + Reference.getConsole().write("tag pages: " + pages); + + FMObjList list = Parser.parseUserTagList(doc); + list.setGroupName(tag); + + if(Reference.isVerbose()) + Reference.getConsole().write("tag: " + tag); + + if (pages > 1) { + int counter; + for (counter = 2; counter <= pages; counter++) { + String urlNew = URLBuilder.getUserPersonalTags(userName, tag, counter); + Document docNew = Network.getResponse(urlNew); + + if (docNew != null) { + list.addAll(Parser.parseUserTagList(docNew)); +// return Parser.parseUserTagList(docNew); + } + } + } + + return list; + } + + return null; + } + + public FMObjList getArtistTracks(String artist) { + +// String url = URLBuilder.getArtistTracks(artist, 1, username); +// Document doc = Network.getResponse(url); + +// if (doc != null) { +// int pages = Integer.valueOf( +// doc.getFirstChild().getFirstChild().getAttributes().getNamedItem("totalPages").getNodeValue()); +// +// FMObjList list = Parser.parseArtistTracks(doc); +//// list.setGroupName(artist + " tracks"); +// +// System.out.println(pages); +// +// +// return list; +// } + + if(Reference.isVerbose()) + Reference.getConsole().write(">>getArtistTracks"); + + FMObjList totalList = new FMObjList(); + FMObjList list = new FMObjList(); + + int counter = 1; + do { + String url = URLBuilder.getArtistTracks(artist, counter, userName); + Document doc = Network.getResponse(url); + + list = Parser.parseArtistTracks(doc); + + totalList.addAll(list); + counter++; + + }while(list.size() > 0); + + return totalList; + + + } + + public ArrayList getUserTags() { + if(Reference.isVerbose()) + Reference.getConsole().write(">>getUserTags"); + + String url = URLBuilder.getUserTopTags(userName); + Document doc = Network.getResponse(url); + if (doc != null) { + return Parser.parseUserTags(doc); + } + return null; + } + + + + +} diff --git a/src/main/java/sarsoo/fmframework/util/ScrobbleSumming.java b/src/main/java/sarsoo/fmframework/util/ScrobbleSumming.java deleted file mode 100644 index b0e0d1f..0000000 --- a/src/main/java/sarsoo/fmframework/util/ScrobbleSumming.java +++ /dev/null @@ -1,32 +0,0 @@ -package sarsoo.fmframework.util; -import sarsoo.fmframework.music.Artist; - -public class ScrobbleSumming { - - public static int getTopDawgScrobbles() { - FMObjList tde = new FMObjList(); - -// Artist kendrick = Artist.getArtist("Kendrick Lamar", "sarsoo"); -// Artist jay = Artist.getArtist("Jay Rock", "sarsoo"); -// Artist school = Artist.getArtist("ScHoolboy Q", "sarsoo"); -// Artist ab = Artist.getArtist("Ab-Soul", "sarsoo"); -// Artist blackHippy = Artist.getArtist("Black Hippy", "sarsoo"); -// Artist isaiah = Artist.getArtist("Isaiah Rashad", "sarsoo"); -// Artist sza = Artist.getArtist("SZA", "sarsoo"); -// Artist lance = Artist.getArtist("Lance Skiiiwalker", "sarsoo"); -// Artist sir = Artist.getArtist("SiR", "sarsoo"); - - tde.add(Artist.getArtist("Kendrick Lamar", "sarsoo")); - tde.add(Artist.getArtist("Jay Rock", "sarsoo")); - tde.add(Artist.getArtist("ScHoolboy Q", "sarsoo")); - tde.add(Artist.getArtist("Ab-Soul", "sarsoo")); - tde.add(Artist.getArtist("Black Hippy", "sarsoo")); - tde.add(Artist.getArtist("Isaiah Rashad", "sarsoo")); - tde.add(Artist.getArtist("SZA", "sarsoo")); - tde.add(Artist.getArtist("Lance Skiiiwalker", "sarsoo")); - tde.add(Artist.getArtist("SiR", "sarsoo")); - - return tde.getTotalUserScrobbles(); - } - -} diff --git a/src/test/java/sarsoo/fmframework/util/FMObjListTest.java b/src/test/java/sarsoo/fmframework/util/FMObjListTest.java new file mode 100644 index 0000000..f33c167 --- /dev/null +++ b/src/test/java/sarsoo/fmframework/util/FMObjListTest.java @@ -0,0 +1,18 @@ +package sarsoo.fmframework.util; + +import static org.junit.Assert.*; + +import org.junit.Test; + +public class FMObjListTest { + + @Test + public void testSeparateAlbumAddition() { + FMObjList list = new FMObjList(); + +// Album album = new Album(); + + fail("Not yet implemented"); + } + +}