zoukankan      html  css  js  c++  java
  • Python调用API发微博

    这几天准备入个树莓派,想用Python有规律的发微博报告当前的CPU温度,硬盘温度之类的

    于是先写好了,参考了很多python发微博的例子,不是用不了的就是代码看着难受(乱七八糟的代码风格),于是自己写了个!

    api_key填你申请的app_key (去渣浪微博开放平台申请)

    api_secret就是填申请的app_secret (key和secret可以暂时用我的)

    callback_url填你APP的授权回调页(你不介意的话可以用我的)

    userid 和 password就是你的用户名和密码

    #! /usr/bin/env python2
    # -*- coding: utf-8 -*-
    from weibo import APIClient
    import urllib
    import requests 
    
    # 个人信息
    __author__  = 'GentlemanMod'
    __email__   = 'GentlemanMod@gmail.com'
    __version__ = 'v1'
    
    # 开启调试输出(0 or 1)
    debug = 0
    
    # 构造headers信息
    user_agent = (
      'Mozilla/5.0 (Windows NT 5.1) AppleWebKit/536.11 (KHTML, like Gecko) '
      'Chrome/20.0.1132.57 Safari/536.11'
    )
    session = requests.session()
    session.headers['User-Agent'] = user_agent
    session.headers['Host'] = 'api.weibo.com'
    
    # 设置全局变量
    global api_key, api_secret, callback_url, userid, password
    api_key = '3495549134'
    api_secret = '514f3edcb22f31f58cf71144174d5d5f'
    callback_url = 'http://gentlemanmod.cnblos.com'
    userid = 'xxxxxx@xxxxx.com'
    password = 'xxxxxxxxxxxxx'
    
    # 初始化API client
    global client, referer_url
    client =  APIClient(app_key=api_key, app_secret=api_secret, redirect_uri=callback_url)
    referer_url = client.get_authorize_url()
    if debug: print 'referer_url: %s' % referer_url
    
    # 获取回调地址的code
    def get_code():
      # 构造post数据
      data = {
        'client_id': api_key,
        'redirect_uri': callback_url,
        'userId': userid,
        'passwd': password,
        'isLoginSina': '0',
        'action': 'submit',
        'response_type': 'code'
      }
    
      session.headers['Referer'] = referer_url
    
      # post数据到渣浪服务器
      resp = session.post(
        url = 'https://api.weibo.com/oauth2/authorize',
        data = data
      )
      
      if debug: print 'get url: %s' % resp.url
      if debug: print 'code is: %s' % resp.url[-32:]
      
      # 截取回调url中的code
      code = resp.url[-32:]
      return code
    
    
    # 发文字微博
    def weibo_text(text):
      # post构造的数据获取code
      code = get_code()
    
      # 获取渣浪授权令牌和期限
      token = client.request_access_token(code)
      client.set_access_token(token.access_token, token.expires_in)
    
      # 发微博
      client.statuses.update.post(status=text)
    
    # 发图片微博
    def weibo_pic(text, picture):
      # post构造的数据获取code
      code = get_code()
    
      # 获取渣浪授权令牌的期限
      token = client.request_access_token(code)
      client.set_access_token(token.access_token, token.expires_in)
    
      # 发图片微博
      Pic = open(picture, 'rb')
      client.statuses.upload.post(status=text, pic=Pic)
      Pic.close()
    
    if __name__ == '__main__':
      weibo_text('测试发布文字微博')
      weibo_pic('测试发布图片微博', '/home/michellgaby/img/mugi.jpg')

     参考:

    https://gist.github.com/mrluanma/3621775

    http://www.guokr.com/post/475564/

  • 相关阅读:
    图书管理系统---基于form组件和modelform改造添加和编辑
    Keepalived和Heartbeat
    SCAN IP 解释
    Configure Active DataGuard and DG BROKER
    Oracle 11gR2
    我在管理工作中積累的九種最重要的領導力 (李開復)
    公募基金公司超融合基础架构与同城灾备建设实践
    Oracle 11g RAC for LINUX rhel 6.X silent install(静默安装)
    11gR2 静默安装RAC 集群和数据库软件
    Setting Up Oracle GoldenGate 12
  • 原文地址:https://www.cnblogs.com/GentlemanMod/p/3263531.html
Copyright © 2011-2022 走看看