Class: Sh::Database
Class Method Summary collapse
- .add_song(path) ⇒ Object
- .get_or_insert_album(query) ⇒ Object
- .get_or_insert_artist(query) ⇒ Object
- .load ⇒ Object
Class Method Details
.add_song(path) ⇒ Object
83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 |
# File 'lib/sh_database.rb', line 83 def self.add_song path = TagReader.read path artist = get_or_insert_artist(:name => [:artist]) album = get_or_insert_album(:title => [:album], :artist_id => artist.id) unless album.special_case? album.year = [:year] album.save end song = Song.create do |s| s.path = path s.artist = artist s.album = album s.title = [:title] s.track_num = [:track_num] end return song end |
.get_or_insert_album(query) ⇒ Object
67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 |
# File 'lib/sh_database.rb', line 67 def self.get_or_insert_album query title = query[:title] album = Album[Album::UNKNOWN] unless title.nil? album = case title.downcase when "", "unknown", "unknown album" Album[Artist::UNKNOWN] when "[non-album tracks]", "non-album", "non-album tracks" Album[Album::NON_ALBUM] else Album.first(query) || Album.create(query) end end return album end |
.get_or_insert_artist(query) ⇒ Object
51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
# File 'lib/sh_database.rb', line 51 def self.get_or_insert_artist query name = query[:name] artist = Artist[Artist::UNKNOWN] unless name.nil? artist = case name.downcase when "", "unknown", "unknown artist" Artist[Artist::UNKNOWN] when "various", "various artists" Artist[Artist::VARIOUS] else Artist.first(query) || Artist.create(query) end end return artist end |
.load ⇒ Object
8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
# File 'lib/sh_database.rb', line 8 def self.load @@db = Sequel.sqlite(Global::PATHS[:db_file]) unless @@db.table_exists? :artists @@db.create_table :artists do primary_key :id String :mbid String :name String :image_path String :info end @@db[:artists].insert(:id => 1, :name => "Unknown Artist") @@db[:artists].insert(:id => 2, :name => "Various Artists") end unless @@db.table_exists? :albums @@db.create_table :albums do primary_key :id String :mbid String :title String :image_path String :info Integer :year foreign_key :artist_id, :artists end @@db[:albums].insert(:id => 1, :title => "Unknown Album") @@db[:albums].insert(:id => 2, :title => "Non-Album Tracks") end @@db.create_table :songs do primary_key :id String :mbid String :path String :title String :lyrics String :image_path String :info Integer :track_num foreign_key :album_id, :albums foreign_key :artist_id, :artists end unless @@db.table_exists? :songs end |