listener:pissing:kishki
Как был сделан день КИШок
Как и было написано выше, писуар изначально задумывался для автоматизации вещания радивы, а вот скриптования пока нет. Врочем, скриптование изначально задумывалось, и более того, в него была заложена идея коллективного творчества.
Коллективное творчество можно сравнить в сосудом, куда каждый может вложить что-то от себя. Отсюда и раннее название этого проекта - pisspond. Такова жизнь.
Кратко: создаем директорию где будет запущен писуар и настраиваем туда испражнение треков любимым методом, хоть скриптами на любимом языке, хоть файловым менеджером, хоть скайпом и передачей файлов по нему. Вариантов много.
Но приступим к той опердени, которая была написана на день киша:
use Data::Dumper;
$urine = "z:/urine/"; # это директория, которую наполняем
# gen list / readdir
# shuffle
# every
# а это контент, которым будем наполнять
# тут у нас джинглы
# анимешность пополам с дискографией скриллекса
# модульная музыка, которую я хотел ставить по утрам
# голосовые нарезки, которые я посвятил кишу
@jingles = &shuffle(getRecursiveFiles("/jingles/"));
@anime = &shuffle(grep{/mp3$/i}getRecursiveFiles("tmp/Skrillex - Discography - 2007-2014"),getRecursiveFiles("Mitsudomoe [MP3]"));
@kish = &shuffle(grep{/mp3$/i}getRecursiveFiles("tmp/Король и Шут/"));
@mods = &shuffle(getRecursiveFiles("morning/"));
@voices = &shuffle(getRecursiveFiles("cutter/"));
# Формируем плейлист с весовыми коэфициентами
@playlist = every(\@mods, 1, \@jingles, 1, \@anime, 1);
@playlist = every(\@playlist, 3, \@voices, 1, \@kish, 1);
$count = 0;
foreach(@playlist) {
print "$_\n";
# Копируем файлы и ждем
open(dd, $_);
binmode(dd);
s/.+\///s;
open(oo, ">" . $urine . "/" . $_);
$count++;
binmode(oo);
print oo =5) {
sleep 5;
}
}
sub every {
my @pos = ();
my @src = ();
my @rate = ();
my @weight = ();
while(@_) {
push(@src, shift);
push(@weight, shift);
}
my @res = ();
my $num = @src;
my @finished = (1..$num);
my $q, $min, $found;
while(grep{$_>0}@finished) {
$min = 0xFFFFFFFF;
for($q = 0; $q < $num; $q++) {
if($min > $rate[$q]) {
$min = $rate[$q];
$found=$q;
}
}
$q=$found;
print "found $q $pos[$q]\n";
if($pos[$q] == @{$src[$q]}) {
$pos[$q] = 0;
$finished[$q] = 0;
}
$rate[$q] += $weight[$q];
push(@res, $src[$q]->[$pos[$q]]);
$pos[$q]++;
}
return(@res);
}
sub getSeq {
my $pref = shift;
my $nums = shift;
return(map{$pref.$_}(1..$nums));
}
sub getRecursiveFiles {
my $df;
opendir($df, $_[0]);
my @l = readdir($df);
close($df);
return(map{-d $_?getRecursiveFiles($_):$_}map{$_[0]."/".$_}grep{!/^\.{1,2}$/}@l);
}
sub shuffle {
my @src=@_;
my $q, $r;
my $tmp;
for($q=0; $q < @src; $q++) {
$r = int(rand() * @src);
$tmp = $src[$r];
$src[$r] = $src[$q];
$src[$q] = $tmp;
}
return(@src);
}
listener/pissing/kishki.txt · Последнее изменение: — admin
