6回答

0收藏

[原创] 基于python和树莓派的微博机器人(进阶篇:能够发图片微...

Raspberry Pi Raspberry Pi 9109 人阅读 | 6 人回复 | 2013-07-11

本帖最后由 powerdruy 于 2013-7-11 09:51 编辑
  1. # -*- coding: utf-8 -*-
  2. #from weibopy.api import API
  3. from weibo import APIClient
  4. import sys,os,urllib,urllib2,cookielib,httplib
  5. import webbrowser
  6. import urlparse

  7. def get_code():   #模拟授权并且获取回调地址上的code,以获得acces token和token过期的UNIX时间
  8.     APP_KEY = 'xxxxxxxxxx'   #你申请的APP_KEY
  9.     APP_SECRET = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxx' #你申请的APP_SECRET   
  10.     CALLBACK_URL = 'https://api.weibo.com/oauth2/default.html'  #回调地址,可以用这个默认地址
  11.     AUTH_URL = 'https://api.weibo.com/oauth2/authorize'
  12.     USERID = 'xxxx@xxx.com'     #微博账号
  13.     PASSWD = 'xxxxxx'           #微博密码

  14.     client = APIClient(app_key=APP_KEY, app_secret=APP_SECRET, redirect_uri=CALLBACK_URL)
  15.     referer_url = client.get_authorize_url()
  16.     print "referer url is : %s" % referer_url
  17.    
  18.     cookies = urllib2.HTTPCookieProcessor()
  19.     opener = urllib2.build_opener(cookies)
  20.     urllib2.install_opener(opener)

  21.     postdata = {"client_id": APP_KEY,
  22.              "redirect_uri": CALLBACK_URL,
  23.              "userId": USERID,
  24.              "passwd": PASSWD,
  25.              "isLoginSina": "0",
  26.              "action": "submit",
  27.              "response_type": "code",
  28.              }

  29.     headers = {"User-Agent": "Mozilla/5.0 (Windows NT 6.1; rv:11.0) Gecko/20100101 Firefox/11.0",
  30.                "Host": "api.weibo.com",
  31.                "Referer": referer_url
  32.              }

  33.     req  = urllib2.Request(
  34.                            url = AUTH_URL,
  35.                            data = urllib.urlencode(postdata),
  36.                            headers = headers
  37.                            )
  38.     try:
  39.         resp = urllib2.urlopen(req)
  40.         #print "callback url is : %s" % resp.geturl()
  41.         code = resp.geturl()[-32:]
  42.         #print "code is : %s" % resp.geturl()[-32:]
  43.     except Exception, e:
  44.         print e
  45.     return code

  46. def begin():

  47.     APP_KEY = 'xxxxxxxx'                          # app key
  48.     APP_SECRET = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' # app secret
  49.     CALLBACK_URL = 'https://api.weibo.com/oauth2/default.html'     # callback url
  50.    
  51.     client = APIClient(app_key=APP_KEY, app_secret=APP_SECRET, redirect_uri=CALLBACK_URL)

  52.     code = get_code()

  53.     r = client.request_access_token(code)
  54.     print r
  55.     access_token = r.access_token # 新浪返回的token,类似abc123xyz456
  56.     expires_in = r.expires_in # token过期的UNIX时间

  57.     client.set_access_token(access_token, expires_in)

  58.     #发普通微博
  59.     client.statuses.update.post(status=u'test')

  60.     #发图片微博
  61.     f = open('C:/pic/test.jpg', 'rb')
  62.     r = client.statuses.upload.post(status=u'测试OAuth 2.0带图片发微博', pic=f)
  63.     f.close() # APIClient不会自动关闭文件,需要手动关闭
  64.    
  65. begin()   
复制代码
最近板子好多啊,玩都玩不过来了,我看可以开个板子铺了
分享到:
回复

使用道具 举报

回答|共 6 个

倒序浏览

沙发

powerdruy

发表于 2013-7-11 09:48:17 | 只看该作者

1楼是PYTHON的源码
下面我来教大家如何使用
最近板子好多啊,玩都玩不过来了,我看可以开个板子铺了
板凳

powerdruy

发表于 2013-7-11 09:49:35 | 只看该作者

首先你得有树莓派,还要去申请一个新浪微博的APP,还要再树莓派的linux下装好DS18B20的驱动。
以上内容参加以前的初级帖子
https://www.cirmall.com/bbs/forum.php?mod=viewthread&tid=11341

之前的初级帖子是模拟浏览器去提交请求,可以做到发普通的微博,但是我一直搞不清发图片微博的POST请求该如何构造,于是我就打算直接采用新浪微博的PYTHON SDK来实现这个功能。

申请了新浪的APP后,自然就会得到APP_KEY和APP_SECRET,填入1楼的代码中,再填入自己的微博账号密码,最后一点很重要,具体看图所示



之后就可以直接用SDK里的API去干你想干的事了,发图片,发微博还有别的balalbalala,具体可以参考,这是SDK作者的github https://github.com/michaelliao/sinaweibopy/wiki/OAuth2-HOWTO
最近板子好多啊,玩都玩不过来了,我看可以开个板子铺了
地板

powerdruy

发表于 2013-7-11 09:51:03 | 只看该作者

预告后面会上传一个用树莓派配合摄像头自动发照片的shell脚本,需要用到的内容:DS18B20的读取脚本,摄像头拍照的脚本,已经上面的发微博的脚本

先发一个预览给大家看看


最近板子好多啊,玩都玩不过来了,我看可以开个板子铺了
5#

Lin_811

发表于 2013-7-11 09:57:19 | 只看该作者

                                       
6#

dzcn

发表于 2013-7-11 10:14:27 | 只看该作者

这个要顶
7#

GY@艳

发表于 2013-7-11 10:48:24 | 只看该作者

{:soso_e179:}必须得顶。
爱板  爱板  爱板     https://www.cirmall.com
您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条