返回顶部

收藏

基于python和树莓派的微博机器人(进阶篇:能够发图片微博)

更多
# -*- coding: utf-8 -*-
#from weibopy.api import API
from weibo import APIClient
import sys,os,urllib,urllib2,cookielib,httplib
import webbrowser
import urlparse

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

    client = APIClient(app_key=APP_KEY, app_secret=APP_SECRET, redirect_uri=CALLBACK_URL)
    referer_url = client.get_authorize_url()
    print "referer url is : %s" % referer_url

    cookies = urllib2.HTTPCookieProcessor()
    opener = urllib2.build_opener(cookies)
    urllib2.install_opener(opener)

    postdata = {"client_id": APP_KEY,
        "redirect_uri": CALLBACK_URL,
        "userId": USERID,
        "passwd": PASSWD,
        "isLoginSina": "0",
        "action": "submit",
        "response_type": "code",
    }

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

    req = urllib2.Request(
        url = AUTH_URL,
        data = urllib.urlencode(postdata),
        headers = headers
    )
    try:
        resp = urllib2.urlopen(req)
        #print "callback url is : %s" % resp.geturl()
        code = resp.geturl()[-32:]
        #print "code is : %s" % resp.geturl()[-32:]
    except Exception, e:
        print e
    return code

def begin():
    APP_KEY = 'xxxxxxxx' # app key
    APP_SECRET = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' # app secret
    CALLBACK_URL = 'https://api.weibo.com/oauth2/default.html' # callback url

    client = APIClient(app_key=APP_KEY, app_secret=APP_SECRET, redirect_uri=CALLBACK_URL)

    code = get_code()

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

    client.set_access_token(access_token, expires_in)

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

    #发图片微博
    f = open('C:/pic/test.jpg', 'rb')
    r = client.statuses.upload.post(status=u'测试OAuth 2.0带图片发微博', pic=f)
    f.close() # APIClient不会自动关闭文件,需要手动关闭

begin() 

标签:python,微博,树莓派

收藏

0人收藏

支持

0

反对

0

相关聚客文章
  1. caroline@linux.cn (c 发表 2016-12-23 01:30:00 [图灵赠书]Python圣诞狂欢周,微博转发赠书
  2. 博主 发表 2013-01-07 20:28:00 主流微博平台sdk的python封装
  3. 博主 发表 2014-03-17 16:00:00 Python模拟新浪微博登录
  4. 莫扎特 发表 2016-09-17 05:51:54 微博爬虫开源项目汇总大全
  5. 博主 发表 2013-01-07 20:28:00 主流微博平台sdk的python封装
  6. ksc 发表 2014-03-11 05:47:04 给树莓派添加重启关机按钮
  7. 博主 发表 2013-01-09 16:00:00 树莓派上搭建基于Python+web.py+fastcgi+lighttpd的网站
  8. naich 发表 2013-03-31 16:09:04 中文微博情绪极性
  9. ksc 发表 2014-03-11 05:47:04 给树莓派添加重启关机按钮
  10. 博主 发表 2011-06-15 00:00:00 WeiBoPay
  11. mdjhny 发表 2013-01-14 16:00:00 在Pelican博客侧边栏中显示新浪微博图标
  12. 博主 发表 2013-03-21 21:28:25 Python模拟新浪微博登录

发表评论