最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python發(fā)騰訊微博代碼分享

 更新時(shí)間:2014年01月10日 09:39:50   作者:  
本文介紹了利用qwebview寫(xiě)的一個(gè)發(fā)騰訊微博的功能,大家可以改成新浪微博,原理是一樣的,大家參考使用吧

復(fù)制代碼 代碼如下:

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('打開(kāi)')
        brows.clicked.connect(self.getFileName)
        submit=QPushButton('發(fā)表')
        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_()

相關(guān)文章

  • python列表切片和嵌套列表取值操作詳解

    python列表切片和嵌套列表取值操作詳解

    今天小編就為大家分享一篇python列表切片和嵌套列表取值操作詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-02-02
  • python  文件的基本操作 菜中菜功能的實(shí)例代碼

    python 文件的基本操作 菜中菜功能的實(shí)例代碼

    這篇文章主要介紹了python 文件的基本操作 菜中菜功能,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值 ,需要的朋友可以參考下
    2019-07-07
  • python中(負(fù)數(shù))整除和取模運(yùn)算方式

    python中(負(fù)數(shù))整除和取模運(yùn)算方式

    Python中的取模運(yùn)算符是%,它與其他語(yǔ)言中的取余符號(hào)相同,整除運(yùn)算符是//,表示向下取整,在Python中,正數(shù)的取余和取模結(jié)果相同,但負(fù)數(shù)的取余和取模結(jié)果有所不同,取余運(yùn)算在計(jì)算時(shí)向0方向舍棄小數(shù)位,而取模運(yùn)算向負(fù)無(wú)窮方向舍棄小數(shù)位
    2024-10-10
  • Python線程threading(Thread類(lèi))

    Python線程threading(Thread類(lèi))

    這篇文章主要介紹了Python線程threading(Thread類(lèi)),線程是進(jìn)程的組成部分,一個(gè)進(jìn)程可以擁有多個(gè)線程,更多詳細(xì)內(nèi)容需要的朋友可以參考一下下面文章詳細(xì)內(nèi)容
    2022-07-07
  • 利用pycharm調(diào)試ssh遠(yuǎn)程程序并實(shí)時(shí)同步文件的操作方法

    利用pycharm調(diào)試ssh遠(yuǎn)程程序并實(shí)時(shí)同步文件的操作方法

    這篇文章主要介紹了利用pycharm調(diào)試ssh遠(yuǎn)程程序并實(shí)時(shí)同步文件的操作方法,本篇文章提供了利用pycharm遠(yuǎn)程調(diào)試程序的方法,且使用的編譯器可以是服務(wù)器中的虛擬環(huán)境的編譯器,可以實(shí)時(shí)同步本地與服務(wù)器的文件內(nèi)容,需要的朋友可以參考下
    2022-11-11
  • Python快速查找list中相同部分的方法

    Python快速查找list中相同部分的方法

    今天小編就為大家分享一篇Python快速查找list中相同部分的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-06-06
  • Django使用Jinja2模板引擎的示例代碼

    Django使用Jinja2模板引擎的示例代碼

    這篇文章主要介紹了Django使用Jinja2模板引擎的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • python中的Reportlab模塊詳解最新推薦

    python中的Reportlab模塊詳解最新推薦

    reportlab模塊是用python語(yǔ)言生成pdf文件的模塊,安裝方法也簡(jiǎn)單,這篇文章主要介紹了python中的Reportlab模塊,需要的朋友可以參考下
    2023-05-05
  • python通用讀取vcf文件的類(lèi)(復(fù)制粘貼即可用)

    python通用讀取vcf文件的類(lèi)(復(fù)制粘貼即可用)

    這篇文章主要介紹了python通用讀取vcf文件的類(lèi)(可以直接復(fù)制粘貼使用) ,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-02-02
  • python支持多繼承嗎

    python支持多繼承嗎

    在本篇文章里小編給大家整理的是關(guān)于python支持多繼承的相關(guān)基礎(chǔ)知識(shí)點(diǎn),需要的朋友們跟著學(xué)習(xí)參考下。
    2020-06-06

最新評(píng)論

宝丰县| 桑植县| 汤原县| 井冈山市| 吴旗县| 哈尔滨市| 巢湖市| 枣阳市| 巩留县| 昌图县| 太康县| 揭阳市| 尼木县| 连平县| 佛冈县| 海南省| 茂名市| 屏山县| 南郑县| 通许县| 安庆市| 顺平县| 神农架林区| 和田市| 天全县| 辽宁省| 枣强县| 乌苏市| 兴安盟| 乡城县| 淄博市| 贡觉县| 车致| 德保县| 榕江县| 金门县| 大安市| 合阳县| 故城县| 鄂尔多斯市| 屏南县|