python发腾讯微博代码分享

1262次阅读  |  发布于5年以前

复制代码 代码如下:

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_()

Copyright© 2013-2020

All Rights Reserved 京ICP备2023019179号-8