Example #1
0
        private bool Func_NMAnalysisLStars(HtmlNode hnode)
        {
            NewMovieStars.Clear();
            listInformation.SelectedIndex = listInformation.Items.Add("READ: STARS...");
            HtmlNode ncast = hnode.SelectSingleNode("//div[@id='video_cast']");

            string jname = string.Empty;

            NewMovieInfo.ActorUIDs = new List <Guid>();

            if (!ncast.SelectSingleNode("//td[@class='text']").HasChildNodes)
            {
                MessageBox.Show($"No cast information from {NewMovieQuerySite.QName.ToUpper()}.\nTry other web source.", "Expect Cast Data");
                return(false);
            }

            HtmlNodeCollection ncasts = ncast.SelectNodes("//span[@class='star']/a");

            foreach (HtmlNode _nc in ncasts)
            {
                bool is_star_stored = true;
                jname = XService.IllegalFiltered(_nc.InnerText.Replace("&nbsp;", "").Trim());
                StarInfo star = XGlobal.CurrentContext.TotalStars.Find(s => s.JName == jname);
                if (star is null)
                {
                    star           = new StarInfo(jname);
                    is_star_stored = false;
                }

                star.CreateLocalStarDirectory(NewMovieInfo);
                listInformation.SelectedIndex = listInformation.Items.Add($"CREATE: DIR/{System.IO.Path.Combine(System.IO.Path.GetPathRoot(NewMovieInfo.SourcePath), ConfigurationManager.AppSettings["ArchiveName"], star.JName)}");

                star.StoredMovieIDs.Add(NewMovieInfo.ReleaseID);
                NewMovieStars.Add(star);
                NewMovieInfo.ActorUIDs.Add(star.UniqueID);
                if (!is_star_stored)
                {
                    XGlobal.CurrentContext.TotalStars.Add(star);
                }
            }

            return(true);
        }
Example #2
0
        private void InitializeCommand()
        {
            var cbQuit = new CommandBinding(ApplicationCommands.Close,
                                            (sender, e) => { Application.Current.Shutdown(); e.Handled = true; },
                                            (sender, e) => { e.CanExecute = true; e.Handled = true; });
            CommandBinding cbNMBrowse = new CommandBinding(cmdNMBrowse,
                                                           (sender, e) =>
            {
                NewMovieInfo = new MovieInfo();

                Microsoft.Win32.OpenFileDialog ofd_selectmovie = new Microsoft.Win32.OpenFileDialog
                {
                    Filter = "Video files|*.avi;*.wmv;*.mp4;*.m4v;*.asf;*.asx;*.rm;*.rmvb;*.mpg;*.mpeg;*.mpe;*.3gp;*.mov;*.dat;*.mkv;*.flv;*.vob"
                };
                Nullable <bool> result = ofd_selectmovie.ShowDialog();

                if (result.HasValue && result.Value)
                {
                    txtNMFullFileName.Text = ofd_selectmovie.FileName;
                    Func_NMOpenMediaFile(ofd_selectmovie.FileName);
                }
                e.Handled = true;
            },
                                                           (sender, e) => { e.CanExecute = true; e.Handled = true; });
            CommandBinding cbNMQuery = new CommandBinding(cmdNMQuery,
                                                          (sender, e) =>
            {
                switch (NewMovieQuerySite.QName)
                {
                case "CSite":
                case "USite":
                    Func_NMBRecordAsync(NewMovieQuerySite.QName, txtNMKeyword.Text);
                    break;

                case "BSite":
                    Func_NMBRecordAsync(NewMovieQuerySite.QName, txtNMKeyword.Text);
                    break;

                case "LSite":
                    Func_NMLRecordAsync(NewMovieQuerySite.QName, txtNMKeyword.Text);
                    break;

                default:
                    break;
                }

                e.Handled = true;
            },
                                                          (sender, e) => { e.CanExecute = true; e.Handled = true; });
            CommandBinding cbNMQueryResultItemSolve = new CommandBinding(CommandNMQueryResultItemSolve,
                                                                         (sender, e) =>
            {
                switch (NewMovieQuerySite.QName)
                {
                case "CSite":
                case "USite":
                    Func_NMResolveUCResult(e.Parameter as string);
                    break;

                case "BSite":
                    Func_NMResolveBResult(e.Parameter as string);
                    break;

                case "LSite":
                    Func_NMResolveLResult(e.Parameter as string);
                    break;

                default:
                    break;
                }

                e.Handled = true;
            },
                                                                         (sender, e) => { e.CanExecute = true; e.Handled = true; });
            CommandBinding cbNMRecordSolve = new CommandBinding(CommandNMRecordSolve,
                                                                (sender, e) =>
            {
                var _st = NewMovieStars.FirstOrDefault(s => s.JName == e.Parameter as string);
                DirectoryInfo _dirsource = new DirectoryInfo(NewMovieInfo.SourcePath);
                _st.CreateLocalMovieDirectory(NewMovieInfo);
                listInformation.SelectedIndex = listInformation.Items.Add($"MKDIR: {NewMovieInfo.SourcePath}...");

                var encoder = new PngBitmapEncoder();
                encoder.Frames.Add(BitmapFrame.Create((BitmapSource)picCover.Source));
                using (FileStream stream = new FileStream(System.IO.Path.Combine(NewMovieInfo.SourcePath, NewMovieInfo.CoverFileName), FileMode.Create))
                    encoder.Save(stream);
                listInformation.SelectedIndex = listInformation.Items.Add($"SAVE COVER: {NewMovieInfo.CoverFileName}...");

                NewMovieInfo.MediaFiles.ForEach(m => File.Move(m.LocalFileName, System.IO.Path.Combine(NewMovieInfo.SourcePath, System.IO.Path.GetFileName(m.LocalFileName))));
                XGlobal.CurrentContext.TotalMovies.Add(NewMovieInfo);
                listInformation.SelectedIndex = listInformation.Items.Add($"MOVE VIDEO: {NewMovieInfo.MediaFiles.Count}...");

                //todo: 保存记录数据
                string mdatafile = ConfigurationManager.AppSettings["MovieDataFile"];
                if (File.Exists(mdatafile))
                {
                    File.Delete(mdatafile);
                }
                XService.XMLDeserializerHelper.Serialization <List <MovieInfo> >(XGlobal.CurrentContext.TotalMovies, mdatafile);

                string sdatafile = ConfigurationManager.AppSettings["StarDataFile"];
                if (File.Exists(sdatafile))
                {
                    File.Delete(sdatafile);
                }
                XService.XMLDeserializerHelper.Serialization <List <StarInfo> >(XGlobal.CurrentContext.TotalStars, sdatafile);

                e.Handled = true;
            },
                                                                (sender, e) => { e.CanExecute = true; e.Handled = true; });

            bnNMBrowse.Command = cmdNMBrowse;
            bnNMQuery.Command  = cmdNMQuery;

            this.CommandBindings.AddRange(new CommandBinding[] { cbNMBrowse, cbQuit, cbNMQuery, cbNMQueryResultItemSolve, cbNMRecordSolve });
        }
Example #3
0
        private async Task <bool> Func_AnalysisStars(HtmlNode sourcenode)
        {
            NewMovieStars.Clear();
            listInformation.SelectedIndex = listInformation.Items.Add("READ: STARS...");

            HtmlNodeCollection _hncc = sourcenode.SelectNodes("//a[@class='avatar-box']");

            string name_ja = string.Empty;

            NewMovieInfo.ActorUIDs = new List <Guid>();

            if (_hncc == null)
            {
                MessageBox.Show($"No movie information from{NewMovieQuerySite.QName.ToUpper()}.\nTry other web source.", "數據缺損");
                //return false;
            }
            else
            {
                foreach (HtmlNode _node in _hncc)
                {
                    bool is_star_stored = true;
                    name_ja = XService.IllegalFiltered(_node.SelectSingleNode(".//span").InnerText.Trim());
                    StarInfo star = XGlobal.CurrentContext.TotalStars.Find(s => s.JName == name_ja);
                    if (star is null)
                    {
                        star           = new StarInfo(name_ja);
                        is_star_stored = false;
                    }

                    //Read Avator to Stream
                    listInformation.SelectedIndex = listInformation.Items.Add($"CREATE: DIR/{star.JName}/TEMP");

                    star.AvatorWebUrl = XService.UrlCheck(_node.SelectSingleNode(".//img").Attributes["src"].Value);
                    //star.CreateStarDirectoryTemp();
                    star.CreateLocalStarDirectory(NewMovieInfo);

                    Stream temp = await XService.Func_Net_ReadWebStream(star.AvatorWebUrl, NewMovieInfo.OfficialWeb);

                    var au = new Uri(star.AvatorWebUrl);
                    star.AvatorFileName = System.IO.Path.Combine(star.DirStored, au.Segments[au.Segments.Length - 1]);

                    using (FileStream sourceStream = new FileStream(star.AvatorFileName, FileMode.Create, FileAccess.Write, FileShare.None, bufferSize: 4096, useAsync: true))
                    {
                        await temp.CopyToAsync(sourceStream);

                        await sourceStream.FlushAsync();
                    }

                    //list_CurrentStars.Images.Add(Image.FromStream(temp));

                    star.StoredMovieIDs.Add(NewMovieInfo.ReleaseID);
                    NewMovieStars.Add(star);
                    NewMovieInfo.ActorUIDs.Add(star.UniqueID);
                    if (!is_star_stored)
                    {
                        XGlobal.CurrentContext.TotalStars.Add(star);
                    }
                }
            }

            return(true);
        }