7 #These constants are specific to the Yahoo Finance
13 AVERAGE_DAILY_VOL
= 'a2'
20 CHANGE_PERCENT_CHANGE
= 'c'
24 AFTER_HOURS_CHANGE
= 'c8'
25 DIVIDEND_PER_SHARE
= 'd'
26 LAST_TRADE_DATE
= 'd1'
37 HOLDINGS_GAIN_PERCENT
= 'g1'
38 ANNUALIZED_GAIN
= 'g3'
40 HOLDINGS_GAIN_PERCENT
= 'g5'
41 HOLDINGS_GAIN_RT
= 'g6'
46 CHANGE_FROM_52W_LOW
= 'j5'
47 PER_CHANGE_FROM_52W_LOW
= 'j6'
48 LAST_TRADE_WITH_TIME_RT
= 'k1'
49 CHANGE_PERCENT_RT
= 'k2'
50 LAST_TRADE_SIZE
= 'k3'
51 CHANGE_FROM_52W_HIGH
= 'k4'
52 PER_CHANGE_FROM_52W_HIGH
= 'k5'
53 LAST_TRADE_WITH_TIME
= 'l'
54 LAST_TRADE_PRICE
= 'l1'
61 CHANGE_FROM_200D_MA
= 'm5'
62 PERC_CHANGE_FROM_200D_MA
= 'm6'
63 CHANGE_FROM_50D_MA
= 'm7'
64 PERC_CHANGE_FROM_50D_MA
= 'm8'
70 PRICE_PER_SALES
= 'p5'
72 EX_DIVIDEND_DATE
= 'q'
74 DIVIDEND_PAY_DATE
= 'r1'
77 PRICE_PER_EPS_CUR_YEAR
= 'r6'
78 PRICE_PER_EPS_NEXT_YEAR
= 'r7'
82 LAST_TRADE_TIME
= 't1'
85 ONE_YEAR_TARGET
= 't8'
88 HOLDINGS_VALUE_RT
= 'v7'
90 DAY_VALUE_CHANGE
= 'w1'
91 DAY_VALUE_CHANGE_RT
= 'w4'
95 valid_requests
= ['n' , 'a', 'a2', 'a5', 'b', 'b2', 'b3', 'b4', 'b6', 'c', 'c1', 'c3', 'c6', 'c8', 'd', 'd1', 'd2', 'e', 'e7', 'e9', 'f6', 'g', 'h', 'j', 'k', 'g1', 'g3', 'g4', 'g5', 'g6', 'i5', 'j1', 'j3', 'j4', 'j5', 'j6', 'k1', 'k2', 'k3', 'k4', 'k5', 'l', 'l1', 'l2', 'l3', 'm', 'm2', 'm3', 'm4', 'm5', 'm6', 'm7', 'm8', 'n4', 'o', 'p', 'p1', 'p2', 'p5', 'p6', 'q', 'r', 'r1', 'r2', 'r5', 'r6', 'r7', 's', 's1', 's7', 't1', 't6', 't7', 't8', 'v', 'v1', 'v7', 'w', 'w1', 'w4', 'x']
97 def check_request(field
):
98 p
= re
.compile('[a-z][0-9]|[a-z]')
99 list = p
.findall(field
)
100 for user_entry
in list:
102 for word
in valid_requests
:
103 if word
== user_entry
:
106 print "Error, malfomed request: " + user_entry
107 print "Please ensure that the symbols you are requesting are part of the Yahoo API"
108 print "fatal: Exiting program"
111 def yahoo_request(sym
, field
):
117 prefix
= "http://finance.yahoo.com/d/quotes.csv?s="
118 url
= prefix
+ sym
+ "&f=" + field
119 print "Requesting: " + url
120 data
= urllib
.urlopen(url
).read()
123 data_list
= data
.split(',')
129 def yahoo_hist_request(sym
, start
, end
):
130 prefix
= "http://ichart.yahoo.com/table.csv?s="
131 suffix
= "&ignore=.csv"
133 start_list
= start
.split('-')
134 end_list
= end
.split('-')
136 if (len(start_list
) != len(end_list
) != 3):
137 print "Error, stockr yahoo historical api does not understand "\
138 + start
+ " or " + end
+ ". Use the format 2008-1-30"
140 start_date_url
= "&g=d&a=" + start_list
[2] + "&b=" + start_list
[1] + "&c=" + start_list
[0]
141 end_date_url
= "&d=" + end_list
[2] + "&e=" + end_list
[1] + "&f=" + end_list
[0]
143 url
= prefix
+ sym
+ end_date_url
+ start_date_url
+ suffix
145 print "Request url for historical quote: " + url
146 data
= urllib
.urlopen(url
).read()
153 #yahoo_hist_request("XOM", "2007-1-1", "2008-1-1")
155 print yahoo_request("XOm", NAME
+ AVERAGE_DAILY_VOL
)