/// <summary> /// 收发给自己的私信 /// </summary> /// <param name="web"></param> /// <param name="uid">账号自己的Uid</param> public static List<CnDirectMessagesEntity> RecevieDirectMessages(WebAccessBase web, string uid) { if (web == null) throw new ArgumentNullException("web"); if (string.IsNullOrEmpty(uid)) throw new ArgumentNullException("uid"); List<CnDirectMessagesEntity> result = new List<CnDirectMessagesEntity>(); web.Encode = Encoding.UTF8; web.Reffer = null; var home = web.GetHTML("http://m.weibo.cn/"); if (string.IsNullOrEmpty(home)) { CNHttpWorkLogger.Info("私信{0}访问自己主页为空", uid); return null; } var listStr = web.GetHTML("http://m.weibo.cn/msg/index?format=cards"); try { dynamic listDynamic = DynamicJson.Parse(listStr); var list = listDynamic[0].card_group; foreach (var item in list) { if (!item.IsDefined("text")) continue; if (string.IsNullOrEmpty(item.text)) continue; if (!item.IsDefined("unread") || item.unread == "0") continue; var sendUid = item.user.id; CnDirectMessagesEntity cnDirectMessagesEntity = new CnDirectMessagesEntity { Time = CommonExtension.AnalyseTime(item.created_at), Text = item.text, Uid = sendUid, Nickname = item.user.screen_name }; if (CheckSendUser(web, sendUid)) { result.Add(cnDirectMessagesEntity); } } } catch (Exception ex) { CNHttpWorkLogger.Error(string.Format("{0}分析私信列表失败\r\n{1}", uid, listStr), ex); } web.Reffer = new Uri("http://m.weibo.cn/msg/notes"); var listStr2 = web.GetHTML("http://m.weibo.cn/msg/noteList?page=1"); try { dynamic listDynamic = DynamicJson.Parse(listStr2); if (listDynamic.ok == "1") { var list = listDynamic.data; foreach (var item in list) { CnDirectMessagesEntity cnDirectMessagesEntity = new CnDirectMessagesEntity { Time = CommonExtension.AnalyseTime(item.Value.time), Text = item.Value.text, Uid = item.Value.sender.uid, Nickname = item.Value.sender.name }; result.Add(cnDirectMessagesEntity); } } } catch (Exception ex) { CNHttpWorkLogger.Error(string.Format("{0}分析未关注联系人私信列表失败\r\n{1}", uid, listStr), ex); } return result.OrderByDescending(p => p.Time).ToList(); }
/// <summary> /// 获取指定Uid与当前登录账号的私信会话 /// </summary> /// <param name="web"></param> /// <param name="uid"></param> /// <returns></returns> private static IEnumerable<CnDirectMessagesEntity> GetDialogs(WebAccessBase web, string uid) { var referer = string.Format("http://m.weibo.cn/msg/chat?uid={0}", uid); web.Reffer = new Uri(referer); var url = string.Format("http://m.weibo.cn/msg/messages?uid={0}&page=1", uid); var html = web.GetHTML(url); if (string.IsNullOrEmpty(html)) return new List<CnDirectMessagesEntity>(); try { var result = new List<CnDirectMessagesEntity>(); dynamic json = DynamicJson.Parse(html); if (json.IsDefined("data")) { foreach (var item in json.data) { string text = item.text; text = HtmlRegex.Replace(text, ""); CnDirectMessagesEntity cnDirectMessagesEntity = new CnDirectMessagesEntity { Time = CommonExtension.AnalyseTime(item.created_at), Text = text, Uid = item.sender.id, Nickname = item.sender.screen_name }; result.Add(cnDirectMessagesEntity); } return result; } } catch (Exception) { CNHttpWorkLogger.Info("分析{0}的私信会话列表失败\r\n{1}", uid, html); } return new List<CnDirectMessagesEntity>(); }