auntie 0.2.0 → 0.3.0

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: fed4976f396372cbd6c5b4c71ced8a439b06f6a6
4
- data.tar.gz: 6713d54954ef44ba9326eb15995c7a7b8788d05b
3
+ metadata.gz: 2b52477f5f746d84a915062f1e8e753a67699e05
4
+ data.tar.gz: 52dfbb1a107163110d67c12c131f1ef7109b668c
5
5
  SHA512:
6
- metadata.gz: f7365a73fb95203fe90a2af2d1533207f118f8a0ce251a6a0f0d2f9e1491f9daba0a77746034833fd4478178b443a8ef9308879c96f507b9480e2ef34861638d
7
- data.tar.gz: d02f68b2fb542075f5f1723ae713c42a36964ae49affada31992e947da2c854313caf81366e86aef620d84ab8a6d36cacf8da43dc723ae6305a0e56542653fc6
6
+ metadata.gz: 623f37227d3a316507bb4f58a99b34563ef643f74f3df3d3b2d37a4c7f8568820c4b3e3ee10e9023e7144b3b5a6cd1d643d96d651e131ad03cc9feb76b653ef4
7
+ data.tar.gz: 88df1f09a00642f50866efff98076b0413bdcfed27e1a4b1924140ed0a75c936a38f95534fd4b6bf2e0bcb48a6a708d8ad2c757faed538a73f45b2e68a108c5e
data/Gemfile CHANGED
@@ -1,3 +1,8 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
+ group :development, :test do
4
+ # This is here because gemspec doesn't support require: false
5
+ gem 'coveralls', :require => false
6
+ end
7
+
3
8
  gemspec
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- auntie (0.2.0)
4
+ auntie (0.3.0)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
@@ -15,19 +15,30 @@ GEM
15
15
  builder (3.1.4)
16
16
  childprocess (0.2.3)
17
17
  ffi (~> 1.0.6)
18
+ coveralls (0.7.0)
19
+ multi_json (~> 1.3)
20
+ rest-client
21
+ simplecov (>= 0.7)
22
+ term-ansicolor
23
+ thor
18
24
  cucumber (1.2.1)
19
25
  builder (>= 2.1.2)
20
26
  diff-lcs (>= 1.1.3)
21
27
  gherkin (~> 2.11.0)
22
28
  json (>= 1.4.6)
23
29
  diff-lcs (1.1.3)
30
+ docile (1.1.3)
24
31
  ffi (1.0.11)
25
32
  gherkin (2.11.5)
26
33
  json (>= 1.4.6)
27
34
  json (1.7.5)
35
+ mime-types (2.1)
36
+ multi_json (1.8.4)
28
37
  rake (0.9.2.2)
29
38
  rdoc (3.12)
30
39
  json (~> 1.4)
40
+ rest-client (1.6.7)
41
+ mime-types (>= 1.16)
31
42
  rspec (2.11.0)
32
43
  rspec-core (~> 2.11.0)
33
44
  rspec-expectations (~> 2.11.0)
@@ -36,6 +47,15 @@ GEM
36
47
  rspec-expectations (2.11.3)
37
48
  diff-lcs (~> 1.1.3)
38
49
  rspec-mocks (2.11.3)
50
+ simplecov (0.8.2)
51
+ docile (~> 1.1.0)
52
+ multi_json
53
+ simplecov-html (~> 0.8.0)
54
+ simplecov-html (0.8.0)
55
+ term-ansicolor (1.2.2)
56
+ tins (~> 0.8)
57
+ thor (0.18.1)
58
+ tins (0.13.2)
39
59
 
40
60
  PLATFORMS
41
61
  ruby
@@ -44,6 +64,7 @@ DEPENDENCIES
44
64
  anticipate
45
65
  aruba
46
66
  auntie!
67
+ coveralls
47
68
  rake
48
69
  rdoc
49
70
  rspec
data/README.md CHANGED
@@ -1,7 +1,10 @@
1
- # Auntie
2
-
3
1
  [![Build Status](https://travis-ci.org/simongregory/auntie.png?branch=master)](https://travis-ci.org/simongregory/auntie)
2
+ [![Coverage](https://coveralls.io/repos/simongregory/auntie/badge.png?branch=master)](https://coveralls.io/r/simongregory/auntie)
4
3
  [![Code Climate](https://codeclimate.com/github/simongregory/auntie.png)](https://codeclimate.com/github/simongregory/auntie)
4
+ [![Dependency Status](https://gemnasium.com/simongregory/auntie.png)](https://gemnasium.com/simongregory/auntie)
5
+ [![Gem Version](https://badge.fury.io/rb/auntie.png)](http://badge.fury.io/rb/auntie)
6
+
7
+ # Auntie
5
8
 
6
9
  A Ruby Gem for accessing [BBC]() Weather, TV, Radio, News and Sport feeds.
7
10
 
@@ -20,9 +23,9 @@ A Ruby Gem for accessing [BBC]() Weather, TV, Radio, News and Sport feeds.
20
23
  radio # what is on Radio 1 today
21
24
  radio next # what is on the wireless next
22
25
  radio six # what is on Radio Six Music
23
-
26
+
24
27
  news # the latest news headlines
25
-
28
+
26
29
  sport # the latest sport headlines
27
30
 
28
31
  ## zsh integration
@@ -0,0 +1,26 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ SAY_HELLO=<<EOM
4
+ auntie is a collection of tools for accessing BBC Weather, TV, Radio, News and Sport
5
+
6
+ Useage:
7
+
8
+ weather # lists the weather for the next 24 hours
9
+
10
+ tv # what is on BBC One today
11
+ tv two # what is on BBC Two today
12
+ tv now # list of all programmes being broadcast on tv now
13
+ tv next # list of all programmes being broadcast on tv next
14
+
15
+ radio # what is on Radio 1 today
16
+ radio six # what is on Radio Six Music
17
+ radio now # what is on the wireless now
18
+ radio next # what is on the wireless next
19
+
20
+ news # the latest news headlines
21
+
22
+ sport # the latest sport headlines
23
+
24
+ EOM
25
+
26
+ puts SAY_HELLO
data/bin/news CHANGED
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env ruby
2
2
  require 'auntie'
3
3
 
4
- if ['help', '-h', '--help'].include? ARGV[0]
4
+ if %w(help -h --help).include? ARGV[0]
5
5
  puts 'Useage: news'
6
6
  exit
7
7
  end
data/bin/radio CHANGED
@@ -2,28 +2,28 @@
2
2
  require 'auntie'
3
3
 
4
4
  channels = {
5
- :one => { :id => 'radio1', :region => '/england' },
6
- :onextra => { :id => '1xtra' },
7
- :two => { :id => 'radio2' },
8
- :three => { :id => 'radio3' },
9
- :four => { :id => 'radio4', :region => '/fm' },
10
- :fourextra => { :id => 'radio4extra' },
11
- :five => { :id => '5live' },
12
- :six => { :id => '6music' },
13
- :asian => { :id => 'asiannetwork' },
14
- :worldservice => { :id => 'worldserviceradio' }
5
+ one: { id: 'radio1', region: '/england' },
6
+ onextra: { id: '1xtra' },
7
+ two: { id: 'radio2' },
8
+ three: { id: 'radio3' },
9
+ four: { id: 'radio4', region: '/fm' },
10
+ fourextra: { id: 'radio4extra' },
11
+ five: { id: '5live' },
12
+ six: { id: '6music' },
13
+ asian: { id: 'asiannetwork' },
14
+ worldservice: { id: 'worldserviceradio' }
15
15
  }
16
16
 
17
17
  channel = ARGV[0] || :one
18
18
 
19
19
  if ARGV[0] == 'help' && ARGV[1] == '-c'
20
- channels.each { |k,v| puts k }
20
+ channels.each { |k, v| puts k }
21
21
  puts "now\nnext"
22
22
  exit
23
23
  end
24
24
 
25
- if ['help', '-h', '--help'].include? ARGV[0]
26
- puts 'Useage: radio <channel>'
25
+ if %w( help -h --help).include? ARGV[0]
26
+ puts 'Useage: radio [station]'
27
27
  exit
28
28
  end
29
29
 
@@ -37,13 +37,10 @@ if ARGV[0] == 'next'
37
37
  exit
38
38
  end
39
39
 
40
- if channels.has_key? channel.to_sym
40
+ if channels.key? channel.to_sym
41
41
 
42
42
  selection = channels[channel.to_sym]
43
-
44
- if ['yesterday', 'today', 'tomorrow'].include? ARGV[1]
45
- selection[:period] = '/'+ARGV[1]
46
- end
43
+ selection[:period] = '/' + ARGV[1] if %w(yesterday today tomorrow).include? ARGV[1]
47
44
 
48
45
  Schedule.new.load selection
49
46
  else
data/bin/sport CHANGED
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env ruby
2
2
  require 'auntie'
3
3
 
4
- if ['help', '-h', '--help'].include? ARGV[0]
4
+ if %w(help -h --help).include? ARGV[0]
5
5
  puts 'Useage: sport'
6
6
  exit
7
7
  end
data/bin/tv CHANGED
@@ -2,29 +2,29 @@
2
2
  require 'auntie'
3
3
 
4
4
  channels = {
5
- :one => { :id => 'bbcone', :region => '/london' },
6
- :two => { :id => 'bbctwo', :region => '/england' },
7
- :three => { :id => 'bbcthree' },
8
- :four => { :id => 'bbcfour' },
9
- :cbeebies => { :id => 'cbeebies' },
10
- :cbbc => { :id => 'cbbc' },
11
- :news => { :id => 'bbcnews' },
12
- :parliament => { :id => 'parliament' },
13
- :alba => { :id => 'alba', }
5
+ one: { id: 'bbcone', region: '/london' },
6
+ two: { id: 'bbctwo', region: '/england' },
7
+ three: { id: 'bbcthree' },
8
+ four: { id: 'bbcfour' },
9
+ cbeebies: { id: 'cbeebies' },
10
+ cbbc: { id: 'cbbc' },
11
+ news: { id: 'bbcnews' },
12
+ parliament: { id: 'parliament' },
13
+ alba: { id: 'alba' }
14
14
  }
15
15
 
16
16
  channel = ARGV[0] || :one
17
17
 
18
18
  if ARGV[0] == 'help' && ARGV[1] == '-c'
19
- channels.each { |k,v| puts k }
19
+ channels.each { |k, v| puts k }
20
20
  puts "now\nnext"
21
21
  exit
22
22
  end
23
23
 
24
- helps = ['help', '-h', '--help']
24
+ helps = %w(help -h --help)
25
25
 
26
26
  if helps.include? ARGV[0]
27
- puts 'Useage: tv <channel>'
27
+ puts 'Useage: tv [channel]'
28
28
  exit
29
29
  end
30
30
 
@@ -38,7 +38,7 @@ if ARGV[0] == 'next'
38
38
  exit
39
39
  end
40
40
 
41
- if channels.has_key? channel.to_sym
41
+ if channels.key? channel.to_sym
42
42
  Schedule.new.load channels[channel.to_sym]
43
43
  else
44
44
  puts "'#{channel}' is an unknown channel"
@@ -2,13 +2,14 @@
2
2
  require 'auntie'
3
3
 
4
4
  if ARGV[0] == 'help' && ARGV[1] == '-c'
5
- puts "--location-search\n--hourly\n--daily" #loc-search doesn't seem to be compatible with zsh completion?
5
+ # loc-search doesn't seem to be compatible with zsh completion?
6
+ puts "--location-search\n--hourly\n--daily"
6
7
  exit
7
8
  end
8
9
 
9
- if ['help', '-h', '--help'].include? ARGV[0]
10
+ if %w(help -h --help).include? ARGV[0]
10
11
  puts 'Useage: weather <Postcode or BBC location id>'
11
- puts ' --location-search <place>'
12
+ puts ' --location-search <place name>'
12
13
  puts ' --hourly <Postcode or BBC location id>'
13
14
  puts ' --daily <Postcode or BBC location id>'
14
15
  exit
@@ -17,15 +18,15 @@ end
17
18
  if ARGV[0] == '--location-search'
18
19
  place = ARGV[1..-1].join(' ')
19
20
 
20
- abort "Please specify a location to search for." if place.empty?
21
- place = "Hadfield" if place.downcase == 'royston vasey'
21
+ abort 'Please specify a location to search for.' if place.empty?
22
+ place = 'Hadfield' if place.downcase == 'royston vasey'
22
23
 
23
24
  Location.new.find(place)
24
25
  exit
25
26
  end
26
27
 
27
28
  def location
28
- ARGV[0] ||= '2643743' #Default to London.
29
+ ARGV[0] ||= '2643743' # Default to London.
29
30
  end
30
31
 
31
32
  action = ARGV[0]
@@ -1,7 +1,7 @@
1
- When /^I enter the place name$/ do
1
+ When(/^I enter the place name$/) do
2
2
  #
3
3
  end
4
4
 
5
- Then /^a list of potential matches is shown$/ do
5
+ Then(/^a list of potential matches is shown$/) do
6
6
  #
7
7
  end
@@ -1,4 +1,4 @@
1
- When /^I get help for "([^"]*)"$/ do |app_name|
1
+ When(/^I get help for "([^"]*)"$/) do |app_name|
2
2
  @app_name = app_name
3
3
  step %(I run `#{app_name} help`)
4
4
  end
@@ -1,7 +1,7 @@
1
1
  require 'aruba/cucumber'
2
2
 
3
3
  ENV['PATH'] = "#{File.expand_path(File.dirname(__FILE__) + '/../../bin')}#{File::PATH_SEPARATOR}#{ENV['PATH']}"
4
- LIB_DIR = File.join(File.expand_path(File.dirname(__FILE__)),'..','..','lib')
4
+ LIB_DIR = File.join(File.expand_path(File.dirname(__FILE__)), '..', '..', 'lib')
5
5
 
6
6
  Before do
7
7
  # Using "announce" causes massive warnings on 1.9.2
@@ -1,12 +1,16 @@
1
1
  # encoding: utf-8
2
2
 
3
+ # Discovers BBC location ids
4
+ #
3
5
  class Location
4
- def initialize(io=STDOUT)
6
+ include ShellColors
7
+
8
+ def initialize(io = STDOUT)
5
9
  @io = io
6
10
  end
7
11
 
8
12
  def find(place)
9
- abort "Please use a longer search term" if place.length < 3
13
+ fail 'Please use a longer search term' if place.length < 3
10
14
 
11
15
  @io.print "Searching for #{place}..."
12
16
 
@@ -14,16 +18,16 @@ class Location
14
18
  end
15
19
 
16
20
  def url(term)
17
- "http://www.bbc.co.uk/locator/default/en-GB/autocomplete.json?search=#{URI::encode(term)}&filter=domestic&ptrt=/"
21
+ escaped = URI.encode(term)
22
+ "http://www.bbc.co.uk/locator/default/en-GB/autocomplete.json?search=#{escaped}&filter=domestic&ptrt=/"
18
23
  end
19
24
 
20
25
  def load(place)
21
26
  begin
22
- raw = open(url(place), 'UserAgent' => AUNTIE::USER_AGENT).read
23
- data = JSON.parse(raw)
27
+ raw = open(url(place), 'UserAgent' => AUNTIE::USER_AGENT).read
28
+ data = JSON.parse(raw)
24
29
  rescue
25
- @io.puts "Unable to download location data"
26
- exit
30
+ raise 'Unable to download location data'
27
31
  end
28
32
 
29
33
  @io.print "\r"
@@ -31,13 +35,13 @@ class Location
31
35
  if data.empty?
32
36
  @io.puts "No locations found matching '#{place}' "
33
37
  else
34
- @io.puts sprintf "%-42s %-10s", 'Place', 'ID'
38
+ @io.puts sprintf '%-42s %-10s', 'Place', 'ID'
35
39
  data.each do |e|
36
40
  name = e['fullName'].split(',')
37
- place = light_green(name[0]+ ',') + green(name[1])
41
+ place = light_green(name[0] + ',') + green(name[1])
38
42
  id = cyan e['id']
39
43
 
40
- @io.puts sprintf "%-60s %-10s", place, id
44
+ @io.puts sprintf '%-60s %-10s', place, id
41
45
  end
42
46
  end
43
47
  end
@@ -1,27 +1,28 @@
1
1
  # encoding: utf-8
2
2
 
3
+ # Provides a list of the latest BBC News headlines
4
+ #
3
5
  class News
4
- def initialize(io=STDOUT)
6
+ def initialize(io = STDOUT)
5
7
  @io = io
6
8
  end
7
9
 
8
10
  def load
9
11
  cols = console_columns
10
12
  @io.puts 'BBC News Headlines'
11
- data['entries'].each { |news_item|
12
- @io.puts news_item['headline'][0..cols-1]
13
- }
13
+ data['entries'].each do |news_item|
14
+ @io.puts news_item['headline'][0..cols - 1]
15
+ end
14
16
  end
15
17
 
16
18
  private
17
19
 
18
20
  def data
19
21
  begin
20
- raw = open('http://www.bbc.co.uk/news/10284448/ticker.sjson', 'UserAgent' => AUNTIE::USER_AGENT).read
21
- JSON.parse(raw)
22
+ raw = open('http://www.bbc.co.uk/news/10284448/ticker.sjson', 'UserAgent' => AUNTIE::USER_AGENT).read
23
+ JSON.parse(raw)
22
24
  rescue
23
- @io.puts "Unable to download news"
24
- exit
25
+ raise 'Unable to download news'
25
26
  end
26
27
  end
27
28
 
@@ -1,33 +1,37 @@
1
1
  # encoding: utf-8
2
2
 
3
+ # Lists what is airing now and next accross BBC Radio and Television stations
4
+ #
3
5
  class NowNext
4
- def initialize(io=STDOUT)
6
+ include Timings
7
+
8
+ def initialize(io = STDOUT)
5
9
  @io = io
6
10
  end
7
11
 
8
12
  def tv_now
9
- @fmt = "%-18s %s"
13
+ @fmt = '%-18s %s'
10
14
  load 'tv'
11
15
 
12
16
  on_now
13
17
  end
14
18
 
15
19
  def tv_next
16
- @fmt = "%-18s %s"
20
+ @fmt = '%-18s %s'
17
21
  load 'tv'
18
22
 
19
23
  on_next
20
24
  end
21
25
 
22
26
  def radio_now
23
- @fmt = "%-32s %s"
27
+ @fmt = '%-32s %s'
24
28
  load 'radio'
25
29
 
26
30
  on_now
27
31
  end
28
32
 
29
33
  def radio_next
30
- @fmt = "%-32s %s"
34
+ @fmt = '%-32s %s'
31
35
  load 'radio'
32
36
 
33
37
  on_next
@@ -37,56 +41,52 @@ class NowNext
37
41
 
38
42
  Programme = Struct.new(:channel, :title, :starts, :starts_in)
39
43
 
40
- def load medium
44
+ def load(medium)
41
45
  begin
42
- raw = open("http://www.bbc.co.uk/iplayer/ion/multinownext/service_type/#{medium}/simulcast_only/1/format/json", 'UserAgent' => AUNTIE::USER_AGENT).read
43
- @data = JSON.parse(raw)
46
+ raw = open("http://www.bbc.co.uk/iplayer/ion/multinownext/service_type/#{medium}/simulcast_only/1/format/json", 'UserAgent' => AUNTIE::USER_AGENT).read
47
+ @data = JSON.parse(raw)
44
48
  rescue
45
- @io.puts "Unable to download #{medium} schedules"
46
- exit
49
+ raise "Unable to download #{medium} schedules"
47
50
  end
48
51
  end
49
52
 
50
53
  def on_now
51
- @data['blocklist'].each { |e|
54
+ @data['blocklist'].each do |e|
52
55
  channel = format_channel e['title']
53
56
  programme = e['now'][0]['episode']['passionsite_title'] rescue next
54
57
 
55
58
  @io.puts sprintf @fmt, channel, programme
56
- }
59
+ end
57
60
  end
58
61
 
59
62
  def on_next
60
63
  programmes = []
61
64
 
62
- first = 9
63
65
  second = 0
64
66
 
65
- @data['blocklist'].each { |e|
67
+ @data['blocklist'].each do |e|
66
68
  p = Programme.new
67
69
  p.channel = format_channel e['title']
68
70
 
69
71
  p.title = e['next'][0]['episode']['passionsite_title'] rescue ''
70
72
  p.starts = Time.parse(e['next'][0]['start_time_iso']) rescue ''
71
73
 
72
- #next_start = starts.strftime("%H:%M")
74
+ # next_start = starts.strftime("%H:%M")
73
75
  p.starts_in = how_long_between(time_now, p.starts)
74
76
 
75
- second = p.channel.length+3 if p.channel.length > second
77
+ second = p.channel.length + 3 if p.channel.length > second
76
78
 
77
79
  programmes << p
78
- }
80
+ end
79
81
 
80
82
  programmes.sort_by! { |p| p.starts }
81
83
 
82
- programmes.each { |p| @io.puts sprintf "%-#{first}s %-#{second}s %s", p.starts_in, p.channel, p.title }
83
- end
84
-
85
- def format_channel name
86
- name.gsub(/^BBC | (London|England|Channel)/,'')
84
+ programmes.each do |p|
85
+ @io.puts sprintf("%-9s %-#{second}s %s", p.starts_in, p.channel, p.title)
86
+ end
87
87
  end
88
88
 
89
- def time_now
90
- Time.now
89
+ def format_channel(name)
90
+ name.gsub(/^BBC | (London|England|Channel)/, '')
91
91
  end
92
92
  end