1010using AngleSharp . Html . Parser ;
1111using AngleSharp . XPath ;
1212using RestSharp ;
13+ using SimpleCore . Diagnostics ;
1314using SimpleCore . Net ;
1415using SimpleCore . Utilities ;
1516using SmartImage . Lib . Searching ;
1617using static SimpleCore . Diagnostics . LogCategories ;
1718using JsonArray = System . Json . JsonArray ;
1819using JsonObject = System . Json . JsonObject ;
20+ // ReSharper disable PropertyCanBeMadeInitOnly.Local
1921
2022// ReSharper disable PossibleMultipleEnumeration
2123
@@ -50,7 +52,7 @@ public SauceNaoEngine() : this(String.Empty) { } //todo
5052 public string Authentication { get ; init ; }
5153
5254 public override SearchEngineOptions EngineOption => SearchEngineOptions . SauceNao ;
53-
55+
5456
5557 private static IEnumerable < SauceNaoDataResult > ParseResults ( string url )
5658 {
@@ -69,17 +71,19 @@ private static IEnumerable<SauceNaoDataResult> ParseResults(string url)
6971 * 208.110.232.218, your IP has exceeded the unregistered user's daily limit of 100 searches.
7072 */
7173
72- if ( html . Contains ( "Search Limit Exceeded" ) ) {
74+ const string COOLDOWN = "Search Limit Exceeded" ;
75+
76+ if ( html . Contains ( COOLDOWN ) ) {
7377 Trace . WriteLine ( "SauceNao on cooldown!" , C_WARN ) ;
74-
78+
7579 return null ;
7680 }
7781
7882 var doc = docp . ParseDocument ( html ) ;
7983
80- // todo: improve
84+ const string RESULT_NODE = "//div[@class='result']" ;
8185
82- var results = doc . Body . SelectNodes ( "//div[@class='result']" ) ;
86+ var results = doc . Body . SelectNodes ( RESULT_NODE ) ;
8387
8488 return results . Select ( Parse ) . ToList ( ) ;
8589 }
@@ -90,20 +94,22 @@ private static SauceNaoDataResult Parse(INode result)
9094 return null ;
9195 }
9296
93- if ( result . TryGetAttribute ( "id" ) == "result-hidden-notification" ) {
97+ const string HIDDEN_ID_VAL = "result-hidden-notification" ;
98+
99+ if ( result . TryGetAttribute ( "id" ) == HIDDEN_ID_VAL ) {
94100 return null ;
95101 }
96-
102+
97103 var resulttablecontent = result . FirstChild . FirstChild . FirstChild . ChildNodes [ 1 ] ;
98-
104+
99105 var resultmatchinfo = resulttablecontent . FirstChild ;
100106 var resultsimilarityinfo = resultmatchinfo . FirstChild ;
101107
102108 // Contains links
103109 var resultmiscinfo = resultmatchinfo . ChildNodes [ 1 ] ;
104-
110+
105111 var resultcontent = resulttablecontent . ChildNodes [ 1 ] ;
106-
112+
107113 var resultcontentcolumn = resultcontent . ChildNodes [ 1 ] ;
108114
109115 string link = null ;
@@ -125,22 +131,21 @@ private static SauceNaoDataResult Parse(INode result)
125131 string rcci = resultcontentcolumn1 ? . TextContent ;
126132
127133 string material1 = rcci ? . SubstringAfter ( "Material: " ) ;
128-
134+
129135 string creator1 = rti ?? rcci ;
130136 creator1 = creator1 ? . SubstringAfter ( "Creator: " ) ;
131-
132137
133138
134139 float similarity = Single . Parse ( resultsimilarityinfo . TextContent . Replace ( "%" , String . Empty ) ) ;
135140
136- var i = new SauceNaoDataResult
141+ var dataResult = new SauceNaoDataResult
137142 {
138143 Urls = new [ ] { link } ! ,
139144 Similarity = similarity ,
140145 Creator = creator1
141146 } ;
142147
143- return i ;
148+ return dataResult ;
144149 }
145150
146151 public override SearchResult GetResult ( ImageQuery url )
@@ -154,7 +159,7 @@ public override SearchResult GetResult(ImageQuery url)
154159
155160 if ( orig == null ) {
156161 //return result;
157- Debug . WriteLine ( "[info ] Parsing HTML from SN!" ) ;
162+ Debug . WriteLine ( $ "[ { Name } ] Parsing HTML" , LogCategories . C_INFO ) ;
158163
159164 string urlStr = url . Uri . ToString ( ) ;
160165
@@ -200,12 +205,11 @@ public override SearchResult GetResult(ImageQuery url)
200205 sresult . OtherResults . AddRange ( extended ) ;
201206
202207 if ( ! String . IsNullOrWhiteSpace ( Authentication ) ) {
203- Debug . WriteLine ( $ "SN API key: { Authentication } ") ;
208+ Debug . WriteLine ( $ "{ Name } API key: { Authentication } ") ;
204209 }
205210 }
206211 catch ( Exception e ) {
207- Debug . WriteLine ( $ "SauceNao error: { e . StackTrace } ") ;
208- //todo
212+ Debug . WriteLine ( $ "{ Name } error: { e . StackTrace } ", C_ERROR ) ;
209213 sresult . Status = ResultStatus . Failure ;
210214 }
211215
@@ -258,7 +262,7 @@ private static ImageResult ConvertToImageResult(SauceNaoDataResult sn)
258262
259263 // var x = new BasicSearchResult(url, sn.Similarity,
260264 // sn.WebsiteTitle, sn.Creator, sn.Material, sn.Character, siteName);
261- var x = new ImageResult
265+ var imageResult = new ImageResult
262266 {
263267 Url = String . IsNullOrWhiteSpace ( url ) ? default : new Uri ( url ) ,
264268 Similarity = MathF . Round ( sn . Similarity , 2 ) ,
@@ -269,7 +273,7 @@ private static ImageResult ConvertToImageResult(SauceNaoDataResult sn)
269273 Site = siteName
270274 } ;
271275
272- return x ;
276+ return imageResult ;
273277 }
274278
275279 return null ;
0 commit comments