pig-media-server 0.2.0 → 0.3.0

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.
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: