|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import json
|
|
from abc import ABC
|
|
import pandas as pd
|
|
import requests
|
|
from agent.component.base import ComponentBase, ComponentParamBase
|
|
|
|
|
|
class Jin10Param(ComponentParamBase):
|
|
"""
|
|
Define the Jin10 component parameters.
|
|
"""
|
|
|
|
def __init__(self):
|
|
super().__init__()
|
|
self.type = "flash"
|
|
self.secret_key = "xxx"
|
|
self.flash_type = '1'
|
|
self.calendar_type = 'cj'
|
|
self.calendar_datatype = 'data'
|
|
self.symbols_type = 'GOODS'
|
|
self.symbols_datatype = 'symbols'
|
|
self.contain = ""
|
|
self.filter = ""
|
|
|
|
def check(self):
|
|
self.check_valid_value(self.type, "Type", ['flash', 'calendar', 'symbols', 'news'])
|
|
self.check_valid_value(self.flash_type, "Flash Type", ['1', '2', '3', '4', '5'])
|
|
self.check_valid_value(self.calendar_type, "Calendar Type", ['cj', 'qh', 'hk', 'us'])
|
|
self.check_valid_value(self.calendar_datatype, "Calendar DataType", ['data', 'event', 'holiday'])
|
|
self.check_valid_value(self.symbols_type, "Symbols Type", ['GOODS', 'FOREX', 'FUTURE', 'CRYPTO'])
|
|
self.check_valid_value(self.symbols_datatype, 'Symbols DataType', ['symbols', 'quotes'])
|
|
|
|
|
|
class Jin10(ComponentBase, ABC):
|
|
component_name = "Jin10"
|
|
|
|
def _run(self, history, **kwargs):
|
|
ans = self.get_input()
|
|
ans = " - ".join(ans["content"]) if "content" in ans else ""
|
|
if not ans:
|
|
return Jin10.be_output("")
|
|
|
|
jin10_res = []
|
|
headers = {'secret-key': self._param.secret_key}
|
|
try:
|
|
if self._param.type == "flash":
|
|
params = {
|
|
'category': self._param.flash_type,
|
|
'contain': self._param.contain,
|
|
'filter': self._param.filter
|
|
}
|
|
response = requests.get(
|
|
url='https://open-data-api.jin10.com/data-api/flash?category=' + self._param.flash_type,
|
|
headers=headers, data=json.dumps(params))
|
|
response = response.json()
|
|
for i in response['data']:
|
|
jin10_res.append({"content": i['data']['content']})
|
|
if self._param.type == "calendar":
|
|
params = {
|
|
'category': self._param.calendar_type
|
|
}
|
|
response = requests.get(
|
|
url='https://open-data-api.jin10.com/data-api/calendar/' + self._param.calendar_datatype + '?category=' + self._param.calendar_type,
|
|
headers=headers, data=json.dumps(params))
|
|
|
|
response = response.json()
|
|
jin10_res.append({"content": pd.DataFrame(response['data']).to_markdown()})
|
|
if self._param.type == "symbols":
|
|
params = {
|
|
'type': self._param.symbols_type
|
|
}
|
|
if self._param.symbols_datatype == "quotes":
|
|
params['codes'] = 'BTCUSD'
|
|
response = requests.get(
|
|
url='https://open-data-api.jin10.com/data-api/' + self._param.symbols_datatype + '?type=' + self._param.symbols_type,
|
|
headers=headers, data=json.dumps(params))
|
|
response = response.json()
|
|
if self._param.symbols_datatype == "symbols":
|
|
for i in response['data']:
|
|
i['Commodity Code'] = i['c']
|
|
i['Stock Exchange'] = i['e']
|
|
i['Commodity Name'] = i['n']
|
|
i['Commodity Type'] = i['t']
|
|
del i['c'], i['e'], i['n'], i['t']
|
|
if self._param.symbols_datatype == "quotes":
|
|
for i in response['data']:
|
|
i['Selling Price'] = i['a']
|
|
i['Buying Price'] = i['b']
|
|
i['Commodity Code'] = i['c']
|
|
i['Stock Exchange'] = i['e']
|
|
i['Highest Price'] = i['h']
|
|
i['Yesterday’s Closing Price'] = i['hc']
|
|
i['Lowest Price'] = i['l']
|
|
i['Opening Price'] = i['o']
|
|
i['Latest Price'] = i['p']
|
|
i['Market Quote Time'] = i['t']
|
|
del i['a'], i['b'], i['c'], i['e'], i['h'], i['hc'], i['l'], i['o'], i['p'], i['t']
|
|
jin10_res.append({"content": pd.DataFrame(response['data']).to_markdown()})
|
|
if self._param.type == "news":
|
|
params = {
|
|
'contain': self._param.contain,
|
|
'filter': self._param.filter
|
|
}
|
|
response = requests.get(
|
|
url='https://open-data-api.jin10.com/data-api/news',
|
|
headers=headers, data=json.dumps(params))
|
|
response = response.json()
|
|
jin10_res.append({"content": pd.DataFrame(response['data']).to_markdown()})
|
|
except Exception as e:
|
|
return Jin10.be_output("**ERROR**: " + str(e))
|
|
|
|
if not jin10_res:
|
|
return Jin10.be_output("")
|
|
|
|
return pd.DataFrame(jin10_res)
|
|
|