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中split方法用法分析
Apr 17 Python
python 动态生成变量名以及动态获取变量的变量名方法
Jan 20 Python
Python实现读取txt文件中的数据并绘制出图形操作示例
Feb 26 Python
Python代码实现删除一个list里面重复元素的方法
Apr 02 Python
Python3.5内置模块之time与datetime模块用法实例分析
Apr 27 Python
python中p-value的实现方式
Dec 16 Python
Python安装依赖(包)模块方法详解
Feb 14 Python
Django-imagekit的使用详解
Jul 06 Python
Expected conditions模块使用方法汇总代码解析
Aug 13 Python
Python 实现键盘鼠标按键模拟
Nov 18 Python
python实现经纬度采样的示例代码
Dec 10 Python
Python爬虫模拟登陆哔哩哔哩(bilibili)并突破点选验证码功能
Dec 21 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
使用php转义输出HTML到JavaScript
2015/03/27 PHP
Thinkphp实现自动验证和自动完成
2015/12/19 PHP
Yii安装与使用Excel扩展的方法
2016/07/13 PHP
浅析PHP类的反射来实现依赖注入过程
2018/02/06 PHP
PHP实现动态删除XML数据的方法示例
2018/03/30 PHP
jQuery 工具函数学习资料
2010/04/29 Javascript
jQuery中filter(),not(),split()使用方法
2010/07/06 Javascript
jQuery实现等比例缩放大图片让大图片自适应页面布局
2013/10/16 Javascript
Mac地址验证的javascript代码
2013/11/09 Javascript
Jquery焦点与失去焦点示例应用
2014/06/10 Javascript
一个js过滤空格的小函数
2014/10/10 Javascript
Javascript中数组sort和reverse用法分析
2014/12/30 Javascript
jquery拖拽排序简单实现方法(效果增强版)
2016/02/16 Javascript
JavaScript学习笔记之函数记忆
2017/09/06 Javascript
Angular2 父子组件通信方式的示例
2018/01/29 Javascript
jQuery替换节点元素的操作方法
2018/03/18 jQuery
基于nodejs的微信JS-SDK简单应用实现
2019/05/21 NodeJs
JS函数参数的传递与同名参数实例分析
2020/03/16 Javascript
Javascript原型链及instanceof原理详解
2020/05/25 Javascript
原生JavaScript实现换肤
2021/02/19 Javascript
[01:27:44]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Aster BO3 第一场 1月24日
2021/03/11 DOTA
python操作MySQL数据库的方法分享
2012/05/29 Python
Django URL传递参数的方法总结
2016/08/28 Python
Python实现XML文件解析的示例代码
2018/02/05 Python
Python使用matplotlib绘图无法显示中文问题的解决方法
2018/03/14 Python
python3+selenium实现qq邮箱登陆并发送邮件功能
2019/01/23 Python
Python使用Pandas库常见操作详解
2020/01/16 Python
用Python绘制漫步图实例讲解
2020/02/26 Python
tensorflow中tf.reduce_mean函数的使用
2020/04/19 Python
python中子类与父类的关系基础知识点
2021/02/02 Python
使用Python快速打开一个百万行级别的超大Excel文件的方法
2021/03/02 Python
房地产出纳岗位职责
2013/12/01 职场文书
村委会贫困证明范文
2014/09/21 职场文书
餐饮食品安全责任书
2015/01/29 职场文书
党员读书活动心得体会
2016/01/14 职场文书
javascript实现计算器功能详解流程
2021/11/01 Javascript