Exemple #1
0
        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;
     }));
 }