public static void FindSubtitlesForFolder(OpenSubtitlesClient client,string folder, string langCode) { var fileTypes = Properties.Settings.Default.FileTypesToScan.Split(';'); var files = Directory.GetFiles(folder, "*.*", SearchOption.AllDirectories).Where(inS => fileTypes.Contains(System.IO.Path.GetExtension(inS),StringComparer.OrdinalIgnoreCase)); foreach (var file in files) { FindSubtitlesForFile(client,file, langCode); } }
public static void FindSubtitlesForFile(OpenSubtitlesClient client, string fileName, string langCode) { var subTitle = client.GetSubtitleByHash(fileName, langCode); if (subTitle.SubtitleStream != null) { SaveSubtitles(subTitle, fileName); _logger.Info("Subtitle for movie {0} found", fileName); } else { _logger.Info("Subtitle for movie {0} NOT FOUND", fileName); } }
private static OpenSubtitlesClient LogIn(string langCode) { var userName = Properties.Settings.Default.OpenSubtitlesUserName; var password = Properties.Settings.Default.OpenSubtitlesPassword; var passwordHash = ""; using (MD5 md5Hash = MD5.Create()) { passwordHash = GetMd5Hash(md5Hash, password); } var userAgent = Properties.Settings.Default.OpenSubtitlesUserAgent; var client = new OpenSubtitlesClient(Properties.Settings.Default.OpenSubtitleApiURL); _logger.Trace("Trying to login... "); var loginOK = client.Login(userName, passwordHash, langCode, userAgent); if (!loginOK) { _logger.Error("Login failed!"); } return client; }
private static void SaveSubtitles(OpenSubtitlesClient.Subtitle subTitle, string movieFileName) { FileInfo fi = new FileInfo(movieFileName); var subTitlePath = fi.FullName.Replace(fi.Extension, "." + subTitle.SubFormat); SaveFileStream(subTitlePath, subTitle.SubtitleStream); }