private UploadResult Upload(string filePath) { var uploadResult = new UploadResult() { Success = false , Msg= context.API.GetTranslation("wox_plugin_weibopicbed_upload_busy") }; if (Monitor.TryEnter(syncObj, 5000)) { try { if (!weibo.IsLogin()) { keepLoginTimer.Change(Timeout.Infinite, Timeout.Infinite); var loginResult = weibo.Login(SettingStorage.Instance.Account, Utils.Decrypt(SettingStorage.Instance.Password)); if (!loginResult.Success) { var msg = context.API.GetTranslation("wox_plugin_weibopicbed_login_failed"); this.context.API.ShowMsg(GetTranslatedPluginTitle(), msg); return new UploadResult() { Success = false, Msg = msg }; } uploadResult = weibo.PicUpload(filePath); keepLoginTimer.Change(TimerInterval, TimerInterval); } else { uploadResult = weibo.PicUpload(filePath); keepLoginTimer.Change(TimerInterval, TimerInterval); } } finally { Monitor.Exit(syncObj); } } return uploadResult; }
public UploadResult PicUpload(string picPath) { var ext = Path.GetExtension(picPath).ToLower(); if (ext != ".jpg" && ext != ".jpeg" && ext != ".png" && ext != ".gif" && ext != ".bmp") { return new UploadResult() { Success = false, Msg = "只运行.jpg, .png, .gif, .bmp图片格式文件." }; } var headers = new Dictionary<string, string>(); headers.Add("Origin", "http://js.t.sinajs.cn"); var content = HttpHelper.GetHttpContent( PicUploadURL, cookies: cookies, headers: headers, referer: "http://js.t.sinajs.cn/t5/home/static/swf/MultiFilesUpload.swf?version=559f4bc1f6266504", encode: Encoding.GetEncoding("UTF-8"), filePath: picPath, timeout: 5 * 60 * 1000); var match = regPicId.Match(content); if (match.Success) { var result = new UploadResult() { Success = true }; var rnd = new Random(Guid.NewGuid().GetHashCode()); var server = rnd.Next(1, 4); result.PicId = match.Groups[1].Value; result.PicUrl = string.Format("http://ww{0}.sinaimg.cn/large/{1}.jpg", server, result.PicId); result.MiddlePicUrl = string.Format("http://ww{0}.sinaimg.cn/mw690/{1}.jpg", server, result.PicId); result.ThumbnailPicUrl = string.Format("http://ww{0}.sinaimg.cn/thumbnail/{1}.jpg", server, result.PicId); result.UploadAt = Utils.ConvertDateTimeInt(DateTime.Now); return result; } else { Logger.Error(PicUploadURL + "\r\nResult:\r\n" + content); return new UploadResult() { Success = false, Msg = "上传失败." }; } }