Skip to content

Commit 1c08c20

Browse files
committed
Upload engine fixes;
Pomf deprecation; New prompt UI (temp disabled for hotfix);
1 parent 58745c5 commit 1c08c20

21 files changed

Lines changed: 170 additions & 233 deletions

SmartImage.Lib/Clients/FlareSolverrClient.cs

Lines changed: 16 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -16,32 +16,24 @@ namespace SmartImage.Lib.Clients;
1616
public sealed class FlareSolverrClient : IDisposable, ISearchConfigReceiver
1717
{
1818

19-
[MNNW(true, nameof(Client))]
20-
public bool HasClient => Client != null;
21-
2219
[MNNW(true, nameof(Clearance))]
2320
public bool HasClearance => Clearance != null;
2421

25-
[MNNW(true, nameof(Clearance), nameof(Client))]
26-
public bool IsInitialized => HasClearance && HasClient;
22+
[MNNW(true, nameof(Clearance))]
23+
public bool IsInitialized => HasClearance;
2724

2825
public ClearanceHandler Clearance { get; private set; }
2926

30-
public HttpClient Client { get; private set; }
3127

3228
private static readonly ILogger s_logger = AppSupport.Factory.CreateLogger("FlareSolverr");
3329

3430
public bool Configure(string api)
3531
{
36-
Dispose();
37-
3832
Clearance = new ClearanceHandler(api)
3933
{
40-
EnsureResponseIntegrity = false
34+
EnsureResponseIntegrity = false,
4135
};
4236

43-
Client = new HttpClient(Clearance);
44-
4537
s_logger.LogTrace("Init with {Api}", api);
4638

4739
return IsInitialized;
@@ -52,37 +44,39 @@ public FlareSolverrClient([CBN] string api = FLARE_SOLVERR_API_URL_DEFAULT)
5244
Configure(api);
5345
}
5446

47+
public FlareSolverrClient() { }
48+
5549
static FlareSolverrClient() { }
5650

5751
public async ValueTask<FlareSolverrIndexResponse> GetIndexAsync()
5852
{
5953
return (await Clearance.Solverr.GetIndexAsync());
6054
}
6155

62-
public void Dispose()
63-
{
64-
Clearance?.Dispose();
65-
Client?.Dispose();
66-
Clearance = null;
67-
Client = null;
68-
}
69-
7056
public async ValueTask<bool> ApplyConfigAsync(SearchConfig cfg, CancellationToken ct = default)
7157
{
7258
var ok = false;
59+
7360
FlareSolverrIndexResponse idx = null;
7461

7562
if (!cfg.FlareSolverr) {
7663
return false;
7764
}
7865

79-
ok = Configure(cfg.FlareSolverrApiUrl);
80-
idx = await GetIndexAsync();
66+
idx = await FlareSolverr.TryGetIndexAsync(new Uri(cfg.FlareSolverrApiUrl));
67+
68+
ok = idx != null && Configure(cfg.FlareSolverrApiUrl);
8169

82-
return ok && idx != null;
70+
return ok;
8371
}
8472

8573

8674
public const string FLARE_SOLVERR_API_URL_DEFAULT = "http://localhost:8191";
8775

76+
public void Dispose()
77+
{
78+
Clearance?.Dispose();
79+
Clearance = null;
80+
}
81+
8882
}

SmartImage.Lib/Engines/BaseSearchEngine.cs

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@
1010
using Microsoft.Net.Http.Headers;
1111
using SmartImage.Lib;
1212
using SmartImage.Lib.Engines.Results;
13+
using SmartImage.Lib.Engines.Search;
14+
using SmartImage.Lib.Engines.Search.Other;
1315
using SmartImage.Lib.Utilities.Diagnostics;
1416
using SmartImage.Lib.Model;
1517
using SmartImage.Lib.Utilities;
@@ -135,6 +137,57 @@ public virtual bool VerifyQuery(SearchQuery q)
135137
}*/
136138

137139

140+
public static IEnumerable<BaseSearchEngine> GetSelectedEngines(SearchEngineOptions options)
141+
{
142+
if (options.HasFlag(SearchEngineOptions.SauceNao))
143+
yield return new SauceNaoEngine();
144+
145+
if (options.HasFlag(SearchEngineOptions.ImgOps))
146+
yield return new ImgOpsEngine();
147+
148+
if (options.HasFlag(SearchEngineOptions.GoogleImages))
149+
yield return new GoogleImagesEngine();
150+
151+
if (options.HasFlag(SearchEngineOptions.TinEye))
152+
yield return new TinEyeEngine();
153+
154+
if (options.HasFlag(SearchEngineOptions.Iqdb))
155+
yield return new IqdbEngine();
156+
157+
if (options.HasFlag(SearchEngineOptions.TraceMoe))
158+
yield return new TraceMoeEngine();
159+
160+
if (options.HasFlag(SearchEngineOptions.KarmaDecay))
161+
yield return new KarmaDecayEngine();
162+
163+
if (options.HasFlag(SearchEngineOptions.Yandex))
164+
yield return new YandexEngine();
165+
166+
if (options.HasFlag(SearchEngineOptions.Bing))
167+
yield return new BingEngine();
168+
169+
if (options.HasFlag(SearchEngineOptions.Ascii2D))
170+
yield return new Ascii2DEngine();
171+
172+
if (options.HasFlag(SearchEngineOptions.RepostSleuth))
173+
yield return new RepostSleuthEngine();
174+
175+
if (options.HasFlag(SearchEngineOptions.EHentai))
176+
yield return new EHentaiEngine();
177+
178+
if (options.HasFlag(SearchEngineOptions.ArchiveMoe))
179+
yield return new ArchiveMoeEngine();
180+
181+
if (options.HasFlag(SearchEngineOptions.Iqdb3D))
182+
yield return new Iqdb3DEngine();
183+
184+
if (options.HasFlag(SearchEngineOptions.Fluffle))
185+
yield return new FluffleEngine();
186+
187+
if (options.HasFlag(SearchEngineOptions.GoogleLens))
188+
yield return new GoogleLensEngine();
189+
}
190+
138191
public override string ToString()
139192
{
140193
return $"{Name}: {Url} {Timeout}";

SmartImage.Lib/Engines/Results/IParseableSource.cs

Lines changed: 1 addition & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,4 @@
1-
// Author: Deci | Project: SmartImage.Lib | Name: IResultConverter.cs
2-
// Date: 2025/04/16 @ 01:04:44
3-
4-
5-
// Author: Deci | Project: SmartImage.Lib | Name: IResultConverter.cs
6-
// Date: 2025/04/16 @ 01:04:44
7-
8-
9-
// Author: Deci | Project: SmartImage.Lib | Name: IResultConverter.cs
10-
// Date: 2025/04/16 @ 01:04:44
11-
12-
13-
// Author: Deci | Project: SmartImage.Lib | Name: IResultConverter.cs
1+
// Author: Deci | Project: SmartImage.Lib | Name: IParseableSource.cs
142
// Date: 2025/04/16 @ 01:04:44
153

164
namespace SmartImage.Lib.Engines.Results;

SmartImage.Lib/Images/Uni/IResultItem.cs renamed to SmartImage.Lib/Engines/Results/IResultItem.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
using System.ComponentModel;
99
using System.Diagnostics;
1010

11-
namespace SmartImage.Lib.Images.Uni;
11+
namespace SmartImage.Lib.Engines.Results;
1212

1313
public interface IResultItem : IDisposable, ISimilarity, IHashable, INotifyPropertyChanged
1414
{

SmartImage.Lib/Engines/Results/SearchResult.cs

Lines changed: 0 additions & 93 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,6 @@ public Url RawUrl
5757
[CBN]
5858
public string Overview { get; internal set; }
5959

60-
// private Lazy<SearchResultItem> m_rawResultItem;
6160

6261
[JI]
6362
public SearchResultItem RawResultItem { get; }
@@ -123,95 +122,6 @@ public SearchResultItem GetBestResult()
123122
.FirstOrDefault();
124123
}
125124

126-
/*public int Index(SearchResultItem item, SearchResultItem scn)
127-
{
128-
int root;
129-
int scKi = 0;
130-
int scKi2 = 0;
131-
132-
root = Results.IndexOf(item);
133-
134-
// scKi = ScannedResults.IndexOf(item);
135-
if (scn != null) {
136-
scKi = 1;
137-
}
138-
139-
/*foreach ((SearchResultItem key, SearchResultItem[] value) in ScannedResults) {
140-
if (key == item) {
141-
scKi2 = Array.IndexOf(value, scn);
142-
143-
/*if (scKi2==0) {
144-
scKi2++;
145-
}#2#
146-
if (scKi2==-1) {
147-
// scKi2=0;
148-
}
149-
150-
// break;
151-
}
152-
else {
153-
scKi += value.Length;
154-
155-
}
156-
157-
// scKi += value.Length;
158-
159-
}#1#
160-
161-
162-
/*if (ScannedResults.TryGetValue(sri, out SearchResultItem[] sci)) {
163-
var i = Array.IndexOf(sci, sri);
164-
root += i == -1 ? 0 : i;
165-
}
166-
167-
for (int i = 0; i < ScannedResults.Count; i++) { }#1#
168-
169-
return root + scKi + scKi2;
170-
171-
}
172-
173-
public int Index(SearchResultItem sri)
174-
{
175-
var root = Results.IndexOf(sri.Parent);
176-
177-
// var scKi = ScannedResults.IndexOf(sri);
178-
var scKi2 = 0;
179-
180-
/*if (scKi != -1) {
181-
for (int sc = 0; sc < scKi; sc++) {
182-
var scannedItems = ScannedResults[sri];
183-
var scI2 = Array.IndexOf(scannedItems, sri);
184-
185-
if (scI2 != -1) {
186-
scKi2 += scI2;
187-
}
188-
}
189-
}
190-
else {
191-
scKi = 0;
192-
}#1#
193-
194-
195-
/*if (ScannedResults.TryGetValue(sri, out SearchResultItem[] sci)) {
196-
var i = Array.IndexOf(sci, sri);
197-
root += i == -1 ? 0 : i;
198-
}
199-
200-
for (int i = 0; i < ScannedResults.Count; i++) { }#1#
201-
202-
// return root + scKi + scKi2;
203-
204-
return root + scKi2;
205-
}*/
206-
207-
/*
208-
public int AggIdx(SearchResultItem sri)
209-
{
210-
var resIdx=Results.IndexOf(sri);
211-
212-
}
213-
*/
214-
215125
public override string ToString()
216126
{
217127
return $"[{Engine.Name}] {RawUrl} | {Results.Count} | {Status} {ErrorMessage}";
@@ -231,9 +141,6 @@ public void Dispose()
231141

232142
item.Dispose();
233143
}
234-
235-
// ScannedResults.Clear();
236-
237144
}
238145

239146
}

SmartImage.Lib/Engines/Results/SearchResultItem.cs

Lines changed: 4 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -409,24 +409,16 @@ public int CompareTo(object obj)
409409
}
410410

411411
public static bool operator <(SearchResultItem left, SearchResultItem right)
412-
{
413-
return Comparer<SearchResultItem>.Default.Compare(left, right) < 0;
414-
}
412+
=> Comparer<SearchResultItem>.Default.Compare(left, right) < 0;
415413

416414
public static bool operator >(SearchResultItem left, SearchResultItem right)
417-
{
418-
return Comparer<SearchResultItem>.Default.Compare(left, right) > 0;
419-
}
415+
=> Comparer<SearchResultItem>.Default.Compare(left, right) > 0;
420416

421417
public static bool operator <=(SearchResultItem left, SearchResultItem right)
422-
{
423-
return Comparer<SearchResultItem>.Default.Compare(left, right) <= 0;
424-
}
418+
=> Comparer<SearchResultItem>.Default.Compare(left, right) <= 0;
425419

426420
public static bool operator >=(SearchResultItem left, SearchResultItem right)
427-
{
428-
return Comparer<SearchResultItem>.Default.Compare(left, right) >= 0;
429-
}
421+
=> Comparer<SearchResultItem>.Default.Compare(left, right) >= 0;
430422

431423
#endregion
432424

SmartImage.Lib/Engines/Search/Ascii2DEngine.cs

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -52,11 +52,9 @@ public Ascii2DEngine() : base(MAIN_URL)
5252
MaxLength = 10_000_000;
5353
Jar = new CookieJar();
5454
m_fsClient = new FlareSolverrClient();
55-
56-
}
5755

56+
}
5857

59-
public override void Dispose() { }
6058

6159
// public const int MAX_WIDTH = 1000;
6260

@@ -149,7 +147,7 @@ protected override async Task<IDocument> GetSourceAsync(SearchResult sr, SearchQ
149147

150148
try {
151149
var msg = new HttpRequestMessage(HttpMethod.Get, origin);
152-
150+
153151
var fsr = await m_fsClient.Clearance.Solverr.SolveAsync(msg).ConfigureAwait(false);
154152
var cookies = fsr.Solution.Cookies;
155153
var newUrl = fsr.Solution.Url;
@@ -228,6 +226,11 @@ public async ValueTask<bool> ApplyConfigAsync(SearchConfig cfg, CancellationToke
228226
return b;
229227
}
230228

229+
public override void Dispose()
230+
{
231+
m_fsClient?.Dispose();
232+
}
233+
231234
}
232235

233236
public class Ascii2DItem : SearchResultItem, IParseableSource<INode, Ascii2DItem>

SmartImage.Lib/Engines/Upload/BaseUploadEngine.cs

Lines changed: 2 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ public static BaseUploadEngine GetUploadEngine(UploadEngineOptions options)
6666

6767
public static BaseUploadEngine Default
6868
{
69-
get { return field; }
69+
get;
7070
set
7171
{
7272
field?.Dispose();
@@ -94,24 +94,13 @@ public virtual Task<UploadResult> UploadAsync(UniImage query, CancellationToken
9494

9595
protected void Verify(UniImage file)
9696
{
97-
/*
98-
if (String.IsNullOrWhiteSpace(file)) {
99-
throw new ArgumentNullException(nameof(file));
100-
}
101-
*/
102-
10397
if ((file.Length > MaxLength)) {
10498
throw new ArgumentException($"File {file} is too large (max {MaxLength}) for {Name}");
10599
}
106100
}
107101

108-
/*
109-
public static readonly BaseUploadEngine[] All =
110-
ReflectionHelper.CreateAllInAssembly<BaseUploadEngine>(InheritanceProperties.Subclass).ToArray();
111-
*/
112-
113102

114-
public void Dispose()
103+
public virtual void Dispose()
115104
{
116105
Debug.WriteLine($"Disposing {nameof(BaseUploadEngine)} ({Name})");
117106
GC.SuppressFinalize(this);

0 commit comments

Comments
 (0)