使用新浪微博图床

作者: 写写代码唱唱歌 | 来源:发表于2016-04-14 11:27 被阅读7774次

    首先感谢新浪微博提供的免费图床(对外链无限制),以及吊炸天的cdn图片加速服务,从此妈妈再也不用担心我的图床不能用了.

    图床原理:

    访问http://weibo.com/minipublish

    使用新浪微博账号登陆

    进入到发微博的界面:

    点击下方的上传图片按钮,并上传本地图片,上传成功后,会在下方出现一张预览图,打开控制台找到这张图片的url,这就是新浪图床的url.

    不需要发布微博,图片只要上传就会存在于图床中

    手动上传图片,获取地址,非常繁琐.在这里使用python写了一个上传本地图片并返回图床url的脚本,在使用前,请参看另一篇博客python模拟微博登陆,介绍了如何使用python登陆新浪微博并保存cookie.

    在获取到cookie后,就可以使用cookie上传图片,代码如下:

    def request_image_url(image_path):
        cookie = cookielib.MozillaCookieJar()
        cookie.load(cookie_file, ignore_expires=True, ignore_discard=True)
        opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookie))
        image_url = 'http://picupload.service.weibo.com/interface/pic_upload.php?mime=image%2Fjpeg&data=base64&url=0&markpos=1&logo=&nick=0&marks=1&app=miniblog'
        b = base64.b64encode(file(image_path).read())
        data = urllib.urlencode({'b64_data': b})
        result = opener.open(image_url, data).read()
        result = re.sub(r"<meta.*</script>", "", result)
        image_result = json.loads(result)
        image_id = image_result.get('data').get('pics').get('pic_1').get('pid')
        return 'http://ww3.sinaimg.cn/large/%s' % image_id
    
    
    def get_image(image_path):
        url = ''
        try:
            url = request_image_url(image_path)
        except:
            try:
                username = raw_input("输入新浪微博用户名:")
                password = raw_input("输入新浪微博密码:")
                nonce, pubkey, servertime, rsakv = pre_login()
                form_data = generate_form_data(nonce, pubkey, servertime, rsakv, username, password)
                login(form_data)
                url = request_image_url(image_path)
            except:
                print "登录失败,程序退出"
                exit()
        return url
    
    
    if __name__ == '__main__':
        print get_image('/home/q/hexo/blog/source/img/angular-remove-table-item.jpg')
    

    代码运行结果如下:

    /usr/bin/python2.7 /home/q/hexo/blog/weibo_util.py
    输入新浪微博用户名: yourusername
    输入新浪微博密码:yourpassword
    http://ww3.sinaimg.cn/large/b8b708a7gw1f2n0udn29tj210b0b0jsn
    

    输出就是新浪图床的地址.换成你的本地文件来试一试吧.

    完整的代码包括了模拟新浪微博登陆,保存cookie,上传本地图片到新浪微博图床并获取图床地址.

    完整的代码请参照:模拟微博登陆并获取图床地址
    本人博客原文地址

    相关文章

      网友评论

      本文标题:使用新浪微博图床

      本文链接:https://www.haomeiwen.com/subject/ayyglttx.html