/// <summary> /// Download a subtitle to a path /// </summary> /// <param name="path">Path to download</param> /// <param name="subtitle">Subtitle to download</param> /// <returns>Downloaded subtitle path</returns> public string DownloadSubtitleToPath(string path, Subtitle subtitle) { using (var osdb = Osdb.Login("OSTestUserAgentTemp")) { return(osdb.DownloadSubtitleToPath(path, subtitle)); } }
public Task <IEnumerable <OpenSubtitleSearchResult> > SearchForFile(string videoFilePath, Language[] languages, string imdbId = null) { if (videoFilePath == null) { throw new ArgumentNullException("videoFilePath"); } var fileInfo = new FileInfo(videoFilePath); if (!fileInfo.Exists) { throw new FileNotFoundException(string.Format(Resources.FileNotFound, videoFilePath), videoFilePath); } return(Task.Run(() => { try { using (var client = Osdb.Login(UserAgent)) { var languageIds = languages.Select(GetLanguageId).ToList(); var languageIdsPrm = string.Join(",", languages.Select(GetLanguageId)); var results = client.SearchSubtitlesFromFile(languageIdsPrm, videoFilePath); results = results.OrderBy(s => s.LanguageId, new SubtitleLanguageComparer(languageIds)).ToList(); return results.Select(r => new OpenSubtitleSearchResult(this, r)); } } catch (Exception ex) { if (ex.Message == "Unexpected error response 401 Unauthorized") { return Enumerable.Empty <OpenSubtitleSearchResult>(); } throw; } })); }
public void CanSearchOnlyText() { var client = Osdb.Login("en", ConfigurationManager.AppSettings["TestUserAgent"]); var results = client.SearchSubtitlesFromQuery("en", "Arrow"); Assert.IsTrue(results.Count > 0); }
/// <summary> /// Search subtitles by imdb code and languages /// </summary> /// <param name="languages">Languages</param> /// <param name="imdbId">Imdb code</param> /// <returns></returns> public IList <Subtitle> SearchSubtitlesFromImdb(string languages, string imdbId) { using (var osdb = Osdb.Login("OSTestUserAgentTemp")) { return(osdb.SearchSubtitlesFromImdb(languages, imdbId)); } }
/// <summary> /// Get subtitles languages /// </summary> /// <returns>Languages</returns> public IEnumerable <OSDBnet.Language> GetSubLanguages() { using (var osdb = Osdb.Login("OSTestUserAgentTemp")) { return(osdb.GetSubLanguages()); } }
static void DownloadSubtitle(string movieFileName, bool lucky, IList <string> languages) { var systemLanguage = GetSystemLanguage(); if (!languages.Contains(systemLanguage)) { languages.Add(systemLanguage); } using (var osdb = Osdb.Login(systemLanguage, "OS Test User Agent")) { var subtitles = osdb.SearchSubtitlesFromFile(languages.Aggregate((a, b) => a + "," + b), movieFileName); int subtitlesCount = subtitles.Count; if (subtitlesCount == 0) { Console.WriteLine("Sorry, no subtitles found for your movie"); return; } var selectedSubtitle = subtitles.First(); if (!lucky) { var canceled = !PromptForSubtitle(subtitles, ref selectedSubtitle); if (canceled) { return; } } string subtitleFile = osdb.DownloadSubtitleToPath(Path.GetDirectoryName(movieFileName), selectedSubtitle); Console.WriteLine("Subtitle downloaded to '{0}'", subtitleFile); } }
private static IAnonymousClient Login() { try { IAnonymousClient client = Osdb.Login("en", "SolEol 0.0.8"); return(client); } catch (Exception ex) { errorQueue.Send(new ErrorMessage { Message = ex.ToString(), Time = DateTime.Now }); return(null); } }
public static Uri GetSubtitlePageLink(String IMDbId) { try { var osdb = Osdb.Login("eng", "FileBot"); var subtitles = osdb.SearchSubtitlesFromImdb("eng", IMDbId.Substring(2)); if (subtitles.Count > 0) { return(subtitles.First().SubtitlePageLink); } return(null); } catch (Exception e) { return(null); } }
public Task <bool> Download(string videoFilePath, OpenSubtitleSearchResult searchResult) { if (videoFilePath == null) { throw new ArgumentNullException("videoFilePath"); } var fileInfo = new FileInfo(videoFilePath); if (!fileInfo.Exists) { throw new FileNotFoundException(string.Format(Resources.FileNotFound, videoFilePath), videoFilePath); } return(Task.Run(() => { try { using (var client = Osdb.Login(UserAgent)) { var subtitlePath = client.DownloadSubtitleToPath(fileInfo.DirectoryName, searchResult.Subtitle); var subtitleFile = new FileInfo(subtitlePath); var newSubtitlePath = Helper.ReplaceExtension(fileInfo, subtitleFile.Extension); if (!subtitleFile.Exists) { return false; } if (string.Equals(subtitlePath, newSubtitlePath, StringComparison.OrdinalIgnoreCase)) { return true; } Helper.DeleteFile(newSubtitlePath); subtitleFile.MoveTo(newSubtitlePath); return true; } } catch (Exception ex) { if (ex.Message == "Unexpected error response 401 Unauthorized") { return false; } throw; } })); }
public Movie SubtitleData(Movie movie, bool refresh = false) { try { var osdb = Osdb.Login("eng", "FileBot"); var subtitles = osdb.SearchSubtitlesFromImdb("eng", movie.IMDbId.Substring(2)); if (subtitles.Count > 0) { movie.MovieSubtitle = subtitles.First(); if (refresh) { baza.updateMovie(movie); } } return(movie); } catch (Exception e) { return(movie); } }
public Task <IEnumerable <OpenSubtitleSearchResult> > Search(string query, Language[] languages, string imdbId = null) { return(Task.Run(() => { try { using (var client = Osdb.Login(UserAgent)) { var languageIds = languages.Select(GetLanguageId).ToList(); var languageIdsPrm = string.Join(",", languages.Select(GetLanguageId)); var results = client.SearchSubtitlesFromQuery(languageIdsPrm, query); results = results.OrderBy(s => s.LanguageId, new SubtitleLanguageComparer(languageIds)).ToList(); return results.Select(r => new OpenSubtitleSearchResult(this, r)); } } catch (Exception ex) { if (ex.Message == "Unexpected error response 401 Unauthorized") { return Enumerable.Empty <OpenSubtitleSearchResult>(); } throw; } })); }
public OSDBService(string clientVersionStr = "") { client = Osdb.Login("en", "opensubsearch v0.1 " + clientVersionStr); timer = new Timer(OnTimeout, null, new TimeSpan(0, 14, 50), new TimeSpan(0, 14, 50)); }
public BLL.MovieDetails AddToDbIfNotExist(FBMovie movie) { //Open connection to database: var db = MongoInstance.GetDatabase; //Initialize OMDb and OSDb clients: OMDbClient omdb = new OMDbClient(true); var osdb = Osdb.Login("eng", "FileBot"); //Prepare database collections: var movies = db.GetCollection <Item>("Movies"); var subtitles = db.GetCollection <Subtitle>("Subtitles"); //If movie is not in the database, add it and the subtitles Item dbMovie = null; Subtitle dbSubtitle = null; var mquery = movies.Find(p => p.Title == movie.Title); if (mquery.Count() > 0) { dbMovie = mquery.First(); var squery = subtitles.Find(p => p.MovieName == movie.Title); if (squery.Count() > 0) { dbSubtitle = squery.First(); } } if (dbMovie == null) { Item omdbResult = omdb.GetItemByTitle(movie.Title).Result; if (omdbResult != null) { movies.ReplaceOne(p => p.Title == omdbResult.Title, omdbResult, new UpdateOptions { IsUpsert = true }); dbMovie = omdbResult; var squery = subtitles.Find(p => p.MovieName == movie.Title); if (squery.Count() > 0) { dbSubtitle = squery.First(); } if (dbSubtitle == null) { var osdbResult = osdb.SearchSubtitlesFromQuery("eng", movie.Title); if (osdbResult.Count > 0) { subtitles.ReplaceOne(p => p.SubtitleId == osdbResult.First().SubtitleId, osdbResult.First(), new UpdateOptions { IsUpsert = true }); dbSubtitle = osdbResult.First(); } } } } Uri link = null; if (dbSubtitle != null) { link = dbSubtitle.SubTitleDownloadLink; } return(new BLL.MovieDetails { item = dbMovie, downloadLink = link }); }
/// <summary> /// Initializes a new instance of the <see cref="OpenSubtitlesDb"/> class. /// </summary> public OpenSubtitlesDb() { this.client = Osdb.Login("en", agent); }