现在微博用户越来越多啦,今天晚上看了一下新浪微博的开放API,写了一个小程序玩玩,主要是想通过手机发微博信息,反正现在大家都有流量包月,然后电脑的程序不断的获取微博列表,然后根据微博的内容进行相应的操作。如果俺的的手机是智能机,就直接写个客户端了。
要想获取微博的内容,就需要先登录。身份认证一般就分为两种1、传统的用户名密码方式,2、使用开放授权OAuth 模式。
用户名密码的方式是比较简单的,但是缺点也显而易见,就是需要告诉第三方应用程序你的用户名和密码。这样安全性就降低了。因此OAuth 认证方式应运而生。
OAuth 就相对安全多了,第三方应用程序不会获得你的用户名和密码信息,只需你对其进行授权,授权通过返后回给第三方App一个标识(token),app拿到这个token以后会到服务商那里换取一个Access Token (访问标识),这个其实就是相当于我们用户名和密码(但是不是),在以后的操作过程中,遇到需要身份认证的地方,App 就通过这个Access Token 进行身份认证。记得以前安装人人网的第三方应用的时候会有个授权的过程,现在明白了,原来是OAuth 方式获得我个人信息的授权。
下面的代码只是实现了简单的内容,基于新浪微博JAVA SDK。
/**
* 通过新浪微博信息对电脑进行相关的操作(关机,重启,打开部分应用程序如QQ,音乐播放软件等)
* @author mayonghua
*
*/
public class ComputerOperation implements Runnable{
private String[] userInfo = {"username","password"};
private String dateString = "";
public String start() throws Exception{
// 设置应用的ID和对该ID的签名,每个应用都有个唯一的Id,该ID和签名会在应用程序注册的时候由新浪的认证中心自动生成
System.setProperty("weibo4j.oauth.consumerKey", Weibo.CONSUMER_KEY);
System.setProperty("weibo4j.oauth.consumerSecret", Weibo.CONSUMER_SECRET);
// 登录成功会返回该用户的相关信息
User user = getWeibo(false,userInfo).verifyCredentials();
// 获得该用户最新发表的微博
Status status = getWeiboStatus(user);
System.out.println(status.getText());
if(status==null){
System.out.println("没有微博信息,请先发布微博……");
return "";
}
// 从本地文件读取最后一条微博的发布时间
String createTime = readWeiboCreateTime();
// 如果createTime和刚刚获得的最新微博的时间不相等,就说明该微博是最新发布的,不是以前的,所以可以进行相关的操作
if(dateComparison(createTime,status.getCreatedAt())){
// 首先将该微博的发布时间更新到本地文件
saveWeiboCreateTime(status);
// 执行相关的操作
execWeiboTask(status);
}else {
System.out.println("正在巡视,没有发现新指令…………");
}
return "";
}
/**
* 判断两个日期大小
* @param oldDate
* @param newDate
* @return
*/
public boolean dateComparison(String oldDate,Date newDate){
System.out.println("系统正在比较两个日期大小");
boolean flag = false;
// 如果为空说明是程序初始化
if(oldDate==""){
return true;
}
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddhhmmss");
String date = sdf.format(newDate);
if(Double.parseDouble(oldDate)<Double.parseDouble(date)){
flag = true;
}
return flag;
}
/**
* 执行相应的微博任务
* @param status
* @return
*/
public String execWeiboTask(Status status) throws Exception{
String stat= status.getText();
System.out.println("发现新指令,正在进行执行初始化");
if("关机".equals(stat)){
System.out.println("系统正在进行【"+stat+"】任务");
ComputerUtils.shutdown();
}else if("重启".equals(stat)){
System.out.println("系统正在进行【"+stat+"】任务");
ComputerUtils.restart();
}else if("上QQ".equals(stat)){
System.out.println("系统正在进行【"+stat+"】任务");
ComputerUtils.startApp(ComputerUtils.QQ);
}else if("听音乐".equals(stat)){
System.out.println("系统正在进行【"+stat+"】任务");
ComputerUtils.startApp(ComputerUtils.TTPLAYER);
}else if("关闭QQ".equals(stat)){
System.out.println("系统正在进行【"+stat+"】任务");
ComputerUtils.stopApp(ComputerUtils.killQQ);
}else {
System.out.println("错误指令,不进行任何操作……");
}
return "";
}
/**
* 从本地读取最近一条微博的创建时间
* @return
*/
public String readWeiboCreateTime() throws Exception{
System.out.println("正在读取本地文件……");
// 读取本地保存的最新一条微博信息的发表时间
File file = new File("c:/weibo.txt");
if(!file.exists()){
file.createNewFile();
}
BufferedReader br = new BufferedReader(new FileReader(file));
dateString = br.readLine();
return dateString == null ? "" : dateString;
}
/**
* 将新的微博信息发布的时间更新到本地文件
*/
public void saveWeiboCreateTime(Status status) throws Exception{
File file = new File("c:/weibo.txt");
BufferedWriter bw = new BufferedWriter(new FileWriter(file));
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddhhmmss");
String date = sdf.format(status.getCreatedAt());
bw.write(date, 0,date.length());
bw.close();
System.out.println("正在更新本地文件……");
}
/**
* 获得用户的微博列表
* @param user
* @return
* @throws Exception
*/
public Status getWeiboStatus(User user) throws Exception{
// 返回用户的微博列表,Paging的两个参数为:第几页,每次取几条数据
List<Status> statuses = getWeibo(false,userInfo).getUserTimeline(user.getId()+"",new Paging(1,1));
// 返回的微博信息列表是按照发布时间正序排列,所以第0条既是最新发布的
if(statuses!=null&&statuses.size()>0){
return statuses.get(0);
}else {
return null;
}
}
/**
* 登录微博
* @param isOauth
* @param args
* @return
*/
private Weibo getWeibo(boolean isOauth,String[] args) {
Weibo weibo = new Weibo();
if(isOauth) {//oauth验证方式 args[0]:访问的token;args[1]:访问的密匙
weibo.setToken(args[0],args[1]);
}else {//用户登录方式
weibo.setUserId(args[0]);//用户名/ID
weibo.setPassword(args[1]);//密码
}
return weibo;
}
public void run(){
try {
while(true){
start();
// 每隔一分钟请求一次
Thread.sleep(60*1000);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
/**
* 和电脑相关的操作
* @author mayonghua
*
*/
public class ComputerUtils {
public static final String QQ = "D:\\Program Files\\QQ\\Bin\\QQ.exe";
public static final String TTPLAYER = "";
public static final String killQQ = "taskkill /im QQ.exe /f";
// 关机
public static void shutdown() throws Exception{
//Runtime.getRuntime().exec("cmd /c Shutdown -s -t 300");
}
// 重启
public static void restart() throws Exception{
// Runtime.getRuntime().exec("cmd /c Shutdown -r -t 300");
}
// 打开相应的应用程序
public static void startApp(String path) throws Exception{
// 根据路径打开应用程序
Runtime.getRuntime().exec(path);
}
// 关闭相应的应用程序
public static void stopApp(String processId) throws Exception{
// 根据进程Id 结束进程
Runtime.getRuntime().exec(processId);
}
测试代码
/**
*
* @author mayonghua
*
*/
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
ComputerOperation co = new ComputerOperation();
co.run();
}
}
ps: 为什么googlecode不让我创建新项目了呢
You have performed the requested action too many times in a 24-hour time period. Or, you have performed the requested action too many times since the creation of your account.
分享到:
相关推荐
它也适用于个人生活,如在家通过手机控制电脑下载文件、播放音乐,甚至玩游戏。 总之,通过安卓手机远程控制电脑,不仅提升了工作效率,也扩展了我们的数字生活。只要遵循上述步骤并注意安全,你就能轻松实现这一...
标题中的"C#写的用微博可以控制电脑了"指的是一个利用C#编程语言开发的应用程序,该程序能够实现通过微博平台来远程控制计算机的功能。在现代技术中,这种远程控制技术通常基于网络通信协议,比如HTTP、TCP/IP或者...
可以作为PPT助手使用,也可以直接控制操作电脑,类似的功能应用商店都有APP下载,此设计采用客户服务器的通信方式,客户端(手机)输入服务器端(电脑)的IP地址和端口号即可建立手机与电脑的通信,电脑将屏幕截图和...
例如,在远程教育中,老师可以通过手机远程控制电脑来与学生进行实时互动,从而提高教学效果。 手机远程控制电脑的方法是一种非常有用的技术,可以提高工作效率、生活质量和教学效果。但是,需要注意软件的选择和...
2.通过微博的内容控制电脑做相关操作 如:关机,取消关机,重启,摄像头截图,屏幕截图等 使用方法 1.运行QAPITool.exe后点确定(里面的appkey appsecret最好是自己在腾讯微博应用开发页面自己申请) 2.在...
远程控制电脑操作步骤: 1. 运行附件中的 RemoteControlServer.exe,控制台会出现: Listening... 表示电脑正在受控中... 2. 打开 手机端 程序, 在输入框内输入电脑的(局域网)IP,然后点击 connect... 3. 如果一切正确...
易语言远程控制电脑关机、打开程序等操作源代码。此代码可以配套手机APP
手机控制电脑关机,是利用手机登录QQ的在线状态来控制的。开启此软件后,软件会自动监控你设置的QQ号码是否在线,如果你设置的QQ号码在线的话,那么软件会在你设置的在线后多久关机>的时间关闭你的电脑!
在IT行业中,远程控制打印任务和远程控制电脑是常见的需求,尤其在企业环境中,这有助于提高工作效率和资源管理。在本场景中,我们关注的是利用C#编程语言实现这些功能,以及批量执行SQL、网络检测和数据库连接检测...
这个项目旨在让WM6设备能够通过蓝牙技术来远程操作计算机的鼠标功能,实现对电脑的无线控制。 在描述中提到的“VS2008 C# 编写”,表明开发环境是Visual Studio 2008,而编程语言是C#。VS2008是微软发布的一款强大...
远程控制电脑开关机(ReShutDown) ,可以帮助你去上班时电脑忘记关了,在公司用电脑下载这款软件关掉家里的电脑,有需要的赶紧来东坡下载使用吧。 远程控制电脑开关机(ReShutDown)介绍 软件分为两个部分,exe执行文件...
### 智能手机远程控制连接内网电脑桌面 #### 一、远程桌面软件的选择与配置 为了实现iPhone智能手机远程控制连接内网电脑桌面的目的,本文将详细介绍如何使用一款名为2X Client RDP/Remote的远程桌面软件。该软件...
【标题】:“[CracK8小组]K8...通过这份教程,学习者可以学习到如何整合这些技术,实现一个完整的手机远程控制电脑的解决方案。然而,值得注意的是,教程中的源码可能涉及版权问题,使用时需谨慎,遵循合法合规的原则。
诺基亚作为曾经的手机巨头,在这方面也有所贡献,推出了一款名为Nokia Wireless Presenter的软件,专为S60V1 V2平台设计,实现了通过手机蓝牙远程控制电脑的创新功能。 Nokia Wireless Presenter是诺基亚官方推出的...
Mobizen是一款功能强大的远程控制工具,它允许用户通过电脑对手机进行实时的屏幕共享和控制。这个“mobizen电脑远程控制手机免登录版”提供了一种无需注册或登录即可使用的解决方案,使得用户能够轻松地在电脑上操控...
原理: ... QQ2收到命令以后确认是主控端发送的命令以后加以识别 然后QQ2根据命令执行相应的操作. 不管你的消息是从哪种QQ平台上发送给QQ2的 只要你确保QQ2能...支持 手机QQ,WebQQ,QQ2000-QQ2011,安卓QQ,IPQQ,等众多QQ.
远程控制电脑调试工具(工具+操作手册)_kaic.rar 远程控制电脑调试工具(工具+操作手册)_kaic.rar 远程控制电脑调试工具(工具+操作手册)_kaic.rar 远程控制电脑调试工具(工具+操作手册)_kaic.rar 远程控制电脑调试工具...
在这个名为“手机远程控制电脑程序源码”的项目中,我们可以看到一个创新的解决方案,它允许用户通过手机设备来远程控制他们的计算机。这个程序的核心在于利用Java和Android平台的强大功能,构建了一个跨平台的远程...
首先,我们要理解“通过微博控制电脑”的基础架构。这种技术的核心是将微博平台作为一个命令接收和执行的接口。用户在微博上发布特定格式的消息,这些消息被解析为控制指令,然后由服务器抓取并转发给目标计算机,...