python发腾讯微博代码分享


Posted in Python onJanuary 10, 2014
import urllib.parse,os.path,time,sys,re,urllib.request
from http.client import HTTPSConnection
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
from PyQt5.QtWebKitWidgets import *
from PyQt5.QtNetwork import *
#path
ospath=sys.path[0]
if len(ospath)!=3:
    ospath+='\\'
ospath=ospath.replace('\\','/')
#api
class Api:
    def getOpenid(self,token):
        url="https://graph.qq.com/oauth2.0/me?access_token=%s" % token
        u=urllib.request.urlopen(url)
        data=u.read()
        try:
            data=data.decode('utf-8')
        except:
            data=data.decode('gbk')
        openid=re.findall('"openid":"(.+?)"',data)[0]
        return openid
    def qq(self,token,status,pic):
        fSize=os.path.getsize(pic)
        BOUNDARY="$-img-lufei-goodboy-$"
        CRLF='\r\n'
        data=[
            '--'+BOUNDARY,
            'Content-Disposition: form-data; name="access_token"',
            '',
            token,
            '--'+BOUNDARY,
            'Content-Disposition: form-data; name="openid"',
            '',
            self.getOpenid(token),
            '--'+BOUNDARY,
            'Content-Disposition: form-data; name="oauth_consumer_key"',
            '',
            '100451446',
            #status
            '--'+BOUNDARY,
            'Content-Disposition: form-data; name="content"',
            '',
            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('graph.qq.com')
        h.putrequest('POST','/t/add_pic_t')
        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')
#webview
class WebView(QWebView):
    token=None
    def __init__(self):
        super().__init__()
        self.resize(800,500)
        self.setWindowFlags(Qt.FramelessWindowHint|Qt.X11BypassWindowManagerHint|Qt.Tool)
        self.cookieJar=QNetworkCookieJar()
        self.page().networkAccessManager().setCookieJar(self.cookieJar)
        url="https://graph.qq.com/oauth2.0/authorize?response_type=code&client_id=%s&redirect_uri=%s&state=%s" % ('100451446','http://lufei.fboat.net/api/qq.php','---I---Love---You---')
        self.load(QUrl(url))
        #sigal
        self.loadProgress.connect(self.judge)
    def judge(self):
        url=re.findall(r"'(.+?)'",str(self.url()))[0]
        if url=='http://lufei.fboat.net/':
            for x in self.cookieJar.allCookies():
                if x.domain()=='lufei.fboat.net' and x.name()=='token':
                    self.token=re.findall("'(.+?)'",str(x.value()))[0]
            self.close()
#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,login
        self.line=QLineEdit()
        brows=QPushButton('打开')
        brows.clicked.connect(self.getFileName)
        submit=QPushButton('发表')
        submit.clicked.connect(self.submit)
        login=QPushButton('登录')
        login.clicked.connect(self.view)
        #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,1)
        layout.addWidget(login,2,1,1,1)
        #set
        self.setLayout(layout)
    def getFileName(self):
        fileName=QFileDialog.getOpenFileName()
        self.line.setText(fileName[0])
    def view(self):
        webView.show()
    def submit(self):
        status=self.editor.toPlainText()
        pic=self.line.text()
        self.editor.setText(api.qq(webView.token,status,pic))
app=QApplication(sys.argv)
webView=WebView()
api=Api()
dialog=Dialog()
dialog.show()
app.exec_()
Python 相关文章推荐
写了个监控nginx进程的Python脚本
May 10 Python
Python字符串详细介绍
May 09 Python
python 3利用BeautifulSoup抓取div标签的方法示例
May 28 Python
浅谈python装饰器探究与参数的领取
Dec 01 Python
python opencv 读取图片 返回图片某像素点的b,g,r值的实现方法
Jul 03 Python
阿里云ECS服务器部署django的方法
Aug 29 Python
用python写测试数据文件过程解析
Sep 25 Python
Python django搭建layui提交表单,表格,图标的实例
Nov 18 Python
pyenv虚拟环境管理python多版本和软件库的方法
Dec 26 Python
python基于三阶贝塞尔曲线的数据平滑算法
Dec 27 Python
keras处理欠拟合和过拟合的实例讲解
May 25 Python
python使用QQ邮箱实现自动发送邮件
Jun 22 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
python中cPickle用法例子分享
Jan 03 #Python
You might like
第四节 构造函数和析构函数 [4]
2006/10/09 PHP
php为字符串前后添加指定数量字符的方法
2015/05/04 PHP
PHP中Session可能会引起并发问题
2015/06/26 PHP
PHP实现根据图片色界在不同位置加水印的方法
2015/08/08 PHP
PHP将身份证正反面两张照片合成一张图片的代码
2017/04/08 PHP
JavaScript 学习笔记(十一)
2010/01/19 Javascript
js保留小数点后几位的写法
2014/01/03 Javascript
JavaScript Split()方法
2015/12/18 Javascript
js注入 黑客之路必备!
2016/09/14 Javascript
分享一个原生的JavaScript拖动方法
2016/09/25 Javascript
前端框架学习总结之Angular、React与Vue的比较详解
2017/03/14 Javascript
jQuery实现动态生成表格并为行绑定单击变色动作的方法
2017/04/17 jQuery
vue实现动态数据绑定
2017/04/28 Javascript
vue开发调试神器vue-devtools使用详解
2017/07/13 Javascript
详解使用vscode+es6写nodejs服务端调试配置
2017/09/21 NodeJs
js 图片转base64的方式(两种)
2018/04/24 Javascript
Vue表单及表单绑定方法
2018/09/04 Javascript
关于layui 实现点击按钮添加一行(方法渲染创建的table)
2019/09/29 Javascript
Openlayers显示地理位置坐标的方法
2020/09/28 Javascript
微信小程序实现自定义底部导航
2020/11/18 Javascript
[54:10]完美世界DOTA2联赛PWL S2 Magma vs FTD 第二场 11.29
2020/12/03 DOTA
python字符串排序方法
2014/08/29 Python
用python写个自动SSH登录远程服务器的小工具(实例)
2017/06/17 Python
python 拼接文件路径的方法
2018/10/23 Python
解决python中使用PYQT时中文乱码问题
2019/06/17 Python
python自动化测试无法启动谷歌浏览器问题
2019/10/10 Python
Python完全识别验证码自动登录实例详解
2019/11/24 Python
Python利用多线程同步锁实现多窗口订票系统(推荐)
2019/12/22 Python
马德里运动鞋商店:Nigra Mercato
2020/02/16 全球购物
2015年班组建设工作总结
2015/05/13 职场文书
跑出一片天观后感
2015/06/08 职场文书
个人自我鉴定怎么写?
2019/07/01 职场文书
手写Spirit防抖函数underscore和节流函数lodash
2022/03/22 Javascript
基于Python实现将列表数据生成折线图
2022/03/23 Python
《地。-关于地球的运动-》单行本第七集上市,小说家朝井辽献上期待又害怕的推荐文
2022/03/31 日漫
解决 redis 无法远程连接
2022/05/15 Redis