Skip to content

Commit 0541252

Browse files
committed
download last_trade_date by default for yql calls
1 parent 3766903 commit 0541252

File tree

1 file changed

+25
-13
lines changed

1 file changed

+25
-13
lines changed

pytradelib/yahoo/yql.py

Lines changed: 25 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,14 @@
1+
2+
3+
from pytradelib.utils import batch
4+
from pytradelib.downloader import Downloader
5+
16
from urllib import urlencode
7+
try:
8+
import simplejson as json
9+
except ImportError:
10+
import json
211

3-
from pytradelib.utils import batch, bulk_download
412

513
def get_yql_url(yql):
614
base_url = 'http://query.yahooapis.com/v1/public/yql?'
@@ -15,9 +23,9 @@ def get_yql_url(yql):
1523
_EXCHANGES = {
1624
'ASE': 'AMEX',
1725
'NYQ': 'NYSE',
18-
'NMS': 'NASDAQ', #'NasdaqGS',
19-
'NGM': 'NASDAQ', #'NasdaqGM',
20-
'NCM': 'NASDAQ', #'NasdaqCM',
26+
'NMS': 'NASDAQ', # 'NasdaqGS',
27+
'NGM': 'NASDAQ', # 'NasdaqGM',
28+
'NCM': 'NASDAQ', # 'NasdaqCM',
2129
}
2230

2331

@@ -30,28 +38,32 @@ def _convert_result(result):
3038
r = {}
3139
for k, v in result.items():
3240
if k == 'StockExchange':
33-
k = 'Exchange'
41+
k = 'exchange'
3442
v = _EXCHANGES.get(v, None)
43+
if k == 'ErrorIndicationreturnedforsymbolchangedinvalid':
44+
k = 'error'
45+
if k == 'LastTradeDate':
46+
k = 'last_trade_date'
3547
r[k.lower()] = v
3648
return r
3749

3850

39-
def get_symbol_info(symbols, keys=None):
51+
def get_symbols_info(symbols, keys=None):
4052
if not isinstance(symbols, (list, tuple)):
4153
symbols = list(symbols)
42-
keys = keys or ['Symbol', 'Name', 'StockExchange']
54+
keys = keys or ['Symbol', 'Name', 'StockExchange', 'LastTradeDate']
4355
yql = 'select %(keys)s from yahoo.finance.quotes where symbol in (%(symbols)s)'
4456

4557
urls = []
4658
for batched_symbols in batch(symbols, 100):
4759
csv_symbols = ','.join(['"%s"' % s.upper() for s in batched_symbols])
4860
urls.append(get_yql_url(yql % {'keys': ','.join(keys),
4961
'symbols': csv_symbols}))
62+
downloader = Downloader()
5063

51-
results = {}
52-
for r in bulk_download(urls):
53-
for result in r.json()['query']['results']['quote']:
54-
result = _convert_result(result)
55-
results[result['symbol']] = result
56-
64+
results = []
65+
for url, text in downloader.download(urls):
66+
json_ = json.loads(text)
67+
for result in json_['query']['results']['quote']:
68+
results.append(_convert_result(result))
5769
return results

0 commit comments

Comments
 (0)