Exemplo n.º 1
0
        private async void Func_NMResolveLResult(string v)
        {
            listInformation.SelectedIndex = listInformation.Items.Add($"READ: {v}...");
            NewMovieInfo.OfficialWeb      = v;
            var streamresult = (await XService.Func_Net_ReadWebData(NewMovieInfo.OfficialWeb)).response;

            CurrentHtmlDocument.LoadHtml(streamresult);
            HtmlNode hnode = CurrentHtmlDocument.DocumentNode.SelectSingleNode("//div[@id='rightcolumn']");

            NewMovieInfo.ReleaseName = hnode.SelectSingleNode("//div[@id='video_title']/h3[1]").InnerText;
            var cvurl = hnode.SelectSingleNode("//img[@id='video_jacket_img']").Attributes["src"].Value;

            if (cvurl.StartsWith("//"))
            {
                cvurl = $"http:{cvurl}";
            }
            ;
            NewMovieInfo.CoverWebUrl   = cvurl;
            NewMovieInfo.CoverFileName = new Uri(cvurl).Segments.Last();

            hnode = hnode.SelectSingleNode("//table[@id='video_jacket_info']");
            //Resolve movie data
            Func_NMAnalysisLMovie(hnode);
            //處理 Stars 段
            if (!Func_NMAnalysisLStars(hnode))
            {
                return;
            }

            //處理 Sample Images 段
            //if (!await Func_AnalysisMovie_Samples(hnode)) return;
        }
Exemplo n.º 2
0
        private async void Func_NMBRecordAsync(string qName, string keyword)
        {
            //XGlobal.RebuildSubDirTemp();

            listInformation.SelectedIndex = listInformation.Items.Add($"QUERY: {NewMovieQuerySite.QUri.Host.ToUpper()} / KEY: {keyword}...");

            Uri uri_search   = new Uri($"{NewMovieQuerySite.QUri}ja/search/{WebUtility.UrlEncode(keyword.Trim())}");
            var streamresult = (await XService.Func_Net_ReadWebData(uri_search)).response;

            if (streamresult.Contains("System.Net.Http.HttpRequestException:"))
            {
                System.Diagnostics.Debug.WriteLine(uri_search.ToString());
                System.Diagnostics.Debug.WriteLine(streamresult);
                return;
            }

            if (streamresult == HttpStatusCode.NotFound.ToString())
            {
                MessageBox.Show("404", "Key Words Mismatch");
                txtNMKeyword.Focus();
                return;
            }

            CurrentHtmlDocument.LoadHtml(streamresult);
            HtmlNode hnode      = CurrentHtmlDocument.DocumentNode;
            HtmlNode _errornode = null;

            switch (NewMovieQuerySite.QName)
            {
            case "CSite":
            case "USite":
                _errornode = hnode.SelectSingleNode("//div[@class='alert alert-block alert-error']");
                break;

            case "BSite":
                _errornode = hnode.SelectSingleNode("//div[@class='alert alert-danger alert-page']");
                break;

            case "LSite":
                break;

            default:
                break;
            }

            if (_errornode != null)
            {
                gbNMQueryResult.Header = $"Query Result: {_errornode.SelectSingleNode("./h4").InnerText}";
                MessageBox.Show(_errornode.InnerText, "Key Words Mismatch");
                txtNMKeyword.Focus();
                return;
            }


            #region 讀取搜索結果
            NewMovieQueryResult.Clear();
            HtmlNodeCollection node_results = CurrentHtmlDocument.DocumentNode.SelectNodes("//div[@class='item']");
            gbNMQueryResult.Header = $"Query Result: {NewMovieQuerySite.QUri.Host.ToUpper()} / {keyword} / {node_results.Count}";

            foreach (HtmlNode _node in node_results)
            {
                Stream tempimg = await XService.Func_Net_ReadWebStream(_node.SelectSingleNode(".//img").Attributes["src"].Value, uri_search);

                QueryResultMovieInfo mi = new QueryResultMovieInfo
                {
                    ReleaseID = _node.SelectSingleNode(".//date[1]").InnerText
                };
                _node.SelectSingleNode(".//span[1]/date[1]").Remove();
                mi.ReleaseDateTicks = Convert.ToDateTime(_node.SelectSingleNode(".//date[1]").InnerText).Ticks;
                _node.SelectSingleNode(".//span[1]/date[1]").Remove();
                _node.SelectSingleNode(".//span[1]/div[1]").Remove();
                mi.ReleaseName = _node.SelectSingleNode(".//span[1]").InnerText.Trim(new char[] { ' ', '/' });
                //gi.Glyph = new BitmapImage() { StreamSource = tempimg };
                mi.MovieCoverImage = new ImageSourceConverter().ConvertFrom(tempimg) as ImageSource;
                mi.OfficialWeb     = XService.UrlCheck(_node.SelectSingleNode(".//a[1]").Attributes["href"].Value);
                NewMovieQueryResult.Add(mi);
            }
            #endregion

            /**
            **/
        }
Exemplo n.º 3
0
        private async void Func_NMLRecordAsync(string qName, string keyword)
        {
            //XGlobal.RebuildSubDirTemp();

            listInformation.SelectedIndex = listInformation.Items.Add($"QUERY: {NewMovieQuerySite.QUri.Host.ToUpper()} / KEY: {keyword}...");

            Uri uri_search = new Uri($"{NewMovieQuerySite.QUri}ja/vl_searchbyid.php?keyword={WebUtility.UrlEncode(keyword.Trim())}");

            var(response, requestmessage) = await XService.Func_Net_ReadWebData(uri_search);

            var streamresult = response;
            var request      = requestmessage;

            if (streamresult.Contains("System.Net.Http.HttpRequestException:"))
            {
                System.Diagnostics.Debug.WriteLine(uri_search.ToString());
                System.Diagnostics.Debug.WriteLine(streamresult);
                return;
            }

            if (streamresult == HttpStatusCode.NotFound.ToString())
            {
                MessageBox.Show("404", "Key Words Mismatch");
                txtNMKeyword.Focus();
                return;
            }

            CurrentHtmlDocument.LoadHtml(streamresult);
            HtmlNode hnode      = CurrentHtmlDocument.DocumentNode;
            HtmlNode _errornode = null;

            _errornode = hnode.SelectSingleNode("//div[@id='rightcolumn']//em");


            if (_errornode != null && _errornode.InnerText.Contains("ご指定の検索条件に合う項目がありませんでした"))
            {
                gbNMQueryResult.Header = $"Query Result: ご指定の検索条件に合う項目がありませんでした";
                MessageBox.Show(_errornode.InnerText, "Key Words Mismatch");
                txtNMKeyword.Focus();
                return;
            }

            if (request.RequestUri.PathAndQuery.Contains("searchbyid"))
            {
                //Records list
                #region 讀取搜索結果
                NewMovieQueryResult.Clear();
                HtmlNodeCollection node_results = CurrentHtmlDocument.DocumentNode.SelectNodes("//div[@class='videothumblist']//div[@class='video']");
                gbNMQueryResult.Header = $"Query Result: {NewMovieQuerySite.QUri.Host.ToUpper()} / {keyword} / {node_results.Count}";

                foreach (HtmlNode _node in node_results)
                {
                    Stream tempimg = await XService.Func_Net_ReadWebStream(_node.SelectSingleNode(".//img").Attributes["src"].Value, uri_search);

                    QueryResultMovieInfo mi = new QueryResultMovieInfo
                    {
                        ReleaseID       = _node.SelectSingleNode(".//div[@class='id']").InnerText.Trim(),
                        ReleaseName     = _node.SelectSingleNode(".//div[@class='title']").InnerText.Trim(),
                        MovieCoverImage = new ImageSourceConverter().ConvertFrom(tempimg) as ImageSource
                    };
                    string reurl = _node.SelectSingleNode(".//a[1]").Attributes["href"].Value;
                    if (reurl.StartsWith("./"))
                    {
                        reurl = reurl.Replace("./", $"{NewMovieQuerySite.QUri}ja/");
                    }
                    mi.OfficialWeb = reurl;
                    NewMovieQueryResult.Add(mi);
                }//end foreach in node_results
                #endregion
            }
            else
            {
                Func_NMResolveLResult(request.RequestUri.OriginalString);
            }
        }
Exemplo n.º 4
0
        private async void Func_NMResolveBResult(string v)
        {
            listInformation.SelectedIndex = listInformation.Items.Add($"READ: {v}...");
            NewMovieInfo.OfficialWeb      = v;
            var streamresult = (await XService.Func_Net_ReadWebData(NewMovieInfo.OfficialWeb)).response;

            CurrentHtmlDocument.LoadHtml(streamresult.Replace(Environment.NewLine, " ").Replace("\t", " "));
            HtmlNode hnode = CurrentHtmlDocument.DocumentNode;

            HtmlNode _errornode = hnode.SelectSingleNode("//div[@class='alert alert-block alert-error']");

            if (_errornode != null)
            {
                listInformation.SelectedIndex = listInformation.Items.Add($"ERR: {v}...");
                return;
            }

            switch (NewMovieQuerySite.QName)
            {
            case "CSite":
            case "USite":
                hnode = hnode.SelectSingleNode("/html/body/div[2]");
                break;

            case "BSite":
                hnode = hnode.SelectSingleNode("/html/body/div[@class='container']");
                break;

            case "LSite":
                break;

            default:
                break;
            }

            foreach (HtmlNode _txt_node in hnode.SelectNodes(".//text()"))
            {
                if (!Regex.IsMatch(_txt_node.InnerText, @"\S", RegexOptions.Singleline))
                {
                    _txt_node.Remove();
                }
            }

            NewMovieInfo.ReleaseName = hnode.SelectSingleNode("//h3[1]").InnerText;
            //TODO: LINE 180
            Func_AnalysisMovie(hnode);

            //刪除重複 Mov
            if (XGlobal.CurrentContext.TotalMovies.Exists(m => m.ReleaseID == NewMovieInfo.ReleaseID))
            {
                if (MessageBox.Show(
                        String.Format(
                            "影片 [{0}] 已有歸類存檔({1}*{2}, {3}),操作取消,刪除影片文件嗎?",
                            NewMovieInfo.ReleaseID,
                            NewMovieInfo.VWidth,
                            NewMovieInfo.VHeight,
                            XService.Format_MachineSize(NewMovieInfo.MediaFilesTotalSize)),
                        "影片已歸檔",
                        MessageBoxButton.YesNo) == MessageBoxResult.Yes)
                {
                    XService.DeleteMovies(NewMovieInfo.SourcePath, NewMovieInfo.SourceMediaFileExt);
                    listInformation.SelectedIndex = listInformation.Items.Add($"源目錄 {NewMovieInfo.SourcePath} 已刪除.");
                    return;
                }
                else
                {
                    listInformation.SelectedIndex = listInformation.Items.Add($"影片 [{NewMovieInfo.ReleaseID}] 已有歸類存檔,操作取消.");
                    return;
                }
            }

            //處理 Stars 段
            if (!await Func_AnalysisStars(hnode))
            {
                return;
            }

            //處理Cover
            //if (!await Func_AnalysisMovie_Cover(hnode)) return;

            //處理 Sample Images 段
            //if (!await Func_AnalysisMovie_Samples(hnode)) return;
        }