@@ -197,51 +197,51 @@ private static List<FieldInfo> GetDetailFields()
197197
198198 public void UpdateFrom ( ImageResult result )
199199 {
200- Url = result . Url ;
201- Direct = result . Direct ;
202- Similarity = result . Similarity ;
203- Width = result . Width ;
204- Height = result . Height ;
205- Source = result . Source ;
206- Characters = result . Characters ;
207- Artist = result . Artist ;
208- Site = result . Site ;
209- Description = result . Description ;
210- Date = result . Date ;
200+ Url = result . Url ;
201+ DirectImages = result . DirectImages ;
202+ Similarity = result . Similarity ;
203+ Width = result . Width ;
204+ Height = result . Height ;
205+ Source = result . Source ;
206+ Characters = result . Characters ;
207+ Artist = result . Artist ;
208+ Site = result . Site ;
209+ Description = result . Description ;
210+ Date = result . Date ;
211211
212212 }
213213
214- public DirectImage Direct { get ; internal set ; } = new ( ) ;
214+ public List < DirectImage > DirectImages { get ; internal set ; } = new ( ) { } ;
215215
216- public async Task < bool > ScanForImagesAsync ( )
216+ public DirectImage DirectImage
217217 {
218- if ( Url == null ) {
218+ get => DirectImages . FirstOrDefault ( ) ;
219+ set => DirectImages [ 0 ] = value ;
220+ }
221+
222+ public bool ScanForImages ( )
223+ {
224+ if ( Url == null ) {
219225 return false ;
220226 }
221227
222- if ( Direct is { Url : { } } || IsAlreadyDirect ( ) ) {
228+ if ( DirectImage is { Url : { } } || IsAlreadyDirect ( ) ) {
223229 return true ;
224230 }
225231
226232 try {
227233
228- var directImages = await ImageHelper . ScanForImages ( Url . ToString ( ) ) ;
234+ var directImages = ImageHelper . ScanForImages ( Url . ToString ( ) )
235+ . Where ( x => x is { Url : { } } )
236+ . ToList ( ) ;
229237
230238 if ( directImages . Any ( ) ) {
231239 Debug . WriteLine ( $ "{ Url } : Found { directImages . Count } direct images") ;
232240
233- var direct = directImages . First ( ) ;
234-
235- if ( direct != null ) {
236- Direct = direct ;
237241
238- for ( int i = 1 ; i < directImages . Count ; i ++ ) {
239- directImages [ i ] . Dispose ( ) ;
240- }
241-
242- return true ;
243- }
242+ DirectImages . AddRange ( directImages ) ;
244243
244+ return true ;
245245 }
246246 }
247247 catch {
@@ -263,7 +263,7 @@ private bool IsAlreadyDirect()
263263 var b = ImageHelper . IsImage ( s , out var di ) ;
264264
265265 if ( b ) {
266- Direct = di ;
266+ DirectImages . Add ( di ) ;
267267 }
268268 else {
269269 di . Dispose ( ) ;
@@ -279,11 +279,11 @@ public Dictionary<string, object> Data
279279 var map = new Dictionary < string , object >
280280 {
281281 { nameof ( Url ) , Url } ,
282- { "Direct Url" , Direct . Url }
282+ { "Direct Url" , DirectImage ? . Url }
283283 } ;
284284
285285 if ( Similarity . HasValue ) {
286- map . Add ( $ "{ nameof ( Similarity ) } ", $ "{ Similarity . Value / 100 : P} ") ;
286+ map . Add ( $ "{ nameof ( Similarity ) } ", $ "{ Similarity . Value / 100 : P} ") ;
287287 }
288288
289289 if ( HasImageDimensions ) {
@@ -322,7 +322,10 @@ public Dictionary<string, object> Data
322322
323323 public void Dispose ( )
324324 {
325- Direct ? . Dispose ( ) ;
325+
326+ for ( int i = 0 ; i < DirectImages . Count ; i ++ ) {
327+ DirectImages [ i ] . Dispose ( ) ;
328+ }
326329 }
327330
328331 public ConsoleOption GetConsoleOption ( )
@@ -333,7 +336,7 @@ public ConsoleOption GetConsoleOption()
333336 Functions =
334337 {
335338 [ ConsoleOption . NC_FN_MAIN ] = IResult . CreateOpenFunction ( Url ) ,
336- [ ConsoleOption . NC_FN_COMBO ] = IResult . CreateDownloadFunction ( ( ) => Direct . Url )
339+ [ ConsoleOption . NC_FN_COMBO ] = IResult . CreateDownloadFunction ( ( ) => DirectImage . Url )
337340 }
338341 } ;
339342
0 commit comments