import re
import feedparser
import csv
from urlgrabber.grabber import URLGrabber
class YFinEngine:
def __init__(self):
self.symbol_pattern=re.compile("^[A-Z]{4}$")
self.grabber=URLGrabber()
"""
Determines whether the symbol is a valid NYSE symbol
"""
def validate_symbol(self,symbol):
retval=False
match=self.symbol_pattern.match(symbol)
if match:
retval=True
return retval
"""
Builds a CSV file url for a specific company
"""
def getstockurl(self,symbol):
return "%ss=%s&f=sl1d1t1c1ohgv&e=.csv" %\
("http://finance.yahoo.com/d/quotes.csv?",symbol)
"""
Returns a companies current stock quote
"""
def getCurrentQuote(self,symbol):
url=self.getstockurl(symbol)
data=self.grabber.urlread(url)
return list(csv.reader(data)[0])
"""
Returns feedparser RSS feed entries for Yahoos news feed for a specified symbol/company.
"""
def getnews(self,symbol):
url=self.getnewsurl(symbol)
for entry in feedparser.parse(url,handlers=[self.grabber]).entries:
yield entry
"""
Builds an RSS feed url given a specific company
"""
def getnewsurl(self,symbol):
return "%ss=%s" %("http://finance.yahoo.com/rss/headline?",symbol)