/// <summary> /// Gets all the lines of the given translation (see <see cref="TranslationID"/>). /// </summary> /// <returns>A sequence of the lyrics' lines.</returns> public IEnumerable <ILyricsLine> GetAllLines() { return(from LineNode in this.doc.Descendants("Line") let Text = LineNode.Elements().Where(x => x.Attribute("ID").Value == this.translationID).First().Value let Start = this.TimestampToSeconds(LineNode.Attribute("Start").Value) let End = this.TimestampToSeconds(LineNode.Attribute("End").Value) select new LyricsLine(Start, End, Text)); }
/// <summary> /// Gets the lyrics line(s) at the given playback position. Multiple lines may be returned eg. when /// there are more than one singers. The translation defined in the <see cref="TranslationID"/> property will be used. /// </summary> /// <param name="Seconds">The playback position in seconds.</param> /// <returns>The lyrics line(s)</returns> public IEnumerable <string> GetLyricsLine(double Seconds) { return(from LineNode in this.doc.Descendants("Line") let Text = LineNode.Elements().Where(x => x.Attribute("ID").Value == this.translationID).First().Value let Start = this.TimestampToSeconds(LineNode.Attribute("Start").Value) let End = this.TimestampToSeconds(LineNode.Attribute("End").Value) where Start <= Seconds && Seconds <= End select Text); }