private void btn_Option_Click(object sender, RoutedEventArgs e) { JsonSettings pg = new JsonSettings(); var parent = VisualTreeHelper.GetParent((UIElement)sender); string url = ((TextBox)VisualTreeHelper.GetChild(parent, 3)).Text; JsonToDeserize c = JsonSaves.Find(x => x.url == url); if (c == null) { c = new JsonToDeserize(); } pg.Json_Object = c; ShowDialogwithPage(pg); }
private void btn_Save_Click(object sender, RoutedEventArgs e) { List <JsonToDeserize> ls = new List <JsonToDeserize>(); foreach (UIElement item in StackPanel_JsonMain.Children) { //判断是否存在填了链接但是没有填指令的情况 if (((item as StackPanel).Children[3] as TextBox).Text != "接口网址" && ((item as StackPanel).Children[2] as TextBox).Text == "指令...") { parentwindow.SnackbarMessage_Show("存在一行路径已设置但指令未设置,请纠正", 1); return; } if (((item as StackPanel).Children[3] as TextBox).Text == "接口网址" && ((item as StackPanel).Children[2] as TextBox).Text == "指令...") { continue; } //不是空 if (((item as StackPanel).Children[3] as TextBox).Text != "接口网址" && ((item as StackPanel).Children[2] as TextBox).Text != "指令...") { JsonToDeserize save = new JsonToDeserize { Enabled = (bool)((item as StackPanel).Children[1] as ToggleButton).IsChecked, Order = ((item as StackPanel).Children[2] as TextBox).Text, url = ((item as StackPanel).Children[3] as TextBox).Text, AutoRevoke = (bool)((item as StackPanel).Children[4] as CheckBox).IsChecked, }; save.picPath = JsonSaves.Find(x => x.url == save.url).picPath; save.Text = JsonSaves.Find(x => x.url == save.url).Text; ls.Add(save); } } //序列化 string temp = JsonConvert.SerializeObject(ls); File.WriteAllText(MainSave.AppDirectory + "JsonDeserize.json", temp); parentwindow.SnackbarMessage_Show("设置已保存", 1); }
/// <summary> /// Json解析拉取 /// </summary> /// <param name="ls"></param> /// <param name="e"></param> /// <returns></returns> public static SendText JsonDeserize_Image(string orderText, long GroupID, long QQID) { SendText result = new SendText(); try { //尝试拉取图片,若有多个相同的接口则随机来一个 JsonToDeserize item = JsonOrderList.Where(x => x.Order == orderText) .OrderBy(x => Guid.NewGuid().ToString()).FirstOrDefault(); result.HandlingFlag = item.AutoRevoke; //以后要用的路径,先生成一个 string targetdir = Path.Combine(Environment.CurrentDirectory, "data", "image", "JsonDeserizePic", item.Order); if (!Directory.Exists(targetdir)) { Directory.CreateDirectory(targetdir); } string imagename = DateTime.Now.ToString("yyyyMMddHHss") + ".jpg"; string fullpath = Path.Combine(targetdir, imagename); using (HttpWebClient http = new HttpWebClient() { TimeOut = 10000, Encoding = Encoding.UTF8, Proxy = MainSave.Proxy, AllowAutoRedirect = true, }) { string url = item.url, jsonpath = item.picPath; string json = Encoding.UTF8.GetString(http.DownloadData(url)).Replace('', ' '); JObject jObject = JObject.Parse(json); if (!string.IsNullOrEmpty(item.Text)) { string str = item.Text; var c = Regex.Matches(item.Text, "<.*?>"); foreach (var item2 in c) { string path = item2.ToString().Replace("<", "").Replace(">", ""); str = str.Replace(item2.ToString(), jObject.SelectToken(path).ToString()); } MainSave.CQApi.SendGroupMessage(GroupID, str); } if (string.IsNullOrEmpty(jsonpath)) { MainSave.CQLog.Warning("Json解析接口", $"jsonPath为空,发生在 {item.url} 接口中"); return(null); } url = jObject.SelectToken(jsonpath).ToString(); http.CookieCollection = new System.Net.CookieCollection(); http.DownloadFile(url, fullpath); } MainSave.CQLog.Info("Json解析接口", $"图片下载成功,尝试发送"); //GetSetu.AntiHX(fullpath); string imagepath = Path.Combine("JsonDeserizePic", item.Order, imagename); result.MsgToSend.Add(CQApi.CQCode_Image(imagepath).ToSendString()); return(result); } catch (Exception exc) { result.MsgToSend.Add("Json解析接口调用失败"); MainSave.CQLog.Info("Json解析接口", $"调用失败,错误信息:{exc.Message}"); return(result); } }