Ejemplo n.º 1
0
 /// <summary>
 /// 构造函数
 /// </summary>
 /// <param name="id"></param>
 public Wx(long id)
 {
     db          = new RbtDBDataContext();
     lg          = db.x_logon.FirstOrDefault(o => o.logon_id == id);
     ukey        = lg.x_user.ukey;
     baseRequest = new BaseRequest();
     wc          = new Wc();
 }
Ejemplo n.º 2
0
        /// <summary>
        /// 开始运行
        /// </summary>
        public void Run()
        {
            isquit = false;

            try
            {
                loadQrcode();
                waitFor(1, 0);

                wxLogin();
                wxInit();
                wxStatusNotify();

                op = new Wc(wc.Cookies, 5);

                lg.status = 6;//初始化完成
                db.SubmitChanges();

                loadContact();
            }
            catch (Exception ex)
            {
                outLog("wx.Run->" + ex.Message);
                exit(1);
            }

            new Thread(o =>
            {
                while (!isquit)
                {
                    SyncCheck();
                }
            }).Start();

            ///加载用户图片
            new Thread(o =>
            {
                var hw     = new Wc(wc.Cookies, 5);
                var haserr = false;
                var page   = 1;
                while (!isquit)
                {
                    haserr = false;
                    page   = 1;
                    var cs = db.x_contact.Where(c => c.uin == user.Uin && c.headimg == null).Skip((page - 1) * 10).Take(10);
                    foreach (var c in cs)
                    {
                        var rp = hw.GetFile(gateway + "/cgi-bin/mmwebwx-bin/webwxget" + (c.username[1] == '@' ? "headimg" : "icon") + "?username="******"getimg->" + c.nickname + "(" + c.contact_id + ") 获取" + (rp.err ? "失败" : "成功"));
                        if (!rp.err)
                        {
                            c.headimg = "data:img/jpg;base64," + Convert.ToBase64String(rp.data as byte[]);
                        }
                        else
                        {
                            haserr = true; break;
                        }
                        page++;
                    }
                    ;
                    try
                    {
                        db.SubmitChanges();
                    }
                    catch { }
                    if (haserr)
                    {
                        Thread.Sleep(5 * 60 * 1000);
                    }
                    else
                    {
                        Thread.Sleep(5 * 1000);
                    }
                    if (db.x_contact.Count(c => c.uin == user.Uin && c.headimg == null) == 0)
                    {
                        outLog("图片同步完成"); break;
                    }
                }
                ;
            }).Start();
        }