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.
- data/LICENSE +674 -0
- data/README.md +43 -0
- data/Rakefile +6 -0
- data/bin/gnome-tv +5 -0
- data/bin/gnome-tv-install +23 -0
- data/gnome-tv.desktop +14 -0
- data/gnome-tv.gemspec +19 -0
- data/icons/16/apps/tv.png +0 -0
- data/icons/22/apps/tv.png +0 -0
- data/icons/24/apps/tv.png +0 -0
- data/icons/32/apps/tv.png +0 -0
- data/icons/48/apps/tv.png +0 -0
- data/icons/scalable/apps/tv.svg +386 -0
- data/lib/gnome_tv.rb +72 -0
- data/lib/providers/freebox.rb +4 -0
- data/lib/providers/neufbox.rb +4 -0
- metadata +82 -0
data/lib/gnome_tv.rb
ADDED
|
@@ -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
|
+
|
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
|
+
|