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验证码识别实例代码
Feb 03 Python
使用Python向DataFrame中指定位置添加一列或多列的方法
Jan 29 Python
python3.5安装python3-tk详解
Apr 26 Python
PyCharm安装Markdown插件的两种方法
Jun 24 Python
Python autoescape标签用法解析
Jan 17 Python
python输出第n个默尼森数的实现示例
Mar 08 Python
Python如何将函数值赋给变量
Apr 28 Python
Python requests模块安装及使用教程图解
Jun 30 Python
Python实现http接口自动化测试的示例代码
Oct 09 Python
pycharm 2020.2.4 pip install Flask 报错 Error:Non-zero exit code的问题
Dec 04 Python
pytorch锁死在dataloader(训练时卡死)
May 28 Python
Windows安装Anaconda3的方法及使用过程详解
Jun 11 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
使用PHP维护文件系统
2006/10/09 PHP
深入了解php4(1)--回到未来
2006/10/09 PHP
PHP 面向对象详解
2012/09/13 PHP
PHP IE中下载附件问题解决方法
2014/01/07 PHP
php自动提交表单的方法(基于fsockopen与curl)
2016/05/09 PHP
thinkPHP5框架分页样式类完整示例
2018/09/01 PHP
xml 与javascript结合的问题解决方法
2007/03/24 Javascript
用JavaScript隐藏控件的方法
2009/09/21 Javascript
chrome原生方法之数组
2011/11/30 Javascript
js前台分页显示后端JAVA数据响应
2013/03/18 Javascript
javascript时间函数大全
2014/06/30 Javascript
5款JavaScript代码压缩工具推荐
2014/07/07 Javascript
javascript中一些util方法汇总
2015/06/10 Javascript
jQueryUI中的datepicker使用方法详解
2016/05/25 Javascript
JS判断iframe是否加载完成的方法
2016/08/03 Javascript
AngularJs bootstrap详解及示例代码
2016/09/01 Javascript
使用jquery判断一个元素是否含有一个指定的类(class)实例
2017/02/12 Javascript
React中的refs的使用教程
2018/02/13 Javascript
JavaScript中的E-mail 地址格式验证
2018/03/28 Javascript
实例讲解Vue.js中router传参
2018/04/22 Javascript
jQuery AJAX与jQuery事件的分析讲解
2019/02/18 jQuery
原生js实现的观察者和订阅者模式简单示例
2020/04/18 Javascript
VsCode里的Vue模板的实现
2020/08/12 Javascript
实现vuex原理的示例
2020/10/21 Javascript
Python3.x和Python2.x的区别介绍
2013/02/12 Python
python pandas修改列属性的方法详解
2018/06/09 Python
详解Python3中ceil()函数用法
2019/02/19 Python
python实现画出e指数函数的图像
2019/11/21 Python
python中图像通道分离与合并实例
2020/01/17 Python
Python 随机生成测试数据的模块:faker基本使用方法详解
2020/04/09 Python
JD Sports荷兰:英国领先的运动时尚零售商
2020/03/13 全球购物
2014学生会工作总结报告
2014/12/02 职场文书
公司奖励通知
2015/04/21 职场文书
单位考核鉴定意见
2015/06/05 职场文书
2016母亲节感恩话语
2015/12/09 职场文书
员工工作心得体会
2019/05/07 职场文书