Skip to content

Commit f914aa8

Browse files
committed
more updates
1 parent 2b10523 commit f914aa8

21 files changed

+77
-63
lines changed

SmartImage.Lib/Engines/Search/Ascii2DEngine.cs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,14 +20,15 @@
2020

2121
namespace SmartImage.Lib.Engines.Search;
2222

23-
public sealed class Ascii2DEngine : WebClientSearchEngine
23+
public sealed class Ascii2DEngine : WebContentSearchEngine
2424
{
2525
public Ascii2DEngine() : base("https://ascii2d.net/search/url/") { }
2626

2727
public override TimeSpan Timeout => TimeSpan.FromSeconds(5);
2828

2929
public override SearchEngineOptions EngineOption => SearchEngineOptions.Ascii2D;
30-
30+
31+
3132

3233
/// <inheritdoc />
3334
public override EngineSearchType SearchType => EngineSearchType.Image | EngineSearchType.Metadata;
@@ -87,7 +88,7 @@ protected override SearchResultOrigin GetResultOrigin(ImageQuery query, Cancella
8788
var message = new HttpRequestMessage(HttpMethod.Get, rawUri);
8889
message.Headers.Add("User-Agent", HttpUtilities.UserAgent);
8990
var response = client.Send(message);
90-
91+
9192
var task = response.Content.ReadAsStringAsync();
9293

9394
task.Wait(Timeout);

SmartImage.Lib/Engines/Search/Base/BaseSearchEngine.cs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ namespace SmartImage.Lib.Engines.Search.Base;
2020
/// <summary>
2121
/// Base search engine.
2222
/// </summary>
23-
public abstract class BaseSearchEngine
23+
public abstract class BaseSearchEngine : IDisposable
2424
{
2525
protected BaseSearchEngine(string baseUrl)
2626
{
@@ -164,6 +164,9 @@ public static BaseSearchEngine[] GetAllSearchEngines()
164164

165165
return engines.ToArray();
166166
}
167+
168+
public virtual void Dispose() { }
169+
167170
}
168171

169172
/// <summary>

SmartImage.Lib/Engines/Search/Base/ClientSearchEngine.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,4 +23,5 @@ protected override object GetProcessingObject(SearchResult sr)
2323
return sr.Origin.Query;
2424
}
2525

26+
2627
}

SmartImage.Lib/Engines/Search/Base/ProcessedSearchEngine.cs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@ protected ProcessedSearchEngine(string baseUrl) : base(baseUrl) { }
1818

1919
public abstract override EngineSearchType SearchType { get; }
2020

21+
22+
2123
public sealed override SearchResult GetResult(ImageQuery query, CancellationToken? c = null)
2224
{
2325
var sr = base.GetResult(query, c);
@@ -63,7 +65,7 @@ public sealed override SearchResult GetResult(ImageQuery query, CancellationToke
6365
/// Processes engine results
6466
/// </summary>
6567
/// <param name="obj">Content upon which to operate, returned by <see cref="SearchResult.ParseContent"/></param>
66-
/// <param name="sr"><see cref="WebClientSearchEngine.ParseContent"/> to build</param>
67-
/// <returns>Final <see cref="WebClientSearchEngine"/></returns>
68+
/// <param name="sr"><see cWebContentSearchEngineineineParseContent"/> to build</param>
69+
/// <returns>Final <see cref="WebContentSearchEngine"/></returns>
6870
protected abstract SearchResult Process(object obj, SearchResult sr);
6971
}

SmartImage.Lib/Engines/Search/Base/WebClientSearchEngine.cs renamed to SmartImage.Lib/Engines/Search/Base/WebContentSearchEngine.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,16 +7,17 @@ namespace SmartImage.Lib.Engines.Search.Base;
77
/// <summary>
88
/// Represents a search engine whose results are parsed from HTML.
99
/// </summary>
10-
public abstract class WebClientSearchEngine : ProcessedSearchEngine
10+
public abstract class WebContentSearchEngine : ProcessedSearchEngine
1111
{
12-
protected WebClientSearchEngine(string baseUrl) : base(baseUrl) { }
12+
protected WebContentSearchEngine(string baseUrl) : base(baseUrl) { }
1313

1414
public abstract override SearchEngineOptions EngineOption { get; }
1515

1616
public abstract override EngineSearchType SearchType { get; }
1717

1818
protected override object GetProcessingObject(SearchResult sr) => ParseContent(sr.Origin);
1919

20+
2021
protected virtual object ParseContent(SearchResultOrigin origin)
2122
{
2223
var parser = new HtmlParser();

SmartImage.Lib/Engines/Search/Base/WebDriverSearchEngine.cs

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,12 @@
11
using System;
22
using System.Collections.Generic;
3+
using System.Diagnostics;
34
using System.Linq;
45
using System.Text;
56
using System.Threading.Tasks;
7+
using PuppeteerExtraSharp;
8+
using PuppeteerExtraSharp.Plugins.ExtraStealth;
9+
using PuppeteerSharp;
610
using SmartImage.Lib.Searching;
711

812
namespace SmartImage.Lib.Engines.Search.Base;
@@ -15,8 +19,26 @@ public abstract class WebDriverSearchEngine : ProcessedSearchEngine
1519
protected WebDriverSearchEngine(string baseUrl) : base(baseUrl) { }
1620

1721
public abstract override SearchEngineOptions EngineOption { get; }
18-
22+
1923
public abstract override EngineSearchType SearchType { get; }
2024

21-
protected abstract Task<List<ImageResult>> Browse(ImageQuery sd, SearchResult r);
25+
protected abstract Task<List<ImageResult>> BrowseAsync(ImageQuery sd, SearchResult r);
26+
27+
protected override object GetProcessingObject(SearchResult sr)
28+
{
29+
return sr.Origin.Query;
30+
}
31+
32+
protected static async Task<PuppeteerExtra> GetBrowserAsync()
33+
{
34+
using var browserFetcher = new BrowserFetcher();
35+
36+
var ri = await browserFetcher.DownloadAsync();
37+
38+
Debug.WriteLine($"{ri}");
39+
40+
var extra = new PuppeteerExtra();
41+
extra.Use(new StealthPlugin());
42+
return extra;
43+
}
2244
}

SmartImage.Lib/Engines/Search/TidderEngine.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
namespace SmartImage.Lib.Engines.Search;
1616

1717
[Obsolete]
18-
public sealed class TidderEngine : WebClientSearchEngine
18+
public sealed class TidderEngine : WebContentSearchEngine
1919
{
2020
public TidderEngine() : base("http://tidder.xyz/?imagelink=") { }
2121

SmartImage.Lib/Engines/Search/TinEyeEngine.cs

Lines changed: 7 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -25,19 +25,17 @@ public static string ToValueString(this JSHandle h)
2525
public sealed class TinEyeEngine : WebDriverSearchEngine
2626
{
2727
public TinEyeEngine() : base("https://www.tineye.com/search?url=") { }
28-
29-
protected override object GetProcessingObject(SearchResult sr)
30-
{
31-
return sr.Origin.Query;
32-
}
28+
3329

3430
public override SearchEngineOptions EngineOption => SearchEngineOptions.TinEye;
3531

3632
public override EngineSearchType SearchType => EngineSearchType.Image;
3733

38-
protected override async Task<List<ImageResult>> Browse(ImageQuery sd, SearchResult r)
34+
public override void Dispose() { }
35+
36+
protected override async Task<List<ImageResult>> BrowseAsync(ImageQuery sd, SearchResult r)
3937
{
40-
PuppeteerExtra extra = await GetBrowser();
38+
PuppeteerExtra extra = await GetBrowserAsync();
4139

4240
await using Browser browser = await extra.LaunchAsync(new LaunchOptions
4341
{
@@ -51,7 +49,6 @@ protected override async Task<List<ImageResult>> Browse(ImageQuery sd, SearchRes
5149
await page.WaitForNavigationAsync();
5250

5351
var rd = page.Url;
54-
Debug.WriteLine($"{rd}");
5552

5653

5754
var resultElems = await page.QuerySelectorAllAsync("div[class='match']");
@@ -117,30 +114,18 @@ protected override async Task<List<ImageResult>> Browse(ImageQuery sd, SearchRes
117114
img.Add(ir);
118115
}
119116

117+
browser.Dispose();
120118
return img;
121119
}
122120

123-
private static async Task<PuppeteerExtra> GetBrowser()
124-
{
125-
using var browserFetcher = new BrowserFetcher();
126-
127-
var ri = await browserFetcher.DownloadAsync();
128-
129-
Debug.WriteLine($"{ri}");
130-
131-
var extra = new PuppeteerExtra();
132-
extra.Use(new StealthPlugin());
133-
return extra;
134-
}
135-
136121

137122
protected override SearchResult Process(object obj, SearchResult sr)
138123
{
139124
var query = (ImageQuery) obj;
140125

141126
// var vr = base.GetResult(query);
142127

143-
var task = Browse(query, sr);
128+
var task = BrowseAsync(query, sr);
144129
task.Wait();
145130
List<ImageResult> list = task.Result;
146131
Debug.WriteLine($"{list.Count}");

SmartImage.Lib/Engines/Search/YandexEngine.cs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,12 @@
1616

1717
namespace SmartImage.Lib.Engines.Search;
1818

19-
public sealed class YandexEngine : WebClientSearchEngine
19+
public sealed class YandexEngine : WebContentSearchEngine
2020
{
2121
public YandexEngine() : base("https://yandex.com/images/search?rpt=imageview&url=") { }
2222

2323
public override SearchEngineOptions EngineOption => SearchEngineOptions.Yandex;
24-
24+
2525

2626
public override TimeSpan Timeout => TimeSpan.FromSeconds(6.5);
2727

@@ -54,7 +54,7 @@ public YandexEngine() : base("https://yandex.com/images/search?rpt=imageview&url
5454
return null;
5555
}
5656

57-
ImageResult Parse(INode siz)
57+
ImageResult Parse(INode siz)
5858
{
5959
string link = siz.FirstChild.TryGetAttribute("href");
6060
string resText = siz.FirstChild.ChildNodes[1].FirstChild.TextContent;
@@ -103,7 +103,7 @@ private static (int? w, int? h) ParseResolution(string resText)
103103
return (w, h);
104104
}
105105

106-
private static List<ImageResult> GetImages(IDocument doc,SearchResult r)
106+
private static List<ImageResult> GetImages(IDocument doc, SearchResult r)
107107
{
108108
var tagsItem = doc.Body.SelectNodes("//a[contains(@class, 'Tags-Item')]");
109109
var images = new List<ImageResult>();
@@ -115,7 +115,7 @@ private static List<ImageResult> GetImages(IDocument doc,SearchResult r)
115115
var sizeTags = tagsItem.Where(sx => !sx.Parent.Parent.TryGetAttribute("class")
116116
.Contains("CbirItem"));
117117

118-
ImageResult Parse(INode siz)
118+
ImageResult Parse(INode siz)
119119
{
120120
string? link = siz.TryGetAttribute("href");
121121

@@ -160,7 +160,7 @@ protected override SearchResult Process(object obj, SearchResult sr)
160160
sr.Status = ResultStatus.Cooldown;
161161
return sr;
162162
}
163-
163+
164164
/*
165165
* Parse what the image looks like
166166
*/
@@ -208,7 +208,7 @@ protected override SearchResult Process(object obj, SearchResult sr)
208208
>= 1 => ResultQuality.High,
209209
_ => ResultQuality.Low,
210210
};
211-
211+
212212

213213
return sr;
214214
}

SmartImage.Lib/Engines/Upload/AnonFilesEngine.cs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
using Flurl.Http.Content;
88
using Newtonsoft.Json;
99
using Newtonsoft.Json.Linq;
10-
using SmartImage.Lib.Engines.Upload.Base;
1110

1211
// ReSharper disable PossibleNullReferenceException
1312

0 commit comments

Comments
 (0)