55using Flurl . Http ;
66using JetBrains . Annotations ;
77using Newtonsoft . Json ;
8+ using Newtonsoft . Json . Linq ;
9+ using RestSharp . Serialization . Json ;
810using SmartImage . Lib . Clients ;
911using SmartImage . Lib . Engines . Search . Base ;
1012using SmartImage . Lib . Searching ;
@@ -28,7 +30,7 @@ public TraceMoeEngine() : base("https://trace.moe/?url=", "https://api.trace.moe
2830 /// Used to retrieve more information about results
2931 /// </summary>
3032 private readonly AnilistClient m_anilistClient = new ( ) ;
31-
33+
3234
3335 public override string Name => "trace.moe" ;
3436
@@ -56,7 +58,38 @@ protected override SearchResult Process(object obj, SearchResult r)
5658 var task = request . GetStringAsync ( ) ;
5759
5860 task . Wait ( Timeout ) ;
59- tm = JsonConvert . DeserializeObject < TraceMoeRootObject > ( task . Result ) ;
61+ var result = task . Result ;
62+
63+ /*JObject jo;
64+
65+ jo = JObject.Parse(result);
66+ var token = jo["result"];
67+
68+ Debug.WriteLine(result);
69+ var rg = JsonConvert.DeserializeObject<List<TraceMoeDoc>>(token.ToString());
70+
71+ tm = new();
72+ tm.result = rg.ToList();
73+ tm.error = jo["error"].ToString();
74+ tm.frameCount = long.Parse(jo["frameCount"].ToString());*/
75+
76+
77+ // tm = JsonConvert.DeserializeObject<TraceMoeRootObject>(result);
78+
79+ var settings = new JsonSerializerSettings
80+ {
81+ Error = ( sender , args ) =>
82+ {
83+ if ( object . Equals ( args . ErrorContext . Member , nameof ( TraceMoeDoc . episode ) ) &&
84+ args . ErrorContext . OriginalObject . GetType ( ) == typeof ( TraceMoeDoc ) )
85+ {
86+ args . ErrorContext . Handled = true ;
87+ }
88+ }
89+ } ;
90+ tm = JsonConvert . DeserializeObject < TraceMoeRootObject > ( result , settings ) ;
91+
92+
6093 }
6194 catch ( Exception e ) {
6295 Debug . WriteLine ( $ "{ e . Message } ") ;
@@ -166,6 +199,7 @@ private class TraceMoeDoc
166199
167200
168201 /// <remarks>Episode field may contain multiple possible results delimited by <c>|</c></remarks>
202+ [ JsonIgnore ]
169203 public string episode { get ; set ; }
170204
171205 public double similarity { get ; set ; }
@@ -178,9 +212,11 @@ private class TraceMoeDoc
178212 [ UsedImplicitly ( ImplicitUseTargetFlags . WithMembers ) ]
179213 private class TraceMoeRootObject
180214 {
181- public long frameCount { get ; set ; }
182- public string error { get ; set ; }
183- public List < TraceMoeDoc > result { get ; set ; }
215+ public long frameCount { get ; set ; }
216+
217+ public string error { get ; set ; }
218+
219+ public List < TraceMoeDoc > result { get ; set ; }
184220 }
185221
186222 #endregion
0 commit comments