content: /*
   * Copyright (c) 2019-2020 5zig Reborn
   * Copyright (c) 2015-2019 5zig
   *
   * This file is part of The 5zig Mod
   * The 5zig Mod is free software: you can redistribute it and/or modify
   * it under the terms of the GNU General Public License as published by
   * the Free Software Foundation, either version 3 of the License, or
   * (at your option) any later version.
   *
   * The 5zig Mod is distributed in the hope that it will be useful,
   * but WITHOUT ANY WARRANTY; without even the implied warranty of
   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   * GNU General Public License for more details.
   *
   * You should have received a copy of the GNU General Public License
   * along with The 5zig Mod.  If not, see <http://www.gnu.org/licenses/>.
   */
  
  package eu.the5zig.mod.manager.spotify;
  
  import java.util.List;
  import java.util.Objects;
  import java.util.stream.Collectors;
  
  public class SpotifyNewTrack {
      private List<SpotifyArtist> artists;
      private long duration_ms;
      private String name;
      private String id;
      private SpotifyAlbum album;
  
      private String base64Image;
  
      public List<SpotifyArtist> getArtists() {
          return artists;
      }
  
      public String getArtistsString() {
          return artists.stream().map(SpotifyArtist::getName).collect(Collectors.joining(", "));
      }
  
      public long getDuration() {
          return duration_ms / 1000;
      }
  
      public String getName() {
          return name;
      }
  
      public String getId() {
          return id;
      }
  
      public String getImage() {
          return base64Image;
      }
  
      public void setImage(String base64Image) {
          this.base64Image = base64Image;
      }
  
      public String getImageUrl() {
          return album.getImages().get(0).getUrl();
      }
  
      @Override
      public boolean equals(Object obj) {
          if (this == obj)
              return true;
          if (obj == null || getClass() != obj.getClass())
              return false;
  
          return Objects.equals(id, ((SpotifyNewTrack) obj).id);
      }
  
      @Override
      public int hashCode() {
          int hash = id.length();
          for(char c : id.toCharArray()) {
              hash ^= c;
          }
          return hash;
      }
  
      public enum Type {
          track, episode, unknown, ad;
      }
  }
  