Package test

Source Code of test.APIexample

/*******************************************************************************
* Copyright (c) 2012 Jens Kristian Villadsen.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the GNU Public License v3.0
* which accompanies this distribution, and is available at
* http://www.gnu.org/licenses/gpl.html
*
* Contributors:
*     Jens Kristian Villadsen - initial API and implementation
******************************************************************************/
package test;

import gmusic.api.impl.GoogleMusicAPI;
import gmusic.api.impl.GoogleSkyJamAPI;
import gmusic.api.interfaces.IGoogleMusicAPI;
import gmusic.api.model.Playlist;
import gmusic.api.model.Playlists;
import gmusic.api.model.Song;
import gmusic.api.skyjam.model.AlbumArtRef;
import gmusic.api.skyjam.model.Track;

import java.io.File;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URISyntaxException;
import java.util.Calendar;
import java.util.Collection;

import org.jaudiotagger.audio.AudioFile;
import org.jaudiotagger.audio.AudioFileIO;
import org.jaudiotagger.tag.FieldKey;
import org.jaudiotagger.tag.Tag;
import org.jaudiotagger.tag.datatype.Artwork;
import org.jaudiotagger.tag.id3.ID3v24Tag;

import com.google.common.io.Files;
import com.google.common.io.Resources;

public class APIexample
{
    public static void main(String args[])
    {
        String password = "";
        String username = "";
        System.out.println(Calendar.getInstance().getTime());
        IGoogleMusicAPI api = new GoogleMusicAPI();
        // IGoogleMusicAPI api = new GoogleSkyJamAPI();
        // GoogleSkyJamAPI api = new GoogleSkyJamAPI(new ApacheConnector(), new
        // JSON(), new File("."));
        // GoogleMusicAPI aa = new GoogleMusicAPI(new ApacheConnector(), new
        // JSON(), new File("."));

        try
        {
            new GoogleSkyJamAPI().login(username, password);
            new GoogleMusicAPI().login(username, password);
        } catch (Exception e)
        {
            e.printStackTrace();
        }

        try
        {
            api.login(username, password);
            // QueryResponse response = api.search("Jane");
            // api.downloadSongs(response.getResults().getSongs());

            Song _song = new Song();
            _song.setId("bc94ef2b-7d16-3815-b1cb-63fbef75b87c");
            api.downloadSong(_song);

            Playlists playlists = api.getAllPlaylists();
            if (playlists.getMagicPlaylists() != null)
            {
                for (Playlist list : playlists.getMagicPlaylists())
                {
                    System.out.println("--- " + list.getTitle() + " "
                            + list.getPlaylistId() + " ---");
                    for (Song song : list.getPlaylist())
                    {
                        System.out.println(song.getName() + " "
                                + song.getArtist());
                    }
                }
            }

            Collection<Song> tracks = api.getAllSongs();

            for (Song track : tracks)
            {
                if (track.getAlbumArtUrl() != null)
                {
                    File track_f = api.downloadSong(track);
                    populateFileWithTuneTags(track_f, track);
                    break;
                }
            }

            for (Playlist list : playlists.getPlaylists())
            {
                System.out.println("--- " + list.getTitle() + " "
                        + list.getPlaylistId() + " ---");
                for (Song song : list.getPlaylist())
                {
                    System.out.println(song.getName() + " " + song.getArtist());
                    if (song.getAlbumArtUrl() != null)
                    {
                        File song_f = api.downloadSong(song);
                        populateFileWithTuneTags(song_f, song);
                        break;
                    }
                }
            }
            Collection<Song> songs = api.getAllSongs();
            api.downloadSong(songs.iterator().next());
            // api.downloadSongs(songs);
        } catch (Exception e)
        {
            e.printStackTrace();
        }
        System.out.println(Calendar.getInstance().getTime());
    }

    private static void toDisk(Song song) throws MalformedURLException,
            IOException, URISyntaxException
    {
        File file = new File(new File(".")
                + System.getProperty("path.separator") + song.getId() + ".dl");
        Files.write(Resources.toByteArray(song.getAlbumArtUrlAsURI().toURL()),
                file);
    }

    private static void populateFileWithTuneTags(File file, Song song)
            throws IOException
    {
        try
        {
            AudioFile f = AudioFileIO.read(file);
            Tag tag = f.getTag();
            if (tag == null)
            {
                tag = new ID3v24Tag();
            }
            tag.setField(FieldKey.ALBUM, song.getAlbum());
            tag.setField(FieldKey.ALBUM_ARTIST, song.getAlbumArtist());
            tag.setField(FieldKey.ARTIST, song.getArtist());
            tag.setField(FieldKey.COMPOSER, song.getComposer());
            tag.setField(FieldKey.DISC_NO, String.valueOf(song.getDisc()));
            tag.setField(FieldKey.DISC_TOTAL,
                    String.valueOf(song.getTotalDiscs()));
            tag.setField(FieldKey.GENRE, song.getGenre());
            tag.setField(FieldKey.TITLE, song.getTitle());
            tag.setField(FieldKey.TRACK, String.valueOf(song.getTrack()));
            tag.setField(FieldKey.TRACK_TOTAL,
                    String.valueOf(song.getTotalTracks()));
            tag.setField(FieldKey.YEAR, String.valueOf(song.getYear()));

            if (song.getAlbumArtUrl() != null)
            {
                Artwork artwork = new Artwork();
                artwork.setBinaryData(Resources.toByteArray(song
                        .getAlbumArtUrlAsURI().toURL()));
                tag.addField(artwork);

                /*
                 * File imageFile = new File(new File(".") +
                 * System.getProperty("path.separator") + song.getId() + ".im");
                 * Files
                 * .write(Resources.toByteArray(song.getAlbumArtUrlAsURI().toURL
                 * ()), imageFile); artwork.setFromFile(imageFile);
                 */
            }

            f.setTag(tag);
            AudioFileIO.write(f);
        } catch (Exception e)
        {
            throw new IOException(e);
        }
    }

    private static void populateFileWithTuneTags(File file, Track track)
            throws IOException
    {
        try
        {
            AudioFile f = AudioFileIO.read(file);
            Tag tag = f.getTag();
            if (tag == null)
            {
                tag = new ID3v24Tag();
            }
            tag.setField(FieldKey.ALBUM, track.getAlbum());
            tag.setField(FieldKey.ALBUM_ARTIST, track.getAlbumArtist());
            tag.setField(FieldKey.ARTIST, track.getArtist());
            tag.setField(FieldKey.COMPOSER, track.getComposer());
            tag.setField(FieldKey.DISC_NO,
                    String.valueOf(track.getDiscNumber()));
            tag.setField(FieldKey.DISC_TOTAL,
                    String.valueOf(track.getTotalDiscCount()));
            tag.setField(FieldKey.GENRE, track.getGenre());
            tag.setField(FieldKey.TITLE, track.getTitle());
            tag.setField(FieldKey.TRACK, String.valueOf(track.getTrackNumber()));
            tag.setField(FieldKey.TRACK_TOTAL,
                    String.valueOf(track.getTotalTrackCount()));
            tag.setField(FieldKey.YEAR, String.valueOf(track.getYear()));

            if (track.getAlbumArtRef() != null
                    && !track.getAlbumArtRef().isEmpty())
            {
                AlbumArtRef[] array = track.getAlbumArtRef().toArray(
                        new AlbumArtRef[track.getAlbumArtRef().size()]);
                for (int i = 0; i < array.length; i++)
                {
                    Artwork artwork = new Artwork();
                    File imageFile = new File(new File(".")
                            + System.getProperty("path.separator")
                            + track.getId() + ".im");
                    Files.write(Resources.toByteArray(array[i].getUrlAsURI()
                            .toURL()), imageFile);
                    artwork.setFromFile(imageFile);
                    tag.addField(artwork);

                    artwork.setFromFile(imageFile);
                    tag.addField(artwork);
                }
            }

            f.setTag(tag);
            AudioFileIO.write(f);
        } catch (Exception e)
        {
            throw new IOException(e);
        }
    }
}
TOP

Related Classes of test.APIexample

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.