Fandom

Music Player Daemon Community Wiki

Ralbum.pl

525pages on
this wiki
Add New Page
Talk0 Share

Ad blocker interference detected!


Wikia is a free-to-use site that makes money from advertising. We have a modified experience for viewers using ad blockers

Wikia is not accessible if you’ve made further modifications. Remove the custom ad blocker rule(s) and the page will load as expected.


Perl script that adds a random album to the playlist or clears the playlist and play a random album. Can also monitor the playlist and add a random album when the last song in the playlist is reached.


#!/usr/bin/perl
# Basic, inelegant script to add a random album to the MPD playlist.
# Invoked without any arguments, it will simply add a random album to the 
# end of the playlist.
# -c will clear the existing playlist and play a random album.
# -m will monitor for the position in the playlist and add a random album 
# if the last song in the playlist is playing.

use strict;
use warnings;
use utf8;
use Encode;
use POSIX qw(locale_h);

use Audio::MPD;

my $index;
my $song;
my $cur_song;
my $now_play;
my $match;

my $mpd = Audio::MPD->new(
	#--------------------------------------------------
	# Modify to your needs
	# hostname => "",
	# port => "",
	# password => "",
	#-------------------------------------------------- 
);

srand(time() ^($$ + ($$ <<15))) ;

sub get_songs {
        my @b = ();
        my @c = ();
        my @albums = $mpd->collection->all_albums;
        push(@b,@albums);
        $index = rand @b;
        my @songs = $mpd->collection->songs_from_album($b[$index]);
        push(@c,@songs);
        return @c;
}

sub random_album {
        my @random_album = &get_songs;

        foreach $song (@random_album) {
                $mpd->playlist->add($song->file());
        }
}

if (@ARGV) {
        if ($ARGV[0] eq "-c") {
                $mpd->stop;
                $mpd->playlist->clear;
                random_album;
                $mpd->play;
                exit;
        }
        if ($ARGV[0] eq "-m") {
                while (1){
                        if ($mpd->status->state ne "stop" && $mpd->song->pos == ($mpd->status->playlistlength - 1)) {
                                random_album;
                        }
                        sleep 10;
                }
        }
}
else {  
        random_album;
}

Also on Fandom

Random Wiki