Index: /lang/ruby/misc/Amarok2Twitter/trunk/Amarok2Twitter.rb
===================================================================
--- /lang/ruby/misc/Amarok2Twitter/trunk/Amarok2Twitter.rb (revision 34391)
+++ /lang/ruby/misc/Amarok2Twitter/trunk/Amarok2Twitter.rb (revision 34391)
@@ -0,0 +1,39 @@
+#!/usr/bin/ruby
+# -*- coding: utf-8 -*-
+
+$:.unshift File.join(File.dirname(__FILE__))
+
+require 'rubygems'
+gem 'twitter'
+require 'twitter'
+require 'Configure.rb'
+require 'korundum4'
+
+def twitter_login(username, password)
+  httpauth = Twitter::HTTPAuth.new(username, password)
+  twit = Twitter::Base.new(httpauth)
+end
+
+filename = 'data.txt'
+conf = Configure.new(filename)
+username, password = conf.load_configure()
+twit = twitter_login(username, password)
+
+loop do
+  message=gets().chomp()
+  command = /[A-Za-z]*/.match(message).to_s()
+
+  case command
+  when "configure"
+    conf.open_configure()
+    username, password = conf.load_configure()
+    twit = twitter_login(username, password)
+  when "trackChange"
+    album = `dcop amarok player album`
+    artist = `dcop amarok player artist`
+    title = `dcop amarok player title`
+    update = title + ' by ' + artist + ' on ' + album
+    twit.update("#{update}")
+  end
+end
+
Index: /lang/ruby/misc/Amarok2Twitter/trunk/Configure.rb
===================================================================
--- /lang/ruby/misc/Amarok2Twitter/trunk/Configure.rb (revision 34391)
+++ /lang/ruby/misc/Amarok2Twitter/trunk/Configure.rb (revision 34391)
@@ -0,0 +1,101 @@
+#!/usr/bin/ruby
+
+require 'korundum4'
+
+class Configure
+  def initialize(filename = 'data.txt')
+    @filename = filename
+    @username, @password = load_configure()
+  end
+
+  attr_accessor :username, :password
+
+  def open_configure()
+    a = Qt::Application.new(ARGV)
+    option = OptionForm.new(nil, nil, self)
+    option.show()
+    a.exec()
+  end
+
+  def load_configure()
+    if File.exist?(@filename) then
+      file = open(@filename, "r")
+      username = file.gets().chomp()
+      password = file.gets().chomp()
+      file.close
+      [username, password]
+    else
+      open_configure()
+      load_configure()
+    end
+  end
+
+  def save_configure(username, password)
+    file = open(@filename,"w")
+    file.print "#{username}\n"
+    file.print "#{password}\n"
+    file.close
+  end
+end
+
+class OptionForm < Qt::Widget
+  slots 'save_callback()'
+  slots 'quit()'
+
+  def quit()
+    self.dispose()
+    Qt::Application.quit()
+  end
+
+  def save_callback()
+    username = @username.text.to_str
+    password = @password.text.to_str
+    @conf.save_configure(username, password)
+  end
+
+  def load_configure()
+    unless @conf.username then return end
+    username, password = @conf.load_configure()
+    @username.insert(username)
+    @password.insert(password)
+  end
+
+  def initialize(parent = nil, name = nil, conf = nil)
+    super()
+    @conf = conf
+    resize(320, 250)
+    save = Qt::PushButton.new('save')
+    quit = Qt::PushButton.new('quit') 
+    @username = Qt::LineEdit.new('')
+    @password = Qt::LineEdit.new('')
+    @password.setEchoMode(Qt::LineEdit::Password)
+
+    connect(quit, SIGNAL('clicked()'), self, SLOT('quit()'))
+    connect(save, SIGNAL('clicked()'), self, SLOT("save_callback()"))
+
+    username_label = Qt::Label.new('username')
+    password_label = Qt::Label.new('password')
+
+    layout = Qt::VBoxLayout.new()
+
+    username_layout = Qt::HBoxLayout.new()
+    username_layout.addWidget(username_label)
+    username_layout.addWidget(@username)
+    layout.addLayout(username_layout)
+
+    password_layout = Qt::HBoxLayout.new()
+    password_layout.addWidget(password_label)
+    password_layout.addWidget(@password)
+    layout.addLayout(password_layout)
+
+    button_layout = Qt::HBoxLayout.new()
+    button_layout.addWidget(save)
+    button_layout.addWidget(quit)
+    layout.addLayout(button_layout)
+
+    setLayout(layout)
+
+    self.load_configure()
+  end
+end
+
Index: /lang/ruby/misc/Amarok2Twitter/trunk/Amarok2Twitter.spec
===================================================================
--- /lang/ruby/misc/Amarok2Twitter/trunk/Amarok2Twitter.spec (revision 34391)
+++ /lang/ruby/misc/Amarok2Twitter/trunk/Amarok2Twitter.spec (revision 34391)
@@ -0,0 +1,2 @@
+name = Amarok2Twitter
+type = {generic}
Index: /lang/ruby/misc/Amarok2Twitter/trunk/README
===================================================================
--- /lang/ruby/misc/Amarok2Twitter/trunk/README (revision 34391)
+++ /lang/ruby/misc/Amarok2Twitter/trunk/README (revision 34391)
@@ -0,0 +1,5 @@
+This script tweets what you are listening on amarok1.4.
+
+You need Korundum(KDE bindings for ruby) and Ruby Twitter Gem.
+
+cento <centotipo [at] gmail.com>
