Пример #1
0
def getOneMainData():
    result = {}
    db.connect()

    date_now = time.strftime("%Y-%m-%d", time.localtime())
    one = ONE()
    one.get_main_page(date_now)

    sql = "select count(*) from spider_one where spider_index = '%s' and spider_date = '%s'" % (
        one.MAIN_INDEX, date_now)
    logger.info(sql)
    db_result = db.executeSql(sql)
    logger.info("查询数据库结果:")
    logger.info(db_result)

    if 0 == db_result[0][0]:
        yesterday = datetime.date.today() - datetime.timedelta(days=1)
        date_yesterday = yesterday.strftime("%Y-%m-%d")
        logger.info("昨天日期:" + date_yesterday)

        sql = "select spider_result from spider_one where spider_index = '%s' and spider_date = '%s';" % (
            one.MAIN_INDEX, date_yesterday)
        logger.info(sql)
        db_result = db.executeSql(sql)
        result = db_result[0][0]
    else:
        sql = "select spider_result from spider_one where spider_index = '%s' and spider_date = '%s';" % (
            one.MAIN_INDEX, date_now)
        logger.info(sql)
        db_result = db.executeSql(sql)
        result = db_result[0][0]

    db.close()

    return result
Пример #2
0
def onlyone_login():
    result = {}
    data = json.loads(request.data.decode('utf-8'))
    logger.info(data['code'])

    db.connect()

    queryString = "appid=%s&secret=%s&js_code=%s&grant_type=authorization_code" % (
        app.config['APP_ID'], app.config['APP_SECRETKEY'], data['code'])
    requestUrl = app.config['WEIXIN_LOGIN_URL'] + "?" + queryString
    logger.info("访问url:" + requestUrl)

    response = requests.get(requestUrl)
    if 200 != response.status_code:
        result['status_code'] = "1001"
        result['status_msg'] = "访问ONE网页失败,code:[%d]" % response.status_code
    else:
        result['status_code'] = "0000"
        jsonObject = json.loads(response.text)
        openid = jsonObject['openid']
        session_key = jsonObject['session_key']
        logger.info("session_key:" + jsonObject['session_key'])
        logger.info("openid:" + jsonObject['openid'])

        # 根据session_key生成token
        token = generateToken(jsonObject['session_key'])

        # 保存token
        sql = "select count(*) from weixin_session where openid = '%s';" % (
            openid)
        logger.info(sql)
        db_result = db.executeSql(sql)
        # 数据库结果
        if 0 == db_result[0][0]:
            sql = "insert into weixin_session values ('%s', '%s');" % (
                openid, session_key)
            logger.info(sql)
            db.executeSql(sql)
        else:
            # 更新数据库结果
            sql = "update weixin_session set session_key = '%s' where openid = '%s';" % (
                session_key, openid)
            logger.info(sql)
            db.executeSql(sql)

        result['openid'] = openid
        result['token'] = token

    logger.info("结果:" + json.dumps(result, ensure_ascii=True))
    db.close()
    return json.dumps(result, ensure_ascii=True)
Пример #3
0
def onlyone_check():
    logger.info("开始验证token...")
    result = {}

    db.connect()

    if not request.headers.has_key('openid'):
        result['code'] = "1001"
        result['msg'] = "openid not found in headers"

    if not request.headers.has_key('token'):
        result['code'] = "1001"
        result['msg'] = "token not found in headers"

    logger.info(request.headers)

    openid = request.headers['openid']
    token = request.headers['token']

    sql = "select count(*) from weixin_session where openid = '%s';" % (openid)
    logger.info(sql)
    db_result = db.executeSql(sql)
    logger.info(db_result)
    if 0 == db_result[0][0]:
        logger.info("openid在数据库中不存在")
        result['code'] = "1002"
        result['msg'] = '没有找到该openid的登陆记录'
    else:
        sql = "select session_key from weixin_session where openid = '%s';" % (
            openid)
        logger.info(sql)
        db_result = db.executeSql(sql)
        logger.info(db_result)
        session_key = db_result[0][0]
        logger.info(session_key)

        [result['code'], result['msg']] = checkToken(session_key, token)
        logger.info("code:" + result['code'])
        logger.info("msg:" + result['msg'])

    db.close()
    return json.dumps(result, ensure_ascii=True)
Пример #4
0
def novel_bookshelf():
    '''
    书架模块 包括书架查询 书架新增
    区别参数:
        method: 'SELECT' --查询
                'INSERT' --新增
        openid
        novelInfo
    '''
    result = {}
    db.connect()
    logger.info("书架模块...")
    logger.info("请求数据:" + request.data.decode("utf-8"))

    request_data = json.loads(request.data.decode('utf-8'))

    openid = request_data['openid']
    logger.info("openid:" + openid)

    if 0 == len(openid):
        db.close()
        return createResultString("1001", "请求数据中没有获取到openid信息")

    method = request_data['method']
    logger.info("method:" + method)
    if 0 == len(method):
        db.close()
        return createResultString("1001", "请求数据中没有找到method信息")
    elif str.upper(method) not in ['SELECT', 'INSERT']:
        db.close()
        return createResultString("1001", "METHOD字段[%s]不合法" % (method))

    novelInfo = request_data['novelInfo']
    logger.info("小说信息:" + str(novelInfo))
    if 0 == len(novelInfo):
        db.close()
        return createResultString("1001", "请求数据中没有找到novelInfo信息")

    if 'novelUrl' not in novelInfo.keys():
        db.close()
        return createResultString("1001", "novelInfo中没有novelUrl")

    logger.info(str.upper(method))
    logger.info("SELECT" == str.upper(method))
    if "SELECT" == str.upper(method):
        logger.info("查询用户的书架信息...")
        sql = "select count(*) from novel_bookshelf where openid = '%s' and novel_url = '%s'" % (
            openid, novelInfo['novelUrl'])
        logger.info("查询书架SQL:" + sql)

        db_result = db.executeSql(sql)
        logger.info("数据库查询结果:" + str(db_result))
        if 0 == db_result[0][0]:
            db.close()
            return createResultString(
                "1000", "用户[%s]书架上没有[%s]信息!" % (openid, novelInfo['novelUrl']))
        else:
            db.close()
            return createResultString(
                "0000",
                "该用户[%s]书架上已有[%s]的信息" % (openid, novelInfo['novelUrl']))
    elif "INSERT" == str.upper(method):
        logger.info("加入书架操作...")
        # 首先需要查询是否在书架中,如果不在再进行插入操作
        sql = "select count(*) from novel_bookshelf where openid = '%s' and novel_url = '%s'" % (
            openid, novelInfo['novelUrl'])
        logger.info("查询书架SQL:" + str(sql))

        db_result = db.executeSql(sql)
        logger.info("数据库查询结果:" + str(db_result))
        if 1 == db_result[0][0]:
            logger.info("该小说[%s]已在书架中" % (novelInfo['novelUrl']))
            db.close()
            return createResultString("1111",
                                      "该小说[%s]已在书架中" % (novelInfo['novelUrl']))
        else:
            sql = "INSERT INTO NOVEL_BOOKSHELF(openid, novel_name, novel_url, novel_author, novel_image, novel_brief) \
                 VALUES('%s', '%s', '%s', '%s', '%s', '%s')"                                                             %  \
                 (pymysql.escape_string(openid),                \
                 pymysql.escape_string(novelInfo['novelName']), \
                 pymysql.escape_string(novelInfo['novelUrl']),  \
                 pymysql.escape_string(novelInfo['novelAuthor']),   \
                 pymysql.escape_string(novelInfo['novelImage']),    \
                 pymysql.escape_string(novelInfo['novelBrief']))
            logger.info("执行SQL语句:")
            logger.info(sql)
            db.executeSql(sql)
            db.close()
            return createResultString("0000", "加入书架成功.")
Пример #5
0
def novel_current_chapter():
    '''
    当前小说阅读章节模块
    包括查询、更新、插入的功能
    method:
        UPDATE --更新,如果没有数据就插入
        SELECT --查询
    '''
    db.connect()
    logger.info("书架模块...")
    logger.info("请求数据:" + request.data.decode("utf-8"))

    request_data = json.loads(request.data.decode('utf-8'))

    # 检查请求的必要数据
    check_result = checkRequestData(request_data,
                                    ['openid', 'method', 'chapterInfo'])
    if "TRUE" != check_result:
        db.close()
        return check_result

    method = request_data['method']
    openid = request_data['openid']
    chapterInfo = request_data['chapterInfo']
    logger.info("请求方法:" + method)
    logger.info("OPENID:" + openid)
    logger.info("小说信息:" + str(chapterInfo))

    if "SELECT" == str.upper(method):
        # 查询用户当前小说的阅读章节
        check_result = checkRequestData(chapterInfo, ['novelInfo'])
        if "TRUE" != check_result:
            db.close()
            return check_result

        novelInfo = chapterInfo['novelInfo']
        sql = "select count(*) from novel_current_chapter where openid = '%s' and novel_url = '%s'" % ( \
            openid, novelInfo['novelUrl'] \
        )
        logger.info(sql)
        db_result = db.executeSql(sql)
        logger.info("查询当前小说阅读章节结果:" + str(db_result))
        if 1 != db_result[0][0]:
            logger.info("该用户[%s]没有该小说的阅读记录" % (openid))
            db.close()
            return createResultString("1001", "该用户[%s]没有该小说的阅读记录" % (openid))
        else:
            sql = "select chapter_id from novel_current_chapter where openid = '%s' and novel_url = '%s'" % ( \
                openid, novelInfo['novelUrl'] \
            )
            logger.info(sql)
            db_result = db.executeSql(sql)
            logger.info("查询阅读章节ID结果:" + str(db_result))
            chapterId = db_result[0][0]
            result = {}
            result['code'] = "0000"
            result["message"] = "查询成功"
            result["chapterId"] = chapterId
            db.close()

            return json.dumps(result, indent=4, ensure_ascii=False)
    elif "UPDATE" == str.upper(method):
        # 查询用户当前小说的阅读章节
        check_result = checkRequestData(chapterInfo, ['novelInfo'])
        if "TRUE" != check_result:
            db.close()
            return check_result

        novelInfo = chapterInfo['novelInfo']
        sql = "select count(*) from novel_current_chapter where openid = '%s' and novel_url = '%s'" % ( \
            openid, novelInfo['novelUrl'] \
        )
        logger.info(sql)
        db_result = db.executeSql(sql)
        logger.info("查询当前小说阅读章节结果:" + str(db_result))
        if 1 != db_result[0][0]:
            # 插入当前阅读进度
            logger.info("插入当前阅读进度...")
            sql = "insert into novel_current_chapter(openid, novel_name, novel_url, novel_author, chapter_id, chapter_title, chapter_url, novel_image) values \
                ('%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s')"                                                                  % (       \
                    pymysql.escape_string(openid),                                         \
                    pymysql.escape_string(novelInfo['novelName']),                       \
                    pymysql.escape_string(novelInfo['novelUrl']),                        \
                    pymysql.escape_string(novelInfo['novelAuthor']),                     \
                    str(chapterInfo['id']),                       \
                    pymysql.escape_string(chapterInfo['title']),                    \
                    pymysql.escape_string(chapterInfo['url']),                      \
                    pymysql.escape_string(novelInfo['novelImage'])                       \
                )
            logger.info(sql)
            db_result = db.executeSql(sql)
            logger.info("插入当前阅读进度结果:" + str(db_result))
            db.close()

            return createResultString("0000", "插入当前阅读进度成功...")
        else:
            # 更新阅读进度
            logger.info("更新当前阅读进度...")
            sql = "update novel_current_chapter set chapter_id = '%s', chapter_title = '%s', chapter_url = '%s' \
                where openid = '%s' and novel_url = '%s'"                                                          % (   \
                    str(chapterInfo['id']),                   \
                    pymysql.escape_string(chapterInfo['title']),                \
                    pymysql.escape_string(chapterInfo['url']),                  \
                    pymysql.escape_string(openid),                              \
                    pymysql.escape_string(novelInfo['novelUrl'])                \
                )
            logger.info(sql)
            db_result = db.executeSql(sql)
            logger.info("更新当前阅读进度结果:" + str(db_result))
            db.close()

            return createResultString("0000", "更新当前阅读进度成功...")
    else:
        return createResultString("9999", "错误的METHOD请求[%s]" % (method))