syndicate 0.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,7 @@
1
+ require "syndicate/version"
2
+ require "syndicate/app"
3
+ require "syndicate/lib/video"
4
+
5
+ module Syndicate
6
+
7
+ end
@@ -0,0 +1,40 @@
1
+ require 'sinatra/base'
2
+ require 'builder'
3
+ require 'puma'
4
+
5
+ APP_ROOT ||= File.expand_path( File.dirname(__FILE__) )
6
+ require APP_ROOT + '/lib/video'
7
+
8
+ module Syndicate
9
+ class App < Sinatra::Base
10
+
11
+ set :server, :puma
12
+ set :port, 3000
13
+
14
+ helpers do
15
+ def url_from_path(path)
16
+ URI.encode "http://#{request.host}:#{request.port}/v#{path}"
17
+ end
18
+ end
19
+
20
+ get '/' do
21
+ "Syndicate : MRSS Publishing"
22
+ end
23
+
24
+ get '/d/*' do
25
+ @directory = File.join('/', params[:splat][0], '*')
26
+
27
+ files = Dir[@directory].select { |file| !File.directory? file }
28
+ @videos = files.map { |file| Video.from_path(file) }.compact
29
+
30
+ builder :mrss
31
+ end
32
+
33
+ get '/v/*' do
34
+ path = File.join('/', URI.decode(params[:splat][0]))
35
+
36
+ send_file path
37
+ end
38
+ end
39
+ end
40
+
@@ -0,0 +1,6 @@
1
+ APP_ROOT = File.expand_path( File.dirname(__FILE__) )
2
+ $:.push APP_ROOT
3
+
4
+ require 'app'
5
+
6
+ run Syndicate::App
@@ -0,0 +1,37 @@
1
+ require 'uri'
2
+
3
+ class Video
4
+ attr_reader :title, :description, :thumbnail, :path
5
+
6
+ VALID_EXTENSIONS = ['.mp4', '.avi', '.mkv']
7
+
8
+ def self.from_path(path)
9
+ if valid_extension? path
10
+ title = path.split('/').last
11
+ title = strip_extension(title)
12
+
13
+ Video.new(
14
+ title: title,
15
+ path: path
16
+ )
17
+ end
18
+ end
19
+
20
+ def initialize(args = {})
21
+ @title = args[:title]
22
+ @path = args[:path]
23
+ end
24
+
25
+ private
26
+
27
+ def self.strip_extension(path)
28
+ segments = path.split('.')
29
+ segments.delete_at(-1)
30
+ segments.join('.')
31
+ end
32
+
33
+ def self.valid_extension?(path)
34
+ VALID_EXTENSIONS.include? File.extname(path).downcase
35
+ end
36
+ end
37
+
@@ -0,0 +1,3 @@
1
+ module Syndicate
2
+ VERSION = "0.0.1"
3
+ end
@@ -0,0 +1,16 @@
1
+ xml.instruct! :rss, :version => '2.0', :'xmlns:media' => 'http://search.yahoo.com/mrss/'
2
+
3
+ xml.channel do
4
+ xml.title @directory
5
+ xml.link "http://#{request.host}:#{request.port}"
6
+ xml.description "Generted by Syndicate"
7
+
8
+ @videos.each do |v|
9
+ xml.item do
10
+ xml.media :title, v.title
11
+ xml.media :description, v.description
12
+ xml.media :thumbnail, v.thumbnail
13
+ xml.content( medium: 'video', url: url_from_path(v.path) )
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,21 @@
1
+ # -*- encoding: utf-8 -*-
2
+ require File.expand_path('../lib/syndicate/version', __FILE__)
3
+
4
+ Gem::Specification.new do |gem|
5
+ gem.authors = ["brookemckim"]
6
+ gem.email = ["brooke.mckim@gmail.com"]
7
+ gem.description = %q{Easily watch videos hosted on your computer on any OTT device that can consume a MRSS feed.}
8
+ gem.summary = %q{Publish any directory as an MRSS feed.}
9
+ gem.homepage = "http://github.com/brookemckim/syndicate"
10
+
11
+ gem.files = `git ls-files`.split($\)
12
+ gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
13
+ gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
14
+ gem.name = "syndicate"
15
+ gem.require_paths = ["lib"]
16
+ gem.version = Syndicate::VERSION
17
+
18
+ gem.add_dependency 'puma', '~> 1.3.0'
19
+ gem.add_dependency 'builder'
20
+ gem.add_dependency 'sinatra', '~> 1.3.2'
21
+ end
metadata ADDED
@@ -0,0 +1,129 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: syndicate
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - brookemckim
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-05-23 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: puma
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ~>
20
+ - !ruby/object:Gem::Version
21
+ version: 1.3.0
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ~>
28
+ - !ruby/object:Gem::Version
29
+ version: 1.3.0
30
+ - !ruby/object:Gem::Dependency
31
+ name: builder
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
38
+ type: :runtime
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
46
+ - !ruby/object:Gem::Dependency
47
+ name: sinatra
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ~>
52
+ - !ruby/object:Gem::Version
53
+ version: 1.3.2
54
+ type: :runtime
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ~>
60
+ - !ruby/object:Gem::Version
61
+ version: 1.3.2
62
+ description: Easily watch videos hosted on your computer on any OTT device that can
63
+ consume a MRSS feed.
64
+ email:
65
+ - brooke.mckim@gmail.com
66
+ executables:
67
+ - syndicate
68
+ extensions: []
69
+ extra_rdoc_files: []
70
+ files:
71
+ - .gitignore
72
+ - Gemfile
73
+ - Gemfile.lock
74
+ - LICENSE
75
+ - README.md
76
+ - Rakefile
77
+ - bin/syndicate
78
+ - examples/roku/Makefile
79
+ - examples/roku/README.md
80
+ - examples/roku/app.mk
81
+ - examples/roku/images/banner-hd.png
82
+ - examples/roku/images/banner-logo-hd.png
83
+ - examples/roku/images/banner-logo-sd.png
84
+ - examples/roku/images/banner-sd.png
85
+ - examples/roku/images/logo-hd.jpg
86
+ - examples/roku/images/logo-sd.jpg
87
+ - examples/roku/manifest
88
+ - examples/roku/source/appMain.brs
89
+ - examples/roku/source/lib/generalDlgs.brs
90
+ - examples/roku/source/lib/generalUtils.brs
91
+ - examples/roku/source/lib/lib.brs
92
+ - examples/roku/source/lib/mrss.brs
93
+ - examples/roku/source/lib/urlUtils.brs
94
+ - examples/roku/source/lib/video.brs
95
+ - examples/roku/source/screens/mediaplayer.brs
96
+ - examples/roku/source/screens/poster.brs
97
+ - examples/roku/source/theme.brs
98
+ - lib/syndicate.rb
99
+ - lib/syndicate/app.rb
100
+ - lib/syndicate/config.ru
101
+ - lib/syndicate/lib/video.rb
102
+ - lib/syndicate/version.rb
103
+ - lib/syndicate/views/mrss.builder
104
+ - syndicate.gemspec
105
+ homepage: http://github.com/brookemckim/syndicate
106
+ licenses: []
107
+ post_install_message:
108
+ rdoc_options: []
109
+ require_paths:
110
+ - lib
111
+ required_ruby_version: !ruby/object:Gem::Requirement
112
+ none: false
113
+ requirements:
114
+ - - ! '>='
115
+ - !ruby/object:Gem::Version
116
+ version: '0'
117
+ required_rubygems_version: !ruby/object:Gem::Requirement
118
+ none: false
119
+ requirements:
120
+ - - ! '>='
121
+ - !ruby/object:Gem::Version
122
+ version: '0'
123
+ requirements: []
124
+ rubyforge_project:
125
+ rubygems_version: 1.8.23
126
+ signing_key:
127
+ specification_version: 3
128
+ summary: Publish any directory as an MRSS feed.
129
+ test_files: []