Chromium Version and Dependencies

This commit is contained in:
glax 2023-06-05 20:36:01 +02:00
parent 5a303598fe
commit d95839e5df
2 changed files with 22 additions and 9 deletions

View File

@ -10,4 +10,5 @@ FROM mcr.microsoft.com/dotnet/aspnet:7.0 as runtime
WORKDIR /publish WORKDIR /publish
COPY --from=build-env /publish . COPY --from=build-env /publish .
EXPOSE 80 EXPOSE 80
RUN apt-get update && apt-get install -y libx11-6 libx11-xcb1 libatk1.0-0 libgtk-3-0 libcups2 libdrm2 libxkbcommon0 libxcomposite1 libxdamage1 libxrandr2 libgbm1 libpango-1.0-0 libcairo2 libasound2 libxshmfence1 libnss3
ENTRYPOINT ["dotnet", "/publish/Tranga-API.dll"] ENTRYPOINT ["dotnet", "/publish/Tranga-API.dll"]

View File

@ -12,7 +12,8 @@ namespace Tranga.Connectors;
public class Mangasee : Connector public class Mangasee : Connector
{ {
public override string name { get; } public override string name { get; }
private IBrowser? browser = null; private IBrowser? _browser = null;
private const string ChromiumVersion = "1153303";
public Mangasee(string downloadLocation, string imageCachePath, Logger? logger) : base(downloadLocation, public Mangasee(string downloadLocation, string imageCachePath, Logger? logger) : base(downloadLocation,
imageCachePath, logger) imageCachePath, logger)
@ -29,8 +30,14 @@ public class Mangasee : Connector
private async void DownloadBrowser() private async void DownloadBrowser()
{ {
logger?.WriteLine(this.GetType().ToString(), "Downloading headless browser");
BrowserFetcher browserFetcher = new BrowserFetcher(); BrowserFetcher browserFetcher = new BrowserFetcher();
if (browserFetcher.LocalRevisions().Contains(ChromiumVersion))
return;
else
foreach(string rev in browserFetcher.LocalRevisions())
browserFetcher.Remove(rev);
logger?.WriteLine(this.GetType().ToString(), "Downloading headless browser");
DateTime last = DateTime.Now.Subtract(TimeSpan.FromSeconds(5)); DateTime last = DateTime.Now.Subtract(TimeSpan.FromSeconds(5));
browserFetcher.DownloadProgressChanged += async (sender, args) => browserFetcher.DownloadProgressChanged += async (sender, args) =>
{ {
@ -46,16 +53,21 @@ public class Mangasee : Connector
} }
}; };
if (!browserFetcher.CanDownloadAsync(BrowserFetcher.DefaultChromiumRevision).Result) if (!browserFetcher.CanDownloadAsync(ChromiumVersion).Result)
{ {
logger?.WriteLine(this.GetType().ToString(), "Can't download"); logger?.WriteLine(this.GetType().ToString(), $"Can't download browser version {ChromiumVersion}");
return; return;
} }
await browserFetcher.DownloadAsync(BrowserFetcher.DefaultChromiumRevision); await browserFetcher.DownloadAsync(ChromiumVersion);
this.browser = await Puppeteer.LaunchAsync(new LaunchOptions this._browser = await Puppeteer.LaunchAsync(new LaunchOptions
{ {
Headless = true, Headless = true,
ExecutablePath = browserFetcher.GetExecutablePath(BrowserFetcher.DefaultChromiumRevision) ExecutablePath = browserFetcher.GetExecutablePath(ChromiumVersion),
Args = new [] {
"--disable-gpu",
"--disable-dev-shm-usage",
"--disable-setuid-sandbox",
"--no-sandbox"}
}); });
} }
@ -191,13 +203,13 @@ public class Mangasee : Connector
public override void DownloadChapter(Publication publication, Chapter chapter, DownloadChapterTask parentTask) public override void DownloadChapter(Publication publication, Chapter chapter, DownloadChapterTask parentTask)
{ {
while (this.browser is null) while (this._browser is null)
{ {
logger?.WriteLine(this.GetType().ToString(), "Waiting for headless browser to download..."); logger?.WriteLine(this.GetType().ToString(), "Waiting for headless browser to download...");
Thread.Sleep(1000); Thread.Sleep(1000);
} }
IPage page = browser.NewPageAsync().Result; IPage page = _browser.NewPageAsync().Result;
IResponse response = page.GoToAsync(chapter.url).Result; IResponse response = page.GoToAsync(chapter.url).Result;
if (response.Ok) if (response.Ok)
{ {