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中操作字符串之replace()方法的使用
May 19 Python
详解Django框架中的视图级缓存
Jul 23 Python
Python爬取网易云音乐上评论火爆的歌曲
Jan 19 Python
Python实现替换文件中指定内容的方法
Mar 19 Python
python3+PyQt5自定义视图详解
Apr 24 Python
在Python中增加和插入元素的示例
Nov 01 Python
浅谈python的输入输出,注释,基本数据类型
Apr 02 Python
Pandas之read_csv()读取文件跳过报错行的解决
Apr 21 Python
pycharm 激活码及使用方式的详细教程
May 12 Python
Python 实现微信自动回复的方法
Sep 11 Python
jupyter notebook远程访问不了的问题解决方法
Jan 11 Python
提取视频中的音频 Python只需要三行代码!
May 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
python中cPickle用法例子分享
Jan 03 #Python
You might like
消息持续发送的完整例子
2006/10/09 PHP
smarty 原来也不过如此~~呵呵
2006/11/25 PHP
php 页面执行时间计算代码
2008/12/04 PHP
把1316这个数表示成两个数的和,其中一个为13的倍数,另一个是11的倍数,求这两个数。
2011/06/24 PHP
PHP 提取图片img标记中的任意属性的简单实例
2013/12/10 PHP
PHP基于SMTP协议实现邮件发送实例代码
2017/04/27 PHP
js function定义函数的几种不错方法
2014/02/27 Javascript
node.js中的fs.openSync方法使用说明
2014/12/17 Javascript
Bootstrap零基础入门教程(三)
2016/07/18 Javascript
ReactNative-JS 调用原生方法实例代码
2016/10/08 Javascript
关于Bootstrap按钮组件消除黄框的方法
2017/05/19 Javascript
详解Javascript 中的 class、构造函数、工厂函数
2017/12/20 Javascript
Vue中computed、methods与watch的区别总结
2019/04/10 Javascript
js微信分享接口调用详解
2019/07/23 Javascript
vuex根据不同的用户权限展示不同的路由列表功能
2019/09/20 Javascript
vuex中store存储store.commit和store.dispatch的用法
2020/07/24 Javascript
H5 js点击按钮复制文本到粘贴板
2020/11/19 Javascript
Python实现读取字符串按列分配后按行输出示例
2018/04/17 Python
使用Python对微信好友进行数据分析
2018/06/27 Python
python pyheatmap包绘制热力图
2018/11/09 Python
selenium+python自动化测试之多窗口切换
2019/01/23 Python
对python For 循环的三种遍历方式解析
2019/02/01 Python
Python面向对象程序设计构造函数和析构函数用法分析
2019/04/12 Python
python基础知识(一)变量与简单数据类型详解
2019/04/17 Python
pyinstaller打包opencv和numpy程序运行错误解决
2019/08/16 Python
新百伦折扣店:Joe’s New Balance Outlet
2016/08/20 全球购物
周生生珠宝香港官网:Chow Sang Sang(香港及海外配送)
2019/09/05 全球购物
德国便宜的宠物店:Brekz.de
2020/10/23 全球购物
介绍一下Make? 为什么使用make
2016/07/31 面试题
护士试用期自我鉴定
2014/02/08 职场文书
公司晚会策划方案
2014/05/17 职场文书
2014年销售内勤工作总结
2014/12/01 职场文书
家长通知书家长意见
2014/12/30 职场文书
客房部经理岗位职责
2015/02/02 职场文书
反邪教教育心得体会
2016/01/15 职场文书
Python的代理类实现,控制访问和修改属性的权限你都了解吗
2022/03/21 Python