Exemplo n.º 1
0
        /// <summary>
        ///     Guesses the artist and title of a track from its filename.
        /// </summary>
        /// <param name="filename">The filename.</param>
        /// <returns>A guess at the artist and filename</returns>
        public static TrackDetails GuessTrackDetailsFromFilename(string filename)
        {
            filename = (Path.GetFileNameWithoutExtension(filename) + "").Replace("_", " ").Trim();
            var elements = filename.Split('-').ToList();

            var trackDetails = new TrackDetails
            {
                AlbumArtist = "",
                Artist = "",
                Title = "",
                Description = ""
            };

            if (elements.Count > 3) for (var i = 3; i < elements.Count; i++) elements[2] += "-" + elements[i];

            switch (elements.Count)
            {
                case 1:
                    trackDetails.Title = elements[0].Trim();
                    break;
                case 2:
                    trackDetails.Artist = elements[0].Trim();
                    trackDetails.Title = elements[1].Trim();
                    break;
                case 3:
                    int trackNumber;
                    if (int.TryParse(elements[0], out trackNumber))
                    {
                        trackDetails.Artist = elements[1].Trim();
                        trackDetails.Title = elements[2].Trim();
                        trackDetails.TrackNumber = trackNumber.ToString();
                    }
                    else
                    {
                        trackDetails.Artist = elements[0].Trim();
                        trackDetails.Title = (elements[1] + "-" + elements[2]).Trim();
                    }
                    break;
            }

            trackDetails.AlbumArtist = trackDetails.Artist;
            if (trackDetails.Artist.ToLower().StartsWith("various") || trackDetails.Title.Contains("  "))
            {
                trackDetails.Title = trackDetails.Title.Replace("  ", "/");
                elements = trackDetails.Title.Split('/').ToList();
                if (elements.Count == 2)
                {
                    trackDetails.Artist = elements[0].Trim();
                    trackDetails.Title = elements[1].Trim();
                }
            }

            trackDetails.Description = GuessTrackDescription(filename, trackDetails.Artist, trackDetails.Title);

            return trackDetails;
        }
Exemplo n.º 2
0
        private async void UpdateDisplay(TrackDetails track)
        {
            if (!Dispatcher.CheckAccess())
            {
                await Dispatcher.BeginInvoke(new Action(() => UpdateDisplay(track)));

                return;
            }

            currentTrack          = track;
            TrackTitle.Text       = track?.Name ?? "No track";
            TrackArtist.Text      = track?.Artist ?? string.Empty;
            TrackImage.Source     = (await api.GetAlbumArtAsync(AlbumArtSize.Size160)).ToBitmapSource();
            TrackProgress.Maximum = track?.Length.TotalMilliseconds ?? 0;
        }
Exemplo n.º 3
0
            public ReleaseDetails(IDictionary <string, object> data)
            {
                const string ID           = "id";
                const string URI          = "uri";
                const string RESOURCE_URL = "resource_url";
                const string TITLE        = "title";
                const string YEAR         = "year";
                const string ARTISTS      = "artists";
                const string GENRES       = "genres";
                const string TRACKLIST    = "tracklist";

                this.Id          = Convert.ToString(data.GetValueOrDefault(ID));
                this.Url         = Convert.ToString(data.GetValueOrDefault(URI));
                this.ResourceUrl = Convert.ToString(data.GetValueOrDefault(RESOURCE_URL));
                this.Title       = Convert.ToString(data.GetValueOrDefault(TITLE));
                this.Year        = Convert.ToString(data.GetValueOrDefault(YEAR));
                this.Artists     = ArtistDetails.FromResults(data.GetValueOrDefault(ARTISTS) as IList <object>).ToArray();
                this.Genres      = data.GetValueOrDefault(GENRES) is IList <object> genres?genres.OfType <string>().ToArray() : new string[]
                {
                };
                this.Tracks = TrackDetails.FromResults(data.GetValueOrDefault(TRACKLIST) as IList <object>).ToArray();
            }
Exemplo n.º 4
0
        private void AddPitsInfo(SimulatorDataSet dataSet)
        {
            TrackDetails trackDetails =
                TrackDetails.GetTrackDetails(dataSet.SessionInfo.TrackInfo.TrackName, dataSet.SessionInfo.TrackInfo.TrackLayoutName);

            if (trackDetails == null)
            {
                AddPitsUsingTrackDistance(dataSet);
                return;
            }

            foreach (var driverInfo in dataSet.DriversInfo)
            {
                driverInfo.InPits = false;
                var driverName = driverInfo.DriverName;
                if (_driversInPits.Contains(driverName))
                {
                    if (trackDetails.AtPitExit(driverInfo) || (driverInfo.LapDistance > 300 && dataSet.SessionInfo.TrackInfo.LayoutLength.InMeters - driverInfo.LapDistance > 700))
                    {
                        _driversInPits.Remove(driverName);
                        continue;
                    }

                    driverInfo.InPits = true;
                    continue;
                }

                if (!trackDetails.AtPitEntry(driverInfo) && !AddPitsUsingTrackDistance(dataSet, driverInfo, true) &&
                    (dataSet.SessionInfo.SessionType == SessionType.Race ||
                     (dataSet.SessionInfo.SessionTime.TotalSeconds > 5)))
                {
                    continue;
                }

                driverInfo.InPits = true;
                _driversInPits.Add(driverInfo.DriverName);
            }
        }
Exemplo n.º 5
0
 public TrackDetailsViewModel(TrackDetails details)
 {
     Name     = details.Name;
     Location = details.Location;
     Samples  = ConvertStringSamplesToDouble(details.GetDegradationSamples());
 }
Exemplo n.º 6
0
 public TrackChangeEventArgs(TrackDetails newTrack, TrackDetails oldTrack)
 {
     NewTrack = newTrack;
     OldTrack = oldTrack;
 }
Exemplo n.º 7
0
        /// <summary>
        ///     Guesses the artist and title of a track from its filename.
        /// </summary>
        /// <param name="filename">The filename.</param>
        /// <returns>A guess at the artist and filename</returns>
        public static TrackDetails GuessTrackDetailsFromFilename(string filename)
        {
            filename = (Path.GetFileNameWithoutExtension(filename) + "").Replace("_", " ").Trim();
            var elements = filename.Split('-').ToList();

            var trackDetails = new TrackDetails
            {
                AlbumArtist = "",
                Artist      = "",
                Title       = "",
                Description = ""
            };

            if (elements.Count > 3)
            {
                for (var i = 3; i < elements.Count; i++)
                {
                    elements[2] += "-" + elements[i];
                }
            }

            switch (elements.Count)
            {
            case 1:
                trackDetails.Title = elements[0].Trim();
                break;

            case 2:
                trackDetails.Artist = elements[0].Trim();
                trackDetails.Title  = elements[1].Trim();
                break;

            case 3:
                int trackNumber;
                if (int.TryParse(elements[0], out trackNumber))
                {
                    trackDetails.Artist      = elements[1].Trim();
                    trackDetails.Title       = elements[2].Trim();
                    trackDetails.TrackNumber = trackNumber.ToString();
                }
                else
                {
                    trackDetails.Artist = elements[0].Trim();
                    trackDetails.Title  = (elements[1] + "-" + elements[2]).Trim();
                }
                break;
            }

            trackDetails.AlbumArtist = trackDetails.Artist;
            if (trackDetails.Artist.ToLower().StartsWith("various") || trackDetails.Title.Contains("  "))
            {
                trackDetails.Title = trackDetails.Title.Replace("  ", "/");
                elements           = trackDetails.Title.Split('/').ToList();
                if (elements.Count == 2)
                {
                    trackDetails.Artist = elements[0].Trim();
                    trackDetails.Title  = elements[1].Trim();
                }
            }

            trackDetails.Description = GuessTrackDescription(filename, trackDetails.Artist, trackDetails.Title);

            return(trackDetails);
        }