示例#1
0
        /// <summary>
        /// 线程方法:加载用户微博
        /// </summary>
        private void LoadFriendTimeline()
        {
            Thread thLoad = new Thread(new ThreadStart(delegate()
            {
                StringBuilder statusBuilder = new StringBuilder();
                NetDimension.Weibo.Entities.status.Collection json = Sina.API.Statuses.FriendsTimeline("0", "0", 20, 1, false, 0);
                if (json.Statuses != null)
                {
                    foreach (NetDimension.Weibo.Entities.status.Entity status in json.Statuses)
                    {
                        if (status.User == null)
                        {
                            continue;
                        }

                        if (status.RetweetedStatus != null && status.RetweetedStatus.User != null)
                        {
                            statusBuilder.AppendFormat(repostPattern,
                                                       status.User.ProfileImageUrl,
                                                       status.User.ScreenName,
                                                       status.Text,
                                                       status.RetweetedStatus.User.ScreenName,
                                                       status.RetweetedStatus.Text,
                                                       string.IsNullOrEmpty(status.RetweetedStatus.ThumbnailPictureUrl) ? "" :
                                                       string.Format(imageParttern, status.RetweetedStatus.ThumbnailPictureUrl),
                                                       status.RetweetedStatus.RepostsCount,
                                                       status.RetweetedStatus.CommentsCount,
                                                       status.RepostsCount, status.CommentsCount);
                        }
                        else
                        {
                            statusBuilder.AppendFormat(statusPattern,
                                                       status.User.ProfileImageUrl,
                                                       status.User.ScreenName,
                                                       status.Text,
                                                       string.IsNullOrEmpty(status.ThumbnailPictureUrl) ? "" :
                                                       string.Format(imageParttern, status.ThumbnailPictureUrl),
                                                       status.RepostsCount, status.CommentsCount);
                        }
                    }
                }

                string html = htmlPattern.Replace("<!--StatusesList-->", statusBuilder.ToString());

                UIUpdateContent(html);
            }));

            thLoad.IsBackground = true;
            thLoad.Start();
        }
示例#2
0
文件: SinaWeibo.cs 项目: wcgcw/Finder
        //由通过认证的新浪客户端,调取当前登录用户及其所关注用户的最新微博接口Friends_Timeline,n最大是一次100条
        //获得最新的n条含有用户关键字的公共微博信息并存入数据库
        public void getFriends_Timeline_sina(Client sinaClient, int n)
        {
            StringBuilder sql = new StringBuilder();
            ArrayList lst_kw = new ArrayList();
            Hashtable ht_evt = new Hashtable();
            try
            {
                NetDimension.Weibo.Entities.status.Collection satColl = sinaClient.API.Entity.Statuses.FriendsTimeline("", "", n);
                foreach (NetDimension.Weibo.Entities.status.Entity entity in satColl.Statuses)
                {
                    string text = entity.RetweetedStatus == null ? entity.Text : entity.Text + entity.RetweetedStatus.Text;
                    if (!weibo_ids.Equals(entity.ID) || long.Parse(weibo_ids.Equals("") ? "0" : weibo_ids) > long.Parse(entity.ID))
                    {
                        //把正文里包含的关键词都放入list
                        for (int i = 0; i < dt_kw.Rows.Count; i++)
                        {
                            string[] _words = dt_kw.Rows[i][0].ToString().Split(new char[] { ' ' });
                            if (!lst_kw.Contains(dt_kw.Rows[i][0].ToString()))
                            {
                                lst_kw.Add(dt_kw.Rows[i][0].ToString());
                                foreach (string w in _words)
                                {
                                    if (!text.Contains(w))
                                    {
                                        lst_kw.Remove(dt_kw.Rows[i][0].ToString());
                                        break;
                                    }
                                }
                            }
                        }

                        ht_evt = evtJudge(dt_event, lst_kw);
                        if (ht_evt.Count > 0)
                        {
                            int part = partJudge(dt_partWord, text);
                            weibo_ids = entity.ID;
                            //string text = entity.RetweetedStatus == null ? entity.Text : entity.Text + entity.RetweetedStatus.Text;
                            foreach (DictionaryEntry de in ht_evt)
                            {
                                int urlTherear = UrlThereare(entity.ID);
                                if (urlTherear <= 0)
                                {
                                    sql = sql.Append("insert into ReleaseInfoWB (title,contexts,releasedate,infosource,"
                                        + "keywords,releasename,collectdate,snapshot,webname,pid,part,reposts,comments,kid) values ('"+entity.ID+"','"
                                        + text + "','"
                                        + string.Format(NetDimension.Weibo.Utility.ParseUTCDate(entity.CreatedAt).ToString("yyyy-MM-dd HH:mm:ss"))
                                        + "','" + "http://weibo.com/" + entity.User.ID + "','" + de.Key.ToString() + "','"
                                        + entity.User.Name + "','" + string.Format(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")) + "','','"
                                        + "新浪微博" + "','" + "3" + "','" + part.ToString() + "','" + entity.RepostsCount + "','"
                                        + entity.CommentsCount + "'," + de.Value.ToString() + ");");
                                }
                            }
                        }
                        lst_kw.Clear();
                    }
                }
            }
            catch (Exception err)
            {
                Console.Write(err.Message);
            }
            //插入数据库
            if (sql.Length > 0)
            cmd.ExecuteNonQueryInt(sql.ToString());
        }