public static async Task <List <FinamCsvRecord> > DownloadQuotes(FinamTickerId ticker) { var dateFrom = new DateTime(1970, 1, 1); var dateTo = DateTime.Now.AddDays(-1); var url = string.Format( "http://export.finam.ru/quote.txt?" + "market={5}&em={4}&code={3}&apply=0&" + "df={0}&mf={1}&yf={2}&from={9:dd.mm.yy}&" + "dt={6}&mt={7}&yt={8}&to={10:dd.mm.yy}&" + "p=8&f=quote&e=.txt&cn={3}&dtf=1&tmf=1&" + "MSOR=1&mstime=on&mstimever=1&sep=1&sep2=1&datf=1&at=1", dateFrom.Day, dateFrom.Month - 1, dateFrom.Year, ticker.Ticker, ticker.Id, ticker.Market, dateTo.Day, dateTo.Month - 1, dateTo.Year, dateFrom, dateTo); var downloader = new WebDownloader(); var content = await downloader.DownloadStringTaskAsync(url); var csv = new CsvReader(new StringReader(content)); csv.Configuration.RegisterClassMap <FinamCsvRecordMap>(); var quotes = csv.GetRecords <FinamCsvRecord>().ToList(); return(quotes); }
public static async Task <List <FinamTickerId> > DownloadMapping() { var downloader = new WebDownloader(); var jsdata = await downloader.DownloadStringTaskAsync("http://www.finam.ru/cache/icharts/icharts.js"); string[] responseVars = jsdata.Split('\n'); string[] emitentIDs = { }; string[] emitentCodes = { }; string[] emitentMarkets = { }; for (var i = 0; i < responseVars.Length; i++) { switch (i) { case 0: emitentIDs = ClearBrakes(responseVars[i].Split(',')); break; case 2: emitentCodes = ClearBrakes(responseVars[i].Split(',')); break; case 3: emitentMarkets = ClearBrakes(responseVars[i].Split(',')); break; } } var tickerMapping = new List <FinamTickerId>(); for (int i = 0; i < emitentIDs.Length; i++) { FinamTickerId emitent = new FinamTickerId() { Id = emitentIDs[i], Ticker = emitentCodes[i].Trim('\''), Market = emitentMarkets[i] }; tickerMapping.Add(emitent); } return(tickerMapping); }