コード例 #1
0
        public void StartSend(object parms)
        {
            while (true)
            {
                SetSpaceeButtonStatus(true);
                AppenSpaceCmd("开始发布说说");
                #region 登录账号并初始化
                string[] qqlist = File.ReadAllLines("qq.txt");
                foreach (string qqstr in qqlist)
                {
                    string[] qq       = qqstr.Split(',');
                    string   qqhaoma  = qq[0];
                    string   password = qq[1];
                    string   nickname = qq[2];
                    AppenSpaceCmd(qqhaoma + "发布");
                    string cookiepath = "cookie/" + qqhaoma + ".txt";
                    string token      = "";
                    if (File.Exists(cookiepath))
                    {
                        spacecc = CookieHelper.ReadCookieFromFile(cookiepath);
                        token   = QQSpaceHelper.GetToken(spacecc, qqhaoma);
                    }
                    int logintime = 0;
                    while (token == "")
                    {
                        logintime++;
                        if (logintime == 10)
                        {
                            AppenSpaceCmd("登录失败,放弃!");
                            break;
                        }
                        AppenSpaceCmd(nickname + "[" + qqhaoma + "]未登录,正在第" + logintime.ToString() + "次尝试登录!");
                        spacecc = QQSpaceHelper.Login(qqhaoma, password);
                        CookieHelper.SaveCookie(cookiepath, spacecc);
                        token = QQSpaceHelper.GetToken(spacecc, qqhaoma);
                    }
                    if (token == "")
                    {
                        continue;
                    }
                    AppenSpaceCmd(nickname + "[" + qqhaoma + "]已登录");
                    string g_tk = QQSpaceHelper.Getgtk(spacecc.GetCookieHeader(new Uri("http://qzone.qq.com")).ToString());

                    QQHao qqhao = new QQHao();
                    qqhao.Qqhaoma  = qqhaoma;
                    qqhao.Password = password;
                    qqhao.G_tk     = g_tk;
                    qqhao.Token    = token;

                    string result = QQSpaceHelper.GetUserInfo(qqhao, spacecc);
                    #endregion
                    DirectoryInfo TheFolder  = new DirectoryInfo("待发布");
                    DirectoryInfo nextFolder = TheFolder.GetDirectories()[0];//发布选品库第一条
                    AppenSpaceCmd(nickname + "[" + qqhaoma + "]发布正文:" + nextFolder.Name);
                    ArrayList imgs = new ArrayList();
                    foreach (FileInfo NextFile in nextFolder.GetFiles())
                    {
                        if (NextFile.Extension == ".jpg" || NextFile.Extension == ".gif")
                        {
                            AppenSpaceCmd("上传图片");
                            UploadImageData imagedata = QQSpaceHelper.UploadPic(NextFile.FullName, spacecc, qqhao);
                            imgs.Add(imagedata);
                        }
                    }
                    string content = " ";
                    if (!IsGuidByReg(nextFolder.Name))
                    {
                        content = nextFolder.Name;
                    }
                    QQSpaceHelper.SendShuoshuoWithPic(content, imgs, spacecc, qqhao);
                    Directory.Move(nextFolder.FullName, "已发布/" + nextFolder.Name);
                    AppenSpaceCmd(nickname + "[" + qqhaoma + "]发布完成");
                }
                int jiange = Convert.ToInt32(this.nud_spacejiange.Value);
                AppenSpaceCmd("此次发布完毕,等待" + jiange.ToString() + "分钟");
                Thread.Sleep(jiange * 60 * 1000);
            }
        }
コード例 #2
0
        public static UploadImageData UploadPic(string filepath, CookieContainer spacecc, QQHao qqhao)
        {
            string           picpath = filepath;
            CookieCollection ccl     = spacecc.GetCookies(new Uri("http://qzone.qq.com"));
            string           url     = string.Format("http://shup.photo.qzone.qq.com/cgi-bin/upload/cgi_upload_image?g_tk={0}", qqhao.G_tk);
            FileStream       file    = new FileStream(picpath, FileMode.Open);

            byte[] bb = new byte[file.Length];
            file.Read(bb, 0, (int)file.Length);
            file.Close();
            Image  img    = byteArrayToImage(bb);
            string skey   = ccl[6].Value;
            string p_skey = ccl[1].Value;

            MsMultiPartFormData form = new MsMultiPartFormData();

            form.AddFormField("Filename", Path.GetFileName(filepath));
            form.AddFormField("qzonetoken", qqhao.Token);
            form.AddFormField("photoData", "filename");
            form.AddFormField("exif_info", "extendXml:");
            form.AddFormField("backUrls", "http://upbak.photo.qzone.qq.com/cgi-bin/upload/cgi_upload_image,http://119.147.64.75/cgi-bin/upload/cgi_upload_image");
            form.AddFormField("skey", skey);
            form.AddFormField("refer", "shuoshuo");
            form.AddFormField("output_charset", "utf-8");
            form.AddFormField("zzpaneluin", qqhao.Qqhaoma);
            form.AddFormField("uploadtype", "1");
            form.AddFormField("exttype", "0");
            form.AddFormField("hd_width", "2048");
            form.AddFormField("albumtype", "7");
            form.AddFormField("hd_height", "10000");
            form.AddFormField("zzpanelkey", "");
            form.AddFormField("charset", "utf-8");
            form.AddFormField("filename", "filename");
            form.AddFormField("p_uin", qqhao.Qqhaoma);
            form.AddFormField("hd_quality", "96");
            form.AddFormField("output_type", "json");
            form.AddFormField("uin", qqhao.Qqhaoma);
            form.AddFormField("p_skey", p_skey);
            form.AddFormField("upload_hd", "1");
            form.AddFormField("Filename", "xml");
            form.AddFormField("output_type", "xml");
            form.AddStreamFile("filename", Path.GetFileName(picpath), bb);
            form.AddFormField("Upload", "Submit Query");
            form.PrepareFormData();

            form.GetFormData();
            string host = "shup.photo.qzone.qq.com";
            //url = string.Format("http://upload.t.qq.com/asyn/uploadpicCommon.php?call=2&uin={0}&g_tk={1}&rand={2}&_ps1={3}&_ps2=null", uin, weiboGtk, rand.NextDouble(), _ps1);
            string ContentType = "multipart/form-data; boundary=" + form.Boundary;

            HttpHelper help = new HttpHelper();
            HttpItem   item = new HttpItem()
            {
                URL = url,
                CookieCollection = ccl,
                ResultCookieType = ResultCookieType.CookieCollection,
                Host             = host,
                Accept           = "*/*",
                UserAgent        = "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36",
                ContentType      = ContentType,
                Method           = "POST",
                PostDataType     = PostDataType.Byte,
                PostdataByte     = form.GetFormData().ToArray(),
                Encoding         = Encoding.UTF8,
                ProxyIp          = "ieproxy"
            };

            item.Header.Add("Origin", "http://qzs.qq.com");

            HttpResult      result     = help.GetHtml(item);
            string          resulthtml = result.Html;//上传图片,测试成功
            string          jsonstr    = resulthtml.Replace("_Callback(", "").Replace(");", "");
            UploadImageData imagedata2 = Newtonsoft.Json.JsonConvert.DeserializeObject <UploadImageData>(jsonstr);

            return(imagedata2);
        }
コード例 #3
0
        public void UploadImageShouldReturnOKTest()
        {
            UserRepositorySpy spy_repository = new UserRepositorySpy();
            CredentialsCheckerSpy_AlwaysPass spy_checker = new CredentialsCheckerSpy_AlwaysPass();
            UsersController target = new UsersController(spy_repository, spy_checker);
            byte[] fakeImage = new byte[] { 10, 11, 12 };
            UploadImageData arg = new UploadImageData() { FileName = "image1.jpg", ImageType = "image/jpeg", ImageBuffer = fakeImage };

            var config = new HttpConfiguration();
            var request = new HttpRequestMessage(HttpMethod.Post, "http://localhost/api/1.0/users/UploadImage");
            var route = config.Routes.MapHttpRoute("TestApi", "api/1.0/{controller}/{action}");
            var routeData = new HttpRouteData(route, new HttpRouteValueDictionary { { "controller", "users" }, { "action", "UploadImage" } });
            target.ControllerContext = new HttpControllerContext(config, routeData, request);
            target.Request = request;
            target.Request.Properties[HttpPropertyKeys.HttpConfigurationKey] = config;

            var actual = target.UploadImage(arg);

            Assert.AreEqual(HttpStatusCode.OK, actual.StatusCode);
        }
コード例 #4
0
ファイル: UsersController.cs プロジェクト: RomanAnosov/Repo
        public HttpResponseMessage UploadImage(UploadImageData imageData)
        {
            if ((imageData.ImageBuffer == null) || (imageData.ImageBuffer.Length == 0))
                throw new HttpResponseException(Request.CreateResponse(HttpStatusCode.BadRequest));

            int authUserId = credentialsChecker.GetAuthUserId(HttpContext.Current);
            if (authUserId != -1)
                repositoryUsers.AddOrUpdatePhoto(authUserId, imageData.ImageBuffer);
            else
                throw new HttpResponseException(Request.CreateResponse(HttpStatusCode.Unauthorized));

            return Request.CreateResponse(HttpStatusCode.OK);
        }
コード例 #5
0
        public void UploadImageShouldCallRepositoryTest()
        {
            UserRepositorySpy spy_repository = new UserRepositorySpy();
            CredentialsCheckerSpy_AlwaysPass spy_checker = new CredentialsCheckerSpy_AlwaysPass();
            UsersController target = new UsersController(spy_repository, spy_checker);
            byte[] fakeImage=new byte[] { 10, 11, 12 };
            UploadImageData arg = new UploadImageData() { FileName = "image1.jpg", ImageType = "image/jpeg", ImageBuffer = fakeImage};

            var config = new HttpConfiguration();
            var request = new HttpRequestMessage(HttpMethod.Post, "http://localhost/api/1.0/users/UploadImage");
            var route = config.Routes.MapHttpRoute("TestApi", "api/1.0/{controller}/{action}");
            var routeData = new HttpRouteData(route, new HttpRouteValueDictionary { { "controller", "users" }, { "action", "UploadImage" } });
            target.ControllerContext = new HttpControllerContext(config, routeData, request);
            target.Request = request;
            target.Request.Properties[HttpPropertyKeys.HttpConfigurationKey] = config;

            var actual = target.UploadImage(arg);

            bool successPassImage = true;
            if ((spy_repository.AddOrUpdatePhotoPhoto != null) && (spy_repository.AddOrUpdatePhotoPhoto.Length == fakeImage.Length))
            {
                for (int ind = 0; ind < fakeImage.Length; ind++)
                {
                    if (spy_repository.AddOrUpdatePhotoPhoto[ind] != fakeImage[ind])
                    {
                        successPassImage = false;
                        break;
                    }
                }
            }
            else
            {
                successPassImage = false;
            }

            Assert.IsTrue(successPassImage && (spy_repository.AddOrUpdatePhotoUserId == 1));
        }