Skip to content

Commit 37a26bb

Browse files
committed
Improvements
1 parent e3f4bce commit 37a26bb

File tree

10 files changed

+108
-81
lines changed

10 files changed

+108
-81
lines changed

SmartImage.Lib/Engines/BaseSearchEngine.cs

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
using System;
44
using System.Diagnostics;
55
using System.Linq;
6+
using System.Net.NetworkInformation;
67
using System.Threading.Tasks;
78
using SmartImage.Lib.Utilities;
89
using static SimpleCore.Diagnostics.LogCategories;
@@ -71,13 +72,18 @@ public Uri GetRawResultUri(ImageQuery query)
7172
{
7273
var uri = new Uri(BaseUrl + query.UploadUri);
7374

74-
bool ok = Network.IsUriAlive(uri, Timeout);
75+
var reply = Network.Ping(uri, (long)Timeout.TotalMilliseconds);
7576

76-
if (!ok) {
77-
Debug.WriteLine($"{uri} is unavailable or timed out after {Timeout:g}", C_WARN);
77+
//var b = Network.IsAlive(uri, (long) Timeout.TotalMilliseconds);
78+
79+
//var b1 = ok.Status != IPStatus.Success || ok.Status == IPStatus.TimedOut;
80+
81+
82+
83+
if (reply.Status != IPStatus.Success) {
84+
Debug.WriteLine($"{Name} is unavailable or timed out after {Timeout:g} ({reply.Status})", C_WARN);
7885
return null;
7986
}
80-
8187
return uri;
8288
}
8389
}

SmartImage.Lib/Engines/Impl/TraceMoeEngine.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ public sealed class TraceMoeEngine : ClientSearchEngine
2222
{
2323
public TraceMoeEngine() : base("https://trace.moe/?url=", "https://api.trace.moe") { }
2424

25+
//public override TimeSpan Timeout => TimeSpan.FromSeconds(4);
2526

2627
/// <summary>
2728
/// Used to retrieve more information about results

SmartImage.Lib/SearchClient.cs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -76,9 +76,8 @@ public void Reload()
7676
.Where(e => Config.SearchEngines.HasFlag(e.EngineOption))
7777
.ToArray();
7878

79-
Trace.WriteLine($"Engines: {Config.SearchEngines} | {Engines.QuickJoin()}");
80-
8179

80+
Trace.WriteLine($"Engines: {Config.SearchEngines}");
8281
}
8382

8483
/// <summary>

SmartImage.Lib/Searching/ImageResult.cs

Lines changed: 23 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,11 @@ public float? MegapixelResolution
120120

121121
public Image? Image { get; set; }
122122

123+
public ImageResult()
124+
{
125+
OtherMetadata = new Dictionary<string, object>();
126+
}
127+
123128
public static ImageResult FromDirectImage(DirectImage di)
124129
{
125130
var ir = new ImageResult
@@ -134,11 +139,6 @@ public static ImageResult FromDirectImage(DirectImage di)
134139
return ir;
135140
}
136141

137-
public ImageResult()
138-
{
139-
OtherMetadata = new Dictionary<string, object>();
140-
}
141-
142142
private static List<FieldInfo> GetDetailFields()
143143
{
144144
var fields = typeof(ImageResult).GetRuntimeFields().Where(f => !f.IsStatic).ToList();
@@ -209,35 +209,34 @@ public void UpdateFrom(ImageResult result)
209209

210210
public void FindDirectImages()
211211
{
212-
if (Url is not null && Direct == null) {
213212

214-
if (ImageHelper.IsDirect(Url.ToString())) {
215-
Direct = Url;
213+
if (Url == null || Direct != null)
214+
return;
216215

217-
}
218-
else {
219-
try {
216+
if (ImageHelper.IsDirect(Url.ToString())) {
217+
Direct = Url;
218+
}
219+
else {
220+
try {
220221

221-
var directImages = ImageHelper.FindDirectImages(Url.ToString());
222+
var directImages = ImageHelper.FindDirectImages(Url.ToString());
222223

223-
var direct = directImages?.FirstOrDefault();
224+
var direct = directImages?.FirstOrDefault();
224225

225-
if (direct != null) {
226-
Direct = (direct.Value.Direct);
227-
Image = direct.Value.Image;
228-
//Debug.WriteLine($"{Url} -> {Direct}");
226+
if (direct != null) {
227+
Direct = (direct.Value.Direct);
228+
Image = direct.Value.Image;
229+
//Debug.WriteLine($"{Url} -> {Direct}");
229230

230-
}
231-
}
232-
catch {
233-
//
234231
}
235232
}
233+
catch {
234+
//
235+
}
236+
}
236237

237238

238-
UpdateImageData();
239-
240-
}
239+
UpdateImageData();
241240
}
242241

243242
public void UpdateImageData()

SmartImage.Lib/Utilities/ImageHelper.cs

Lines changed: 33 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
using Novus.Win32;
1414
using SimpleCore.Net;
1515
using SimpleCore.Utilities;
16+
using static SimpleCore.Diagnostics.LogCategories;
1617

1718
// ReSharper disable CognitiveComplexity
1819
// ReSharper disable PossibleNullReferenceException
@@ -114,35 +115,39 @@ public static bool IsDirect(string url, DirectImageType directType = DirectImage
114115

115116
}
116117

117-
public static Dictionary<string,string> InstalledUtilities
118+
119+
#region Cli
120+
121+
private const string MAGICK_EXE = "magick.exe";
122+
private const string GALLERY_DL_EXE = "gallery-dl.exe";
123+
private const string YOUTUBE_DL_EXE = "youtube-dl.exe";
124+
private const string FFPROBE_EXE = "ffprobe.exe";
125+
private const string FFMPEG_EXE = "ffmpeg.exe";
126+
127+
public static Dictionary<string, string> UtilitiesMap
118128
{
119129
get
120130
{
121-
var utils = new List<string>
122-
{
123-
FFMPEG_EXE, FFPROBE_EXE, MAGICK_EXE, YOUTUBE_DL_EXE, GALLERY_DL_EXE
124-
};
125-
126131
var rg = new Dictionary<string, string>();
127132

128-
foreach (string s in utils) {
129-
var x = FileSystem.SearchInPath(s);
133+
foreach (string exe in Utilities) {
134+
var path = FileSystem.SearchInPath(exe);
130135

131136

132-
rg.Add(s,x);
137+
rg.Add(exe, path);
133138
}
134139

135140
return rg;
136141

137142
}
138143
}
139144

145+
public static readonly List<string> Utilities = new()
146+
{
147+
FFMPEG_EXE, FFPROBE_EXE, MAGICK_EXE, YOUTUBE_DL_EXE, GALLERY_DL_EXE
148+
};
140149

141-
private const string MAGICK_EXE = "magick.exe";
142-
private const string GALLERY_DL_EXE = "gallery-dl.exe";
143-
private const string YOUTUBE_DL_EXE = "youtube-dl.exe";
144-
private const string FFPROBE_EXE = "ffprobe.exe";
145-
private const string FFMPEG_EXE = "ffmpeg.exe";
150+
#endregion
146151

147152

148153
/// <summary>
@@ -161,11 +166,11 @@ public static List<DirectImage> FindDirectImages(string url, DirectImageType dir
161166
{
162167
var directImages = new List<DirectImage>();
163168

164-
string gallerydl = InstalledUtilities[GALLERY_DL_EXE];
169+
string gallerydl = UtilitiesMap[GALLERY_DL_EXE];
165170

166171
if (gallerydl != null) {
167172

168-
Trace.WriteLine($"Using gallery-dl!");
173+
//Trace.WriteLine($"Using gallery-dl!");
169174

170175
var output = new Process
171176
{
@@ -174,6 +179,7 @@ public static List<DirectImage> FindDirectImages(string url, DirectImageType dir
174179
FileName = gallerydl,
175180
Arguments = $"-G {url}",
176181
RedirectStandardOutput = true,
182+
RedirectStandardError = true,
177183
CreateNoWindow = true
178184
}
179185
};
@@ -190,9 +196,17 @@ public static List<DirectImage> FindDirectImages(string url, DirectImageType dir
190196
Direct = new Uri(str),
191197
Image = Image.FromStream(WebUtilities.GetStream(str))
192198
});
199+
//Debug.WriteLine($">>{d}");
200+
}
201+
202+
var standardError = output.StandardError;
203+
204+
while (!standardError.EndOfStream) {
205+
var line = standardError.ReadLine();
206+
Debug.WriteLine($"{GALLERY_DL_EXE}: {line}", C_ERROR);
193207
}
194208

195-
return directImages;
209+
return directImages.OrderByDescending(x => x.Image.Width * x.Image.Height).ToList();
196210
}
197211

198212
imageFilter ??= (x) => true;
@@ -248,7 +262,7 @@ public static List<DirectImage> FindDirectImages(string url, DirectImageType dir
248262
if (!Network.IsUri(currentUrl, out var uri))
249263
continue;
250264

251-
if (!Network.IsUriAlive(uri, pingTime))
265+
if (!Network.IsAlive(uri, (long)pingTime.TotalMilliseconds))
252266
continue;
253267

254268
if (!IsDirect(currentUrl, directType))
@@ -301,7 +315,7 @@ public static List<DirectImage> FindDirectImages(string url, DirectImageType dir
301315
Task.WaitAll(tasks.ToArray());
302316

303317

304-
return directImages;
318+
return directImages.OrderByDescending(x => x.Image.Width * x.Image.Height).ToList();
305319

306320
}
307321

SmartImage/Core/AppIntegration.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@
1212
using SimpleCore.Utilities;
1313
using static SimpleCore.Diagnostics.LogCategories;
1414

15+
// ReSharper disable CognitiveComplexity
16+
1517
// ReSharper disable InconsistentNaming
1618

1719
// ReSharper disable UnusedMember.Global

SmartImage/Core/AppInterface.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
using Novus.Win32;
2121
using SimpleCore.Net;
2222
using SmartImage.Lib;
23+
using SmartImage.Lib.Utilities;
2324
using SmartImage.Utilities;
2425
using static Novus.Utilities.ReflectionOperatorHelpers;
2526
using static SmartImage.Program;
@@ -149,11 +150,12 @@ internal static class AppInterface
149150
Console.WriteLine();
150151
Console.WriteLine(Strings.Separator);
151152

152-
foreach (string utility in AppInfo.InstalledUtilities) {
153+
foreach (var utility in ImageHelper.UtilitiesMap) {
153154
Console.WriteLine(utility);
154155
}
155156

156157
Console.WriteLine();
158+
Console.WriteLine(Strings.Separator);
157159

158160
var dependencies = ReflectionHelper.DumpDependencies();
159161

SmartImage/Program.cs

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@
3737
using SmartImage.Lib.Searching;
3838
using SmartImage.Lib.Utilities;
3939
using SmartImage.Utilities;
40+
4041
// ReSharper disable CognitiveComplexity
4142

4243
namespace SmartImage
@@ -49,9 +50,9 @@ public static class Program
4950
// ___) | | | | | | (_| | | | |_ | || | | | | | (_| | (_| | __/
5051
// |____/|_| |_| |_|\__,_|_| \__|___|_| |_| |_|\__,_|\__, |\___|
5152
// |___/
52-
53+
5354
#region Core fields
54-
55+
5556
public static readonly SearchConfig Config = new();
5657

5758
public static readonly SearchClient Client = new(Config);
@@ -62,7 +63,6 @@ public static class Program
6263
Description = AppInterface.Description
6364
};
6465

65-
6666
#endregion
6767

6868
/// <summary>
@@ -78,6 +78,8 @@ private static async Task Main(string[] args)
7878

7979

8080
#endif
81+
82+
8183
/*
8284
* Setup
8385
* Check compatibility
@@ -125,10 +127,8 @@ private static async Task Main(string[] args)
125127
case CMD_FIND_DIRECT:
126128
argEnumerator.MoveNext();
127129

128-
var directImages = ImageHelper.FindDirectImages((string) argEnumerator.Current);
129-
130-
var imageResults = directImages.Select(ImageResult.FromDirectImage);
131-
130+
var directImages = ImageHelper.FindDirectImages((string) argEnumerator.Current);
131+
var imageResults = directImages.Select(ImageResult.FromDirectImage);
132132
var directOptions = AppInterface.CreateResultOptions(imageResults, "Image");
133133

134134

@@ -171,7 +171,7 @@ private static async Task Main(string[] args)
171171

172172
// Add original image
173173
ResultDialog.Options.Add(AppInterface.CreateResultOption(
174-
Config.Query.GetImageResult(), "(Original image)",
174+
Config.Query.GetImageResult(), "(Original image)",
175175
AppInterface.ColorMain, -0.1f));
176176

177177

@@ -235,6 +235,5 @@ private static void OnResultCompleted(object? sender, SearchResultEventArgs even
235235
private const string CMD_SEARCH = "search";
236236

237237
#endregion
238-
239238
}
240239
}

0 commit comments

Comments
 (0)