python发腾讯微博代码分享
代码如下:
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_()
相关推荐
YENCSDN 2020-11-17
lsjweiyi 2020-11-17
houmenghu 2020-11-17
Erick 2020-11-17
HeyShHeyou 2020-11-17
以梦为马不负韶华 2020-10-20
lhtzbj 2020-11-17
夜斗不是神 2020-11-17
pythonjw 2020-11-17
dingwun 2020-11-16
lhxxhl 2020-11-16
坚持是一种品质 2020-11-16
染血白衣 2020-11-16
huavhuahua 2020-11-20
meylovezn 2020-11-20
逍遥友 2020-11-20
weiiron 2020-11-16