#37 not tested successfully because of slowness of my laptop

This commit is contained in:
Hamid Reza Mohammadi 2020-11-22 16:58:16 +03:30
parent 03ebfc9bee
commit 4ffa95fa52

View File

@ -187,22 +187,39 @@ namespace RMuseum.Services.Implementation
List<RecitationVerseSync> verseSyncs = new List<RecitationVerseSync>(); List<RecitationVerseSync> verseSyncs = new List<RecitationVerseSync>();
XElement elObject = XDocument.Parse(xml).Root; XElement elObject = XDocument.Parse(xml).Root;
float oneSecond = 1;
if(elObject.Element("PoemAudio").Elements("OneSecondBugFix").Count() == 0)
{
oneSecond = 0.5f;
}
foreach (var syncInfo in elObject.Element("PoemAudio").Element("SyncArray").Elements("SyncInfo")) foreach (var syncInfo in elObject.Element("PoemAudio").Element("SyncArray").Elements("SyncInfo"))
{ {
int verseOrder = int.Parse(syncInfo.Element("VerseOrder").Value); int verseOrder = int.Parse(syncInfo.Element("VerseOrder").Value);
if (verseOrder < 0) //this happens, seems to be a bug, I did not trace it yet if (verseOrder < 0) //this happens, seems to be a bug, I did not trace it yet
verseOrder = 0; verseOrder = 0;
verseOrder++; if(verseOrder == 0)
var verse = verses.Where(v => v.VOrder == verseOrder).SingleOrDefault();
if(verse != null)
{ {
verseSyncs.Add(new RecitationVerseSync() verseSyncs.Add(new RecitationVerseSync()
{ {
VerseOrder = verseOrder, VerseOrder = 0,
VerseText = verse.Text, VerseText = (await _context.GanjoorPoems.Where(p => p.Id == narration.GanjoorPostId).FirstOrDefaultAsync()).Title,
AudioStartMilliseconds = int.Parse(syncInfo.Element("AudioMiliseconds").Value) AudioStartMilliseconds = (int)(oneSecond * int.Parse(syncInfo.Element("AudioMiliseconds").Value))
}); });
} }
else
{
var verse = verses.Where(v => v.VOrder == verseOrder).SingleOrDefault();
if (verse != null)
{
verseSyncs.Add(new RecitationVerseSync()
{
VerseOrder = verseOrder,
VerseText = verse.Text,
AudioStartMilliseconds = (int)(oneSecond * int.Parse(syncInfo.Element("AudioMiliseconds").Value))
});
}
}
} }
return new RServiceResult<RecitationVerseSync[]>(verseSyncs.ToArray()); return new RServiceResult<RecitationVerseSync[]>(verseSyncs.ToArray());