Skip to content

Commit ea89c8e

Browse files
committed
Support ING Wertpapiere as source
1 parent f0a8429 commit ea89c8e

1 file changed

Lines changed: 117 additions & 0 deletions

File tree

js/ing.js

Lines changed: 117 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,117 @@
1+
// Script for Hibiscus Depot Viewer
2+
// Original version by Maxr1998
3+
4+
var Logger = Packages.de.willuhn.logging.Logger;
5+
var ArrayList = java.util.ArrayList;
6+
var JDate = java.util.Date;
7+
var BigDecimal = java.math.BigDecimal;
8+
9+
var fetcher;
10+
var s;
11+
12+
function getAPIVersion() {
13+
return "1";
14+
};
15+
16+
function getVersion() {
17+
return "2025-01-31";
18+
};
19+
20+
function getName() {
21+
return "ING Wertpapiere";
22+
};
23+
24+
function getURL() {
25+
return "https://wertpapiere.ing.de";
26+
};
27+
28+
function prepare(fetch, search, startyear, startmon, startday, stopyear, stopmon, stopday) {
29+
Logger.info("Configuring...");
30+
fetcher = fetch;
31+
s = search;
32+
33+
var cfgliste = new ArrayList();
34+
35+
// Zeitraum
36+
var timeRange = new Packages.jsq.config.Config("Zeitraum");
37+
timeRange.addAuswahl("Eine Woche", new String("OneWeek"));
38+
timeRange.addAuswahl("Ein Monat", new String("OneMonth"));
39+
timeRange.addAuswahl("Ein Jahr", new String("OneYear"));
40+
timeRange.addAuswahl("Fuenf Jahre", new String("FiveYears"));
41+
timeRange.addAuswahl("Maximum", new String("Maximum"));
42+
43+
// Handelsplatz
44+
var exchange = new Packages.jsq.config.Config("Handelsplatz");
45+
exchange.addAuswahl("Direkthandel", new String("2779"));
46+
exchange.addAuswahl("Xetra", new String("44"));
47+
exchange.addAuswahl("Frankfurt", new String("13"));
48+
exchange.addAuswahl("Duesseldorf", new String("14"));
49+
exchange.addAuswahl("Muenchen", new String("15"));
50+
exchange.addAuswahl("Stuttgart", new String("16"));
51+
exchange.addAuswahl("Hamburt", new String("17"));
52+
exchange.addAuswahl("Berlin", new String("18"));
53+
exchange.addAuswahl("Hannover", new String("19"));
54+
exchange.addAuswahl("USA (Nasdaq)", new String("537"));
55+
56+
cfgliste.add(timeRange);
57+
cfgliste.add(exchange);
58+
59+
return cfgliste;
60+
}
61+
62+
function process(config) {
63+
var timeRange = "OneYear";
64+
var exchange = "2779" // Direkthandel
65+
for (i = 0; i < config.size(); i++) {
66+
var cfg = config.get(i);
67+
Logger.info(cfg.toString());
68+
for (j = 0; j < cfg.getSelected().size(); j++) {
69+
var o = cfg.getSelected().get(j);
70+
if (cfg.getBeschreibung().equals("Zeitraum")) {
71+
timeRange = o.getObj();
72+
} else if (cfg.getBeschreibung().equals("Handelsplatz")) {
73+
exchange = o.getObj();
74+
}
75+
}
76+
}
77+
78+
var webClient = fetcher.getWebClient(false);
79+
80+
Logger.info("Fetching metadata for " + s);
81+
82+
// Fetch ID
83+
var page = webClient.getPage("https://component-api.wertpapiere.ing.de/api/v1/components/instrumentheader/" + s);
84+
var metadata = JSON.parse(page.getWebResponse().getContentAsString());
85+
var id = metadata["id"];
86+
87+
Logger.info("Stock " + s + " has ID " + id + ", fetching prices...");
88+
89+
// Fetch data
90+
page = webClient.getPage("https://component-api.wertpapiere.ing.de/api/v1/charts/shm/" + id + "?timeRange=" + timeRange + "&exchangeId=" + exchange + "&currencyId=814");
91+
var response = JSON.parse(page.getWebResponse().getContentAsString());
92+
var data = response["instruments"][0]["data"];
93+
94+
Logger.info("Fetched " + data.length + " results.");
95+
96+
if (data.length === 0) {
97+
fetcher.setHistQuotes(new ArrayList());
98+
return;
99+
}
100+
101+
var res = new ArrayList();
102+
for (var i = 1; i < data.length; i++) {
103+
var dataPoint = data[i - 1];
104+
var date = new JDate(dataPoint[0]);
105+
var price = new BigDecimal(dataPoint[1]);
106+
var newDate = new JDate(data[i][0]);
107+
// Ensure there's only one result per day
108+
if (date.getDay() != newDate.getDay()) {
109+
var dc = new Packages.jsq.datastructes.Datacontainer();
110+
dc.put("currency", "EUR");
111+
dc.put("date", date);
112+
dc.put("last", price);
113+
res.add(dc);
114+
}
115+
}
116+
fetcher.setHistQuotes(res);
117+
}

0 commit comments

Comments
 (0)