应用python编写简单新浪微博应用(二)
来源:互联网 发布:组态软件的组成 编辑:程序博客网 时间:2024/06/10 12:35
应用python编写简单新浪微博应用(二)
《应用python编写简单新浪微博应用(一)》一文中简单介绍了python语言实现验证授权、微博发布读取的相关代码,本文会进一步说明评论微博、转发微博、获取未读消息数、获取评论列表、关注他人、取消关注他人、显示和他人的关系、获取他人信息等功能的实现。
注意:本文中各个部分的代码仍需承接在(一)中所列出的应用验证相关代码之后。
一、评论微博消息
from weibopy.error import WeibopError;#设定用户令牌密钥.auth.setToken( atKey, atSecret );#绑定用户验证信息.api = API(auth);#评论指定微博信息.try: #id为评论的微博id,cid为回复的评论id,comment为评论内容. #comment_ori为是否同时评论原微博(所评论微博为转发时) api.comment( id = id, cid = cid, comment = comment, comment_ori = comment_ori );except WeibopError, e: return e.reason;return "ok";
二、转发微博消息
from weibopy.error import WeibopError;#设定用户令牌密钥.auth.setToken( atKey, atSecret );#绑定用户验证信息.api = API(auth);#转发指定微博信息.try: #id为被转发的微博id,status为转发时添加的内容. api.repost( id = id, status = status );except WeibopError, e: return e.reason;return "ok";
三、获取未读消息数
from weibopy.error import WeibopError;#设定用户令牌密钥.auth.setToken( atKey, atSecret );#绑定用户验证信息.api = API(auth);#获取未读消息数.try: count = api.unread(with_new_status=1);except WeibopError, e: return e.reason;unread={};#是否有未读的微博.unread['new_status'] = count.new_status;#未读评论数.unread['comments'] = count.comments;#未读私信数.unread['dm'] = count.dm;#未读@信息数unread['mentions'] = count.mentions;#新粉丝数.unread['followers'] = count.followers;return unread;
四、获取评论列表
from weibopy.error import WeibopError;#设定用户令牌密钥.auth.setToken( atKey, atSecret );#绑定用户验证信息.api = API(auth);CommentList = [];#获取指定页评论信息列表.try: timeline = api.comments_timeline( count = count, page = page );except WeibopError, e: return e.reason;#对微博信息列表进行逐条处理.for line in timeline: comment = {}; #评论id comment["id"] = line.id; #评论用户ID comment["uid"] = line.user.id; #评论用户名称 comment["user"] = line.user.name.encode('utf-8'); #评论文字. comment["text"] = line.text.encode('utf-8'); #评论创建时间. comment["created"] = line.created_at; #评论来源. comment["source"] = line.source.encode('utf-8'); #被评论的微博. status = getattr( line, "status", None ); #被评论的微博ID. comment["wid"] = status.id; #被评论的微博用户ID. comment["wuid"] = status.user.id; reply = getattr( line, "reply_comment", None ); #如果是回复评论. if ( reply ): #评论类型. comment["rtype"] = 1; #被评论的用户ID comment["ruid"] = reply.user['id']; #被评论的用户名称. comment["ruser"] = reply.user['name'].encode('utf-8'); #评论内容. comment["rtext"] = reply.text.encode('utf-8'); #如果不是回复评论(是直接评论微博). else: #评论类型. comment["rtype"] = 0; #被评论的用户ID comment["ruid"] = status.user.id; #被评论的用户名称. comment["ruser"] = status.user.name.encode('utf-8'); #评论内容. comment["rtext"] = status.text.encode('utf-8'); CommentList.append( comment );return CommentList;
注意:新浪微博给出的程序包的Comments类有个小问题,需要更正后才能正常调用相关功能。
weibopy/models.py 中的如下部分
class Comments(Model): @classmethod def parse(cls, api, json): comments = cls(api) for k, v in json.items(): if k == 'user': user = User.parse(api, v) setattr(comments, 'author', user) setattr(comments, k, user) elif k == 'status': status = Status.parse(api, v) setattr(comments, 'user', status) elif k == 'created_at': setattr(comments, k, parse_datetime(v)) elif k == 'reply_comment': setattr(comments, k, User.parse(api, v)) else: setattr(comments, k, v) return comments
应更正为
class Comments(Model): @classmethod def parse(cls, api, json): comments = cls(api) for k, v in json.items(): if k == 'user': user = User.parse(api, v) setattr(comments, 'author', user) setattr(comments, k, user) elif k == 'status': status = Status.parse(api, v) setattr(comments, k, status) elif k == 'created_at': setattr(comments, k, parse_datetime(v)) elif k == 'reply_comment': setattr(comments, k, User.parse(api, v)) else: setattr(comments, k, v) return comments
即可。
五、关注指定用户
from weibopy.error import WeibopError;#设定用户令牌密钥.auth.setToken( atKey, atSecret );#绑定用户验证信息.api = API(auth);#关注指定用户.try: api.create_friendship( user_id = user_id );except WeibopError, e: return e.reason;return "ok";
六、取消关注指定用户
from weibopy.error import WeibopError;#设定用户令牌密钥.auth.setToken( atKey, atSecret );#绑定用户验证信息.api = API(auth);#取消关注指定用户.try: api.destroy_friendship( user_id = user_id );except WeibopError, e: return e.reason;return "ok";
七、显示和指定用户的关系
from weibopy.error import WeibopError;#设定用户令牌密钥.auth.setToken( atKey, atSecret );#绑定用户验证信息.api = API(auth);#显示和指定用户的关系.try: source, target = api.show_friendship(target_id = user_id); if source.following: if source.followed_by: #互相关注. friendship = 3; else: #我关注他. friendship = 2; else: if source.followed_by: #他关注我. friendship = 1; else: #互无关系. friendship = 0;except WeibopError, e: return e.reason;return friendship;
八、获取指定用户信息
from weibopy.error import WeibopError;#设定用户令牌密钥.auth.setToken( atKey, atSecret );#绑定用户验证信息.api = API(auth);#获取指定用户信息.try: thisUser = {}; result = api.get_user( user_id = user_id, screen_name = screen_name ); #用户ID thisUser['id'] = result.id; #用户名称. thisUser['name'] = result.name.encode('utf-8'); #所在城市. thisUser['location'] = result.location.encode('utf-8'); #自我描述. thisUser['description'] = result.description.encode('utf-8'); #个人主页. thisUser['url'] = result.url; #头像图片地址. thisUser['profile'] = result.profile_image_url; #是否实名认证. thisUser['verified'] = result.verified; #粉丝数. thisUser['followers_count'] = result.followers_count; #关注数. thisUser['friends_count'] = result.friends_count; #微博数. thisUser['statuses_count'] = result.statuses_count;except WeibopError, e: return e.reason;return thisUser ;
本文和上文中均为涉及到的功能,参考两文中的示例代码,结合新浪给出的API文档,再适当阅读sinatpy开发包中的相关代码,相信具有一定python基础的开发者很容易就能实现各种操作。
最后一点小窍门:sinatpy中只绑定了部分常用函数,对于sinatpy中未绑定的函数,可以参考新浪API给出的json地址在代码中进行自行绑定,调用自行绑定的函数时记得需将api做为第一个参数传递。对于Modules.py中未定义的变量类型,简单的可以借用一下tags类型,复杂的就只能自己在该脚本中添加相关类型啦。
引自:http://beauty.hit.edu.cn/myStudy/Product/doc.2011-10-16.4583711134
- 应用python编写简单新浪微博应用(二)
- 应用python编写简单新浪微博应用(一)
- 应用python编写简单新浪微博应用(一)
- 使用python进行新浪微博应用开发
- 新浪微博应用地址
- BigPipe 应用:新浪微博
- 新浪微博开放平台站内应用开发流程直播(二)
- Python:新浪微博应用开发简介(认证及授权部分)
- python实战--web.py实战(开发新浪微博应用)
- python实战--web.py实战(开发新浪微博应用)
- python编写的新浪微博爬虫
- ListView组件的应用(模拟新浪微博界面)
- 新浪微博站内应用开发(网站类)
- 使用python编写您的微博应用
- 新浪微博应用的demo入门
- 新浪微博API开发WEB应用
- 我的新浪微博应用
- 新浪微博应用开发入门
- VS "安装和部署项目"生成的快捷方式问题
- 聚簇索引与非聚簇索引的区别以及SQL Server查询优化技术
- 应用python编写简单新浪微博应用(一)
- WindowsPhone开发系列(官方教程已有中文字幕)
- DBgrid 第一列加入CheckBox,点击列头 全选/全消
- 应用python编写简单新浪微博应用(二)
- jquery/js 实现 标签 条码 一维码 Web页面 区域打印解决方案 实例
- 各种编程书籍
- Javascript代码规范
- windows程序设计——CreateProcess()
- 程序员面试题精选-翻转句子中单词的顺序[算法]
- JAVA中单例模式讲解
- mvc 一个controler 多个view
- 高性能建站指南URL