Skip to content

Commit 47e78ae

Browse files
committed
Misc updates
1 parent cf65a5b commit 47e78ae

File tree

7 files changed

+93
-93
lines changed

7 files changed

+93
-93
lines changed

SmartImage.Lib/Engines/Impl/SauceNaoEngine.cs

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -17,16 +17,16 @@
1717
using static SimpleCore.Diagnostics.LogCategories;
1818
using JsonArray = System.Json.JsonArray;
1919
using JsonObject = System.Json.JsonObject;
20+
2021
// ReSharper disable PropertyCanBeMadeInitOnly.Local
2122
// ReSharper disable StringLiteralTypo
2223
// ReSharper disable UnusedAutoPropertyAccessor.Local
23-
2424
// ReSharper disable PossibleMultipleEnumeration
25-
2625
// ReSharper disable CommentTypo
2726
// ReSharper disable IdentifierTypo
2827
// ReSharper disable InconsistentNaming
2928
// ReSharper disable ParameterTypeCanBeEnumerable.Local
29+
3030
namespace SmartImage.Lib.Engines.Impl
3131
{
3232
public sealed class SauceNaoEngine : BaseSearchEngine
@@ -40,7 +40,7 @@ public sealed class SauceNaoEngine : BaseSearchEngine
4040
private const string ENDPOINT = BASE_URL + "search.php";
4141

4242
private readonly RestClient m_client;
43-
43+
4444

4545
public SauceNaoEngine(string authentication) : base(BASIC_RESULT)
4646
{
@@ -101,7 +101,10 @@ private static SauceNaoDataResult Parse(INode result)
101101
return null;
102102
}
103103

104-
var resulttablecontent = result.FirstChild.FirstChild.FirstChild.ChildNodes[1];
104+
var resulttablecontent = result.FirstChild
105+
.FirstChild
106+
.FirstChild
107+
.ChildNodes[1];
105108

106109
var resultmatchinfo = resulttablecontent.FirstChild;
107110
var resultsimilarityinfo = resultmatchinfo.FirstChild;
@@ -196,13 +199,13 @@ public override SearchResult GetResult(ImageQuery url)
196199

197200
// Copy
198201
result.UpdateFrom(ordered.First());
199-
202+
200203
//result.Characters = character;
201204
//result.Artist = creator;
202205
//result.Source = material;
203206

204207
sresult.OtherResults.AddRange(ordered);
205-
208+
206209

207210
if (!String.IsNullOrWhiteSpace(Authentication)) {
208211
Debug.WriteLine($"{Name} API key: {Authentication}");
@@ -290,7 +293,7 @@ private SauceNaoDataResult[] GetDataResults(string url)
290293
req.AddQueryParameter("url", url);
291294

292295
var res = m_client.Execute(req);
293-
296+
294297
if (res.StatusCode == HttpStatusCode.Forbidden) {
295298
return null;
296299
}

SmartImage.Lib/Engines/Impl/YandexEngine.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -63,10 +63,10 @@ static ImageResult Parse(INode siz)
6363
{
6464
string? link = siz.FirstChild.TryGetAttribute("href");
6565

66-
var resText = siz.FirstChild
67-
.ChildNodes[1]
68-
.FirstChild
69-
.TextContent;
66+
string? resText = siz.FirstChild
67+
.ChildNodes[1]
68+
.FirstChild
69+
.TextContent;
7070

7171

7272
//other-sites__snippet

SmartImage.Lib/Searching/ImageResult.cs

Lines changed: 42 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ namespace SmartImage.Lib.Searching
2020
/// <summary>
2121
/// Describes an image search result
2222
/// </summary>
23-
public sealed class ImageResult
23+
public sealed class ImageResult : IViewable
2424
{
2525
/// <summary>
2626
/// Result url
@@ -142,15 +142,16 @@ public int DetailScore
142142
* The number of non-null fields
143143
*/
144144

145-
int s = DetailFields.Select(f => f.GetValue(this)).Count(v => v != null);
145+
int s = DetailFields.Select(f => f.GetValue(this))
146+
.Count(v => v != null);
146147

147148
s += OtherMetadata.Count;
148149

149150
return s;
150151
}
151152
}
152153

153-
public bool IsDetailed => DetailScore >= (DetailFields.Count * .5);
154+
public bool IsDetailed => DetailScore >= DetailFields.Count * .5;
154155

155156
/// <summary>
156157
/// The display resolution of this image
@@ -199,7 +200,7 @@ public async void FindDirectImagesAsync()
199200
else {
200201
try {
201202

202-
var directImages = await ImageHelper.FindDirectImagesAsync(Url.ToString());
203+
string[]? directImages = await ImageHelper.FindDirectImagesAsync(Url.ToString());
203204

204205
if (directImages is { }) {
205206
string? images = directImages.FirstOrDefault();
@@ -238,57 +239,61 @@ private void ReadDirectImageData()
238239
Width = image.Width;
239240
Height = image.Height;
240241

241-
stream.Position = 0;
242-
using var ms = new MemoryStream();
243-
stream.CopyTo(ms);
244-
var rg = ms.ToArray();
242+
byte[] rg = stream.ToByteArray();
245243

246244
OtherMetadata.Add("Size", MathHelper.ConvertToUnit(rg.Length));
247245
OtherMetadata.Add("Mime", MediaTypes.ResolveFromData(stream));
248246
}
249247
}
250248

251-
public string ToString(bool indent)
249+
250+
public override string ToString() => Strings.ViewString(this);
251+
252+
public Dictionary<string, object> View
252253
{
253-
var sb = new ExtendedStringBuilder() { };
254+
get
255+
{
256+
#pragma warning disable CS8604
257+
var map = new Dictionary<string, object>
258+
{
259+
{nameof(Url), Url},
260+
{nameof(Direct), Direct}
261+
};
254262

255-
sb.Append(nameof(Url), Url);
256-
sb.Append(nameof(Direct), Direct);
257263

258-
if (Similarity.HasValue) {
259-
sb.Append($"{nameof(Similarity)}", $"{Similarity.Value / 100:P}");
260-
}
264+
if (Similarity.HasValue) {
265+
map.Add($"{nameof(Similarity)}", $"{Similarity.Value / 100:P}");
266+
}
261267

262-
if (HasImageDimensions) {
263-
string val = $"{Width}x{Height} ({MegapixelResolution:F} MP)";
268+
if (HasImageDimensions) {
269+
string val = $"{Width}x{Height} ({MegapixelResolution:F} MP)";
264270

265-
var resType = DisplayResolution;
271+
var resType = DisplayResolution;
266272

267-
if (resType != DisplayResolutionType.Unknown) {
268-
val += ($" (~{resType})");
269-
}
273+
if (resType != DisplayResolutionType.Unknown) {
274+
val += ($" (~{resType})");
275+
}
270276

271-
sb.Append($"Resolution", val);
272-
}
277+
map.Add("Resolution", val);
278+
}
273279

274-
sb.Append(nameof(Name), Name);
275-
sb.Append(nameof(Description), Description);
276-
sb.Append(nameof(Artist), Artist);
277-
sb.Append(nameof(Site), Site);
278-
sb.Append(nameof(Source), Source);
279-
sb.Append(nameof(Characters), Characters);
280+
map.Add(nameof(Name), Name);
281+
map.Add(nameof(Description), Description);
282+
map.Add(nameof(Artist), Artist);
283+
map.Add(nameof(Site), Site);
284+
map.Add(nameof(Source), Source);
285+
map.Add(nameof(Characters), Characters);
280286

281-
foreach (var (key, value) in OtherMetadata) {
282-
sb.Append(key, value);
283-
}
287+
foreach (var (key, value) in OtherMetadata) {
288+
map.Add(key, value);
289+
}
284290

285-
sb.Append($"Detail score", $"{DetailScore}/{DetailFields.Count} ({(IsDetailed ? "Y" : "N")})");
291+
map.Add("Detail score", $"{DetailScore}/{DetailFields.Count} ({(IsDetailed ? "Y" : "N")})");
286292

287-
var xs = sb.ToString().RemoveLastOccurrence("\n");
293+
#pragma warning restore CS8604
288294

289-
return indent ? Strings.Indent(xs) : xs;
295+
return map;
296+
}
290297
}
291-
292-
public override string ToString() => ToString(false);
293298
}
294299
}

SmartImage.Lib/Searching/SearchResult.cs

Lines changed: 15 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ public enum ResultStatus
4747
/// <summary>
4848
/// Describes a search result
4949
/// </summary>
50-
public class SearchResult
50+
public class SearchResult : IViewable
5151
{
5252
/// <summary>
5353
/// Primary image result
@@ -125,39 +125,25 @@ public void Consolidate()
125125
}
126126

127127

128-
public string ToString(bool name)
129-
{
130-
var sb = new ExtendedStringBuilder();
131-
132-
if (name) {
133-
sb.AppendLine($"[{Engine.Name}] :: ({Status}; {(!IsNonPrimitive ? "NP" : "P")})");
134-
135-
}
136-
else {
137-
sb.Append("\n");
128+
public override string ToString() => Strings.ViewString(this);
138129

139-
}
130+
public Dictionary<string, object> View
131+
{
132+
get
133+
{
134+
var map = new Dictionary<string, object>();
140135

141-
if (PrimaryResult.Url != null) {
142-
//var resStr = sb.IndentFields(PrimaryResult.ToString());
136+
if (PrimaryResult.Url != null) {
137+
map.Add(nameof(PrimaryResult), PrimaryResult);
138+
}
143139

144-
string resStr = PrimaryResult.ToString(true);
145-
string separator = Strings.Indentation + Strings.Separator;
140+
141+
map.Add("Raw", RawUri);
142+
map.Add("Other image results", OtherResults.Count);
143+
map.Add("Error", ErrorMessage);
146144

147-
sb.Append($"{resStr}\n{separator}\n");
145+
return map;
148146
}
149-
150-
//========================================================================//
151-
152-
var sb2 = new ExtendedStringBuilder();
153-
sb2.Append("Raw", RawUri);
154-
sb2.Append("Other image results", OtherResults, $"{OtherResults.Count}");
155-
sb2.Append("Error", ErrorMessage);
156-
157-
return sb.Append(sb.IndentFields(sb2.ToString())).ToString();
158147
}
159-
160-
161-
public override string ToString() => ToString(true);
162148
}
163149
}

SmartImage/Core/DialogBridge.cs

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -42,13 +42,13 @@ internal static NConsoleOption CreateOption(SearchResult result)
4242

4343
return null;
4444
},
45-
45+
4646
ComboFunction = CreateComboFunction(result.PrimaryResult),
47-
48-
Color = EngineNameColorMap[result.Engine.EngineOption],
4947

50-
Name = result.Engine.Name,
51-
Data = result.ToString(false)
48+
Color = EngineColorMap[result.Engine.EngineOption],
49+
50+
Name = result.Engine.Name,
51+
Data = result,
5252
};
5353

5454
option.CtrlFunction = () =>
@@ -67,22 +67,24 @@ internal static NConsoleOption CreateOption(SearchResult result)
6767
cts.Cancel();
6868
cts.Dispose();
6969

70-
option.Data = result.ToString(false);
70+
option.Data = result;
7171

7272
return null;
7373
};
7474

7575
return option;
7676
}
7777

78-
private static NConsoleOption CreateOption(ImageResult r)
78+
private static NConsoleOption CreateOption(ImageResult result)
7979
{
80+
8081
var option = new NConsoleOption
8182
{
82-
Function = CreateMainFunction(r),
83-
ComboFunction = CreateComboFunction(r),
84-
Name = "Other result\n\b",
85-
Data = r.ToString(true)
83+
Function = CreateMainFunction(result),
84+
ComboFunction = CreateComboFunction(result),
85+
Color = OtherResultColor,
86+
Name = "Other result",
87+
Data = result
8688
};
8789

8890
return option;
@@ -119,7 +121,7 @@ private static NConsoleFunction CreateComboFunction(ImageResult result)
119121
};
120122
}
121123

122-
private static readonly Dictionary<SearchEngineOptions, Color> EngineNameColorMap = new()
124+
private static readonly Dictionary<SearchEngineOptions, Color> EngineColorMap = new()
123125
{
124126
{SearchEngineOptions.Iqdb, Color.SandyBrown},
125127
{SearchEngineOptions.SauceNao, Color.SpringGreen},
@@ -133,5 +135,7 @@ private static NConsoleFunction CreateComboFunction(ImageResult result)
133135
{SearchEngineOptions.Yandex, Color.IndianRed},
134136
{SearchEngineOptions.TinEye, Color.CornflowerBlue},
135137
};
138+
139+
private static readonly Color OtherResultColor = Color.MediumTurquoise;
136140
}
137141
}

SmartImage/Program.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
using SmartImage.Lib.Searching;
2323
using SmartImage.Lib.Utilities;
2424
using SmartImage.Utilities;
25+
// ReSharper disable ConvertSwitchStatementToSwitchExpression
2526

2627
// ReSharper disable UnusedParameter.Local
2728

Test/Program.cs

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -87,12 +87,13 @@ public static async Task Main(string[] args)
8787
var i2 = i.GetResultAsync(q);
8888
var r2 = await i2;
8989
sw.Stop();
90+
91+
92+
//Console.WriteLine(r2);
93+
94+
Console.WriteLine(Strings.ViewString(r2));
9095

91-
Console.WriteLine($">> {r2}");
92-
Console.WriteLine($"{sw.Elapsed.TotalSeconds}");
9396

94-
r2.Consolidate();
95-
Console.WriteLine(r2);
9697

9798
/*var sw = Stopwatch.StartNew();
9899
var t = ImageHelper.FindDirectImagesAsync("https://www.zerochan.net/2750747");

0 commit comments

Comments
 (0)