diff --git a/Gemfile b/Gemfile
index 0b7abcf3838972155ab932d33833de2990f904fc..d75d9699af021626e4bea86d4e37273a1cc6ffaf 100644
--- a/Gemfile
+++ b/Gemfile
@@ -1,5 +1,9 @@
 source "http://rubygems.org"
+gem "rake"
 gem "net-yail"
 gem "rspec"
+gem "activerecord"
+gem "sqlite3"
+
 gem "youtube_it"
 gem "soundcloud"
diff --git a/Gemfile.lock b/Gemfile.lock
index c531c057f572e14cd02425032ec43f2089197c1e..f018815b4394de05a60dd3b6c8e198be20c309f8 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -1,6 +1,9 @@
 GEM
   remote: http://rubygems.org/
   specs:
+    activerecord (2.3.14)
+      activesupport (= 2.3.14)
+    activesupport (2.3.14)
     builder (3.1.4)
     diff-lcs (1.1.3)
     faraday (0.8.4)
@@ -28,6 +31,7 @@ GEM
       multi_json (~> 1.0)
       rack (~> 1.2)
     rack (1.4.1)
+    rake (0.9.2.2)
     rspec (2.12.0)
       rspec-core (~> 2.12.0)
       rspec-expectations (~> 2.12.0)
@@ -41,6 +45,7 @@ GEM
       hashie
       httmultiparty (>= 0.3)
       httparty (>= 0.7.3)
+    sqlite3 (1.3.6)
     youtube_it (2.1.8)
       builder
       faraday (~> 0.8)
@@ -53,7 +58,10 @@ PLATFORMS
   ruby
 
 DEPENDENCIES
+  activerecord
   net-yail
+  rake
   rspec
   soundcloud
+  sqlite3
   youtube_it
diff --git a/Rakefile b/Rakefile
new file mode 100644
index 0000000000000000000000000000000000000000..18969aba14795ef6941e9680ae8b5631bfdc9750
--- /dev/null
+++ b/Rakefile
@@ -0,0 +1,17 @@
+require 'active_record'
+require 'logger'
+
+require_relative 'lib/options.rb'
+
+task :default => :migrate
+
+desc "Migrate the database through scripts in db/migrate. Target specific version with VERSION=x"
+task :migrate => :environment do
+    ActiveRecord::Migrator.migrate('lib/migrate', ENV["VERSION"] ? ENV["VERSION"].to_i : nil )
+end
+
+task :environment do
+    config = Options.new.read_file
+    ActiveRecord::Base.establish_connection(config[:database])
+    ActiveRecord::Base.logger = Logger.new(File.open('log/database.log', 'a'))
+end
diff --git a/lib/migrate/001_create_musics.rb b/lib/migrate/001_create_musics.rb
new file mode 100644
index 0000000000000000000000000000000000000000..10aa16eb8e4804b91de3aa11414ab44d9abc6257
--- /dev/null
+++ b/lib/migrate/001_create_musics.rb
@@ -0,0 +1,20 @@
+require 'rubygems'
+require 'bundler/setup'
+
+class CreateMusics < ActiveRecord::Migration
+    def self.up
+        create_table :musics do |t|
+            t.string :title, :null => false
+            t.string :author, :null => false
+            t.string :sender, :null => false
+            t.string :url, :null => false
+            t.string :file
+        end
+
+        add_index :musics, :url, :unique
+    end
+
+    def self.down
+        drop_table :musics
+    end
+end
diff --git a/lib/music.rb b/lib/music.rb
new file mode 100644
index 0000000000000000000000000000000000000000..bf9f6d80a71a9754aeb6df1a12c70c51251c3d68
--- /dev/null
+++ b/lib/music.rb
@@ -0,0 +1,6 @@
+require 'rubygems'
+require 'bundler/setup'
+require 'active_record'
+
+class Music < ActiveRecord::Base
+end
diff --git a/lib/options.rb b/lib/options.rb
index 2185f8507bda0c7ec588c2ad8f16a3f77de6903e..b942763dd9ef25379a2ed6197186cd081645d7cf 100644
--- a/lib/options.rb
+++ b/lib/options.rb
@@ -3,7 +3,7 @@ require 'yaml'
 
 # Allow us to get options, set by user or default ones.
 class Options
-    def initialize(file = "#{ENV['HOME']}/.playbot")
+    def initialize(file = "#{ENV['HOME']}/.playbot/config")
         @options = {}
         @file = file
     end
diff --git a/lib/playbot.rb b/lib/playbot.rb
index d49ea3a94684e610bcd797dea7213e7c0d8a8740..96343bea514844322b12f61d687f29b29d6d977e 100644
--- a/lib/playbot.rb
+++ b/lib/playbot.rb
@@ -5,6 +5,7 @@ require 'bundler/setup'
 require 'net/yail/irc_bot'
 
 require_relative 'site_plugin.rb'
+require_relative 'music.rb'
 
 
 # --
@@ -79,7 +80,13 @@ class PlayBot < IRCBot
         return if handler.nil?
 
         content = handler.new(@options).get(url)
-
-        msg(event.channel, "#{content[:title]} | #{content[:author]}")
+        music = Music.create(
+            :title  => content[:title],
+            :author => content[:author],
+            :sender => event.nick,
+            :url    => content[:url],
+            :file   => nil)
+        
+        msg(event.channel, "#{music.title} | #{music.author}")
     end
 end
diff --git a/plugins/soundcloud_plugin.rb b/plugins/soundcloud_plugin.rb
index aa2e7e10bb503f467fd987598a43a052a05df64d..ee82eb532ecc0ac52297c66af0b0717eb67fde03 100644
--- a/plugins/soundcloud_plugin.rb
+++ b/plugins/soundcloud_plugin.rb
@@ -19,7 +19,8 @@ class SoundcloudPlugin < SitePlugin
 
     def get(url)
         track = @client.get('/resolve', :url => url)
+        url.gsub(/http:\/\//, 'https://')
 
-        {:title => track.title, :author => track.user.username}
+        {:title => track.title, :author => track.user.username, :url => url}
     end
 end
diff --git a/plugins/youtube_plugin.rb b/plugins/youtube_plugin.rb
index 1bbfa3c0400768199c75dbb53776108e029fe202..bf0bdf07ace3a2f0fae8ee0890af1b00c707f1ef 100644
--- a/plugins/youtube_plugin.rb
+++ b/plugins/youtube_plugin.rb
@@ -17,6 +17,7 @@ class YoutubePlugin < SitePlugin
 
     def get(url)
         video = @client.video_by(url)
-        {:title => video.title, :author => video.author.name}
+        url.gsub(/https?:\/\/(www.)?youtube.(fr|com)\/watch\?v=|youtu\.be/, 'https://www.youtube.com')
+        {:title => video.title, :author => video.author.name, :url => url}
     end
 end
diff --git a/run.rb b/run.rb
index 0a0b221e4f7d9ca1ea2169a897970bf25ed906d5..c98fbab72afe068f9622aeda3a7733bccc1291ef 100755
--- a/run.rb
+++ b/run.rb
@@ -1,5 +1,6 @@
 #!/usr/bin/ruby
 
+require 'active_record'
 require 'logger'
 
 require_relative 'lib/playbot'
@@ -8,7 +9,8 @@ require_relative 'lib/options'
 # This code start the PlayBot with somes options.
 
 options = Options.new.read_all
-puts options
+
+ActiveRecord::Base.establish_connection(options[:database])
 
 bot = PlayBot.new(options)
 bot.irc_loop