Usage_SubmittingData - schnatterer/musicbrainzws2-java GitHub Wiki
Some more explanation and examples on how to submit data
MusicBrainz XML Web Service/Version 2 definition state you could submit some data.
First you need to open a valid User Account, then you need to provvide a valid client identification.
Collections could not be created via web service, so you need to visit the http://musicbrainz.org/user/yourUsername/collections page (please, replace yourUsername with your actual MusicBrainz username) to insert at lest one.
To add or remove Releases from an existing collection:
Collection controller = new Collection();
controller.getQueryWs().setUsername("username");
controller.getQueryWs().setPassword("password");
controller.getQueryWs().setClient("client");
List <CollectionResultWs2> list = controller.search();
CollectionWs2 collection = list.get(0).getCollection();
collection = controller.lookUp(collection);
for (ReleaseWs2 rel : collection.getReleases())
{
System.out.println(rel.toString());
}
List<String> releases= new ArrayList<String>();
releases.add("b54e4ad1-188a-352f-85d8-ca40d4ec4748");
releases.add("c501d29f-6b2e-3cbb-a298-ac53b5c00cb4");
controller.addReleasesById(releases);
collection = controller.lookUp(collection);
for (ReleaseWs2 rel : collection.getReleases())
{
System.out.println(rel.toString());
}
controller.removeReleasesById(releases);
collection = controller.lookUp(collection);
for (ReleaseWs2 rel : collection.getReleases())
{
System.out.println(rel.toString());
}
You could add and remove releases from collections using valid release istances instead of id string:
Release relc = new Release();
relc.search("ummagumma");
List <ReleaseResultWs2> rr = relc.getFullSearchResultList();
List<ReleaseWs2> releases = new ArrayList<ReleaseWs2>();
for (ReleaseResultWs2 r : rr)
{
releases.add(r.getRelease());
}
Collection controller = new Collection();
controller.getQueryWs().setUsername(username);
controller.getQueryWs().setPassword(password);
controller.getQueryWs().setClient(client);
List <CollectionResultWs2> list = controller.search();
CollectionWs2 collection = list.get(0).getCollection();
collection = controller.lookUp(collection);
for (ReleaseWs2 rel : collection.getReleases())
{
System.out.println(rel.toString());
}
controller.addReleases(releases);
collection = controller.lookUp(collection);
for (ReleaseWs2 rel : collection.getReleases())
{
System.out.println(rel.toString());
}
controller.removeReleases(releases);
collection = controller.lookUp(collection);
for (ReleaseWs2 rel : collection.getReleases())
{
System.out.println(rel.toString());
}
To submit UserTags and UserRatings you have different ways:
adding to a single entity via controller:
Artist controller = new Artist();
controller.getQueryWs().setUsername(username);
controller.getQueryWs().setPassword(password);
controller.getQueryWs().setClient(client);
controller.getIncludes().setUserRatings(true);
controller.getIncludes().setUserTags(true);
ArtistWs2 artist= controller.lookUp("83d91898-7763-47d7-b03b-b92132375c47");
for (TagWs2 tag : artist.getUserTags())
{
System.out.println(tag.getName());
}
System.out.println(artist.getUserRating().getAverageRating());
String[] tags ={"rock", "progressive", "electronic","english"};
controller.AddTags(tags);
controller.rate(5F);
controller.lookUp(artist);
for (TagWs2 tag : artist.getUserTags())
{
System.out.println(tag.getName());
}
System.out.println(artist.getUserRating().getAverageRating());
working with the entity and then submit changes:
Artist controller = new Artist();
controller.getQueryWs().setUsername(username);
controller.getQueryWs().setPassword(password);
controller.getQueryWs().setClient(client);
controller.getIncludes().setUserRatings(true);
controller.getIncludes().setUserTags(true);
ArtistWs2 artist= controller.lookUp("83d91898-7763-47d7-b03b-b92132375c47");
for (TagWs2 tag : artist.getUserTags())
{
System.out.println(tag.getName());
}
System.out.println(artist.getUserRating().getAverageRating());
artist.getUserRating().setAverageRating(1F);
artist.getUserTags().clear();
artist.getUserTags().add(new TagWs2("rock"));
artist.getUserTags().add(new TagWs2("progressive"));
controller.postUserRatings();
controller.postUserTags();
controller.lookUp(artist);
for (TagWs2 tag : artist.getUserTags())
{
System.out.println(tag.getName());
}
System.out.println(artist.getUserRating().getAverageRating());
note that in this way you could also clear the user tags and the rating.
You could also build a Submissioon query containing a batch of entities to be submitted for rating or tag purpose:
UserTagSubmissionWs2 query = new UserTagSubmissionWs2(getQueryWs());
query.addEntity(entity);
query.addEntity(entity2);
...
query.addEntity(entityn);
Metadata md = query.submit();
That’s all!
The Test package contains some more other cases that you might find interesting.