public Detail(Playlist playlist)
        {
            Data        = playlist;
            Title       = playlist.Title;
            Intro       = $"by {TimeHelper.ConverIntToString(playlist.Duration)} {Language.Get("strTRACK")}-{playlist.NumberOfTracks} {Language.Get("strVIDEO")}-{playlist.NumberOfVideos}";
            CoverUrl    = playlist.CoverUrl;
            ReleaseDate = $"{Language.Get("strDescription")} {playlist.Description}";

            for (int i = 0; i < playlist.Tracks.Count; i++)
            {
                Items.Add(new Item()
                {
                    Title    = playlist.Tracks[i].Title,
                    Type     = "Track",
                    Flag     = playlist.Tracks[i].FlagShort,
                    Duration = playlist.Tracks[i].DurationStr,
                    Album    = playlist.Tracks[i].Album.Title,
                    Data     = playlist.Tracks[i]
                });
            }
            for (int i = 0; i < playlist.Videos.Count; i++)
            {
                Items.Add(new Item()
                {
                    Title    = playlist.Videos[i].Title,
                    Type     = "Video",
                    Flag     = playlist.Videos[i].FlagShort,
                    Duration = playlist.Videos[i].DurationStr,
                    Album    = playlist.Videos[i].Album == null ? null : playlist.Videos[i].Album.Title,
                    Data     = playlist.Videos[i]
                });
            }
        }
 public void Load(SearchResult SearchInfo)
 {
     ShowWait        = Visibility.Hidden;
     ArtistList      = new List <SearchItem>();
     AlbumList       = new List <SearchItem>();
     TrackList       = new List <SearchItem>();
     VideoList       = new List <SearchItem>();
     this.SearchInfo = SearchInfo;
     foreach (Artist item in SearchInfo.Artists)
     {
         ArtistList.Add(new SearchItem(item.Name, item.ID, ""));
     }
     foreach (Album item in SearchInfo.Albums)
     {
         AlbumList.Add(new SearchItem(item.Title, item.Artists[0].Name, TimeHelper.ConverIntToString(item.Duration)));
     }
     foreach (Track item in SearchInfo.Tracks)
     {
         TrackList.Add(new SearchItem(item.Title, item.Artists[0].Name, TimeHelper.ConverIntToString(item.Duration)));
     }
     foreach (Video item in SearchInfo.Videos)
     {
         VideoList.Add(new SearchItem(item.Title, item.Artists[0].Name, TimeHelper.ConverIntToString(item.Duration)));
     }
 }
        public Detail(Album album)
        {
            Data        = album;
            Title       = album.Title;
            Intro       = $"by {album.ArtistsName}-{TimeHelper.ConverIntToString(album.Duration)} {Language.Get("strTRACK")}-{album.NumberOfTracks} {Language.Get("strVIDEO")}-{album.NumberOfVideos}";
            CoverUrl    = album.CoverUrl;
            ReleaseDate = $"{Language.Get("strReleaseDate")} {album.ReleaseDate}";
            Flag        = album.Flag;

            for (int i = 0; i < album.NumberOfTracks && i < album.Tracks.Count; i++)
            {
                Items.Add(new Item()
                {
                    Title    = album.Tracks[i].DisplayTitle,
                    Type     = "Track",
                    Flag     = album.Tracks[i].FlagShort,
                    Duration = album.Tracks[i].DurationStr,
                    Album    = album.Tracks[i].Album.Title,
                    Data     = album.Tracks[i]
                });
            }
            for (int i = 0; i < album.Videos.Count; i++)
            {
                Items.Add(new Item()
                {
                    Title    = album.Videos[i].Title,
                    Type     = "Video",
                    Flag     = album.Videos[i].FlagShort,
                    Duration = TimeHelper.ConverIntToString(album.Videos[i].Duration),
                    Album    = album.Videos[i].Album == null ? null : album.Videos[i].Album.Title,
                    Data     = album.Videos[i]
                });
            }
        }
        public MainListItemViewModel(object data, BindableCollection <MainListItemViewModel> parents)
        {
            AddYear    = Config.AddYear();
            Parents    = parents;
            DLItemList = new ObservableCollection <DownloadItem>();
            if (data.GetType() == typeof(Album))
            {
                Album album = (Album)data;
                Title    = album.Title;
                BasePath = TidalTool.getAlbumFolder(Config.OutputDir(), album, AddYear);
                Desc     = string.Format("by {0}-{1} Tracks-{2} Videos-{3}", album.Artist.Name, TimeHelper.ConverIntToString(album.Duration), album.NumberOfTracks, album.NumberOfVideos);
                Cover    = AIGS.Common.Convert.ConverByteArrayToBitmapImage(album.CoverData);

                AddAlbum(album);
            }
            else if (data.GetType() == typeof(Video))
            {
                Video video = (Video)data;
                Title    = video.Title;
                BasePath = TidalTool.getVideoFolder(Config.OutputDir());
                Desc     = string.Format("by {0}-{1}", video.Artist.Name, TimeHelper.ConverIntToString(video.Duration));
                Cover    = AIGS.Common.Convert.ConverByteArrayToBitmapImage(video.CoverData);
                DLItemList.Add(new DownloadItem(DLItemList.Count + 1, null, video, null));
            }
            else if (data.GetType() == typeof(Artist))
            {
                Artist artist = (Artist)data;
                Title    = artist.Name;
                BasePath = TidalTool.getArtistFolder(Config.OutputDir(), artist);
                Desc     = string.Format("by {0} Albums-{1}", artist.Name, artist.Albums.Count);
                Cover    = AIGS.Common.Convert.ConverByteArrayToBitmapImage(artist.CoverData);

                foreach (var item in artist.Albums)
                {
                    AddAlbum(item);
                }
            }
            else if (data.GetType() == typeof(Playlist))
            {
                Playlist plist = (Playlist)data;
                Title    = plist.Title;
                BasePath = TidalTool.getPlaylistFolder(Config.OutputDir(), plist);
                //Desc         = string.Format("by {0}-{1} Tracks-{2} Videos-{3}", plist.Created, TimeHelper.ConverIntToString(plist.Duration), plist.NumberOfTracks, plist.NumberOfVideos);
                Desc  = string.Format("{0} Tracks-{1} Videos-{2}", TimeHelper.ConverIntToString(plist.Duration), plist.NumberOfTracks, plist.NumberOfVideos);
                Cover = AIGS.Common.Convert.ConverByteArrayToBitmapImage(plist.CoverData);
                foreach (Track item in plist.Tracks)
                {
                    DLItemList.Add(new DownloadItem(DLItemList.Count + 1, item, null, album: null, plist: plist));
                }
                foreach (Video item in plist.Videos)
                {
                    DLItemList.Add(new DownloadItem(DLItemList.Count + 1, null, item, album: null, plist: plist));
                }
            }

            PathHelper.Mkdirs(BasePath);
        }
Example #5
0
 public object Load(object data)
 {
     if (data.GetType() == typeof(Artist))
     {
         Artist artist = (Artist)data;
         Header      = "ARTISTINFO";
         Title       = artist.Name;
         Intro       = string.Format("by {0} Albums-{1}", artist.Name, artist.Albums.Count);
         Cover       = AIGS.Common.Convert.ConverByteArrayToBitmapImage(artist.CoverData);
         ReleaseDate = "";
         ItemList    = new ObservableCollection <InfoItem>();
         if (artist.Albums != null)
         {
             foreach (Album item in artist.Albums)
             {
                 ItemList.Add(new InfoItem(artist.Albums.IndexOf(item) + 1, item.Title, TimeHelper.ConverIntToString(item.Duration), item.Title));
             }
         }
     }
     if (data.GetType() == typeof(Album))
     {
         Album album = (Album)data;
         Header      = "ALBUMINFO";
         Title       = album.Title;
         Intro       = string.Format("by {0}-{1} Tracks-{2} Videos-{3}", album.Artist.Name, TimeHelper.ConverIntToString(album.Duration), album.NumberOfTracks, album.NumberOfVideos);
         Cover       = AIGS.Common.Convert.ConverByteArrayToBitmapImage(album.CoverData);
         ReleaseDate = "Release date " + album.ReleaseDate;
         ItemList    = new ObservableCollection <InfoItem>();
         if (album.Tracks != null)
         {
             foreach (Track item in album.Tracks)
             {
                 ItemList.Add(new InfoItem(item.TrackNumber, item.Title, TimeHelper.ConverIntToString(item.Duration), item.Album.Title));
             }
         }
         if (album.Videos != null)
         {
             foreach (Video item in album.Videos)
             {
                 ItemList.Add(new InfoItem(item.TrackNumber, item.Title, TimeHelper.ConverIntToString(item.Duration), item.Album.Title, "VIDEO"));
             }
         }
     }
     else if (data.GetType() == typeof(Video))
     {
         Video video = (Video)data;
         Header      = "VIDEOINFO";
         Title       = video.Title;
         Cover       = AIGS.Common.Convert.ConverByteArrayToBitmapImage(video.CoverData);
         Intro       = string.Format("by {0}-{1}", video.Artist.Name, TimeHelper.ConverIntToString(video.Duration));
         ReleaseDate = "Release date " + video.ReleaseDate;
         ItemList    = new ObservableCollection <InfoItem>();
         ItemList.Add(new InfoItem(0, video.Title, TimeHelper.ConverIntToString(video.Duration), video.Album == null ? "" : video.Album.Title, "VIDEO"));
     }
     return(data);
 }
 public void Load(SearchResult SearchInfo)
 {
     this.SearchInfo = SearchInfo;
     foreach (Album item in SearchInfo.Albums)
     {
         AlbumList.Add(new SearchItem(item.Title, item.Artists[0].Name, TimeHelper.ConverIntToString(item.Duration)));
     }
     foreach (Track item in SearchInfo.Tracks)
     {
         TrackList.Add(new SearchItem(item.Title, item.Artists[0].Name, TimeHelper.ConverIntToString(item.Duration)));
     }
     foreach (Video item in SearchInfo.Videos)
     {
         VideoList.Add(new SearchItem(item.Title, item.Artists[0].Name, TimeHelper.ConverIntToString(item.Duration)));
     }
 }
 public Detail(Track track)
 {
     Data        = track;
     Title       = track.Title;
     Intro       = $"by {track.ArtistsName}-{TimeHelper.ConverIntToString(track.Duration)}";
     CoverUrl    = track.Album.CoverUrl;
     ReleaseDate = $"Release date {track.Album.ReleaseDate}";
     Flag        = track.Flag;
     Items.Add(new Item()
     {
         Title    = track.DisplayTitle,
         Type     = "Track",
         Flag     = track.Flag,
         Duration = track.DurationStr,
         Album    = track.Album == null ? null : track.Album.Title,
         Data     = track
     });
 }
 public Detail(Video video)
 {
     Data        = video;
     Title       = video.Title;
     Intro       = $"by {video.ArtistsName}-{TimeHelper.ConverIntToString(video.Duration)}";
     CoverUrl    = video.CoverUrl;
     ReleaseDate = $"Release date {video.ReleaseDate}";
     Flag        = video.Flag;
     Items.Add(new Item()
     {
         Title    = video.Title,
         Type     = "Video",
         Flag     = video.FlagShort,
         Duration = TimeHelper.ConverIntToString(video.Duration),
         Album    = video.Album == null ? null : video.Album.Title,
         Data     = video
     });
 }
        public Detail(Artist artist)
        {
            Data        = artist;
            Title       = artist.Name;
            Intro       = $"by {artist.Name} Albums-{artist.Albums.Count}";
            CoverUrl    = artist.CoverUrl;
            ReleaseDate = $"Artist types: {string.Join(" / ", artist.ArtistTypes)}";

            for (int i = 0; i < artist.Albums.Count; i++)
            {
                Items.Add(new Item()
                {
                    Title    = artist.Albums[i].Title,
                    Type     = "Album",
                    Flag     = artist.Albums[i].FlagShort,
                    Duration = TimeHelper.ConverIntToString(artist.Albums[i].Duration),
                    Album    = artist.Albums[i].Title,
                    Data     = artist.Albums[i]
                });
            }
        }
        public object Load(object data)
        {
            AllCheck   = true;
            Data       = data;
            FlagDetail = "";
            Modes      = "";
            if (data.GetType() == typeof(Playlist))
            {
                Playlist plist = (Playlist)data;
                Header = "PLAYLISTINFO";
                Title  = plist.Title;
                //Intro          = string.Format("by {0}-{1} Tracks-{2} Videos-{3}", plist.Created, TimeHelper.ConverIntToString(plist.Duration), plist.NumberOfTracks, plist.NumberOfVideos);
                Intro       = string.Format("{0} Tracks-{1} Videos-{2}", TimeHelper.ConverIntToString(plist.Duration), plist.NumberOfTracks, plist.NumberOfVideos);
                Cover       = AIGS.Common.Convert.ConverByteArrayToBitmapImage(plist.CoverData);
                ReleaseDate = "";
                ItemList    = new ObservableCollection <InfoItem>();
                if (plist.Tracks != null)
                {
                    foreach (Track item in plist.Tracks)
                    {
                        ItemList.Add(new InfoItem(plist.Tracks.IndexOf(item) + 1, item.Title, TimeHelper.ConverIntToString(item.Duration), item.Album.Title, item, flag: TidalTool.getFlag(item)));
                    }
                }
                if (plist.Videos != null)
                {
                    foreach (Video item in plist.Videos)
                    {
                        ItemList.Add(new InfoItem(plist.Tracks.Count + plist.Videos.IndexOf(item) + 1, item.Title, TimeHelper.ConverIntToString(item.Duration), item.Title, item, "VIDEO"));
                    }
                }
            }
            else if (data.GetType() == typeof(Artist))
            {
                Artist artist = (Artist)data;
                Header      = "ARTISTINFO";
                Title       = artist.Name;
                Intro       = string.Format("by {0} Albums-{1}", artist.Name, artist.Albums.Count);
                Cover       = AIGS.Common.Convert.ConverByteArrayToBitmapImage(artist.CoverData);
                ReleaseDate = "";
                ItemList    = new ObservableCollection <InfoItem>();
                if (artist.Albums != null)
                {
                    foreach (Album item in artist.Albums)
                    {
                        ItemList.Add(new InfoItem(artist.Albums.IndexOf(item) + 1, item.Title, TimeHelper.ConverIntToString(item.Duration), item.Title, item, "ALBUM", flag: TidalTool.getFlag(item)));
                    }
                }
            }
            else if (data.GetType() == typeof(Album))
            {
                Album album = (Album)data;
                Header      = "ALBUMINFO";
                Title       = album.Title;
                Intro       = string.Format("by {0}-{1} Tracks-{2} Videos-{3}", album.Artist.Name, TimeHelper.ConverIntToString(album.Duration), album.NumberOfTracks, album.NumberOfVideos);
                Cover       = AIGS.Common.Convert.ConverByteArrayToBitmapImage(album.CoverData);
                ReleaseDate = "Release date " + album.ReleaseDate;
                ItemList    = new ObservableCollection <InfoItem>();
                if (album.Tracks != null)
                {
                    foreach (Track item in album.Tracks)
                    {
                        ItemList.Add(new InfoItem(item.TrackNumber, item.Title, TimeHelper.ConverIntToString(item.Duration), item.Album.Title, item, flag: TidalTool.getFlag(item)));
                    }
                }
                if (album.Videos != null)
                {
                    foreach (Video item in album.Videos)
                    {
                        ItemList.Add(new InfoItem(item.TrackNumber, item.Title, TimeHelper.ConverIntToString(item.Duration), item.Album.Title, item, "VIDEO"));
                    }
                }

                //FlagDetail
                if (album.AudioQuality == "HI_RES")
                {
                    FlagDetail += "Master ";
                }
                if (album.Explicit)
                {
                    FlagDetail += "Explicit";
                }

                //Modes
                if (album.AudioModes != null && album.AudioModes.Count() > 0)
                {
                    foreach (var item in album.AudioModes)
                    {
                        Modes += item + " ";
                    }
                }
            }
            else if (data.GetType() == typeof(Video))
            {
                Video video = (Video)data;
                Header      = "VIDEOINFO";
                Title       = video.Title;
                Cover       = AIGS.Common.Convert.ConverByteArrayToBitmapImage(video.CoverData);
                Intro       = string.Format("by {0}-{1}", video.Artist.Name, TimeHelper.ConverIntToString(video.Duration));
                ReleaseDate = "Release date " + video.ReleaseDate;
                ItemList    = new ObservableCollection <InfoItem>();
                ItemList.Add(new InfoItem(0, video.Title, TimeHelper.ConverIntToString(video.Duration), video.Album == null ? "" : video.Album.Title, data, "VIDEO"));
            }
            return(data);
        }
        public object Load(object data)
        {
            if (data.GetType() == typeof(ArtistAlbumList))
            {
                ArtistAlbumList artistAlbumList = (ArtistAlbumList)data;
                Header      = "ARTISTALBUMLIST";
                Title       = artistAlbumList.Albums[0].Artist.Name;
                Intro       = string.Format("Albums {0}", artistAlbumList.TotalAlbums);
                ReleaseDate = "";

                ItemList     = new ObservableCollection <InfoItem>();
                QualityWidth = 90;
                // Add every track from every album!
                foreach (Album album in artistAlbumList.Albums)
                {
                    if (album.Tracks != null)
                    {
                        foreach (Track item in album.Tracks)
                        {
                            ItemList.Add(new InfoItem(item.TrackNumber, item.Title, item.SDuration, item.Album.Title));
                        }
                    }
                }
            }
            else if (data.GetType() == typeof(Album))
            {
                Album album = (Album)data;
                Header      = "ALBUMINFO";
                Title       = album.Title;
                Intro       = string.Format("by {0}-{1} Tracks-{2} Videos-{3}", album.Artist.Name, TimeHelper.ConverIntToString(album.Duration), album.NumberOfTracks, album.NumberOfVideos);
                Cover       = AIGS.Common.Convert.ConverByteArrayToBitmapImage(album.CoverData);
                ReleaseDate = "Release date " + album.ReleaseDate;
                ItemList    = new ObservableCollection <InfoItem>();
                if (album.Tracks.Count > 0)
                {
                    QualityWidth = 90;
                }

                if (album.Tracks != null)
                {
                    foreach (Track item in album.Tracks)
                    {
                        ItemList.Add(new InfoItem(item.TrackNumber, item.Title, item.SDuration, item.Album.Title));
                    }
                }
                if (album.Videos != null)
                {
                    foreach (Video item in album.Videos)
                    {
                        ItemList.Add(new InfoItem(item.TrackNumber, item.Title, item.SDuration, item.Album.Title, "VIDEO"));
                    }
                }
            }
            else if (data.GetType() == typeof(Video))
            {
                Video video = (Video)data;
                Header       = "VIDEOINFO";
                Title        = video.Title;
                Intro        = string.Format("by {0}-{1}", video.Artist.Name, video.SDuration);
                Cover        = AIGS.Common.Convert.ConverByteArrayToBitmapImage(video.CoverData);
                ReleaseDate  = "Release date " + video.ReleaseDate;
                ItemList     = new ObservableCollection <InfoItem>();
                QualityWidth = 0;
                ItemList.Add(new InfoItem(0, video.Title, video.SDuration, video.Album == null? "" : video.Album.Title, "VIDEO"));
            }

            //Init QualityList
            QualityList        = Config.QualityList();
            SelectQualityIndex = Config.QualityIndex();

            //Read OutputPath
            OutputDir = Config.OutputDir();

            return(data);
        }
Example #12
0
 public void Load(SearchResult SearchInfo)
 {
     ShowWait = Visibility.Hidden;
     PlayList = new List<SearchItem>();
     ArtistList = new List<SearchItem>();
     AlbumList = new List<SearchItem>();
     TrackList = new List<SearchItem>();
     VideoList = new List<SearchItem>();
     this.SearchInfo = SearchInfo;
     foreach (Playlist item in SearchInfo.Playlists)
         PlayList.Add(new SearchItem(SearchInfo.Playlists.IndexOf(item) + 1, item.Title, item.Title, TimeHelper.ConverIntToString(item.Duration)));
     foreach (Artist item in SearchInfo.Artists)
         ArtistList.Add(new SearchItem(SearchInfo.Artists.IndexOf(item) + 1, item.Name, item.Name, ""));
     foreach (Album item in SearchInfo.Albums)
         AlbumList.Add(new SearchItem(SearchInfo.Albums.IndexOf(item) + 1, item.Title, item.Artists[0].Name, TimeHelper.ConverIntToString(item.Duration)));
     foreach (Track item in SearchInfo.Tracks)
         TrackList.Add(new SearchItem(SearchInfo.Tracks.IndexOf(item) + 1, item.Title, item.Artists[0].Name, TimeHelper.ConverIntToString(item.Duration)));
     foreach (Video item in SearchInfo.Videos)
         VideoList.Add(new SearchItem(SearchInfo.Videos.IndexOf(item) + 1, item.Title, item.Artists[0].Name, TimeHelper.ConverIntToString(item.Duration)));
 }
Example #13
0
        public void LoadDetail(object data)
        {
            if (data == null)
            {
                return;
            }

            Detail      = new DetailRecord();
            Detail.Data = data;
            if (data.GetType() == typeof(Album))
            {
                Album album = (Album)data;
                Detail.Header      = "ALBUMINFO";
                Detail.Title       = album.Title;
                Detail.Intro       = string.Format("by {0}-{1} Tracks-{2} Videos-{3}", album.Artist.Name, TimeHelper.ConverIntToString(album.Duration), album.NumberOfTracks, album.NumberOfVideos);
                Detail.Cover       = AIGS.Common.Convert.ConverByteArrayToBitmapImage(album.CoverData);
                Detail.ReleaseDate = "Release date " + album.ReleaseDate;
                Detail.ItemList    = new ObservableCollection <DetailRecord.Item>();
                if (album.Tracks != null)
                {
                    foreach (Track item in album.Tracks)
                    {
                        item.WaitDownload = true;
                        Detail.ItemList.Add(new DetailRecord.Item(item.Title, TimeHelper.ConverIntToString(item.Duration), item.Album.Title, item, flag: TidalTool.getFlag(item)));
                    }
                }
                if (album.Videos != null)
                {
                    foreach (Video item in album.Videos)
                    {
                        item.WaitDownload = true;
                        Detail.ItemList.Add(new DetailRecord.Item(item.Title, TimeHelper.ConverIntToString(item.Duration), item.Album.Title, item, "VIDEO", flag: TidalTool.getFlag(item)));
                    }
                }

                //FlagDetail
                if (album.AudioQuality == "HI_RES")
                {
                    Detail.FlagDetail += "Master ";
                }
                if (album.Explicit)
                {
                    Detail.FlagDetail += "Explicit";
                }

                //Modes
                if (album.AudioModes != null && album.AudioModes.Length > 0)
                {
                    foreach (var item in album.AudioModes)
                    {
                        Detail.Modes += item + " ";
                    }
                }
            }
            else if (data.GetType() == typeof(Video))
            {
                Video video = (Video)data;
                video.WaitDownload = true;
                Detail.Header      = "VIDEOINFO";
                Detail.Title       = video.Title;
                Detail.Cover       = AIGS.Common.Convert.ConverByteArrayToBitmapImage(video.CoverData);
                Detail.Intro       = string.Format("by {0}-{1}", video.Artist.Name, TimeHelper.ConverIntToString(video.Duration));
                Detail.ReleaseDate = "Release date " + video.ReleaseDate;
                Detail.ItemList    = new ObservableCollection <DetailRecord.Item>();
                Detail.ItemList.Add(new DetailRecord.Item(video.Title, TimeHelper.ConverIntToString(video.Duration), video.Album == null ? "" : video.Album.Title, data, "VIDEO"));

                if (video.Explicit)
                {
                    Detail.FlagDetail += "Explicit";
                }
                //Detail.Modes += video.Quality;
            }
            else if (data.GetType() == typeof(Artist))
            {
                Artist artist = (Artist)data;
                Detail.Header      = "ARTISTINFO";
                Detail.Title       = artist.Name;
                Detail.Intro       = string.Format("by {0} Albums-{1}", artist.Name, artist.Albums.Count);
                Detail.Cover       = AIGS.Common.Convert.ConverByteArrayToBitmapImage(artist.CoverData);
                Detail.ReleaseDate = "";
                Detail.ItemList    = new ObservableCollection <DetailRecord.Item>();
                if (artist.Albums != null)
                {
                    foreach (Album item in artist.Albums)
                    {
                        item.WaitDownload = true;
                        Detail.ItemList.Add(new DetailRecord.Item(item.Title, TimeHelper.ConverIntToString(item.Duration), item.Title, item, "ALBUM", flag: TidalTool.getFlag(item)));
                    }
                }
            }
            else if (data.GetType() == typeof(Playlist))
            {
                Playlist plist = (Playlist)data;
                Detail.Header      = "PLAYLISTINFO";
                Detail.Title       = plist.Title;
                Detail.Intro       = string.Format("{0} Tracks-{1} Videos-{2}", TimeHelper.ConverIntToString(plist.Duration), plist.NumberOfTracks, plist.NumberOfVideos);
                Detail.Cover       = AIGS.Common.Convert.ConverByteArrayToBitmapImage(plist.CoverData);
                Detail.ReleaseDate = "";
                Detail.ItemList    = new ObservableCollection <DetailRecord.Item>();
                if (plist.Tracks != null)
                {
                    foreach (Track item in plist.Tracks)
                    {
                        item.WaitDownload = true;
                        Detail.ItemList.Add(new DetailRecord.Item(item.Title, TimeHelper.ConverIntToString(item.Duration), item.Album.Title, item, flag: TidalTool.getFlag(item)));
                    }
                }
                if (plist.Videos != null)
                {
                    foreach (Video item in plist.Videos)
                    {
                        item.WaitDownload = true;
                        Detail.ItemList.Add(new DetailRecord.Item(item.Title, TimeHelper.ConverIntToString(item.Duration), item.Title, item, "VIDEO"));
                    }
                }
            }
        }
        public AlbumInfo(Album info)
        {
            InitializeComponent();

            m_Info                 = info;
            m_CTitle.Content       = info.Title;
            m_CReleaseDate.Content = "Release date " + info.ReleaseDate;
            m_CIntro.Content       = string.Format("by {0}-{1} Tracks-{2}", info.Artist.Name, info.NumberOfTracks, TimeHelper.ConverIntToString(info.Duration));
            m_CList.ItemsSource    = info.Tracks;
            m_CImage.Source        = AIGS.Common.Convert.ConverByteArrayToBitmapImage(info.CoverData);
        }
        public TaskViewModel(object data, DownloadViewModel parent)
        {
            VMParent = parent;
            if (data.GetType() == typeof(Album))
            {
                Album album = (Album)data;
                Title    = album.Title;
                BasePath = TidalTool.getAlbumFolder(Config.OutputDir(), album, Config.AddYear());
                Desc     = string.Format("by {0}-{1} Tracks-{2} Videos-{3}", album.Artist.Name, TimeHelper.ConverIntToString(album.Duration), album.NumberOfTracks, album.NumberOfVideos);
                Cover    = AIGS.Common.Convert.ConverByteArrayToBitmapImage(album.CoverData);

                if (Config.SaveCovers())
                {
                    string CoverPath = TidalTool.getAlbumCoverPath(Config.OutputDir(), album, Config.AddYear());
                    FileHelper.Write(album.CoverData, true, CoverPath);
                }

                for (int i = 0; album.Tracks != null && i < album.Tracks.Count; i++)
                {
                    if (album.Tracks[i].WaitDownload)
                    {
                        ItemList.Add(new TrackTask(album.Tracks[i], ItemList.Count + 1, RecieveDownloadOver, album));
                    }
                }
                for (int i = 0; album.Videos != null && i < album.Videos.Count; i++)
                {
                    if (album.Videos[i].WaitDownload)
                    {
                        ItemList.Add(new VideoTask(album.Videos[i], ItemList.Count + 1, RecieveDownloadOver, album));
                    }
                }
            }
            else if (data.GetType() == typeof(Video))
            {
                Video video = (Video)data;
                Title    = video.Title;
                BasePath = TidalTool.getVideoFolder(Config.OutputDir());
                Desc     = string.Format("by {0}-{1}", video.Artist.Name, TimeHelper.ConverIntToString(video.Duration));
                Cover    = AIGS.Common.Convert.ConverByteArrayToBitmapImage(video.CoverData);

                if (video.WaitDownload)
                {
                    ItemList.Add(new VideoTask(video, 1, RecieveDownloadOver));
                }
            }
            else if (data.GetType() == typeof(Artist))
            {
                Artist artist = (Artist)data;
                Title    = artist.Name;
                BasePath = TidalTool.getArtistFolder(Config.OutputDir(), artist);
                Desc     = string.Format("by {0} Albums-{1}", artist.Name, artist.Albums.Count);
                Cover    = AIGS.Common.Convert.ConverByteArrayToBitmapImage(artist.CoverData);

                foreach (var item in artist.Albums)
                {
                    if (!item.WaitDownload)
                    {
                        continue;
                    }
                    for (int i = 0; item.Tracks != null && i < item.Tracks.Count; i++)
                    {
                        ItemList.Add(new TrackTask(item.Tracks[i], ItemList.Count + 1, RecieveDownloadOver, item));
                    }
                    for (int i = 0; item.Videos != null && i < item.Videos.Count; i++)
                    {
                        ItemList.Add(new VideoTask(item.Videos[i], ItemList.Count + 1, RecieveDownloadOver, item));
                    }
                }
            }
            else if (data.GetType() == typeof(Playlist))
            {
                Playlist plist = (Playlist)data;
                Title    = plist.Title;
                BasePath = TidalTool.getPlaylistFolder(Config.OutputDir(), plist);
                Desc     = string.Format("{0} Tracks-{1} Videos-{2}", TimeHelper.ConverIntToString(plist.Duration), plist.NumberOfTracks, plist.NumberOfVideos);
                Cover    = AIGS.Common.Convert.ConverByteArrayToBitmapImage(plist.CoverData);

                for (int i = 0; plist.Tracks != null && i < plist.Tracks.Count; i++)
                {
                    if (plist.Tracks[i].WaitDownload)
                    {
                        ItemList.Add(new TrackTask(plist.Tracks[i], ItemList.Count + 1, RecieveDownloadOver, null, plist));
                    }
                }
                for (int i = 0; plist.Videos != null && i < plist.Videos.Count; i++)
                {
                    if (plist.Videos[i].WaitDownload)
                    {
                        ItemList.Add(new VideoTask(plist.Videos[i], ItemList.Count + 1, RecieveDownloadOver, null, plist));
                    }
                }
            }
        }