Sebastian's Gopherspace (HTTP Gateway)

Introduction
------------------------------------------------------------
 
mpcw.client is a MPD client written in Java. It implements
only a small subset of the protocol and is a part of mpcw[1].
 
 
API
------------------------------------------------------------
 
Connecting
----------
 
The mpcw.client.Connection factory creates a connection by
dispatching the scheme from the URI of the specified
connection string. This library only supports mpd at the
current stage.
 
  import de.dixieflatline.mpcw.client.*;
 
  IConnection connection = Connection.create("mpd://localhost:6600");
 
  connection.connect();
 
  // do stuff
 
  connection.disconnect();
 
  A password can be added as query parameter:
 
  IConnection connection =
    Connection.create("mpd://localhost:6600?password=trustno1");
 
 
Playback
--------
 
Create a player instance to get the current playback status:
 
  IClient client = connection.getClient();
  IPlayer player = client.getPlayer();
  Status status = player.getStatus();
 
  System.out.println("Player state: " + status.getState());
  System.out.println("Current artist: " + status.getArtist());
  System.out.println("Current album: " + status.getTitle());
 
The player can also be used to change the state or go
forwards/backwards:
 
  if(status.getState() != EState.Play)
  {
    player.play();
  }
 
  if(status.hasNext())
  {
    player.next();
  }
 
 
Playlist
--------
 
Create a playlist object to receive and manipulate the
current playlist:
 
  IClient client = connection.getClient();
  IPlaylist playlist = client.getCurrentPlaylist();
 
  playlist.selectAndPlay(0,
                         EnumSet.of(SelectAndPlayFlags.NoRangeCheck));
 
Synchronize the playlist to receive the latest changes. This
generates a set of insert and delete actions.
 
  while(true)
  {
    for(ITransformation transformation : playlist.synchronize())
    {
      if(transformation instanceof InsertPlaylistItem)
      {
        InsertPlaylistItem insert = (InsertPlaylistItem)transformation;
        PlaylistItem item = insert.getItem();
 
        System.out.format("insert item at position %d: %s - %s\n",
                          insert.getOffset(),
                          item.getArtist(),
                          item.getTitle());
      }
      else if(transformation instanceof Delete)
      {
        Delete delete = (Delete)transformation;
 
        System.out.format("delete %d items, begin at position %d\n",
                          delete.getLength(),
                          delete.getOffset());
      }
    }
 
    Thread.sleep(1000);
  }
 
 
Querying
--------
 
Create a browser to query the music database:
 
  // find all artists:
  ISearchResult<Tag> foundTags = browser.findTags(ETag.Artist);
 
  for(Tag tag : foundTags.getItems())
  {
    System.out.format("tag: %s, value: %s\n",
                      tag.getTag(),
                      tag.getValue());
  }
 
  // find albums filtered by artist:
  foundTags = browser.findTags(ETag.Album,
                               new Filter[] { new Filter(ETag.AlbumArtist,
                                                         "The Cure") });
 
  for(Tag tag : foundTags.getItems())
  {
    System.out.format("tag: %s, value: %s\n",
                      tag.getTag(),
                      tag.getValue());
  }
 
 
References
------------------------------------------------------------
mpcw
 
 
Links
------------------------------------------------------------
master.zip
GitHub