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 15 Python
Python使用爬虫猜密码
Feb 19 Python
django之session与分页(实例讲解)
Nov 13 Python
Python实现截取PDF文件中的几页代码实例
Mar 11 Python
Python中使用logging和traceback模块记录日志和跟踪异常
Apr 09 Python
Python实现京东秒杀功能代码
May 16 Python
Python 写了个新型冠状病毒疫情传播模拟程序
Feb 14 Python
python GUI库图形界面开发之PyQt5 MDI(多文档窗口)QMidArea详细使用方法与实例
Mar 05 Python
Python pip安装第三方库实现过程解析
Jul 09 Python
解决Python中导入自己写的类,被划红线,但不影响执行的问题
Jul 13 Python
使用pandas或numpy处理数据中的空值(np.isnan()/pd.isnull())
May 14 Python
PyTorch中permute的使用方法
Apr 26 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
全国FM电台频率大全 - 2 天津市
2020/03/11 无线电
PHP is_dir() 判断给定文件名是否是一个目录
2010/05/10 PHP
PHP操作xml代码
2010/06/17 PHP
精美漂亮的php分页类代码
2013/04/02 PHP
php使用for语句输出三角形的方法
2015/06/09 PHP
使用ltrace工具跟踪PHP库函数调用的方法
2016/04/25 PHP
PHP读书笔记整理_结构语句详解
2016/07/01 PHP
最佳JS代码编写的14条技巧
2011/01/09 Javascript
Node.js中使用mongoskin操作mongoDB实例
2014/09/28 Javascript
原生js和jquery分别实现横向导航菜单效果
2016/05/13 Javascript
javascript十六进制数字和ASCII字符之间的转换方法
2016/12/27 Javascript
基于bootstrap风格的弹框插件
2016/12/28 Javascript
EsLint入门学习教程
2017/02/17 Javascript
解决vue 打包发布去#和页面空白的问题
2018/09/04 Javascript
详解vue项目中实现图片裁剪功能
2019/06/07 Javascript
jQuery实现验证用户登录
2019/12/10 jQuery
详解Vue3 Composition API中的提取和重用逻辑
2020/04/29 Javascript
Vue作用域插槽实现方法及作用详解
2020/07/08 Javascript
pyside写ui界面入门示例
2014/01/22 Python
在Python中使用lambda高效操作列表的教程
2015/04/24 Python
Python selenium如何设置等待时间
2016/09/15 Python
python八大排序算法速度实例对比
2017/12/06 Python
Python实现GUI学生信息管理系统
2020/04/05 Python
浅谈python3.6的tkinter运行问题
2019/02/22 Python
利用python、tensorflow、opencv、pyqt5实现人脸实时签到系统
2019/09/25 Python
财务管理专业应届毕业生求职信
2013/09/22 职场文书
计算机专业个人求职信范例
2013/09/23 职场文书
涉外文秘个人求职的自我评价
2013/10/07 职场文书
自考生毕业自我鉴定
2013/10/10 职场文书
办理护照介绍信
2014/01/16 职场文书
暑期社会实践心得体会
2014/09/02 职场文书
个人工作作风整改措施思想汇报
2014/10/13 职场文书
干部作风建设工作总结
2014/10/29 职场文书
亮剑精神观后感
2015/06/05 职场文书
用Python远程登陆服务器的步骤
2021/04/16 Python
Mysql数据库手动及定时备份步骤
2021/11/07 MySQL