done sync us stock and change env
This commit is contained in:
@@ -31,6 +31,9 @@ public class StockNewTask {
|
||||
private static final String BASE_URL = "https://symbol-search.tradingview.com/symbol_search/v3/";
|
||||
private static final String PARAMS = "?start={start}&hl=1&country=DE&lang=en&search_type=stocks&domain=production&sort_by_country=US&promo=true&exchange={exchange}";
|
||||
|
||||
private static final String US_URL =
|
||||
"https://financialmodelingprep.com/api/v3/stock-screener";
|
||||
private static final String US_API_KEY = "57ZI1xeAsqHY7ag0FBuMkwQzt6TQ60dG";
|
||||
@Autowired
|
||||
StockRepository stockRepository;
|
||||
|
||||
@@ -113,4 +116,71 @@ public class StockNewTask {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
@Scheduled(cron = "0 0 8 * * *")
|
||||
// @PostConstruct
|
||||
public void fetchListStock() {
|
||||
try {
|
||||
List<Stock> nasdaqStocks = fetchStocksByExchange("NASDAQ");
|
||||
List<Stock> nyseStocks = fetchStocksByExchange("NYSE");
|
||||
|
||||
List<Stock> allActiveStocks = new ArrayList<>();
|
||||
allActiveStocks.addAll(nasdaqStocks);
|
||||
allActiveStocks.addAll(nyseStocks);
|
||||
|
||||
try {
|
||||
if (!allActiveStocks.isEmpty()) {
|
||||
stockRepository.saveAll(allActiveStocks);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
log.error("Insert stock failed: {}", e.getMessage());
|
||||
}
|
||||
} catch (Exception e) {
|
||||
log.error("Error fetchListStock every day: {}", e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
private static List<Stock> fetchStocksByExchange(String exchange) throws Exception {
|
||||
List<Stock> result = new ArrayList<>();
|
||||
|
||||
String url = US_URL + "?exchange=" + exchange + "&apikey=" + US_API_KEY;
|
||||
|
||||
Request request = new Request.Builder()
|
||||
.url(url)
|
||||
.addHeader("accept", "application/json")
|
||||
.addHeader("user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64)")
|
||||
.build();
|
||||
|
||||
Response response = client.newCall(request).execute();
|
||||
|
||||
if (!response.isSuccessful()) {
|
||||
throw new RuntimeException("HTTP error code: " + response.code());
|
||||
}
|
||||
|
||||
String body = response.body().string();
|
||||
JSONArray array = new JSONArray(body);
|
||||
|
||||
for (int i = 0; i < array.length(); i++) {
|
||||
JSONObject obj = array.getJSONObject(i);
|
||||
if (!obj.optBoolean("isActivelyTrading", false) && obj.optBoolean("isEtf", false)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
Stock stock = new Stock();
|
||||
|
||||
String stockCodeNew = obj.getString("symbol") + ":" + obj.getString("exchangeShortName");
|
||||
|
||||
stock.setStockName(obj.getString("companyName"));
|
||||
stock.setStockCode(stockCodeNew);
|
||||
stock.setStockSpell(obj.getString("symbol"));
|
||||
stock.setStockType(obj.getString("exchangeShortName"));
|
||||
stock.setStockGid(stockCodeNew);
|
||||
stock.setStockSymbol(obj.getString("symbol"));
|
||||
|
||||
result.add(stock);
|
||||
}
|
||||
|
||||
System.out.println("Fetched " + result.size() + " stocks for exchange: " + exchange);
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,9 +3,9 @@ spring:
|
||||
show-sql: true
|
||||
# Redis配置
|
||||
redis:
|
||||
host: 43.153.142.41
|
||||
password: a5v8b86P4mVzFlUqJV
|
||||
port: 30041
|
||||
host: 43.160.197.177
|
||||
password: redispass123
|
||||
port: 6379
|
||||
database: 1
|
||||
lettuce:
|
||||
pool:
|
||||
@@ -17,9 +17,9 @@ spring:
|
||||
datasource:
|
||||
stock-market:
|
||||
driver-class-name: com.mysql.cj.jdbc.Driver
|
||||
url: jdbc:mysql://43.153.142.41:30040/germany_stock?useUnicode=true&characterEncoding=utf-8
|
||||
url: jdbc:mysql://43.160.197.177:3306/germany_stock?useUnicode=true&characterEncoding=utf-8
|
||||
username: root
|
||||
password: uNejHIFQGJOUtYTmE
|
||||
password: mysqlpass123
|
||||
maxActive: 500
|
||||
testWhileIdle: true
|
||||
validationQuery: SELECT 1
|
||||
|
||||
Reference in New Issue
Block a user