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使用gensim计算文档相似性
Apr 10 Python
Python错误: SyntaxError: Non-ASCII character解决办法
Jun 08 Python
对numpy中的transpose和swapaxes函数详解
Aug 02 Python
python爬虫超时的处理的实例
Dec 19 Python
基于python-opencv3的图像显示和保存操作
Jun 27 Python
python opencv对图像进行旋转且不裁剪图片的实现方法
Jul 09 Python
Python基础之字典常见操作经典实例详解
Feb 26 Python
PyCharm中如何直接使用Anaconda已安装的库
May 28 Python
Python安装并操作redis实现流程详解
Oct 13 Python
Python web框架(django,flask)实现mysql数据库读写分离的示例
Nov 18 Python
解决pycharm 格式报错tabs和space不一致问题
Feb 26 Python
用Python监控你的朋友都在浏览哪些网站?
May 27 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获取网址的顶级域名函数代码
2012/09/24 PHP
ci检测是ajax还是页面post提交数据的方法
2014/11/10 PHP
php字符串按照单词进行反转的方法
2015/03/14 PHP
PHP实现二维数组按某列进行排序的方法
2016/11/18 PHP
PHP框架自动加载类文件原理详解
2017/06/06 PHP
基于PHP-FPM进程池探秘
2017/10/17 PHP
PHP5.5新特性之yield理解与用法实例分析
2019/01/11 PHP
jQuery使用手册之三 CSS操作
2007/03/24 Javascript
js 操作css实现代码
2009/06/11 Javascript
JS target与currentTarget区别说明
2011/08/28 Javascript
jQuery实现跨域iframe接口方法调用
2015/03/14 Javascript
javascript实现全局匹配并替换的方法
2015/04/27 Javascript
巧用数组制作图片切换js代码
2016/11/29 Javascript
使用vue2实现购物车和地址选配功能
2018/03/29 Javascript
微信小程序滑动选择器的实现代码
2018/08/10 Javascript
angular中两种表单的区别(响应式和模板驱动表单)
2018/12/06 Javascript
node实现socket链接与GPRS进行通信的方法
2019/05/20 Javascript
简单说明Python中的装饰器的用法
2015/04/24 Python
Python读取txt某几列绘图的方法
2018/10/14 Python
解决python写入带有中文的字符到文件错误的问题
2019/01/31 Python
python中p-value的实现方式
2019/12/16 Python
40行Python代码实现天气预报和每日鸡汤推送功能
2020/02/27 Python
python自动化发送邮件实例讲解
2021/01/04 Python
HTML5 实现一个访问本地文件的实例
2012/12/13 HTML / CSS
canvas实现按住鼠标移动绘制出轨迹的示例代码
2018/02/05 HTML / CSS
后勤人员自我评价怎么写
2013/09/19 职场文书
毕业生自荐书模版
2014/01/04 职场文书
产假请假条
2014/04/10 职场文书
大学班级计划书
2014/04/29 职场文书
会计毕业生自荐书
2014/06/12 职场文书
教师党员群众路线教育实践活动心得体会
2014/11/04 职场文书
2014年小学数学教师工作总结
2014/12/03 职场文书
干部考核工作总结
2015/08/12 职场文书
2016年中学植树节活动总结
2016/03/16 职场文书
掌握一个领域知识,高效学习必备方法
2019/08/08 职场文书
详解CSS3浏览器兼容
2022/12/24 HTML / CSS