Exemple #1
0
// ----------------------------------------------------------------------------
//
void TextUI::listTracks(void)
{
	PlaylistField playlist_field( "Playlist", m_player );

	Form form( &m_text_io );
	form.add( playlist_field );

    if ( form.play() ) {
        PlayerItems tracks;
        m_player->getTracks( playlist_field.getPlaylist(), tracks );

        for ( PlayerItems::iterator it=tracks.begin(); it != tracks.end(); it++ ) {
            TrackInfo track_info;

            if ( m_player->getTrackInfo( (*it), &track_info ) ) {
                track_info.track_duration_ms /= 1000;
                int minutes = track_info.track_duration_ms/60;
                int seconds = track_info.track_duration_ms%60;

                printf( "%s by %s [%d:%02d]\n", track_info.track_name, track_info.artist_name, 
                        minutes, seconds );
            }
            else
                printf( "Error reading track info \n" );
        }
    }
}
Exemple #2
0
// ----------------------------------------------------------------------------
//
void TextUI::showQueuedTracks(void)
{
    PlayerItems tracks;
    m_player->getQueuedTracks( tracks );
    int index = 1;

    for ( PlayerItems::iterator it=tracks.begin(); it != tracks.end(); it++, index++ ) {
        CString title = m_player->getTrackFullName( (*it) );
        printf( "   %d: %s\n", index, (LPCSTR)title );
    }
}
Exemple #3
0
// ----------------------------------------------------------------------------
//
void TextUI::listPlaylists()
{
    PlayerItems     playlists;

    m_player->getPlaylists( playlists );

    for ( PlayerItems::iterator it=playlists.begin(); it != playlists.end(); it++ ) {
		PlaylistInfo playlist_info;
		if ( m_player->getPlaylistInfo((*it), &playlist_info) ) {
			CString name( playlist_info.playlist_name );
			name.Remove( '\n' );

			printf( "%s (%d)\n", (LPCSTR)name, playlist_info.playlist_tracks );
		}
    }
}
Exemple #4
0
// ----------------------------------------------------------------------------
//
bool json_track_list( PlayerItems& tracks, CString& response )
{
    UINT track_number = 1;
    AudioInfo audioInfo;

    JsonBuilder json( response );
    json.startObject();

    json.startArray( "tracks" );
    for ( PlayerItems::iterator it=tracks.begin(); it != tracks.end(); it++, track_number++ ) {
        CString track_name, artist_name, album_name, full_name;
        DWORD track_duration_ms;
        bool starred; 

        if ( !studio.getMusicPlayer()->getTrackInfo( (*it), &track_name, &artist_name, &album_name, &track_duration_ms, &starred ) )
            continue;

        json.startObject();
        json.add( "link", (*it) );
        json.add( "number", track_number );
        json.add ("full_name", studio.getMusicPlayer()->getTrackFullName( (*it) ) );    // Legacy for music match
        json.add( "track_name", track_name );
        json.add( "artist_name", artist_name );
        json.add( "album_name", album_name );
        json.add( "duration", track_duration_ms ); 
        json.add( "starred", starred );

        // Collect any audio info available in the cache and queue up the rest
        if ( studio.getMusicPlayer()->getTrackAudioInfo( (*it), &audioInfo, 0L ) == OK ) {
            json.startObject( "audio_info" );
            json.add( "key", audioInfo.key );
            json.add( "mode", audioInfo.mode );
            json.add( "bpm", audioInfo.tempo );
            json.endObject( "audio_info" );
        }

        json.endObject();
    }
    json.endArray( "tracks" );
        
    json.endObject();

    return true;
}
Exemple #5
0
// ----------------------------------------------------------------------------
//
bool HttpRestServices::query_music_playlists( Venue* venue, DMXHttpSession* session, CString& response, LPCSTR data )
{
    JsonBuilder json( response );
    json.startObject();

    PlayerItems playlists;
    studio.getMusicPlayer()->getPlaylists( playlists );

    json.startArray( "playlists" );
    for ( PlayerItems::iterator it=playlists.begin(); it != playlists.end(); it++ ) {
        json.startObject();
        json.add( "link", (*it) );
        json.add( "name", studio.getMusicPlayer()->getPlaylistName( (*it) ) );
        json.endObject();
    }
    json.endArray( "playlists" );
        
    json.endObject();

    return true;
}
Exemple #6
0
// ----------------------------------------------------------------------------
//
static void copyBufferToItemList( LPSTR playlists, PlayerItems& list ) {
    list.clear();

    for ( LPSTR ptr=playlists; *ptr != '\0'; ptr=&ptr[strlen(ptr)+1] )
        list.push_back( ptr );
}