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之入门(二)基本数据类型
May 25 Python
python选择排序算法实例总结
Jul 01 Python
Java及python正则表达式详解
Dec 27 Python
Python 删除整个文本中的空格,并实现按行显示
Jul 24 Python
浅析python3字符串格式化format()函数的简单用法
Dec 07 Python
啥是佩奇?使用Python自动绘画小猪佩奇的代码实例
Feb 20 Python
python Elasticsearch索引建立和数据的上传详解
Aug 04 Python
基于python操作ES实例详解
Nov 16 Python
基于FME使用Python过程图解
May 13 Python
基于python实现matlab filter函数过程详解
Jun 08 Python
使用matplotlib的pyplot模块绘图的实现示例
Jul 12 Python
python中count函数知识点浅析
Dec 17 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一句话cmdshell新型 (非一句话木马)
2009/04/18 PHP
PHP闭包(Closure)使用详解
2013/05/02 PHP
PHP载入图像imagecreatefrom_gif_jpeg_png系列函数用法分析
2016/11/14 PHP
laravel-admin 后台表格筛选设置默认的查询日期方法
2019/10/03 PHP
js变量作用域及可访问性的探讨
2006/11/23 Javascript
javascript 获取元素位置的快速方法 getBoundingClientRect()
2009/11/26 Javascript
我的javascript 函数链之演变
2011/04/07 Javascript
Javascript脚本实现静态网页加密实例代码
2013/11/05 Javascript
jQuery中:first选择器用法实例
2014/12/30 Javascript
利用jQuery中的ajax分页实现代码
2016/02/25 Javascript
第六篇Bootstrap表格样式介绍
2016/06/21 Javascript
jquery实现用户登陆界面(示例讲解)
2017/09/06 jQuery
js实现前面自动补全位数的方法
2018/10/10 Javascript
js实现input密码框显示/隐藏功能
2020/09/10 Javascript
小程序实现左右来回滚动字幕效果
2018/12/28 Javascript
websocket4.0+typescript 实现热更新的方法
2019/08/14 Javascript
jquery实现淡入淡出轮播图效果
2020/12/13 jQuery
Django model序列化为json的方法示例
2018/10/16 Python
python3+PyQt5 使用三种不同的简便项窗口部件显示数据的方法
2019/06/17 Python
Django在admin后台集成TinyMCE富文本编辑器的例子
2019/08/09 Python
python logging添加filter教程
2019/12/24 Python
戛纳奢侈品商店:Jacques Loup法国
2019/11/04 全球购物
澳大利亚领先的亚麻品牌:Bed Threads
2019/12/16 全球购物
员工试用期考核自我鉴定
2014/04/13 职场文书
美丽家庭事迹材料
2014/05/03 职场文书
基层党员干部四风问题整改方向和措施
2014/09/25 职场文书
2014年纪检部工作总结
2014/11/12 职场文书
2014五年级班主任工作总结
2014/12/05 职场文书
办公用品质量保证书
2015/05/11 职场文书
运动员入场前导词
2015/07/20 职场文书
2015年清剿火患专项行动工作总结
2015/07/27 职场文书
2016年中秋祝酒词
2015/11/26 职场文书
MySQL 时间类型的选择
2021/06/05 MySQL
为什么MySQL 删除表数据 磁盘空间还一直被占用
2021/10/16 MySQL
德生TECSUN S-2000使用手册文字版
2022/05/10 无线电
如何让你的Nginx支持分布式追踪详解
2022/07/07 Servers