学习使用新浪接口随笔(一)

小生初入C#领域,因为学校部门里面在办新浪微博活动的时候,需要统计转发数量。(个别团或者班级会去买转发数量,这没节操的),所以有的时候统计起来的时候,会比较麻烦。于是就产生了想利用新浪的API制作一个能统计微博转发数量的工具,因为学校里面微博的转发量不会很大,而且新浪上面的的应用又要钱。。。。具体就是把转发过微博的昵称记录下来,存到Excel文件当中,再对Excel文件里的名称那一列进行排序,去掉重复的。为了加深理解和记录下编程中遇到的问题,所以就写了这个随笔。

1.去新浪开放平台申请一个应用(当然这个应用是不需要提交到新浪那边审核的,因为我只是自己使用而已)

2.申请完毕后,可以在应用信息那边得到App Key、App Secret、Access Token(这个可以通过调用OAuth)的方法得到。

3.写程序

4.测试使用

新建项目什么的就不说了,我用的是VS2012,新建了个WPF的项目,因为对WPF的效果还是蛮看好的。代码部分我上网找了一些例子看的。

//其他的using就不贴了
using NetDimension.Weibo;//获得AcessToken的方法
//因为我的AppKey和AppSecrect都存在了Settings.settings里面
OAuth o = new OAuth(Properties.Settings.Default.AppKey, Properties.Settings.Default.AppSecrect);           string username = this.txtUserName.Text;string userpwd = this.txtUserPwd.Password;try{
          //使用账户登录(指的是申请应用使用到的帐号,或者可以自己设置15个测试帐号(在未经过新浪审核的条件下,只能设置15个测试帐号))
if (o.ClientLogin(username, userpwd)){AccessToken accessToken = o.GetAccessTokenByPassword(username, userpwd); //请注意这里返回的是AccessToken对象,不是string }}catch (WeiboException ex){MessageBox.Show(ex.Message);}return o;

接下来是在统计转发数量遇到的问题。

新浪API里面有个接口statuses/querymid和statuses/queryid 分别是通过mid和id获取对方的值。

因为在单条微博的地址栏里面,只能得到mid,就是类似A3Bhu9rW6的东西,所以我调用了statuses/querymid接口,然后调用statuses/show接口显示这条微博的信息。

string[] MIDlist = this.txtIDlist.Text.Split(',');foreach (string msgid in MIDlist){try{string id = _sina.API.Entity.Statuses.QueryID(1, false, true, msgid);var _msgInfo = _sina.API.Entity.Statuses.Show(id);string meg = " The message ID:" + id + "\n reposts_count:" + _msgInfo.RepostsCount + "\n";RText(meg);}catch{MessageBox.Show("这ID有问题吧。。。。");}}

到这里其实都没什么问题,早上在测试转发数量大于50条的微博的时候,出现了一个问题。

statuses/repost_timeline接口可以得到转发数量的详细json信息,官方的解释,这个接口只能获取最新的2000条记录,数据的结构有点让我凌乱,昨天解析这个数据的时候,多谢@dudu大神的指导,使用Json.NET并通过下面的代码提取转发人的名称。

var jObject = JObject.Parse(jsonStr);Console.WriteLine(jObject["reposts"][0]["user"]);

statuses/repost_timeline接口默认每一页是50条数据,我实际测起来是这样,而不是官方文档里面说的20条。一旦大于50条的数据,就要通过接口里面的page属性,翻页查询。

foreach (string msgid in MIDlist){try{string id = _sina.API.Entity.Statuses.QueryID(1, false, true, msgid);int x = _sina.API.Entity.Statuses.RepostTimeline(id).TotalNumber;string[] Rname = new string[x];sb.Append("\n Reposts Count:" + x);sb.Append("\n The message ID:" + id);//Statuses.RepostTimeline接口默认读取50条数据//如果数据大于50条,则进行分批读取                    int m=0;if (x > 50){for (int i = 1; i < x / 50 + 1; i++){var _msgInfo = _sina.API.Entity.Statuses.RepostTimeline(id, "0", "0", 50, i, 0);//IEnumerable<Entity> collection=_msgInfo.Statuses;//collection.Count();var jObject = JObject.Parse(_msgInfo.ToString());for (int n = 0; n < _msgInfo.Statuses.Count(); n++){sb.Append("\n Reposts User:" + jObject["reposts"][n]["user"]["name"]);Rname[m] = jObject["reposts"][n]["user"]["name"].ToString();m++;}sb.Append("\n--------------");}}else{var _msgInfos = _sina.API.Entity.Statuses.RepostTimeline(id);var jObjects = JObject.Parse(_msgInfos.ToString());for (int n = 0; n < _msgInfos.Statuses.Count(); n++){sb.Append("\n Reposts User:" + jObjects["reposts"][n]["user"]["name"]);Rname[m] = jObjects["reposts"][n]["user"]["name"].ToString();m++;}sb.Append("\n--------------");}RText(sb.ToString());_t.Create_Excel(Rname, x);             }
      catch (WeiboException ex){MessageBox.Show(ex.Message);}
 

当时一直在纠结怎么取出每次读取的数据实际的数量,因为在最后一页当中,不可能都是50条数据,有可能是40、30等等。后来才发现_msgInfo.Statuses.Count()这句代码就可以直接得到数量。。。。

这些就是目前遇到的问题,下一步,想研究下大于2000条的数据要怎么取出来的,然后再加个抽奖的小功能。

PS:小生希望有大神看到这个随笔的时候,能给与一些指导哈,我知道我的代码有一些不规范,而且初次调用这些接口,处理方式肯定有一些不对的地方!

 

 

转载于:https://www.cnblogs.com/Manofthecursed/p/3247876.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/295103.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

安装office时,提示某项注册表无法写入,请查看是否有管理员权限

安装office时&#xff0c;提示某项注册表无法写入&#xff0c;请查看是否有管理员权限 大概就是这个意思&#xff0c;记不清楚了&#xff0c;解决办法&#xff1a; 首先如果你确认软件没有问题并且是用管理员帐户登录的话&#xff0c;请关闭防火墙与杀毒软件&#xff0c;重试&a…

开源Winform控件库:花木兰控件库

微信好友推荐&#xff0c;挺好看的Winfrom控件库&#xff0c;下面来看看。花木兰控件库Gitee截图介绍基于 C#&#xff08;语言&#xff09; 4.0 、 VS2019 、 Net Framework 4.0(不包括Net Framework 4.0 Client Profile) 开发的Winform控件库。为了兼容性采用了C#&#xf…

c语言题中的一些陷阱

1、求下列两个数组的长度关系characX[] "abcdefg";char acY[] { a, b,c, d, e, f, g };解析&#xff1a;对于字符串来说&#xff0c;字符串结尾默认为‘\0’&#xff0c;所以acX[]的长度为8&#xff0c;而第二个数组的大小长度为7&#xff0c;而且因为没有用‘\0’结…

“爱因斯坦兄弟”事件轰动纽约时报!双胞胎乱写博士论文,整容后越黑越红,竟然名利双收..........

全世界只有3.14 % 的人关注了爆炸吧知识只要够大就够震撼超模君前几天发了一篇文章《2020年最奇葩论文&#xff0c;打假网站看了都无语&#xff0c;原来外国人更擅长中医》&#xff0c;里面讲到的那篇奇葩论文&#xff0c;可真是让我见识到了什么叫做一本正经胡说八道&#xff…

oracle分区exchange,oracle 分区表exchange原理

oracle分区的exchange操作非常快&#xff0c;那原理是什么呢&#xff1f;下面我们来做个实验&#xff1a;SQL> create table test (id number(3));表已创建。SQL> insert into test values (1);已创建 1 行。SQL> commit;提交完成。SQL> select object_id,data_obj…

Android之手机摇一摇震动刷新(支持ListView、GridView、WebView)并生成我的二维码

手机摇一摇震动刷新 第一步:看摇一摇震动刷新的前后的效果图 1、摇一摇震动刷新前的效果图如下(图片太大了,分2次录屏的,如果看着不爽请猛戳我的github上面的演示) 2、摇一摇震动刷新之后的效果图如下 说明:我笔记本的虚拟机没有重力感应,所以用虚拟机摇一摇没反应…

搭建基于虚拟账号的电子邮件系统

使用postfix&#xff0c;cyrus-sasl&#xff0c;courier-authlib&#xff0c;mysql&#xff0c;dovecot&#xff0c;extmail&#xff0c;extman搭建电子邮件系统&#xff0c;可以使用web方式以虚拟账号注册登录邮箱&#xff0c;并且发送接受邮件&#xff0c;实现电子邮件功能。…

在C#中obsolete表示什么?

这个预定义特性标记了不应被使用的程序实体。它可以让您通知编译器丢弃某个特定的目标元素。例如&#xff0c;当一个新方法被用在一个类中&#xff0c;但是您仍然想要保持类中的旧方法&#xff0c;您可以通过显示一个应该使用新方法&#xff0c;而不是旧方法的消息&#xff0c;…

php根据分辨率跳转,使用PHP将分辨率转换为Aspect比率

我需要一些可能非常基本的帮助.我正在研究一个接收这些可能的输入字符串的PHP函数(这些是示例,它可以是任何分辨率)&#xff1a;1600x9001440x9001366x7681360x7681280x10241280x8001024x10241024x768640x960320x480320x480etc我想处理这些字符串中的任何一个并返回适当的宽高比…

第一题

转载于:https://www.cnblogs.com/bilibiliganbei/p/5251796.html

Fibonacci Knapsack

http://acm.uestc.edu.cn/problem.php?pid1489&cid164 其实就是用搜索做0/1背包 不要被Fibonacci 唬住了&#xff0c;没什么用。&#xff0c;。。。。。这个比较坑爹 剪枝在代码中说明了 ?View Code C 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 2…

此内容过于真实,引起强烈舒适

全世界只有3.14 % 的人关注了爆炸吧知识有这么一群人&#xff0c;年纪轻轻却有着远超同龄人或者常人的思想跟经验。其实&#xff0c;思想深度和年龄的关系并不大。饱读诗书的人&#xff0c;自然见识不凡&#xff0c;思考的内容也比别人更深刻。随着经历和阅历的增加&#xff0c…

远程登录:ftp

ftp服务功能&#xff1a;主要用于文件的传输。端口&#xff1a;21服务&#xff1a;vsftpd软件&#xff1a;vftpd-2.0.1-5i386.rpm配置&#xff1a;/etc/vsftpd/vsftp.conf在配置文件最后加入&#xff1a;chroot_local_useryes表示将用户锁定在自己的主目录更改配置文件之后&…

Win11重磅新功能推送!

微软宣布现已开始向 Windows 11 正式版用户推出全新表情符号&#xff08; emoji &#xff09;&#xff0c;被称为“大眼夹”的经典 Office 助手&#xff08;Clippy&#xff09;现已回归&#xff01;全新表情符号基于流畅设计&#xff08;Fluent Design&#xff09;&#xff0c;…

Android之判断是否有网封装类

Android之判断是否有网封装类 我们做项目的时候,一般都不能离开网络,下面是对判断是否有网类的封装 import android.content.Context; import android.net.ConnectivityManager; import android.net.NetworkInfo; import android.net.wifi.WifiInfo; import…

PHP截取IE浏览器并缩小原图的方法

这篇文章主要介绍了PHP截取IE浏览器并缩小原图的方法,涉及PHP调用com组件实现图像截取的相关技巧,需要的朋友可以参考下 本文实例讲述了PHP截取IE浏览器并缩小原图的方法。分享给大家供大家参考&#xff0c;具体如下&#xff1a; // 截取一个窗口 Capture a window (IE for exa…

oracle与sqlserver差异,Oracle与SQLServer的SQL语法差异总结

Oracle与SQL Server应用差异对比分析 Oracle 10g 项目 存储过程格式 存储过程名(参数列表) IS Begin ---存储过程内容 End 存储过程名; 备注 CREATE OR REPLACE PROCEDURE CREATE PROCEDURE 存储过程名 (参数列表) AS --存储过程内容 SQLServer 2008 1、 指定参数类型&#xff…

话里话外:装备制造业企业迫切需要实现信息化综合集成

博主推荐延展咨询资深顾问 沈靓文章 装备制造企业产品具有单件产值大、技术含量高、生产周期长、完全个性化生产的特点&#xff0c;伴随着制造业整体水平的提高&#xff0c;近几年又兴起了异地制造、移动工厂等模式&#xff0c;而装备制造业现有的管理方式和信息化水平多不能适…

日本艺伎的拍照姿势,竟源于孔子?看完真的涨知识···

全世界只有3.14 % 的人关注了爆炸吧知识本文授权转载自公众号&#xff1a;艺非凡&#xff08;ID&#xff1a;efifan&#xff09;相信很多人都见过下面这个emoji表情&#xff1a;????????????没错&#xff0c;在风靡全球20余年的美剧《老友记》中&#xff0c;Ross决…

关于castle和Could not find the dialect in the configuration错误

最近试了试castle&#xff0c;NND&#xff0c;老是报“Could not find the dialect in the configuration”&#xff0c;明明配的没问题&#xff0c;上网搜索所有教程都是这么配的。后来在一国外的网站解决NHibernate的问题的帖子&#xff0c;看的一哥们说把hibernate去了试试&…