示例#1
0
        /// <summary>
        /// Делает попытку поиска обложки на LastFM
        /// </summary>
        /// <param name="song">Песня, обложку которой будем искать</param>
        /// <returns>True: Обложка найдена</returns>
        public bool FindCover(Song song)
        {
            FoundCoverType = CoverTypes.None;
            Cover.CoverSizes covers = new Cover.CoverSizes();

            //Когда-нибудь я это отрефакторю (или кто-нибудь другой)

            // Получаем инфу о треке, от самой специфичной (для композиции) до самой обобщенной (для артиста)
            // и как только инфа содержит нужную по размерам обложку — прекращаем поиск
            if (!String.IsNullOrEmpty((covers = TrackGetInfo(song.Artist, song.Name).Covers).Large))
            {
                FoundCoverType = CoverTypes.Track;
            }
            else if (!String.IsNullOrEmpty((covers = AlbumGetInfo(song.Artist, song.Album).Covers).Large))
            {
                FoundCoverType = CoverTypes.Album;
            }
            else if (!String.IsNullOrEmpty((covers = ArtistGetInfo(song.Artist).Covers).Large))
            {
                FoundCoverType = CoverTypes.Artist;
            }

            // если нашли хоть одну обложку, то скачиваем и изменяем соответсвующую переменную
            if (FoundCoverType != CoverTypes.None)
            {
                DownloadCover(covers.Large, GetPathFromCoverType(FoundCoverType));
                _isFound = true;
            }

            return _isFound;
        }
示例#2
0
        /*
            {name} - Название песни
            {artist} - Исполнитель песни
            {playlist} - Плейлист
            {album} - Альбом
            {count} - Количество исполнений
            {genre} - Жанр
         */
        public string ProcessTemplate(string template, Song currentSong)
        {
            Dictionary<string, string> replaceDict = new Dictionary<string, string>(6)
            {
                {"{name}", currentSong.Name},
                {"{artist}", currentSong.Artist},
                {"{playlist}", currentSong.Playlist},
                {"{album}", currentSong.Album},
                {"{count}", currentSong.Count.ToString()},
                {"{genre}", currentSong.Genre},
            };

            return TextReplacer.DictonaryReplace(template, replaceDict);
        }
示例#3
0
 public Song GetCurrentSong()
 {
     Song tmp = new Song()
     {
         Album = app.CurrentTrack.Album,
         Artist = app.CurrentTrack.Artist,
         Count = app.CurrentTrack.PlayedCount,
         Genre = app.CurrentTrack.Genre,
         Name = app.CurrentTrack.Name,
         Playlist = app.CurrentTrack.Playlist.Name,
         Cover = GetCover(),
     };
     return tmp;
 }
示例#4
0
 protected virtual void OnSongChanged(Song newsong)
 {
     _previousSong = newsong;
     var handler = SongChanged;
     if (handler != null) handler(this, newsong);
 }
示例#5
0
 private void PlOnSongChanged(object sender, Song newsong)
 {
     songNameLabel.Invoke(changeLabelText, new object[] {songNameLabel, _logic.CurrentSong.Name});
     songArtistLabel.Invoke(changeLabelText, new object[] { songArtistLabel, _logic.CurrentSong.Artist });
     albumArtBox.Invoke(changeBoxImage, new object[] { albumArtBox, _logic.CurrentSong.Cover });
     ProcessTemplate();
     _logic.StatusToChange = textBox2.Text;
 }
示例#6
0
 public AudioEntry SearchAudio(Song song)
 {
     return _audioFactory.Search(String.Format("{0} {1}", song.Artist, song.Name), AudioSortOrder.ByPopularity,
         false, 1, 0, false).First();
 }