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使用PyV8执行javascript代码示例分享
Dec 04 Python
Python编程中装饰器的使用示例解析
Jun 20 Python
python snownlp情感分析简易demo(分享)
Jun 04 Python
Python二叉树的镜像转换实现方法示例
Mar 06 Python
解决Django后台ManyToManyField显示成Object的问题
Aug 09 Python
Python中最好用的命令行参数解析工具(argparse)
Aug 23 Python
python实现四人制扑克牌游戏
Apr 22 Python
win10从零安装配置pytorch全过程图文详解
May 08 Python
详解pyqt5的UI中嵌入matplotlib图形并实时刷新(挖坑和填坑)
Aug 07 Python
python 多线程中join()的作用
Oct 29 Python
python基于opencv 实现图像时钟
Jan 04 Python
python 闭包函数详细介绍
Apr 19 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
【COS正片】蕾姆睡衣cos,纯洁可爱被治愈了 cn名濑弥七
2020/03/02 日漫
解析PHP获取当前网址及域名的实现代码
2013/06/23 PHP
PHP中4个加速、缓存扩展的区别和选用建议
2014/03/12 PHP
Laravel框架中实现使用阿里云ACE缓存服务
2015/02/10 PHP
Zend Framework分页类用法详解
2016/03/22 PHP
深入理解Javascript闭包 新手版
2010/12/28 Javascript
javascript学习(二)javascript常见问题总结
2013/01/02 Javascript
js日期相关函数总结分享
2013/10/15 Javascript
node.js中的fs.utimes方法使用说明
2014/12/15 Javascript
JavaScript 学习笔记之数据类型
2015/01/14 Javascript
jQuery实现类似淘宝网图片放大效果的方法
2015/07/08 Javascript
10个很棒的jQuery代码片段
2015/09/24 Javascript
javascript中Date format(js日期格式化)方法小结
2015/12/17 Javascript
探索Vue.js component内容实现
2016/11/03 Javascript
微信小程序 实现列表项滑动显示删除按钮的功能
2017/04/13 Javascript
Vue学习笔记进阶篇之vue-router安装及使用方法
2017/07/19 Javascript
React-Router如何进行页面权限管理的方法
2017/12/06 Javascript
完美解决iview 的select下拉框选项错位的问题
2018/03/02 Javascript
vue本地打开build后生成的dist文件夹index.html问题
2019/09/04 Javascript
vue路由传参的基本实现方式小结【三种方式】
2020/02/05 Javascript
three.js着色器材质的内置变量示例详解
2020/08/16 Javascript
HTML元素拖拽功能实现的完整实例
2020/12/04 Javascript
[01:10]DOTA2英雄背景故事第四期之混沌法则混沌骑士
2020/07/16 DOTA
详解python中 os._exit() 和 sys.exit(), exit(0)和exit(1) 的用法和区别
2017/06/23 Python
VSCode下好用的Python插件及配置
2018/04/06 Python
python设置值及NaN值处理方法
2018/07/03 Python
利用python循环创建多个文件的方法
2018/10/25 Python
浅谈Pytorch中的自动求导函数backward()所需参数的含义
2020/02/29 Python
HTML5新增的标签和属性归纳总结
2018/05/02 HTML / CSS
HTML5 Canvas图像模糊完美解决办法
2018/02/06 HTML / CSS
网站域名和主机:Domain.com
2019/04/01 全球购物
SAZAC的动物连体衣和动物睡衣:Kigurumi Shop
2020/03/14 全球购物
介绍一下Java中的Class类
2015/04/10 面试题
环境工程大学生自荐信
2013/10/21 职场文书
学生会竞选演讲稿学习部
2014/08/25 职场文书
节约用电倡议书
2015/04/28 职场文书