@page @model GanjooRazor.Pages.AudioClipModel @using DNTPersianUtils.Core @{ Layout = null; }
@Model.LastError
} else {@Model.Poem.Category.Poet.Nickname
@for (int i = 1; i < Model.Poem.Category.Cat.Ancestors.Count; i++)
{
@Model.Recitation.AudioTitle
به خوانش @Model.Recitation.AudioArtist
تصویر پسزمینهٔ خوانش یک تصویر تصادفی از سایت unsplash.com است و ارتباطی با محتوای شعر ندارد.
فایل صوتی متناظر را میتوانید در قالب mp3 از این نشانی (اندازه @Html.Raw($"{(Model.Recitation.Mp3SizeInBytes / (1024.0 * 1024.0)):0.00}".ToPersianNumbers()) مگابایت) دریافت کنید.
جهت دریافت خوانش با استفاده از دیوان رومیزی این مطلب را مطالعه بفرمایید. امکان ساخت کلیپهای ویدیویی از خوانشها با استفاده از خوانشگر دیوان رومیزی وجود دارد. جهت مشارکت در خوانش اشعار این صفحه و ویدیوهای آموزشی آن را ببینید.
" would break out of the string. JsonSerializer.Serialize both quotes the value correctly and HTML/JS-escapes '<', '>' and '&' by default, so the whole array can be assigned directly and stays inert as data. *@ var verses = @Html.Raw(System.Text.Json.JsonSerializer.Serialize(Model.Poem.Verses.Select(v => v.Text))); @Html.Raw($" var normaltext = { (Model.Poem.Verses.Where(v => v.VersePosition == RMuseum.Models.Ganjoor.VersePosition.Paragraph).Any() ? "true" : "false") }") function prepareclip(xmlfilename, poemtitle, auartist, oggurl, mp3url, verseArray) { var verseStart = []; var verseEnd = []; var verseIndex = []; var nLastHighlight = -1; var vCount = 0; audioxmlfiles[0] = xmlfilename; var jlist = new jPlayerPlaylist({ jPlayer: "#jquery_jplayer_1", cssSelectorAncestor: "#jp_container_1" }, [ { title: poemtitle, artist: auartist, mp3: mp3url }, ], { setmedia: function(event) { $.ajax({ type: "GET", url: audioxmlfiles[jlist.current], dataType: "xml", success: function(xml) { var nOneSecondBugFix = 2000; $(xml).find('OneSecondBugFix').each(function() { nOneSecondBugFix = parseInt($(xml).find('OneSecondBugFix').text()); }); var v = 0; $(xml).find('SyncInfo').each(function() { verseStart[v] = parseInt($(this).find('AudioMiliseconds').text()) / nOneSecondBugFix; verseIndex[v] = parseInt($(this).find('VerseOrder').text()); if (v > 0) verseEnd[v - 1] = verseStart[v]; v++; }); v--; if (v > 1) verseEnd[v] = verseStart[v] + 2 * (verseEnd[v - 1] - verseStart[v - 1]); vCount = v; } }); }, timeupdate: function(event) { // 4Hz var curTime = event.jPlayer.status.currentTime; if (curTime > 0) { if (normaltext == true) { for (i = 0; i <= vCount; i++) { if (curTime >= verseStart[i] && curTime <= verseEnd[i]) { if (nLastHighlight != verseIndex[i]) { $('#title1').hide(); $('#title2').hide(); $('#title3').hide(); $('#title4').hide(); $('#normal').text(verseArray[verseIndex[i]]); $('#verse1div').css("visibility", "hidden"); $('#verse2div').css("visibility", "hidden"); $('#verse1div').hide(); $('#verse2div').hide(); $('#normaldiv').css("visibility", "visible"); } nLastHighlight = verseIndex[i]; break; } } } else { for (i = 0; i <= vCount; i += 2) { if (curTime >= verseStart[i] && curTime <= verseEnd[i]) { if (nLastHighlight != verseIndex[i]) { $('#title1').hide(); $('#title2').hide(); $('#title3').hide(); $('#title4').hide(); $('#verse1').text(verseArray[verseIndex[i]]); $('#verse2').text(verseArray[verseIndex[i] + 1]); $('#normaldiv').css("visibility", "hidden"); $('#normaldiv').hide(); $('#verse1div').css("visibility", "visible"); $('#verse2div').css("visibility", "visible"); } nLastHighlight = verseIndex[i]; break; } } } } }, ended: function(event) { // 4Hz }, swfPath: "dist/jplayer", supplied: "mp3", wmode: "window", useStateClassSkin: true, autoBlur: false, smoothPlayBar: true, keyEnabled: true, remainingDuration: true, toggleDuration: true }); return jlist; } // @if (ViewData["TrackingScript"] != null && !string.IsNullOrEmpty(ViewData["TrackingScript"].ToString())) { @Html.Raw(ViewData["TrackingScript"]) } }