• 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/

  • 相关阅读:
    HDU-1561
    POJ 1088
    UESTC-878
    CodeForces
    HDU 5753
    HDU 1568
    二分图入门题
    二分图匹配入门题
    树形dp入门
    UVA
  • 原文地址:https://www.cnblogs.com/GentlemanMod/p/3263531.html
Copyright © 2020-2023  润新知