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实现查找系统盘中需要找的字符
Jul 14 Python
python 转换 Javascript %u 字符串为python unicode的代码
Sep 06 Python
深入理解 Python 中的多线程 新手必看
Nov 20 Python
Python实现PS滤镜的万花筒效果示例
Jan 23 Python
使用Python编写Prometheus监控的方法
Oct 15 Python
浅谈pyqt5中信号与槽的认识
Feb 17 Python
django 单表操作实例详解
Jul 30 Python
Tensorflow 模型转换 .pb convert to .lite实例
Feb 12 Python
python的列表List求均值和中位数实例
Mar 03 Python
使用Python获取当前工作目录和执行命令的位置
Mar 09 Python
Python字符串格式化常用手段及注意事项
Jun 17 Python
解决python 在for循环并且pop数组的时候会跳过某些元素的问题
Dec 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
星际争霸任务指南——人族
2020/03/04 星际争霸
PHP设计模式之责任链模式的深入解析
2013/06/13 PHP
php防止站外远程提交表单的方法
2014/10/20 PHP
PHPExcel导出2003和2007的excel文档功能示例
2017/01/04 PHP
php获取'/'传参的值简单方法
2017/07/13 PHP
Mac系统下搭建Nginx+php-fpm实例讲解
2020/12/15 PHP
用jquery ajax获取网站Alexa排名的代码
2009/12/12 Javascript
分页栏的web标准实现
2011/11/01 Javascript
JQuery获取样式中的background-color颜色值的问题
2013/08/20 Javascript
HTML页面登录时的JS验证方法
2014/05/28 Javascript
基于JavaScript实现定时跳转到指定页面
2016/01/01 Javascript
JS根据浏览器窗口大小实时动态改变网页文字大小的方法
2016/02/25 Javascript
浅析Bootstrap表格的使用
2016/06/23 Javascript
BootStrap学习系列之Bootstrap Typeahead 组件实现百度下拉效果(续)
2016/07/07 Javascript
JS判断form内所有表单是否为空的简单实例
2016/09/09 Javascript
Bootstrap modal 多弹窗之叠加显示不出弹窗问题的解决方案
2017/02/23 Javascript
微信小程序 websocket 实现SpringMVC+Spring+Mybatis
2017/08/04 Javascript
vue实现nav导航栏的方法
2017/12/13 Javascript
重置Redux的状态数据的方法实现
2019/11/18 Javascript
通过实例解析JavaScript常用排序算法
2020/09/02 Javascript
Django中使用Whoosh进行全文检索的方法
2019/03/31 Python
Python和Sublime整合过程图示
2019/12/25 Python
python numpy--数组的组合和分割实例
2020/02/24 Python
Python语法垃圾回收机制原理解析
2020/03/25 Python
Django后端按照日期查询的方法教程
2021/02/28 Python
css3实现的下拉菜单效果示例
2014/01/22 HTML / CSS
animation和transition的区别
2020/10/12 HTML / CSS
世界首屈一指的钓鱼用品商店:TackleDirect
2016/07/26 全球购物
澳大利亚领先的在线美容商店:Facial Co
2017/10/22 全球购物
elf彩妆英国官网:e.l.f. Cosmetics英国(美国平价彩妆品牌)
2017/11/02 全球购物
PHP开发的一般流程
2013/08/13 面试题
解释一下ruby中的特殊方法与特殊类
2013/02/26 面试题
俞敏洪一分钟演讲稿
2014/08/26 职场文书
公安派出所所长四风问题个人对照检查材料
2014/10/04 职场文书
授权委托书协议书
2014/10/16 职场文书
2015年司法局工作总结
2015/05/22 职场文书