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; }
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 /** **/ }
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); } }
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; }