public async Task <MetadataResult <Movie> > GetMetadata(MovieInfo info, CancellationToken cancellationToken)
        {
            var   result = new MetadataResult <Movie>();
            Media media  = null;

            var aid = info.ProviderIds.GetOrDefault(ProviderNames.AniList);

            if (!string.IsNullOrEmpty(aid))
            {
                media = await _aniListApi.GetAnime(aid);
            }
            else
            {
                var e = AnitomySharp.AnitomySharp.Parse(info.Name).Where(x => x.Category.Equals(Element.ElementCategory.ElementAnimeTitle)).First();
                _log.LogInformation("Start AniList... Searching({Name})", e.Value);
                MediaSearchResult msr = await _aniListApi.Search_GetSeries(e.Value, cancellationToken);

                if (msr != null)
                {
                    media = await _aniListApi.GetAnime(msr.id.ToString());
                }
            }

            if (media != null)
            {
                result.HasMetadata = true;
                result.Item        = media.ToMovie();
                result.People      = media.GetPeopleInfo();
                result.Provider    = ProviderNames.AniList;
                StoreImageUrl(media.id.ToString(), media.GetImageUrl(), "image");
            }

            return(result);
        }
        public async Task <MetadataResult <Movie> > GetMetadata(MovieInfo info, CancellationToken cancellationToken)
        {
            var   result = new MetadataResult <Movie>();
            Media media  = null;

            var aid = info.ProviderIds.GetOrDefault(ProviderNames.AniList);

            if (!string.IsNullOrEmpty(aid))
            {
                media = await _aniListApi.GetAnime(aid);
            }
            else
            {
                _log.LogInformation("Start AniList... Searching({Name})", info.Name);
                MediaSearchResult msr = await _aniListApi.Search_GetSeries(info.Name, cancellationToken);

                if (msr != null)
                {
                    media = await _aniListApi.GetAnime(msr.id.ToString());
                }
            }

            if (media != null)
            {
                result.HasMetadata = true;
                result.Item        = media.ToMovie();
                result.People      = media.GetPeopleInfo();
                result.Provider    = ProviderNames.AniList;
                StoreImageUrl(media.id.ToString(), media.GetImageUrl(), "image");
            }

            return(result);
        }
        /// <summary>
        /// Search for anime with the given title. Attempts to fuzzy search by removing special characters
        /// </summary>
        /// <param name="title"></param>
        /// <returns></returns>
        public async Task <string> FindSeries(string title, CancellationToken cancellationToken)
        {
            MediaSearchResult result = await Search_GetSeries(title, cancellationToken);

            if (result != null)
            {
                return(result.id.ToString());
            }

            result = await Search_GetSeries(await Equals_check.Clear_name(title, cancellationToken), cancellationToken);

            if (result != null)
            {
                return(result.id.ToString());
            }

            return(null);
        }