private void SelectSubtitiles(SubtitlePicker picker) { if (picker.Subtitle.File != null) { var lines = Subtitles.ParseSubtitleItems(picker.Subtitle.File); if (lines.Count > 1) { subtitles = lines; } } else if (picker.Subtitle.Stream != null) { picker.Subtitle.Stream.Position = 0; var lines = Subtitles.ParseSubtitleItems(new StreamReader(picker.Subtitle.Stream).ReadToEnd(), ".srt"); if (lines.Count > 1) { subtitles = lines; } } NoSubtitles.ItemSelected.Opacity = 0; int index = SubtitleSelectionPanel.Children.IndexOf(picker); picker.ItemSelected.Opacity = 1; foreach (SubtitlePicker pick in SubtitleSelectionPanel.Children) { if (SubtitleSelectionPanel.Children.IndexOf(pick) != index) { pick.ItemSelected.Opacity = 0; } } }
private void Subtitles_MouseLeftButtonUp(object sender, MouseButtonEventArgs e) { SubsPanel.Children.Clear(); var sb = (Storyboard)FindResource("OpacityDown"); var up = (Storyboard)FindResource("OpacityUp"); var clone = sb.Clone(); clone.Completed += (s, ev) => { up.Begin(SubtitlesContent); SubtitlesContent.Visibility = Visibility.Visible; DetailsContent.Visibility = Visibility.Collapsed; Task.Run(async() => { var file = episode.files.Where(x => x.Type == ScannedFile.FileType.Video).FirstOrDefault(); if (file != null) { Dispatcher.Invoke(() => { FileName.Text = String.IsNullOrEmpty(file.OriginalName) ? Path.GetFileNameWithoutExtension(file.NewName) : Path.GetFileNameWithoutExtension(file.OriginalName); }); var list = await Subtitles.GetSubtitles(file); if (list.Count > 0) { Dispatcher.Invoke(() => { StatusText.Visibility = Visibility.Collapsed; }); } else { Dispatcher.Invoke(() => { StatusText.Text = "No results"; }); } foreach (var item in list) { Dispatcher.Invoke(() => { SubtitleControl sc = new SubtitleControl() { Opacity = 0, Height = 60 }; sc.Lang.Text += item.Language; sc.Version.Text += item.Version; sc.Download.MouseLeftButtonUp += (sa, eva) => DownloadSubs(item); SubsPanel.Children.Add(sc); up.Begin(sc); }); await Task.Delay(16); } } else { Dispatcher.Invoke(() => { StatusText.Text = "No video files"; }); } }); }; clone.Begin(DetailsContent); }
private async void DownloadSubs(Subtitles subtitles) { MainWindow.AddPage(new PleaseWait()); HttpWebResponse result = (HttpWebResponse)(await subtitles.DownloadLink.GetResponseAsync()); StreamReader reader = new StreamReader(result.GetResponseStream()); string text = await reader.ReadToEndAsync(); reader.Close(); var tempFile = Path.GetTempPath() + "\\" + subtitles.Language + " - " + subtitles.Version + ".srt"; File.WriteAllText(tempFile, text, Encoding.GetEncoding(result.CharacterSet)); await Renamer.RenameSingle(tempFile, Database.GetSeries((int)episode.seriesId), episode); MainWindow.RemovePage(); ReturnFromSubsView(); }
public async static Task <List <Subtitles> > GetSubtitles(Episode.ScannedFile file) { return(await Task.Run(() => { List <Subtitles> subList = new List <Subtitles>(); HtmlWeb htmlWeb = new HtmlWeb(); string name = String.IsNullOrEmpty(file.OriginalName) ? Path.GetFileNameWithoutExtension(file.NewName) : Path.GetFileNameWithoutExtension(file.OriginalName); HtmlDocument htmlDocument = htmlWeb.Load("http://www.addic7ed.com/search.php?search=" + name + "&anti_cache=" + DateTime.Now.ToString()); var items = htmlDocument.DocumentNode.SelectNodes("//div[@id='container95m']"); if (items != null) { items.RemoveAt(items.Count - 1); foreach (var item in items) { Subtitles subs = new Subtitles(); subs.OriginalFile = file; var data = item.ChildNodes[1].ChildNodes[3].ChildNodes[3].ChildNodes[1]; subs.Version = data.ChildNodes[1].ChildNodes[1].InnerText.Remove(data.ChildNodes[1].ChildNodes[1].InnerText.IndexOf(',')).Remove(0, 8); string url = "http://www.addic7ed.com"; if (data.ChildNodes[4].ChildNodes[8].ChildNodes[2].Name == "a") { url += data.ChildNodes[4].ChildNodes[8].ChildNodes[2].Attributes[1].Value; } else { url += data.ChildNodes[4].ChildNodes[8].ChildNodes[5].Attributes[1].Value; } var request = (HttpWebRequest)WebRequest.Create(url); request.Referer = htmlWeb.ResponseUri.ToString(); subs.DownloadLink = request; subs.Language = data.ChildNodes[4].ChildNodes[4].InnerText.Replace(" \n\t\t\t", ""); subList.Add(subs); } } return subList; })); }