// http://potato.2ch.net/smartphone/ のような板URL async Task ScrapeBoard(string boardUrl, string boardName) { // 設定テキスト読み込み -> settings Dictionary <string, string> settings = new Dictionary <string, string>(); string settingUrl = boardUrl + "SETTING.TXT"; string settingText = await HtmlGetter.GetHtml(settingUrl, "shift_jis"); settingText = settingText.Replace("\r\n", "\n"); var lines = settingText.Split('\n'); foreach (var line in lines) { var kv = line.Split('='); if (kv.Length < 2) { continue; } settings[kv[0]] = kv[1]; } // オブジェクト構築 var boardInfo = new Models.BoardInfo { url = boardUrl, name = boardName }; if (settings.ContainsKey("BBS_UNICODE") && settings["BBS_UNICODE"] == "pass") { boardInfo.unicode = "SUPPORTED"; } m_boards[boardUrl] = boardInfo; }
// 全巡回 public async Task DoAll() { string menuUrl = "http://menu.2ch.net/bbsmenu.html"; string menuHtml = await HtmlGetter.GetHtml(menuUrl, "shift_jis"); new CQ(menuHtml).Find("a").Each(_a => { var a = new CQ(_a); var url = a.Attr("href"); var name = a.Text().Trim(); if (Regex.IsMatch(url, "^http://[^/]+/[^/]+/$")) { Console.WriteLine("-----------"); Console.WriteLine(url); Console.WriteLine(name); Task.Run(async() => { await ScrapeBoard(url, name); }).Wait(); } }); // JSON出力 OutputJson(); }
private async Task <bool> LoadHtmlDocumentAsync() { try { Exception ex = null; try { string response = await HtmlGetter.GetResponseTextAsync(WebPage); htmlDoc = new HtmlDocument(); htmlDoc.LoadHtml(response); } catch (Exception ex2) { ex = ex2; } if (ex != null) { throw ex; } } catch (Exception ex) { progressDialog.Close(); if (await dialog.ShowYesNoAsync(FindResource("error_getHtmlFailed") as string + Environment.NewLine + ex.ToString(), FindResource("error_title_getHtmlFailed") as string)) { grd.Children.Remove(tree); grd.ColumnDefinitions[0].Width = grd.ColumnDefinitions[1].Width = new GridLength(0); }
private async void ForceGetButton_Click(object sender, RoutedEventArgs e) { MainWindow.progressDialog.Show(); try { byte[] content = await HtmlGetter.GetResponseBinaryAsync(Item); MainWindow.progressDialog.Close(); if (Item.Response_Type == ResponseType.Binary) { bool yes = await MainWindow.dialog.ShowYesNoAsync(FindResource("label_binaryTypePreview") as string, FindResource("label_binaryTypePreviewTitle") as string); if (yes) { string defaultName = ""; string url = Item.Url.TrimEnd('/'); int index = url.LastIndexOf('/') + 1; if (index > 0 && index < Item.Url.Length) { defaultName = url.Substring(index); } string path = FzLib.UI.Dialog.FileSystemDialog.GetSaveFile(null, false, false, defaultName); if (path != null) { File.WriteAllBytes(path, content); } } return; } if (content.Length == 0) { await MainWindow.dialog.ShowInfomationAsync(FindResource("label_responseIsEmpty") as string, FindResource("error_forceGet") as string); } else { PreviewWindow win = new PreviewWindow(content.ToEncodedString(), Item.Response_Type) { Owner = MainWindow }; win.ShowDialog(); } } catch (Exception ex) { MainWindow.progressDialog.Close(); await MainWindow.dialog.ShowErrorAsync(ex.ToString(), FindResource("error_forceGet") as string); } }
public string GetHtmlFilterCars(string tag, string dostupnost, string reiting, int?min, int?max) { return(HtmlGetter.GetFilteredString(tag, dostupnost, reiting, min, max)); }
public string GetHtmlWithId(string tag, string guid) { return(HtmlGetter.getStringWithId(tag, guid)); }
public string getStringVladelec(string tag) { return(HtmlGetter.getStringVladelec(tag, Users.UserByCid(cid)._User)); }
public string GetHtml(string tag) { return(HtmlGetter.getString(tag)); }