/// <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; }
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; }
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(); }
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); } }
public TrackDetailsViewModel(TrackDetails details) { Name = details.Name; Location = details.Location; Samples = ConvertStringSamplesToDouble(details.GetDegradationSamples()); }
public TrackChangeEventArgs(TrackDetails newTrack, TrackDetails oldTrack) { NewTrack = newTrack; OldTrack = oldTrack; }
/// <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); }