Class: Pig
- Inherits:
-
Object
- Object
- Pig
- Defined in:
- lib/pig-media-server/model/pig.rb
Instance Attribute Summary collapse
-
#config ⇒ Object
Returns the value of attribute config.
-
#record ⇒ Object
Returns the value of attribute record.
Class Method Summary collapse
Instance Method Summary collapse
- #check ⇒ Object
- #comic ⇒ Object
-
#initialize(record) ⇒ Pig
constructor
A new instance of Pig.
- #key ⇒ Object
- #metadata ⇒ Object
- #mtime ⇒ Object
- #name ⇒ Object
- #path ⇒ Object
- #size ⇒ Object
- #srt ⇒ Object
- #to_kindle(user_id) ⇒ Object
- #type ⇒ Object
- #url ⇒ Object
- #webvtt ⇒ Object
Constructor Details
#initialize(record) ⇒ Pig
Returns a new instance of Pig.
7 8 9 10 11 12 13 |
# File 'lib/pig-media-server/model/pig.rb', line 7 def initialize record unless record.size record.size = File::Stat.new(record.path).size.to_s rescue nil end self.record = record self.config = $config || Pit.get("Pig Media Server") end |
Instance Attribute Details
#config ⇒ Object
Returns the value of attribute config.
6 7 8 |
# File 'lib/pig-media-server/model/pig.rb', line 6 def config @config end |
#record ⇒ Object
Returns the value of attribute record.
6 7 8 |
# File 'lib/pig-media-server/model/pig.rb', line 6 def record @record end |
Class Method Details
.all ⇒ Object
100 101 102 |
# File 'lib/pig-media-server/model/pig.rb', line 100 def self.all Groonga['Files'].select.map{|x| Pig.new x} end |
.find(key) ⇒ Object
56 57 58 59 60 61 62 63 |
# File 'lib/pig-media-server/model/pig.rb', line 56 def self.find key case key.class.to_s when 'Array' return key.map{|x| self.new Groonga['Files'][x]} when 'String' return self.new Groonga['Files'][key] end end |
.find_or_create_by_path(path) ⇒ Object
88 89 90 91 92 93 94 95 96 97 98 |
# File 'lib/pig-media-server/model/pig.rb', line 88 def self.find_or_create_by_path path key = Digest::MD5.hexdigest(path).to_s unless Groonga['Files'][key] stat = File::Stat.new path Groonga["Files"].add(key) Groonga["Files"][key].path = path Groonga["Files"][key].mtime = stat.mtime.to_i Groonga['Files'][key].size = stat.size.to_s end return Pig.new Groonga['Files'][key] end |
.search(opts) ⇒ Object
65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 |
# File 'lib/pig-media-server/model/pig.rb', line 65 def self.search opts query = Sewell.generate opts[:query].to_s, %w{metadata path srt} limit = opts[:limit] ? opts[:limit].to_i : 50 page = opts[:page].to_i < 1 ? 1 : opts[:page].to_i order = (opts[:order] == 'ascending' or opts[:order] == 'descending') ? opts[:order] : 'descending' result = Groonga['Files'].select(query) if result.count == 0 begin result = Groonga['Files'].select{|x| x.path.match str} rescue end end if opts[:sort] == 'name' list = result.paginate([key: 'path', order: order], size: 2000, page: page).map{|x| Pig.new x}.sort{|x,y| x.path.split('/').last.sub(/^\d\d*_/, '') <=> y.path.split('/').last.sub(/^\d\d*_/, '') }.reverse rescue list = [] list.reverse! if order == 'descending' else list = result.paginate([key: 'mtime', order: order], size: limit, page: page).map{|x| Pig.new x} rescue list = [] end list end |
Instance Method Details
#check ⇒ Object
104 105 106 107 |
# File 'lib/pig-media-server/model/pig.rb', line 104 def check return false unless self.record Groonga['Files'].delete self.record._key unless File.exist? self.record.path end |
#comic ⇒ Object
38 39 40 |
# File 'lib/pig-media-server/model/pig.rb', line 38 def comic Comic.new self.record end |
#key ⇒ Object
14 |
# File 'lib/pig-media-server/model/pig.rb', line 14 def key; self.record._key;end |
#metadata ⇒ Object
18 |
# File 'lib/pig-media-server/model/pig.rb', line 18 def ; self.record.;end |
#mtime ⇒ Object
16 |
# File 'lib/pig-media-server/model/pig.rb', line 16 def mtime; Time.at(self.record.mtime);end |
#name ⇒ Object
15 |
# File 'lib/pig-media-server/model/pig.rb', line 15 def name; self.record.path.split('/').last; end |
#path ⇒ Object
35 36 37 |
# File 'lib/pig-media-server/model/pig.rb', line 35 def path self.record.path.sub(/#{config['path'].sub(/\//, '\/')}/, '') end |
#size ⇒ Object
17 |
# File 'lib/pig-media-server/model/pig.rb', line 17 def size; self.record.size;end |
#srt ⇒ Object
19 |
# File 'lib/pig-media-server/model/pig.rb', line 19 def srt; self.record.srt;end |
#to_kindle(user_id) ⇒ Object
49 50 51 52 |
# File 'lib/pig-media-server/model/pig.rb', line 49 def to_kindle user_id FileUtils.mkdir_p "#{self.config['user_data_path']}/kindle/queue" open("#{self.config['user_data_path']}/kindle/queue/#{self.key}_#{user_id}", 'w'){|x| x.puts ''} end |
#type ⇒ Object
21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
# File 'lib/pig-media-server/model/pig.rb', line 21 def type case self.name.split('.').last when 'mp4', 'MP4', 'webm' 'video' when 'zip', 'ZIP' 'read' when 'txt', 'TXT' 'txt' when 'mobi' 'mobi' else 'other' end end |
#url ⇒ Object
20 |
# File 'lib/pig-media-server/model/pig.rb', line 20 def url; '/volume' + URI.encode(self.record.path.sub(/#{config['path'].sub(/\//, '\/')}/, ''));end |
#webvtt ⇒ Object
41 42 43 44 45 46 47 48 |
# File 'lib/pig-media-server/model/pig.rb', line 41 def webvtt str = <<EOS WEBVTT #{self.srt.split("\n").delete_if{|x| x.to_i.to_s == x.chomp}.map{|x| if x =~ /\d\d:\d\d/; x.gsub!(/,/, '.');else; x = x.gsub(/</, '<').gsub(/>/, '>');end; x}.join("\n")} EOS str.chomp.chomp end |