Module: Xmms

Defined in:
lib/xmms2_utils.rb

Defined Under Namespace

Classes: Client

Class Method Summary collapse

Class Method Details

.client(name) ⇒ Object

Creates a new XMMS2 client and connects it to the server



44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
# File 'lib/xmms2_utils.rb', line 44

def self.client(name)
    xc = Xmms::Client.new(name)
    begin
        xc.connect()
    rescue Xmms::Client::ClientError => e
        $stderr.puts e
        `xmms2-launcher`
        ntries = 1
        while $? != 0
            if ntries > 4
                exit "Can't start xmms2d. Exiting."
            end
            $stderr.puts "Coludn't start the daemon, trying again..."
            sleep 3
            `xmms2-launcher -vvvv`
            ntries += 1
        end
        xc.connect()
        $stderr.puts "Connected."
    end
    xc
end

.decode_xmms2_url(url) ⇒ Object



5
6
7
# File 'lib/xmms2_utils.rb', line 5

def self.decode_xmms2_url (url)
    URI.decode_www_form_component(url)
end

.encode_xmms2_url(url, *args) ⇒ Object



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
# File 'lib/xmms2_utils.rb', line 9

def self.encode_xmms2_url(url, *args)
    # adapted from the xmmsv lib because it's lacking in the ruby api
    res = StringIO.new("")
    hex = "0123456789abcdefg"
    url.each_byte do |a|
        good_char = ((((a) >= 'a'.ord) && ((a) <= 'z'.ord)) || \
         (((a) >= 'A'.ord) && ((a) <= 'Z'.ord)) || \
         (((a) >= '0'.ord) && ((a) <= '9'.ord)) || \
         ((a) == ':'.ord) || \
         ((a) == '/'.ord) || \
         ((a) == '-'.ord) || \
         ((a) == '.'.ord) || \
         ((a) == '_'.ord))
        if good_char
            res << a.chr
        elsif a == ' '.ord
            res << '+'
        else
            res << '%';
            res << hex[((a & 0xf0) >> 4)];
            res << hex[(a & 0x0f)];
        end
    end
    if !args.empty?
        res << "?"
    end
    args.each do |key, value|
        res[j] = (i == 0) ? '?' : '&';
        res << key + "=" + value
    end
    puts(res.string)
    res.string
end