76 lines
2.9 KiB
C#
76 lines
2.9 KiB
C#
using Microsoft.AspNetCore.Http;
|
|
using Microsoft.AspNetCore.Mvc;
|
|
using Microsoft.EntityFrameworkCore;
|
|
|
|
namespace FictionArchive.API.Controllers
|
|
{
|
|
[Route("api/[controller]")]
|
|
[ApiController]
|
|
public class TestController : ControllerBase
|
|
{
|
|
/*private readonly FictionArchiveDbContext _dbContext;
|
|
private readonly ISourceAdapter _novelpiaAdapter;
|
|
private readonly ITranslationEngineAdapter _translationEngine;
|
|
|
|
public TestController(ISourceAdapter novelpiaAdapter, FictionArchiveDbContext dbContext, ITranslationEngineAdapter translationEngine)
|
|
{
|
|
_novelpiaAdapter = novelpiaAdapter;
|
|
_dbContext = dbContext;
|
|
_translationEngine = translationEngine;
|
|
}
|
|
|
|
[HttpGet("GetNovel")]
|
|
public async Task<Novel> GetNovel(string novelUrl)
|
|
{
|
|
var novel = await _novelpiaAdapter.GetMetadata(novelUrl);
|
|
novel.Source = new Source()
|
|
{
|
|
Name = "Novelpia",
|
|
Id = 1,
|
|
Url = "https://novelpia.com"
|
|
};
|
|
_dbContext.Novels.Add(novel);
|
|
await _dbContext.SaveChangesAsync();
|
|
return novel;
|
|
}
|
|
|
|
[HttpGet("GetChapter")]
|
|
public async Task<string> GetChapter(uint novelId, uint chapterNumber)
|
|
{
|
|
var novel = await _dbContext.Novels.Include(n => n.Chapters).ThenInclude(c => c.Translations).FirstOrDefaultAsync(n => n.Id == novelId);
|
|
var chapter = novel.Chapters.FirstOrDefault(c => c.Order == chapterNumber);
|
|
var rawChapter = await _novelpiaAdapter.GetRawChapter(chapter.Url);
|
|
chapter.Translations.Add(new ChapterTranslation()
|
|
{
|
|
Language = novel.RawLanguage,
|
|
Body = rawChapter
|
|
});
|
|
await _dbContext.SaveChangesAsync();
|
|
return rawChapter;
|
|
}
|
|
|
|
[HttpPost("TranslateChapter")]
|
|
public async Task<ChapterTranslation> TranslateChapter(uint novelId, uint chapterNumber, Language to)
|
|
{
|
|
var novel = await _dbContext.Novels.Include(n => n.Chapters)
|
|
.ThenInclude(c => c.Translations).FirstOrDefaultAsync(novel => novel.Id == novelId);
|
|
var chapter = novel.Chapters.FirstOrDefault(c => c.Order == chapterNumber);
|
|
var chapterRaw = chapter.Translations.FirstOrDefault(ct => ct.Language == novel.RawLanguage);
|
|
var newTranslation = new ChapterTranslation()
|
|
{
|
|
Language = to,
|
|
TranslationEngine = new TranslationEngine()
|
|
{
|
|
Name = "DeepL"
|
|
}
|
|
};
|
|
var translation = await _translationEngine.GetTranslation(chapterRaw.Body, novel.RawLanguage, to);
|
|
newTranslation.Body = translation;
|
|
chapter.Translations.Add(newTranslation);
|
|
await _dbContext.SaveChangesAsync();
|
|
|
|
return newTranslation;
|
|
}*/
|
|
}
|
|
}
|