#166 mundex by poet page
This commit is contained in:
parent
42b8cdc3c5
commit
0ae8f15233
@ -1,7 +1,6 @@
|
||||
using DNTPersianUtils.Core;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Newtonsoft.Json;
|
||||
using Newtonsoft.Json.Linq;
|
||||
using RMuseum.DbContext;
|
||||
using RMuseum.Models.Ganjoor;
|
||||
using RSecurityBackend.Models.Generic;
|
||||
@ -98,6 +97,75 @@ namespace RMuseum.Services.Implementation
|
||||
await _UpdatePageHtmlText(context, editingUserId, dbPage, "به روزرسانی خودکار صفحهٔ نمایهٔ موسیقی", htmlText);
|
||||
}
|
||||
|
||||
private async Task _UpdateMundexByPoetPage(Guid editingUserId, RMuseumDbContext context, LongRunningJobProgressServiceEF jobProgressServiceEF, RLongRunningJobStatus job)
|
||||
{
|
||||
var poemMusicTracks =
|
||||
await context.GanjoorPoemMusicTracks.Include(m => m.Poem).ThenInclude(p => p.Cat)
|
||||
.Where(m =>
|
||||
m.Approved)
|
||||
.ToListAsync();
|
||||
|
||||
var dbPage = await context.GanjoorPages.Where(p => p.FullUrl == "/mundex/bypoet").SingleAsync();
|
||||
|
||||
|
||||
string htmlText = $"<p>در این صفحه فهرست اشعار استفاده شده در آلبومهای موسیقی را با استفاده از اطلاعات جمعآوری شده در <a href=\"http://blog.ganjoor.net/1395/06/28/bptags/\">این پروژه</a> به تفکیک شاعر و به ترتیب نزولی تعداد اشعار مرتبط گرد آوردهایم." +
|
||||
$" تا تاریخ {LanguageUtils.FormatDate(DateTime.Now)} ارتباط {poemMusicTracks.GroupBy(m => m.PoemId).Count().ToPersianNumbers()} شعر از {poemMusicTracks.GroupBy(m => m.Poem.Cat.PoetId).Count().ToPersianNumbers()} شاعر با {poemMusicTracks.Count.ToPersianNumbers()} قطعهٔ موسیقی در پایگاه گنجور ثبت و تأیید شده است. </p>{Environment.NewLine}";
|
||||
htmlText += $"<p>جهت مشاهدهٔ این اطلاعات به تفکیک هنرمندان <small>(بدون اطلاعات مجموعهٔ گلها، سایت اسپاتیفای و اجراهای خصوصی)</small> <a href=\"/mundex/\" > این صفحه</a> را ببینید.</p>{Environment.NewLine}";
|
||||
htmlText += $"<p>جهت کمک به تکمیل این مجموعه <a href=\"http://blog.ganjoor.net/1395/06/28/bptags/\">این مطلب</a> را مطالعه بفرمایید و <a href=\"http://www.aparat.com/v/kxGre\">این فیلم</a> را مشاهده کنید.</p>{Environment.NewLine}";
|
||||
|
||||
var poetIdsAndTrackCounts = poemMusicTracks.GroupBy(m => new { m.Poem.Cat.PoetId })
|
||||
.Select(g => new { PoetId = g.Key.PoetId, TrackCount = g.Count() })
|
||||
.OrderByDescending(g => g.TrackCount)
|
||||
.ToList();
|
||||
using (HttpClient httpClient = new HttpClient())
|
||||
for (int nPoetIndex = 0; nPoetIndex < poetIdsAndTrackCounts.Count; nPoetIndex++)
|
||||
{
|
||||
var poetIdAndTrackCount = poetIdsAndTrackCounts[nPoetIndex];
|
||||
|
||||
var tracks = poemMusicTracks.
|
||||
Where(m => m.Poem.Cat.PoetId == poetIdAndTrackCount.PoetId)
|
||||
.OrderBy(m => m.PoemId)
|
||||
.ToList();
|
||||
if (tracks.Count != poetIdAndTrackCount.TrackCount)
|
||||
continue;//!!! a weird situration I cannot figure out now!
|
||||
var poet = await context.GanjoorPoets.Where(p => p.Id == poetIdAndTrackCount.PoetId).AsNoTracking().SingleAsync();
|
||||
var poetCat = await context.GanjoorCategories.Where(c => c.PoetId == poetIdAndTrackCount.PoetId && c.ParentId == null).AsNoTracking().SingleAsync();
|
||||
|
||||
htmlText += $"<p><br style=\"clear: both;\" /></p>{Environment.NewLine}";
|
||||
htmlText += $"<h2>{nPoetIndex+1}. <a href=\"{poetCat.FullUrl}\">{poet.Nickname}</a></h2>{Environment.NewLine}";
|
||||
htmlText += $"<div class=\"spacer\"> </div>{Environment.NewLine}";
|
||||
htmlText += $"<div style=\"width:82px;margin:auto\"><a href=\"{poetCat.FullUrl}\"><img src=\"https://ganjgah.ir/api/ganjoor/poet/image/{poetCat.UrlSlug}.gif\" alt=\"{poet.Nickname}\" /></a></div>{Environment.NewLine}";
|
||||
htmlText += $"<div style=\"width:100%;margin:auto\"><a href=\"/{poetCat.FullUrl}\" >{poet.Nickname}</a> ({tracks.Count.ToPersianNumbers()} قطعه)</div>{Environment.NewLine}" +
|
||||
$"<div class=\"spacer\"> </div>{Environment.NewLine}";
|
||||
|
||||
htmlText += $"<ol>{Environment.NewLine}";
|
||||
|
||||
foreach (var song in tracks)
|
||||
{
|
||||
htmlText += $"<li><p>{Environment.NewLine}";
|
||||
var poem = await context.GanjoorPoems.AsNoTracking().Where(p => p.Id == song.PoemId).SingleAsync();
|
||||
htmlText += $"<a href=\"{poem.FullUrl}\">{poem.FullTitle}</a> در ";
|
||||
|
||||
if(song.TrackType == PoemMusicTrackType.Golha)
|
||||
{
|
||||
htmlText += "گلها » ";
|
||||
}
|
||||
else
|
||||
{
|
||||
htmlText += $"{song.ArtistName} » ";
|
||||
}
|
||||
|
||||
htmlText += $"{song.AlbumName.ToPersianNumbers()} » <a href=\"{song.TrackUrl}\">{song.TrackName.ToPersianNumbers()}</a></p></li>{Environment.NewLine}";
|
||||
}
|
||||
|
||||
htmlText += $"</ol>{Environment.NewLine}";
|
||||
}
|
||||
|
||||
|
||||
await _UpdatePageHtmlText(context, editingUserId, dbPage, "به روزرسانی خودکار صفحهٔ شاعران به روایت آهنگها", htmlText);
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// start updating stats page
|
||||
/// </summary>
|
||||
@ -119,9 +187,8 @@ namespace RMuseum.Services.Implementation
|
||||
{
|
||||
|
||||
await _UpdateMundexPage(editingUserId, context, jobProgressServiceEF, job);
|
||||
|
||||
await jobProgressServiceEF.UpdateJob(job.Id, 50, "Mundex by poet page");
|
||||
|
||||
await _UpdateMundexByPoetPage(editingUserId, context, jobProgressServiceEF, job);
|
||||
|
||||
await jobProgressServiceEF.UpdateJob(job.Id, 100, "", true);
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user