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中使用smtplib和email模块发送邮件实例
Apr 22 Python
Python专用方法与迭代机制实例分析
Sep 15 Python
Python中装饰器的一个妙用
Feb 08 Python
深入浅析Python字符编码
Nov 12 Python
Python使用Mechanize模块编写爬虫的要点解析
Mar 31 Python
Windows下Anaconda2安装NLTK教程
Sep 19 Python
pygame游戏之旅 如何制作游戏障碍
Nov 20 Python
Pyqt QImage 与 np array 转换方法
Jun 27 Python
python输入多行字符串的方法总结
Jul 02 Python
Django中的静态文件管理过程解析
Aug 01 Python
python 进程间数据共享multiProcess.Manger实现解析
Sep 23 Python
Python模块future用法原理详解
Jan 20 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 网页过期时间的控制代码
2009/06/29 PHP
php实现12306火车票余票查询和价格查询(12306火车票查询)
2014/01/14 PHP
PHP防止图片盗用(盗链)的方法小结
2016/11/11 PHP
PHP实现上传多文件示例代码
2017/02/20 PHP
jquery css 设置table的奇偶行背景色示例
2014/06/03 Javascript
javascript 自定义回调函数示例代码
2014/09/26 Javascript
JavaScript中的object转换函数toString()与valueOf()介绍
2014/12/31 Javascript
jQuery mobile类库使用时加载导航历史的方法简介
2015/12/04 Javascript
Bootstrap滚动监听(Scrollspy)插件详解
2016/04/26 Javascript
简单实现js间歇或无缝滚动效果
2016/06/29 Javascript
关于微信中a链接无法跳转问题
2016/08/02 Javascript
详解jQuery插件开发方式
2016/11/22 Javascript
JS 对java返回的json格式的数据处理方法
2016/12/05 Javascript
JavaScript之iterable_动力节点Java学院整理
2017/06/29 Javascript
vue插件vue-resource的使用笔记(小结)
2017/08/04 Javascript
关于JS与jQuery中的文档加载问题
2017/08/22 jQuery
vue组件父子间通信之综合练习(聊天室)
2017/11/07 Javascript
基于vue+canvas的excel-like组件实例详解
2017/11/28 Javascript
nodejs微信扫码支付功能实现
2018/02/17 NodeJs
详解如何模拟实现node中的Events模块(通俗易懂版)
2019/04/15 Javascript
Layer+Echarts构建弹出层折线图的方法
2019/09/25 Javascript
详细分析Node.js 多进程
2020/06/22 Javascript
[42:04]DOTA2上海特级锦标赛主赛事日 - 2 胜者组第一轮#3Secret VS OG第一局
2016/03/03 DOTA
使用python解析xml成对应的html示例分享
2014/04/02 Python
Python爬虫获取整个站点中的所有外部链接代码示例
2017/12/26 Python
完美解决Pycharm无法导入包的问题 Unresolved reference
2018/05/18 Python
Django框架orM与自定义SQL语句混合事务控制操作
2019/06/27 Python
Pytorch Tensor的索引与切片例子
2019/08/18 Python
Pandas-Cookbook 时间戳处理方式
2019/12/07 Python
Python爬虫:Request Payload和Form Data的简单区别说明
2020/04/30 Python
用Python制作mini翻译器的实现示例
2020/08/17 Python
2014年小学辅导员工作总结
2014/12/23 职场文书
2015年新教师工作总结
2015/04/28 职场文书
校运会新闻稿
2015/07/17 职场文书
vue中的可拖拽宽度div的实现示例
2022/04/08 Vue.js
在 Python 中利用 Pool 进行多线程
2022/04/24 Python