手机
当前位置:查字典教程网 >脚本专栏 >python >python发腾讯微博代码分享
python发腾讯微博代码分享
摘要:复制代码代码如下:importurllib.parse,os.path,time,sys,re,urllib.requestfromhttp...

复制代码 代码如下:

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='rn'

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='rn--'+BOUNDARY+'--rn'

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正则匹配抓取豆瓣电影链接和评论代码分享

学习python的几条建议分享

python将人民币转换大写的脚本代码

python类型强制转换long to int的代码

Python 文件重命名工具代码

python单链表实现代码实例

python将html转成PDF的实现代码(包含中文)

python 布尔操作实现代码

python远程登录代码

python 图片验证码代码

精品推荐
分类导航