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抓取豆瓣图片并自动保存示例学习
Jan 10 Python
Python实现简单截取中文字符串的方法
Jun 15 Python
Python实现TCP/IP协议下的端口转发及重定向示例
Jun 14 Python
利用Python实现命令行版的火车票查看器
Aug 05 Python
python中实现迭代器(iterator)的方法示例
Jan 19 Python
python交互式图形编程实例(一)
Nov 17 Python
python安装模块如何通过setup.py安装(超简单)
May 05 Python
TensorFlow设置日志级别的几种方式小结
Feb 04 Python
python实现数字炸弹游戏
Jul 17 Python
Tensorflow与RNN、双向LSTM等的踩坑记录及解决
May 31 Python
Python使用DFA算法过滤内容敏感词
Apr 22 Python
Python+DeOldify实现老照片上色功能
Jun 21 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判断文件是否存在、是否可读、目录是否存在的代码
2012/10/03 PHP
PHP内核探索:变量概述
2014/01/30 PHP
ThinkPHP CURD方法之where方法详解
2014/06/18 PHP
php获取数组元素中头一个数组元素值的实现方法
2014/12/20 PHP
php中memcache 基本操作实例
2015/05/17 PHP
PHP 实现重载
2021/03/09 PHP
用javascript连接access数据库的方法
2006/11/17 Javascript
用jQuery获取IE9下拉框默认值问题探讨
2013/07/22 Javascript
jQuery统计指定子元素数量的方法
2015/03/17 Javascript
javascript实现简单的进度条
2015/07/02 Javascript
js实现获取当前时间是本月第几周的方法
2015/08/11 Javascript
WebGL利用FBO完成立方体贴图效果完整实例(附demo源码下载)
2016/01/26 Javascript
JS回调函数简单用法示例
2017/02/09 Javascript
vue 2.0路由之路由嵌套示例详解
2017/05/08 Javascript
微信小程序开发中的疑问解答汇总
2017/07/03 Javascript
JS设计模式之命令模式概念与用法分析
2018/02/06 Javascript
Node.js Koa2使用JWT进行鉴权的方法示例
2018/08/17 Javascript
Vue.directive使用注意(小结)
2018/08/31 Javascript
一文读懂ES7中的javascript修饰器
2019/05/06 Javascript
ionic2.0双击返回键退出应用
2019/09/17 Javascript
解决Idea、WebStorm下使用Vue cli脚手架项目无法使用Webpack别名的问题
2019/10/11 Javascript
vue中的过滤器及其时间格式化问题
2020/04/09 Javascript
微信小程序scroll-view实现滚动到锚点左侧导航栏点餐功能(点击种类,滚动到锚点)
2020/06/11 Javascript
JS将指定的某个字符全部转换为其他字符实例代码
2020/10/13 Javascript
Tensorflow中的图(tf.Graph)和会话(tf.Session)的实现
2020/04/22 Python
Python实现发票自动校核微信机器人的方法
2020/05/22 Python
美国最大网上鞋店:Zappos
2016/07/25 全球购物
过滤器的用法
2013/10/08 面试题
房产公证书范本
2014/04/10 职场文书
节能减耗标语
2014/06/21 职场文书
党的群众路线教育实践活动个人整改方案
2014/09/21 职场文书
2014年旅游局法制宣传日活动总结
2014/11/01 职场文书
给领导敬酒词
2015/08/12 职场文书
2016年师德先进个人事迹材料
2016/02/29 职场文书
2019入党申请书格式和范文
2019/06/25 职场文书
解析laravel使用workerman用户交互、服务器交互
2021/04/28 PHP