public async Task<EpisodeFileInfo> ProcessFile(string path, CancellationToken cancellationToken)
        {
            var info = new EpisodeFileInfo
            {
                VideoFile = fileProcessor.ProcessFile(path)
            };


            var showSet = await dataProvider.GetShowListAsync(cancellationToken);


            foreach (var videoId in info.GetVideoIdCandidates())
            {
                var wordset = DataClient.GetWordset(videoId.Show).ToList();

                if (wordset.Count > 0 && videoId.Season.HasValue && videoId.Episode.HasValue)
                {
                    var season = videoId.Season.Value;
                    var episode = videoId.Episode.Value;
                    Console.WriteLine("{0}-{1}-{2}", season, episode, videoId.Show);

                    foreach (var showRank in
                        showSet
                            .Select(ss => new { ShowInfo = ss, Match = ss.Match(wordset) })
                            .OrderByDescending(ss => ss.Match)
                            .Where(ss => ss.Match > 0)
                        )
                    {

                        Console.WriteLine("-- {0},{1}",showRank.ShowInfo.Title, showRank.Match);

                        // var episodes = await dataProvider.GetEpisodeListAsync(showRank.ShowInfo, cancellationToken);
                        //var episodeInfo = episodes.FirstOrDefault(ep => ep.Season == season && ep.Episode == episode);


                    }
                }
            }

            return info;
        }
        public async Task <EpisodeFileInfo> ProcessFile(string path, CancellationToken cancellationToken)
        {
            var info = new EpisodeFileInfo
            {
                VideoFile = fileProcessor.ProcessFile(path)
            };


            var showSet = await dataProvider.GetShowListAsync(cancellationToken);


            foreach (var videoId in info.GetVideoIdCandidates())
            {
                var wordset = DataClient.GetWordset(videoId.Show).ToList();

                if (wordset.Count > 0 && videoId.Season.HasValue && videoId.Episode.HasValue)
                {
                    var season  = videoId.Season.Value;
                    var episode = videoId.Episode.Value;
                    Console.WriteLine("{0}-{1}-{2}", season, episode, videoId.Show);

                    foreach (var showRank in
                             showSet
                             .Select(ss => new { ShowInfo = ss, Match = ss.Match(wordset) })
                             .OrderByDescending(ss => ss.Match)
                             .Where(ss => ss.Match > 0)
                             )
                    {
                        Console.WriteLine("-- {0},{1}", showRank.ShowInfo.Title, showRank.Match);

                        // var episodes = await dataProvider.GetEpisodeListAsync(showRank.ShowInfo, cancellationToken);
                        //var episodeInfo = episodes.FirstOrDefault(ep => ep.Season == season && ep.Episode == episode);
                    }
                }
            }

            return(info);
        }
 public EpisodeFileInfo Refine(EpisodeFileInfo info)
 {
     return info;
 }
 public EpisodeFileInfo Refine(EpisodeFileInfo info)
 {
     return(info);
 }