pig-media-server 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: 0ff123f0aaed9b937221166e54c4ac8b6f6fa679
4
- data.tar.gz: 4f8a904d67e83f4e01990f213ebfb1787d71abaf
3
+ metadata.gz: 5a8c11fa4d88792c7a93d697dea3442fc44316d3
4
+ data.tar.gz: 8b0ad30ffb50ab03192e1254dadd8b2bba69a234
5
5
  SHA512:
6
- metadata.gz: c058d2d0b84f5daf5738b87adfe3c3d203f21978fd5b2fba1f6c85d5103f6faa6aed9e6c158eaa7869336cfdd4cb412daee71f613c59270f948d2a24e8104a4a
7
- data.tar.gz: e534588976add8bdd3a97463647970b1265945b3791abf10bce29b84b9a70cf837d3593dfa4aebbc515234a4d73e6145c25ad929c3580c31fb12680fe8fcc17a
6
+ metadata.gz: d965b28375598bd6e4ee27960536f058f68b8a993023b0af75defc8c0f319b1e2adebdd18c01825ebd0d3cb3b549787600cbe9100ce6b994ca2f65293796d10b
7
+ data.tar.gz: 06be6ced80f9ad5d62db67109866c20d1fcf31d224e1a1b699691847033384aadc110bd4690b12791e255076215d366bb6801fbc3dd830129387ea2e2158bdfa
@@ -18,4 +18,7 @@ when 'server'
18
18
  port = ARGV[1] ? ARGV[1].to_i : 8080
19
19
  require 'pig-media-server/web'
20
20
  PigMediaServer::Web.run! host: '0.0.0.0', port: port
21
+ when 'kindle-send'
22
+ require 'pig-media-server/kindle_send'
23
+ PigMediaServer::KindleSend.new.run
21
24
  end
@@ -1,23 +1,24 @@
1
1
  require 'pig-media-server'
2
2
  require 'pig-media-server/model/pig'
3
3
 
4
+
4
5
  module PigMediaServer
5
6
  class Crawl
6
7
  def all
7
- config = Pit.get("Pig Media Server")
8
- array = Dir.glob("#{config['path']}/**/*").sort
8
+ $config = Pit.get("Pig Media Server")
9
+ if ARGV[1]
10
+ array = Dir.glob("#{ARGV[1]}/**/*")
11
+ else
12
+ array = Dir.glob("#{$config['path']}/**/*").sort
13
+ end
9
14
  array.each_with_index{|x,i|
10
15
  next if File::ftype(x) == 'directory'
11
16
  flag = false
12
- config['exclude_path'].each{|e| flag = true if x =~ /#{e.sub(/\//, '\/')}/ } if config['exclude_path'].class.to_s == 'Array'
17
+ $config['exclude_path'].each{|e| flag = true if x =~ /#{e.sub(/\//, '\/')}/ } if $config['exclude_path'].class.to_s == 'Array'
13
18
  next if flag
14
19
  Pig.find_or_create_by_path x
15
20
  puts "Crawl #{i+1} / #{array.count}"
16
21
  }
17
- all = Pig.all
18
- all.each_with_index{|x,i|
19
- puts "Check #{i+1} / #{all.count}"
20
- }
21
22
  end
22
23
  end
23
24
  end
@@ -0,0 +1,52 @@
1
+ require 'mail'
2
+ require 'pony'
3
+ require 'pig-media-server'
4
+ require 'pig-media-server/model/pig'
5
+
6
+ module PigMediaServer
7
+ class KindleSend
8
+ def run
9
+ while true
10
+ begin
11
+ GC.start
12
+ pit_config = Pit.get 'Pig Media Server'
13
+ from_hash = Hash[*Dir.glob("#{pit_config['user_data_path']}/*.json").map{|t| JSON.parse open(t).read}.select{|t| t['kindle_to'] and t['kindle_from']}.map{|t| [t['kindle_to'], t['kindle_from']]}.select{|t| t.first != '' and t.last != ''}.flatten]
14
+ Dir.glob("#{pit_config['user_data_path']}/kindle/queue/*").each{|x|
15
+ begin
16
+ queue = x.split('/').last
17
+ key = queue.split('_').first
18
+ user_id = queue.split('_').last
19
+ config = JSON.parse open("#{pit_config['user_data_path']}/#{user_id}.json").read
20
+ p [key, user_id, config['kindle_to'], config['kindle_from']]
21
+
22
+ pig = Pig.find key
23
+ puts 'start send'
24
+ from_hash.each{|to, from|
25
+ p [to, from]
26
+ Pony.mail({
27
+ :to => to,
28
+ from: from,
29
+ subject: '',
30
+ body: '',
31
+ attachments: {"#{key}.mobi" => File.read(pig.record.path)},
32
+ :via => :smtp,
33
+ :via_options => pit_config['smtp'].dup
34
+ })
35
+ }
36
+ rescue =>e
37
+ p e
38
+ p e.backtrace
39
+ end
40
+ FileUtils.cd '/home/ssig33/dev/pig'
41
+ FileUtils.rm x
42
+ puts 'end '+x
43
+ }
44
+ rescue => e
45
+ p e
46
+ p e.backtrace
47
+ end
48
+ sleep 1
49
+ end
50
+ end
51
+ end
52
+ end
@@ -1,4 +1,5 @@
1
1
  #coding:utf-8
2
+ require 'fileutils'
2
3
  require 'pig-media-server/model/migrate'
3
4
 
4
5
  class Pig
@@ -8,7 +9,7 @@ class Pig
8
9
  record.size = File::Stat.new(record.path).size.to_s rescue nil
9
10
  end
10
11
  self.record = record
11
- self.config = Pit.get "Pig Media Server"
12
+ self.config = $config || Pit.get("Pig Media Server")
12
13
  end
13
14
  def key; self.record._key;end
14
15
  def name; self.record.path.split('/').last; end
@@ -25,10 +26,15 @@ class Pig
25
26
  'read'
26
27
  when 'txt', 'TXT'
27
28
  'txt'
29
+ when 'mobi'
30
+ 'mobi'
28
31
  else
29
32
  'other'
30
33
  end
31
34
  end
35
+ def path
36
+ self.record.path.sub(/#{config['path'].sub(/\//, '\/')}/, '')
37
+ end
32
38
  def comic
33
39
  Comic.new self.record
34
40
  end
@@ -40,6 +46,10 @@ WEBVTT
40
46
  EOS
41
47
  str.chomp.chomp
42
48
  end
49
+ def to_kindle user_id
50
+ FileUtils.mkdir_p "#{self.config['user_data_path']}/kindle/queue"
51
+ open("#{self.config['user_data_path']}/kindle/queue/#{self.key}_#{user_id}", 'w'){|x| x.puts ''}
52
+ end
43
53
 
44
54
 
45
55
 
@@ -1,3 +1,3 @@
1
1
  module PigMediaServer
2
- VERSION = "0.2.0"
2
+ VERSION = "0.3.0"
3
3
  end
@@ -0,0 +1,3 @@
1
+ - if session[:user_id] and record.size.to_i < 1024*1024*200
2
+ %a.kindle{href: "/to_kindle/#{record.key}?path=#{CGI.escape request.url}"} Send To Kindle
3
+
@@ -1,4 +1,8 @@
1
- save = -> localStorage.gyazo = $('#gyazo').val()
1
+ save = ->
2
+ localStorage.gyazo = $('#gyazo').val()
3
+ if $('#kindle_to').get(0)
4
+ save_to_pig({kindle_to: $('#kindle_to').val(), kindle_from: $('#kindle_from').val(),remote: $('#remote').prop('checked')})
5
+
2
6
 
3
7
  $ ->
4
8
  if localStorage.gyazo == undefined
@@ -6,3 +10,7 @@ $ ->
6
10
  $('#gyazo').val(localStorage.gyazo)
7
11
 
8
12
  $('#save').click -> save()
13
+
14
+ get_from_pig('kindle_to', (data)-> $('#kindle_to').val(data))
15
+ get_from_pig('kindle_from', (data)-> $('#kindle_from').val(data))
16
+
@@ -3,6 +3,7 @@
3
3
  %title Config - Pig Media Server
4
4
  %script{src: 'http://code.jquery.com/jquery.min.js'}
5
5
  %script{src: '/config.js'}
6
+ %script{src: '/storage.js'}
6
7
  %link{href: '/app.css', rel: 'stylesheet', type: 'text/css'}
7
8
  %meta(content='width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no' name='viewport')
8
9
  #all
@@ -24,6 +25,23 @@
24
25
  %th Gyazo
25
26
  %td
26
27
  %input#gyazo{size: 60}
28
+ -if session[:user_id]
29
+ %tr
30
+ %th Use Remote?
31
+ %td
32
+ -if hash()['remote']
33
+ %input#remote{type: :checkbox}(checked)
34
+ -else
35
+ %input#remote{type: :checkbox}
36
+ %tr
37
+ %th Kindle To
38
+ %td
39
+ %input#kindle_to{size: 60}
40
+ %tr
41
+ %th Kindle From
42
+ %td
43
+ %input#kindle_from{size: 60}
44
+
27
45
  %tr
28
46
  %td
29
47
  %button#save Save
@@ -0,0 +1,38 @@
1
+ <!DOCTYPE html>
2
+ %meta{charset: 'UTF-8'}
3
+ %title Pig Media Server
4
+ %script{src: 'http://code.jquery.com/jquery.min.js'}
5
+ %script{src: '/meta.js'}
6
+
7
+ %link{href: '/app.css', rel: 'stylesheet', type: 'text/css'}
8
+ <meta content='width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no' name='viewport' />
9
+ #all
10
+ %h1 pig.ssig33.com
11
+ %p=flash[:notice]
12
+ %form{method: 'GET', action: '/'}
13
+ %input{name: 'query', value: params[:query]}
14
+ %button Search
15
+ %a{href: '/latest'} Latest
16
+ %a{href: '/?syobo=true'} Syobocal
17
+ %a{href: '/config'} Config
18
+ %h2 Metadata
19
+ %h3=@p.name
20
+ %h4 Path
21
+ %p=@p.record.path
22
+ %h4 Size
23
+ %p=number_to_human_size @p.size
24
+ -case @p.type
25
+ -when 'video'
26
+ %p
27
+ %video{src: @p.url, controls: :controls, style: 'max-width:50%;max-height:50%'}
28
+ %p
29
+ -if hash()['remote']
30
+ %a.remote{href: 'javascript:void(0)', key: @p.record.key} remote
31
+ -if @p.metadata
32
+ %h4 Data
33
+ %p#aspect=''
34
+ %p!=@p.metadata.gsub(/\n/, '<br>')
35
+ -else
36
+ %p#aspect=''
37
+ .none
38
+ %span#key=params[:key]
@@ -0,0 +1,50 @@
1
+ shot = (index, targets, complete)->
2
+ t = targets[index]
3
+ if t == undefined
4
+ $.post('/api/save', name: "sub/caps/#{$('#key').text()}", body: JSON.stringify(complete)).success ->
5
+ $.post('/api/save', name:"sub/exist_cap/#{$('#key').text()}", body: 'true').success ->
6
+ location.reload()
7
+ else
8
+ i = ~~(parseInt($(t).attr('start'))/1000)
9
+ $.post('/api/capapi', key: $('#key').text(), time: i).success((data)->
10
+ complete[$(t).attr('id')] = data
11
+ $('.control').text "#{index} / #{targets.length}"
12
+ shot index+1, targets, complete
13
+ ).error(->
14
+ setTimeout ->
15
+ shot index, targets, complete
16
+ ,500
17
+ )
18
+ create_cap = ->
19
+ c = 0
20
+ targets = []
21
+ $.each $('.srt_line'), (i,n)->
22
+ if i == 0
23
+ targets.push n
24
+ c = parseInt($(n).attr('start')) + 15*1000
25
+ else if i == ($('.srt_line').length-1)
26
+ targets.push n
27
+ else
28
+ if c <= parseInt($(n).attr('start'))
29
+ targets.push n
30
+ c = parseInt($(n).attr('start')) + 15*1000
31
+ shot(0, targets, {})
32
+ true
33
+
34
+ $ ->
35
+ for n in $('.srt p')
36
+ start = $($(n).text().split('\n')[1].split(' ')).filter(-> this.length != 0)[0]
37
+ milli = parseInt start.split(',')[1], 10
38
+ hour = parseInt start.split(',')[0].split(':')[0], 10
39
+ min = parseInt start.split(',')[0].split(':')[1], 10
40
+ sec = parseInt start.split(',')[0].split(':')[2], 10
41
+ start_i = hour*60*60*1000 + min*60*1000 + sec*1000 + milli
42
+ $(n).attr start: start_i, id: "start_#{start_i}", class: 'srt_line'
43
+ $.get('/api/get', name: "sub/exist_cap/#{$('#key').text()}").success (data)->
44
+ if data.match /true/
45
+ sub_view()
46
+ else
47
+ $('<button>').text('Create Capture').attr(
48
+ id: 'cap'
49
+ ).appendTo('.control').click(-> create_cap()).css('cursor','pointer')
50
+
@@ -0,0 +1,29 @@
1
+ <!DOCTYPE html>
2
+ %meta{charset: 'UTF-8'}
3
+ %title Pig Media Server
4
+ %link{href: '/app.css', rel: 'stylesheet', type: 'text/css'}
5
+ %script{src: 'http://code.jquery.com/jquery.min.js'}
6
+
7
+ %script{src: '/sub.js'}
8
+ %script{src: '/subview.js'}
9
+ %meta{content: 'width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no', name: 'viewport'}
10
+ #all
11
+ %h1 pig.ssig33.com
12
+ %form{method: 'GET', action: '/'}
13
+ %input{name: 'query', value: params[:query]}
14
+ %button Search
15
+ %a{href: '/latest'} Latest
16
+ %a{href: '/?syobo=true'} Syobocal
17
+ %a{href: '/config'} Config
18
+ %h2 Subtext
19
+ %h3=@p.name
20
+ .control
21
+ %h4 Data
22
+ %div.srt!=markdown @p.srt
23
+ %div
24
+ %a{href: "/nosub/#{params[:key]}"} Edit
25
+ .none
26
+ %span#key=params[:key]
27
+ %span#url="/data/#{@p.path}"
28
+ %span#path
29
+ %canvas
@@ -0,0 +1,57 @@
1
+ ps = null
2
+ ids = []
3
+ mode = 'eroge'
4
+ current = null
5
+
6
+ eroge_next = ->
7
+ if current == null or current == undefined
8
+ current = ps[0]
9
+ else
10
+ current = ps[ids.indexOf($(current).attr('id'))+1]
11
+
12
+ before = ps[ids.indexOf($(current).attr('id'))-1]
13
+ if $(before).find('img').length == 0
14
+ $(before).css display: 'none'
15
+ if $(current).find('img').length != 0
16
+ $('html, body').animate {scrollTop: $(current).offset().top}, 'fast'
17
+ current = ps[ids.indexOf($(current).attr('id'))+1]
18
+
19
+ eroge_prev = ->
20
+ if current == null or current ==undefined
21
+ current = ps[0]
22
+ else
23
+ current = ps[ids.indexOf($(current).attr('id'))-1]
24
+ if $(current).find('img').length != 0
25
+ $('html, body').animate {scrollTop: $(current).offset().top}, 'fast'
26
+ $(current).css display: 'block'
27
+
28
+
29
+ window.sub_view = ->
30
+ for n in $('.srt_line')
31
+ a = $(n).html().split('<br>')
32
+ a.splice(0, 1)
33
+ $(n).html a.join('<br>')
34
+ $.get('/api/get', name: "sub/caps/#{$('#key').text()}").success (data)->
35
+ caps = JSON.parse(data)
36
+ $.each caps, (i,n)->
37
+ $("##{i}").before $('<p>').append($('<img>').attr(src: n)).attr(class: 'srt_image', id: "image_#{i}")
38
+ ps = document.querySelectorAll('.srt p')
39
+ $('h3').after(
40
+ $('<button>').text('Reset Capture').click ->
41
+ $.post('/api/save', name: "sub/exist_cap/#{$('#key').text()}", body: 'false').success(->
42
+ location.reload()
43
+ )
44
+ )
45
+ for n in ps
46
+ ids.push $(n).attr('id')
47
+ $(window).keyup (e)->
48
+ console.log e.keyCode
49
+ switch e.keyCode
50
+ when 74, 13
51
+ eroge_next()
52
+ when 75
53
+ eroge_prev()
54
+ $ ->
55
+ $(document).on('click', '.srt_image', -> eroge_next()).css('cursor','pointer')
56
+ #$(document).on('touchend', '.srt_image', -> eroge_next())
57
+
@@ -6,8 +6,10 @@ require 'sinatra/flash'
6
6
  require 'net/http'
7
7
  require 'sass'
8
8
  require 'haml'
9
+ require 'fileutils'
9
10
  require 'coffee_script'
10
11
  require 'rack/csrf'
12
+ require 'redcarpet'
11
13
  require 'json'
12
14
 
13
15
  module PigMediaServer
@@ -90,6 +92,10 @@ EOF
90
92
  haml :index
91
93
  end
92
94
 
95
+ get('/meta/:key'){@p = Pig.find(params[:key]);haml :meta}
96
+ get('/sub/:key'){@p = Pig.find(params[:key]);haml :sub}
97
+ get('/webvtt/:key'){@p = Pig.find(params[:key]); content_type :text; @p.webvtt}
98
+
93
99
  get '/read/:key' do
94
100
  if request.xhr?
95
101
  @record = Pig.find params[:key] rescue nil
@@ -129,6 +135,17 @@ EOF
129
135
  end
130
136
  end
131
137
 
138
+ get '/to_kindle/:key' do
139
+ flash[:notice] = 'Request Accepted. Please wait minutes.'
140
+ Pig.find(params[:key]).to_kindle(session[:user_id])
141
+ if params[:path]
142
+ redirect params[:path]
143
+ else
144
+ redirect "/ao/#{params[:key]}"
145
+ end
146
+ end
147
+
148
+
132
149
  post '/sessions' do
133
150
  session[:user_id] = params[:user_id]
134
151
  redirect '/'
@@ -142,7 +159,30 @@ EOF
142
159
  get('/swipe.js'){content_type :js;erb :swipe}
143
160
  get('/*.css'){scss params[:splat].first.to_sym}
144
161
  get('/*.js'){coffee params[:splat].first.to_sym}
145
-
162
+
163
+ post '/api/save' do
164
+ key = Digest::MD5.hexdigest(params[:name]).to_s
165
+ FileUtils.mkdir_p "#{config['user_data_path']}/api_data"
166
+ open("#{config['user_data_path']}/api_data/#{key}", 'w'){|x| x.puts params[:body]}
167
+ true
168
+ end
169
+ get '/api/get' do
170
+ key = Digest::MD5.hexdigest(params[:name]).to_s
171
+ FileUtils.mkdir_p "#{config['user_data_path']}/api_data"
172
+ if File.exist? "#{config['user_data_path']}/api_data/#{key}"
173
+ open("#{config['user_data_path']}/api_data/#{key}").read
174
+ else
175
+ nil
176
+ end
177
+ end
178
+ post '/api/capapi' do
179
+ record = Groonga['Files'][params[:key]]
180
+ name = "#{rand(256**16).to_s(16)}.jpg"
181
+ system "ffmpeg -ss #{params[:time]} -vframes 1 -i \"#{record.path}\" -f image2 #{config['gyazo_path']}/#{name}"
182
+ "#{config['gyazo_prefix']}/#{name}"
183
+ end
184
+
185
+
146
186
  helpers do
147
187
  def config
148
188
  Pit.get "Pig Media Server"
@@ -10,7 +10,7 @@ Gem::Specification.new do |gem|
10
10
  gem.email = ["mail@ssig33.com"]
11
11
  gem.description = %q{Pig Media Server}
12
12
  gem.summary = %q{Pig Media Server}
13
- gem.homepage = ""
13
+ gem.homepage = "http://github.com/ssig33/pig-media-server"
14
14
 
15
15
  gem.files = `git ls-files`.split($/)
16
16
  gem.executables = %w(pig-media-server)
@@ -27,6 +27,9 @@ Gem::Specification.new do |gem|
27
27
  gem.add_dependency 'sewell'
28
28
  gem.add_dependency 'rmagick'
29
29
  gem.add_dependency 'zipruby'
30
+ gem.add_dependency 'pony'
31
+ gem.add_dependency 'mail'
32
+ gem.add_dependency 'redcarpet'
30
33
  gem.add_dependency 'coffee-script'
31
34
  gem.add_dependency 'sinatra-flash'
32
35
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pig-media-server
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - ssig33
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-05-30 00:00:00.000000000 Z
11
+ date: 2013-06-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rroonga
@@ -150,6 +150,48 @@ dependencies:
150
150
  - - '>='
151
151
  - !ruby/object:Gem::Version
152
152
  version: '0'
153
+ - !ruby/object:Gem::Dependency
154
+ name: pony
155
+ requirement: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - '>='
158
+ - !ruby/object:Gem::Version
159
+ version: '0'
160
+ type: :runtime
161
+ prerelease: false
162
+ version_requirements: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - '>='
165
+ - !ruby/object:Gem::Version
166
+ version: '0'
167
+ - !ruby/object:Gem::Dependency
168
+ name: mail
169
+ requirement: !ruby/object:Gem::Requirement
170
+ requirements:
171
+ - - '>='
172
+ - !ruby/object:Gem::Version
173
+ version: '0'
174
+ type: :runtime
175
+ prerelease: false
176
+ version_requirements: !ruby/object:Gem::Requirement
177
+ requirements:
178
+ - - '>='
179
+ - !ruby/object:Gem::Version
180
+ version: '0'
181
+ - !ruby/object:Gem::Dependency
182
+ name: redcarpet
183
+ requirement: !ruby/object:Gem::Requirement
184
+ requirements:
185
+ - - '>='
186
+ - !ruby/object:Gem::Version
187
+ version: '0'
188
+ type: :runtime
189
+ prerelease: false
190
+ version_requirements: !ruby/object:Gem::Requirement
191
+ requirements:
192
+ - - '>='
193
+ - !ruby/object:Gem::Version
194
+ version: '0'
153
195
  - !ruby/object:Gem::Dependency
154
196
  name: coffee-script
155
197
  requirement: !ruby/object:Gem::Requirement
@@ -196,11 +238,13 @@ files:
196
238
  - lib/pig-media-server/book2.erb
197
239
  - lib/pig-media-server/cli.rb
198
240
  - lib/pig-media-server/crawl.rb
241
+ - lib/pig-media-server/kindle_send.rb
199
242
  - lib/pig-media-server/model/comic.rb
200
243
  - lib/pig-media-server/model/migrate.rb
201
244
  - lib/pig-media-server/model/pig.rb
202
245
  - lib/pig-media-server/script.rb
203
246
  - lib/pig-media-server/version.rb
247
+ - lib/pig-media-server/views/_ft_mobi.haml
204
248
  - lib/pig-media-server/views/_ft_other.haml
205
249
  - lib/pig-media-server/views/_ft_read.haml
206
250
  - lib/pig-media-server/views/_ft_txt.haml
@@ -213,6 +257,7 @@ files:
213
257
  - lib/pig-media-server/views/config.coffee
214
258
  - lib/pig-media-server/views/config.haml
215
259
  - lib/pig-media-server/views/index.haml
260
+ - lib/pig-media-server/views/meta.haml
216
261
  - lib/pig-media-server/views/movie.coffee
217
262
  - lib/pig-media-server/views/read.haml
218
263
  - lib/pig-media-server/views/remote.coffee
@@ -220,11 +265,14 @@ files:
220
265
  - lib/pig-media-server/views/session.coffee
221
266
  - lib/pig-media-server/views/sessions.haml
222
267
  - lib/pig-media-server/views/storage.coffee
268
+ - lib/pig-media-server/views/sub.coffee
269
+ - lib/pig-media-server/views/sub.haml
270
+ - lib/pig-media-server/views/subview.coffee
223
271
  - lib/pig-media-server/views/swipe.erb
224
272
  - lib/pig-media-server/views/unread.coffee
225
273
  - lib/pig-media-server/web.rb
226
274
  - pig-media-server.gemspec
227
- homepage: ''
275
+ homepage: http://github.com/ssig33/pig-media-server
228
276
  licenses: []
229
277
  metadata: {}
230
278
  post_install_message: