cryptocoin_fanboi 0.5.0 → 0.5.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 07c9a2156681bbbee487cca2e1fffecde1640c56
4
- data.tar.gz: cc3a923a667276916cde2ea98abf5dce29879bca
3
+ metadata.gz: 3929cc439847dc1e4b71b720c45584e323c8e77e
4
+ data.tar.gz: 513769689ce54d9a4c6e9f640903bea77a81cf3e
5
5
  SHA512:
6
- metadata.gz: '001428295c50188accd277f9dfa23101d1a845e2f3477c05832ef2c88614d3782cf90d9b1305b62982960017c49a2c05b233ba8aed98342856d97c848b4c92b3'
7
- data.tar.gz: f0992ced6130d46d0764bceec720aed292d4b6144c1f2b315016e21a1daaa3c2d5e28270e50a05cb6f11784420c632d4924e88dd2cc34f0b29fa81afc45001e2
6
+ metadata.gz: 8584f6c4deb8a788f89635bc3fa491121f9d9a51a827003941f309fec4dba8f41d72bc3fd62deb8b7cbc84e7fad6ebaea140c554e27bb22fc8bfc9b36d4c06b4
7
+ data.tar.gz: 809145098b26dbcd70ba37d0a77e845ba01595442b8e0ffbd1239b99a88cc5d2c29318fe2a1ab805838b0d1490c060c5f531e652fa2fe72934403497643e2297
checksums.yaml.gz.sig CHANGED
@@ -1 +1,3 @@
1
- D6��Jzr���� ��^��L|n�3H��l�9f˒�v��S&�;��]��1ض�ST�����Q���w|���9����^ �€{��%�4,����|J+3/KQ�輥#��h �5m��\��d�d0S�h�&��C����y���1�7��G6���Yr��v������m2�U@�;��Q����� ��������a����5���b��Mē�T�2B-�Ҹc�^��}wt��.R+Pe
1
+ 8A�HnB]�����
2
+ ���d�[�{G�mތ����S�G�o��S�F��wՎSO*�и�|uղ��-!Xs�αdq��$���m���� ������9�����/�+�C ��ʤ��aK�8#���j��є��� �սƘ��s�ZV�K���>��O~���4�=|O�J�G��x ��OI�=�:r ��
3
+ ���nU�l$��27v�7M������n*�CH�ʉ}i{�z&uZ�,�Dו�����L���Z�w��
@@ -118,10 +118,47 @@ class CryptocoinFanboi
118
118
 
119
119
  end
120
120
 
121
+ # best coin this year so far
122
+ #
123
+ def best_coin(default_list=[])
124
+
125
+ list = if default_list.empty? then
126
+ self.coin_names(limit: 5)
127
+ else
128
+ default_list
129
+ end
130
+
131
+ a2 = list.map {|x| [x, btc_gain(x)]}
132
+ a2.max_by {|x| x[1].last}
133
+ end
134
+
135
+ def btc_gain(coin)
136
+
137
+ a = prices_this_year(coin)
138
+ r = a.min_by {|x | x[1][:btc_price]}
139
+ [r, btc_price(coin) - r[1][:btc_price]]
140
+
141
+ end
142
+
143
+
144
+ def btc_price(coin, date=nil)
145
+
146
+ usd = self.price(coin, date)
147
+ puts 'usd: ' + usd.inspect if @debug
148
+ btc = self.price('bitcoin', date)
149
+ (usd / btc)
150
+ end
151
+
121
152
  def coin_abbreviations()
122
153
  @coins.map {|x| "%s (%s)" % [x['name'], x['symbol']] }
123
154
  end
124
155
 
156
+ alias abbreviations coin_abbreviations
157
+
158
+ def coin_names(limit: 10)
159
+ @coins.take(limit).map {|x| x['name']}
160
+ end
161
+
125
162
  def coin(name)
126
163
  self.find(name)
127
164
  end
@@ -130,7 +167,21 @@ class CryptocoinFanboi
130
167
  @coins.map {|x| OpenStruct.new(x) }
131
168
  end
132
169
 
133
- alias abbreviations coin_abbreviations
170
+ def date_range(raw_d1, raw_d2)
171
+
172
+ d1, d2 = [raw_d1, raw_d2].map do |x|
173
+ if x.is_a? Date then
174
+ x
175
+ else
176
+ Chronic.parse(x.gsub('-',' '), :context => :past).to_date
177
+ end
178
+ end
179
+
180
+ (d1..d2).each do |date|
181
+ yield(self, date.strftime("%d %B %Y"))
182
+ end
183
+
184
+ end
134
185
 
135
186
  def inspect()
136
187
 
@@ -163,11 +214,18 @@ class CryptocoinFanboi
163
214
  # returns closing price in dollars
164
215
  # e.g. price('tron', '8th September 2017') #=> 0.001427
165
216
  #
166
- def price(coin, raw_date=nil)
217
+ def price(raw_coin, raw_date=nil)
167
218
 
219
+ coin = raw_coin.downcase.split.map(&:capitalize).join(' ')
220
+
168
221
  return self.coin(coin).price_usd.to_f if raw_date.nil?
169
-
170
- date = Chronic.parse(raw_date.gsub('-',' ')).strftime("%Y%m%d")
222
+ puts 'raw_date: ' + raw_date.inspect if @debug
223
+
224
+ date = if raw_date.is_a? Date then
225
+ raw_date.strftime("%Y%m%d")
226
+ else
227
+ Chronic.parse(raw_date.gsub('-',' ')).strftime("%Y%m%d")
228
+ end
171
229
  puts 'date: ' + date.inspect if @debug
172
230
 
173
231
  # if date is today then return today's price
@@ -188,7 +246,7 @@ class CryptocoinFanboi
188
246
  puts 'date: ' + date.inspect
189
247
  end
190
248
 
191
- a = Coinmarketcap.get_historical_price(coin, date, date)
249
+ a = Coinmarketcap.get_historical_price(coin.gsub(/ /,'-'), date, date)
192
250
  puts 'a: ' + a.inspect if @debug
193
251
 
194
252
  r = a.any? ? a.first[:close] : self.coin(coin).price_usd.to_f
@@ -206,6 +264,15 @@ class CryptocoinFanboi
206
264
 
207
265
  end
208
266
 
267
+ def prices_this_year(coin)
268
+
269
+ (Date.parse('1 Jan')..Date.today).map do |date|
270
+
271
+ [date, btc_price: btc_price(coin,date), usd_price: price(coin,date)]
272
+
273
+ end
274
+ end
275
+
209
276
  # returns an array of the prices of Bitcoin in various currencies
210
277
  #
211
278
  def rates(coin='Bitcoin', currencies: %w(EUR GBP))
data.tar.gz.sig CHANGED
Binary file
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cryptocoin_fanboi
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0
4
+ version: 0.5.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - James Robertson
metadata.gz.sig CHANGED
Binary file