String toString(String sessionId, int index) {
    String b = encode(album != null ? album : "");
    String artist = encode(this.artist);
    String track = encode(this.track);
    String l = length == -1 ? "" : String.valueOf(length);
    String n = tracknumber == -1 ? "" : String.valueOf(tracknumber);

    String r = "";
    if (rating != null) r = rating.getCode();
    String rec = "";
    if (recommendationKey != null && source == Source.LAST_FM && recommendationKey.length() == 5)
      rec = recommendationKey;

    return String.format(
        "s=%s&a[%10$d]=%s&t[%10$d]=%s&i[%10$d]=%s&o[%10$d]=%s&r[%10$d]=%s&l[%10$d]=%s&b[%10$d]=%s&n[%10$d]=%s&m[%10$d]=",
        sessionId, artist, track, startTime, source.getCode() + rec, r, l, b, n, index);
  }