gnome-tv 0.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -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
+