Added:
trunk/src/scrobblerj/tag/
trunk/src/scrobblerj/tag/Tag.java
trunk/src/scrobblerj/tag/TopTagItem.java
Modified:
trunk/build.xml
trunk/src/scrobblerj/XMLParserProxy.java
trunk/src/scrobblerj/user/IUser.java
trunk/src/scrobblerj/user/User.java
trunk/src/scrobblerj/user/UserProxy.java
trunk/test/scrobblerj/test/Test.java
Log:
fixed projectname in buildfile
fixed IUser
added some TopTag implementations
Modified: trunk/build.xml
==============================================================================
--- trunk/build.xml (original)
+++ trunk/build.xml Wed May 30 10:42:22 2007
@@ -1,4 +1,4 @@
-<project name="java-scrobbler" default="dist">
+<project name="scrobblerj" default="dist">
<property file="build.properties"/>
<target name="clean">
<delete failonerror="false" includeemptydirs="true">
Modified: trunk/src/scrobblerj/XMLParserProxy.java
==============================================================================
--- trunk/src/scrobblerj/XMLParserProxy.java (original)
+++ trunk/src/scrobblerj/XMLParserProxy.java Wed May 30 10:42:22 2007
@@ -1,10 +1,16 @@
package scrobblerj;
+import java.util.Vector;
+
import javax.xml.parsers.DocumentBuilderFactory;
+
import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
+import scrobblerj.tag.Tag;
+import scrobblerj.tag.TopTagItem;
+
public abstract class XMLParserProxy extends Proxy {
@Override
@@ -18,6 +24,23 @@
} catch (Exception e) {
e.printStackTrace();
setFecthed(false);
+ }
+ }
+
+ protected final TopTagItem[] getTopTagsByURL(String url) {
+ try {
+ Document document =DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(url);
+ NodeList nodes=document.getElementsByTagName("tag");
+ Vector<TopTagItem> topTags=new Vector<TopTagItem>();
+ for(int i=0;i<nodes.getLength();i++) {
+ String _tagName=nodes.item(i).getChildNodes().item(1).getTextContent();
+ long _count=Long.parseLong(nodes.item(i).getChildNodes().item(3).getTextContent());
+ topTags.add(new TopTagItem(new Tag(_tagName),_count));
+ }
+ TopTagItem[] tmp=new TopTagItem[1];
+ return topTags.toArray(tmp);
+ } catch(Exception e) {
+ return null;
}
}
Added: trunk/src/scrobblerj/tag/Tag.java
==============================================================================
--- (empty file)
+++ trunk/src/scrobblerj/tag/Tag.java Wed May 30 10:42:22 2007
@@ -0,0 +1,25 @@
+package scrobblerj.tag;
+
+import java.net.MalformedURLException;
+import java.net.URL;
+
+public class Tag {
+ private String tagName;
+ private URL url;
+
+ public Tag(String tagName) {
+ this.tagName = tagName;
+ try {
+ url=new URL("http://www.last.fm/tag/"+tagName);
+ } catch (MalformedURLException e) {
+ }
+ }
+
+ public String getTagName() {
+ return tagName;
+ }
+
+ public URL getURL() {
+ return url;
+ }
+}
Added: trunk/src/scrobblerj/tag/TopTagItem.java
==============================================================================
--- (empty file)
+++ trunk/src/scrobblerj/tag/TopTagItem.java Wed May 30 10:42:22 2007
@@ -0,0 +1,17 @@
+package scrobblerj.tag;
+
+
+public class TopTagItem {
+ private Tag tag;
+ private long count;
+ public TopTagItem(Tag tag, long count) {
+ this.tag = tag;
+ this.count = count;
+ }
+ public long getCount() {
+ return count;
+ }
+ public Tag getTag() {
+ return tag;
+ }
+}
Modified: trunk/src/scrobblerj/user/IUser.java
==============================================================================
--- trunk/src/scrobblerj/user/IUser.java (original)
+++ trunk/src/scrobblerj/user/IUser.java Wed May 30 10:42:22 2007
@@ -4,18 +4,24 @@
import java.net.URL;
import java.util.Date;
+import scrobblerj.album.Album;
+import scrobblerj.artist.Artist;
+import scrobblerj.tag.TopTagItem;
public interface IUser {
- public abstract int getAge();
- public abstract String getCountry();
- public abstract Gender getGender();
- public abstract long getPlayCount();
- public abstract URL getURL();
- public abstract String getRealname();
- public abstract Date getRegisterationDate();
- public abstract RenderedImage getAvatar();
- public abstract String getUsername();
- public abstract User[] getFriends();
- public abstract Neighbour[] getNeighbours();
- public abstract TasteOMeter getTasteOMeter(User userB);
-}
\ No newline at end of file
+ public int getAge();
+ public String getCountry();
+ public Gender getGender();
+ public long getPlayCount();
+ public URL getURL();
+ public String getRealname();
+ public Date getRegisterationDate();
+ public RenderedImage getAvatar();
+ public String getUsername();
+ public User[] getFriends();
+ public Neighbour[] getNeighbours();
+ public TasteOMeter getTasteOMeter(User userB);
+ public TopTagItem[] getTopTags();
+ public TopTagItem[] getTopTagsForArtist(Artist artist);
+ //public TopTagItem[] getTopTagsForAlbum(Album album);
+}
Modified: trunk/src/scrobblerj/user/User.java
==============================================================================
--- trunk/src/scrobblerj/user/User.java (original)
+++ trunk/src/scrobblerj/user/User.java Wed May 30 10:42:22 2007
@@ -4,6 +4,9 @@
import java.net.URL;
import java.util.Date;
+import scrobblerj.artist.Artist;
+import scrobblerj.tag.TopTagItem;
+
public class User implements IUser {
private UserProxy proxy;
public int getAge() {
@@ -52,6 +55,12 @@
}
public TasteOMeter getTasteOMeter(User userB) {
return proxy.getTasteOMeter(userB);
+ }
+ public TopTagItem[] getTopTags() {
+ return proxy.getTopTags();
+ }
+ public TopTagItem[] getTopTagsForArtist(Artist artist) {
+ return proxy.getTopTagsForArtist(artist);
}
Modified: trunk/src/scrobblerj/user/UserProxy.java
==============================================================================
--- trunk/src/scrobblerj/user/UserProxy.java (original)
+++ trunk/src/scrobblerj/user/UserProxy.java Wed May 30 10:42:22 2007
@@ -6,6 +6,7 @@
import java.net.URL;
import java.util.Date;
import java.util.Vector;
+
import javax.imageio.ImageIO;
import javax.xml.parsers.DocumentBuilderFactory;
@@ -14,6 +15,9 @@
import org.w3c.dom.NodeList;
import scrobblerj.XMLParserProxy;
+import scrobblerj.album.Album;
+import scrobblerj.artist.Artist;
+import scrobblerj.tag.TopTagItem;
class UserProxy extends XMLParserProxy implements IUser {
@@ -150,4 +154,13 @@
public TasteOMeter getTasteOMeter(User userB) {
return new TasteOMeter(this,userB);
}
+
+ public TopTagItem[] getTopTags() {
+ return getTopTagsByURL("http://ws.audioscrobbler.com/1.0/user/"+username+"/tags.xml");
+ }
+
+ public TopTagItem[] getTopTagsForArtist(Artist artist) {
+ return getTopTagsByURL("http://ws.audioscrobbler.com/1.0/user/"+username+"/artisttags.xml?artist="+artist.getName());
+ }
+
}
Modified: trunk/test/scrobblerj/test/Test.java
==============================================================================
--- trunk/test/scrobblerj/test/Test.java (original)
+++ trunk/test/scrobblerj/test/Test.java Wed May 30 10:42:22 2007
@@ -3,34 +3,49 @@
import java.io.File;
import java.io.IOException;
-
import javax.imageio.ImageIO;
import scrobblerj.album.Album;
import scrobblerj.artist.Artist;
+import scrobblerj.tag.TopTagItem;
import scrobblerj.user.Neighbour;
import scrobblerj.user.TasteOMeter;
import scrobblerj.user.User;
public class Test {
- public static void main(String[] args) throws IOException {
+ public static void main(String[] args) throws IOException, InterruptedException {
User u = new User("Firari");
System.out.println(u.getPlayCount());
System.out.println(u.getRegisterationDate());
System.out.println(u.getGender());
+ Thread.sleep(1000);
Album a = new Album("Iron Maiden","Dance of Death");
System.out.println(a.getReleaseDate());
+ Thread.sleep(1000);
User[] friends = u.getFriends();
for(int i=0;i<friends.length;i++)
System.out.println(friends[i].getUsername()+": "+friends[i].getRealname());
+ Thread.sleep(1000);
Neighbour[] neighbours = u.getNeighbours();
for(int i=0;i<neighbours.length;i++)
System.out.println(neighbours[i].getUser().getUsername()+" "+neighbours[i].getMatch());
+ Thread.sleep(1000);
ImageIO.write(u.getAvatar(),"jpg",new File("test.jpg"));
+ Thread.sleep(1000);
TasteOMeter meter = u.getTasteOMeter(new User("Crims"));
System.out.println(meter.getScore());
Artist[] common=meter.getCommonArtists();
for(Artist ar:common)
System.out.println(ar.getName());
+ Thread.sleep(1000);
+ TopTagItem[] topTags=u.getTopTags();
+ for(TopTagItem t:topTags)
+ System.out.println(t.getTag().getTagName()+": "+t.getCount());
+ Thread.sleep(1000);
+ System.out.println("------------------");
+ topTags=u.getTopTagsForArtist(new Artist("Nightwish"));
+ for(TopTagItem t:topTags)
+ System.out.println(t.getTag().getTagName()+": "+t.getCount());
+
}
}