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实现计算文件夹下.h和.cpp文件的总行数
Apr 23 Python
Python文件操作,open读写文件,追加文本内容实例
Dec 14 Python
Python json 错误xx is not JSON serializable解决办法
Mar 15 Python
python 2.7.13 安装配置方法图文教程
Sep 18 Python
详解python 爬取12306验证码
May 10 Python
Python字典中的值为列表或字典的构造实例
Dec 16 Python
jupyter notebook插入本地图片的实现
Apr 13 Python
如何在python中执行另一个py文件
Apr 30 Python
Python3实现个位数字和十位数字对调, 其乘积不变
May 03 Python
keras 自定义loss层+接受输入实例
Jun 28 Python
Python爬取科目四考试题库的方法实现
Mar 30 Python
python+opencv实现视频抽帧示例代码
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+mysql实现无限级分类 | 树型显示分类关系
2006/11/19 PHP
phpinfo 系统查看参数函数代码
2009/06/05 PHP
php中关于socket的系列函数总结
2015/05/18 PHP
修复ShopNC使用QQ 互联时提示100010 错误
2015/11/08 PHP
PHP用户注册邮件激活账户的实现代码
2017/05/31 PHP
javascript两种function的定义介绍及区别说明
2013/05/02 Javascript
微信小程序 页面跳转传参详解
2016/10/28 Javascript
百度地图去掉marker覆盖物或者去掉maker的label文字方法
2018/01/26 Javascript
AngularJS select加载数据选中默认值的方法
2018/02/28 Javascript
angularjs select 赋值 ng-options配置方法
2018/02/28 Javascript
vue从一个页面跳转到另一个页面并携带参数的解决方法
2019/08/12 Javascript
CountUp.js数字滚动插件使用方法详解
2019/10/17 Javascript
JS实现纸牌发牌动画
2021/01/19 Javascript
python实现多线程采集的2个代码例子
2014/07/07 Python
Python科学计算包numpy用法实例详解
2018/02/08 Python
对Python3.6 IDLE常用快捷键介绍
2018/07/16 Python
Django实现表单验证
2018/09/08 Python
python异常触发及自定义异常类解析
2019/08/06 Python
Python学习笔记之集合的概念和简单使用示例
2019/08/22 Python
python中Lambda表达式详解
2019/11/20 Python
Python列表切片常用操作实例解析
2019/12/16 Python
Python稀疏矩阵及参数保存代码实现
2020/04/18 Python
python和node.js生成当前时间戳的示例
2020/09/29 Python
python Gabor滤波器讲解
2020/10/26 Python
canvas仿写贝塞尔曲线的示例代码
2017/12/29 HTML / CSS
html2 canvas生成清晰的图片实现打印功能
2019/09/23 HTML / CSS
美国最受欢迎的童装品牌之一:The Children’s Place
2016/07/23 全球购物
TripAdvisor斯洛伐克:阅读评论、比较价格和酒店预订
2018/04/25 全球购物
暑假家长评语大全
2014/04/17 职场文书
环保倡议书300字
2014/05/15 职场文书
党员干部作风建设思想汇报范文
2014/10/25 职场文书
2015年毕业实习工作总结
2014/12/12 职场文书
巾帼标兵事迹材料
2014/12/26 职场文书
OpenCV-Python实现怀旧滤镜与连环画滤镜
2021/06/09 Python
quickjs 封装 JavaScript 沙箱详情
2021/11/02 Javascript
nginx设置资源请求目录的方式详解
2022/05/30 Servers