Ejemplo n.º 1
0
        public virtual FullSearchResult GetResult(string url)
        {
            string rawUrl = GetRawResultUrl(url);

            var sr = new FullSearchResult(this, rawUrl)
            {
                RawUrl = rawUrl
            };


            return(sr);
        }
Ejemplo n.º 2
0
        public ActionResult FullSearch(string id)
        {
            int totalCount;
            var results = DoSearch(id, out totalCount);
            var model   = new FullSearchResult
            {
                Customers  = results,
                SearchText = id
            };

            return(View(model));
        }
Ejemplo n.º 3
0
        public override FullSearchResult GetResult(string url)
        {
            FullSearchResult r;
            //var r = base.GetResult(url);

            var tm = GetApiResults(url, out var code, out var res, out var msg);

            if (tm?.docs != null)
            {
                // Most similar to least similar

                try
                {
                    var results = ConvertResults(tm).ToList();
                    var best    = results[0];

                    r = new FullSearchResult(this, best.Url, best.Similarity)
                    {
                        Source      = best.Source,
                        Description = best.Description,
                    };
                    r.Filter = r.Similarity < FilterThreshold;

                    r.AddExtendedResults(results);
                }
                catch (Exception e)
                {
                    r = base.GetResult(url);
                    r.AddErrorMessage(e.Message);
                    return(r);
                }
            }
            else
            {
                r = base.GetResult(url);

                r.AddErrorMessage(msg);
            }


            return(r);
        }
Ejemplo n.º 4
0
        private BaseSearchResult[] ConvertResults(TraceMoeRootObject obj)
        {
            var docs    = obj.docs;
            var results = new BaseSearchResult[docs.Count];

            for (int i = 0; i < results.Length; i++)
            {
                var doc = docs[i];
                var sim = (float?)doc.similarity * 100;

                var malUrl = MAL_URL + doc.mal_id;

                results[i] = new FullSearchResult(this, malUrl, sim)
                {
                    Source      = doc.title_english,
                    Description = $"Episode #{doc.episode} @ {TimeSpan.FromSeconds(doc.at)}"
                };
            }

            return(results);
        }
Ejemplo n.º 5
0
        public override FullSearchResult GetResult(string url)
        {
            FullSearchResult result = base.GetResult(url);

            try
            {
                var orig = GetDataResults(url);

                if (orig == null)
                {
                    //return result;
                    Debug.WriteLine("Parsing HTML from SN!");
                    orig = ParseResults(url).ToArray();
                }

                // aggregate all info for primary result

                string?character = orig.FirstOrDefault(o => !String.IsNullOrWhiteSpace(o.Character))?.Character;
                string?creator   = orig.FirstOrDefault(o => !String.IsNullOrWhiteSpace(o.Creator))?.Creator;
                string?material  = orig.FirstOrDefault(o => !String.IsNullOrWhiteSpace(o.Material))?.Material;


                var extended = ConvertDataResults(orig).ToList();

                var ordered = extended
                              .Where(e => e.Url != null)
                              .OrderByDescending(e => e.Similarity)
                              .ToList();


                if (!ordered.Any())
                {
                    // No good results

                    result.Filter = true;
                    return(result);
                }

                var best = ordered.First();


                // Copy
                result.UpdateFrom(best);

                result.Characters = character;
                result.Artist     = creator;
                result.Source     = material;

                result.AddExtendedResults(extended);

                if (!String.IsNullOrWhiteSpace(m_apiKey))
                {
                    result.Metadata.Add("API", "Enabled");
                }
            }
            catch (Exception e)
            {
                Debug.WriteLine($"SauceNao error: {e.StackTrace}");
                result.AddErrorMessage(e.Message);
            }

            return(result);
        }