@@ -22,9 +22,12 @@ public IqdbEngine() : base("https://iqdb.org/?url=") { }
2222
2323 public override SearchEngineOptions Engine => SearchEngineOptions . Iqdb ;
2424
25+ public override float ? FilterThreshold => 70.00F ;
26+
2527 private struct IqdbResult : ISearchResult
2628 {
27- public bool ? Filter { get ; set ; }
29+ public bool Filter { get ; set ; }
30+
2831 public string ? Caption { get ; set ; }
2932
3033 public string Source { get ; }
@@ -45,36 +48,38 @@ public IqdbResult(string caption, string source, string url, int width, int heig
4548 Width = width ;
4649 Height = height ;
4750 Similarity = similarity ;
48- Filter = null ;
51+ Filter = false ; // set later
4952 }
5053
5154 public override string ToString ( )
5255 {
5356 return
54- $ "{ nameof ( Caption ) } : { Caption } , { nameof ( Source ) } : { Source } , { nameof ( Width ) } : { Width } , { nameof ( Height ) } : { Height } , { nameof ( Url ) } : { Url } , { nameof ( Similarity ) } : { Similarity } ";
57+ $ "{ nameof ( Caption ) } : { Caption } , { nameof ( Source ) } : " +
58+ $ "{ Source } , { nameof ( Width ) } : { Width } , { nameof ( Height ) } : " +
59+ $ "{ Height } , { nameof ( Url ) } : { Url } , { nameof ( Similarity ) } : { Similarity } ";
5560 }
5661 }
5762
58- private static IqdbResult ParseResult ( HtmlNodeCollection tr )
63+ private IqdbResult ParseResult ( HtmlNodeCollection tr )
5964 {
6065 var caption = tr [ 0 ] ;
61- var img = tr [ 1 ] ;
62- var src = tr [ 2 ] ;
66+ var img = tr [ 1 ] ;
67+ var src = tr [ 2 ] ;
6368
6469 string url = null ! ;
6570
6671 var urlNode = img . FirstChild . FirstChild ;
6772
6873 if ( urlNode . Name != "img" ) {
69- var origUrl = urlNode . Attributes [ "href" ] . Value ;
74+ var origUrl = urlNode . Attributes [ "href" ] . Value ;
7075
7176 Debug . WriteLine ( origUrl ) ;
72-
77+
7378 // Links must begin with http:// in order to work with "start"
7479 if ( origUrl . StartsWith ( "//" ) ) {
7580 origUrl = "http:" + origUrl ;
7681 }
77-
82+
7883
7984 url = origUrl ;
8085 }
@@ -83,7 +88,7 @@ private static IqdbResult ParseResult(HtmlNodeCollection tr)
8388
8489 if ( tr . Count >= 4 ) {
8590 var res = tr [ 3 ] ;
86- var wh = res . InnerText . Split ( "×" ) ;
91+ var wh = res . InnerText . Split ( "×" ) ;
8792
8893 var wStr = wh [ 0 ] . SelectOnlyDigits ( ) ;
8994 w = int . Parse ( wStr ) ;
@@ -98,7 +103,7 @@ private static IqdbResult ParseResult(HtmlNodeCollection tr)
98103
99104 if ( tr . Count >= 5 ) {
100105 var simNode = tr [ 4 ] ;
101- var simStr = simNode . InnerText . Split ( '%' ) [ 0 ] ;
106+ var simStr = simNode . InnerText . Split ( '%' ) [ 0 ] ;
102107 sim = float . Parse ( simStr ) ;
103108 }
104109 else {
@@ -107,7 +112,7 @@ private static IqdbResult ParseResult(HtmlNodeCollection tr)
107112
108113
109114 var i = new IqdbResult ( caption . InnerText , src . InnerText , url , w , h , sim ) ;
110-
115+ i . Filter = i . Similarity < FilterThreshold ;
111116 return i ;
112117 }
113118
@@ -116,20 +121,20 @@ public override FullSearchResult GetResult(string url)
116121 var sr = base . GetResult ( url ) ;
117122
118123 try {
119-
124+
120125 var html = Network . GetSimpleResponse ( sr . RawUrl ) ;
121126
122127 //Network.WriteResponse(html);
123128
124129 var doc = new HtmlDocument ( ) ;
125130 doc . LoadHtml ( html . Content ) ;
126-
131+
127132
128133 //var tables = doc.DocumentNode.SelectNodes("//table");
129134
130135 // Don't select other results
131136
132- var pages = doc . DocumentNode . SelectSingleNode ( "//div[@id='pages']" ) ;
137+ var pages = doc . DocumentNode . SelectSingleNode ( "//div[@id='pages']" ) ;
133138 var tables = pages . SelectNodes ( "div/table" ) ;
134139
135140 // No relevant results?
@@ -155,8 +160,9 @@ public override FullSearchResult GetResult(string url)
155160 images . RemoveAt ( 0 ) ;
156161
157162 var best = images [ 0 ] ;
158- sr . Url = best . Url ;
163+ sr . Url = best . Url ;
159164 sr . Similarity = best . Similarity ;
165+ sr . Filter = best . Filter ;
160166
161167 sr . AddExtendedResults ( images . ToArray ( ) ) ;
162168
0 commit comments