|
@@ -1,120 +0,0 @@
|
|
|
-# -*- coding:utf-8 -*-
|
|
|
-
|
|
|
-__author__ = 'weijie'
|
|
|
-
|
|
|
-from EmQuantAPI import *
|
|
|
-from datetime import timedelta, datetime
|
|
|
-import time as _time
|
|
|
-import traceback
|
|
|
-import requests
|
|
|
-import re
|
|
|
-from dbOperationStock import dbOperationStock
|
|
|
-import db_config
|
|
|
-
|
|
|
-print("开始了")
|
|
|
-def mainCallback(quantdata):
|
|
|
- print ("mainCallback",str(quantdata))
|
|
|
- #登录掉线或者 登陆数达到上线(即登录被踢下线) 这时所有的服务都会停止
|
|
|
- if str(quantdata.ErrorCode) == "10001011" or str(quantdata.ErrorCode) == "10001009":
|
|
|
- print ("Your account is disconnect. You can force login automatically here if you need.")
|
|
|
- #行情登录验证失败(每次连接行情服务器时需要登录验证)或者行情流量验证失败时,会取消所有订阅,用户需根据具体情况处理
|
|
|
- elif str(quantdata.ErrorCode) == "10001021" or str(quantdata.ErrorCode) == "10001022":
|
|
|
- print ("Your all csq subscribe have stopped.")
|
|
|
- #行情服务器断线自动重连连续6次失败(1分钟左右)不过重连尝试还会继续进行直到成功为止,遇到这种情况需要确认两边的网络状况
|
|
|
- elif str(quantdata.ErrorCode) == "10002009":
|
|
|
- print ("Your all csq subscribe have stopped, reconnect 6 times fail.")
|
|
|
- # 行情订阅遇到一些错误(这些错误会导致重连,错误原因通过日志输出,统一转换成EQERR_QUOTE_RECONNECT在这里通知),正自动重连并重新订阅,可以做个监控
|
|
|
- elif str(quantdata.ErrorCode) == "10002012":
|
|
|
- print ("csq subscribe break on some error, reconnect and request automatically.")
|
|
|
- # 资讯服务器断线自动重连连续6次失败(1分钟左右)不过重连尝试还会继续进行直到成功为止,遇到这种情况需要确认两边的网络状况
|
|
|
- elif str(quantdata.ErrorCode) == "10002014":
|
|
|
- print ("Your all cnq subscribe have stopped, reconnect 6 times fail.")
|
|
|
- # 资讯订阅遇到一些错误(这些错误会导致重连,错误原因通过日志输出,统一转换成EQERR_INFO_RECONNECT在这里通知),正自动重连并重新订阅,可以做个监控
|
|
|
- elif str(quantdata.ErrorCode) == "10002013":
|
|
|
- print ("cnq subscribe break on some error, reconnect and request automatically.")
|
|
|
- # 资讯登录验证失败(每次连接资讯服务器时需要登录验证)或者资讯流量验证失败时,会取消所有订阅,用户需根据具体情况处理
|
|
|
- elif str(quantdata.ErrorCode) == "10001024" or str(quantdata.ErrorCode) == "10001025":
|
|
|
- print("Your all cnq subscribe have stopped.")
|
|
|
- else:
|
|
|
- pass
|
|
|
-
|
|
|
-def cnqCallback(quantdata):
|
|
|
- db = dbOperationStock(db_config.db_stock)
|
|
|
- for code in data.Data:
|
|
|
- # total = len(data.Data[code])
|
|
|
- for k in range(0, len(data.Data[code])):
|
|
|
- # print(data.Data[code][k])
|
|
|
- # print(data.Data[code][k][7])
|
|
|
- se = requests.session()
|
|
|
- url = "http://app.jg.eastmoney.com/NewsData/GetNewsText.do?cid=Admin&cid=Admin&id=" + data.Data[code][k][5]
|
|
|
- dfNews = se.post(url).text.replace("'", '"').replace('/ ', '/')
|
|
|
- dfNew = eval(dfNews)
|
|
|
- # print(dfNew)
|
|
|
- content = str(dfNew['text']).replace("<a","<span").replace("/a>","/span>")
|
|
|
- pattern = 'https://z1.*?\.jpg'
|
|
|
- p2 = re.findall(pattern, str(content))
|
|
|
- # print(p2)
|
|
|
- imgUrl = "http://47.96.39.5:8080/public/default.png"
|
|
|
- if(0 != len(p2)) :
|
|
|
- imgUrl = p2[0]
|
|
|
- sql = "insert into `news` (`title`, `cover`, `content`, `source`, `hot`, `publish_time`, `create_time`, `update_time`) values('" + str(dfNew['Title']) + "', '" + str(imgUrl) + "', '" + str(content) +"', '" + str(dfNew['medianame']) + "',0,'" + str(dfNew['Date']) + "',now(),now());"
|
|
|
- # print(sql)
|
|
|
- db.insert(sql)
|
|
|
- db.close()
|
|
|
-
|
|
|
-
|
|
|
-try:
|
|
|
- #调用登录函数(激活后使用,不需要用户名密码)
|
|
|
- loginResult = c.start("ForceLogin=1", '', mainCallback)
|
|
|
- if(loginResult.ErrorCode != 0):
|
|
|
- print("login in fail")
|
|
|
- exit()
|
|
|
- # 资讯查询使用范例
|
|
|
- data = c.cfn("S888005002API", "sectornews", eCfnMode_EndCount, "starttime=20201106010000,endtime=20201107,count=10")
|
|
|
- print("cfn输出结果======分隔线======")
|
|
|
- if (not isinstance(data, c.EmQuantData)):
|
|
|
- print (data)
|
|
|
- else:
|
|
|
- if (data.ErrorCode != 0):
|
|
|
- print("request cfn Error, ", data.ErrorMsg)
|
|
|
- else:
|
|
|
- db = dbOperationStock(db_config.db_stock)
|
|
|
- for code in data.Data:
|
|
|
- # total = len(data.Data[code])
|
|
|
- for k in range(0, len(data.Data[code])):
|
|
|
- # print(data.Data[code][k])
|
|
|
- # print(data.Data[code][k][7])
|
|
|
- se = requests.session()
|
|
|
- url = "http://app.jg.eastmoney.com/NewsData/GetNewsText.do?cid=Admin&cid=Admin&id=" + data.Data[code][k][5]
|
|
|
- dfNews = se.post(url).text.replace("'", '"').replace('/ ', '/')
|
|
|
- dfNew = eval(dfNews)
|
|
|
- # print(dfNew)
|
|
|
- content = str(dfNew['text']).replace("<a","<span").replace("/a>","/span>")
|
|
|
- pattern = 'https://z1.*?\.jpg'
|
|
|
- p2 = re.findall(pattern, str(content))
|
|
|
- # print(p2)
|
|
|
- imgUrl = "http://47.96.39.5:8080/public/default.png"
|
|
|
- if(0 != len(p2)) :
|
|
|
- imgUrl = p2[0]
|
|
|
- sql = "insert into `news` (`title`, `cover`, `content`, `source`, `hot`, `publish_time`, `create_time`, `update_time`) values('" + str(dfNew['Title']) + "', '" + str(imgUrl) + "', '" + str(content) +"', '" + str(dfNew['medianame']) + "',0,'" + str(dfNew['Date']) + "',now(),now());"
|
|
|
- # print(sql)
|
|
|
- db.insert(sql)
|
|
|
- db.close()
|
|
|
-
|
|
|
- # # 资讯订阅使用范例 S888005009API 昨日涨停
|
|
|
- data = c.cnq("S888005002API","sectornews","",cnqCallback)
|
|
|
- if data.ErrorCode != 0:
|
|
|
- print("request cnq Error, ", data.ErrorMsg)
|
|
|
- else:
|
|
|
- print("cnq输出结果======分隔线======")
|
|
|
- text = input("press any key to cancel cnq \r\n")
|
|
|
- # 取消订阅
|
|
|
- data = c.cnqcancel(data.SerialID)
|
|
|
-
|
|
|
-#退出
|
|
|
- data = logoutResult = c.stop()
|
|
|
-except Exception as ee:
|
|
|
- print("error >>>",ee)
|
|
|
- traceback.print_exc()
|
|
|
-else:
|
|
|
- print("demo end")
|