gnome-tv 0.1

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.
@@ -0,0 +1,72 @@
1
+ require 'uri'
2
+ require 'net/http'
3
+
4
+ module GnomeTV
5
+ DATA_DIR = "#{File.dirname(__FILE__)}/../"
6
+
7
+ class Provider
8
+ def available?(url=nil, limit=10)
9
+ if url
10
+ raise ArgumentError, 'HTTP redirect too deep' if limit == 0
11
+
12
+ response = Net::HTTP.get_response(URI.parse(url))
13
+
14
+ case response
15
+ when Net::HTTPSuccess then true
16
+ when Net::HTTPRedirection then available?(response['location'], limit - 1)
17
+ else
18
+ false
19
+ end
20
+ else
21
+ available? @url
22
+ end
23
+ end
24
+
25
+ def watch
26
+ `totem #{@url}`
27
+ end
28
+
29
+ def url(url)
30
+ @url = url
31
+ end
32
+
33
+ def initialize(name, &block)
34
+ @name = name
35
+ instance_eval &block
36
+ end
37
+
38
+ attr_reader :name
39
+ end
40
+
41
+ @@providers = []
42
+
43
+ module_function
44
+
45
+ def provider(name, &block)
46
+ provider = Provider.new(name, &block)
47
+ @@providers << provider
48
+ provider
49
+ end
50
+
51
+ def load_provider(filename)
52
+ module_eval File.read(filename)
53
+ end
54
+
55
+ def watch
56
+ Dir["#{File.dirname(__FILE__)}/providers/*.rb"].each do |filename|
57
+ provider = load_provider(filename)
58
+ $stdout.write "Looking for #{provider.name}... "
59
+
60
+ if provider.available?
61
+ puts 'found'
62
+ provider.watch
63
+ return
64
+ else
65
+ puts 'not found'
66
+ end
67
+ end
68
+
69
+ puts "No TV provider was found"
70
+ end
71
+ end
72
+
@@ -0,0 +1,4 @@
1
+ provider('Freebox') {
2
+ url 'http://mafreebox.freebox.fr/freeboxtv/playlist.m3u'
3
+ }
4
+
@@ -0,0 +1,4 @@
1
+ provider('NeufBox') {
2
+ url 'http://televisionsurpc.neuf.fr/televisionsurpc.m3u'
3
+ }
4
+
metadata ADDED
@@ -0,0 +1,82 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: gnome-tv
3
+ version: !ruby/object:Gem::Version
4
+ hash: 9
5
+ prerelease: false
6
+ segments:
7
+ - 0
8
+ - 1
9
+ version: "0.1"
10
+ platform: ruby
11
+ authors:
12
+ - "S\xC3\xA9bastien Nicouleaud"
13
+ autorequire:
14
+ bindir: bin
15
+ cert_chain: []
16
+
17
+ date: 2009-10-18 00:00:00 +02:00
18
+ default_executable: gnome-tv
19
+ dependencies: []
20
+
21
+ description: Watch TV
22
+ email: sebastien.nicouleaud@gmail.com
23
+ executables:
24
+ - gnome-tv
25
+ - gnome-tv-install
26
+ extensions: []
27
+
28
+ extra_rdoc_files: []
29
+
30
+ files:
31
+ - LICENSE
32
+ - README.md
33
+ - Rakefile
34
+ - bin/gnome-tv
35
+ - bin/gnome-tv-install
36
+ - gnome-tv.desktop
37
+ - gnome-tv.gemspec
38
+ - icons/24/apps/tv.png
39
+ - icons/22/apps/tv.png
40
+ - icons/scalable/apps/tv.svg
41
+ - icons/16/apps/tv.png
42
+ - icons/48/apps/tv.png
43
+ - icons/32/apps/tv.png
44
+ - lib/providers/neufbox.rb
45
+ - lib/providers/freebox.rb
46
+ - lib/gnome_tv.rb
47
+ has_rdoc: true
48
+ homepage: http://github.com/sebn/gnome-tv
49
+ licenses: []
50
+
51
+ post_install_message:
52
+ rdoc_options: []
53
+
54
+ require_paths:
55
+ - lib
56
+ required_ruby_version: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ hash: 3
62
+ segments:
63
+ - 0
64
+ version: "0"
65
+ required_rubygems_version: !ruby/object:Gem::Requirement
66
+ none: false
67
+ requirements:
68
+ - - ">="
69
+ - !ruby/object:Gem::Version
70
+ hash: 3
71
+ segments:
72
+ - 0
73
+ version: "0"
74
+ requirements: []
75
+
76
+ rubyforge_project: rack
77
+ rubygems_version: 1.3.7
78
+ signing_key:
79
+ specification_version: 3
80
+ summary: a modular Ruby webserver interface
81
+ test_files: []
82
+