Skip to content

Commit 60e1a0b

Browse files
committed
Fix Yandex
1 parent 8ff5f92 commit 60e1a0b

File tree

16 files changed

+235
-237
lines changed

16 files changed

+235
-237
lines changed

SmartImage.Lib/Engines/BaseSearchEngine.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
global using Url = Flurl.Url;
66
using System.Diagnostics;
77
using System.Net.Http.Headers;
8+
using System.Runtime.CompilerServices;
89
using Flurl.Http;
910
using Kantan.Diagnostics;
1011
using Kantan.Net.Utilities;
@@ -16,7 +17,9 @@
1617
using SmartImage.Lib.Results.Data;
1718
using SmartImage.Lib.Utilities.Diagnostics;
1819

20+
[assembly: InternalsVisibleTo("SmartImage.Test")]
1921
namespace SmartImage.Lib.Engines;
22+
2023
#nullable enable
2124

2225

SmartImage.Lib/Engines/Impl/Search/Ascii2DEngine.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -234,9 +234,9 @@ private async Task<IFlurlResponse> GetResponseByUrlAsync(Url origin, Cancellatio
234234

235235
#region Overrides of WebSearchEngine
236236

237-
protected override async ValueTask<List<INode>> GetNodes(IDocument d)
237+
protected override async ValueTask<IEnumerable<INode>> GetNodes(IDocument d)
238238
{
239-
var nodes = await base.GetNodes(d);
239+
var nodes = (await base.GetNodes(d)).ToList();
240240

241241
var cnt = nodes.RemoveAll(x =>
242242
{

SmartImage.Lib/Engines/Impl/Search/EHentaiEngine.cs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -125,8 +125,8 @@ protected override async Task<IDocument> GetDocumentAsync(SearchResult sr, Searc
125125
}
126126
};
127127

128-
var flurlRes = await Client.SendAsync(req, cancellationToken: token);
129-
var httpRes = flurlRes.ResponseMessage;
128+
using var flurlRes = await Client.SendAsync(req, cancellationToken: token);
129+
using var httpRes = flurlRes.ResponseMessage;
130130

131131
// Debug.WriteLine($"{res.StatusCode}");
132132

@@ -150,7 +150,7 @@ protected override async Task<IDocument> GetDocumentAsync(SearchResult sr, Searc
150150
return await parser.ParseDocumentAsync(content, token);
151151
}
152152

153-
protected override ValueTask<List<INode>> GetNodes(IDocument d)
153+
protected override ValueTask<IEnumerable<INode>> GetNodes(IDocument d)
154154
{
155155
// Index 0 is table header
156156
var array = d.Body.SelectNodes(NodesSelector);
@@ -160,7 +160,7 @@ protected override ValueTask<List<INode>> GetNodes(IDocument d)
160160

161161
}
162162

163-
return ValueTask.FromResult(array);
163+
return ValueTask.FromResult((IEnumerable<INode>) array);
164164
}
165165

166166
/*
@@ -305,7 +305,7 @@ public ValueTask<bool> ApplyConfigAsync(SearchConfig cfg, CancellationToken ct =
305305

306306
protected override ValueTask<SearchResultItem> ParseResultItem(INode n, SearchResult r)
307307
{
308-
var eh = EhResult.Parse(n);
308+
var eh = EhResult.Parse(n);
309309
var sri = eh.ToItem(r);
310310
return ValueTask.FromResult(sri);
311311
}
@@ -452,9 +452,9 @@ public static EhResult Parse(INode n)
452452
item.Author = v.FirstOrDefault();
453453
}
454454

455-
456-
item.Title = eh.Title;
457-
item.Url = eh.Url;
455+
456+
item.Title = eh.Title;
457+
item.Url = eh.Url;
458458

459459
/*var gl1c = n.ChildNodes[0];
460460
var gl2c = n.ChildNodes[1];

SmartImage.Lib/Engines/Impl/Search/GoogleLensEngine.cs

Lines changed: 33 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
using SmartImage.Lib.Images.Uni;
1515
using SmartImage.Lib.Results;
1616
using SmartImage.Lib.Results.Data;
17+
1718
// ReSharper disable UnusedMember.Local
1819
#pragma warning disable IDE0051
1920
namespace SmartImage.Lib.Engines.Impl.Search;
@@ -66,7 +67,7 @@ public static GoogleLensItem Parse(INode n)
6667

6768
}
6869

69-
public class GoogleLensEngine : WebSearchEngine, IEndpointEngine /*, ICookiesEngine*/
70+
public class GoogleLensEngine : WebSearchEngine, IEndpointEngine, ICookiesEngine, ISearchConfigReceiver
7071
{
7172

7273
// TODO: WIP
@@ -208,10 +209,10 @@ private Task<IFlurlResponse> SearchUrlAsync(Url url, CancellationToken token)
208209
return req;
209210
}
210211

211-
protected override ValueTask<List<INode>> GetNodes(IDocument d)
212+
protected override ValueTask<IEnumerable<INode>> GetNodes(IDocument d)
212213
{
213214
var all = d.QuerySelectorAll(".LBcIee");
214-
return ValueTask.FromResult(all.OfType<INode>().ToList());
215+
return ValueTask.FromResult(all.OfType<INode>());
215216
}
216217

217218
protected override Url GetRawUrl(SearchQuery query)
@@ -221,4 +222,33 @@ protected override Url GetRawUrl(SearchQuery query)
221222

222223
public override void Dispose() { }
223224

225+
public CookieJar Jar { get; private set; }
226+
227+
public ICookiesProvider Provider { get; set; }
228+
229+
public async ValueTask<bool> ApplyCookiesAsync(CancellationToken token = default)
230+
{
231+
var ck = await Provider.GetOrLoadCookiesAsync(token);
232+
233+
foreach (var cookie in ck) {
234+
if (cookie.Name == "NID") {
235+
Nid = cookie.AsFlurlCookie();
236+
break;
237+
}
238+
}
239+
240+
return true;
241+
}
242+
243+
#region Implementation of ISearchConfigReceiver
244+
245+
public ValueTask<bool> ApplyConfigAsync(SearchConfig cfg, CancellationToken ct = default)
246+
{
247+
Provider = cfg.CookiesProvider;
248+
249+
return ApplyCookiesAsync(ct);
250+
}
251+
252+
#endregion
253+
224254
}

SmartImage.Lib/Engines/Impl/Search/IqdbEngine.cs

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -43,8 +43,8 @@ protected IqdbEngine(string b) : base(b)
4343

4444
private const int MAX_FILE_SIZE = 8_388_608;
4545

46-
private const string URL_BASE = "https://iqdb.org/";
47-
private const string URL_QUERY = "https://iqdb.org/?url=";
46+
private const string URL_BASE = "https://iqdb.org/";
47+
private const string URL_QUERY = "https://iqdb.org/?url=";
4848

4949
protected override string[] ErrorBodyMessages =>
5050
[
@@ -234,15 +234,17 @@ public override async Task<SearchResult> GetResultAsync(SearchQuery query, Cance
234234

235235
var sr = await base.GetResultAsync(query, token);
236236

237+
IDocument doc = null;
238+
237239
if (sr.Status == SearchResultStatus.IllegalInput) {
238240
goto ret;
239241
}
240242

241-
var doc = await GetDocumentAsync(query, token);
243+
doc = await GetDocumentAsync(query, token);
242244

243245
if (doc?.Body == null) {
244246
sr.ErrorMessage = "Could not retrieve data";
245-
sr.Status = SearchResultStatus.UnknownError;
247+
sr.Status = SearchResultStatus.UnknownError;
246248
goto ret;
247249
}
248250

@@ -302,7 +304,9 @@ public override async Task<SearchResult> GetResultAsync(SearchQuery query, Cance
302304
};*/
303305

304306
ret:
307+
doc?.Dispose();
305308
sr.Update();
309+
Logger.LogDebug("Disposing {Name} doc", Name);
306310
return sr;
307311
}
308312

SmartImage.Lib/Engines/Impl/Search/RepostSleuthEngine.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ public override async Task<SearchResult> GetResultAsync(SearchQuery query, Cance
4848
RepostSleuthResult obj = null;
4949

5050
try {
51-
var s = await Client.Request(EndpointUrl)
51+
using var response = await Client.Request(EndpointUrl)
5252
.SetQueryParams(new
5353
{
5454

@@ -62,8 +62,9 @@ public override async Task<SearchResult> GetResultAsync(SearchQuery query, Cance
6262
target_match_percent = 90,
6363
filter_dead_matches = false,
6464
target_days_old = 0
65-
}).GetStringAsync(cancellationToken: token);
65+
}).GetAsync(cancellationToken: token);
6666

67+
var s = await response.GetStreamAsync();
6768
obj = JsonSerializer.Deserialize<RepostSleuthResult>(s, JsOptions);
6869
}
6970
catch (JsonException e) {

SmartImage.Lib/Engines/Impl/Search/SauceNaoEngine.cs

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -193,10 +193,14 @@ private async ValueTask GetWebResultsAsync(SearchQuery query, SearchResult sr)
193193

194194
foreach (INode result in results) {
195195
var sndr = SauceNaoDataResult.Parse(result);
196-
var sris = sndr.ToItem(sr);
197-
sr.Results.AddRange(sris);
196+
if (sndr != null) {
197+
var sris = sndr.ToItem(sr);
198+
sr.Results.AddRange(sris);
199+
200+
}
198201
}
199202

203+
Logger.LogDebug("Disposing {Name} doc", Name);
200204
doc.Dispose();
201205
ret:
202206
response.Dispose();

SmartImage.Lib/Engines/Impl/Search/TraceMoeEngine.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ public override async Task<SearchResult> GetResultAsync(SearchQuery query, Cance
6060
var r = await base.GetResultAsync(query, token);
6161

6262
try {
63-
IFlurlRequest request = Client.Request(Url.Combine(EndpointUrl, ("/search")))
63+
IFlurlRequest request = Client.Request(EndpointUrl, ("/search"))
6464
.WithTimeout(Timeout)
6565
.SetQueryParam("url", query.Upload, true);
6666

0 commit comments

Comments
 (0)