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 文件读写操作实例详解
Mar 12 Python
Python比较文件夹比另一同名文件夹多出的文件并复制出来的方法
Mar 05 Python
python实现统计代码行数的方法
May 22 Python
Python 字符串大小写转换的简单实例
Jan 21 Python
Python编程之Re模块下的函数介绍
Oct 28 Python
Python2实现的图片文本识别功能详解
Jul 11 Python
使用OpenCV实现仿射变换—缩放功能
Aug 29 Python
Python qrcode 生成一个二维码的实例详解
Feb 12 Python
Python通过socketserver处理多个链接
Mar 18 Python
opencv之颜色过滤只留下图片中的红色区域操作
Jun 05 Python
基于Python3读写INI配置文件过程解析
Jul 23 Python
PyCharm 解决找不到新打开项目的窗口问题
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
解析Linux下Varnish缓存的配置优化
2013/06/20 PHP
PHPAnalysis中文分词类详解
2014/06/13 PHP
PHP关联数组实现根据元素值删除元素的方法
2015/06/26 PHP
js nextSibling属性和previousSibling属性概述及使用注意
2013/02/16 Javascript
利用jQuery简单实现产品展示图片左右滚动功能(示例代码)
2014/01/02 Javascript
JS数组(Array)处理函数整理
2014/12/07 Javascript
基于jquery实现页面滚动时顶部导航显示隐藏
2020/04/20 Javascript
js实现表单及时验证功能 用户信息立即验证
2016/09/13 Javascript
基于nodejs 的多页面爬虫实例代码
2017/05/31 NodeJs
react-router4 嵌套路由的使用方法
2017/07/24 Javascript
JS实现的全排列组合算法示例
2017/10/09 Javascript
Js和VUE实现跑马灯效果
2020/05/25 Javascript
2分钟实现一个Vue实时直播系统的示例代码
2020/06/05 Javascript
jQuery-App输入框实现实时搜索
2020/11/19 jQuery
[51:26]VP vs VG 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
Python有参函数使用代码实例
2020/01/06 Python
Django 批量插入数据的实现方法
2020/01/12 Python
使用Python打造一款间谍程序的流程分析
2020/02/21 Python
如何使用python的ctypes调用医保中心的dll动态库下载医保中心的账单
2020/05/24 Python
python相对企业语言优势在哪
2020/06/12 Python
CSS3 文字动画效果
2020/11/12 HTML / CSS
世界上最大的曲棍球商店:Pro Hockey Life
2017/10/30 全球购物
世界各地的当地人的食物体验:Eatwith
2019/07/26 全球购物
Nobody Denim官网:购买高级女士牛仔裤
2021/03/15 全球购物
华为慧通面试题
2012/09/11 面试题
如何将无状态会话Bean发布为WEB服务,只有无状态会话Bean可以发布为WEB服务?
2015/12/03 面试题
一份恶作剧的检讨书
2014/09/13 职场文书
中学生检讨书范文
2014/11/03 职场文书
2015年新学期寄语
2015/02/26 职场文书
目标责任书格式范文
2015/05/11 职场文书
公安机关起诉意见书
2015/05/20 职场文书
跳高加油稿
2015/07/21 职场文书
springboot如何接收application/x-www-form-urlencoded类型的请求
2021/11/02 Java/Android
js判断两个数组相等的5种方法
2022/05/06 Javascript
CentOS7环境下MySQL8常用命令小结
2022/06/10 Servers
Java中的Kotlin 内部类原理
2022/06/16 Java/Android