Example #1
0
        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);
        }
Example #2
0
        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);
        }
Example #3
0
        /// <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);
            }
        }