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 相关文章推荐
python的Template使用指南
Sep 11 Python
Python 基础教程之str和repr的详解
Aug 20 Python
浅析python打包工具distutils、setuptools
Apr 20 Python
在python win系统下 打开TXT文件的实例
Apr 29 Python
Tensorflow 训练自己的数据集将数据直接导入到内存
Jun 19 Python
python读写LMDB文件的方法
Jul 02 Python
python3使用pandas获取股票数据的方法
Dec 22 Python
python3编写ThinkPHP命令执行Getshell的方法
Feb 26 Python
解决Python找不到ssl模块问题 No module named _ssl的方法
Apr 29 Python
Python批量修改图片分辨率的实例代码
Jul 04 Python
Django框架视图层URL映射与反向解析实例分析
Jul 29 Python
TensorFlow实现自定义Op方式
Feb 04 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
thinkPHP5框架实现基于ajax的分页功能示例
2018/06/12 PHP
php根据命令行参数生成配置文件详解
2019/03/15 PHP
php使用curl伪造浏览器访问操作示例
2019/09/30 PHP
window.onload 加载完毕的问题及解决方案(下)
2009/07/09 Javascript
js下写一个事件队列操作函数
2010/07/19 Javascript
js滚动条回到顶部的代码
2011/12/06 Javascript
javascript中局部变量和全局变量的区别详解
2015/02/27 Javascript
js控制文本框只输入数字和小数点的方法
2015/03/10 Javascript
vuejs开发组件分享之H5图片上传、压缩及拍照旋转的问题处理
2017/03/06 Javascript
基于hover的用法实例(推荐)
2017/07/04 Javascript
Vue三种常用传值示例(父传子、子传父、非父子)
2018/07/24 Javascript
vue基于element的区间选择组件
2018/09/07 Javascript
javascript判断一个变量是数组还是对象
2019/04/10 Javascript
关于js陀螺仪的理解分析
2019/04/11 Javascript
Vue组件简易模拟实现购物车
2020/12/21 Vue.js
[41:54]2018DOTA2亚洲邀请赛 4.1 小组赛A组加赛 TNC vs Liquid
2018/04/03 DOTA
[33:42]LGD vs OG 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
详解Python函数作用域的LEGB顺序
2016/05/14 Python
TF-IDF与余弦相似性的应用(一) 自动提取关键词
2017/12/21 Python
深入浅析Python2.x和3.x版本的主要区别
2018/11/30 Python
python实现输入的数据在地图上生成热力图效果
2019/12/06 Python
TENSORFLOW变量作用域(VARIABLE SCOPE)
2020/01/10 Python
Python 通过监听端口实现唯一脚本运行方式
2020/05/05 Python
pycharm配置python 设置pip安装源为豆瓣源
2021/02/05 Python
Reebonz中国官网:新加坡奢侈品购物网站
2017/03/17 全球购物
澳大利亚鞋仓库:Shoe Warehouse
2019/07/25 全球购物
荷兰睡眠专家:Beter Bed
2020/11/23 全球购物
如何让Java程序执行效率更高
2014/06/25 面试题
南京软件公司的.net程序员笔试题
2014/08/31 面试题
创建学习型党组织实施方案
2014/03/29 职场文书
国庆节演讲稿
2014/05/27 职场文书
低碳环保演讲稿
2014/08/28 职场文书
党纪处分决定书
2015/06/24 职场文书
教师廉政准则心得体会
2016/01/20 职场文书
Golang 正则匹配效率详解
2021/04/25 Golang
python用tkinter开发的扫雷游戏
2021/06/01 Python