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

(0)

相关推荐

  • js实现将选中内容分享到新浪或腾讯微博

    微博如火如荼,大家都选择用微博带来社会化流量,顺便推广产品和网站,几乎所有的网站都有分享到代码,但是还有一种更快捷的分享方式,javascript就可以实现将选定内容轻松分享到新浪微博和腾讯微博,效果图如下: 将选中的内容分享到新浪微博,腾讯微博实现js代码如下: <STYLE> .img_sina_share { DISPLAY: none; CURSOR: pointer; POSITION: absolute } .img_qq_share { DISPLAY: none; CURSOR

  • 基于js实现微信发送好友如何分享到朋友圈、微博

    微信浏览器内置了javascript私有对象WeixinJSBridge,可以实现发送给朋友.分享到朋友圈.分享到微博等功能. <script> var imgUrl = "图片地址"; var lineLink = "当前网址"; var descContent = "描述"; var shareTitle = '标题'; var appid = ''; function shareFriend() { WeixinJSBridge

  • iOS新浪微博、腾讯微博分享功能实例

    一个是新浪微博,腾讯微博的分享按钮,一个是他们的绑定情况(其实就是是否授权).点击微博分享中新浪或腾讯按钮,就进行相应的授权(若没授权),显示微博内容,而后发布微博.设置界面中的绑定,就是相关的应用授权. 呵呵,其实也蛮简单滴. 首先分别从新浪微博开放平台(http://open.weibo.com/).腾讯微博开放平台(http://dev.t.qq.com/)中注册应用,获取到Appkey,AppSecret和AppURL(其中 AppURL是要自己填写的). 然后分别下载相关的SDK. h

  • Android实现分享功能

    Android应用中能很方便的完成这些功能,很多的应用中都有"分享"功能?如何分享呢?下面给大家说说看. 最近有人问到Android分享功能用那个比较好,使用Android自带的Intent来进行分享还是借助第三方呢,直接上代码: 一.使用Intent直接和第三方应用进行通信: /** * 分享功能 * * @param context * 上下文 * @param activityTitle * Activity的名字 * @param msgTitle * 消息标题 * @para

  • Python 获取新浪微博的最新公共微博实例分享

    API: statuses/public_timeline  返回最新的200条公共微博,返回结果非完全实时 CODE: #!/usr/bin/python # -*- coding: utf-8 -*- ''' Created on 2014-7-3 @author: guaguastd @name: statuses_public_timeline.py ''' def public_timeline(weibo_api, count): #public_timeline = weibo_a

  • 基于jquery的当鼠标滚轮到最底端继续加载新数据思路分享(多用于微博、空间、论坛 )

    复制代码 代码如下: <div id="Scroll" style="background-color: Green; width: 2000px; height:2000px;"> 请写很多数据-- </div> <div id="lookMore">more...</div> <script src="jquery-1.7b1.js" type="text/j

  • Jquery实现弹出层分享微博插件具备动画效果

    此Jquery插件是一款非常实用的特效,是很多网站不可缺少的推广神兵利器,传统的一般都用百度.加网的分享插件,但样式外观都不怎么好看,用户体验效果差一点,此作品不但有分享功能,还具备了动画效果,提高了用户体验.由于用了CSS3,为了可以看到插件的最佳效果,建议大家使用谷歌.火狐等浏览器... 作品包括以下功能: 1.弹出层 2.遮罩层 3.动画效果 4.CSS3 效果如下: 源码下载 代码片段(1) 复制代码 代码如下: $(document).ready(function(e) { var s

  • 完整的iOS新浪微博分享功能开发

    本文实例为大家分享了Android九宫格图片展示的具体代码,供大家参考,具体内容如下 做新浪分享 需先去http://open.weibo.com/apps注册开发者app 很简单! 第1步 第2步 3 设置你的应用的信息 找到自己的appkey 还需要设置自己的kAppRedirectURL测试可以随便写个! 开发部分在下面ios新浪微博分享(2)这部分: 开发需要下载官方的sdkhttp://open.weibo.com/wiki/SDK#iOS_SDK 本人下载的版本 新建一个viewco

  • java实现的新浪微博分享代码实例

    weibo.java 复制代码 代码如下: @Override         protected void onCreate(Bundle savedInstanceState) {                  super.onCreate(savedInstanceState);                  setContentView(R.layout.user_center);                  // 创建微博实例                 mWeibo

  • js实现选中页面文字将其分享到新浪微博

    一.功能简述 正是微博如火如荼的时节,其中各个微博的分享功能是网站推广产品的好东东啊,此时如何方便快捷的使用微博的分享功能就显得比较重要了.我的站点每篇文章的底部有一些分享的链接: 不过我觉得这些分享基本上就是聋子的耳朵--摆设.除非这篇文章惊天地.泣鬼神,痛彻心扉,穿越前世今生.但是,如果有更加方便快捷的分享方式,这种冷淡得让人结冰的场面或许就不会经常出现. 一般翻译软件都有划词翻译功能,例如有道桌面词典的桌面划词翻译功能: 启用后,随便选中那个软件的一段文字,就会出现类似这样子的浮动提示框:

随机推荐