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 相关文章推荐
在Django中创建动态视图的教程
Jul 15 Python
python中enumerate函数遍历元素用法分析
Mar 11 Python
利用Python2下载单张图片与爬取网页图片实例代码
Dec 25 Python
Python简单实现查找一个字符串中最长不重复子串的方法
Mar 26 Python
终端命令查看TensorFlow版本号及路径的方法
Jun 13 Python
Python 编程速成(推荐)
Apr 15 Python
Python+threading模块对单个接口进行并发测试
Jun 25 Python
python 图像处理画一个正弦函数代码实例
Sep 10 Python
python运用sklearn实现KNN分类算法
Oct 16 Python
python DES加密与解密及hex输出和bs64格式输出的实现代码
Apr 13 Python
python time.strptime格式化实例详解
Feb 03 Python
基于python制作简易版学生信息管理系统
Apr 20 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
Linux下 php5 MySQL5 Apache2 phpMyAdmin ZendOptimizer安装与配置[图文]
2008/11/18 PHP
PHP $_FILES函数详解
2011/03/09 PHP
解析如何修改phpmyadmin中的默认登陆超时时间
2013/06/25 PHP
PHP ignore_user_abort函数详细介绍和使用实例
2014/07/15 PHP
php使用pdo连接sqlite3的配置示例
2016/05/27 PHP
PHP实现通过CURL上传文件功能示例
2018/05/30 PHP
PHP时间处理类操作示例
2018/09/05 PHP
js 变量类型转换常用函数与代码[比较全]
2009/12/01 Javascript
整理的比较全的event对像在ie与firefox浏览器中的区别
2013/11/25 Javascript
javascript获取select的当前值示例代码(兼容IE/Firefox/Opera/Chrome)
2013/12/17 Javascript
常见的原始JS选择器使用方法总结
2014/04/09 Javascript
JavaScript实现单击下拉框选择直接跳转页面的方法
2015/07/02 Javascript
JS从数组中随机取出几个数组元素的方法
2016/08/02 Javascript
JS实现倒计时图文效果
2018/11/17 Javascript
基于vue的验证码组件的示例代码
2019/01/22 Javascript
Vue数据双向绑定原理实例解析
2020/05/15 Javascript
jquery绑定事件 bind和on的用法与区别分析
2020/05/22 jQuery
JavaScript实现简易计算器小功能
2020/10/22 Javascript
ES5和ES6中类的区别总结
2020/12/21 Javascript
scrapy自定义pipeline类实现将采集数据保存到mongodb的方法
2015/04/16 Python
python 利用栈和队列模拟递归的过程
2018/05/29 Python
Python使用pylab库实现绘制直方图功能示例
2018/06/01 Python
Python实现多属性排序的方法
2018/12/05 Python
Python反爬虫技术之防止IP地址被封杀的讲解
2019/01/09 Python
解决在pycharm中显示额外的 figure 窗口问题
2019/01/15 Python
详解python3中用HTMLTestRunner.py报ImportError: No module named 'StringIO'如何解决
2019/08/27 Python
纯DOM+CSS3实现简单的小风车动画
2016/09/27 HTML / CSS
使用Html5、CSS实现文字阴影效果
2018/01/17 HTML / CSS
德国最大的拼图在线商店:Puzzle.de
2016/12/17 全球购物
英国鲜花递送:Blossoming Gifts
2020/07/10 全球购物
超市营业员岗位职责
2013/12/20 职场文书
公司承诺书怎么写
2014/05/24 职场文书
鸟的天堂导游词
2015/01/31 职场文书
用人单位聘用意向书
2015/05/11 职场文书
python机器学习Github已达8.9Kstars模型解释器LIME
2021/11/23 Python
Python编程中内置的NotImplemented类型的用法
2022/03/23 Python