btcl 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (4) hide show
  1. checksums.yaml +7 -0
  2. data/bin/btcl +2 -0
  3. data/lib/btcl.rb +131 -0
  4. metadata +61 -0
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 34b08a9acf5c4b9e503f507139543913205ef1d1
4
+ data.tar.gz: bf98882fa645e44e48d1244a626e337dbf340583
5
+ SHA512:
6
+ metadata.gz: 8ac1870cc0435c7ffbf3c1cfde90a06883670ce0510f96f306f60059d4811b3aa116aceccf76b827c8ed611038ebebd9edaf4d348f3d966fab5b01c10d9e06eb
7
+ data.tar.gz: 0bce9ba4a8d024ab042560469dfcfc12b2935e618d71c9600d8baf6226cc333a9755cf1a0edffa4ae2590f7bad1989ae9b345ee5a9eff1183f1703d56d3b744e
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env ruby
2
+ require "btcl"
@@ -0,0 +1,131 @@
1
+ #!/usr/bin/env ruby
2
+ require "optparse"
3
+ require "open-uri"
4
+ require 'net/http'
5
+ require "json"
6
+ require 'text-table'
7
+
8
+ $top = {
9
+ "BTC CHINA" => "btcnCNY",
10
+ "Mt. Gox USA" => "mtgoxUSD",
11
+ "BitStamp" => "bitstampUSD",
12
+ "btc-e" => "btceUSD",
13
+ "Mt.Gox EUROPE" => "mtgoxEUR",
14
+ "Mt.Gox JAPAN" => "mtgoxJPY",
15
+ "bitcoin.de" => "btcdeEUR",
16
+ "Bitcurex" => "bitcurexPLN",
17
+ "Canadian Virtual Exchange" => "virtexCAD",
18
+ "Mt.Gox UK" => "mtgoxGBP"
19
+ }
20
+
21
+ table = Text::Table.new :horizontal_padding => 1,
22
+ :vertical_boundary => '-',
23
+ :horizontal_boundary => '|',
24
+ :boundary_intersection => '-'
25
+
26
+ def getTop(url)
27
+ exchanges = []
28
+ names = []
29
+ begin
30
+ open(url) do |d|
31
+ json = JSON.parse(d.read)
32
+ $top.each do |k, v|
33
+ json.each do |a|
34
+ if a.has_value?(v)
35
+ exchanges << a
36
+ names << k
37
+ end
38
+ end
39
+ end
40
+
41
+ return true, exchanges, names
42
+ end
43
+ rescue SocketError => e
44
+ return false, "bity Error: Could not connect to bitcoincharts API."
45
+
46
+ end
47
+ end
48
+
49
+ def getEx(url, symbol)
50
+ begin
51
+ open(url) do |d|
52
+ json = JSON.parse(d.read)
53
+ json.each do |a|
54
+ a.each do |k, v|
55
+ if k == "symbol" and v == symbol
56
+ return true, a
57
+ end
58
+ end
59
+ end
60
+ return false, "bity Error: Symbol not found in bitcoin API."
61
+ end
62
+ rescue SocketError => e
63
+ return false, "bity Error: Could not connect to bitcoincharts API."
64
+ end
65
+ end
66
+
67
+
68
+ options = {}
69
+
70
+ OptionParser.new do |opt|
71
+ opt.banner = "Usage: btcl <SYMBOL> [options]"
72
+ opt.separator ""
73
+ opt.separator "Exchange Symbols:"
74
+ opt.separator "\tView all symbols at http://bitcoincharts.com/markets/"
75
+ opt.separator "\t*Popular markets below*"
76
+ opt.separator ""
77
+ opt.separator "\tmtgoxUSD - Mt.Gox USA"
78
+ opt.separator "\tbtcnCHY - BTC CHINA"
79
+ opt.separator "\tbitstampUSD - BitStamp USA"
80
+ opt.separator "\tbtceUSD - btc-e USA"
81
+ opt.separator "\tmtgoxEUR - Mt.Gox EUROPE"
82
+ opt.separator "\tmtgoxJPY - Mt.Gox JAPAN"
83
+ opt.separator "\tbtcdeEUR - bitcoin.de"
84
+ opt.separator "\tbitcurexPLN - Bitcurex"
85
+ opt.separator "\tvirtexCAD - Canadian Virtual Exchange"
86
+ opt.separator "\tmtgoxGBP - Mt.Gox UK"
87
+ opt.separator ""
88
+ opt.separator "Options"
89
+ opt.separator " -h, --help: See this screen"
90
+
91
+ opt.on("-v", "--[no-]verbose", "Get information verbosely.") do |v|
92
+ options[:verbose] = v
93
+ end
94
+
95
+ end.parse!
96
+
97
+ case ARGV[0]
98
+ when nil
99
+ info = getTop("http://api.bitcoincharts.com/v1/markets.json")
100
+ if options[:verbose]
101
+ puts "bity Error: There's no verbose option for the top exchanges."
102
+ Process.exit(0)
103
+ end
104
+
105
+ if info[0] == false
106
+ puts info[1]
107
+ else
108
+ table.head = ["Exchange", "Price"]
109
+ info[1].each_with_index do |quote, i|
110
+ message = "%s" % quote["ask"]
111
+ verbose_message = "high :: %s\t\tlow :: %s\nask :: %s\t\tbid :: %s\nclose :: %s\t\t\tavg :: %s" % [quote["high"], quote["low"], quote["ask"], quote["bid"], quote["close"], quote["avg"]]
112
+ table.rows << [info[2][i], message]
113
+ end
114
+
115
+ puts table.to_s
116
+ end
117
+ else
118
+ info = getEx("http://api.bitcoincharts.com/v1/markets.json", ARGV[0])
119
+ if info[0] == false
120
+ puts info[1]
121
+ elsif info[0] == true
122
+ quote = info[1]
123
+ message = "%s" % quote["ask"]
124
+ table.rows = [["high", quote["high"].to_s],["low", quote["low"]], ["ask", quote["ask"]], ["bid", quote["bid"]], ["close", quote["close"]], ["avg", quote["avg"]] ]
125
+ if options[:verbose]
126
+ puts table.to_s
127
+ else
128
+ puts message
129
+ end
130
+ end
131
+ end
metadata ADDED
@@ -0,0 +1,61 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: btcl
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Jared Wright
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2013-12-09 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: text-table
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - '>='
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - '>='
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ description: Follow Bitcoin markets from your terminal. btcl is a Bitcoin Market Price
28
+ Client that uses bitcoin markets api to retrieve real-time data.
29
+ email: jawerty210@gmail.com
30
+ executables:
31
+ - btcl
32
+ extensions: []
33
+ extra_rdoc_files: []
34
+ files:
35
+ - lib/btcl.rb
36
+ - bin/btcl
37
+ homepage: https://github.com/jawerty/btcl
38
+ licenses:
39
+ - MIT
40
+ metadata: {}
41
+ post_install_message:
42
+ rdoc_options: []
43
+ require_paths:
44
+ - lib
45
+ required_ruby_version: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - '>='
48
+ - !ruby/object:Gem::Version
49
+ version: 1.8.5
50
+ required_rubygems_version: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ requirements: []
56
+ rubyforge_project: btcl
57
+ rubygems_version: 2.0.3
58
+ signing_key:
59
+ specification_version: 4
60
+ summary: A cli for retrieving prices from Bitcoin exchanges.
61
+ test_files: []