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 相关文章推荐
可用于监控 mysql Master Slave 状态的python代码
Feb 10 Python
纯Python开发的nosql数据库CodernityDB介绍和使用实例
Oct 23 Python
python实现批量修改文件名代码
Sep 10 Python
Python编程实现二分法和牛顿迭代法求平方根代码
Dec 04 Python
python微信跳一跳游戏辅助代码解析
Jan 29 Python
Python matplotlib通过plt.scatter画空心圆标记出特定的点方法
Dec 13 Python
python获取交互式ssh shell的方法
Feb 14 Python
python实现简单银行管理系统
Oct 25 Python
python实现简单俄罗斯方块
Mar 13 Python
Python 实现国产SM3加密算法的示例代码
Sep 21 Python
利用python Pandas实现批量拆分Excel与合并Excel
May 23 Python
opencv深入浅出了解机器学习和深度学习
Mar 17 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
匹配csdn用户数据库与官方用户的重合度并将重叠部分的用户筛选出来
2011/12/25 PHP
PHP的命令行命令使用指南
2015/08/18 PHP
laravel-admin的多级联动方法
2019/09/30 PHP
fckeditor 获取文本框值的实现代码
2009/02/09 Javascript
JavaScript之引用类型介绍
2012/08/10 Javascript
JavaScript中switch语句的用法详解
2015/06/03 Javascript
JS实现单击输入框弹出选择框效果完整实例
2015/12/14 Javascript
JavaScript知识点总结之如何提高性能
2016/01/15 Javascript
详解Javascript中prototype属性(推荐)
2016/09/03 Javascript
想学习javascript JS和jQuery哪个重要 先学哪个
2016/12/11 Javascript
解决URL地址中的中文乱码问题的办法
2017/02/10 Javascript
JS实现的简单图片切换功能示例【测试可用】
2017/02/14 Javascript
angular中使用Socket.io实例代码
2017/06/03 Javascript
jQuery、layer实现弹出层的打开、关闭功能
2017/06/28 jQuery
详解nodejs http请求相关总结
2019/03/31 NodeJs
简单谈谈javascript高级特性
2019/09/04 Javascript
Node.js API详解之 util模块用法实例分析
2020/05/09 Javascript
Python访问MySQL封装的常用类实例
2014/11/11 Python
python使用wxPython打开并播放wav文件的方法
2015/04/24 Python
Python使用openpyxl读写excel文件的方法
2017/06/30 Python
Python实现解析Bit Torrent种子文件内容的方法
2017/08/29 Python
Python实现扩展内置类型的方法分析
2017/10/16 Python
浅谈Django2.0 加xadmin踩的坑
2019/11/15 Python
Pytorch中Tensor与各种图像格式的相互转化详解
2019/12/26 Python
Python模块的定义,模块的导入,__name__用法实例分析
2020/01/07 Python
Python continue语句实例用法
2020/02/06 Python
python+adb+monkey实现Rom稳定性测试详解
2020/04/23 Python
Pythonic版二分查找实现过程原理解析
2020/08/11 Python
Python 高效编程技巧分享
2020/09/10 Python
英国美术用品购物网站:Cass Art
2019/10/08 全球购物
综合测评自我评价
2015/03/06 职场文书
2015年环卫处个人工作总结
2015/07/27 职场文书
2016大学生优秀志愿者事迹材料
2016/02/25 职场文书
python关于集合的知识案例详解
2021/05/30 Python
在Spring-Boot中如何使用@Value注解注入集合类
2021/08/02 Java/Android
前端传参数进行Mybatis调用mysql存储过程执行返回值详解
2022/08/14 MySQL