Browse Source

Really PEP8ify

Broke the API, but it's now fully compliant (AFAIK)
pull/2/head
scoopgracie 4 years ago
parent
commit
68adb47d56
  1. 22
      README.md
  2. 36
      stockquotes/__init__.py

22
README.md

@ -3,10 +3,11 @@ historical data from Yahoo! Finance. It's perfect for developers who can't
afford the (often high) prices charged by many stock data APIs. afford the (often high) prices charged by many stock data APIs.
# Requirements # Requirements
* Python 3.6+ * Python 3.5+
* Beautiful Soup 4 * Beautiful Soup 4
# Installation # Installation
pip3 install stockquotes pip3 install stockquotes
# Usage # Usage
@ -20,15 +21,15 @@ parameter is the ticker symbol to look up.
kroger = stockquotes.Stock('KR') kroger = stockquotes.Stock('KR')
## Basic data ## Basic data
To get the current price of a share, get the `Stock`'s `currentPrice`. To get the current price of a share, get the `Stock`'s `current_price`.
krogerPrice = kroger.currentPrice krogerPrice = kroger.current_price
To get the day gain in dollars, get the `Stock`'s `increaseDollars`. To get the day gain in dollars, get the `Stock`'s `increase_dollars`.
krogerGainDollars = kroger.increaseDollars krogerGainDollars = kroger.increase_dollars
The same value as a percent is available in the `increasePercent` property. To The same value as a percent is available in the `increase_percent` property. To
indicate losses, these values are negative. indicate losses, these values are negative.
## Historical data ## Historical data
@ -37,10 +38,10 @@ The historical data for a stock can be accessed through the `Stock`'s
representing the most recent quote. The `dict`'s `date` property is a representing the most recent quote. The `dict`'s `date` property is a
`datetime` object representing the date the quote is from. `open` is the `datetime` object representing the date the quote is from. `open` is the
opening price for that day. `high` and `low` are the high and low prices, opening price for that day. `high` and `low` are the high and low prices,
respectively, for that day. `close` and `adjClose` are the closing price. The respectively, for that day. `close` and `adjusted_close` are the closing
difference is that `adjClose` is adjusted for splits and dividends, whereas price. The difference is that `adjClose` is adjusted for splits and
`close` is adjusted only for splits. `volume` is the stock's volume for that dividends, whereas `close` is adjusted only for splits. `volume` is the
day. stock's volume for that day.
Typically, this should give at least a month of data. Obviously, it gives less Typically, this should give at least a month of data. Obviously, it gives less
for recent IPOs. Also, a known but unexplained bug causes it to only give two for recent IPOs. Also, a known but unexplained bug causes it to only give two
@ -78,4 +79,3 @@ ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
OTHER DEALINGS IN THE SOFTWARE. OTHER DEALINGS IN THE SOFTWARE.
For more information, please refer to <https://unlicense.org/> For more information, please refer to <https://unlicense.org/>

36
stockquotes/__init__.py

@ -63,30 +63,32 @@ class Stock:
row[0].span.string, row[0].span.string,
'%b %d, %Y' '%b %d, %Y'
), ),
"open" : float(row[1].span.string.replace(',', '')), "open": float(row[1].span.string.replace(',', '')),
"high" : float(row[2].span.string.replace(',', '')), "high": float(row[2].span.string.replace(',', '')),
"low" : float(row[3].span.string.replace(',', '')), "low": float(row[3].span.string.replace(',', '')),
"close" : float(row[4].span.string.replace(',', '')), "close": float(row[4].span.string.replace(',', '')),
"adjClose": float(row[5].span.string.replace(',', '')), "adjusted_close": float(
"volume" : int(row[6].span.string.replace(',', '')) row[5].span.string.replace(',', '')),
"volume": int(row[6].span.string.replace(',', ''))
} }
except: except:
continue continue
self.historical.append(parsed) self.historical.append(parsed)
topData = soup.find(id='quote-header-info') top_data = soup.find(id='quote-header-info')
try: try:
self.currentPrice = float( self.current_price = float(
topData.findAll('span')[11].string.replace(',', '')) top_data.findAll('span')[11].string.replace(',', ''))
rawChange = topData.findAll('span')[12].string raw_change = top_data.findAll('span')[12].string
except IndexError: except IndexError:
self.currentPrice = float( self.current_price = float(
topData.findAll('span')[3].string.replace(',', '')) top_data.findAll('span')[3].string.replace(',', ''))
rawChange = topData.findAll('span')[4].string raw_change = top_data.findAll('span')[4].string
self.increaseDollars = float( self.increase_dollars = float(
rawChange.split(' ')[0].replace(',', '')) raw_change.split(' ')[0].replace(',', ''))
self.increasePercent = float( self.increase_percent = float(
rawChange.split(' ')[1]\ raw_change.split(' ')[1]\
.replace(',', '')\ .replace(',', '')\
.replace('(', '')\ .replace('(', '')\
.replace(')', '')\ .replace(')', '')\

Loading…
Cancel
Save