Exemplo n.º 1
0
Arquivo: main.c Projeto: estock/spot
static VALUE
rb_despotify_id2uri(VALUE self, VALUE id) {
	char *idptr;
	char buf[128];

	idptr = StringValuePtr(id);

	despotify_id2uri(idptr, buf);

	return rb_str_new2(buf);
}
Exemplo n.º 2
0
Arquivo: list.c Projeto: arachsys/spot
int list_uri(int argc, char **argv) {
  char album_uri[37] = "spotify:album:", track_uri[37];
  struct album_browse *album;
  struct link *link;
  struct track *track;

  for (size_t i = 0; i < argc; i++) {
    link = despotify_link_from_uri(argv[i]);
    switch (link->type) {
      case LINK_TYPE_ALBUM:
        if (!(album = despotify_link_get_album(ds, link))) {
          error(0, 0, "Album '%s' not found", argv[i]);
          continue;
        }

        if (album->playable_tracks == album->num_tracks)
          printf("%36s\t%s - %s (%d, %d tracks)\n", argv[i], album->artist,
              album->name, album->year, album->num_tracks);
        else
          printf("%36s\t%s - %s (%d, %d/%d tracks playable)\n", argv[i],
              album->artist, album->name, album->year, album->playable_tracks,
              album->num_tracks);

        for (track = album->tracks; track; track = track->next) {
          despotify_track_to_uri(track, track_uri);
          if (track->playable)
            printf("%36s\t%02d: %s (%d:%02d at %d kbit/s)\n", track_uri,
                track->tracknumber, track->title, track->length/60000,
                (track->length % 60000)/1000, track->file_bitrate/1000);
          else
            printf("%36s\t%02d: %s (not playable)\n", track_uri,
                track->tracknumber, track->title);
        }

        if (i + 1 < argc)
          putchar('\n');
        break;

      case LINK_TYPE_TRACK:
        if (!(track = despotify_link_get_track(ds, link))
              || !(album = despotify_get_album(ds, track->album_id))) {
          error(0, 0, "Track '%s' not found", argv[i]);
          continue;
        }

        despotify_id2uri(track->album_id, album_uri + strlen(album_uri));

        if (album->playable_tracks == album->num_tracks)
          printf("%36s\t%s - %s (%d, %d tracks)\n", album_uri, album->artist,
              album->name, album->year, album->num_tracks);
        else
          printf("%36s\t%s - %s (%d, %d/%d tracks playable)\n", album_uri,
              album->artist, album->name, album->year, album->playable_tracks,
              album->num_tracks);

        if (track->playable)
          printf("%36s\t%02d: %s (%d:%02d at %d kbit/s)\n", argv[i],
              track->tracknumber, track->title, track->length/60000,
              (track->length % 60000)/1000, track->file_bitrate/1000);
        else
          printf("%36s\t%02d: %s (not playable)\n", argv[i],
              track->tracknumber, track->title);

        if (i + 1 < argc)
          putchar('\n');
        break;

      default:
        error(0, 0, "Link '%s' is not of a supported type", argv[i]);
    }
  }
  return EXIT_SUCCESS;
}