python使用新浪微博api上传图片到微博示例


Posted in Python onJanuary 10, 2014
import urllib.parse,os.path,time,sys
from http.client import HTTPSConnection
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
#path
ospath=sys.path[0]
if len(ospath)!=3:
    ospath+='\\'
ospath=ospath.replace('\\','/')
#api
class Api:
    def sina(self,status,pic):
        fSize=os.path.getsize(pic)
        BOUNDARY="$-img-lufei-goodboy-$"
        CRLF='\r\n'
        data=[
            #token
            '--'+BOUNDARY,
            'Content-disposition: form-data; name="access_token"',
            '',
            'xxxxxxxxxxxxxxxxxxxxxxxxxxxx',#你的access_token
            #status
            '--'+BOUNDARY,
            'Content-disposition: form-data; name="status"',
            '',
            status,
            #pic
            '--'+BOUNDARY,
            'Content-disposition: form-data; name="pic"; filename="q_17.jpg"',
            'Content-type: image/jpeg',
            ''
        ]
        #utf-8
        data=(CRLF.join(data)+CRLF).encode('utf-8')
        closing='\r\n--'+BOUNDARY+'--\r\n'
        sumlen=len(data)+len(closing)+fSize
        #----------------------------------------
        h=HTTPSConnection('upload.api.weibo.com')
        h.putrequest('POST','/2/statuses/upload.json')
        h.putheader('Content-type','multipart/form-data; boundary=%s' % BOUNDARY)
        h.putheader('Content-length',sumlen)
        h.endheaders()
        h.send(data)
        f=open(pic,'rb')
        while True:
            data=f.read(12345)
            if not data:
                break
            h.send(data)
        f.close()
        h.send(closing.encode('utf-8'))
        r=h.getresponse()
        return r.read().decode('utf-8','ignore')
api=Api()
#ui
class Dialog(QDialog):
    def __init__(self):
        super().__init__()
        #icon,title
        self.setWindowIcon(QIcon(ospath+'weibo.ico'))
        self.setWindowTitle('weibo')
        #texteditor
        self.editor=QTextEdit()
        #textline,filebutton,submit
        self.line=QLineEdit()
        brows=QPushButton('打开')
        brows.clicked.connect(self.getFileName)
        submit=QPushButton('发表')
        submit.clicked.connect(self.submit)
        #layout
        layout=QGridLayout()
        layout.setContentsMargins(0,0,0,0)
        #addwidget
        layout.addWidget(self.editor,0,0,1,2)
        layout.addWidget(self.line,1,0,1,1)
        layout.addWidget(brows,1,1,1,1)
        layout.addWidget(submit,2,0,1,2)
        #set
        self.setLayout(layout)
    def getFileName(self):
        fileName=QFileDialog.getOpenFileName()
        self.line.setText(fileName[0])
    def submit(self):
        status=self.editor.toPlainText()
        pic=self.line.text()
        self.editor.setText(api.sina(status,pic))
app=QApplication(sys.argv)
dialog=Dialog()
dialog.show()
app.exec_()
Python 相关文章推荐
利用python代码写的12306订票代码
Dec 20 Python
浅谈python 线程池threadpool之实现
Nov 17 Python
python对list中的每个元素进行某种操作的方法
Jun 29 Python
详解python pandas 分组统计的方法
Jul 30 Python
Django实现CAS+OAuth2的方法示例
Oct 30 Python
python manage.py runserver流程解析
Nov 08 Python
在pycharm中实现删除bookmark
Feb 14 Python
Python3使用xlrd、xlwt处理Excel方法数据
Feb 28 Python
Python3 webservice接口测试代码详解
Jun 23 Python
selenium.webdriver中add_argument方法常用参数表
Apr 08 Python
Python词云的正确实现方法实例
May 08 Python
利用Python第三方库实现预测NBA比赛结果
Jun 21 Python
python发腾讯微博代码分享
Jan 10 #Python
python实现2014火车票查询代码分享
Jan 10 #Python
python抓取豆瓣图片并自动保存示例学习
Jan 10 #Python
python文件比较示例分享
Jan 10 #Python
python发送伪造的arp请求
Jan 09 #Python
python抓取京东价格分析京东商品价格走势
Jan 09 #Python
python实现电子词典
Apr 23 #Python
You might like
Zend Framework框架教程之Zend_Db_Table_Rowset用法实例分析
2016/03/21 PHP
PHP设计模式概论【概念、分类、原则等】
2020/05/01 PHP
offsetParent 算法分析
2010/04/05 Javascript
jQuery实现密保互斥问题解决方案
2013/08/16 Javascript
js字符串转成JSON
2013/11/07 Javascript
JS刷新当前页面的几种方法总结
2013/12/24 Javascript
jQuery使用之设置元素样式用法实例
2015/01/19 Javascript
JavaScript匿名函数用法分析
2015/02/13 Javascript
js读取并解析JSON类型数据的方法
2015/11/14 Javascript
js剪切板应用clipboardData实例解析
2016/05/29 Javascript
基于 flexible 的 Vue 组件:Toast -- 显示框效果
2017/12/26 Javascript
vue渲染时闪烁{{}}的问题及解决方法
2018/03/28 Javascript
Vue项目中使用Vux的安装过程
2018/05/01 Javascript
详解使用 Node.js 开发简单的脚手架工具
2018/06/08 Javascript
qrcode生成二维码微信长按无法识别问题的解决
2019/04/04 Javascript
koa2服务端使用jwt进行鉴权及路由权限分发的流程分析
2019/07/22 Javascript
javascript面向对象三大特征之多态实例详解
2019/07/24 Javascript
React生命周期原理与用法踩坑笔记
2020/04/28 Javascript
python使用PyGame绘制图像并保存为图片文件的方法
2015/04/24 Python
解决已经安装requests,却依然提示No module named requests问题
2018/05/18 Python
Tornado Web Server框架编写简易Python服务器
2018/07/28 Python
python远程连接MySQL数据库
2019/04/19 Python
pandas实现DataFrame显示最大行列,不省略显示实例
2019/12/26 Python
python日期与时间戳的各种转换示例
2020/02/12 Python
基于html5 canvas实现漫天飞雪效果实例
2014/09/10 HTML / CSS
美国畅销的跑步机品牌:ProForm
2017/02/06 全球购物
工商学院毕业生个人自我评价
2013/09/19 职场文书
好的自荐信包括什么内容
2013/11/07 职场文书
气象学专业个人求职信
2014/03/15 职场文书
市场部经理岗位职责
2014/04/10 职场文书
爱岗敬业演讲稿
2014/05/05 职场文书
2015年小学数学教师个人工作总结
2015/05/25 职场文书
消防演习感想
2015/08/10 职场文书
初中政治教师教学反思
2016/02/23 职场文书
python 使用Tensorflow训练BP神经网络实现鸢尾花分类
2021/05/12 Python
电脑关机速度很慢怎么办 提升电脑关机速度设置教程
2022/04/08 数码科技