libtizgmusic

group libtizgmusic

A C library to access the Google Play Music streaming service (using Simon Weber’s ‘gmusicapi’ python library).

Typedefs

typedef struct tiz_gmusic tiz_gmusic_t

The gmusic opaque structure

typedef enum tiz_gmusic_playback_mode tiz_gmusic_playback_mode_t

Various playback modes that control the playback queue.

Enums

enum tiz_gmusic_playback_mode

Various playback modes that control the playback queue.

Values:

enumerator ETIZGmusicPlaybackModeNormal
enumerator ETIZGmusicPlaybackModeShuffle
enumerator ETIZGmusicPlaybackModeMax

Functions

int tiz_gmusic_init(tiz_gmusic_ptr_t *app_gmusic, const char *ap_user, const char *ap_pass, const char *ap_device_id)

Initialize the gmusic handle.

Return

0 on success.

Parameters
  • app_gmusic: A pointer to the gmusic handle which will be initialised.

  • ap_user: A Google email account.

  • ap_pass: The password associated to the Google account.

  • ap_device_id: A 16-character string containing a device id associated to the Google Play Music account.

void tiz_gmusic_set_playback_mode(tiz_gmusic_t *ap_gmusic, const tiz_gmusic_playback_mode_t mode)

Set the playback mode.

Parameters
  • ap_gmusic: The gmusic handle.

int tiz_gmusic_play_library(tiz_gmusic_t *ap_gmusic)

Add all tracks in the user’s library to the playback queue.

After calling this method, the various tiz_gmusic_get* methods can be used to interact with the playback queue.

Return

0 on success

Parameters
  • ap_gmusic: The gmusic handle.

int tiz_gmusic_play_tracks(tiz_gmusic_t *ap_gmusic, const char *ap_tracks, const bool a_unlimited_search)

Add the tracks corresponding to the specified search term to the playback queue.

After calling this method, the various tiz_gmusic_get* methods can be used to interact with the playback queue.

Return

0 on success

Parameters
  • ap_gmusic: The gmusic handle.

  • ap_tracks: The tracks search term.

  • a_unlimited_search: If true, Google Play Unlimited tracks are included. Otherwise, only tracks from the user’s library are considered.

int tiz_gmusic_play_album(tiz_gmusic_t *ap_gmusic, const char *ap_album, const bool a_unlimited_search)

Add the tracks of the specified album to the playback queue.

After calling this method, the various tiz_gmusic_get* methods can be used to interact with the playback queue.

Return

0 on success

Parameters
  • ap_gmusic: The gmusic handle.

  • ap_album: The album name

  • a_unlimited_search: If true, Google Play Unlimited albums are included. Otherwise, only albums from the user’s library are considered.

int tiz_gmusic_play_artist(tiz_gmusic_t *ap_gmusic, const char *ap_artist, const bool a_unlimited_search)

Add the tracks of the specified artist to the playback queue.

After calling this method, the various tiz_gmusic_get* methods can be used to interact with the playback queue.

Return

0 on success

Parameters
  • ap_gmusic: The gmusic handle.

  • ap_artist: The artist name

  • a_unlimited_search: If true, Google Play Unlimited artists are included. Otherwise, only artists from the user’s library are considered.

int tiz_gmusic_play_playlist(tiz_gmusic_t *ap_gmusic, const char *ap_playlist, const bool a_unlimited_search)

Add the tracks of the specified playlist to the playback queue.

After calling this method, the various tiz_gmusic_get* methods can be used to interact with the playback queue.

Return

0 on success

Parameters
  • ap_gmusic: The gmusic handle.

  • ap_playlist: The playlist name

  • a_unlimited_search: If true, Google Play Unlimited playlists are included. Otherwise, only playlists from the user’s library are considered.

int tiz_gmusic_play_free_station(tiz_gmusic_t *ap_gmusic, const char *ap_station)

Add the tracks of a free station to the playback queue.

After calling this method, the various tiz_gmusic_get* methods can be used to interact with the playback queue.

Return

0 on success

Parameters
  • ap_gmusic: The gmusic handle.

  • ap_station: The station name

int tiz_gmusic_play_station(tiz_gmusic_t *ap_gmusic, const char *ap_station)

Add the tracks of the specified station to the playback queue.

After calling this method, the various tiz_gmusic_get* methods can be used to interact with the playback queue.

Note

An Google Play Unlimited subscription is required.

Return

0 on success

Parameters
  • ap_gmusic: The gmusic handle.

  • ap_station: The station name

int tiz_gmusic_play_genre(tiz_gmusic_t *ap_gmusic, const char *ap_genre)

Add the tracks of the specified genre to the playback queue.

After calling this method, the various tiz_gmusic_get* methods can be used to interact with the playback queue.

Note

An Google Play Unlimited subscription is required.

Return

0 on success

Parameters
  • ap_gmusic: The gmusic handle.

  • ap_genre: The genre

int tiz_gmusic_play_situation(tiz_gmusic_t *ap_gmusic, const char *ap_situation, const char *ap_additional_keywords)

Add the tracks of the specified situation to the playback queue.

After calling this method, the various tiz_gmusic_get* methods can be used to interact with the playback queue.

Note

An Google Play Unlimited subscription is required.

Return

0 on success

Parameters
  • ap_gmusic: The gmusic handle.

  • ap_situation: The situation name (e.g. working out, office radio)

  • ap_additional_keywords: An additional search term to filter the stations returned by the situation search.

int tiz_gmusic_play_podcast(tiz_gmusic_t *ap_gmusic, const char *ap_podcast)

Add the tracks of the specified podcast to the playback queue.

After calling this method, the various tiz_gmusic_get* methods can be used to interact with the playback queue.

Note

Currently only available in the US and Canada (free tier, no subscription required).

Return

0 on success

Parameters
  • ap_gmusic: The gmusic handle.

  • ap_podcast: The podcast

int tiz_gmusic_play_promoted_tracks(tiz_gmusic_t *ap_gmusic)

Add Google Play Unlimited promoted tracks to the playback queue.

After calling this method, the various tiz_gmusic_get* methods can be used to interact with the playback queue.

Note

An Google Play Unlimited subscription is required.

Return

0 on success

Parameters
  • ap_gmusic: The gmusic handle.

const char *tiz_gmusic_get_current_queue_length(tiz_gmusic_t *ap_gmusic)

Retrieve the current length of playback queue.

Parameters
  • ap_gmusic: The tiz_gmusic handle.

int tiz_gmusic_get_current_queue_length_as_int(tiz_gmusic_t *ap_gmusic)

Retrieve the current length of the playback queue as integer.

Parameters
  • ap_gmusic: The tiz_gmusic handle.

const char *tiz_gmusic_get_current_queue_progress(tiz_gmusic_t *ap_gmusic)

Retrieve the current queue progress (e.g. ‘5 of 17’, where 5 is the current stream index, and 17 is the total streams in the queue).

Parameters
  • ap_gmusic: The tiz_gmusic handle.

void tiz_gmusic_clear_queue(tiz_gmusic_t *ap_gmusic)

Clear the playback queue.

Parameters
  • ap_gmusic: The gmusic handle.

void tiz_gmusic_print_queue(tiz_gmusic_t *ap_gmusic)

Print to standard output the contents of the playback queue.

Parameters
  • ap_gmusic: The tiz_gmusic handle.

const char *tiz_gmusic_get_url(tiz_gmusic_t *ap_gmusic, const int a_position)

Retrieve the stream url as the specified position in the play queue.

On success, the playback queue pointer moves to the position indicated.

Return

The specified url in the playback queue or NULL if the playback queue is empty or the the specified position is out of range.

Parameters
  • ap_gmusic: The tiz_gmusic handle.

  • a_position: A position value in the range [1, len(queue)].

const char *tiz_gmusic_get_next_url(tiz_gmusic_t *ap_gmusic)

Retrieve the next track url

The the playback queue pointer moves one position forwards.

Parameters
  • ap_gmusic: The gmusic handle.

const char *tiz_gmusic_get_prev_url(tiz_gmusic_t *ap_gmusic)

Retrieve the previous track url.

The the playback queue pointer moves one position backwards.

Parameters
  • ap_gmusic: The gmusic handle.

const char *tiz_gmusic_get_current_track_artist(tiz_gmusic_t *ap_gmusic)

Retrieve the current track’s artist.

Parameters
  • ap_gmusic: The gmusic handle.

const char *tiz_gmusic_get_current_track_title(tiz_gmusic_t *ap_gmusic)

Retrieve the current track’s title.

Parameters
  • ap_gmusic: The gmusic handle.

const char *tiz_gmusic_get_current_track_album(tiz_gmusic_t *ap_gmusic)

Retrieve the current track’s album.

Parameters
  • ap_gmusic: The gmusic handle.

const char *tiz_gmusic_get_current_track_duration(tiz_gmusic_t *ap_gmusic)

Retrieve the current track’s duration.

Parameters
  • ap_gmusic: The gmusic handle.

const char *tiz_gmusic_get_current_track_track_number(tiz_gmusic_t *ap_gmusic)

Retrieve the current track’s track number.

Parameters
  • ap_gmusic: The gmusic handle.

const char *tiz_gmusic_get_current_track_tracks_in_album(tiz_gmusic_t *ap_gmusic)

Retrieve the number of tracks in the current track’s album.

Parameters
  • ap_gmusic: The gmusic handle.

const char *tiz_gmusic_get_current_track_year(tiz_gmusic_t *ap_gmusic)

Retrieve the current track’s publication year.

Parameters
  • ap_gmusic: The gmusic handle.

const char *tiz_gmusic_get_current_track_genre(tiz_gmusic_t *ap_gmusic)

Retrieve the current track’s genre.

Parameters
  • ap_gmusic: The gmusic handle.

const char *tiz_gmusic_get_current_track_album_art(tiz_gmusic_t *ap_gmusic)

Retrieve the current track’s album art.

Parameters
  • ap_gmusic: The gmusic handle.

void tiz_gmusic_destroy(tiz_gmusic_t *ap_gmusic)

Destroy the gmusic handle.

Parameters
  • ap_gmusic: The gmusic handle.