pig-media-server 0.2.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 +7 -0
- data/.gitignore +19 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +22 -0
- data/README.md +29 -0
- data/Rakefile +1 -0
- data/bin/pig-media-server +4 -0
- data/lib/pig-media-server.rb +10 -0
- data/lib/pig-media-server/book2.erb +59 -0
- data/lib/pig-media-server/cli.rb +21 -0
- data/lib/pig-media-server/crawl.rb +23 -0
- data/lib/pig-media-server/model/comic.rb +64 -0
- data/lib/pig-media-server/model/migrate.rb +26 -0
- data/lib/pig-media-server/model/pig.rb +98 -0
- data/lib/pig-media-server/script.rb +4 -0
- data/lib/pig-media-server/version.rb +3 -0
- data/lib/pig-media-server/views/_ft_other.haml +0 -0
- data/lib/pig-media-server/views/_ft_read.haml +9 -0
- data/lib/pig-media-server/views/_ft_txt.haml +1 -0
- data/lib/pig-media-server/views/_ft_video.haml +6 -0
- data/lib/pig-media-server/views/_link.haml +14 -0
- data/lib/pig-media-server/views/_new_flag.haml +4 -0
- data/lib/pig-media-server/views/app.scss +85 -0
- data/lib/pig-media-server/views/book.coffee +236 -0
- data/lib/pig-media-server/views/book2.erb +59 -0
- data/lib/pig-media-server/views/config.coffee +8 -0
- data/lib/pig-media-server/views/config.haml +29 -0
- data/lib/pig-media-server/views/index.haml +45 -0
- data/lib/pig-media-server/views/movie.coffee +159 -0
- data/lib/pig-media-server/views/read.haml +34 -0
- data/lib/pig-media-server/views/remote.coffee +25 -0
- data/lib/pig-media-server/views/remote.haml +14 -0
- data/lib/pig-media-server/views/session.coffee +6 -0
- data/lib/pig-media-server/views/sessions.haml +11 -0
- data/lib/pig-media-server/views/storage.coffee +32 -0
- data/lib/pig-media-server/views/swipe.erb +433 -0
- data/lib/pig-media-server/views/unread.coffee +14 -0
- data/lib/pig-media-server/web.rb +201 -0
- data/pig-media-server.gemspec +32 -0
- metadata +250 -0
| @@ -0,0 +1,14 @@ | |
| 1 | 
            +
            window.set_new = ->
         | 
| 2 | 
            +
              window.get_recents (recents)->
         | 
| 3 | 
            +
                count = 0
         | 
| 4 | 
            +
                $.each $('.new_flag'), ->
         | 
| 5 | 
            +
                  key = this.getAttribute 'key'
         | 
| 6 | 
            +
                  unless recents[key]
         | 
| 7 | 
            +
                    $(this).text 'New!'
         | 
| 8 | 
            +
                    count += 1
         | 
| 9 | 
            +
                if count == 0
         | 
| 10 | 
            +
                  $('.main_link').css('margin-left', '0')
         | 
| 11 | 
            +
             | 
| 12 | 
            +
            $ ->
         | 
| 13 | 
            +
              set_new()
         | 
| 14 | 
            +
             | 
| @@ -0,0 +1,201 @@ | |
| 1 | 
            +
            require 'pig-media-server'
         | 
| 2 | 
            +
            require 'pig-media-server/model/pig'
         | 
| 3 | 
            +
            require 'pig-media-server/model/comic'
         | 
| 4 | 
            +
            require 'sinatra/base'
         | 
| 5 | 
            +
            require 'sinatra/flash'
         | 
| 6 | 
            +
            require 'net/http'
         | 
| 7 | 
            +
            require 'sass'
         | 
| 8 | 
            +
            require 'haml'
         | 
| 9 | 
            +
            require 'coffee_script'
         | 
| 10 | 
            +
            require 'rack/csrf'
         | 
| 11 | 
            +
            require 'json'
         | 
| 12 | 
            +
             | 
| 13 | 
            +
            module PigMediaServer
         | 
| 14 | 
            +
              class UserData
         | 
| 15 | 
            +
                def self.save json, user_id, path
         | 
| 16 | 
            +
                  open("#{path}/#{user_id}.json", "w"){|f| f.puts json}
         | 
| 17 | 
            +
                  true
         | 
| 18 | 
            +
                end
         | 
| 19 | 
            +
             | 
| 20 | 
            +
                def self.load user_id, path
         | 
| 21 | 
            +
                  return JSON.parse(open("#{path}/#{user_id}.json").read) rescue return {}
         | 
| 22 | 
            +
                end
         | 
| 23 | 
            +
              end
         | 
| 24 | 
            +
             | 
| 25 | 
            +
              class Gyazo
         | 
| 26 | 
            +
                def self.post url, point
         | 
| 27 | 
            +
                  imagedata = url.sub(/data:image\/png;base64,/, '').unpack('m').first
         | 
| 28 | 
            +
                  boundary = '----BOUNDARYBOUNDARY----'
         | 
| 29 | 
            +
                  id = rand(256**16).to_s(16) 
         | 
| 30 | 
            +
             | 
| 31 | 
            +
                  data = <<EOF
         | 
| 32 | 
            +
            --#{boundary}\r
         | 
| 33 | 
            +
            content-disposition: form-data; name="id"\r
         | 
| 34 | 
            +
            \r
         | 
| 35 | 
            +
            #{id}\r
         | 
| 36 | 
            +
            --#{boundary}\r
         | 
| 37 | 
            +
            content-disposition: form-data; name="imagedata"; filename="gyazo.com"\r
         | 
| 38 | 
            +
            \r
         | 
| 39 | 
            +
            #{imagedata}\r
         | 
| 40 | 
            +
            --#{boundary}--\r
         | 
| 41 | 
            +
            EOF
         | 
| 42 | 
            +
                  header ={
         | 
| 43 | 
            +
                    'Content-Length' => data.length.to_s,
         | 
| 44 | 
            +
                    'Content-type' => "multipart/form-data; boundary=#{boundary}",
         | 
| 45 | 
            +
                    'User-Agent' => 'ssig33.com/1.0'
         | 
| 46 | 
            +
                  }
         | 
| 47 | 
            +
                  proxy_host, proxy_port = nil, nil
         | 
| 48 | 
            +
                  uri = URI.parse point
         | 
| 49 | 
            +
                  Net::HTTP::Proxy(proxy_host, proxy_port).start(uri.host,80) {|http|
         | 
| 50 | 
            +
                    res = http.post(uri.path, data, header).body
         | 
| 51 | 
            +
                    puts res
         | 
| 52 | 
            +
                    return res
         | 
| 53 | 
            +
                  }
         | 
| 54 | 
            +
                end
         | 
| 55 | 
            +
              end
         | 
| 56 | 
            +
             | 
| 57 | 
            +
              class Web < Sinatra::Base
         | 
| 58 | 
            +
                register Sinatra::Flash
         | 
| 59 | 
            +
                
         | 
| 60 | 
            +
                configure do
         | 
| 61 | 
            +
                  set :sessions, true
         | 
| 62 | 
            +
                  set :haml, escape_html: true
         | 
| 63 | 
            +
                  set :haml, attr_wrapper: '"'
         | 
| 64 | 
            +
                  use Rack::Session::Cookie, expire_after: 60*60*24*28, secret: $session_secret || rand(256**16).to_s(16)
         | 
| 65 | 
            +
                end
         | 
| 66 | 
            +
                
         | 
| 67 | 
            +
                get '/' do
         | 
| 68 | 
            +
                  if params[:query]
         | 
| 69 | 
            +
                    redirect '/latest' if params[:query].empty?
         | 
| 70 | 
            +
                    @page = params[:page].to_i < 1 ? 1 : params[:page].to_i
         | 
| 71 | 
            +
                    @action = 'list'
         | 
| 72 | 
            +
                    @list = Pig.search params.merge(page: @page)
         | 
| 73 | 
            +
                  end
         | 
| 74 | 
            +
                  haml :index
         | 
| 75 | 
            +
                end
         | 
| 76 | 
            +
             | 
| 77 | 
            +
                get '/custom' do
         | 
| 78 | 
            +
                  c = config['custom_list'][params[:name]]
         | 
| 79 | 
            +
                  @page = params[:page].to_i < 1 ? 1 : params[:page].to_i
         | 
| 80 | 
            +
                  @action = 'list'
         | 
| 81 | 
            +
                  @list = Pig.find JSON.parse(open(c).read)
         | 
| 82 | 
            +
                  haml :index
         | 
| 83 | 
            +
                end
         | 
| 84 | 
            +
             | 
| 85 | 
            +
                get '/latest' do
         | 
| 86 | 
            +
                  @page = params[:page].to_i < 1 ? 1 : params[:page].to_i
         | 
| 87 | 
            +
                  size = params[:size] ? params[:size].to_i : 50
         | 
| 88 | 
            +
                  @list = Groonga['Files'].select.paginate([key: 'mtime', order: 'descending'], size: size, page: @page).map{|x| Pig.new(x)}
         | 
| 89 | 
            +
                  @action = 'list'
         | 
| 90 | 
            +
                  haml :index
         | 
| 91 | 
            +
                end
         | 
| 92 | 
            +
             | 
| 93 | 
            +
                get '/read/:key' do
         | 
| 94 | 
            +
                  if request.xhr?
         | 
| 95 | 
            +
                    @record = Pig.find params[:key] rescue nil
         | 
| 96 | 
            +
                    @comic = @record.comic
         | 
| 97 | 
            +
                    haml :read
         | 
| 98 | 
            +
                  else
         | 
| 99 | 
            +
                    raise
         | 
| 100 | 
            +
                  end
         | 
| 101 | 
            +
                end
         | 
| 102 | 
            +
                get('/book/info/:key'){ content_type :json; Pig.find(params[:key]).comic.info(params[:page]).to_json}
         | 
| 103 | 
            +
                get '/book/image' do
         | 
| 104 | 
            +
                  image, type = Pig.find(params[:id]).comic.page(params[:page])
         | 
| 105 | 
            +
                  content_type type
         | 
| 106 | 
            +
                  image
         | 
| 107 | 
            +
                end
         | 
| 108 | 
            +
             | 
| 109 | 
            +
                post '/gyazo' do
         | 
| 110 | 
            +
                  url = PigMediaServer::Gyazo.post params[:url], params[:point]
         | 
| 111 | 
            +
                  content_type :json
         | 
| 112 | 
            +
                  {url: url}.to_json
         | 
| 113 | 
            +
                end
         | 
| 114 | 
            +
             | 
| 115 | 
            +
                get '/remote' do
         | 
| 116 | 
            +
                  if request.xhr? and params[:key]
         | 
| 117 | 
            +
                    return partial :_link, locals: {l: Pig.find(params[:key])}
         | 
| 118 | 
            +
                  end
         | 
| 119 | 
            +
                  return haml :remote
         | 
| 120 | 
            +
                end
         | 
| 121 | 
            +
             | 
| 122 | 
            +
             | 
| 123 | 
            +
                get '/sessions' do
         | 
| 124 | 
            +
                  if session[:user_id]
         | 
| 125 | 
            +
                    session[:user_id] = nil
         | 
| 126 | 
            +
                    redirect '/'
         | 
| 127 | 
            +
                  else
         | 
| 128 | 
            +
                    haml :sessions
         | 
| 129 | 
            +
                  end
         | 
| 130 | 
            +
                end
         | 
| 131 | 
            +
             | 
| 132 | 
            +
                post '/sessions' do
         | 
| 133 | 
            +
                  session[:user_id] = params[:user_id]
         | 
| 134 | 
            +
                  redirect '/'
         | 
| 135 | 
            +
                end
         | 
| 136 | 
            +
             | 
| 137 | 
            +
                get('/hash'){content_type :json; hash().to_json}
         | 
| 138 | 
            +
                post('/hash'){PigMediaServer::UserData.save params[:json], session[:user_id], config['user_data_path']}
         | 
| 139 | 
            +
             | 
| 140 | 
            +
                get('/config'){haml :config}
         | 
| 141 | 
            +
                get('/book2.js'){content_type :js;erb :book2}
         | 
| 142 | 
            +
                get('/swipe.js'){content_type :js;erb :swipe}
         | 
| 143 | 
            +
                get('/*.css'){scss params[:splat].first.to_sym}
         | 
| 144 | 
            +
                get('/*.js'){coffee params[:splat].first.to_sym}
         | 
| 145 | 
            +
                
         | 
| 146 | 
            +
                helpers do
         | 
| 147 | 
            +
                  def config
         | 
| 148 | 
            +
                    Pit.get "Pig Media Server"
         | 
| 149 | 
            +
                  end
         | 
| 150 | 
            +
                  def h str; CGI.escapeHTML str.to_s; end
         | 
| 151 | 
            +
                  def partial(template, *args)
         | 
| 152 | 
            +
                    options = args.last.is_a?(Hash) ? args.pop : {}
         | 
| 153 | 
            +
                    options.merge!(:layout => false)
         | 
| 154 | 
            +
                    if collection = options.delete(:collection) then
         | 
| 155 | 
            +
                      collection.inject([]) do |buffer, member|
         | 
| 156 | 
            +
                        buffer << haml(template, options.merge(:layout => false, :locals => {template => member}))
         | 
| 157 | 
            +
                      end.join("\n")
         | 
| 158 | 
            +
                    else
         | 
| 159 | 
            +
                      haml(template, options)
         | 
| 160 | 
            +
                    end
         | 
| 161 | 
            +
                  end 
         | 
| 162 | 
            +
                  def hash
         | 
| 163 | 
            +
                    if session[:user_id]
         | 
| 164 | 
            +
                      return PigMediaServer::UserData.load session[:user_id], config['user_data_path']
         | 
| 165 | 
            +
                    else
         | 
| 166 | 
            +
                      return {}
         | 
| 167 | 
            +
                    end
         | 
| 168 | 
            +
                  end
         | 
| 169 | 
            +
                  
         | 
| 170 | 
            +
                  def markdown str
         | 
| 171 | 
            +
                     str = str.to_s
         | 
| 172 | 
            +
                     Redcarpet::Markdown.new(Redcarpet::Render::HTML.new(hard_wrap: true), autolink: true, fenced_code_blocks: true).render(str)
         | 
| 173 | 
            +
                  end
         | 
| 174 | 
            +
                  
         | 
| 175 | 
            +
                  def number_to_human_size(number, precision = 1)
         | 
| 176 | 
            +
                    number = begin
         | 
| 177 | 
            +
                      Float(number)
         | 
| 178 | 
            +
                    rescue ArgumentError, TypeError
         | 
| 179 | 
            +
                      return number
         | 
| 180 | 
            +
                    end
         | 
| 181 | 
            +
                    case
         | 
| 182 | 
            +
                      when number.to_i == 1 then
         | 
| 183 | 
            +
                        "1 Byte"
         | 
| 184 | 
            +
                      when number < 1024 then
         | 
| 185 | 
            +
                        "%d Bytes" % number
         | 
| 186 | 
            +
                      when number < 1048576 then
         | 
| 187 | 
            +
                        "%.#{precision}f KB"  % (number / 1024)
         | 
| 188 | 
            +
                      when number < 1073741824 then
         | 
| 189 | 
            +
                        "%.#{precision}f MB"  % (number / 1048576)
         | 
| 190 | 
            +
                      when number < 1099511627776 then
         | 
| 191 | 
            +
                        "%.#{precision}f GB"  % (number / 1073741824)
         | 
| 192 | 
            +
                      else
         | 
| 193 | 
            +
                        "%.#{precision}f TB"  % (number / 1099511627776)
         | 
| 194 | 
            +
                    end.sub(/([0-9]\.\d*?)0+ /, '\1 ' ).sub(/\. /,' ').encode('UTF-8')
         | 
| 195 | 
            +
                  rescue
         | 
| 196 | 
            +
                    nil
         | 
| 197 | 
            +
                  end  
         | 
| 198 | 
            +
                end
         | 
| 199 | 
            +
              end
         | 
| 200 | 
            +
             | 
| 201 | 
            +
            end
         | 
| @@ -0,0 +1,32 @@ | |
| 1 | 
            +
            # -*- encoding: utf-8 -*-
         | 
| 2 | 
            +
            lib = File.expand_path('../lib', __FILE__)
         | 
| 3 | 
            +
            $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
         | 
| 4 | 
            +
            require 'pig-media-server/version'
         | 
| 5 | 
            +
             | 
| 6 | 
            +
            Gem::Specification.new do |gem|
         | 
| 7 | 
            +
              gem.name          = "pig-media-server"
         | 
| 8 | 
            +
              gem.version       = PigMediaServer::VERSION
         | 
| 9 | 
            +
              gem.authors       = ["ssig33"]
         | 
| 10 | 
            +
              gem.email         = ["mail@ssig33.com"]
         | 
| 11 | 
            +
              gem.description   = %q{Pig Media Server}
         | 
| 12 | 
            +
              gem.summary       = %q{Pig Media Server}
         | 
| 13 | 
            +
              gem.homepage      = ""
         | 
| 14 | 
            +
             | 
| 15 | 
            +
              gem.files         = `git ls-files`.split($/)
         | 
| 16 | 
            +
              gem.executables   = %w(pig-media-server)
         | 
| 17 | 
            +
              gem.test_files    = gem.files.grep(%r{^(test|spec|features)/})
         | 
| 18 | 
            +
              gem.require_paths = ["lib"]
         | 
| 19 | 
            +
             | 
| 20 | 
            +
              gem.add_dependency 'rroonga'
         | 
| 21 | 
            +
              gem.add_dependency 'sinatra'
         | 
| 22 | 
            +
              gem.add_dependency 'haml'
         | 
| 23 | 
            +
              gem.add_dependency 'sass'
         | 
| 24 | 
            +
              gem.add_dependency 'rack_csrf'
         | 
| 25 | 
            +
              gem.add_dependency 'unicorn'
         | 
| 26 | 
            +
              gem.add_dependency 'pit'
         | 
| 27 | 
            +
              gem.add_dependency 'sewell'
         | 
| 28 | 
            +
              gem.add_dependency 'rmagick'
         | 
| 29 | 
            +
              gem.add_dependency 'zipruby'
         | 
| 30 | 
            +
              gem.add_dependency 'coffee-script'
         | 
| 31 | 
            +
              gem.add_dependency 'sinatra-flash'
         | 
| 32 | 
            +
            end
         | 
    
        metadata
    ADDED
    
    | @@ -0,0 +1,250 @@ | |
| 1 | 
            +
            --- !ruby/object:Gem::Specification
         | 
| 2 | 
            +
            name: pig-media-server
         | 
| 3 | 
            +
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            +
              version: 0.2.0
         | 
| 5 | 
            +
            platform: ruby
         | 
| 6 | 
            +
            authors:
         | 
| 7 | 
            +
            - ssig33
         | 
| 8 | 
            +
            autorequire: 
         | 
| 9 | 
            +
            bindir: bin
         | 
| 10 | 
            +
            cert_chain: []
         | 
| 11 | 
            +
            date: 2013-05-30 00:00:00.000000000 Z
         | 
| 12 | 
            +
            dependencies:
         | 
| 13 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 14 | 
            +
              name: rroonga
         | 
| 15 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 16 | 
            +
                requirements:
         | 
| 17 | 
            +
                - - '>='
         | 
| 18 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 19 | 
            +
                    version: '0'
         | 
| 20 | 
            +
              type: :runtime
         | 
| 21 | 
            +
              prerelease: false
         | 
| 22 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 23 | 
            +
                requirements:
         | 
| 24 | 
            +
                - - '>='
         | 
| 25 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 26 | 
            +
                    version: '0'
         | 
| 27 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 28 | 
            +
              name: sinatra
         | 
| 29 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 30 | 
            +
                requirements:
         | 
| 31 | 
            +
                - - '>='
         | 
| 32 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 33 | 
            +
                    version: '0'
         | 
| 34 | 
            +
              type: :runtime
         | 
| 35 | 
            +
              prerelease: false
         | 
| 36 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 37 | 
            +
                requirements:
         | 
| 38 | 
            +
                - - '>='
         | 
| 39 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 40 | 
            +
                    version: '0'
         | 
| 41 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 42 | 
            +
              name: haml
         | 
| 43 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 44 | 
            +
                requirements:
         | 
| 45 | 
            +
                - - '>='
         | 
| 46 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 47 | 
            +
                    version: '0'
         | 
| 48 | 
            +
              type: :runtime
         | 
| 49 | 
            +
              prerelease: false
         | 
| 50 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 51 | 
            +
                requirements:
         | 
| 52 | 
            +
                - - '>='
         | 
| 53 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 54 | 
            +
                    version: '0'
         | 
| 55 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 56 | 
            +
              name: sass
         | 
| 57 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 58 | 
            +
                requirements:
         | 
| 59 | 
            +
                - - '>='
         | 
| 60 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 61 | 
            +
                    version: '0'
         | 
| 62 | 
            +
              type: :runtime
         | 
| 63 | 
            +
              prerelease: false
         | 
| 64 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 65 | 
            +
                requirements:
         | 
| 66 | 
            +
                - - '>='
         | 
| 67 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 68 | 
            +
                    version: '0'
         | 
| 69 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 70 | 
            +
              name: rack_csrf
         | 
| 71 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 72 | 
            +
                requirements:
         | 
| 73 | 
            +
                - - '>='
         | 
| 74 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 75 | 
            +
                    version: '0'
         | 
| 76 | 
            +
              type: :runtime
         | 
| 77 | 
            +
              prerelease: false
         | 
| 78 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 79 | 
            +
                requirements:
         | 
| 80 | 
            +
                - - '>='
         | 
| 81 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 82 | 
            +
                    version: '0'
         | 
| 83 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 84 | 
            +
              name: unicorn
         | 
| 85 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 86 | 
            +
                requirements:
         | 
| 87 | 
            +
                - - '>='
         | 
| 88 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 89 | 
            +
                    version: '0'
         | 
| 90 | 
            +
              type: :runtime
         | 
| 91 | 
            +
              prerelease: false
         | 
| 92 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 93 | 
            +
                requirements:
         | 
| 94 | 
            +
                - - '>='
         | 
| 95 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 96 | 
            +
                    version: '0'
         | 
| 97 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 98 | 
            +
              name: pit
         | 
| 99 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 100 | 
            +
                requirements:
         | 
| 101 | 
            +
                - - '>='
         | 
| 102 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 103 | 
            +
                    version: '0'
         | 
| 104 | 
            +
              type: :runtime
         | 
| 105 | 
            +
              prerelease: false
         | 
| 106 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 107 | 
            +
                requirements:
         | 
| 108 | 
            +
                - - '>='
         | 
| 109 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 110 | 
            +
                    version: '0'
         | 
| 111 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 112 | 
            +
              name: sewell
         | 
| 113 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 114 | 
            +
                requirements:
         | 
| 115 | 
            +
                - - '>='
         | 
| 116 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 117 | 
            +
                    version: '0'
         | 
| 118 | 
            +
              type: :runtime
         | 
| 119 | 
            +
              prerelease: false
         | 
| 120 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 121 | 
            +
                requirements:
         | 
| 122 | 
            +
                - - '>='
         | 
| 123 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 124 | 
            +
                    version: '0'
         | 
| 125 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 126 | 
            +
              name: rmagick
         | 
| 127 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 128 | 
            +
                requirements:
         | 
| 129 | 
            +
                - - '>='
         | 
| 130 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 131 | 
            +
                    version: '0'
         | 
| 132 | 
            +
              type: :runtime
         | 
| 133 | 
            +
              prerelease: false
         | 
| 134 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 135 | 
            +
                requirements:
         | 
| 136 | 
            +
                - - '>='
         | 
| 137 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 138 | 
            +
                    version: '0'
         | 
| 139 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 140 | 
            +
              name: zipruby
         | 
| 141 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 142 | 
            +
                requirements:
         | 
| 143 | 
            +
                - - '>='
         | 
| 144 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 145 | 
            +
                    version: '0'
         | 
| 146 | 
            +
              type: :runtime
         | 
| 147 | 
            +
              prerelease: false
         | 
| 148 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 149 | 
            +
                requirements:
         | 
| 150 | 
            +
                - - '>='
         | 
| 151 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 152 | 
            +
                    version: '0'
         | 
| 153 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 154 | 
            +
              name: coffee-script
         | 
| 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: sinatra-flash
         | 
| 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 | 
            +
            description: Pig Media Server
         | 
| 182 | 
            +
            email:
         | 
| 183 | 
            +
            - mail@ssig33.com
         | 
| 184 | 
            +
            executables:
         | 
| 185 | 
            +
            - pig-media-server
         | 
| 186 | 
            +
            extensions: []
         | 
| 187 | 
            +
            extra_rdoc_files: []
         | 
| 188 | 
            +
            files:
         | 
| 189 | 
            +
            - .gitignore
         | 
| 190 | 
            +
            - Gemfile
         | 
| 191 | 
            +
            - LICENSE.txt
         | 
| 192 | 
            +
            - README.md
         | 
| 193 | 
            +
            - Rakefile
         | 
| 194 | 
            +
            - bin/pig-media-server
         | 
| 195 | 
            +
            - lib/pig-media-server.rb
         | 
| 196 | 
            +
            - lib/pig-media-server/book2.erb
         | 
| 197 | 
            +
            - lib/pig-media-server/cli.rb
         | 
| 198 | 
            +
            - lib/pig-media-server/crawl.rb
         | 
| 199 | 
            +
            - lib/pig-media-server/model/comic.rb
         | 
| 200 | 
            +
            - lib/pig-media-server/model/migrate.rb
         | 
| 201 | 
            +
            - lib/pig-media-server/model/pig.rb
         | 
| 202 | 
            +
            - lib/pig-media-server/script.rb
         | 
| 203 | 
            +
            - lib/pig-media-server/version.rb
         | 
| 204 | 
            +
            - lib/pig-media-server/views/_ft_other.haml
         | 
| 205 | 
            +
            - lib/pig-media-server/views/_ft_read.haml
         | 
| 206 | 
            +
            - lib/pig-media-server/views/_ft_txt.haml
         | 
| 207 | 
            +
            - lib/pig-media-server/views/_ft_video.haml
         | 
| 208 | 
            +
            - lib/pig-media-server/views/_link.haml
         | 
| 209 | 
            +
            - lib/pig-media-server/views/_new_flag.haml
         | 
| 210 | 
            +
            - lib/pig-media-server/views/app.scss
         | 
| 211 | 
            +
            - lib/pig-media-server/views/book.coffee
         | 
| 212 | 
            +
            - lib/pig-media-server/views/book2.erb
         | 
| 213 | 
            +
            - lib/pig-media-server/views/config.coffee
         | 
| 214 | 
            +
            - lib/pig-media-server/views/config.haml
         | 
| 215 | 
            +
            - lib/pig-media-server/views/index.haml
         | 
| 216 | 
            +
            - lib/pig-media-server/views/movie.coffee
         | 
| 217 | 
            +
            - lib/pig-media-server/views/read.haml
         | 
| 218 | 
            +
            - lib/pig-media-server/views/remote.coffee
         | 
| 219 | 
            +
            - lib/pig-media-server/views/remote.haml
         | 
| 220 | 
            +
            - lib/pig-media-server/views/session.coffee
         | 
| 221 | 
            +
            - lib/pig-media-server/views/sessions.haml
         | 
| 222 | 
            +
            - lib/pig-media-server/views/storage.coffee
         | 
| 223 | 
            +
            - lib/pig-media-server/views/swipe.erb
         | 
| 224 | 
            +
            - lib/pig-media-server/views/unread.coffee
         | 
| 225 | 
            +
            - lib/pig-media-server/web.rb
         | 
| 226 | 
            +
            - pig-media-server.gemspec
         | 
| 227 | 
            +
            homepage: ''
         | 
| 228 | 
            +
            licenses: []
         | 
| 229 | 
            +
            metadata: {}
         | 
| 230 | 
            +
            post_install_message: 
         | 
| 231 | 
            +
            rdoc_options: []
         | 
| 232 | 
            +
            require_paths:
         | 
| 233 | 
            +
            - lib
         | 
| 234 | 
            +
            required_ruby_version: !ruby/object:Gem::Requirement
         | 
| 235 | 
            +
              requirements:
         | 
| 236 | 
            +
              - - '>='
         | 
| 237 | 
            +
                - !ruby/object:Gem::Version
         | 
| 238 | 
            +
                  version: '0'
         | 
| 239 | 
            +
            required_rubygems_version: !ruby/object:Gem::Requirement
         | 
| 240 | 
            +
              requirements:
         | 
| 241 | 
            +
              - - '>='
         | 
| 242 | 
            +
                - !ruby/object:Gem::Version
         | 
| 243 | 
            +
                  version: '0'
         | 
| 244 | 
            +
            requirements: []
         | 
| 245 | 
            +
            rubyforge_project: 
         | 
| 246 | 
            +
            rubygems_version: 2.0.2
         | 
| 247 | 
            +
            signing_key: 
         | 
| 248 | 
            +
            specification_version: 4
         | 
| 249 | 
            +
            summary: Pig Media Server
         | 
| 250 | 
            +
            test_files: []
         |