159 lines
5.7 KiB
Python
159 lines
5.7 KiB
Python
# -*- coding:utf-8 -*-
|
||
"""
|
||
Created on 2016/04/03
|
||
@author: Leo
|
||
@group : lazytech
|
||
@contact: lazytech@sina.cn
|
||
"""
|
||
|
||
VERSION = '0.0.1'
|
||
P_TYPE = {'http': 'http://', 'ftp': 'ftp://'}
|
||
FORMAT = lambda x: '%.2f' % x
|
||
FORMAT4 = lambda x: '%.4f' % x
|
||
DOMAINS = {'sina': 'sina.com.cn', 'sinahq': 'sinajs.cn',
|
||
'ifeng': 'ifeng.com', 'sf': 'finance.sina.com.cn',
|
||
'ssf': 'stock.finance.sina.com.cn',
|
||
'vsf': 'vip.stock.finance.sina.com.cn',
|
||
'idx': 'www.csindex.com.cn', '163': 'money.163.com',
|
||
'em': 'eastmoney.com', 'sseq': 'query.sse.com.cn',
|
||
'sse': 'www.sse.com.cn', 'szse': 'www.szse.cn',
|
||
'oss': '218.244.146.57',
|
||
'shibor': 'www.shibor.org'}
|
||
|
||
NAV_OPEN_API = {'all': 'getNetValueOpen', 'equity': 'getNetValueOpen',
|
||
'mix': 'getNetValueOpen', 'bond': 'getNetValueOpen',
|
||
'monetary': 'getNetValueMoney', 'qdii': 'getNetValueOpen'}
|
||
|
||
NAV_OPEN_KEY = {'all': '6XxbX6h4CED0ATvW', 'equity': 'Gb3sH5uawH5WCUZ9',
|
||
'mix': '6XxbX6h4CED0ATvW', 'bond': 'Gb3sH5uawH5WCUZ9',
|
||
'monetary': 'uGo5qniFnmT5eQjp', 'qdii': 'pTYExKwRmqrSaP0P'}
|
||
NAV_OPEN_T2 = {'all': '0', 'equity': '2', 'mix': '1',
|
||
'bond': '3', 'monetary': '0', 'qdii': '6'}
|
||
NAV_OPEN_T3 = ''
|
||
|
||
|
||
NAV_CLOSE_API = 'getNetValueClose'
|
||
NAV_CLOSE_KEY = ''
|
||
NAV_CLOSE_T2 = {'all': '0', 'fbqy': '4', 'fbzq': '9'}
|
||
NAV_CLOSE_T3 = {'all': '0', 'ct': '10',
|
||
'cx': '11', 'wj': '3', 'jj': '5', 'cz': '12'}
|
||
|
||
|
||
NAV_GRADING_API = 'getNetValueCX'
|
||
NAV_GRADING_KEY = ''
|
||
NAV_GRADING_T2 = {'all': '0', 'fjgs': '7', 'fjgg': '8'}
|
||
NAV_GRADING_T3 = {'all': '0', 'wjzq': '13',
|
||
'gp': '14', 'zs': '15', 'czzq': '16', 'jjzq': '17'}
|
||
|
||
|
||
NAV_DEFAULT_PAGE = 1
|
||
|
||
##########################################################################
|
||
# 基金数据列名
|
||
|
||
NAV_OPEN_COLUMNS = ['symbol', 'sname', 'per_nav', 'total_nav', 'yesterday_nav',
|
||
'nav_rate', 'nav_a', 'nav_date', 'fund_manager',
|
||
'jjlx', 'jjzfe']
|
||
|
||
NAV_HIS_JJJZ = ['fbrq', 'jjjz', 'ljjz']
|
||
NAV_HIS_NHSY = ['fbrq', 'nhsyl', 'dwsy']
|
||
|
||
FUND_INFO_COLS = ['symbol', 'jjqc', 'jjjc', 'clrq', 'ssrq', 'xcr', 'ssdd',
|
||
'Type1Name', 'Type2Name', 'Type3Name', 'jjgm', 'jjfe',
|
||
'jjltfe', 'jjferq', 'quarter', 'glr', 'tgr']
|
||
|
||
|
||
NAV_CLOSE_COLUMNS = ['symbol', 'sname', 'per_nav', 'total_nav', 'nav_rate',
|
||
'discount_rate', 'nav_date', 'start_date', 'end_date',
|
||
'fund_manager', 'jjlx', 'jjzfe']
|
||
|
||
|
||
NAV_GRADING_COLUMNS = ['symbol', 'sname', 'per_nav', 'total_nav', 'nav_rate',
|
||
'discount_rate', 'nav_date', 'start_date', 'end_date',
|
||
'fund_manager', 'jjlx', 'jjzfe']
|
||
|
||
|
||
NAV_COLUMNS = {'open': NAV_OPEN_COLUMNS,
|
||
'close': NAV_CLOSE_COLUMNS, 'grading': NAV_GRADING_COLUMNS}
|
||
|
||
##########################################################################
|
||
# 数据源URL
|
||
SINA_NAV_COUNT_URL = '%s%s/fund_center/data/jsonp.php/IO.XSRV2.CallbackList[\'%s\']/NetValue_Service.%s?ccode=&type2=%s&type3=%s'
|
||
SINA_NAV_DATA_URL = '%s%s/fund_center/data/jsonp.php/IO.XSRV2.CallbackList[\'%s\']/NetValue_Service.%s?page=%s&num=%s&ccode=&type2=%s&type3=%s'
|
||
|
||
SINA_NAV_HISTROY_COUNT_URL = '%s%s/fundInfo/api/openapi.php/CaihuiFundInfoService.getNav?symbol=%s&datefrom=%s&dateto=%s'
|
||
SINA_NAV_HISTROY_DATA_URL = '%s%s/fundInfo/api/openapi.php/CaihuiFundInfoService.getNav?symbol=%s&datefrom=%s&dateto=%s&num=%s'
|
||
|
||
SINA_NAV_HISTROY_COUNT_CUR_URL = '%s%s/fundInfo/api/openapi.php/CaihuiFundInfoService.getNavcur?symbol=%s&datefrom=%s&dateto=%s'
|
||
SINA_NAV_HISTROY_DATA_CUR_URL = '%s%s/fundInfo/api/openapi.php/CaihuiFundInfoService.getNavcur?symbol=%s&datefrom=%s&dateto=%s&num=%s'
|
||
|
||
SINA_DATA_DETAIL_URL = '%s%s/quotes_service/api/%s/Market_Center.getHQNodeData?page=1&num=400&sort=symbol&asc=1&node=%s&symbol=&_s_r_a=page'
|
||
|
||
SINA_FUND_INFO_URL = '%s%s/fundInfo/api/openapi.php/FundPageInfoService.tabjjgk?symbol=%s&format=json'
|
||
|
||
##########################################################################
|
||
DATA_GETTING_TIPS = '[Getting data:]'
|
||
DATA_GETTING_FLAG = '#'
|
||
DATA_ROWS_TIPS = '%s rows data found.Please wait for a moment.'
|
||
DATA_INPUT_ERROR_MSG = 'date input error.'
|
||
NETWORK_URL_ERROR_MSG = '获取失败,请检查网络和URL'
|
||
DATE_CHK_MSG = '年度输入错误:请输入1989年以后的年份数字,格式:YYYY'
|
||
DATE_CHK_Q_MSG = '季度输入错误:请输入1、2、3或4数字'
|
||
TOP_PARAS_MSG = 'top有误,请输入整数或all.'
|
||
LHB_MSG = '周期输入有误,请输入数字5、10、30或60'
|
||
|
||
OFT_MSG = u'开放型基金类型输入有误,请输入all、equity、mix、bond、monetary、qdii'
|
||
|
||
DICT_NAV_EQUITY = {
|
||
'fbrq': 'date',
|
||
'jjjz': 'value',
|
||
'ljjz': 'total',
|
||
'change': 'change'
|
||
}
|
||
|
||
DICT_NAV_MONETARY = {
|
||
'fbrq': 'date',
|
||
'nhsyl': 'value',
|
||
'dwsy': 'total',
|
||
'change': 'change'
|
||
}
|
||
|
||
import sys
|
||
PY3 = (sys.version_info[0] >= 3)
|
||
|
||
|
||
def _write_head():
|
||
sys.stdout.write(DATA_GETTING_TIPS)
|
||
sys.stdout.flush()
|
||
|
||
|
||
def _write_console():
|
||
sys.stdout.write(DATA_GETTING_FLAG)
|
||
sys.stdout.flush()
|
||
|
||
|
||
def _write_tips(tip):
|
||
sys.stdout.write(DATA_ROWS_TIPS % tip)
|
||
sys.stdout.flush()
|
||
|
||
|
||
def _write_msg(msg):
|
||
sys.stdout.write(msg)
|
||
sys.stdout.flush()
|
||
|
||
|
||
def _check_nav_oft_input(found_type):
|
||
if found_type not in NAV_OPEN_KEY.keys():
|
||
raise TypeError(OFT_MSG)
|
||
else:
|
||
return True
|
||
|
||
|
||
def _check_input(year, quarter):
|
||
if isinstance(year, str) or year < 1989:
|
||
raise TypeError(DATE_CHK_MSG)
|
||
elif quarter is None or isinstance(quarter, str) or quarter not in [1, 2, 3, 4]:
|
||
raise TypeError(DATE_CHK_Q_MSG)
|
||
else:
|
||
return True
|