文档章节

微软小冰 微博私信api 基于python

 生气的高压锅
发布于 2017/05/23 16:14
字数 364
阅读 438
收藏 1

说明

需要  python3+ BeautifulSoup flask 目前暂时只支持文字

登陆微博 并将headers保存在根目录headers.txt中
确保已经领养小冰 这里我提供了一个测试账号

详情https://github.com/yanwii/msxiaoiceapi

使用

py xiaoiceapi.py

http://127.0.0.1:5000/?que=你是谁

return:

{  

"status": "sucess",

"text": "你都知道你还问[不屑脸],哈哈党"

}

 

代码:

import requests
import json
import time
from bs4 import BeautifulSoup
from flask import Flask,request,jsonify


class xiaoiceApi():
    
    def __init__(self):
        self.headers = {}
        self.loadheaders()

    def loadheaders(self):
        '''
            导入headers
        '''
        with open("./headers.txt") as headers:
            line = headers.readline().strip()
            while line:
                key = line.split(":")[0]
                self.headers[key] = line[len(key)+1:]
                line = headers.readline().strip()            

    def chat(self, input_strs):
        if not self.headers:
            return self.dicts("error", "请打开浏览器 复制并将headers放入headers.txt中")
        '''
        聊天
        
            args (str):   
                input_strs  问题  
            return (dict):  
                status      状态  
                text        内容        
        '''
        data = {
            'location':'msgdialog',
            'module':'msgissue',
            'style_id':1,
            'text':input_strs,
            'uid':5175429989,
            'tovfids':'',
            'fids':'',
            'el':'[object HTMLDivElement]',
            '_t':0,
        }
        
        try:
            url = 'http://weibo.com/aj/message/add?ajwvr=6'
            page = requests.post(url, data=data, headers=self.headers)
            self.savePage(page.text, "./tmp/postpage.txt")
            if page.json()['code'] == '100000':
                text = self.loop(input_strs)
                return self.dicts("succeed", text)
            else:
                return self.dicts("failed", page.json()['msg'])
        except Exception as e:
            return self.dicts("error", e)
    
    def dicts(self, status, text):
        '''
            包装return
        '''
        return {"status":status, "text":text}

    def loop(self, input_strs):
        '''  
            刷新直到获取到回答
        '''
        times = 1
        while times:
            times += 1
            response = requests.get("http://weibo.com/aj/message/getbyid?ajwvr=6&uid=5175429989&count=1&_t=0" , headers=self.headers)
            self.savePage(response.text, "./tmp/response.txt")
            soup = BeautifulSoup(response.json()['data']['html'], "lxml")
            text = soup.find("p", class_='page').text
            if text != input_strs or times > 20:
                break
            time.sleep(1)
        return text
            
    def savePage(self, text, file):
        with open(file, "w") as f:
            f.write(text)
    
    def api(self):
        app = Flask(__name__)

        @app.route("/")
        def index():
            que = request.args.get("que")
            ans = self.chat(que)
            return jsonify(ans)
        app.run()

xb = xiaoiceApi()
xb.api()
    

© 著作权归作者所有

粉丝 0
博文 1
码字总数 364
作品 0
程序员
私信 提问
TensorFlow 2.0开发者预览版发布

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/dQCFKyQDXYm3F8rB0/article/details/86327103 整理 | Jane 出品 | AI科技大本营 从去年 8 月 Google 公开发布...

AI科技大本营
01/11
0
0
人工智能通讯时代到来 你和微软小冰通话了吗

(原标题:人工智能通讯时代到来 你和微软小冰通话了吗) 导语: 经济观察网 记者 白金蕾 8月18日,微软小冰与有信公司达成合作,第四代微软小冰将正式长驻有信电话的“蜜语”频道。此后,用...

经济观察报
2016/08/20
0
0
微软小冰入驻有信电话 用户可与人工智能语音通话

(原标题:微软小冰入驻有信电话 用户可与人工智能语音通话) 中国网科技8月18日讯 8月17日,微软小冰与有信宣布战略合作正式升级,一方面,微软小冰将长驻有信电话主打情感倾诉实时语音聊天...

中国网
2016/08/18
0
0
用Python画小猪佩奇,看完别说你不会

作者 | 上海小胖,四大咨询TechLead,mongoDB Professional 获得者。「Python专栏」专注Python领域的各种技术:爬虫、DevOps、人工智能、Web开发等。 今天闲来无事,用turtle画了个小猪佩奇,...

AI科技大本营
01/14
0
0
小冰负责人李笛:微软不缺钱,缺对未来的把握

作者 | 阿司匹林 ▌小冰的诞生 2013 年 9 月,刚刚加入微软的李笛一直在不停约见微软的各个产品团队。年底的时候,微软的几个同事利用业余时间开发一款叫 Bing Knows 的网页产品,Bing Know...

AI科技大本营
2018/03/19
0
0

没有更多内容

加载失败,请刷新页面

加载更多

学习记录(day05-标签操作、属性绑定、语句控制、数据绑定、事件绑定、案例用户登录)

[TOC] 1.1.1标签操作v-text&v-html v-text:会把data中绑定的数据值原样输出。 v-html:会把data中值输出,且会自动解析html代码 <!--可以将指定的内容显示到标签体中--><标签 v-text=""></......

庭前云落
48分钟前
7
0
VMware vSphere的两种RDM磁盘

在VMware vSphere vCenter中创建虚拟机时,可以添加一种叫RDM的磁盘。 RDM - Raw Device Mapping,原始设备映射,那么,RDM磁盘是不是就可以称作为“原始设备映射磁盘”呢?这也是一种可以热...

大别阿郎
今天
10
0
【AngularJS学习笔记】02 小杂烩及学习总结

本文转载于:专业的前端网站☞【AngularJS学习笔记】02 小杂烩及学习总结 表格示例 <div ng-app="myApp" ng-controller="customersCtrl"> <table> <tr ng-repeat="x in names | orderBy ......

前端老手
昨天
14
0
Linux 内核的五大创新

在科技行业,创新这个词几乎和革命一样到处泛滥,所以很难将那些夸张的东西与真正令人振奋的东西区分开来。Linux内核被称为创新,但它又被称为现代计算中最大的奇迹,一个微观世界中的庞然大...

阮鹏
昨天
17
0
【Medium 万赞好文】ViewModel 和 LIveData:模式 + 反模式

原文作者: Jose Alcérreca 原文地址: ViewModels and LiveData: Patterns + AntiPatterns 译者:秉心说 View 和 ViewModel 分配责任 理想情况下,ViewModel 应该对 Android 世界一无所知。...

秉心说
昨天
17
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部