public void TestValidComputeMovieHash()
        {
            var content      = "[0518/172433.716:ERROR:crash_report_database_win.cc(429)] unexpected header";
            var contentBytes = Encoding.UTF8.GetBytes(content);
            var ms           = new MemoryStream(contentBytes);

            var hash    = MovieHasher.ComputeMovieHash(ms);
            var hashHex = MovieHasher.ToHexadecimal(hash);

            Assert.AreEqual(hashHex, "c4a8fd66878c7903");
        }
Exemplo n.º 2
0
        public List <Subtitle> FindSubtitleByHash(string[] files)
        {
            List <Subtitle> subtitleList = null;

            try
            {
                foreach (string file in files)
                {
                    byte[] moviehash = MovieHasher.ComputeMovieHash(file);
                    string hexString = MovieHasher.ToHexadecimal(moviehash);

                    string languageCode = Language.GetLanguageCode(Properties.Settings.Default.DefaultLanguage);
                    SubtitleClient.DownloadSubtitleByHash(hexString, languageCode);   // Svi rezultati pretrage za odabrani fajl

                    FileInfo selectedFile = new FileInfo(file);

                    if (subtitleList != null && subtitleList.Count > 0)
                    {
                        if (Properties.Settings.Default.IFeelLucky) // Dohvati samo prvi rezultat
                        {
                            Subtitle subtitle = subtitleList.FirstOrDefault();
                            MapFileInfoToSubtitle(selectedFile, subtitle);
                            DownloadFirstResultOnly(subtitle);
                        }
                        else // Dohvati sve rezultate i proslijedi ih u novu formu
                        {
                            subtitleList.ForEach(item =>
                            {
                                MapFileInfoToSubtitle(selectedFile, item);
                            });

                            OnSearchResultsFound(this, new SearchResultsArgs(subtitleList, this.SubtitleClient));
                        }
                    }
                    else
                    {
                        OnSubtitlesNotFound(this, new SubtitleFoundArgs(file, new FileInfo(file)));
                    }
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }

            return(subtitleList);
        }
Exemplo n.º 3
0
        /// <summary>
        /// Find the available Open Subtitles subtitles for a specific movie.
        /// </summary>
        /// <param name="movieFileName">The name of the movie file.</param>
        /// <returns>Task which returns a <see cref="FindResponse"/> containing the available subtitles.</returns>
        private async Task <FindResponse> FindOpenSubtitlesByMovieAsync(string movieFileName)
        {
            await LoginOpenSubtitles();

            var findRequest = new FindRequest()
            {
                MovieHash         = MovieHasher.ComputeMovieHash(movieFileName),
                Query             = Path.GetFileNameWithoutExtension(movieFileName),
                Type              = TypeFilterEnum.All,
                Languages         = Settings.OpenSubtitles.LanguageFilter,
                HearingImpaired   = FilterEnum.Exclude,
                TrustedSources    = FilterEnum.Only,
                MachineTranslated = FilterEnum.Exclude,
                AiTranslated      = FilterEnum.Exclude,
            };

            return(await openSubtitlesApi.FindAsync(findRequest));
        }