btct 0.0.3 → 0.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +7 -5
- data/lib/btct/bitstamp.rb +18 -4
- data/lib/btct/btce.rb +16 -0
- data/lib/btct/campbx.rb +14 -2
- data/lib/btct/coinbase.rb +30 -0
- data/lib/btct/terminal.rb +14 -2
- data/lib/btct/therock.rb +18 -9
- data/lib/btct/ticker.rb +9 -0
- data/lib/btct/version.rb +1 -1
- metadata +12 -25
- data/lib/btct/mtgox.rb +0 -17
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 125d5152ab71aef7a02b222e64103a169f086d9c
|
4
|
+
data.tar.gz: 99a6bbc2aa760f9d95dc131dda3ec960a3835b50
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bf11fdc6bbc42a189a10c702546801d8f4a2e08e155457086c555964f08da9d2720a5d4d205b384182843ed363f88bcb94f0f4474e01f3367bf9657e6add67a9
|
7
|
+
data.tar.gz: 71df35eb38e5e459b5be3d88d3a6975a4714e74ebb37d444eaf7d30ffd2051521396d3696e7e594003e2063e397952e63bf92b4652b48f205657fbabeda8463a
|
data/README.md
CHANGED
@@ -1,5 +1,7 @@
|
|
1
1
|
# Bitcoin Terminal
|
2
2
|
|
3
|
+
[](http://badge.fury.io/rb/btct)
|
4
|
+
|
3
5
|
Bitcoin Terminal is a Ruby application for monitoring real-time Bitcoin quotes
|
4
6
|
on various exchanges.
|
5
7
|
|
@@ -11,15 +13,15 @@ on various exchanges.
|
|
11
13
|
* BTC-E
|
12
14
|
* Bitstamp
|
13
15
|
* CampBX
|
14
|
-
*
|
16
|
+
* Coinbase
|
15
17
|
* The Rock
|
16
18
|
|
17
|
-
##
|
19
|
+
## Installation
|
18
20
|
|
19
|
-
Install
|
21
|
+
Install the gem:
|
20
22
|
|
21
23
|
```
|
22
|
-
$
|
24
|
+
$ gem install btct
|
23
25
|
```
|
24
26
|
|
25
27
|
## Usage
|
@@ -27,7 +29,7 @@ $ bundle install
|
|
27
29
|
Start the Bitcoin terminal:
|
28
30
|
|
29
31
|
```
|
30
|
-
$
|
32
|
+
$ btct
|
31
33
|
```
|
32
34
|
|
33
35
|
## License
|
data/lib/btct/bitstamp.rb
CHANGED
@@ -1,6 +1,8 @@
|
|
1
|
-
require '
|
2
|
-
|
1
|
+
require 'btct/ticker'
|
3
2
|
require 'btct/quote'
|
3
|
+
require 'open-uri'
|
4
|
+
require 'date'
|
5
|
+
require 'json'
|
4
6
|
|
5
7
|
module BTCT
|
6
8
|
class BitstampAPI
|
@@ -9,10 +11,22 @@ module BTCT
|
|
9
11
|
end
|
10
12
|
|
11
13
|
def top
|
12
|
-
ob = JSON.parse
|
14
|
+
ob = JSON.parse open("https://www.bitstamp.net/api/order_book/").read
|
13
15
|
bid = ob["bids"].sort { |x, y| x[0].to_f <=> y [0].to_f }.last
|
14
16
|
ask = ob["asks"].sort { |x, y| x[0].to_f <=> y [0].to_f }.first
|
15
17
|
return Quote.new(bid[0], bid[1], name), Quote.new(ask[0], ask[1], name)
|
16
18
|
end
|
19
|
+
|
20
|
+
def ticker
|
21
|
+
ticker = JSON.parse open("https://www.bitstamp.net/api/ticker/").read
|
22
|
+
Ticker.new(
|
23
|
+
:last => ticker["last" ].to_f,
|
24
|
+
:volume => ticker["volume"].to_f,
|
25
|
+
:high => ticker["high" ].to_f,
|
26
|
+
:low => ticker["low" ].to_f,
|
27
|
+
:time => DateTime.strptime(ticker["timestamp"], '%s'),
|
28
|
+
:exchange => name
|
29
|
+
)
|
30
|
+
end
|
17
31
|
end
|
18
|
-
end
|
32
|
+
end
|
data/lib/btct/btce.rb
CHANGED
@@ -1,4 +1,7 @@
|
|
1
|
+
require 'btct/ticker'
|
1
2
|
require 'btct/quote'
|
3
|
+
require 'open-uri'
|
4
|
+
require 'json'
|
2
5
|
|
3
6
|
module BTCT
|
4
7
|
class BtceAPI
|
@@ -12,5 +15,18 @@ module BTCT
|
|
12
15
|
ask = ob["asks"].sort { |x, y| x[0].to_f <=> y [0].to_f }.first
|
13
16
|
return Quote.new(bid[0], bid[1], name), Quote.new(ask[0], ask[1], name)
|
14
17
|
end
|
18
|
+
|
19
|
+
def ticker
|
20
|
+
ticker = JSON.parse open("https://btc-e.com/api/2/btc_usd/ticker/").read
|
21
|
+
ticker = ticker["ticker"]
|
22
|
+
Ticker.new(
|
23
|
+
:last => ticker["last" ].to_f,
|
24
|
+
:volume => ticker["vol_cur"].to_f,
|
25
|
+
:high => ticker["high" ].to_f,
|
26
|
+
:low => ticker["low" ].to_f,
|
27
|
+
:time => DateTime.strptime(ticker["updated"].to_s, '%s'),
|
28
|
+
:exchange => name
|
29
|
+
)
|
30
|
+
end
|
15
31
|
end
|
16
32
|
end
|
data/lib/btct/campbx.rb
CHANGED
@@ -9,10 +9,22 @@ module BTCT
|
|
9
9
|
end
|
10
10
|
|
11
11
|
def top
|
12
|
-
ob = JSON.parse open("
|
12
|
+
ob = JSON.parse open("https://campbx.com/api/xdepth.php").read
|
13
13
|
bid = ob["Bids"].sort { |x, y| x[0].to_f <=> y [0].to_f }.last
|
14
14
|
ask = ob["Asks"].sort { |x, y| x[0].to_f <=> y [0].to_f }.first
|
15
15
|
return Quote.new(bid[0], bid[1], name), Quote.new(ask[0], ask[1], name)
|
16
16
|
end
|
17
|
+
|
18
|
+
def ticker
|
19
|
+
ticker = JSON.parse open("https://campbx.com/api/xticker.php").read
|
20
|
+
Ticker.new(
|
21
|
+
:last => ticker["Last Trade"].to_f,
|
22
|
+
:volume => 0.0,
|
23
|
+
:high => 0.0,
|
24
|
+
:low => 0.0,
|
25
|
+
:time => DateTime.now.new_offset(0),
|
26
|
+
:exchange => name
|
27
|
+
)
|
28
|
+
end
|
17
29
|
end
|
18
|
-
end
|
30
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
require 'open-uri'
|
2
|
+
|
3
|
+
require 'btct/quote'
|
4
|
+
|
5
|
+
module BTCT
|
6
|
+
class CoinbaseAPI
|
7
|
+
def name
|
8
|
+
"Coinbase"
|
9
|
+
end
|
10
|
+
|
11
|
+
def top
|
12
|
+
top = JSON.parse open("https://api.exchange.coinbase.com/products/BTC-USD/book").read
|
13
|
+
bid = top["bids"][0]
|
14
|
+
ask = top["asks"][0]
|
15
|
+
return Quote.new(bid[0].to_f, bid[1].to_f, name), Quote.new(ask[0].to_f, ask[1].to_f, name)
|
16
|
+
end
|
17
|
+
|
18
|
+
def ticker
|
19
|
+
ticker = JSON.parse open("https://api.exchange.coinbase.com/products/BTC-USD/ticker").read
|
20
|
+
Ticker.new(
|
21
|
+
:last => ticker["price"].to_f,
|
22
|
+
:volume => ticker["volume"].to_f,
|
23
|
+
:high => 0.0,
|
24
|
+
:low => 0.0,
|
25
|
+
:time => DateTime.now.new_offset(0),
|
26
|
+
:exchange => name
|
27
|
+
)
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
data/lib/btct/terminal.rb
CHANGED
@@ -1,9 +1,9 @@
|
|
1
1
|
require 'curses'
|
2
2
|
|
3
3
|
require 'btct/bitstamp'
|
4
|
+
require 'btct/coinbase'
|
4
5
|
require 'btct/therock'
|
5
6
|
require 'btct/campbx'
|
6
|
-
require 'btct/mtgox'
|
7
7
|
require 'btct/btce'
|
8
8
|
|
9
9
|
module BTCT
|
@@ -16,7 +16,7 @@ module BTCT
|
|
16
16
|
BitstampAPI.new,
|
17
17
|
BtceAPI.new,
|
18
18
|
CampBxAPI.new,
|
19
|
-
|
19
|
+
CoinbaseAPI.new,
|
20
20
|
TheRockAPI.new
|
21
21
|
]
|
22
22
|
begin
|
@@ -32,6 +32,7 @@ module BTCT
|
|
32
32
|
Curses.init_screen
|
33
33
|
Curses.nl
|
34
34
|
Curses.noecho
|
35
|
+
Curses.curs_set(0)
|
35
36
|
Curses.setpos(0, 0) ; Curses.addstr "BTC/USD"
|
36
37
|
Curses.setpos(0, 21) ; Curses.addstr "Bid"
|
37
38
|
Curses.setpos(0, 46) ; Curses.addstr "Ask"
|
@@ -54,6 +55,17 @@ module BTCT
|
|
54
55
|
Curses.setpos(row, 0) ; Curses.addstr text
|
55
56
|
row = row + 1
|
56
57
|
end
|
58
|
+
row = 11
|
59
|
+
text = "%-10s %-12s %-12s %-12s %-12s %s" % [ "", "Last", "Volume", "High", "Low", "Time" ]
|
60
|
+
Curses.setpos(row, 0) ; Curses.addstr text
|
61
|
+
row = row + 1
|
62
|
+
tickers = sources.map { |source| source.ticker }
|
63
|
+
tickers.sort! { |x, y| y.time <=> x.time }
|
64
|
+
tickers.each do |ticker|
|
65
|
+
text = "%-10s %-12.6f %-12.6f %-12.6f %-12.6f %s" % [ ticker.exchange, ticker.last, ticker.volume, ticker.high, ticker.low, ticker.time.strftime("%H:%M:%S") ]
|
66
|
+
Curses.setpos(row, 0) ; Curses.addstr text
|
67
|
+
row = row + 1
|
68
|
+
end
|
57
69
|
Curses.refresh
|
58
70
|
sleep 5
|
59
71
|
end
|
data/lib/btct/therock.rb
CHANGED
@@ -9,14 +9,23 @@ module BTCT
|
|
9
9
|
end
|
10
10
|
|
11
11
|
def top
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
12
|
+
ob = JSON.parse open("https://www.therocktrading.com/api/orderbook/BTCUSD").read
|
13
|
+
bid = ob["bids"].sort { |x, y| x[0].to_f <=> y [0].to_f }.last
|
14
|
+
ask = ob["asks"].sort { |x, y| x[0].to_f <=> y [0].to_f }.first
|
15
|
+
return Quote.new(bid[0], bid[1], name), Quote.new(ask[0], ask[1], name)
|
16
|
+
end
|
17
|
+
|
18
|
+
def ticker
|
19
|
+
ticker = JSON.parse open("https://www.therocktrading.com/api/ticker/BTCUSD").read
|
20
|
+
ticker = ticker["result"][0]
|
21
|
+
Ticker.new(
|
22
|
+
:last => ticker["last"].to_f,
|
23
|
+
:volume => 0.0,
|
24
|
+
:high => 0.0,
|
25
|
+
:low => 0.0,
|
26
|
+
:time => DateTime.now.new_offset(0),
|
27
|
+
:exchange => name
|
28
|
+
)
|
20
29
|
end
|
21
30
|
end
|
22
|
-
end
|
31
|
+
end
|
data/lib/btct/ticker.rb
ADDED
data/lib/btct/version.rb
CHANGED
metadata
CHANGED
@@ -1,43 +1,29 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: btct
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Pekka Enberg
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2016-01-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
name:
|
14
|
+
name: curses
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - ~>
|
17
|
+
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 0
|
19
|
+
version: '1.0'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- - ~>
|
24
|
+
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 0
|
27
|
-
- !ruby/object:Gem::Dependency
|
28
|
-
name: mtgox
|
29
|
-
requirement: !ruby/object:Gem::Requirement
|
30
|
-
requirements:
|
31
|
-
- - ~>
|
32
|
-
- !ruby/object:Gem::Version
|
33
|
-
version: 1.1.0
|
34
|
-
type: :runtime
|
35
|
-
prerelease: false
|
36
|
-
version_requirements: !ruby/object:Gem::Requirement
|
37
|
-
requirements:
|
38
|
-
- - ~>
|
39
|
-
- !ruby/object:Gem::Version
|
40
|
-
version: 1.1.0
|
26
|
+
version: '1.0'
|
41
27
|
description: Bitcoin terminal for monitoring real-time Bitcoin quotes on the command
|
42
28
|
line.
|
43
29
|
email: penberg@iki.fi
|
@@ -51,10 +37,11 @@ files:
|
|
51
37
|
- lib/btct/bitstamp.rb
|
52
38
|
- lib/btct/btce.rb
|
53
39
|
- lib/btct/campbx.rb
|
54
|
-
- lib/btct/
|
40
|
+
- lib/btct/coinbase.rb
|
55
41
|
- lib/btct/quote.rb
|
56
42
|
- lib/btct/terminal.rb
|
57
43
|
- lib/btct/therock.rb
|
44
|
+
- lib/btct/ticker.rb
|
58
45
|
- lib/btct/version.rb
|
59
46
|
homepage: https://github.com/penberg/btct
|
60
47
|
licenses:
|
@@ -66,17 +53,17 @@ require_paths:
|
|
66
53
|
- lib
|
67
54
|
required_ruby_version: !ruby/object:Gem::Requirement
|
68
55
|
requirements:
|
69
|
-
- -
|
56
|
+
- - ">="
|
70
57
|
- !ruby/object:Gem::Version
|
71
58
|
version: '0'
|
72
59
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
73
60
|
requirements:
|
74
|
-
- -
|
61
|
+
- - ">="
|
75
62
|
- !ruby/object:Gem::Version
|
76
63
|
version: '0'
|
77
64
|
requirements: []
|
78
65
|
rubyforge_project:
|
79
|
-
rubygems_version: 2.
|
66
|
+
rubygems_version: 2.4.5
|
80
67
|
signing_key:
|
81
68
|
specification_version: 4
|
82
69
|
summary: Bitcoin Terminal
|
data/lib/btct/mtgox.rb
DELETED
@@ -1,17 +0,0 @@
|
|
1
|
-
require 'mtgox'
|
2
|
-
|
3
|
-
require 'btct/quote'
|
4
|
-
|
5
|
-
module BTCT
|
6
|
-
class MtGoxAPI
|
7
|
-
def name
|
8
|
-
"Mt.Gox"
|
9
|
-
end
|
10
|
-
|
11
|
-
def top
|
12
|
-
bid = MtGox.bids.sort { |x, y| x.price <=> y.price }.last
|
13
|
-
ask = MtGox.asks.sort { |x, y| x.price <=> y.price }.first
|
14
|
-
return Quote.new(bid.price, bid.amount, name), Quote.new(ask.price, ask.amount, name)
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|