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之有点简约的元组
Sep 24 Python
python实现中文转换url编码的方法
Jun 14 Python
windows10系统中安装python3.x+scrapy教程
Nov 08 Python
ansible作为python模块库使用的方法实例
Jan 17 Python
django利用request id便于定位及给日志加上request_id
Aug 26 Python
学习python的前途 python挣钱
Feb 27 Python
Python Matplotlib实现三维数据的散点图绘制
Mar 19 Python
pyqt5、qtdesigner安装和环境设置教程
Sep 25 Python
使用Python和OpenCV检测图像中的物体并将物体裁剪下来
Oct 30 Python
Python散点图与折线图绘制过程解析
Nov 30 Python
Python如何使用函数做字典的值
Nov 30 Python
基于Python的接口自动化读写excel文件的方法
Jan 15 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
ftp类(example.php)
2006/10/09 PHP
PHP4中实现动态代理
2006/10/09 PHP
一个简单计数器的源代码
2006/10/09 PHP
jQuery 可以拖动的div实现代码 脚本之家修正版
2009/06/26 Javascript
开发插件的两个方法jquery.fn.extend与jquery.extend
2013/11/21 Javascript
jQuery中animate用法实例分析
2015/03/09 Javascript
JS去除iframe滚动条的方法
2015/04/01 Javascript
Node.js开发者必须了解的4个JS要点
2016/02/21 Javascript
Bootstrap carousel轮转图的使用实例详解
2016/05/17 Javascript
Bootstrap表格和栅格分页实例详解
2016/05/20 Javascript
JavaScript知识点总结(四)之逻辑OR运算符详解
2016/05/31 Javascript
iframe中使用jquery进行查找的方法【案例分析】
2016/06/17 Javascript
Javascript中级语法快速入手
2016/07/30 Javascript
JS动态计算移动端rem的解决方案
2016/10/14 Javascript
基于JavaScript中字符串的match与replace方法(详解)
2017/12/04 Javascript
iconfont的三种使用方式详解
2018/08/05 Javascript
JS使用Chrome浏览器实现调试线上代码
2020/07/23 Javascript
Python爬取国外天气预报网站的方法
2015/07/10 Python
django使用图片延时加载引起后台404错误
2017/04/18 Python
Django如何配置mysql数据库
2018/05/04 Python
Python读取系统文件夹内所有文件并统计数量的方法
2018/10/23 Python
Python设计模式之职责链模式原理与用法实例分析
2019/01/11 Python
Python Matplotlib实现三维数据的散点图绘制
2019/03/19 Python
在PYQT5中QscrollArea(滚动条)的使用方法
2019/06/14 Python
python实现ip地址的包含关系判断
2020/02/07 Python
Pycharm中切换pytorch的环境和配置的教程详解
2020/03/13 Python
python pip如何手动安装二进制包
2020/09/30 Python
简历的自荐信
2013/12/19 职场文书
户外宣传策划方案
2014/05/25 职场文书
大型公益活动策划方案
2014/08/20 职场文书
财务管理专业自荐书
2014/09/02 职场文书
Nginx 根据URL带的参数转发的实现
2021/04/01 Servers
如何使用JavaScript策略模式校验表单
2021/04/29 Javascript
Node与Python 双向通信的实现代码
2021/07/16 Javascript
mysql5.7的安装及Navicate长久免费使用的实现过程
2021/11/17 MySQL
PyTorch device与cuda.device用法
2022/04/03 Python