前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >大话西游答题器 command line

大话西游答题器 command line

作者头像
用户1416054
发布2018-08-02 11:47:10
2440
发布2018-08-02 11:47:10
举报
文章被收录于专栏:JackeyGao的博客JackeyGao的博客

大话西游答题器 command line

Posted January 15, 2016

科举,大理寺都适用。 唯独不支持的是殿试。

项目代吗

需要依赖requests

Bash

代码语言:javascript
复制
pip install requests

然后保存下列代码到一个python文件(如: search.py)

Python

代码语言:javascript
复制
# -*- coding: utf-8 -*-
'''
File Name: search.py
Author: JackeyGao
mail: [email protected]
Created Time: 三  1/13 11:12:32 2016
'''
import sys
import readline
import signal
import requests

readline.parse_and_bind('tab: complete')
readline.parse_and_bind('set editing-mode vi')

def _wrap_with_code(code):
    def inner(text, bold=False):
        c = code
        if bold:
            c = "1;%s" % c
        return "\033[%sm%s\033[0m" % (c, text)
    return inner

red = _wrap_with_code('31')
green = _wrap_with_code('32')
blue = _wrap_with_code('34')


categorys = (
        '',
        '乡试',
        '省试-地理',
        '省试-文学',
        '省试-常识',
        '省试-饮食',
        '省试-历史',
        '大话常识'
        )

try:
    category = sys.argv[1]
    if category not in categorys:
        raise Exception()
except IndexError as e:
    category = ''
except Exception as e:
    sys.stdout.write(red("CategoryError:\n无效的科目'%s',支持:(%s, ''(所有))\n" \
            % (category, ','.join(categorys))))
    exit()


def request(collect, query):
    url = "http://xy2-tiku.webapp.163.com/tiku/search"
    params = { "q": query }
    if collect:
        params["c"] = collect

    headers = {
            "Content-Type": "application/json",
            "Accept-Language": "zh-CN,zh;q=0.8,en;q=0.6",
            "Connection": "keep-alive",
            "Referer": "http://dhxy.163.com/"
            }
    response = requests.get(
            url,
            params=params,
            headers=headers
            )
    return response.json()


def show(data):
    for q in data["data"]:
        sys.stdout.write("- [%s] " % q["category"] + blue(q["question"]) + '\n')
        sys.stdout.write("> " + green(','.join(q["answers"])) + '\n')
        sys.stdout.write("\n")


def signal_handler(signal, frame):
    sys.stdout.write(red('\nYou pressed Ctrl+C! 答题终止.\n'))
    sys.exit(0)


signal.signal(signal.SIGINT, signal_handler)
while True:
    collect = category or '所有'
    try:
        keyword = raw_input("[%s]输入关键字(终止Ctrl+C): " % red(collect))
        show(request(category, keyword))
    except EOFError:
        print(red("\n快捷键错误, 使用Ctrl+C 退出."))

使用方式

Bash

代码语言:javascript
复制
$ python search.py $CATEGORY

# CATEGORY 可以为空为空则为所有科目
# CATEGORY 支持(乡试,省试-地理,省试-文学,省试-常识,省试-饮食,省试-历史,大话常识, ''(所有))
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 大话西游答题器 command line
    • 项目代吗
      • 使用方式
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档